Skip to content

v0.5.0

Compare
Choose a tag to compare
@github-actions github-actions released this 31 Mar 16:47
v0.5.0
47581e6

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.

Changed

  • Add Wasm Proof, rename Signature structs to Proof #776
  • Replace MethodSecret with MethodContent 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 to DIDUrlQuery, move OrderedSet, KeyComparable #634
  • Change also_known_as type to OrderedSet #632
  • Move verification functionality from DocumentVerifier to CoreDocument #606
  • Fix dependent diff updates being rejected #605
  • Change Account::state visibility to pub(crate) #604
  • Overhaul CredentialValidator, add PresentationValidator #599
  • Remove JSON string escaping in diff messages #598
  • Replace ClientMap with new Resolver #594
  • Replace ClientMap with Client in Account #582
  • Add signature created, expires, challenge, domain, purpose #548
  • Refactor document metadata #540
  • Replace chrono with time #529
  • Enable access to the low-level API from the Account #522
  • Update to rsa 0.5 in libjose #517
  • Rename DocumentDiff to DiffMessage #511
  • Deterministic ordering of competing messages #506
  • Check for existence & duplication of methods in CoreDocument #504
  • Move dropsave from Account to Stronghold #500
  • Add ExplorerUrl to replace Network 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

Added

  • Expose Ed25519, X25519 length constants #772
  • Generify Account::client over Rc, Arc #707
  • Update Stronghold #691
  • Add Duration for Timestamp arithmetic #684
  • Add Client fallback to local PoW option #682
  • Set controller, alsoKnownAs fields from Account #658
  • Implement FromIterator for OneOrMany #602
  • Add account synchronization method #544
  • Filter out DiffMessages updating signing methods #519
  • Add publish with retry method #455

Patch

  • 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 and sign async for RemoteEd25519 #491
  • Fix credential validation failing for documents with diff updates #490
  • Upgrade to the Rust 2021 edition #449

Deprecated

  • Deprecate diff chain features #759

Removed

  • Remove AccountStorage #774
  • Remove MerkleKeyCollection #755
  • Remove Storage::set_password #733
  • Remove publicKeyJwk #732
  • Remove DIDLease account feature #664