27 KiB
Implementation TODO
Remaining tasks from MIGRATION.md for the Nebula Key Enclave.
Status Summary
| Category | Status | Notes |
|---|---|---|
| Schema (10 tables) | Complete | internal/migrations/schema.sql - Updated for v1.0.0-rc.1 |
| SQLC Queries | Complete | internal/migrations/query.sql - CID-based queries added |
| Generated Code | Complete | internal/keybase/*.go |
| Basic Plugin Functions | Complete | generate, load, exec, query, ping |
| Encryption | Complete | internal/enclave/ - WebAuthn PRF key derivation + AES-256-GCM |
| UCAN v1.0.0-rc.1 | Complete | Core types, builders, policies, DB actions all complete |
| UCAN DB Actions | Complete | actions_delegation.go, actions_invocation.go |
| MPC Key Shares | Complete | actions_keyshare.go - Full key share management |
| Database Serialization | Complete | Native SQLite serialization via ncruces/go-sqlite3/ext/serdes |
1. UCAN v1.0.0-rc.1 Migration (CRITICAL PRIORITY)
Status: Core implementation complete using
github.com/ucan-wg/go-ucan v1.1.0. Deprecated JWT-based files deleted. Remaining work is database integration and MPC signing.
Completed Implementation
The following files implement UCAN v1.0.0-rc.1 using the official go-ucan library:
| File | Status | Description |
|---|---|---|
ucan.go |
✅ Complete | Type re-exports, Sonr commands, pre-parsed constants |
policy.go |
✅ Complete | PolicyBuilder fluent API, Sonr-specific policy helpers |
delegation.go |
✅ Complete | DelegationBuilder fluent API, Sonr delegation helpers |
invocation.go |
✅ Complete | InvocationBuilder fluent API, Sonr invocation helpers |
types.go |
✅ Complete | ValidationError, Capability, ExecutionResult, Sonr types |
Dependencies Added
github.com/ucan-wg/go-ucan v1.1.0- Official UCAN librarygithub.com/ipld/go-ipld-prime v0.21.0- IPLD encodinggithub.com/MetaMask/go-did-it v1.0.0-pre1- DID handling (indirect)github.com/ipfs/go-cid v0.5.0- Content addressing (indirect)
Deleted (Deprecated JWT-based)
- Removedjwt.go- Removedcapability.go- Removedverifier.go- Removedsource.go- Entire directory removedinternal/crypto/mpc/spec/
1.1 Core Data Structures
-
Create
internal/crypto/ucan/types.go- v1.0.0-rc.1 types- Re-export
DelegationandInvocationfrom go-ucan Taskstruct (sub, cmd, args, nonce)ReceiptPayloadstruct (iss, ran, out, fx, meta, iat)RevocationPayloadstructValidationErrorwith error codes matching TypeScriptCapabilitystruct (sub, cmd, pol)ExecutionResult[T, E]generic type- Sonr-specific types:
VaultCapability,DIDCapability,DWNCapability
- Re-export
-
Create
internal/crypto/ucan/policy.go- Policy LanguagePolicyBuilderfluent API with all operatorsEqual,NotEqual- equality statementsGreaterThan,LessThan, etc. - inequality statementsLike- glob pattern matchingNot,And,Or- logical connectivesAll,Any- quantifiers- Sonr helpers:
VaultPolicy,DIDPolicy,ChainPolicy,AccountPolicy
-
Create
internal/crypto/ucan/ucan.go- Command typesCommandtype re-exported from go-ucan- Sonr commands:
/vault/*,/did/*,/dwn/*,/ucan/revoke - Pre-parsed command constants:
VaultRead,VaultWrite,DIDUpdate, etc. CommandSubsumes()helper using go-ucan'sCovers()method
1.2 Envelope Format & Encoding
-
Envelope handling via go-ucan library
ToSealed()method produces DAG-CBOR bytes + CIDToDagCbor(),ToDagJson()encoding methods- CID computation handled by go-ucan
-
Varsig support via go-ucan library
- Ed25519, P-256, secp256k1 via
go-did-it/crypto
- Ed25519, P-256, secp256k1 via
1.3 Delegation Operations
- Create
internal/crypto/ucan/delegation.go- Delegation creation/validationDelegationBuilderfluent APINewDelegation,NewRootDelegation,NewPowerlineDelegationre-exportsBuildSealed(privKey)for signing- Sonr helpers:
NewVaultDelegation,NewDIDDelegation,NewDWNDelegation - Temporal options:
ExpiresAt,ExpiresIn,NotBefore,NotBeforeIn
1.4 Invocation Operations
- Create
internal/crypto/ucan/invocation.go- Invocation creation/validationInvocationBuilderfluent APINewInvocationre-exportBuildSealed(privKey)for signing- Proof chain management:
Proof(),Proofs() - Sonr helpers:
VaultReadInvocation,VaultSignInvocation,DIDUpdateInvocation
1.5 Policy Evaluation Engine
Note: go-ucan provides
ExecutionAllowed()on invocations which validates proofs and evaluates policies.
- Policy evaluation via go-ucan's
invocation.ExecutionAllowed(loader) - Create
internal/crypto/ucan/eval.go- Additional evaluation helpers (if needed)- Custom selector resolution for Sonr-specific args
- Caching layer for repeated evaluations
1.6 Proof Chain Validation
Note: go-ucan handles chain validation internally via
ExecutionAllowed().
- Chain validation via go-ucan library
- Delegation storage in SQLite via
actions_delegation.goGetDelegationByCID,GetDelegationEnvelopemethodsListDelegations*methods for chain traversal
- Create
internal/crypto/ucan/store.go- Delegation loader for go-ucan- Implement
delegation.Loaderinterface wrapping keybase actions GetDelegation(cid.Cid) (*delegation.Token, error)- Cache loaded delegations for performance
- Implement
1.7 Revocation
RevocationInvocation()helper ininvocation.go- Revocation storage via
actions_delegation.goRevokeDelegation(ctx, params)- Create revocation recordIsDelegationRevoked(ctx, cid) (bool, error)- Query revocation status
- Create
internal/crypto/ucan/revocation.go- Revocation checker for go-ucan- Implement revocation checking interface
- Integration with chain validation via
ExecutionAllowed()
1.8 Database Integration
-
Update
internal/migrations/schema.sqlfor v1.0.0-rc.1ucan_delegationstable (cid, envelope BLOB, iss, aud, sub, cmd, pol, nbf, exp, is_root, is_powerline)ucan_invocationstable (cid, envelope BLOB, iss, sub, aud, cmd, prf, exp, iat, executed_at, result_cid)ucan_revocationstable (delegation_cid, revoked_by, invocation_cid, reason)- Indexes on iss, aud, sub, cmd for efficient queries
-
Update
internal/migrations/query.sqlfor v1.0.0-rc.1CreateDelegation,GetDelegationByCID,GetDelegationEnvelopeByCIDListDelegationsByDID,ListDelegationsByIssuer,ListDelegationsByAudience,ListDelegationsBySubjectListDelegationsForCommand,ListRootDelegations,ListPowerlineDelegationsCreateInvocation,GetInvocationByCID,GetInvocationEnvelopeByCIDListInvocationsByDID,ListInvocationsByIssuer,ListInvocationsForCommandMarkInvocationExecuted,ListPendingInvocationsCreateRevocation,IsDelegationRevoked,GetRevocation,ListRevocationsByRevoker
-
Create
internal/keybase/actions_delegation.go- Delegation action handlersStoreDelegation,GetDelegationByCID,GetDelegationEnvelopeListDelegations,ListDelegationsByIssuer,ListDelegationsByAudienceListDelegationsForCommand,IsDelegationRevoked,RevokeDelegationDeleteDelegation,CleanExpiredDelegations
-
Create
internal/keybase/actions_invocation.go- Invocation action handlersStoreInvocation,GetInvocationByCID,GetInvocationEnvelopeListInvocations,ListInvocationsByCommand,ListPendingInvocationsMarkInvocationExecuted,CleanOldInvocations
1.9 MPC Signing Integration
- Create
internal/crypto/ucan/signer.go- MPC key integration- Implement
crypto.PrivateKeySigningBytesinterface for MPC - Sign delegations with MPC key shares
- Sign invocations with MPC key shares
- Implement
1.10 Testing
- Unit tests for builders (DelegationBuilder, InvocationBuilder)
- Unit tests for policy helpers
- Unit tests for Sonr-specific invocations
- Interoperability tests against TypeScript implementation
- Test vectors from UCAN spec
2. Encryption Strategy
Reference: MIGRATION.md lines 770-814 Status: ✅ Complete - Implemented in
internal/enclave/
2.1 WebAuthn PRF Key Derivation
- Implement
DeriveEncryptionKey(prfOutput []byte) ([]byte, error) - Use HKDF with SHA-256 to derive 256-bit encryption key
- Salt with
"nebula-enclave-v1"as info parameter DeriveKeyWithContext()for purpose-specific key derivation
2.2 Database Encryption
- Implement application-level AES-256-GCM encryption for serialized pages
- Add encryption wrapper around
Serialize()output (EncryptBytes()) - Add decryption wrapper for
Load()input (DecryptBytes()) - Store encryption metadata (version, nonce, auth tag) with serialized data
SecureZero()for memory clearing of sensitive data
2.3 Encrypted Database Wrapper
- Create
internal/enclave/enclave.go- Encrypted database wrapperEnclavestruct wrappingKeybasewith encryption keySerializeEncrypted()- Export encrypted databaseLoadEncrypted()- Load from encrypted bytesExport()/Import()- Full bundle operations with DIDEncryptedBundlestruct with JSON marshaling
- Create
internal/enclave/crypto.go- WebAuthn PRF key derivationEncrypt()/Decrypt()withEncryptedDatastructEncryptBytes()/DecryptBytes()convenience functionsGenerateNonce()for secure random nonce generation
- Integrate with existing
internal/keybasepackage viaFromExisting()
3. Database Serialization
Status: ✅ Complete - Using native SQLite serialization via
ncruces/go-sqlite3/ext/serdes
3.1 Native SQLite Serialization
Serialize()usingserdes.Serialize(conn, "main")- Binary database export- Full database state captured as byte slice
- No SQL parsing needed - direct database format
- Preserves all data types, indexes, and constraints
3.2 Native SQLite Deserialization
Load()usingserdes.Deserialize(conn, "main", data)- Binary importRestoreFromDump()for encrypted bundle loading- Automatic DID context restoration after load
- Integrated with
internal/enclavefor encrypted storage
4. Action Manager Extensions
Reference:
internal/keybase/actions.go
4.1 Key Share Actions
CreateKeyShare(ctx, params) (*KeyShareResult, error)ListKeyShares(ctx) ([]KeyShareResult, error)GetKeyShareByID(ctx, shareID) (*KeyShareResult, error)GetKeyShareByKeyID(ctx, keyID) (*KeyShareResult, error)RotateKeyShare(ctx, shareID) errorArchiveKeyShare(ctx, shareID) errorDeleteKeyShare(ctx, shareID) error
4.2 UCAN Token Actions (v1.0.0-rc.1)
StoreDelegation(ctx, params) (*DelegationResult, error)ListDelegations(ctx) ([]DelegationResult, error)GetDelegationByCID(ctx, cid) (*DelegationResult, error)GetDelegationEnvelope(ctx, cid) ([]byte, error)ListDelegationsByIssuer(ctx, issuer) ([]DelegationResult, error)ListDelegationsByAudience(ctx, audience) ([]DelegationResult, error)ListDelegationsForCommand(ctx, cmd) ([]DelegationResult, error)StoreInvocation(ctx, params) (*InvocationResult, error)GetInvocationByCID(ctx, cid) (*InvocationResult, error)GetInvocationEnvelope(ctx, cid) ([]byte, error)ListInvocations(ctx, limit) ([]InvocationResult, error)ListInvocationsByCommand(ctx, cmd, limit) ([]InvocationResult, error)ListPendingInvocations(ctx) ([]InvocationResult, error)MarkInvocationExecuted(ctx, cid, resultCID) errorRevokeDelegation(ctx, params) errorIsDelegationRevoked(ctx, cid) (bool, error)DeleteDelegation(ctx, cid) errorCleanExpiredDelegations(ctx) errorCleanOldInvocations(ctx) errorValidateInvocation(ctx, invocation) (*ValidationResult, error)- Requires delegation.Loader
4.3 Verification Method Actions
CreateVerificationMethod(ctx, params) (*VerificationMethodResult, error)ListVerificationMethodsFull(ctx) ([]VerificationMethodResult, error)GetVerificationMethod(ctx, methodID) (*VerificationMethodResult, error)DeleteVerificationMethod(ctx, methodID) error
4.4 Service Actions
CreateService(ctx, params) (*ServiceResult, error)GetServiceByOrigin(ctx, origin) (*ServiceResult, error)GetServiceByID(ctx, serviceID) (*ServiceResult, error)UpdateService(ctx, params) errorListVerifiedServices(ctx) ([]ServiceResult, error)
4.5 Grant Actions (Extend Existing)
CreateGrant(ctx, params) (*GrantResult, error)GetGrantByService(ctx, serviceID) (*GrantResult, error)UpdateGrantScopes(ctx, grantID, scopes, accounts) errorUpdateGrantLastUsed(ctx, grantID) errorSuspendGrant(ctx, grantID) errorReactivateGrant(ctx, grantID) errorCountActiveGrants(ctx) (int64, error)
4.6 Account Actions (Extend Existing)
CreateAccount(ctx, params) (*AccountResult, error)ListAccountsByChain(ctx, chainID) ([]AccountResult, error)GetDefaultAccount(ctx, chainID) (*AccountResult, error)SetDefaultAccount(ctx, accountID, chainID) errorUpdateAccountLabel(ctx, accountID, label) errorDeleteAccount(ctx, accountID) error
4.7 Credential Actions (Extend Existing)
CreateCredential(ctx, params) (*CredentialResult, error)UpdateCredentialCounter(ctx, credentialID, signCount) errorRenameCredential(ctx, credentialID, name) errorDeleteCredential(ctx, credentialID) errorCountCredentialsByDID(ctx) (int64, error)
4.8 Session Actions (Extend Existing)
GetSessionByID(ctx, sessionID) (*SessionResult, error)GetCurrentSession(ctx) (*SessionResult, error)UpdateSessionActivity(ctx, sessionID) errorSetCurrentSession(ctx, sessionID) errorDeleteExpiredSessions(ctx) error
4.9 Sync Checkpoint Actions
GetSyncCheckpoint(ctx, resourceType) (*SyncCheckpointResult, error)UpsertSyncCheckpoint(ctx, params) errorListSyncCheckpoints(ctx) ([]SyncCheckpointResult, error)
5. MPC Key Share Management
Reference: MIGRATION.md lines 823-824
5.1 Key Share Storage
- Parse key share data from MPC protocol -
KeyShareInputin generate - Store public key and chain code -
CreateKeyShareaction - Track party index and threshold - stored in
key_sharestable - Encrypt share data before storage - PRF key derivation needed
5.2 Account Derivation
- Basic address derivation from public key -
deriveCosmosAddress() - Create initial account during generate -
createInitialAccount() - Implement BIP44 derivation path parsing
- Support multiple chains (Cosmos 118, Ethereum 60)
- Generate proper bech32 address encoding per chain
5.3 Key Rotation
- Implement key rotation workflow -
RotateKeyShareaction - Archive old shares -
ArchiveKeyShareaction - Status transitions - managed in database
- Handle rotation failures gracefully
6. Plugin Function Extensions
Reference:
main.go
6.1 Extend exec Resource Handlers
- Add
key_sharesresource handler (list, get, rotate, archive, delete) - Add
ucansresource handler (v1.0.0-rc.1 delegations - list, get, revoke, verify, cleanup) - Add
delegationsresource handler (v1.0.0-rc.1 - list, list_received, list_command, get, revoke, verify) - Add
invocationsresource handler (v1.0.0-rc.1) - Add
verification_methodsresource handler (list, get, delete) - Add
servicesresource handler (list, get, get_by_id) - Add
sync_checkpointsresource handler
6.2 Extend generate Function
- Accept optional MPC keyshare data in input
- Create initial keyshare if provided
- Create initial account from keyshare
- Parse WebAuthn credential properly (CBOR/COSE format)
- Extract public key from credential
- Create initial verification method
- Create initial credential record
6.3 Signing Function
- Implement
signwasmexport function - Support signing with MPC key shares
- Return signature in appropriate format
- Log signing operations for audit
7. Capability Delegation (v1.0.0-rc.1)
Reference: UCAN Delegation specification
7.1 Delegation Chain Management
- Enforce maximum delegation depth (prevent infinite chains)
- Validate delegator has capability to delegate (sub field)
- Ensure proper capability attenuation (cmd + pol)
- Track parent-child relationships via CID references
7.2 Policy Attenuation
- Child policy must be more restrictive than parent
- Implement policy subsumption checking
- Command hierarchy validation (
/crud/*subsumes/crud/read)
7.3 Delegation Status
- Implement expiration checking
- Handle revocation cascades (revoke chain)
- Update status on expiry
8. DID State Sync
Reference: MIGRATION.md line 827
8.1 Sync Infrastructure
- Create
internal/enclave/sync.go- DID state sync logic - Implement checkpoint tracking
- Store last synced block height
- Track last processed transaction hash
8.2 Sync Operations
- Fetch DID document updates from chain
- Validate on-chain document hash
- Update local state on changes
- Handle reorgs and rollbacks
9. TypeScript SDK
Reference: README.md,
src/directory
9.1 Core SDK
- Implement
createEnclave(wasmPath)factory - Implement
generate(credential)wrapper - Implement
load(database)wrapper - Implement
exec(filter, token?)wrapper - Implement
query(did?)wrapper
9.2 UCAN SDK (v1.0.0-rc.1)
- Delegation builder using
src/ucan.tstypes - Invocation builder
- Policy builder helpers
- Envelope encoding/decoding (DAG-CBOR)
- CID computation
9.3 WebAuthn Integration
- Helper for credential creation
- Helper for PRF extension output
- Proper encoding/decoding utilities
10. Testing
10.1 Unit Tests
- Test all ActionManager methods
- Test serialization/deserialization roundtrip
- Test encryption/decryption
- Test UCAN policy evaluation
- Test UCAN envelope encoding
10.2 Integration Tests
- Test full generate -> load -> exec flow
- Test credential lifecycle
- Test session management
- Test grant management
- Test UCAN delegation chain
10.3 Plugin Tests
- Extend
make test-pluginwith all functions - Add error case testing
- Test with various input formats
10.4 Interoperability Tests
- Go <-> TypeScript UCAN envelope compatibility
- CID computation consistency
- Policy evaluation consistency
11. Security Hardening
11.1 Input Validation
- Validate all JSON inputs against schemas
- Sanitize SQL-sensitive characters in serialization
- Validate DID format on all inputs
- Validate base64 encoding
11.2 Cryptographic Security
- Use constant-time comparison for sensitive data
- Clear sensitive data from memory after use
- Validate key sizes and formats
- Implement proper nonce generation
11.3 Access Control
- Enforce DID ownership on all mutations
- Validate session before sensitive operations
- Check grant scopes before data access
- Log security-relevant operations
Priority Order
-
CRITICAL (Spec Compliance) - ✅ Complete
UCAN v1.0.0-rc.1 Migration (Section 1)✅ All core items completeCore data structures (1.1)✅ Using go-ucan v1.1.0Envelope format (1.2)✅ Handled by go-ucanDelegation operations (1.3)✅ DelegationBuilder completeInvocation operations (1.4)✅ InvocationBuilder completeDatabase integration (1.8)✅ Schema, queries, and actions complete- MPC signing integration (1.9) - Next priority
-
High Priority (Core Functionality) - ✅ Mostly Complete
Database Serialization (3.1, 3.2)✅ Native SQLite serdesCredential Actions (4.7)✅ All CRUD operationsKey Share Actions (4.1)✅ All operationsAccount Actions (4.6)✅ All operations- Delegation Loader for go-ucan (1.6) - Remaining
- Invocations exec handler (6.1) - Remaining
-
Medium Priority (Authorization) - ✅ Partially Complete
- Revocation checker for go-ucan (1.7) - Remaining
- MPC Signing (1.9) - Remaining
Encryption Strategy (2.1, 2.2, 2.3)✅ Complete
-
Lower Priority (Enhancement)
- TypeScript SDK (9.x)
- DID State Sync (8.x)
- Sync checkpoints handler (6.1)
- Testing (10.x)
- Security Hardening (11.x)
Completed Items
Encryption & Serialization (January 2025)
Full encryption layer and native SQLite serialization implemented:
-
✅
internal/enclave/crypto.go- WebAuthn PRF key derivationDeriveEncryptionKey()using HKDF with SHA-256DeriveKeyWithContext()for purpose-specific keys- AES-256-GCM encryption/decryption (
Encrypt,Decrypt) EncryptBytes()/DecryptBytes()convenience functionsSecureZero()for memory clearing
-
✅
internal/enclave/enclave.go- Encrypted database wrapperEnclavestruct wrappingKeybasewith encryptionSerializeEncrypted()/LoadEncrypted()methodsExport()/Import()withEncryptedBundleFromExisting()to wrap existing keybase
-
✅
internal/keybase/conn.go- Native SQLite serializationSerialize()usingserdes.Serialize()from ncruces/go-sqlite3Load()usingserdes.Deserialize()RestoreFromDump()for encrypted bundle loading
Action Manager Extensions (January 2025)
All CRUD action handlers completed for remaining entities:
-
✅
internal/keybase/actions_verification.go- CreateVerificationMethod, ListVerificationMethodsFull
- GetVerificationMethod, DeleteVerificationMethod
-
✅
internal/keybase/actions_service.go- CreateService, GetServiceByOrigin, GetServiceByID
- UpdateService, ListVerifiedServices
-
✅
internal/keybase/actions_grant.go- CreateGrant, GetGrantByService, UpdateGrantScopes
- UpdateGrantLastUsed, SuspendGrant, ReactivateGrant, CountActiveGrants
-
✅
internal/keybase/actions_credential.go- CreateCredential, UpdateCredentialCounter, RenameCredential
- DeleteCredential, CountCredentialsByDID
-
✅
internal/keybase/actions_session.go- GetSessionByID, GetCurrentSession, UpdateSessionActivity
- SetCurrentSession, DeleteExpiredSessions
Plugin Exec Handlers (January 2025)
Extended exec function with new resource handlers:
- ✅
key_shares- list, get, rotate, archive, delete - ✅
verification_methods- list, get, delete - ✅
services- list, get, get_by_id
UCAN v1.0.0-rc.1 Database Integration (January 2025)
Schema and action handlers for storing/querying UCAN delegations and invocations:
-
✅
internal/migrations/schema.sql- v1.0.0-rc.1 tablesucan_delegations- CID-indexed delegation storage with envelope BLOBucan_invocations- CID-indexed invocation storage with execution trackingucan_revocations- Revocation records with reason and invocation CID- Updated
grantstable to usedelegation_cidinstead ofucan_id
-
✅
internal/migrations/query.sql- CID-based queries- Delegation CRUD: Create, Get by CID, List by DID/Issuer/Audience/Subject/Command
- Invocation CRUD: Create, Get by CID, List by DID/Issuer/Command, Mark executed
- Revocation: Create, Check revoked, Get revocation, List by revoker
-
✅
internal/keybase/actions_delegation.go- Delegation action handlers- StoreDelegation, GetDelegationByCID, GetDelegationEnvelope
- ListDelegations, ListDelegationsByIssuer, ListDelegationsByAudience
- ListDelegationsForCommand, IsDelegationRevoked, RevokeDelegation
- DeleteDelegation, CleanExpiredDelegations
-
✅
internal/keybase/actions_invocation.go- Invocation action handlers- StoreInvocation, GetInvocationByCID, GetInvocationEnvelope
- ListInvocations, ListInvocationsByCommand, ListPendingInvocations
- MarkInvocationExecuted, CleanOldInvocations
-
✅
main.go- Updated exec handlers for v1.0.0-rc.1executeUCANActionuses delegation methods (list, get, revoke, verify, cleanup)executeDelegationActionuses CID-based methods (list by issuer/audience/command)validateUCANusesIsDelegationRevokedinstead of oldIsUCANRevoked
-
✅ Deleted old action files
internal/keybase/actions_ucan.go- Old JWT-based UCAN actionsinternal/keybase/actions_delegation.go- Old ID-based delegation actions
UCAN v1.0.0-rc.1 Core (January 2025)
The following was completed using github.com/ucan-wg/go-ucan v1.1.0:
- ✅ Type re-exports from go-ucan (Delegation, Invocation, Command, Policy)
- ✅ Sonr command constants (/vault/, /did/, /dwn/*)
- ✅ DelegationBuilder fluent API with Sonr-specific helpers
- ✅ InvocationBuilder fluent API with Sonr-specific helpers
- ✅ PolicyBuilder fluent API with all operators
- ✅ Sonr policy helpers (VaultPolicy, DIDPolicy, ChainPolicy)
- ✅ ValidationError types matching TypeScript definitions
- ✅ Capability, ExecutionResult, and related types
Deleted (Deprecated JWT-based)
- ✅ Deleted
jwt.go- Old JWT token handling - ✅ Deleted
capability.go- Old Attenuation/Resource/Capability model - ✅ Deleted
verifier.go- Old JWT verification - ✅ Deleted
source.go- Old JWT token creation - ✅ Deleted
internal/crypto/mpc/spec/- Old MPC JWT integration - ✅ Removed
github.com/golang-jwt/jwt/v5dependency
Deprecated Items (Removed)
The following items from the previous TODO have been removed as they reference the deprecated JWT-based UCAN format:
Section 4.1 "Token Validation" - JWT parsing-> Replaced by go-ucan validationSection 4.2 "Capability Verification" --> Replaced by policy evaluationcan/withformatSection 4.3 "Proof Chain Validation" - JWT proof strings-> Replaced by CID-based chainSection 3.2 "UCAN Token Actions" - Old format-> Replaced by v1.0.0-rc.1 actions (4.2)Section 3.3 "Delegation Actions" - Old delegation model-> Merged into Section 1 and 4.2
The old capability model (Attenuation, Resource, Capability interfaces) is replaced by:
sub(DID) - Subject of the capabilitycmd(Command) - Action being delegatedpol(Policy) - Constraints on invocation arguments