ssi 3.2.0
ssi: ^3.2.0 copied to clipboard
Affinidi SSI library for Dart provides a comprehensive suite of tools and libraries for implementing Self-Sovereign Identity (SSI) solutions.
Change Log #
All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
2025-12-12 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v3.2.0
- FIX: jwt vc verification for all supported alg.
- FEAT: update example input (#233).
3.2.0 #
- FIX: jwt vc verification for all supported alg.
- FEAT: update example input (#233).
2025-12-12 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v3.1.1
- FIX: jwt vc verification for all supported alg.
- FIX: revocation list 2020 handle numeric index (#231).
2025-12-11 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v3.1.1
- FIX: jwt vc verification for all supported alg.
- FIX: revocation list 2020 handle numeric index (#231).
3.1.1 #
- FIX: jwt vc verification for all supported alg.
- FIX: revocation list 2020 handle numeric index (#231).
2025-12-03 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v3.1.0
- FEAT: add JSON-LD exception handling and error propagation (#230).
3.1.0 #
3.0.2 #
3.0.1 #
- FIX: updated changelog entry for v3 (#228).
2025-11-28 #
Changes #
Packages with breaking changes:
Packages with other changes:
- There are no other changes in this release.
ssi - v3.0.0
- BREAKING:
VerifiableCredentialMUST exist in VC type field (v1) (#205). - BREAKING:
VerifiablePresentationMUST exist in VP type fields (v1 & v2) (#216). - BREAKING: Data Integrity proofs require proper
@contextentries (VC v2 context OR Data Integrity context) (#198). - BREAKING: Service types must use
StringServiceTypeorSetServiceTypeclasses (#208). - BREAKING: Issuer DID must match proof verificationMethod DID (#199).
- BREAKING: Proof IDs must be unique and non-empty within credentials (#201).
- BREAKING: Proof types cannot be null or empty strings (#202).
- BREAKING: Proof purpose must match document type - VCs use
assertionMethod, VPs useauthentication(#214). - BREAKING: Credentials and presentations must be within their validity period for verification (#206).
- BREAKING: SD-JWT credentials validate exp and nbf claims (#211).
- BREAKING: Stricter proof field structure validation (#204).
- FEAT: automatic nonce generation for data integrity proofs to prevent replay attacks (#215).
- FIX: tests and melos issue (#203).
- FIX: type issues (#218).
3.0.0 #
Note: This release has breaking changes.
- BREAKING:
VerifiableCredentialMUST exist in VC type field (v1) (#205). - BREAKING:
VerifiablePresentationMUST exist in VP type fields (v1 & v2) (#216). - BREAKING: Data Integrity proofs require proper
@contextentries (VC v2 context OR Data Integrity context) (#198). - BREAKING: Service types must use
StringServiceTypeorSetServiceTypeclasses (#208). - BREAKING: Issuer DID must match proof verificationMethod DID (#199).
- BREAKING: Proof IDs must be unique and non-empty within credentials (#201).
- BREAKING: Proof types cannot be null or empty strings (#202).
- BREAKING: Proof purpose must match document type - VCs use
assertionMethod, VPs useauthentication(#214). - BREAKING: Credentials and presentations must be within their validity period for verification (#206).
- BREAKING: SD-JWT credentials validate exp and nbf claims (#211).
- BREAKING: Stricter proof field structure validation (#204).
- FEAT: automatic nonce generation for data integrity proofs to prevent replay attacks (#215).
- FIX: tests and melos issue (#203).
- FIX: type issues (#218).
This major release enforces strict W3C specification compliance and introduces important security enhancements for Verifiable Credentials and Decentralized Identifiers.
What This Release Provides #
- Improved W3C VC Data Model v1.1 and v2.0 compliance
- Improved W3C Data Integrity specification compliance
- Enhanced security against fraudulent credentials
- Temporal validation for credential lifecycle management
- Stricter proof validation and consistency checks
- Improved DID service endpoint handling
- Automatic nonce generation for replay attack prevention
- Better interoperability with W3C-compliant systems
Migration Guide #
Update Credential Types
// For Verifiable Credentials (v1)
final vc = VcDataModelV1(
type: {'VerifiableCredential', 'UserCredential'}, // Must include VerifiableCredential
// ...
);
// For Verifiable Presentations (v1 & v2)
final vp = VpDataModelV1(
type: {'VerifiablePresentation', 'CustomPresentation'}, // Must include VerifiablePresentation
// ...
);
Update Contexts for Data Integrity
final vc = MutableVcDataModelV2(
context: [
'https://www.w3.org/2018/credentials/v1',
'https://w3id.org/security/data-integrity/v2', // Required for Data Integrity proofs
],
// ...
);
Update Service Endpoints
// Single type
final service = ServiceEndpoint(
id: 'service-1',
type: StringServiceType('MessagingService'),
serviceEndpoint: 'https://example.com',
);
// Multiple types
final service = ServiceEndpoint(
id: 'service-2',
type: SetServiceType(['MessagingService', 'CredentialRepository']),
serviceEndpoint: 'https://example.com',
);
Ensure Proof Consistency
// Issuer DID must match verificationMethod DID
final issuerDid = 'did:example:issuer123';
final vc = await suite.issue(
credential: MutableVcDataModelV1(
issuer: Issuer.uri(issuerDid),
// ...
),
signer: signer, // Must have matching DID
);
Handle Temporal Validation
final now = DateTime.now();
final vc = MutableVcDataModelV2(
issuanceDate: now,
expirationDate: now.add(Duration(days: 365)),
// ...
);
// Verification will fail if outside validity period
final result = await verifier.verify(credential);
Common Issues and Solutions #
Issue 1: "proof type is required and cannot be empty"
- Solution: Ensure all proofs have a valid, non-empty type string
Issue 2: "invalid proof purpose, expected assertionMethod/authentication"
- Solution: VCs should use
assertionMethod, VPs should useauthentication
Issue 3: "Missing required context"
- Solution: Add Data Integrity context when using Data Integrity proof types
Issue 4: "VerifiableCredential/VerifiablePresentation must exist in type"
- Solution: Include the base type in your type array
Issue 5: "Service type must use StringServiceType or SetServiceType"
- Solution: Wrap service type strings in
StringServiceType()orSetServiceType()
Issue 6: "Credential has expired"
- Solution: Ensure credentials are within their validity period, or reissue expired credentials
Issue 7: "credentialStatus property must not exceed 5 items"
- Solution: V2 credentials can have a maximum of 5 credentialStatus entries; reduce the number of status items
Additional Resources #
- W3C Verifiable Credentials Data Model v1.1
- W3C Verifiable Credentials Data Model v2.0
- W3C Data Integrity
2025-11-26 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.20.0
- FIX: null safe toJson for credential status id (#224).
- FEAT: add JWK validation against issuer did (#226).
2025-11-26 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.20.0
- FIX: null safe toJson for credential status id (#224).
- FEAT: add JWK validation against issuer did (#226).
2.20.0 #
- FIX: null safe toJson for credential status id (#224).
- FEAT: add JWK validation against issuer did (#226).
2025-11-24 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.19.3
- FIX: support secp256k1 VPs that include DataIntegrityProof VCs (#220).
2.19.3 #
2.19.2 #
2.19.1 #
2.19.0 #
2.18.0 #
2.17.1 #
- FIX: accept lists with one element (#210).
2025-11-04 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.17.0
- FEAT: added context to the default document loader of data integrity verifier (#200).
- DOCS: revocation vc issuance example and tests (#197).
2025-11-04 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.17.0
- FEAT: added context to the default document loader of data integrity verifier (#200).
- DOCS: revocation vc issuance example and tests (#197).
2.17.0 #
- FEAT: added context to the default document loader of data integrity verifier (#200).
- DOCS: revocation vc issuance example and tests (#197).
2025-10-24 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.16.0
- FEAT: export DidSignerAdapter (#196).
2.16.0 #
2.15.1 #
2.15.0 #
- FEAT: implement DidWeb.generateDocument functionality (#192).
2025-10-17 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.14.2
- FIX: rejection sampling for p256/p384/p521 keys from seed (#190).
- FIX: improve secp256k1 jws verifier to support DER encoded signatures (#186).
- FIX: fix jcs hash calculation on issuance (#193).
2025-10-17 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.14.2
- FIX: rejection sampling for p256/p384/p521 keys from seed (#190).
- FIX: improve secp256k1 jws verifier to support DER encoded signatures (#186).
- FIX: fix jcs hash calculation on issuance (#193).
2.14.2 #
- FIX: rejection sampling for p256/p384/p521 keys from seed (#190).
- FIX: improve secp256k1 jws verifier to support DER encoded signatures (#186).
- FIX: fix jcs hash calculation on issuance (#193).
2025-10-10 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.14.1
- FIX: add check for type to be VerifiableCredential (#191).
2.14.1 #
2.14.0 #
2.13.0 #
2.12.4 #
2.12.3 #
2.12.2 #
2.12.1 #
2.12.0 #
-
FEAT: enhance UniversalPresentationVerifier to allow custom credential verifiers (#176).
-
UniversalPresentationVerifier
- Updated UniversalPresentationVerifier to use UniversalVerifier for individual credential verification within presentations.
- Added support for custom VC verifiers (customVclVerifiers) to allow more flexible credential-level verification.
-
VpIntegrityVerifier
- Updated to handle VP-level integrity checks only. Individual credentials within the VP should be verified using VcIntegrityVerifier.
2025-08-04 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.11.3
- FIX: initial DID verifier update (#172).
2.11.3 #
2.11.2 #
2.11.1 #
2.11.0 #
2.10.4 #
2.10.3 #
2.10.2 #
2.10.1 #
2.10.0 #
2.9.1 #
2.9.0 #
2.8.2 #
2.8.1 #
2.8.0 #
2.7.0 #
2.6.0 #
2.5.0 #
2.4.0 #
- FEAT: update secp keys decryption (#150).
2025-07-16 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.3.2
- FIX: specify 'meta' dependency version (#154).
- FIX: change meta dependency to 'any' and update version to '2.3.1' (#153).
- DOCS: fix the VCDM 2 context in description (#152).
2.3.2 #
- FIX: specify 'meta' dependency version (#154).
- FIX: change meta dependency to 'any' and update version to '2.3.1' (#153).
- DOCS: fix the VCDM 2 context in description (#152).
2025-07-15 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v2.3.0
- FEAT: Add custom document loader support for verifiable credential verification (#141).
2.3.0 #
2.2.1 #
2.2.0 #
2.1.0 #
-
FEAT: v2 release with major improvements.
-
Replace JWT dependency from
jose_plustodart_jsonwebtoken. -
Introduce unified DID Manager for simplified DID management:
- Single interface for all DID methods with automatic document generation.
- Seamless wallet integration with built-in key mapping and relationship management.
- Smart key handling: automatic Ed25519 → X25519 conversion for key agreement.
- Direct signing operations via
manager.getSigner()without manual key lookups. - Flexible verification relationships with sensible defaults per key type.
- Persistent key storage support through pluggable
DidStoreinterface.
-
Align all signature schemes with JOSE standards; cryptosuite mappings updated (e.g.,
eddsa-rdfc-2022→ed25519). -
Improve Ed25519 to X25519 conversion with RFC 7748 clamping and proper SHA-512 hashing.
-
Add
ed25519PublicToX25519Public()utility for direct Ed25519 to X25519 key conversion. -
Standardize
computeEcdhSecret()interface across all key pair types using@overrideannotations. -
Extend
did:peersupport with multibase key type detection, new relationship prefixes (A,I,D), and automatic X25519 derivation. -
Improve service endpoint handling with
ServiceEndpointValueand automatic service ID generation.
Breaking Changes #
- Remove
w3cfield fromSignatureSchemeenum. - Simplify
SignatureScheme: mergeeddsa_sha512anded25519_sha256into singleed25519. - Change Ed25519 algorithm identifier from
'EdDSA'to'Ed25519'. DidSignernow accepts aString didinstead of aDidDocument.- Remove the
publicKeygetter fromDidSigner. ed25519KeyToX25519PublicKey()return type changed fromFuture<SimplePublicKey>toFuture<PublicKey>.ed25519PublicToX25519Public()return type changed fromStringtoUint8List.
2025-07-03 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v1.7.0
- FEAT: configure AWS KMS wallet tests as integration tests (#131).
1.7.0 #
1.6.0 #
1.5.0 #
1.4.0 #
1.3.1 #
1.3.0 #
1.2.3 #
1.2.2 #
1.2.1 #
1.2.0 #
1.1.0 #
- FEAT: add tryParse/tryDecode methods (#111).
2025-05-20 #
Changes #
Packages with breaking changes:
Packages with other changes:
- There are no other changes in this release.
Packages graduated to a stable release (see pre-releases prior to the stable version for changelog entries):
ssi-v1.0.0
ssi - v1.0.0
1.0.0 #
1.0.0-dev.29 #
1.0.0-dev.28 #
1.0.0-dev.27 #
1.0.0-dev.25 #
1.0.0-dev.23 #
1.0.0-dev.22 #
1.0.0-dev.21 #
- FIX: issue reporting link (#98).
2025-04-30 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v1.0.0-dev.20
- REFACTOR: refactor code snippets (#72).
- FIX: test concurrency (#36).
- FIX: organize exports from across the credentials code (#86).
- FIX: rename GenericWallet to PersistentWallet (#85).
- FIX: making the interface of issue methods uniform (#83).
- FIX: making the interface of issue methods uniform.
- FIX: Adding VP tests (#65).
- FIX: VP structure updated to be same as VC (#54).
- FIX: remove affinidi links.
- FIX: package publish (#46).
- FIX: apply dart_flutter_team_lints rules to credentials (#42).
- FIX: added support for meta package version 1.15.0 (#31).
- FEAT: wallet key id abstraction (#68).
- FEAT: restructure code snippets (#87).
- FEAT: adding docs for presentation (#80).
- FEAT: add credentials directory docs (#67).
- FEAT: Replaced dynamic types with strict models in DidDocument (#78).
- FEAT: Standardize VC fields (#66).
- FEAT: checking kid related to issuer did (#64).
- FEAT: cover public api members documentation for presentations (#58).
- FEAT: encrypt from wallet (#61).
- FEAT: implement LD V2 suite.
- FEAT: generic wallet (#56).
- FEAT: add support to issue VC as SdJwt (#52).
- FEAT: add support for encrypt and decrypt on existing KeyPairs (#53).
- FEAT: adding docs for model, suits and proofs (#90).
- FEAT: p256 algorithm key pair (#49).
- FEAT: refactor VC models.
- FEAT: adding docs for model under /credential (#84).
- FEAT: create tickets from TODOs (#50).
- FEAT: move AWS KMS wallet under package (#30).
- FEAT: add cache for document loader (#48).
- FEAT: parsed vcs are read only (#47).
- FEAT: implement verification service for VC (#35).
- FEAT: add VP common interface (#29).
- FEAT: extend support for embedded proof properties (#69).
- FEAT: create a shared retry generator (#76).
- FEAT: only return private key on generation (#77).
- FEAT: Tests added for VC DM v1 and v2. (#71).
- FEAT: sdjwt integrity verification (#51).
- DOCS: update readme (#63).
- DOCS: add code documentation for lib/src/credentials public members (#45).
1.0.0-dev.20 #
- REFACTOR: refactor code snippets (#72).
- FIX: test concurrency (#36).
- FIX: organize exports from across the credentials code (#86).
- FIX: rename GenericWallet to PersistentWallet (#85).
- FIX: making the interface of issue methods uniform (#83).
- FIX: making the interface of issue methods uniform.
- FIX: Adding VP tests (#65).
- FIX: VP structure updated to be same as VC (#54).
- FIX: remove affinidi links.
- FIX: package publish (#46).
- FIX: apply dart_flutter_team_lints rules to credentials (#42).
- FIX: added support for meta package version 1.15.0 (#31).
- FEAT: wallet key id abstraction (#68).
- FEAT: restructure code snippets (#87).
- FEAT: adding docs for presentation (#80).
- FEAT: add credentials directory docs (#67).
- FEAT: Replaced dynamic types with strict models in DidDocument (#78).
- FEAT: Standardize VC fields (#66).
- FEAT: checking kid related to issuer did (#64).
- FEAT: cover public api members documentation for presentations (#58).
- FEAT: encrypt from wallet (#61).
- FEAT: implement LD V2 suite.
- FEAT: generic wallet (#56).
- FEAT: add support to issue VC as SdJwt (#52).
- FEAT: add support for encrypt and decrypt on existing KeyPairs (#53).
- FEAT: adding docs for model, suits and proofs (#90).
- FEAT: p256 algorithm key pair (#49).
- FEAT: refactor VC models.
- FEAT: adding docs for model under /credential (#84).
- FEAT: create tickets from TODOs (#50).
- FEAT: move AWS KMS wallet under package (#30).
- FEAT: add cache for document loader (#48).
- FEAT: parsed vcs are read only (#47).
- FEAT: implement verification service for VC (#35).
- FEAT: add VP common interface (#29).
- FEAT: extend support for embedded proof properties (#69).
- FEAT: create a shared retry generator (#76).
- FEAT: only return private key on generation (#77).
- FEAT: Tests added for VC DM v1 and v2. (#71).
- FEAT: sdjwt integrity verification (#51).
- DOCS: update readme (#63).
- DOCS: add code documentation for lib/src/credentials public members (#45).
2025-04-09 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v1.0.0-dev.19
- FIX: export did document (#34).
1.0.0-dev.19 #
1.0.0-dev.18 #
1.0.0-dev.17 #
1.0.0-dev.16 #
1.0.0-dev.15 #
1.0.0-dev.14 #
1.0.0-dev.13 #
1.0.0-dev.12 #
1.0.0-dev.11 #
- FIX: cut new release & fix workflow name.
2025-04-03 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v1.0.0-dev.10
- FEAT: DID handling refactoring (#11).
2025-04-02 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v1.0.0-dev.10
- FEAT: DID handling refactoring (#11).
1.0.0-dev.10 #
- FEAT: DID handling refactoring (#11).
2025-04-02 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v1.0.0-dev.9
- FIX: checks ci reference (#18).
- FIX: linting and packaging issues (#5).
- FIX: implement did.
- FIX: signature scheme (#2).
- FIX: format.
- FEAT: name package & setup ci (#14).
- FEAT: VC interfaces.
- FEAT: add base resolution and did web (#8).
- FEAT: add edward curve add did peer (#7).
1.0.0-dev.9 #
- FIX: checks ci reference (#18).
- FIX: linting and packaging issues (#5).
- FIX: implement did.
- FIX: signature scheme (#2).
- FIX: format.
- FEAT: name package & setup ci (#14).
- FEAT: VC interfaces.
- FEAT: add base resolution and did web (#8).
- FEAT: add edward curve add did peer (#7).
2025-04-01 #
Changes #
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
ssi - v1.0.0-dev.8
- FEAT: VC interfaces.
1.0.0-dev.8 #
1.0.0-dev.7 #
1.0.0-dev.6 #
1.0.0-dev.5 #
1.0.0-dev.4 #
- FIX: format.
1.0.0-dev.3 #
- ignored .failed_tracker
- ignored .failed_tracker
- fix: format
- ci: add simple ci check
- chore: migrate
- Initial commit
1.0.0-dev.2 #
- ignored .failed_tracker
- fix: format
- ci: add simple ci check
- chore: migrate
- Initial commit