A relatively minor maintenance release to address issues found since the 0.7.0 Release. Includes some cleanups of JSON-LD Verifiable Credentials and Verifiable Presentations
- W3C Verifiable Credential cleanups
- Refactor outbound queue interface (#1348)
- Command line parameter handling for arbitrary plugins (#1347)
- Add an optional parameter '--ledger-socks-proxy' (#1342)
- OOB Protocol - CredentialOffer Support (#1316), (#1216)
- Updated IndyCredPrecisSchema - pres_referents renamed to presentation_referents (#1334)
- Handle unpadded protected header in PackWireFormat::get_recipient_keys (#1324)
- Initial cut of OpenAPI Code Generation guidelines (#1339)
- Correct revocation API in credential revocation documentation (#612)
- Documentation updates for Read-The-Docs (#1359, #1366, #1371)
- Add
inject_or
method to dynamic injection framework to resolve typing ambiguity (#1376) - Other fixes:
- Indy Proof processing fix, error not raised in predicate timestamp check (#1364)
- Problem Report handler for connection specific problems (#1356)
- fix: error on deserializing conn record with protocol (#1325)
- fix: failure to verify jsonld on non-conformant doc but vaild vmethod (#1301)
- fix: allow underscore in endpoints (#1378)
Another significant release, this version adds support for multiple new protocols, credential formats, and extension methods.
- Support for W3C Standard Verifiable Credentials based on JSON-LD using LD-Signatures and BBS+ Signatures, contributed by Animo Solutions - #1061
- Present Proof V2 including support for DIF Presentation Exchange - #1125
- Pluggable DID Resolver (with a did:web resolver) with fallback to an external DID universal resolver, contributed by Indicio - #1070
- Updates and extensions to ledger transaction endorsement via the Sign Attachment Protocol, contributed by AyanWorks - #1134, #1200
- Upgrades to Demos to add support for Credential Exchange 2.0 and W3C Verifiable Credentials #1235
- Alpha support for the Indy/Aries Shared Components (indy-vdr, indy-credx and aries-askar), which enable running ACA-Py without using Indy-SDK, while still supporting the use of Indy as a ledger, and Indy AnonCreds verifiable credentials #1267
- A new event bus for distributing internally generated ACA-Py events to controllers and other listeners, contributed by Indicio - #1063
- Enable operation without Indy ledger support if not needed
- Performance fix for deployments with large numbers of DIDs/connections #1249
- Simplify the creation/handling of plugin protocols #1086, #1133, #1226
- DID Exchange implicit invitation handling #1174
- Add support for Indy 1.16 predicates (restrictions on predicates based on attribute name and value) #1213
- BDD Tests run via GitHub Actions #1046
This is a significant release of ACA-Py with several new features, as well as changes to the internal architecture in order to set the groundwork for using the new shared component libraries: indy-vdr, indy-credx, and aries-askar.
While ACA-Py had previous support for a basic routing protocol, this was never fully developed or used in practice. Starting with this release, inbound and outbound connections can be established through a mediator agent using the Aries (Mediator Coordination Protocol)[https://github.com/hyperledger/aries-rfcs/tree/master/features/0211-route-coordination]. This work was initially contributed by Adam Burdett and Daniel Bluhm of Indicio on behalf of SICPA. Read more about mediation support.
Started by BMW and completed by Animo Solutions and Anon Solutions on behalf of SICPA, this feature allows for a single ACA-Py instance to host multiple wallet instances. This can greatly reduce the resources required when many identities are being handled. Read more about multi-tenancy support.
In addition to the Aries 0160 Connections RFC, ACA-Py now supports the Aries DID Exchange Protocol for connection establishment and reuse, as well as the Aries Out-of-Band Protocol for representing connection invitations and other pre-connection requests.
This release includes an initial implementation of the Aries Issue Credential v2 protocol.
-
There are several new endpoints available for controllers as well as new startup parameters related to the multi-tenancy and mediator features, see the feature description pages above in order to make use of these features. Additional admin endpoints are introduced for the DID Exchange, Issue Credential v2, and Out-of-Band protocols.
-
When running
aca-py start
, a new wallet will no longer be created unless the--auto-provision
argument is provided. It is recommended to always useaca-py provision
to initialize the wallet rather than relying on automatic behaviour, as this removes the need for repeatedly providing the wallet seed value (if any). This is a breaking change from previous versions. -
When running
aca-py provision
, an existing wallet will not be removed and re-created unless the--recreate-wallet
argument is provided. This is a breaking change from previous versions. -
The logic around revocation intervals has been tightened up in accordance with Present Proof Best Practices.
The following are breaking changes to the internal APIs which may impact Python code extensions.
-
Manager classes generally accept a
Profile
instance, where previously they accepted aRequestContext
. -
Admin request handlers now receive an
AdminRequestContext
asapp["context"]
. The current profile is available asapp["context"].profile
. The admin server now generates a unique context instance per request in order to facilitate multi-tenancy, rather than reusing the same instance for each handler. -
In order to inject the
BaseStorage
orBaseWallet
interfaces, aProfileSession
must be used. Other interfaces can be injected at theProfile
orProfileSession
level. This is obtained by awaitingprofile.session()
for the currentProfile
instance, or (preferably) using it as an async context manager:
async with profile.session() as session:
storage = session.inject(BaseStorage)
- The
inject
method of a context is no longerasync
.
- Fix an attempt to update the agent endpoint when configured with a read-only ledger #758
- Support interactions using the new
https://didcomm.org
message type prefix (currently opt-in via the--emit-new-didcomm-prefix
flag) #705, #713 - Updates to application startup arguments, adding support for YAML configuration #739, #746, #748
- Add a new endpoint to check the revocation status of a stored credential #735
- Clean up API documentation and OpenAPI definition, minor API adjustments #712, #726, #732, #734, #738, #741, #747
- Add configurable support for unencrypted record tags #723
- Retain more limited records on issued credentials #718
- Fix handling of custom endpoint in connections
accept-request
API method #715, #716 - Add restrictions around revocation registry sizes #727
- Allow the state for revocation registry records to be set manually #708
- Handle multiple matching credentials when satisfying a presentation request using
names
#706 - Additional handling for a missing local tails file, tails file rollover process #702, #717
- Handle unknown credential ID in
create-proof
API method #700 - Improvements to revocation interval handling in presentation requests #699, #703
- Clean up warnings on API redirects #692
- Extensions to DID publicity status #691
- Support Unicode text in JSON-LD credential handling #687
- Improvements to schema, cred def registration procedure #682, #683
- Updates to align admin API output with documented interface #674, #681
- Fix provisioning issue when ledger is configured as read-only #673
- Add
get-nym-role
action #671 - Basic support for w3c profile endpoint #667, #669
- Improve handling of non-revocation interval #648, #680
- Update revocation demo after changes to tails file handling #644
- Improve handling of fatal ledger errors #643, #659
- Improve
did:key:
handling in out-of-band protocol support #639 - Fix crash when no public DID is configured #637
- Fix high CPU usage when only messages pending retry are in the outbound queue #636
- Additional unit tests for config, messaging, revocation, startup, transports #633, #641, #658, #661, #666
- Allow forwarded messages to use existing connections and the outbound queue #631
- Store endpoint on provisioned DID records #610
- More reliable delivery of outbound messages and webhooks #615
- Improvements for OpenShift pod handling #614
- Remove support for 'on-demand' revocation registries #605
- Sort tags in generated swagger JSON for better consistency #602
- Improve support for multi-credential proofs #601
- Adjust default settings for tracing and add documentation #598, #597
- Fix reliance on local copy of revocation tails file #590
- Improved handling of problem reports #595
- Remove credential preview parameter from credential issue endpoint #596
- Looser format restrictions on dates #586
- Support
names
and attribute-value specifications in present-proof protocol #587 - Misc documentation updates and unit test coverage
- Initial out-of-band protocol support #576
- Support provisioning a new local-only DID in the wallet, updating a DID endpoint #559, #573
- Support pagination for holder search operation #558
- Add raw JSON credential signing and verification admin endpoints #540
- Catch fatal errors in admin and protocol request handlers #527, #533, #534, #539, #543, #554, #555
- Add wallet and DID key rotation operations #525
- Admin API documentation and usability improvements #504, #516, #570
- Adjust the maximum number of attempts for outbound messages #501
- Add demo support for tails server #499
- Various credential and presentation protocol fixes and improvements #491, #494, #498, #526, #561, #563, #564, #577, #579
- Fixes for multiple agent endpoints #495, #497
- Additional test coverage #482, #485, #486, #487, #490, #493, #509, #553
- Update marshmallow dependency #479
- Restore previous response format for the
/credential/{id}
admin route #474
- Add support for credential revocation and revocation registry handling, with thanks to Medici Ventures #306, #417, #425, #429, #432, #435, #441, #455
- Breaking change Remove previous credential and presentation protocols (0.1 versions) #416
- Add support for major/minor protocol version routing #443
- Event tracing and trace reports for message exchanges #440
- Support additional Indy restriction operators (
>
,<
,<=
in addition to>=
) #457 - Support signed attachments according to the updated Aries RFC 0017 #456
- Increased test coverage #442, #453
- Updates to demo agents and documentation #402, #403, #411, #415, #422, #423, #449, #450, #452
- Use Indy generate_nonce method to create proof request nonces #431
- Make request context available in the outbound transport handler #408
- Contain indy-anoncreds usage in IndyIssuer, IndyHolder, IndyProver classes #406, #463
- Fix issue with validation of proof with predicates and revocation support #400
- Added NOTICES file with license information for dependencies #398
- Updated documentation for administration API demo #397
- Accept self-attested attributes in presentation verification, only when no restrictions are present on the requested attribute #394, #396
- Update docker image used in demo and test containers #391
- Fix pre-verify check on received presentations #390
- Do not canonicalize attribute names in credential previews #389
- Fix the application of transaction author agreement acceptance to signed ledger requests #385
- Add a command line argument to preserve connection exchange records #355
- Allow custom credential IDs to be specified by the controller in the issue-credential protocol #384
- Handle send timeouts in the admin server websocket implementation #377
- Aries RFC 0348: Support the 'didcomm.org' message type prefix for incoming messages #379
- Add support for additional postgres wallet schemes such as "MultiWalletDatabase" #378
- Updates to the demo agents and documentation to support demos using the OpenAPI interface #371, #375, #376, #382, #383, #382
- Add a new flag for preventing writes to the ledger #364
- Adjust logging on HTTP request retries #363
- Tweaks to
run_docker
/run_demo
scripts for Windows #357 - Avoid throwing exceptions on invalid or incomplete received presentations #359
- Restore the
present-proof/create-request
admin endpoint for creating connectionless presentation requests #356 - Activate the
connections/create-static
admin endpoint for creating static connections #354
- Update Forward messages and handlers to align with RFC 0094 for compatibility with libvcx and Streetcred #240, #349
- Verify encoded attributes match raw attributes on proof presentation #344
- Improve checks for existing credential definitions in the wallet and on ledger when publishing #333, #346
- Accommodate referents in presentation proposal preview attribute specifications #333
- Make credential proposal optional in issue-credential protocol #336
- Handle proofs with repeated credential definition IDs #330
- Allow side-loading of alternative inbound transports #322
- Various fixes to documentation and message schemas, and improved unit test coverage
- Improved unit test coverage (actionmenu, basicmessage, connections, introduction, issue-credential, present-proof, routing protocols)
- Various documentation and bug fixes
- Add admin routes for fetching and accepting the ledger transaction author agreement #144
- Add support for receiving connection-less proof presentations #296
- Set attachment id explicitely in unbound proof request #289
- Add create-proposal admin endpoint to the present-proof protocol #288
- Remove old anon/authcrypt support #282
- Allow additional endpoints to be specified #276
- Allow timestamp without trailing 'Z' #275, #277
- Display agent label and version on CLI and SwaggerUI #274
- Remove connection activity tracking and add ping webhooks (with --monitor-ping) #271
- Refactor message transport to track all async tasks, active message handlers #269, #287
- Add invitation mode "static" for static connections #260
- Allow for cred proposal underspecification of cred def id, only lock down cred def id at issuer on offer. Sync up api requests to Aries RFC-36 verbiage #259
- Disable cookies on outbound requests (avoid session affinity) #258
- Add plugin registry for managing all loaded protocol plugins, streamline ClassLoader #257, #261
- Add support for locking a cache key to avoid repeating expensive operations #256
- Add optional support for uvloop #255
- Output timing information when --timing-log argument is provided #254
- General refactoring - modules moved from messaging into new core, protocols, and utils sub-packages #250, #301
- Switch performance demo to the newer issue-credential protocol #243
- Switch performance demo to the newer issue-credential protocol #243
- Remove old method for reusing credential requests and replace with local caching for credential offers and requests #238, #242
- Add statistics on HTTP requests to timing output #237
- Reduce the number of tags on non-secrets records to reduce storage requirements and improve performance #235
- Clean up base64 handling in wallet utils and add tests #224
- Support schema sequence numbers for lookups and caching and allow credential definition tag override via admin API #223
- Support multiple proof referents in the present-proof protocol #222
- Group protocol command line arguments appropriately #217
- Don't require a signature for get_txn_request in credential_definition_id2schema_id and reduce public DID lookups #215
- Add a role property to credential exchange and presentation exchange records #214, #218
- Improve attachment decorator handling #210
- Expand and correct documentation of the OpenAPI interface #208, #212
- Clean up LGTM errors and warnings and fix a message dispatch error #203
- Avoid wrapping messages with Forward wrappers when returning them directly #199
- Add a CLI parameter to override the base URL used in URL-formatted connection invitations #197
- Update the feature discovery protocol to match the RFC and rename the admin API endpoint #193
- Add CLI parameters for specifying additional properties of the printed connection invitation #192
- Add support for explicitly setting the wallet credential ID on storage #188
- Additional performance tracking and storage reductions #187
- Handle connection invitations in base64 or URL format in the Alice demo agent #186
- Add admin API methods to get and set the credential tagging policy for a credential definition ID #185
- Allow querying of credentials for proof requests with multiple referents #181
- Allow self-connected agents to issue credentials, present proofs #179
- Add admin API endpoints to register a ledger nym, fetch a ledger DID verkey, or fetch a ledger DID endpoint #178
- Merge support for Aries #36 (issue-credential) and Aries #37 (present-proof) protocols #164, #167
- Add
initiator
to connection record queries to ensure uniqueness in the case of a self-connection #161 - Add connection aliases #149
- Misc documentation updates
- Do not fail with an error when no ledger is configured #145
- Switch to PyNaCl instead of pysodium; update dependencies #143
- Support reusable connection invitations #142
- Fix --version option and optimize Docker builds #136
- Add connection_id to basicmessage webhooks #134
- Fixes for transaction author agreements #133
- Ledger and wallet config updates; add support for transaction author agreements #127
- Handle duplicate schema in send_schema by always fetching first #126
- More flexible timeout support in detect_process #125
- Add start command to run_docker invocations #119
- Add issuer stored state #114
- Add admin route to create a presentation request without sending it #112
- Add -v option to aca-py executable to print version #110
- Fix demo presentation request, optimize credential retrieval #108
- Add pypi badge to README and make document link URLs absolute #103
- Add admin routes for creating and listing wallet DIDs, adjusting the public DID #102
- Update the running locally instructions based on feedback from Sam Smith #101
- Add support for multiple invocation commands, implement start/provision/help commands #99
- Add admin endpoint to send problem report #98
- Add credential received state transition #97
- Adding documentation for the routing version of the performance example #94
- Document listing the Aries RFCs supported by ACA-Py and reference to the list in the README #89
- Further updates to the running locally section of the demo README #86
- Don't extract decorators with names matching the 'data_key' of defined schema fields #85
- Allow demo scripts to run outside of Docker; add command line parsing #84
- Connection invitation fixes and improvements; support DID-based invitations #82
- Add missing MANIFEST file #78
This is the first PyPI release. The history begins with the transfer of aca-py from bcgov to hyperledger.
- Prepare for version 0.2.0 release #77
- Update von-network related references. #74
- Fixed log_level arg, added validation error logging #73
- fix shell inconsistency #72
- further cleanup to the OpenAPI demo script #71
- Updates to invitation handling and performance test #68
- Api security #67
- Fix line endings on Windows #66
- Fix repository name in badge links #65
- Connection record is_ready refactor #64
- Fix API instructions for cred def id #58
- Updated API demo docs to use alice/faber scripts #54
- Updates to the readme for the demo to add PWD support #53
- Swallow empty input in demo scripts #51
- Set credential_exchange state when created from a cached credential request #49
- Check for readiness instead of activeness in credential admin routes #46
- Demo updates #43
- Misc fixes #42
- Readme updates #41
- Change installed "binary" name to aca-py #40
- Tweak in script to work under Linux; updates to readme for demo #33
- New routing example document, typo corrections #31
- More bad links #30
- Links cleanup for the documentation #29
- Alice-Faber demo update #28
- Deployment Model document #27
- Plantuml source and images for documentation; w/image generator script #26
- Move generated documentation. #25
- Update generated documents #24
- Split application configuration into separate modules and add tests #23
- Updates to the RTD configuration file #22
- Merge DIDDoc support from von_anchor #21
- Adding Prov of BC, Gov of Canada copyright #19
- Update test configuration #18
- CI updates #17
- Transport updates #15