Files
crypto/ucan/stubs.go

88 lines
1.9 KiB
Go
Raw Normal View History

2025-10-09 15:10:39 -04:00
package ucan
import (
"time"
)
// TokenBuilderInterface defines token building methods
type TokenBuilderInterface interface {
CreateOriginToken(
issuer string,
capabilities []Attenuation,
facts []Fact,
start, expiry time.Time,
) (*Token, error)
CreateDelegatedToken(
parentToken *Token,
issuer string,
capabilities []Attenuation,
facts []Fact,
start, expiry time.Time,
) (*Token, error)
}
// TokenBuilder implements token builder functionality
type TokenBuilder struct {
Capability Attenuation
}
// CreateOriginToken creates a new origin token
func (tb *TokenBuilder) CreateOriginToken(
issuer string,
capabilities []Attenuation,
facts []Fact,
start, expiry time.Time,
) (*Token, error) {
return &Token{
Raw: "",
Issuer: issuer,
Audience: "",
ExpiresAt: expiry.Unix(),
NotBefore: start.Unix(),
Attenuations: capabilities,
Proofs: []Proof{},
Facts: facts,
}, nil
}
// CreateDelegatedToken creates a delegated token
func (tb *TokenBuilder) CreateDelegatedToken(
parentToken *Token,
issuer string,
capabilities []Attenuation,
facts []Fact,
start, expiry time.Time,
) (*Token, error) {
proofs := []Proof{}
if parentToken.Raw != "" {
proofs = append(proofs, Proof(parentToken.Raw))
}
return &Token{
Raw: "",
Issuer: issuer,
Audience: parentToken.Issuer,
ExpiresAt: expiry.Unix(),
NotBefore: start.Unix(),
Attenuations: capabilities,
Proofs: proofs,
Facts: facts,
}, nil
}
// Stub for DID validation
func isValidDID(did string) bool {
// Basic DID validation stub
return did != "" && len(did) > 5 && did[:4] == "did:"
}
// Stub for preparing delegation proofs
func prepareDelegationProofs(token *Token, capabilities []Attenuation) ([]Proof, error) {
// Minimal stub implementation
proofs := []Proof{}
if token.Raw != "" {
proofs = append(proofs, Proof(token.Raw))
}
return proofs, nil
}