feat(eddsa): add support for EdDSA varsigs - and common Ed25519 and Ed448 algorithms

This commit is contained in:
Steve Moyer
2025-07-07 15:42:11 -04:00
parent 8b710b7e23
commit 03bcfb7b16
7 changed files with 225 additions and 10 deletions

View File

@@ -8,11 +8,27 @@ import (
"github.com/selesy/go-varsig"
)
func TestEd25519(t *testing.T) {
t.Parallel()
in := mustVarsig[varsig.EdDSAVarsig](t)(varsig.Ed25519(varsig.PayloadEncodingDAGCBOR))
out := roundTrip(t, in, "3401ed01ed011371")
assertEdDSAEqual(t, in, out)
}
func TestEd448(t *testing.T) {
t.Parallel()
in := mustVarsig[varsig.EdDSAVarsig](t)(varsig.Ed448(varsig.PayloadEncodingDAGCBOR))
out := roundTrip(t, in, "3401ed0183241971")
assertEdDSAEqual(t, in, out)
}
func TestRS256(t *testing.T) {
t.Parallel()
in := mustVarsig[varsig.RSAVarsig](t)(varsig.RS256(0x100, varsig.PayloadEncodingDAGCBOR))
out := roundTrip(t, in, "NAGFJBKAAnE")
out := roundTrip(t, in, "3401852412800271")
assertRSAEqual(t, in, out)
}
@@ -20,7 +36,7 @@ func TestRS384(t *testing.T) {
t.Parallel()
in := mustVarsig[varsig.RSAVarsig](t)(varsig.RS384(0x100, varsig.PayloadEncodingDAGCBOR))
out := roundTrip(t, in, "NAGFJCCAAnE")
out := roundTrip(t, in, "3401852420800271")
assertRSAEqual(t, in, out)
}
@@ -28,10 +44,17 @@ func TestRS512(t *testing.T) {
t.Parallel()
in := mustVarsig[varsig.RSAVarsig](t)(varsig.RS512(0x100, varsig.PayloadEncodingDAGCBOR))
out := roundTrip(t, in, "NAGFJBOAAnE")
out := roundTrip(t, in, "3401852413800271")
assertRSAEqual(t, in, out)
}
func assertEdDSAEqual(t *testing.T, in, out *varsig.EdDSAVarsig) {
t.Helper()
assert.Equal(t, in.Curve(), out.Curve())
assert.Equal(t, in.HashAlgorithm(), out.HashAlgorithm())
}
func assertRSAEqual(t *testing.T, in, out *varsig.RSAVarsig) {
t.Helper()