update go-varsig, go-did-it, add missing resolution options

This commit is contained in:
Michael Muré
2025-08-05 16:54:18 +02:00
parent 6fb25481ce
commit 5891bdcd5d
5 changed files with 32 additions and 31 deletions

View File

@@ -15,7 +15,7 @@ type Token interface {
// IsValidNow verifies that the token can be used at the current time, based on expiration or "not before" fields.
// This does NOT do any other kind of verifications.
IsValidNow() bool
// IsValidNow verifies that the token can be used at the given time, based on expiration or "not before" fields.
// IsValidAt verifies that the token can be used at the given time, based on expiration or "not before" fields.
// This does NOT do any other kind of verifications.
IsValidAt(t time.Time) bool
}

View File

@@ -122,7 +122,7 @@ func (t *Token) ToDagJsonWriter(w io.Writer, privKey crypto.PrivateKeySigningByt
// Decode unmarshals the input data using the format specified by the
// provided codec.Decoder into a Token.
//
// An error is returned if the conversion fails, or if the resulting
// An error is returned if the conversion fails or if the resulting
// Token is invalid.
func Decode(b []byte, decFn codec.Decoder, resolvOpts ...did.ResolutionOption) (*Token, error) {
node, err := ipld.Decode(b, decFn)
@@ -143,7 +143,7 @@ func DecodeReader(r io.Reader, decFn codec.Decoder, resolvOpts ...did.Resolution
// FromDagCbor unmarshals the input data into a Token.
//
// An error is returned if the conversion fails, or if the resulting
// An error is returned if the conversion fails or if the resulting
// Token is invalid.
func FromDagCbor(data []byte, resolvOpts ...did.ResolutionOption) (*Token, error) {
pay, err := envelope.FromDagCbor[*tokenPayloadModel](data, resolvOpts...)
@@ -166,7 +166,7 @@ func FromDagCborReader(r io.Reader, resolvOpts ...did.ResolutionOption) (*Token,
// FromDagJson unmarshals the input data into a Token.
//
// An error is returned if the conversion fails, or if the resulting
// An error is returned if the conversion fails or if the resulting
// Token is invalid.
func FromDagJson(data []byte, resolvOpts ...did.ResolutionOption) (*Token, error) {
return Decode(data, dagjson.Decode, resolvOpts...)

View File

@@ -4,6 +4,7 @@ import (
"fmt"
"io"
"github.com/MetaMask/go-did-it"
"github.com/ipfs/go-cid"
"github.com/ipld/go-ipld-prime"
"github.com/ipld/go-ipld-prime/codec"
@@ -23,8 +24,8 @@ import (
// Supported and returned types are:
// - delegation.Token
// - invocation.Token
func FromSealed(data []byte) (Token, cid.Cid, error) {
tkn, err := FromDagCbor(data)
func FromSealed(data []byte, resolvOpts ...did.ResolutionOption) (Token, cid.Cid, error) {
tkn, err := FromDagCbor(data, resolvOpts...)
if err != nil {
return nil, cid.Undef, err
}
@@ -38,10 +39,10 @@ func FromSealed(data []byte) (Token, cid.Cid, error) {
}
// FromSealedReader is the same as Unseal but accepts an io.Reader.
func FromSealedReader(r io.Reader) (Token, cid.Cid, error) {
func FromSealedReader(r io.Reader, resolvOpts ...did.ResolutionOption) (Token, cid.Cid, error) {
cidReader := envelope.NewCIDReader(r)
tkn, err := FromDagCborReader(cidReader)
tkn, err := FromDagCborReader(cidReader, resolvOpts...)
if err != nil {
return nil, cid.Undef, err
}
@@ -61,21 +62,21 @@ func FromSealedReader(r io.Reader) (Token, cid.Cid, error) {
// Supported and returned types are:
// - delegation.Token
// - invocation.Token
func Decode(b []byte, decFn codec.Decoder) (Token, error) {
func Decode(b []byte, decFn codec.Decoder, resolvOpts ...did.ResolutionOption) (Token, error) {
node, err := ipld.Decode(b, decFn)
if err != nil {
return nil, err
}
return fromIPLD(node)
return fromIPLD(node, resolvOpts...)
}
// DecodeReader is the same as Decode, but accept an io.Reader.
func DecodeReader(r io.Reader, decFn codec.Decoder) (Token, error) {
func DecodeReader(r io.Reader, decFn codec.Decoder, resolvOpts ...did.ResolutionOption) (Token, error) {
node, err := ipld.DecodeStreaming(r, decFn)
if err != nil {
return nil, err
}
return fromIPLD(node)
return fromIPLD(node, resolvOpts...)
}
// FromDagCbor unmarshals an arbitrary DagCbor encoded UCAN token.
@@ -84,31 +85,31 @@ func DecodeReader(r io.Reader, decFn codec.Decoder) (Token, error) {
// Supported and returned types are:
// - delegation.Token
// - invocation.Token
func FromDagCbor(b []byte) (Token, error) {
return Decode(b, dagcbor.Decode)
func FromDagCbor(b []byte, resolvOpts ...did.ResolutionOption) (Token, error) {
return Decode(b, dagcbor.Decode, resolvOpts...)
}
// FromDagCborReader is the same as FromDagCbor, but accept an io.Reader.
func FromDagCborReader(r io.Reader) (Token, error) {
return DecodeReader(r, dagcbor.Decode)
func FromDagCborReader(r io.Reader, resolvOpts ...did.ResolutionOption) (Token, error) {
return DecodeReader(r, dagcbor.Decode, resolvOpts...)
}
// FromDagCbor unmarshals an arbitrary DagJson encoded UCAN token.
// FromDagJson unmarshals an arbitrary DagJson encoded UCAN token.
// An error is returned if the conversion fails, or if the resulting
// Token is invalid.
// Supported and returned types are:
// - delegation.Token
// - invocation.Token
func FromDagJson(b []byte) (Token, error) {
return Decode(b, dagjson.Decode)
func FromDagJson(b []byte, resolvOpts ...did.ResolutionOption) (Token, error) {
return Decode(b, dagjson.Decode, resolvOpts...)
}
// FromDagJsonReader is the same as FromDagJson, but accept an io.Reader.
func FromDagJsonReader(r io.Reader) (Token, error) {
return DecodeReader(r, dagjson.Decode)
func FromDagJsonReader(r io.Reader, resolvOpts ...did.ResolutionOption) (Token, error) {
return DecodeReader(r, dagjson.Decode, resolvOpts...)
}
func fromIPLD(node datamodel.Node) (Token, error) {
func fromIPLD(node datamodel.Node, resolvOpts ...did.ResolutionOption) (Token, error) {
tag, err := envelope.FindTag(node)
if err != nil {
return nil, err
@@ -116,9 +117,9 @@ func fromIPLD(node datamodel.Node) (Token, error) {
switch tag {
case delegation.Tag:
return delegation.FromIPLD(node)
return delegation.FromIPLD(node, resolvOpts...)
case invocation.Tag:
return invocation.FromIPLD(node)
return invocation.FromIPLD(node, resolvOpts...)
default:
return nil, fmt.Errorf(`unknown tag "%s"`, tag)
}