1.0.0-rc.1 (2023-09-29)
This version introduces a new DID method targeting the IOTA UTXO ledger. This method works fundamentally differently from the previous method and introduces new capabilities to interact with Layer 1 assets like Native Tokens, NFTs and various Output types.
This version changes the credential and presentation format to JWT, as specified by the VC Data Model v1.1.
Note: Identities and credentials created with the earlier versions cannot be resolved with this version of the library.
- Add dedicated stronghold crate #1243
- Add dedicated EdDSA verifier crate #1238
- Use
VC Data Model v1.1
JWT encoding instead ofVC-JWT
#1234 - Remove
vp
andvc
from JWT claims in JOSE #1233 - Mark error enums as non-exhaustive #1227
- Change
verifiable_credential
to typeVec<CRED>
inPresentation
#1231 - Bring JwkDocumentExt names in line with Wasm #1233
- Add lints for all crates #1222
- Bump
iota-sdk
and other dependencies #1208 - Polish
identity_credential
#1205 - Polish
identity_resolver
andidentity_storage
#1204 - Polish
identity_iota_core
#1203 - Rename
JwtPresentation
toPresentation
#1200 - Polish
identity_document
#1198 - Polish
identity_did
&identity_verification
#1197 - Polish
identity_core
#1196 - Remove identity-diff remains #1195
- Remove legacy signing and verification APIs #1194
- Remove old
Presentation
type #1190 - Remove reexported
Resolver
validation APIs #1183 - Use JWT credentials for Domain Linkage #1180
- Remove
identity_agent
&identity_comm
#1168 - Remove
identity-diff
crate #1167 - JwkStorageDocument & JwtCredential validation #1152
- Adapt StorageError to be more generic #1144
- Add initial PublicKeyJwk support #1143
- Split JWS
Decoder
functionality #1133 CoreDocument
&Service
andVerificationMethod
are now in thedocument
andverification
modules respectively #1104- Remove generics in CoreDocument, VerificationMethod, Service, DIDUrl and LinkedDomainService #1110
- Updated
iota-types
dependency to1.0.0-rc.6
#1121 - Refactor
MethodType
to make it extensible #1112 - More identifier checks in
CoreDocument
#1067 - Update to
iota-client
2.0.1-rc.4 andiota-client-wasm
0.5.0-alpha.6 #1088 - Update iota client 2.0.1 rc.3 #1062
- Use Bech32-encoded state controller and governor addresses #1044
- Expose iteration over verification relationship fields #1024
- Remove
identity_agent
reexport #1031 - Rename
MixedResolver
toResolver
in Wasm #1026 - Add length prefix to DID Document payloads #1010
- Feature-gate
Resolver
#1007 - Rename
Stardust
types toIota
#1000 - Change Stardust DID method to IOTA #982
- Add Wasm Stardust Client #975
- Generalized Resolver #970
- Change
Storage
to handleCoreDID
#968 - Feature-gate
iota-client
dependency, integrateStardustDID
#958 - Change
Storage
to store arbitrary blobs #953 - Add
StardustDocumentMetadata
, implementStardustDocument
methods #951 - Fix stack overflow in
CoreDID
PartialEq
impl #946 - Change
Service
type
field to allow sets #944 - Generalise
CredentialValidator
,PresentationValidator
to support arbitrary DID Documents #935
- Allow arbitrary JWS header parameters #1245
- Allow custom JWT claims for presentations #1244
- Allow custom
kid
to be set in JWS #1239 - Allow custom JWT claims for credentials #1237
- Improve
Proof
#1209 - Polish
identity_jose
#1201 - Add
resolve_multiple
to Resolver #1189 - Make JWT presentations generic #1186
- Support JWT presentations #1175
- Polish JWK thumbprint and document extension API #1173
- Stronghold Storage Implementation #1157
- Implement
KeyIdStorage
in Rust #1134 - Implement
JwkStorage
#1116 - Add Wasm Bindings for Domain Linkage #1115
- Introduce
IToCoreDocument
and document locks in the bindings #1120 - Add Support for Domain Linkage in Rust #1094
- Add JSON Object Signing capabilities #1105
- Make
StateMetadataDocument
public #1085 - Add v. credentials and presentations examples #1070
- Add revocation examples #1076
- Expose Controller and Governor Addresses in metadata #1023
- Add Stardust Client Extension Trait #963
- Add StardustDID #949
- State metadata serialization for the stardust DID method #947
- Stardust DID Method Proof-of-Concept #940
- Implement the Identity Agent #322
- Fix holder claim check in VP #1236
- Fix issuer claim check in VC #1235
- Feature-gate Domain Linkage #1184
- Update method spec and JWK method type #1176
- Replace
iota-client
withiota-sdk
#1161 - Pin
form_urlencoded
to1.1.0
#1136 - Remove legacy crates #1080
- Recommend unique
credentialStatus.id
inRevocationBitmap2022
#1039 - Pin agent dev-dependencies to crates versions #1029
- Support case insensitive serialization of
RentStructure
#1012 - Update stronghold to 0.6.4 #928
0.7.0-alpha.8 (2023-09-28)
- Add dedicated stronghold crate #1243
- Add dedicated EdDSA verifier crate #1238
- Use
VC Data Model v1.1
JWT encoding instead ofVC-JWT
#1234 - Remove
vp
andvc
from JWT claims in JOSE #1233 - Mark error enums as non-exhaustive #1227
- Change
verifiable_credential
to typeVec<CRED>
inPresentation
#1231 - Bring JwkDocumentExt names in line with Wasm #1233
- Add lints for all crates #1222
- Allow arbitrary JWS header parameters #1245
- Allow custom JWT claims for presentations #1244
- Allow custom
kid
to be set in JWS #1239 - Allow custom JWT claims for credentials #1237
v0.7.0-alpha.7 (2023-08-15)
- Improve
Proof
#1209 - Polish
identity_jose
#1201 - Add
resolve_multiple
to Resolver #1189 - Make JWT presentations generic #1186
- Support JWT presentations #1175
- Polish JWK thumbprint and document extension API #1173
- Stronghold Storage Implementation #1157
- Implement
KeyIdStorage
in Rust #1134
- Bump
iota-sdk
and other dependencies #1208 - Polish
identity_credential
#1205 - Polish
identity_resolver
andidentity_storage
#1204 - Polish
identity_iota_core
#1203 - Rename
JwtPresentation
toPresentation
#1200 - Polish
identity_document
#1198 - Polish
identity_did
&identity_verification
#1197 - Polish
identity_core
#1196 - Remove identity-diff remains #1195
- Remove legacy signing and verification APIs #1194
- Remove old
Presentation
type #1190 - Remove reexported
Resolver
validation APIs #1183 - Use JWT credentials for Domain Linkage #1180
- Remove
identity_agent
&identity_comm
#1168 - Remove
identity-diff
crate #1167 - JwkStorageDocument & JwtCredential validation #1152
- Adapt StorageError to be more generic #1144
- Add initial PublicKeyJwk support #1143
- Split JWS
Decoder
functionality #1133
- Feature-gate Domain Linkage #1184
- Update method spec and JWK method type #1176
- Replace
iota-client
withiota-sdk
#1161 - Pin
form_urlencoded
to1.1.0
#1136
v0.7.0-alpha.6 (2023-03-03)
- Implement
JwkStorage
#1116 - Add Wasm Bindings for Domain Linkage #1115
- Introduce
IToCoreDocument
and document locks in the bindings #1120
- Pin
form_urlencoded
to1.1.0
#1136
v0.7.0-alpha.5 (2023-02-15)
CoreDocument
&Service
andVerificationMethod
are now in thedocument
andverification
modules respectively #1104- Remove generics in CoreDocument, VerificationMethod, Service, DIDUrl and LinkedDomainService #1110
- Updated
iota-types
dependency to1.0.0-rc.6
#1121 - Refactor
MethodType
to make it extensible #1112
v0.7.0-alpha.4 (2022-11-24)
- Make
StateMetadataDocument
public #1085 - Add v. credentials and presentations examples #1070
- Add revocation examples #1076
- More identifier checks in
CoreDocument
#1067 - Update to
iota-client
2.0.1-rc.4 andiota-client-wasm
0.5.0-alpha.6 #1088
- Remove legacy crates #1080
v0.7.0-alpha.3 (2022-09-30)
- Update iota client 2.0.1 rc.3 #1062
v0.7.0-alpha.2 (2022-09-30)
- Use Bech32-encoded state controller and governor addresses #1044
- Expose iteration over verification relationship fields #1024
- Expose Controller and Governor Addresses in metadata #1023
- Recommend unique
credentialStatus.id
inRevocationBitmap2022
#1039
v0.7.0-alpha.1 (2022-09-19)
This version introduces a new DID method targeting the IOTA UTXO ledger. This method works fundamentally differently from the previous method and introduces new capabilities to interact with Layer 1 entities like native tokens, NFTs and smart contracts.
This is an early alpha release, so there may be breaking changes in upcoming versions that invalidate DIDs created with this version. The method at this point is only intended for experimentation.
Note: Identities created with the earlier versions cannot be resolved with this version of the library.
- Remove
identity_agent
reexport #1031 - Rename
MixedResolver
toResolver
in Wasm #1026 - Add length prefix to DID Document payloads #1010
- Feature-gate
Resolver
#1007 - Rename
Stardust
types toIota
#1000 - Change Stardust DID method to IOTA #982
- Add Wasm Stardust Client #975
- Generalized Resolver #970
- Change
Storage
to handleCoreDID
#968 - Feature-gate
iota-client
dependency, integrateStardustDID
#958 - Change
Storage
to store arbitrary blobs #953 - Add
StardustDocumentMetadata
, implementStardustDocument
methods #951 - Fix stack overflow in
CoreDID
PartialEq
impl #946 - Change
Service
type
field to allow sets #944 - Generalise
CredentialValidator
,PresentationValidator
to support arbitrary DID Documents #935
- Add Stardust Client Extension Trait #963
- Add StardustDID #949
- State metadata serialization for the stardust DID method #947
- Stardust DID Method Proof-of-Concept #940
- Implement the Identity Agent #322
- Pin agent dev-dependencies to crates versions #1029
- Support case insensitive serialization of
RentStructure
#1012 - Update stronghold to 0.6.4 #928
v0.6.0 (2022-06-15)
The main feature of this release is the addition of the RevocationBitmap2022
specification, offering efficient credential revocation on-Tangle. This is the replacement for the MerkleKeyCollection
removed in v0.5.0, which offered similar functionality but fundamentally failed to scale beyond a few thousand revocations.
Other changes include encryption support using Elliptic Curve Diffie-Hellman (ECDH) and quality of life improvements for verifiable credential and presentation types in the Wasm bindings.
DID Documents created with v0.5.0 remain compatible with v0.6.0. This will be the last major release prior to changes for the Stardust update.
- Rename crates to use underscores #895
- Change
remove_service
to return boolean #877 - Change
DIDUrl::join
to borrow self #871 - Add
BaseEncoding
to replaceencode_b58
,decode_b58
,encode_multibase
,decode_multibase
#870 - Add
RevocationBitmap2022
, bump MSRV to 1.60 #861 - Add Wasm
Credential
andPresentation
field getters and constructors #815 - Add Diffie-Hellman key exchange for encryption to
Account
#809
- Implement
ECDH-ES+A256KW
forStorage
encryption #867 - Add Client option for retry publishing behaviour #820
- Implement
Storage
test suite #791
- Unpin iota-crypto version #834
- Remove unused resolution code #862
v0.5.0 (2022-03-31)
This release introduces multiple breaking changes to the structure of IOTA DID Documents and their Tangle messages, rendering any identity created with a prior version incompatible and unresolvable. A versioning system has been introduced so any new identities should hopefully be forward compatible with any future breaking changes to the message structure.
The main feature of this release is the introduction of WebAssembly (Wasm) bindings for the high-level Account
API for Javascript/Typescript in both Node.js and the browser. This includes preliminary Stronghold storage bindings but only for Node.js, as it was determined that compiling Stronghold to Wasm for the browser would not be sufficiently secure. Stronghold offers best-effort secure software storage for cryptographic keys, written in Rust. To use the Stronghold storage package install @iota/identity-stronghold-nodejs
and follow the instructions of the package README.
Note that all features related to diff chain updates are now marked as deprecated. Diff chains are a useful optimisation when publishing many updates to a DID Document. However, their design may be incompatible with upcoming changes to the IOTA network and should be considered unstable.
Another major change is the removal of the MerkleKeyCollection
verification method type, which provided a compact representation for issuing and revoking Verifiable Credentials with multiple cryptographic keys. The MerkleKeyCollection
suffered from disadvantages which limited scalability when managing more than a few thousand keys. While these disadvantages could be mitigated somewhat, the decision was made to replace it with one or more alternatives not affected by its fundamental limitations, upcoming in the next major release.
- Add Wasm
Proof
, renameSignature
structs toProof
#776 - Replace
MethodSecret
withMethodContent
enum #764 - Change document metadata
created
,updated
to be optional #753 - Refactor Storage Signature #738
- Add X25519 key and verification method support #735
- Refactor
KeyLocation
#729 - Move DID Document proof outside metadata #728
- Combine resolve_method functions #709
- Add separate
identity-iota-core
,identity-account-storage
crates #693 - Change
IotaDocument::verify_document
from a static function to a method #675 - Make Wasm support dependent on
target_arch
rather than feature #666 - Refactor
CoreDocument
,VerificationMethod
,Service
to use generic DID #655 - Remove unused
Account
milestone option #645 - Change document controller type to
OneOrSet
#638 - Rename
MethodQuery
toDIDUrlQuery
, moveOrderedSet
,KeyComparable
#634 - Change
also_known_as
type toOrderedSet
#632 - Move verification functionality from
DocumentVerifier
toCoreDocument
#606 - Fix dependent diff updates being rejected #605
- Change
Account::state
visibility topub(crate)
#604 - Overhaul
CredentialValidator
, addPresentationValidator
#599 - Remove JSON string escaping in diff messages #598
- Replace
ClientMap
with newResolver
#594 - Replace
ClientMap
withClient
inAccount
#582 - Add signature
created
,expires
,challenge
,domain
,purpose
#548 - Refactor document metadata #540
- Replace
chrono
withtime
#529 - Enable access to the low-level API from the
Account
#522 - Update to
rsa
0.5 in libjose #517 - Rename
DocumentDiff
toDiffMessage
#511 - Deterministic ordering of competing messages #506
- Check for existence & duplication of methods in
CoreDocument
#504 - Move
dropsave
fromAccount
toStronghold
#500 - Add
ExplorerUrl
to replaceNetwork
explorer methods #496 - Update
ServiceEndpoint
to support sets and maps #485 - Enable deep equality in
OrderedSet
#481 - Add message compression and versioning #466
- Update document signing key constraints and methods #458
- Refactor the
Account
: internal state, one identity #453
- Expose Ed25519, X25519 length constants #772
- Generify
Account::client
overRc
,Arc
#707 - Update Stronghold #691
- Add
Duration
forTimestamp
arithmetic #684 - Add
Client
fallback to local PoW option #682 - Set
controller
,alsoKnownAs
fields from Account #658 - Implement
FromIterator
forOneOrMany
#602 - Add account synchronization method #544
- Filter out DiffMessages updating signing methods #519
- Add publish with retry method #455
- Fix panic when parsing an
IotaDID
with more than 2 method id segments #758 - Update iota.rs to include timeout bugfix #712
- Support verification methods with the same fragment #623
- Fix diff properties (de)serialization #611
- Enable local proof-of-work fallback #579
- Add
identity-diff
derive feature gate #516 - Improve client error messages #512
- Make
create_signature
andsign
async forRemoteEd25519
#491 - Fix credential validation failing for documents with diff updates #490
- Upgrade to the Rust 2021 edition #449
- Deprecate diff chain features #759
- Remove
AccountStorage
#774 - Remove
MerkleKeyCollection
#755 - Remove
Storage::set_password
#733 - Remove
publicKeyJwk
#732 - Remove
DIDLease
account feature #664
v0.4.0 (2021-11-01)
v0.3.0 (2021-05-10)
This release introduces the high-level Account
API for creating and managing IOTA identities.
v0.2.0 (2021-02-18)
v0.1.0 (2020-11-12)
* This Changelog was automatically generated by github_changelog_generator