From eab24207bcf5012a0b116b2ba61514b7effad00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Mur=C3=A9?= Date: Tue, 22 Jul 2025 11:39:48 +0200 Subject: [PATCH] fix(eddsa): ed25519 or ed448 should be curves, not discriminator --- ecdsa.go | 18 +++++++++++++----- eddsa.go | 10 +++------- eddsa_test.go | 2 +- registry.go | 9 +++------ 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/ecdsa.go b/ecdsa.go index 370ebc4..972fb0c 100644 --- a/ecdsa.go +++ b/ecdsa.go @@ -1,9 +1,17 @@ package varsig -// Stub +// DiscriminatorECDSA is the value specifying an ECDSA signature. +const DiscriminatorECDSA = Discriminator(0xec) + +// ECDSACurve are values that specify which ECDSA curve is used when +// generating the signature. +type ECDSACurve uint64 + +// Constants describing the values for each specific ECDSA curve that can +// be encoded into a Varsig. const ( - DiscriminatorECDSASecp256k1 Discriminator = 0xe7 - DiscriminatorECDSAP256 Discriminator = 0x1200 - DiscriminatorECDSAP384 Discriminator = 0x1201 - DiscriminatorECDSAP521 Discriminator = 0x1202 + CurveSecp256k1 = ECDSACurve(0xe7) + CurveP256 = ECDSACurve(0x1200) + CurveP384 = ECDSACurve(0x1201) + CurveP521 = ECDSACurve(0x1202) ) diff --git a/eddsa.go b/eddsa.go index 68756f3..330fcf9 100644 --- a/eddsa.go +++ b/eddsa.go @@ -6,12 +6,8 @@ import ( "fmt" ) -// Constants containing values that specify EdDSA signatures. -const ( - DiscriminatorEdDSA = Discriminator(0xed) - DiscriminatorEd25519 = Discriminator(0xed) - DiscriminatorEd448 = Discriminator(0x1203) -) +// DiscriminatorEdDSA is the value specifying an EdDSA signature. +const DiscriminatorEdDSA = Discriminator(0xed) // EdDSACurve are values that specify which Edwards curve is used when // generating the signature. @@ -113,7 +109,7 @@ func (v EdDSAVarsig) Encode() []byte { return buf } -func decodeEd25519(r BytesReader, vers Version, disc Discriminator) (Varsig, error) { +func decodeEdDSA(r BytesReader, vers Version, disc Discriminator) (Varsig, error) { curve := EdDSACurve(disc) if vers != Version0 { var err error diff --git a/eddsa_test.go b/eddsa_test.go index 4a550ea..9b6bc36 100644 --- a/eddsa_test.go +++ b/eddsa_test.go @@ -32,7 +32,7 @@ func TestDecodeEd25519(t *testing.T) { require.NoError(t, err) require.NotNil(t, v) assert.Equal(t, varsig.Version0, v.Version()) - assert.Equal(t, varsig.DiscriminatorEd25519, v.Discriminator()) + assert.Equal(t, varsig.DiscriminatorEdDSA, v.Discriminator()) assert.Equal(t, varsig.PayloadEncodingDAGCBOR, v.PayloadEncoding()) assert.Len(t, v.Signature(), 64) diff --git a/registry.go b/registry.go index e183bc0..dc948d8 100644 --- a/registry.go +++ b/registry.go @@ -28,12 +28,9 @@ type Registry map[Discriminator]DecodeFunc // signing algorithms which have an implementation within this library. func DefaultRegistry() Registry { return map[Discriminator]DecodeFunc{ - DiscriminatorRSA: decodeRSA, - DiscriminatorEdDSA: decodeEd25519, - DiscriminatorEd448: decodeEd25519, - DiscriminatorECDSAP256: notYetImplementedVarsigDecoder, - DiscriminatorECDSASecp256k1: notYetImplementedVarsigDecoder, - DiscriminatorECDSAP521: notYetImplementedVarsigDecoder, + DiscriminatorRSA: decodeRSA, + DiscriminatorEdDSA: decodeEdDSA, + DiscriminatorECDSA: notYetImplementedVarsigDecoder, } }