Documentation
¶
Overview ¶
Package ucan provides User-Controlled Authorization Networks (UCAN) implementation for decentralized authorization and capability delegation in the Sonr network. This package handles JWT-based tokens, cryptographic verification, and resource capabilities.
Package ucan provides User-Controlled Authorization Networks (UCAN) implementation for decentralized authorization and capability delegation in the Sonr network. This package handles JWT-based tokens, cryptographic verification, and resource capabilities.
Package ucan provides User-Controlled Authorization Networks (UCAN) implementation for decentralized authorization and capability delegation in the Sonr network. This package handles JWT-based tokens, cryptographic verification, and resource capabilities.
Package ucan provides User-Controlled Authorization Networks (UCAN) implementation for decentralized authorization and capability delegation in the Sonr network. This package handles JWT-based tokens, cryptographic verification, and resource capabilities.
Package ucan provides User-Controlled Authorization Networks (UCAN) implementation for decentralized authorization and capability delegation in the Sonr network. This package handles JWT-based tokens, cryptographic verification, and resource capabilities.
Package ucan provides User-Controlled Authorization Networks (UCAN) implementation for decentralized authorization and capability delegation in the Sonr network. This package handles JWT-based tokens, cryptographic verification, and resource capabilities.
Index ¶
- Constants
- Variables
- func CreateHasher(hashAlg crypto.Hash) (hash.Hash, error)
- func ExtractSignature(tokenString string) ([]byte, error)
- func ExtractUnsignedToken(tokenString string) (string, error)
- func GenerateJWTToken(attenuation Attenuation, duration time.Duration) (string, error)
- func GenerateModuleJWTToken(attenuations []Attenuation, issuer, audience string, duration time.Duration) (string, error)
- func GetEnclaveDataCID(token *Token) (string, error)
- func GetHashAlgorithmForMethod(method jwt.SigningMethod) (crypto.Hash, error)
- func RevokeCapability(attenuation Attenuation) error
- func SupportedSigningMethods() []jwt.SigningMethod
- func ValidateEnclaveDataCIDIntegrity(enclaveDataCID string, enclaveData []byte) error
- func ValidateEnclaveDataIntegrity(enclaveData *mpc.EnclaveData, expectedCID string) error
- func ValidateIPFSCID(value *string, ctx z.Ctx) bool
- func ValidateSecurityConfig(config *SecurityConfig) error
- func ValidateSignature(tokenString string, verifyKey any) error
- func ValidateVaultCapability(att map[string]any) error
- func ValidateVaultTokenCapability(token *Token, enclaveDataCID, requiredAction string) error
- func VerifyEd25519Signature(signingString string, signature []byte, publicKey ed25519.PublicKey) error
- func VerifyRSASignature(signingString string, signature []byte, publicKey *rsa.PublicKey, ...) error
- type Attenuation
- func CreateDEXAttenuation(actions []string, poolPattern string, caveats []string, maxAmount string) Attenuation
- func CreateDIDAttenuation(actions []string, didPattern string, caveats []string) Attenuation
- func CreateDWNAttenuation(actions []string, recordPattern string, caveats []string) Attenuation
- func CreateMultiAttenuation(actions []string, resourceURI string) Attenuation
- func CreateServiceAttenuation(actions []string, serviceID, domain string) Attenuation
- func CreateSimpleAttenuation(action, resourceURI string) Attenuation
- func CreateVaultAttenuation(actions []string, enclaveDataCID, vaultAddress string) Attenuation
- func NewCapability(issuer, resource string, abilities []string) (Attenuation, error)
- func VaultAttenuationConstructor(m map[string]any) (Attenuation, error)
- type AttenuationList
- type Capability
- type CapabilityTemplate
- func EnhancedServiceTemplate() *CapabilityTemplate
- func NewCapabilityTemplate() *CapabilityTemplate
- func StandardDEXTemplate() *CapabilityTemplate
- func StandardDIDTemplate() *CapabilityTemplate
- func StandardDWNTemplate() *CapabilityTemplate
- func StandardServiceTemplate() *CapabilityTemplate
- func StandardVaultTemplate() *CapabilityTemplate
- type CrossModuleCapability
- type DEXCapability
- type DEXResource
- type DIDCapability
- type DIDResolver
- type DIDResource
- type DWNCapability
- type DWNResource
- type Fact
- type GaslessCapability
- type KeyValidator
- type KeyshareSource
- type MPCCapabilityBuilder
- func (b *MPCCapabilityBuilder) CreateCustomCapability(actions []string, vaultAddress, enclaveDataCID string) Attenuation
- func (b *MPCCapabilityBuilder) CreateVaultAdminCapability(vaultAddress, enclaveDataCID string) Attenuation
- func (b *MPCCapabilityBuilder) CreateVaultReadOnlyCapability(vaultAddress, enclaveDataCID string) Attenuation
- func (b *MPCCapabilityBuilder) CreateVaultSigningCapability(vaultAddress, enclaveDataCID string) Attenuation
- type MPCDIDResolver
- type MPCSigningMethod
- type MPCTokenBuilder
- func (b *MPCTokenBuilder) CreateDelegatedToken(parent *Token, audienceDID string, attenuations []Attenuation, facts []Fact, ...) (*Token, error)
- func (b *MPCTokenBuilder) CreateOriginToken(audienceDID string, attenuations []Attenuation, facts []Fact, ...) (*Token, error)
- func (b *MPCTokenBuilder) CreateVaultCapabilityToken(audienceDID string, vaultAddress string, enclaveDataCID string, ...) (*Token, error)
- func (b *MPCTokenBuilder) GetAddress() string
- func (b *MPCTokenBuilder) GetIssuerDID() string
- type MPCTokenValidator
- type MPCVerifier
- type MultiCapability
- type Proof
- type Resource
- type SecurityConfig
- type ServiceResource
- type SignatureInfo
- type SigningValidator
- type SimpleCapability
- type SimpleResource
- type StringDIDResolver
- type Token
- type TokenBuilder
- type TokenBuilderInterface
- type VaultCapability
- type VaultResource
- type VaultResourceExt
- type Verifier
- func (v *Verifier) VerifyCapability(ctx context.Context, tokenString string, resource string, abilities []string) (*Token, error)
- func (v *Verifier) VerifyDelegationChain(ctx context.Context, tokenString string) error
- func (v *Verifier) VerifyToken(ctx context.Context, tokenString string) (*Token, error)
Constants ¶
const (
VaultAdminAction = "vault/admin"
)
Constants for vault capability actions
Variables ¶
var ( // StandardTemplate provides default authorization template StandardTemplate = NewCapabilityTemplate() )
var VaultCapabilitySchema = z.Struct(z.Shape{ "can": z.String().Required().OneOf( []string{ VaultAdminAction, "vault/read", "vault/write", "vault/sign", "vault/export", "vault/import", "vault/delete", }, z.Message("Invalid vault capability"), ), "with": z.String(). Required(). TestFunc(ValidateIPFSCID, z.Message("Vault resource must be IPFS CID in format 'ipfs://CID'")), "actions": z.Slice(z.String().OneOf( []string{"read", "write", "sign", "export", "import", "delete"}, z.Message("Invalid vault action"), )).Optional(), "vault": z.String().Required().Min(1, z.Message("Vault address cannot be empty")), "cavs": z.Slice(z.String()).Optional(), })
VaultCapabilitySchema defines validation specifically for vault capabilities
Functions ¶
func CreateHasher ¶
CreateHasher creates a hasher for the given crypto.Hash algorithm
func ExtractSignature ¶
ExtractSignature extracts the signature portion of a JWT token
func ExtractUnsignedToken ¶
ExtractUnsignedToken extracts the unsigned portion of a JWT token (header + payload)
func GenerateJWTToken ¶
func GenerateJWTToken(attenuation Attenuation, duration time.Duration) (string, error)
GenerateJWTToken creates a UCAN JWT token with given capability and expiration
func GenerateModuleJWTToken ¶
func GenerateModuleJWTToken(attenuations []Attenuation, issuer, audience string, duration time.Duration) (string, error)
GenerateModuleJWTToken creates a UCAN JWT token with module-specific capabilities
func GetEnclaveDataCID ¶
GetEnclaveDataCID extracts the enclave data CID from vault capabilities
func GetHashAlgorithmForMethod ¶
func GetHashAlgorithmForMethod(method jwt.SigningMethod) (crypto.Hash, error)
GetHashAlgorithmForMethod returns the appropriate hash algorithm for a JWT signing method
func RevokeCapability ¶
func RevokeCapability(attenuation Attenuation) error
RevokeCapability adds a capability to the revocation list
func SupportedSigningMethods ¶
func SupportedSigningMethods() []jwt.SigningMethod
SupportedSigningMethods returns the list of supported JWT signing methods for UCAN
func ValidateEnclaveDataCIDIntegrity ¶
ValidateEnclaveDataCIDIntegrity validates enclave data against expected CID
func ValidateEnclaveDataIntegrity ¶
func ValidateEnclaveDataIntegrity(enclaveData *mpc.EnclaveData, expectedCID string) error
ValidateEnclaveDataIntegrity validates enclave data against IPFS CID
func ValidateIPFSCID ¶
ValidateIPFSCID validates IPFS CID format for vault resources
func ValidateSecurityConfig ¶
func ValidateSecurityConfig(config *SecurityConfig) error
ValidateSecurityConfig validates that a security configuration is reasonable
func ValidateSignature ¶
ValidateSignature validates the cryptographic signature of a UCAN token
func ValidateVaultCapability ¶
ValidateVaultCapability validates vault-specific capabilities
func ValidateVaultTokenCapability ¶
ValidateVaultTokenCapability validates a UCAN token for vault operations
Types ¶
type Attenuation ¶
type Attenuation struct {
Capability Capability `json:"can"`
Resource Resource `json:"with"`
}
Attenuation represents a UCAN capability attenuation
func CreateDEXAttenuation ¶
func CreateDEXAttenuation(actions []string, poolPattern string, caveats []string, maxAmount string) Attenuation
CreateDEXAttenuation creates a DEX-specific attenuation
func CreateDIDAttenuation ¶
func CreateDIDAttenuation(actions []string, didPattern string, caveats []string) Attenuation
CreateDIDAttenuation creates a DID-specific attenuation
func CreateDWNAttenuation ¶
func CreateDWNAttenuation(actions []string, recordPattern string, caveats []string) Attenuation
CreateDWNAttenuation creates a DWN-specific attenuation
func CreateMultiAttenuation ¶
func CreateMultiAttenuation(actions []string, resourceURI string) Attenuation
CreateMultiAttenuation creates an attenuation with multiple actions
func CreateServiceAttenuation ¶
func CreateServiceAttenuation(actions []string, serviceID, domain string) Attenuation
CreateServiceAttenuation creates a service-specific attenuation
func CreateSimpleAttenuation ¶
func CreateSimpleAttenuation(action, resourceURI string) Attenuation
CreateSimpleAttenuation creates a basic attenuation
func CreateVaultAttenuation ¶
func CreateVaultAttenuation(actions []string, enclaveDataCID, vaultAddress string) Attenuation
CreateVaultAttenuation creates a vault-specific attenuation
func NewCapability ¶
func NewCapability(issuer, resource string, abilities []string) (Attenuation, error)
NewCapability is a helper function to create a basic capability
func VaultAttenuationConstructor ¶
func VaultAttenuationConstructor(m map[string]any) (Attenuation, error)
VaultAttenuationConstructor creates vault-specific attenuations with enhanced validation
type AttenuationList ¶
type AttenuationList []Attenuation
AttenuationList provides utilities for working with multiple attenuations
func (AttenuationList) CanPerform ¶
func (al AttenuationList) CanPerform(resourceURI string, actions []string) bool
CanPerform checks if the attenuations allow specific actions on a resource
func (AttenuationList) Contains ¶
func (al AttenuationList) Contains(resourceURI string) bool
Contains checks if the list contains attenuations for a specific resource
func (AttenuationList) GetCapabilitiesForResource ¶
func (al AttenuationList) GetCapabilitiesForResource(resourceURI string) []Capability
GetCapabilitiesForResource returns all capabilities for a specific resource
func (AttenuationList) IsSubsetOf ¶
func (al AttenuationList) IsSubsetOf(parent AttenuationList) bool
IsSubsetOf checks if this list is a subset of another list
type Capability ¶
type Capability interface {
// GetActions returns the list of actions this capability grants
GetActions() []string
// Grants checks if this capability grants the required abilities
Grants(abilities []string) bool
// Contains checks if this capability contains another capability
Contains(other Capability) bool
// String returns a string representation
String() string
}
Capability defines what actions can be performed
type CapabilityTemplate ¶
type CapabilityTemplate struct {
AllowedActions map[string][]string `json:"allowed_actions"` // resource_type -> []actions
DefaultExpiration time.Duration `json:"default_expiration"` // default token lifetime
MaxExpiration time.Duration `json:"max_expiration"` // maximum allowed lifetime
}
CapabilityTemplate provides validation and construction utilities
func EnhancedServiceTemplate ¶
func EnhancedServiceTemplate() *CapabilityTemplate
EnhancedServiceTemplate returns enhanced service template with delegation support
func NewCapabilityTemplate ¶
func NewCapabilityTemplate() *CapabilityTemplate
NewCapabilityTemplate creates a new capability template
func StandardDEXTemplate ¶
func StandardDEXTemplate() *CapabilityTemplate
StandardDEXTemplate returns a standard template for DEX operations
func StandardDIDTemplate ¶
func StandardDIDTemplate() *CapabilityTemplate
StandardDIDTemplate returns a standard template for DID operations
func StandardDWNTemplate ¶
func StandardDWNTemplate() *CapabilityTemplate
StandardDWNTemplate returns a standard template for DWN operations
func StandardServiceTemplate ¶
func StandardServiceTemplate() *CapabilityTemplate
StandardServiceTemplate returns a standard template for service operations
func StandardVaultTemplate ¶
func StandardVaultTemplate() *CapabilityTemplate
StandardVaultTemplate returns a standard template for vault operations
func (*CapabilityTemplate) AddAllowedActions ¶
func (ct *CapabilityTemplate) AddAllowedActions(resourceType string, actions []string)
AddAllowedActions adds allowed actions for a resource type
func (*CapabilityTemplate) GetDefaultExpirationTime ¶
func (ct *CapabilityTemplate) GetDefaultExpirationTime() int64
GetDefaultExpirationTime returns the default expiration timestamp
func (*CapabilityTemplate) ValidateAttenuation ¶
func (ct *CapabilityTemplate) ValidateAttenuation(att Attenuation) error
ValidateAttenuation validates an attenuation against the template
func (*CapabilityTemplate) ValidateExpiration ¶
func (ct *CapabilityTemplate) ValidateExpiration(expiresAt int64) error
ValidateExpiration validates token expiration time
type CrossModuleCapability ¶
type CrossModuleCapability struct {
Modules map[string]Capability `json:"modules"`
}
CrossModuleCapability allows composing capabilities across modules
func (*CrossModuleCapability) Contains ¶
func (c *CrossModuleCapability) Contains(other Capability) bool
Contains checks if this cross-module capability contains another
func (*CrossModuleCapability) GetActions ¶
func (c *CrossModuleCapability) GetActions() []string
GetActions returns all actions across all modules
func (*CrossModuleCapability) Grants ¶
func (c *CrossModuleCapability) Grants(abilities []string) bool
Grants checks if required abilities are granted across modules
func (*CrossModuleCapability) String ¶
func (c *CrossModuleCapability) String() string
String returns string representation
type DEXCapability ¶
type DEXCapability struct {
Action string `json:"action"`
Actions []string `json:"actions,omitempty"`
Caveats []string `json:"caveats,omitempty"`
MaxAmount string `json:"max_amount,omitempty"` // For swap limits
Metadata map[string]string `json:"metadata,omitempty"`
}
DEXCapability implements Capability for DEX module operations
func (*DEXCapability) Contains ¶
func (c *DEXCapability) Contains(other Capability) bool
Contains checks if this capability contains another capability
func (*DEXCapability) GetActions ¶
func (c *DEXCapability) GetActions() []string
GetActions returns the actions this DEX capability grants
func (*DEXCapability) Grants ¶
func (c *DEXCapability) Grants(abilities []string) bool
Grants checks if this capability grants the required abilities
func (*DEXCapability) String ¶
func (c *DEXCapability) String() string
String returns string representation
type DEXResource ¶
type DEXResource struct {
SimpleResource
PoolID string `json:"pool_id,omitempty"`
AssetPair string `json:"asset_pair,omitempty"`
OrderID string `json:"order_id,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
DEXResource represents DEX-specific resources
type DIDCapability ¶
type DIDCapability struct {
Action string `json:"action"`
Actions []string `json:"actions,omitempty"`
Caveats []string `json:"caveats,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
DIDCapability implements Capability for DID module operations
func (*DIDCapability) Contains ¶
func (c *DIDCapability) Contains(other Capability) bool
Contains checks if this capability contains another capability
func (*DIDCapability) GetActions ¶
func (c *DIDCapability) GetActions() []string
GetActions returns the actions this DID capability grants
func (*DIDCapability) Grants ¶
func (c *DIDCapability) Grants(abilities []string) bool
Grants checks if this capability grants the required abilities
func (*DIDCapability) String ¶
func (c *DIDCapability) String() string
String returns string representation
type DIDResolver ¶
DIDResolver resolves DID keys to public keys for signature verification
type DIDResource ¶
type DIDResource struct {
SimpleResource
DIDMethod string `json:"did_method,omitempty"`
DIDSubject string `json:"did_subject,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
DIDResource represents DID-specific resources
type DWNCapability ¶
type DWNCapability struct {
Action string `json:"action"`
Actions []string `json:"actions,omitempty"`
Caveats []string `json:"caveats,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
DWNCapability implements Capability for DWN module operations
func (*DWNCapability) Contains ¶
func (c *DWNCapability) Contains(other Capability) bool
Contains checks if this capability contains another capability
func (*DWNCapability) GetActions ¶
func (c *DWNCapability) GetActions() []string
GetActions returns the actions this DWN capability grants
func (*DWNCapability) Grants ¶
func (c *DWNCapability) Grants(abilities []string) bool
Grants checks if this capability grants the required abilities
func (*DWNCapability) String ¶
func (c *DWNCapability) String() string
String returns string representation
type DWNResource ¶
type DWNResource struct {
SimpleResource
RecordType string `json:"record_type,omitempty"`
Protocol string `json:"protocol,omitempty"`
Owner string `json:"owner,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
DWNResource represents DWN-specific resources
type Fact ¶
type Fact struct {
Data json.RawMessage `json:"data"`
}
Fact represents arbitrary facts in UCAN tokens
type GaslessCapability ¶
type GaslessCapability struct {
Capability
AllowGasless bool `json:"allow_gasless"`
GasLimit uint64 `json:"gas_limit,omitempty"`
}
GaslessCapability wraps other capabilities with gasless transaction support
func (*GaslessCapability) GetGasLimit ¶
func (c *GaslessCapability) GetGasLimit() uint64
GetGasLimit returns the gas limit for gasless transactions
func (*GaslessCapability) SupportsGasless ¶
func (c *GaslessCapability) SupportsGasless() bool
SupportsGasless returns whether this capability supports gasless transactions
type KeyValidator ¶
type KeyValidator struct{}
KeyValidator provides validation for cryptographic keys
func NewKeyValidator ¶
func NewKeyValidator() *KeyValidator
NewKeyValidator creates a new key validator
func (*KeyValidator) ValidateEd25519PublicKey ¶
func (kv *KeyValidator) ValidateEd25519PublicKey(key ed25519.PublicKey) error
ValidateEd25519PublicKey validates an Ed25519 public key for UCAN usage
func (*KeyValidator) ValidateRSAPublicKey ¶
func (kv *KeyValidator) ValidateRSAPublicKey(key *rsa.PublicKey) error
ValidateRSAPublicKey validates an RSA public key for UCAN usage
type KeyshareSource ¶
type KeyshareSource interface {
NewOriginToken(
audienceDID string,
att []Attenuation,
fct []Fact,
notBefore, expires time.Time,
) (*Token, error)
parent *Token,
audienceDID string,
att []Attenuation,
fct []Fact,
nbf, exp time.Time,
) (*Token, error)
}
KeyshareSource provides MPC-based UCAN token creation and validation
func NewMPCKeyshareSource ¶
func NewMPCKeyshareSource(enclave mpc.Enclave) (KeyshareSource, error)
NewMPCKeyshareSource creates a new MPC-based keyshare source from an enclave
type MPCCapabilityBuilder ¶
type MPCCapabilityBuilder struct {
// contains filtered or unexported fields
}
MPCCapabilityBuilder helps build MPC-specific capabilities
func NewMPCCapabilityBuilder ¶
func NewMPCCapabilityBuilder(enclave mpc.Enclave) (*MPCCapabilityBuilder, error)
NewMPCCapabilityBuilder creates a new MPC capability builder
func (*MPCCapabilityBuilder) CreateCustomCapability ¶
func (b *MPCCapabilityBuilder) CreateCustomCapability( actions []string, vaultAddress, enclaveDataCID string, ) Attenuation
CreateCustomCapability creates a custom capability with specified actions
func (*MPCCapabilityBuilder) CreateVaultAdminCapability ¶
func (b *MPCCapabilityBuilder) CreateVaultAdminCapability( vaultAddress, enclaveDataCID string, ) Attenuation
CreateVaultAdminCapability creates admin-level vault capabilities
func (*MPCCapabilityBuilder) CreateVaultReadOnlyCapability ¶
func (b *MPCCapabilityBuilder) CreateVaultReadOnlyCapability( vaultAddress, enclaveDataCID string, ) Attenuation
CreateVaultReadOnlyCapability creates read-only vault capabilities
func (*MPCCapabilityBuilder) CreateVaultSigningCapability ¶
func (b *MPCCapabilityBuilder) CreateVaultSigningCapability( vaultAddress, enclaveDataCID string, ) Attenuation
CreateVaultSigningCapability creates signing-specific vault capabilities
type MPCDIDResolver ¶
type MPCDIDResolver struct {
// contains filtered or unexported fields
}
MPCDIDResolver resolves DIDs with special handling for MPC-derived DIDs
func NewMPCDIDResolver ¶
func NewMPCDIDResolver(enclave mpc.Enclave, fallback DIDResolver) *MPCDIDResolver
NewMPCDIDResolver creates a new MPC DID resolver
func (*MPCDIDResolver) ResolveDIDKey ¶
ResolveDIDKey resolves DID keys with MPC enclave support
type MPCSigningMethod ¶
type MPCSigningMethod struct {
Name string
// contains filtered or unexported fields
}
MPCSigningMethod implements JWT signing using MPC enclaves
func NewMPCSigningMethod ¶
func NewMPCSigningMethod(name string, enclave mpc.Enclave) *MPCSigningMethod
NewMPCSigningMethod creates a new MPC-based JWT signing method
func (*MPCSigningMethod) Alg ¶
func (m *MPCSigningMethod) Alg() string
Alg returns the signing method algorithm name
type MPCTokenBuilder ¶
type MPCTokenBuilder struct {
// contains filtered or unexported fields
}
MPCTokenBuilder creates UCAN tokens using MPC signing
func NewMPCTokenBuilder ¶
func NewMPCTokenBuilder(enclave mpc.Enclave) (*MPCTokenBuilder, error)
NewMPCTokenBuilder creates a new MPC-based UCAN token builder
func (*MPCTokenBuilder) CreateDelegatedToken ¶
func (b *MPCTokenBuilder) CreateDelegatedToken( parent *Token, audienceDID string, attenuations []Attenuation, facts []Fact, notBefore, expiresAt time.Time, ) (*Token, error)
CreateDelegatedToken creates a delegated UCAN token using MPC signing
func (*MPCTokenBuilder) CreateOriginToken ¶
func (b *MPCTokenBuilder) CreateOriginToken( audienceDID string, attenuations []Attenuation, facts []Fact, notBefore, expiresAt time.Time, ) (*Token, error)
CreateOriginToken creates a new origin UCAN token using MPC signing
func (*MPCTokenBuilder) CreateVaultCapabilityToken ¶
func (b *MPCTokenBuilder) CreateVaultCapabilityToken( audienceDID string, vaultAddress string, enclaveDataCID string, actions []string, expiresAt time.Time, ) (*Token, error)
CreateVaultCapabilityToken creates a vault-specific UCAN token
func (*MPCTokenBuilder) GetAddress ¶
func (b *MPCTokenBuilder) GetAddress() string
GetAddress returns the address derived from the enclave
func (*MPCTokenBuilder) GetIssuerDID ¶
func (b *MPCTokenBuilder) GetIssuerDID() string
GetIssuerDID returns the issuer DID derived from the enclave
type MPCTokenValidator ¶
type MPCTokenValidator struct {
*MPCVerifier
// contains filtered or unexported fields
}
MPCTokenValidator provides comprehensive UCAN token validation with MPC support
func NewMPCTokenValidator ¶
func NewMPCTokenValidator(enclave mpc.Enclave, enableEnclaveValidation bool) *MPCTokenValidator
NewMPCTokenValidator creates a comprehensive UCAN token validator with MPC support
func (*MPCTokenValidator) ValidateTokenForResource ¶
func (v *MPCTokenValidator) ValidateTokenForResource( ctx context.Context, tokenString string, resourceURI string, requiredAbilities []string, ) (*Token, error)
ValidateTokenForResource validates token capabilities for a specific resource
func (*MPCTokenValidator) ValidateTokenForVaultOperation ¶
func (v *MPCTokenValidator) ValidateTokenForVaultOperation( ctx context.Context, tokenString string, enclaveDataCID string, requiredAction string, vaultAddress string, ) (*Token, error)
ValidateTokenForVaultOperation performs comprehensive validation for vault operations
type MPCVerifier ¶
type MPCVerifier struct {
*Verifier
// contains filtered or unexported fields
}
MPCVerifier provides UCAN verification with MPC support
func NewMPCVerifier ¶
func NewMPCVerifier(enclave mpc.Enclave) *MPCVerifier
NewMPCVerifier creates a UCAN verifier with MPC support
func (*MPCVerifier) VerifyMPCToken ¶
VerifyMPCToken verifies a UCAN token that may be signed with MPC
type MultiCapability ¶
type MultiCapability struct {
Actions []string `json:"actions"`
}
MultiCapability implements Capability for multiple actions
func (*MultiCapability) Contains ¶
func (c *MultiCapability) Contains(other Capability) bool
Contains checks if this capability contains another capability
func (*MultiCapability) GetActions ¶
func (c *MultiCapability) GetActions() []string
GetActions returns all actions
func (*MultiCapability) Grants ¶
func (c *MultiCapability) Grants(abilities []string) bool
Grants checks if the capability grants all required abilities
func (*MultiCapability) String ¶
func (c *MultiCapability) String() string
String returns string representation
type Resource ¶
type Resource interface {
// GetScheme returns the resource scheme (e.g., "https", "ipfs")
GetScheme() string
// GetValue returns the resource value/path
GetValue() string
// GetURI returns the full URI string
GetURI() string
// Matches checks if this resource matches another resource
Matches(other Resource) bool
}
Resource defines what resource the capability applies to
type SecurityConfig ¶
type SecurityConfig struct {
AllowedSigningMethods []jwt.SigningMethod
MinRSAKeySize int
MaxRSAKeySize int
RequireSecureAlgs bool
}
SecurityConfig contains security configuration for UCAN validation
func DefaultSecurityConfig ¶
func DefaultSecurityConfig() *SecurityConfig
DefaultSecurityConfig returns a secure default configuration
func RestrictiveSecurityConfig ¶
func RestrictiveSecurityConfig() *SecurityConfig
RestrictiveSecurityConfig returns a more restrictive configuration
type ServiceResource ¶
type ServiceResource struct {
SimpleResource
ServiceID string `json:"service_id"`
Domain string `json:"domain"`
Metadata map[string]string `json:"metadata,omitempty"`
}
ServiceResource represents service-specific resources
func (*ServiceResource) SupportsDelegate ¶
func (r *ServiceResource) SupportsDelegate() bool
Enhanced ServiceResource adds delegation capabilities
type SignatureInfo ¶
type SignatureInfo struct {
Algorithm string
KeyType string
SigningString string
Signature []byte
Valid bool
}
SignatureInfo contains information about a token's signature
func ExtractSignatureInfo ¶
func ExtractSignatureInfo(tokenString string, verifyKey any) (*SignatureInfo, error)
ExtractSignatureInfo extracts signature information from a JWT token
type SigningValidator ¶
type SigningValidator struct {
// contains filtered or unexported fields
}
SigningValidator provides cryptographic validation for UCAN tokens
func NewSigningValidator ¶
func NewSigningValidator() *SigningValidator
NewSigningValidator creates a new signing validator with default allowed methods
func NewSigningValidatorWithMethods ¶
func NewSigningValidatorWithMethods(methods []jwt.SigningMethod) *SigningValidator
NewSigningValidatorWithMethods creates a validator with specific allowed methods
func (*SigningValidator) ValidateSigningMethod ¶
func (sv *SigningValidator) ValidateSigningMethod(method jwt.SigningMethod) error
ValidateSigningMethod checks if a signing method is allowed
func (*SigningValidator) ValidateTokenSignature ¶
func (sv *SigningValidator) ValidateTokenSignature( tokenString string, keyFunc jwt.Keyfunc, ) (*jwt.Token, error)
ValidateTokenSignature validates the cryptographic signature of a token
type SimpleCapability ¶
type SimpleCapability struct {
Action string `json:"action"`
}
SimpleCapability implements Capability for single actions
func (*SimpleCapability) Contains ¶
func (c *SimpleCapability) Contains(other Capability) bool
Contains checks if this capability contains another capability
func (*SimpleCapability) GetActions ¶
func (c *SimpleCapability) GetActions() []string
GetActions returns the single action
func (*SimpleCapability) Grants ¶
func (c *SimpleCapability) Grants(abilities []string) bool
Grants checks if the capability grants all required abilities
func (*SimpleCapability) String ¶
func (c *SimpleCapability) String() string
String returns string representation
type SimpleResource ¶
type SimpleResource struct {
Scheme string `json:"scheme"`
Value string `json:"value"`
URI string `json:"uri"`
}
SimpleResource implements Resource for basic URI resources
func (*SimpleResource) GetScheme ¶
func (r *SimpleResource) GetScheme() string
GetScheme returns the resource scheme
func (*SimpleResource) GetURI ¶
func (r *SimpleResource) GetURI() string
GetURI returns the full URI
func (*SimpleResource) GetValue ¶
func (r *SimpleResource) GetValue() string
GetValue returns the resource value
func (*SimpleResource) Matches ¶
func (r *SimpleResource) Matches(other Resource) bool
Matches checks if resources are equivalent
type StringDIDResolver ¶
type StringDIDResolver struct{}
StringDIDResolver implements DIDResolver for did:key strings
func (StringDIDResolver) ResolveDIDKey ¶
ResolveDIDKey extracts a public key from a did:key string
type Token ¶
type Token struct {
Raw string `json:"raw"`
Issuer string `json:"iss"`
Audience string `json:"aud"`
ExpiresAt int64 `json:"exp,omitempty"`
NotBefore int64 `json:"nbf,omitempty"`
Attenuations []Attenuation `json:"att"`
Proofs []Proof `json:"prf,omitempty"`
Facts []Fact `json:"fct,omitempty"`
}
Token represents a UCAN JWT token with parsed claims
func NewVaultAdminToken ¶
func NewVaultAdminToken( builder TokenBuilderInterface, vaultOwnerDID string, vaultAddress string, enclaveDataCID string, exp time.Time, ) (*Token, error)
NewVaultAdminToken creates a new UCAN token with vault admin capabilities
func VerifyJWTToken ¶
VerifyJWTToken validates and parses a UCAN JWT token
type TokenBuilder ¶
type TokenBuilder struct {
Capability Attenuation
}
TokenBuilder implements token builder functionality
func (*TokenBuilder) CreateDelegatedToken ¶
func (tb *TokenBuilder) CreateDelegatedToken( parentToken *Token, issuer string, capabilities []Attenuation, facts []Fact, start, expiry time.Time, ) (*Token, error)
CreateDelegatedToken creates a delegated token
func (*TokenBuilder) CreateOriginToken ¶
func (tb *TokenBuilder) CreateOriginToken( issuer string, capabilities []Attenuation, facts []Fact, start, expiry time.Time, ) (*Token, error)
CreateOriginToken creates a new origin token
type TokenBuilderInterface ¶
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)
}
TokenBuilderInterface defines token building methods
type VaultCapability ¶
type VaultCapability struct {
Action string `json:"can"`
Actions []string `json:"actions,omitempty"`
VaultAddress string `json:"vault,omitempty"`
Caveats []string `json:"cavs,omitempty"`
EnclaveDataCID string `json:"enclave_data_cid,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
VaultCapability implements Capability for vault-specific operations with support for admin permissions, actions, and enclave data management.
func (*VaultCapability) Contains ¶
func (c *VaultCapability) Contains(other Capability) bool
Contains checks if this capability contains another capability
func (*VaultCapability) GetActions ¶
func (c *VaultCapability) GetActions() []string
GetActions returns the actions this vault capability grants
func (*VaultCapability) Grants ¶
func (c *VaultCapability) Grants(abilities []string) bool
Grants checks if this capability grants the required abilities
func (*VaultCapability) String ¶
func (c *VaultCapability) String() string
String returns string representation
type VaultResource ¶
type VaultResource struct {
SimpleResource
VaultAddress string `json:"vault_address,omitempty"`
EnclaveDataCID string `json:"enclave_data_cid,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
VaultResource represents vault-specific resources with metadata
type VaultResourceExt ¶
type VaultResourceExt struct {
SimpleResource
VaultAddress string `json:"vault_address"`
EnclaveDataCID string `json:"enclave_data_cid"`
}
VaultResourceExt represents an extended IPFS-based vault resource (to avoid redeclaration)
type Verifier ¶
type Verifier struct {
// contains filtered or unexported fields
}
Verifier provides UCAN token verification and validation functionality
func NewVerifier ¶
func NewVerifier(didResolver DIDResolver) *Verifier
NewVerifier creates a new UCAN token verifier
func (*Verifier) VerifyCapability ¶
func (v *Verifier) VerifyCapability( ctx context.Context, tokenString string, resource string, abilities []string, ) (*Token, error)
VerifyCapability validates that a UCAN token grants specific capabilities
func (*Verifier) VerifyDelegationChain ¶
VerifyDelegationChain validates the complete delegation chain of a UCAN token