Skip to content

Commit a5740b4

Browse files
fix: use SHA384 for ECDSA P384 (#629)
Signed-off-by: mrjoelkamp <joel.kamp@docker.com> Co-authored-by: Fredrik Skogman <kommendorkapten@github.com>
1 parent 48216cf commit a5740b4

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

metadata/keys.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const (
3838
KeyTypeRSASSA_PSS_SHA256 = "rsa"
3939
KeySchemeEd25519 = "ed25519"
4040
KeySchemeECDSA_SHA2_P256 = "ecdsa-sha2-nistp256"
41+
KeySchemeECDSA_SHA2_P384 = "ecdsa-sha2-nistp384"
4142
KeySchemeRSASSA_PSS_SHA256 = "rsassa-pss-sha256"
4243
)
4344

metadata/metadata.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,14 @@ func (meta *Metadata[T]) VerifyDelegate(delegatedRole string, delegatedMetadata
312312
// use corresponding hash function for key type
313313
hash := crypto.Hash(0)
314314
if key.Type != KeyTypeEd25519 {
315-
hash = crypto.SHA256
315+
switch key.Scheme {
316+
case KeySchemeECDSA_SHA2_P256:
317+
hash = crypto.SHA256
318+
case KeySchemeECDSA_SHA2_P384:
319+
hash = crypto.SHA384
320+
default:
321+
hash = crypto.SHA256
322+
}
316323
}
317324
// load a verifier based on that key
318325
verifier, err := signature.LoadVerifier(publicKey, hash)

0 commit comments

Comments
 (0)