Skip to content

Update Varsig prefix to Varsig v1#189

Merged
expede merged 4 commits intomainfrom
fix-varsig-prefix
Jul 9, 2025
Merged

Update Varsig prefix to Varsig v1#189
expede merged 4 commits intomainfrom
fix-varsig-prefix

Conversation

@expede
Copy link
Copy Markdown
Member

@expede expede commented Jul 9, 2025

Varsig v1.0 includes a varsig version segment. Also switched to Ed25519 because really no one should use RSA especially now that WebCrypto supports Ed25519

Base64 Varsig Tag Sig Config Payload Codec
Before NBIFEgEAcQ V0: 0x34 RSA 2048 + SHA256  DAG-CBOR
After NAHtAe0BE3E V1: 0x34 0x01 Ed25519  DAG-CBOR

Also fixed some dead links that the linter was complaining about

expede added 2 commits July 9, 2025 12:25
- Now includes a varsig version segment
@expede expede self-assigned this Jul 9, 2025
@cla-bot cla-bot bot added the cla-signed label Jul 9, 2025
@expede expede requested a review from smoyer64 July 9, 2025 19:41
@smoyer64
Copy link
Copy Markdown

smoyer64 commented Jul 9, 2025

New value matches the base64 encoded string encoded and decoded by go-varsig:

func TestUCANExampleV1(t *testing.T) {
    t.Parallel()

    // This test is the value shown in the UCAN v1.0.0 example, which is
    // an EdDSA varsig = v1 with the Ed25519 curve, SHA2_256 hashing and
    // DAG-CBOR content encoding.
    example, err := base64.RawStdEncoding.DecodeString("NAHtAe0BE3E")
    require.NoError(t, err)

    t.Run("Decode", func(t *testing.T) {
        t.Parallel()

        v, err := varsig.Decode(example)
        require.NoError(t, err)

        ed25519V, ok := v.(varsig.EdDSAVarsig)
        require.True(t, ok)

        assert.Equal(t, varsig.Version1, ed25519V.Version())
        assert.Equal(t, varsig.DiscriminatorEdDSA, ed25519V.Discriminator())
        assert.Equal(t, varsig.CurveEd25519, ed25519V.Curve())
        assert.Equal(t, varsig.HashAlgorithmSHA512, ed25519V.HashAlgorithm())
        assert.Equal(t, varsig.PayloadEncodingDAGCBOR, ed25519V.PayloadEncoding())
        assert.Len(t, ed25519V.Signature(), 0)
    })

    t.Run("Encode", func(t *testing.T) {
        t.Parallel()

        edDSAVarsig, err := varsig.NewEdDSAVarsig(
            varsig.CurveEd25519,
            varsig.HashAlgorithmSHA512,
            varsig.PayloadEncodingDAGCBOR,
        )
        require.NoError(t, err)

        assert.Equal(t, example, edDSAVarsig.Encode())
        t.Log(base64.RawStdEncoding.EncodeToString(edDSAVarsig.Encode()))
    })
}

@expede expede merged commit a876841 into main Jul 9, 2025
3 checks passed
@expede expede deleted the fix-varsig-prefix branch July 9, 2025 20:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants