Skip to content

Commit de84288

Browse files
Merge branch 'main' into feature/enable-aggr-vcs
2 parents d918829 + 6629d7d commit de84288

26 files changed

Lines changed: 270 additions & 54 deletions

CHANGELOG.md

Lines changed: 66 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,72 @@
1-
# 1.0.0-rc0
1+
# 1.0.0-rc1
22

3-
## August 18, 2022
3+
## November 6, 2022
44

55
1.0.0 is a breaking update to ACA-Py whose version is intended to indicate the
66
maturity of the implementation. The final 1.0.0 release will be Aries Interop
7-
Profile 2.0-complete, and based on Python 3.7 or higher. The initial (rc0)
8-
release candidate is for early adopters to provide feedback.
7+
Profile 2.0-complete, and based on Python 3.7 or higher.
98

109
### Breaking Changes
1110

12-
As of rc0, there are no breaking updates in the release from the previous v0.7.4.
13-
However, we know that there are some pending updates that will be breaking, hence
14-
the bumps to the major/minor version elements.
11+
As of release candidate 1.0.0-rc1, the only identified breaking change is the
12+
handling of "unrevealed attributes" during verification (see
13+
[\#1913](https://github.com/hyperledger/aries-cloudagent-python/pull/1913) for
14+
details). As few implementations of Aries Wallets support unrevealed attributes
15+
in an AnonCreds presentation, this is unlikely to impact any deployments.
1516

1617
### Categorized List of Pull Requests
1718

18-
In rc0, there are not a lot of new features, as the focus is on cleanup and
19+
In rc1, there are not a lot of new features, as the focus is on cleanup and
1920
optimization. The biggest is the inclusion with ACA-Py of a universal resolver
2021
interface, allowing an instance to have both local resolvers for some DID
2122
Methods and a call out to an external universal resolver for other DID Methods.
22-
While some work has been done on moving the default Python version beyond 3.6,
23-
more work is still to be done on that before the final v1.0.0 release.
23+
Another significant feature is full support for Hyperledger Indy transaction
24+
endorsement for Authors and Endorsers. A new repo
25+
[aries-endorser-service](https://github.com/hyperledger/aries-endorser-service)
26+
has been created that is a pre-configured instance of ACA-Py for use as an
27+
Endorser service. While some work has been done on moving the default Python
28+
version beyond 3.6, more work is still to be done on that before the final
29+
v1.0.0 release.
2430

2531
### Categorized List of Pull Requests
2632

27-
- Verifiable credential and revocation handling updates
33+
- Verifiable credential, presentation and revocation handling updates
2834
- Refactor ledger correction code and insert into revocation error handling [\#1892](https://github.com/hyperledger/aries-cloudagent-python/pull/1892) ([ianco](https://github.com/ianco))
2935
- Indy ledger fixes and cleanups [\#1870](https://github.com/hyperledger/aries-cloudagent-python/pull/1870) ([andrewwhitehead](https://github.com/andrewwhitehead))
3036
- Refactoring of revocation registry creation [\#1813](https://github.com/hyperledger/aries-cloudagent-python/pull/1813) ([andrewwhitehead](https://github.com/andrewwhitehead))
37+
- Fix: the type of tails file path to string. [\#1925](https://github.com/hyperledger/aries-cloudagent-python/pull/1925) ([baegjae](https://github.com/baegjae))
38+
- Pre-populate revoc\_reg\_id on IssuerRevRegRecord [\#1924](https://github.com/hyperledger/aries-cloudagent-python/pull/1924) ([andrewwhitehead](https://github.com/andrewwhitehead))
39+
- Leave credentialStatus element in the LD credential [\#1921](https://github.com/hyperledger/aries-cloudagent-python/pull/1921) ([tsabolov](https://github.com/tsabolov))
40+
- **BREAKING:** Remove aca-py check for unrevealed revealed attrs on proof validation [\#1913](https://github.com/hyperledger/aries-cloudagent-python/pull/1913) ([ianco](https://github.com/ianco))
41+
- Send webhooks upon record/credential deletion [\#1906](https://github.com/hyperledger/aries-cloudagent-python/pull/1906) ([frostyfrog](https://github.com/frostyfrog))
42+
43+
- Out of Band (OOB) and DID Exchange / Connection Handling
44+
- Fix: `--mediator-invitation` with OOB invitation + cleanup [\#1970](https://github.com/hyperledger/aries-cloudagent-python/pull/1970) ([shaangill025](https://github.com/shaangill025))
45+
- include image\_url in oob invitation [\#1966](https://github.com/hyperledger/aries-cloudagent-python/pull/1966) ([Zzocker](https://github.com/Zzocker))
46+
- feat: 00B v1.1 support [\#1962](https://github.com/hyperledger/aries-cloudagent-python/pull/1962) ([shaangill025](https://github.com/shaangill025))
47+
- Fix: OOB - Handling of minor versions [\#1940](https://github.com/hyperledger/aries-cloudagent-python/pull/1940) ([shaangill025](https://github.com/shaangill025))
48+
- fix: failed connectionless proof request on some case [\#1933](https://github.com/hyperledger/aries-cloudagent-python/pull/1933) ([kukgini](https://github.com/kukgini))
49+
- fix: propagate endpoint from mediation record [\#1922](https://github.com/hyperledger/aries-cloudagent-python/pull/1922) ([cjhowland](https://github.com/cjhowland))
50+
- Feat/public did endpoints for agents behind mediators [\#1899](https://github.com/hyperledger/aries-cloudagent-python/pull/1899) ([cjhowland](https://github.com/cjhowland))
3151

3252
- DID Registration and Resolution related updates
3353
- feat: add universal resolver [\#1866](https://github.com/hyperledger/aries-cloudagent-python/pull/1866) ([dbluhm](https://github.com/dbluhm))
3454
- fix: resolve dids following new endpoint rules [\#1863](https://github.com/hyperledger/aries-cloudagent-python/pull/1863) ([dbluhm](https://github.com/dbluhm))
3555
- fix: didx request cannot be accepted [\#1881](https://github.com/hyperledger/aries-cloudagent-python/pull/1881) ([rmnre](https://github.com/rmnre))
56+
- did method & key type registry [\#1986](https://github.com/hyperledger/aries-cloudagent-python/pull/1986) ([burdettadam](https://github.com/burdettadam))
57+
- Fix/endpoint attrib structure [\#1934](https://github.com/hyperledger/aries-cloudagent-python/pull/1934) ([cjhowland](https://github.com/cjhowland))
58+
- Simple did registry [\#1920](https://github.com/hyperledger/aries-cloudagent-python/pull/1920) ([burdettadam](https://github.com/burdettadam))
59+
- Use did:key for recipient keys [\#1886](https://github.com/hyperledger/aries-cloudagent-python/pull/1886) ([frostyfrog](https://github.com/frostyfrog))
60+
61+
- Hyperledger Indy Endorser/Author Transaction Handling
62+
- Fix/txn job setting [\#1994](https://github.com/hyperledger/aries-cloudagent-python/pull/1994) ([ianco](https://github.com/ianco))
63+
- chore: fix ACAPY\_PROMOTE-AUTHOR-DID flag [\#1978](https://github.com/hyperledger/aries-cloudagent-python/pull/1978) ([morrieinmaas](https://github.com/morrieinmaas))
64+
65+
- Endorser write DID transaction [\#1938](https://github.com/hyperledger/aries-cloudagent-python/pull/1938) ([ianco](https://github.com/ianco))
66+
- Endorser doc updates and some bug fixes [\#1926](https://github.com/hyperledger/aries-cloudagent-python/pull/1926) ([ianco](https://github.com/ianco))
67+
68+
- Startup Command Line / Environment / YAML Parameter Updates
69+
- Add seed command line parameter but use only if also an "allow insecure seed" parameter is set [\#1714](https://github.com/hyperledger/aries-cloudagent-python/pull/1714) ([DaevMithran](https://github.com/DaevMithran))
3670

3771
- Internal Aries framework data handling updates
3872
- fix: update RouteManager methods use to pass profile as parameter [\#1902](https://github.com/hyperledger/aries-cloudagent-python/pull/1902) ([chumbert](https://github.com/chumbert))
@@ -41,14 +75,35 @@ more work is still to be done on that before the final v1.0.0 release.
4175
- Enable manually triggering keylist updates during connection [\#1851](https://github.com/hyperledger/aries-cloudagent-python/pull/1851) ([dbluhm](https://github.com/dbluhm))
4276
- feat: make base wallet route access configurable [\#1836](https://github.com/hyperledger/aries-cloudagent-python/pull/1836) ([dbluhm](https://github.com/dbluhm))
4377
- feat: event and webhook on keylist update stored [\#1769](https://github.com/hyperledger/aries-cloudagent-python/pull/1769) ([dbluhm](https://github.com/dbluhm))
78+
- fix: Safely shutdown when root\_profile uninitialized [\#1960](https://github.com/hyperledger/aries-cloudagent-python/pull/1960) ([frostyfrog](https://github.com/frostyfrog))
79+
- feat: include connection ids in keylist update webhook [\#1914](https://github.com/hyperledger/aries-cloudagent-python/pull/1914) ([dbluhm](https://github.com/dbluhm))
80+
- fix: incorrect response schema for discover features [\#1912](https://github.com/hyperledger/aries-cloudagent-python/pull/1912) ([dbluhm](https://github.com/dbluhm))
81+
- Fix: SchemasInputDescriptorFilter: broken deserialization renders generated clients unusable [\#1894](https://github.com/hyperledger/aries-cloudagent-python/pull/1894) ([rmnre](https://github.com/rmnre))
82+
- fix: schema class can set Meta.unknown [\#1885](https://github.com/hyperledger/aries-cloudagent-python/pull/1885) ([dbluhm](https://github.com/dbluhm))
4483

4584
- Unit, Integration and Aries Agent Test Harness Test updates
4685
- Fixes a few AATH failures [\#1897](https://github.com/hyperledger/aries-cloudagent-python/pull/1897) ([ianco](https://github.com/ianco))
4786
- fix: warnings in tests from IndySdkProfile [\#1865](https://github.com/hyperledger/aries-cloudagent-python/pull/1865) ([dbluhm](https://github.com/dbluhm))
4887
- Unit test fixes for python 3.9 [\#1858](https://github.com/hyperledger/aries-cloudagent-python/pull/1858) ([andrewwhitehead](https://github.com/andrewwhitehead))
88+
- Update pip-audit.yml [\#1945](https://github.com/hyperledger/aries-cloudagent-python/pull/1945) ([ryjones](https://github.com/ryjones))
89+
- Update pip-audit.yml [\#1944](https://github.com/hyperledger/aries-cloudagent-python/pull/1944) ([ryjones](https://github.com/ryjones))
90+
91+
- Dependency Updates
92+
- feat: update pynacl version from 1.4.0 to 1.50 [\#1981](https://github.com/hyperledger/aries-cloudagent-python/pull/1981) ([morrieinmaas](https://github.com/morrieinmaas))
93+
- Fix: web.py dependency - integration tests & demos [\#1973](https://github.com/hyperledger/aries-cloudagent-python/pull/1973) ([shaangill025](https://github.com/shaangill025))
94+
- chore: update pydid [\#1915](https://github.com/hyperledger/aries-cloudagent-python/pull/1915) ([dbluhm](https://github.com/dbluhm))
95+
96+
- Demo and Documentation Updates
97+
- Fixes to acme exercise code [\#1990](https://github.com/hyperledger/aries-cloudagent-python/pull/1990) ([ianco](https://github.com/ianco))
98+
- Fixed bug in run\_demo script [\#1982](https://github.com/hyperledger/aries-cloudagent-python/pull/1982) ([pasquale95](https://github.com/pasquale95))
99+
- Transaction Author with Endorser demo [\#1975](https://github.com/hyperledger/aries-cloudagent-python/pull/1975) ([ianco](https://github.com/ianco))
100+
- Redis Plugins \[redis\_cache & redis\_queue\] related updates [\#1937](https://github.com/hyperledger/aries-cloudagent-python/pull/1937) ([shaangill025](https://github.com/shaangill025))
49101

50102
- Release management pull requests
51103
- Release 1.0.0-rc0 [\#1904](https://github.com/hyperledger/aries-cloudagent-python/pull/1904) ([swcurran](https://github.com/swcurran))
104+
- Add 0.7.5 patch Changelog entry to main branch Changelog [\#1996](https://github.com/hyperledger/aries-cloudagent-python/pull/1996) ([swcurran](https://github.com/swcurran))
105+
- Release 1.0.0-rc1 [\#2005](https://github.com/hyperledger/aries-cloudagent-python/pull/2005) ([swcurran](https://github.com/swcurran))
106+
52107

53108
# 0.7.5
54109

aries_cloudagent/admin/server.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,7 @@ async def check_multitenant_authorization(request: web.Request, handler):
370370
and not is_server_path
371371
and not is_unprotected_path(path)
372372
and not base_limited_access_path
373+
and not (request.method == "OPTIONS") # CORS fix
373374
):
374375
raise web.HTTPUnauthorized()
375376

aries_cloudagent/config/argparse.py

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ def create_argument_parser(*, prog: str = None):
7474

7575

7676
def load_argument_groups(parser: ArgumentParser, *groups: Type[ArgumentGroup]):
77-
"""Log a set of argument groups into a parser.
77+
"""
78+
Log a set of argument groups into a parser.
7879
7980
Returns:
8081
A callable to convert loaded arguments into a settings dictionary
@@ -872,32 +873,56 @@ def get_settings(self, args: Namespace) -> dict:
872873
if args.no_ledger:
873874
settings["ledger.disabled"] = True
874875
else:
875-
configured = False
876+
single_configured = False
877+
multi_configured = False
878+
update_pool_name = False
876879
if args.genesis_url:
877880
settings["ledger.genesis_url"] = args.genesis_url
878-
configured = True
881+
single_configured = True
879882
elif args.genesis_file:
880883
settings["ledger.genesis_file"] = args.genesis_file
881-
configured = True
884+
single_configured = True
882885
elif args.genesis_transactions:
883886
settings["ledger.genesis_transactions"] = args.genesis_transactions
884-
configured = True
887+
single_configured = True
885888
if args.genesis_transactions_list:
886889
with open(args.genesis_transactions_list, "r") as stream:
887890
txn_config_list = yaml.safe_load(stream)
888891
ledger_config_list = []
889892
for txn_config in txn_config_list:
890893
ledger_config_list.append(txn_config)
894+
if "is_write" in txn_config and txn_config["is_write"]:
895+
if "genesis_url" in txn_config:
896+
settings["ledger.genesis_url"] = txn_config[
897+
"genesis_url"
898+
]
899+
elif "genesis_file" in txn_config:
900+
settings["ledger.genesis_file"] = txn_config[
901+
"genesis_file"
902+
]
903+
elif "genesis_transactions" in txn_config:
904+
settings["ledger.genesis_transactions"] = txn_config[
905+
"genesis_transactions"
906+
]
907+
else:
908+
raise ArgsParseError(
909+
"No genesis information provided for write ledger"
910+
)
911+
if "id" in txn_config:
912+
settings["ledger.pool_name"] = txn_config["id"]
913+
update_pool_name = True
891914
settings["ledger.ledger_config_list"] = ledger_config_list
892-
configured = True
893-
if not configured:
915+
multi_configured = True
916+
if not (single_configured or multi_configured):
894917
raise ArgsParseError(
895918
"One of --genesis-url --genesis-file, --genesis-transactions "
896919
"or --genesis-transactions-list must be specified (unless "
897920
"--no-ledger is specified to explicitly configure aca-py to"
898921
" run with no ledger)."
899922
)
900-
if args.ledger_pool_name:
923+
if single_configured and multi_configured:
924+
raise ArgsParseError("Cannot configure both single- and multi-ledger.")
925+
if args.ledger_pool_name and not update_pool_name:
901926
settings["ledger.pool_name"] = args.ledger_pool_name
902927
if args.ledger_keepalive:
903928
settings["ledger.keepalive"] = args.ledger_keepalive

aries_cloudagent/core/conductor.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from ..config.wallet import wallet_config
2929
from ..core.profile import Profile
3030
from ..indy.verifier import IndyVerifier
31-
from ..ledger.base import BaseLedger
31+
3232
from ..ledger.error import LedgerConfigError, LedgerTransactionError
3333
from ..ledger.multiple_ledger.base_manager import (
3434
BaseMultipleLedgerManager,
@@ -144,7 +144,6 @@ async def setup(self):
144144
self.root_profile.BACKEND_NAME == "askar"
145145
and ledger.BACKEND_NAME == "indy-vdr"
146146
):
147-
context.injector.bind_instance(BaseLedger, ledger)
148147
context.injector.bind_provider(
149148
IndyVerifier,
150149
ClassProvider(
@@ -156,7 +155,6 @@ async def setup(self):
156155
self.root_profile.BACKEND_NAME == "indy"
157156
and ledger.BACKEND_NAME == "indy"
158157
):
159-
context.injector.bind_instance(BaseLedger, ledger)
160158
context.injector.bind_provider(
161159
IndyVerifier,
162160
ClassProvider(

aries_cloudagent/indy/models/cred_request.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class Meta:
4444
unknown = EXCLUDE
4545

4646
prover_did = fields.Str(
47-
requred=True,
47+
required=True,
4848
description="Prover DID",
4949
**INDY_DID,
5050
)

aries_cloudagent/protocols/routing/v1_0/manager.py

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""Routing manager classes for tracking and inspecting routing records."""
22

3+
import asyncio
4+
import logging
35
from typing import Coroutine, Sequence
46

57
from ....core.error import BaseError
@@ -16,6 +18,12 @@
1618
from .models.route_updated import RouteUpdated
1719

1820

21+
LOGGER = logging.getLogger(__name__)
22+
23+
RECIP_ROUTE_PAUSE = 0.1
24+
RECIP_ROUTE_RETRY = 10
25+
26+
1927
class RoutingManagerError(BaseError):
2028
"""Generic routing error."""
2129

@@ -54,21 +62,30 @@ async def get_recipient(self, recip_verkey: str) -> RouteRecord:
5462
if not recip_verkey:
5563
raise RoutingManagerError("Must pass non-empty recip_verkey")
5664

57-
try:
58-
async with self._profile.session() as session:
59-
record = await RouteRecord.retrieve_by_recipient_key(
60-
session, recip_verkey
65+
i = 0
66+
record = None
67+
while not record:
68+
try:
69+
LOGGER.info(">>> fetching routing record for verkey: " + recip_verkey)
70+
async with self._profile.session() as session:
71+
record = await RouteRecord.retrieve_by_recipient_key(
72+
session, recip_verkey
73+
)
74+
LOGGER.info(">>> FOUND routing record for verkey: " + recip_verkey)
75+
return record
76+
except StorageDuplicateError:
77+
LOGGER.info(">>> DUPLICATE routing record for verkey: " + recip_verkey)
78+
raise RouteNotFoundError(
79+
f"More than one route record found with recipient key: {recip_verkey}"
6180
)
62-
except StorageDuplicateError:
63-
raise RouteNotFoundError(
64-
f"More than one route record found with recipient key: {recip_verkey}"
65-
)
66-
except StorageNotFoundError:
67-
raise RouteNotFoundError(
68-
f"No route found with recipient key: {recip_verkey}"
69-
)
70-
71-
return record
81+
except StorageNotFoundError:
82+
LOGGER.info(">>> NOT FOUND routing record for verkey: " + recip_verkey)
83+
i += 1
84+
if i > RECIP_ROUTE_RETRY:
85+
raise RouteNotFoundError(
86+
f"No route found with recipient key: {recip_verkey}"
87+
)
88+
await asyncio.sleep(RECIP_ROUTE_PAUSE)
7289

7390
async def get_routes(
7491
self, client_connection_id: str = None, tag_filter: dict = None
@@ -136,13 +153,15 @@ async def create_route_record(
136153
)
137154
if not recipient_key:
138155
raise RoutingManagerError("Missing recipient_key")
156+
LOGGER.info(">>> creating routing record for verkey: " + recipient_key)
139157
route = RouteRecord(
140158
connection_id=client_connection_id,
141159
wallet_id=internal_wallet_id,
142160
recipient_key=recipient_key,
143161
)
144162
async with self._profile.session() as session:
145163
await route.save(session, reason="Created new route")
164+
LOGGER.info(">>> CREATED routing record for verkey: " + recipient_key)
146165
return route
147166

148167
async def update_routes(

0 commit comments

Comments
 (0)