Skip to content

Commit 47beced

Browse files
committed
feat!: Non-standard signatures are no more
1 parent 5900b0f commit 47beced

6 files changed

Lines changed: 7 additions & 219 deletions

File tree

principal/absentee/signer.go

Lines changed: 0 additions & 36 deletions
This file was deleted.

principal/absentee/signer_test.go

Lines changed: 0 additions & 23 deletions
This file was deleted.

validator/options.go

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ package validator
33
import "github.com/fil-forge/ucantone/ucan"
44

55
type validationConfig struct {
6-
resolveProof ProofResolverFunc
7-
resolveDIDVerifier DIDVerifierResolverFunc
8-
validationTime ucan.UnixTimestamp
9-
verifyNonStandardSignature NonStandardSignatureVerifierFunc
10-
metadata ucan.Container
6+
resolveProof ProofResolverFunc
7+
resolveDIDVerifier DIDVerifierResolverFunc
8+
validationTime ucan.UnixTimestamp
9+
metadata ucan.Container
1110
}
1211

1312
// Option is an option configuring the validator.
@@ -44,14 +43,6 @@ func WithValidationTime(now ucan.UnixTimestamp) Option {
4443
}
4544
}
4645

47-
// WithNonStandardSignatureVerifier sets the function to be used for verifying
48-
// non-standard signature algorithms.
49-
func WithNonStandardSignatureVerifier(verifyNonStandardSignature NonStandardSignatureVerifierFunc) Option {
50-
return func(vc *validationConfig) {
51-
vc.verifyNonStandardSignature = verifyNonStandardSignature
52-
}
53-
}
54-
5546
// WithMetadata sets additional metadata that may be used during validation.
5647
func WithMetadata(meta ucan.Container) Option {
5748
return func(vc *validationConfig) {

validator/validator.go

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717
"github.com/fil-forge/ucantone/ucan"
1818
"github.com/fil-forge/ucantone/ucan/token"
1919
verrs "github.com/fil-forge/ucantone/validator/errors"
20-
"github.com/fil-forge/ucantone/varsig/algorithm/nonstandard"
2120
"github.com/ipfs/go-cid"
2221
)
2322

@@ -31,10 +30,9 @@ func ValidateInvocation(
3130
options ...Option,
3231
) error {
3332
cfg := validationConfig{
34-
resolveProof: ProofUnavailable,
35-
resolveDIDVerifier: ResolveDIDKeyVerifier,
36-
validationTime: ucan.UnixTimestamp(time.Now().Unix()),
37-
verifyNonStandardSignature: FailNonStandardSignatureVerification,
33+
resolveProof: ProofUnavailable,
34+
resolveDIDVerifier: ResolveDIDKeyVerifier,
35+
validationTime: ucan.UnixTimestamp(time.Now().Unix()),
3836
}
3937
for _, opt := range options {
4038
opt(&cfg)
@@ -106,10 +104,6 @@ func ValidateToken(ctx context.Context, tok ucan.Token, cfg validationConfig) er
106104

107105
// verifyTokenSignature verifies the token was signed by the passed verifier.
108106
func verifyTokenSignature(ctx context.Context, tok ucan.Token, cfg validationConfig) error {
109-
if tok.Signature().Header().SignatureAlgorithm().Code() == nonstandard.Code {
110-
return cfg.verifyNonStandardSignature(ctx, tok, cfg.metadata)
111-
}
112-
113107
verifier, err := cfg.resolveDIDVerifier(ctx, tok.Issuer())
114108
if err != nil {
115109
return err

validator/validator_test.go

Lines changed: 0 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
"github.com/fil-forge/ucantone/did"
1313
"github.com/fil-forge/ucantone/ipld/datamodel"
14-
"github.com/fil-forge/ucantone/principal/absentee"
1514
"github.com/fil-forge/ucantone/principal/ed25519"
1615
"github.com/fil-forge/ucantone/principal/secp256k1"
1716
"github.com/fil-forge/ucantone/testutil"
@@ -447,78 +446,6 @@ func TestValidate(t *testing.T) {
447446
)
448447
require.Error(t, err)
449448
})
450-
451-
t.Run("with non-standard signature in chain", func(t *testing.T) {
452-
subject := testutil.RandomSigner(t)
453-
alice := absentee.From(testutil.Must(did.Parse("did:mailto:web.mail:alice"))(t))
454-
bob := testutil.RandomSigner(t)
455-
456-
del1, err := delegation.Delegate(subject, alice.DID(), subject.DID(), crankWidget)
457-
require.NoError(t, err)
458-
// del2 is "signed" by alice, who is an absentee signer and produces a
459-
// non-standard signature.
460-
del2, err := delegation.Delegate(alice, bob.DID(), did.Undef, crankWidget)
461-
require.NoError(t, err)
462-
463-
inv, err := invocation.Invoke(
464-
bob,
465-
subject.DID(),
466-
crankWidget,
467-
datamodel.Map{},
468-
invocation.WithProofs(del1.Link(), del2.Link()),
469-
)
470-
require.NoError(t, err)
471-
472-
resolveProof := validator.ProofsFromContainer(
473-
container.New(container.WithDelegations(del1, del2)),
474-
)
475-
476-
t.Run("rejects by default", func(t *testing.T) {
477-
err = validator.ValidateInvocation(
478-
t.Context(),
479-
inv,
480-
validator.WithProofResolver(resolveProof),
481-
validator.WithDIDVerifierResolvers(validator.VerifierResolverMap{
482-
"key": validator.ResolveDIDKeyVerifier,
483-
"mailto": func(ctx context.Context, d did.DID) (ucan.Verifier, error) {
484-
require.Fail(t, "shouldn't try to resolve a verifier for a non-standard signature")
485-
return nil, nil
486-
},
487-
}),
488-
)
489-
require.ErrorContains(t, err, "no non-standard signature verifier configured")
490-
})
491-
492-
t.Run("rejects according to non-standard signature verifier", func(t *testing.T) {
493-
err = validator.ValidateInvocation(
494-
t.Context(),
495-
inv,
496-
validator.WithProofResolver(resolveProof),
497-
validator.WithNonStandardSignatureVerifier(
498-
func(ctx context.Context, token ucan.Token, meta ucan.Container) error {
499-
require.Equal(t, del2.Link(), token.Link(), "should be asked to verify the non-standard signature for the correct token")
500-
return errors.New("non-standard error failed as expected")
501-
},
502-
),
503-
)
504-
require.ErrorContains(t, err, "non-standard error failed as expected")
505-
})
506-
507-
t.Run("validates according to non-standard signature verifier", func(t *testing.T) {
508-
err = validator.ValidateInvocation(
509-
t.Context(),
510-
inv,
511-
validator.WithProofResolver(resolveProof),
512-
validator.WithNonStandardSignatureVerifier(
513-
func(ctx context.Context, token ucan.Token, meta ucan.Container) error {
514-
require.Equal(t, del2.Link(), token.Link(), "should be asked to verify the non-standard signature for the correct token")
515-
return nil
516-
},
517-
),
518-
)
519-
require.NoError(t, err)
520-
})
521-
})
522449
}
523450

524451
func TestResolveDIDKeyVerifier(t *testing.T) {

varsig/algorithm/nonstandard/codec.go

Lines changed: 0 additions & 65 deletions
This file was deleted.

0 commit comments

Comments
 (0)