From 10c2957e2e2f0a620317cb586848625ba882eff6 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Mon, 21 Dec 2020 12:57:24 +0530 Subject: [PATCH 001/243] Initial commit for Endorsement Protocol Signed-off-by: Harsh Multani --- .../transaction_role_to_send_handler.py | 37 ++ .../protocols/connections/v1_0/manager.py | 55 +++ .../connections/v1_0/message_types.py | 4 + .../v1_0/messages/transaction_role_to_send.py | 56 +++ .../protocols/connections/v1_0/routes.py | 58 +++ .../connections/v1_0/transaction_roles.py | 10 + .../protocols/endorse_transaction/__init__.py | 0 .../endorse_transaction/definition.py | 10 + .../endorse_transaction/v1_0/__init__.py | 0 .../v1_0/handlers/__init__.py | 0 .../endorsed_transaction_response_handler.py | 34 ++ .../refused_transaction_response_handler.py | 34 ++ .../handlers/transaction_cancel_handler.py | 32 ++ .../handlers/transaction_request_handler.py | 32 ++ .../handlers/transaction_resend_handler.py | 32 ++ .../endorse_transaction/v1_0/manager.py | 440 ++++++++++++++++++ .../endorse_transaction/v1_0/message_types.py | 36 ++ .../v1_0/messages/__init__.py | 0 .../v1_0/messages/cancel_transaction.py | 60 +++ .../messages/endorsed_transaction_response.py | 96 ++++ .../v1_0/messages/messages_attach.py | 108 +++++ .../messages/refused_transaction_response.py | 92 ++++ .../v1_0/messages/transaction_request.py | 107 +++++ .../v1_0/messages/transaction_resend.py | 60 +++ .../v1_0/models/__init__.py | 0 .../v1_0/models/transaction_record.py | 208 +++++++++ .../endorse_transaction/v1_0/routes.py | 401 ++++++++++++++++ 27 files changed, 2002 insertions(+) create mode 100644 aries_cloudagent/protocols/connections/v1_0/handlers/transaction_role_to_send_handler.py create mode 100644 aries_cloudagent/protocols/connections/v1_0/messages/transaction_role_to_send.py create mode 100644 aries_cloudagent/protocols/connections/v1_0/transaction_roles.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/__init__.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/definition.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/__init__.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/__init__.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/message_types.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/__init__.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/cancel_transaction.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/endorsed_transaction_response.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/messages_attach.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/refused_transaction_response.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_request.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_resend.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/models/__init__.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py diff --git a/aries_cloudagent/protocols/connections/v1_0/handlers/transaction_role_to_send_handler.py b/aries_cloudagent/protocols/connections/v1_0/handlers/transaction_role_to_send_handler.py new file mode 100644 index 0000000000..c7f7ab4bce --- /dev/null +++ b/aries_cloudagent/protocols/connections/v1_0/handlers/transaction_role_to_send_handler.py @@ -0,0 +1,37 @@ +"""Transaction Role to send handler.""" + +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + RequestContext, +) + +from ..manager import ConnectionManager, ConnectionManagerError +from ..messages.transaction_role_to_send import TransactionRoleToSend + + +class TransactionRoleToSendHandler(BaseHandler): + """Handler class for sending transaction roles.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Handle transaction roles. + + Args: + context: Request context + responder: Responder callback + """ + + self._logger.debug( + f"TransactionRoleToSendHandler called with context {context}" + ) + assert isinstance(context.message, TransactionRoleToSend) + + session = await context.session() + mgr = ConnectionManager(session) + try: + await mgr.set_transaction_their_role( + context.message, context.message_receipt + ) + except ConnectionManagerError: + self._logger.exception("Error receiving transaction roles") diff --git a/aries_cloudagent/protocols/connections/v1_0/manager.py b/aries_cloudagent/protocols/connections/v1_0/manager.py index 1495f33c79..5862926bf6 100644 --- a/aries_cloudagent/protocols/connections/v1_0/manager.py +++ b/aries_cloudagent/protocols/connections/v1_0/manager.py @@ -2,6 +2,7 @@ import logging from typing import Coroutine, Sequence, Tuple +from aiohttp import web from aries_cloudagent.protocols.coordinate_mediation.v1_0.manager import ( MediationManager, @@ -30,6 +31,7 @@ from .messages.connection_invitation import ConnectionInvitation from .messages.connection_request import ConnectionRequest from .messages.connection_response import ConnectionResponse +from .messages.transaction_role_to_send import TransactionRoleToSend from .messages.problem_report import ProblemReportReason from .models.connection_detail import ConnectionDetail @@ -1311,3 +1313,56 @@ async def update_inbound( if conn_info.verkey == recip_verkey: connection.routing_state = routing_state await connection.save(self._session) + + async def set_transaction_my_role( + self, record: ConnRecord, transaction_my_role: str + ): + """ + Set transaction_my_role. + + Args: + record: The connection record in which to set transaction roles + transaction_my_role: My transaction role + + Returns: + The transaction role that is send to other agent + + """ + + value = await record.metadata_get(self._session, "transaction_roles") + + if value: + value["transaction_my_role"] = transaction_my_role + else: + value = {"transaction_my_role": transaction_my_role} + await record.metadata_set(self._session, key="transaction_roles", value=value) + + tx_role_to_send = TransactionRoleToSend(role=transaction_my_role) + return tx_role_to_send + + async def set_transaction_their_role( + self, tx_role_received: TransactionRoleToSend, receipt: MessageReceipt + ): + """ + Set transaction_their_role. + + Args: + tx_role_received: The transaction role that is received from the other agent + receipt: The Message Receipt Object + """ + + try: + connection = await ConnRecord.retrieve_by_did( + self._session, receipt.sender_did, receipt.recipient_did + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + value = await connection.metadata_get(self._session, "transaction_roles") + if value: + value["transaction_their_role"] = tx_role_received.role + else: + value = {"transaction_their_role": tx_role_received.role} + await connection.metadata_set( + self._session, key="transaction_roles", value=value + ) diff --git a/aries_cloudagent/protocols/connections/v1_0/message_types.py b/aries_cloudagent/protocols/connections/v1_0/message_types.py index 7278dec31d..8ec515472b 100644 --- a/aries_cloudagent/protocols/connections/v1_0/message_types.py +++ b/aries_cloudagent/protocols/connections/v1_0/message_types.py @@ -11,6 +11,7 @@ CONNECTION_INVITATION = "connections/1.0/invitation" CONNECTION_REQUEST = "connections/1.0/request" CONNECTION_RESPONSE = "connections/1.0/response" +TRANSACTION_ROLE_TO_SEND = "connections/1.0/transaction_my_role" PROBLEM_REPORT = "connections/1.0/problem_report" PROTOCOL_PACKAGE = "aries_cloudagent.protocols.connections.v1_0" @@ -26,6 +27,9 @@ CONNECTION_RESPONSE: ( f"{PROTOCOL_PACKAGE}.messages.connection_response.ConnectionResponse" ), + TRANSACTION_ROLE_TO_SEND: ( + f"{PROTOCOL_PACKAGE}.messages.transaction_role_to_send.TransactionRoleToSend" + ), PROBLEM_REPORT: f"{PROTOCOL_PACKAGE}.messages.problem_report.ProblemReport", } ) diff --git a/aries_cloudagent/protocols/connections/v1_0/messages/transaction_role_to_send.py b/aries_cloudagent/protocols/connections/v1_0/messages/transaction_role_to_send.py new file mode 100644 index 0000000000..40712dfc8a --- /dev/null +++ b/aries_cloudagent/protocols/connections/v1_0/messages/transaction_role_to_send.py @@ -0,0 +1,56 @@ +"""Represents a Transaction role to send message.""" + +from marshmallow import EXCLUDE, fields + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema + +from ..message_types import TRANSACTION_ROLE_TO_SEND, PROTOCOL_PACKAGE + +HANDLER_CLASS = ( + f"{PROTOCOL_PACKAGE}.handlers" + ".transaction_role_to_send_handler.TransactionRoleToSendHandler" +) + + +class TransactionRoleToSend(AgentMessage): + """Class representing a transaction role to send.""" + + class Meta: + """Metadata for a TransactionRoleToSend.""" + + handler_class = HANDLER_CLASS + message_type = TRANSACTION_ROLE_TO_SEND + schema_class = "TransactionRoleToSendSchema" + + def __init__( + self, + *, + role: str = None, + **kwargs, + ): + """ + Initialize transaction role to send. + + Args: + role: The role that needs to be send + + """ + + super().__init__(**kwargs) + self.role = role + + +class TransactionRoleToSendSchema(AgentMessageSchema): + """Transaction Role to send schema class.""" + + class Meta: + """Metadata for a TransactionRoleToSendSchema.""" + + model_class = TransactionRoleToSend + unknown = EXCLUDE + + role = fields.Str( + required=True, + description="Transaction Role that is sent to the other agent", + example="TRANSACTION_AUTHOR", + ) diff --git a/aries_cloudagent/protocols/connections/v1_0/routes.py b/aries_cloudagent/protocols/connections/v1_0/routes.py index 8826e19b5f..54e126afcd 100644 --- a/aries_cloudagent/protocols/connections/v1_0/routes.py +++ b/aries_cloudagent/protocols/connections/v1_0/routes.py @@ -33,6 +33,8 @@ ConnectionInvitationSchema, ) +from .transaction_roles import TransactionRole + class ConnectionModuleResponseSchema(OpenAPISchema): """Response schema for connection module.""" @@ -272,6 +274,18 @@ class ConnIdRefIdMatchInfoSchema(OpenAPISchema): ) +class AssignTransactionRolesSchema(OpenAPISchema): + """Assign transaction related roles to connection record.""" + + transaction_my_role = fields.Str( + description="Transaction related roles", + required=False, + validate=validate.OneOf( + [r.name for r in TransactionRole if isinstance(r.value[0], int)] + ["reset"] + ), + ) + + def connection_sort_key(conn): """Get the sorting key for a particular connection.""" @@ -710,6 +724,47 @@ async def connections_create_static(request: web.BaseRequest): return web.json_response(response) +@docs( + tags=["connection"], + summary="Set transaction roles", +) +@querystring_schema(AssignTransactionRolesSchema()) +@match_info_schema(ConnIdMatchInfoSchema()) +@response_schema(ConnRecordSchema(), 200, description="") +async def set_transaction_roles(request: web.BaseRequest): + """ + Request handler for assigning transaction roles. + + Args: + request: aiohttp request object + + Returns: + The assigned transaction roles + + """ + + context: AdminRequestContext = request["context"] + outbound_handler = request.app["outbound_message_router"] + connection_id = request.match_info["conn_id"] + transaction_my_role = request.query.get("transaction_my_role") + session = await context.session() + + try: + record = await ConnRecord.retrieve_by_id(session, connection_id) + connection_mgr = ConnectionManager(session) + tx_role_to_send = await connection_mgr.set_transaction_my_role( + record=record, transaction_my_role=transaction_my_role + ) + roles = await record.metadata_get(session, "transaction_roles") + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + except BaseModelError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + await outbound_handler(tx_role_to_send, connection_id=connection_id) + return web.json_response(roles) + + async def register(app: web.Application): """Register routes.""" @@ -737,6 +792,9 @@ async def register(app: web.Application): "/connections/{conn_id}/establish-inbound/{ref_id}", connections_establish_inbound, ), + web.post( + "/connections/{conn_id}/set-transaction-roles", set_transaction_roles + ), web.delete("/connections/{conn_id}", connections_remove), ] ) diff --git a/aries_cloudagent/protocols/connections/v1_0/transaction_roles.py b/aries_cloudagent/protocols/connections/v1_0/transaction_roles.py new file mode 100644 index 0000000000..56703b4e96 --- /dev/null +++ b/aries_cloudagent/protocols/connections/v1_0/transaction_roles.py @@ -0,0 +1,10 @@ +"""Class to manage roles in Connection Record.""" + +from enum import Enum + + +class TransactionRole(Enum): + """Represents roles in Connection Record.""" + + TRANSACTION_AUTHOR = (1,) + TRANSACTION_ENDORSER = (2,) diff --git a/aries_cloudagent/protocols/endorse_transaction/__init__.py b/aries_cloudagent/protocols/endorse_transaction/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/endorse_transaction/definition.py b/aries_cloudagent/protocols/endorse_transaction/definition.py new file mode 100644 index 0000000000..62bddef6f5 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/definition.py @@ -0,0 +1,10 @@ +"""Version definitions for this protocol.""" + +versions = [ + { + "major_version": 1, + "minimum_minor_version": 0, + "current_minor_version": 0, + "path": "v1_0", + } +] diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/__init__.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/__init__.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py new file mode 100644 index 0000000000..e3df8ced04 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py @@ -0,0 +1,34 @@ +"""Endorsed transaction response handler.""" + +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + RequestContext, +) + +from ..manager import TransactionManager, TransactionManagerError +from ..messages.endorsed_transaction_response import EndorsedTransactionResponse + + +class EndorsedTransactionResponseHandler(BaseHandler): + """Handler class for Endorsed transaction response.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Handle endorsed transaction response. + + Args: + context: Request context + responder: Responder callback + """ + + self._logger.debug( + f"EndorsedTransactionResponseHandler called with context {context}" + ) + assert isinstance(context.message, EndorsedTransactionResponse) + + mgr = TransactionManager(context, context.profile) + try: + await mgr.receive_endorse_response(context.message) + except TransactionManagerError: + self._logger.exception("Error receiving endorsed transaction response") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py new file mode 100644 index 0000000000..e21022bd4b --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py @@ -0,0 +1,34 @@ +"""Refused transaction response handler.""" + +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + RequestContext, +) + +from ..manager import TransactionManager, TransactionManagerError +from ..messages.refused_transaction_response import RefusedTransactionResponse + + +class RefusedTransactionResponseHandler(BaseHandler): + """Handler class for Refused transaction response.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Handle refused transaction response. + + Args: + context: Request context + responder: Responder callback + """ + + self._logger.debug( + f"RefusedTransactionResponseHandler called with context {context}" + ) + assert isinstance(context.message, RefusedTransactionResponse) + + mgr = TransactionManager(context, context.profile) + try: + await mgr.receive_refuse_response(context.message) + except TransactionManagerError: + self._logger.exception("Error receiving refused transaction response") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py new file mode 100644 index 0000000000..26ce58362c --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py @@ -0,0 +1,32 @@ +"""Cancel transaction request handler.""" + +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + RequestContext, +) + +from ..manager import TransactionManager, TransactionManagerError +from ..messages.cancel_transaction import CancelTransaction + + +class TransactionCancelHandler(BaseHandler): + """Handler class for Cancel transaction request.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Handle cancel transaction request. + + Args: + context: Request context + responder: Responder callback + """ + + self._logger.debug(f"TransactionCancelHandler called with context {context}") + assert isinstance(context.message, CancelTransaction) + + mgr = TransactionManager(context, context.profile) + try: + await mgr.receive_cancel_transaction(context.message) + except TransactionManagerError: + self._logger.exception("Error receiving cancel transaction request") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py new file mode 100644 index 0000000000..ca5eb4d80f --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py @@ -0,0 +1,32 @@ +"""Transaction request handler.""" + +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + RequestContext, +) + +from ..manager import TransactionManager, TransactionManagerError +from ..messages.transaction_request import TransactionRequest + + +class TransactionRequestHandler(BaseHandler): + """Handler class for transaction request.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Handle transaction request. + + Args: + context: Request context + responder: Responder callback + """ + + self._logger.debug(f"TransactionRequestHandler called with context {context}") + assert isinstance(context.message, TransactionRequest) + + mgr = TransactionManager(context, context.profile) + try: + await mgr.receive_request(context.message) + except TransactionManagerError: + self._logger.exception("Error receiving transaction request") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py new file mode 100644 index 0000000000..1837818b4e --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py @@ -0,0 +1,32 @@ +"""Transaction resend handler.""" + +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + RequestContext, +) + +from ..manager import TransactionManager, TransactionManagerError +from ..messages.transaction_resend import TransactionResend + + +class TransactionResendHandler(BaseHandler): + """Handler class for transaction resend.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Handle transaction resend. + + Args: + context: Request context + responder: Responder callback + """ + + self._logger.debug(f"TransactionResendHandler called with context {context}") + assert isinstance(context.message, TransactionResend) + + mgr = TransactionManager(context, context.profile) + try: + await mgr.receive_transaction_resend(context.message) + except TransactionManagerError: + self._logger.exception("Error receiving resend transaction request") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py new file mode 100644 index 0000000000..ece8a2425e --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -0,0 +1,440 @@ +"""Class to manage transactions.""" + +from aiohttp import web +import logging + +from .models.transaction_record import TransactionRecord +from .messages.transaction_request import TransactionRequest +from .messages.endorsed_transaction_response import EndorsedTransactionResponse +from .messages.refused_transaction_response import RefusedTransactionResponse +from .messages.cancel_transaction import CancelTransaction +from .messages.transaction_resend import TransactionResend +from .messages.messages_attach import MessagesAttach + +from ....ledger.base import BaseLedger +from ....core.error import BaseError +from ....core.profile import Profile, ProfileSession +from ....ledger.error import LedgerError + +from ....wallet.base import BaseWallet + + +class TransactionManagerError(BaseError): + """Transaction error.""" + + +class TransactionManager: + """Class for managing transactions.""" + + def __init__(self, session: ProfileSession, profile: Profile): + """ + Initialize a TransactionManager. + + Args: + session: The Profile Session for this transaction manager + profile: The Profile for this transaction manager + """ + self._session = session + self._profile = profile + self._logger = logging.getLogger(__name__) + + @property + def session(self) -> ProfileSession: + """ + Accessor for the current Profile Session. + + Returns: + The Profile Session for this transaction manager + + """ + return self._session + + @property + def profile(self) -> Profile: + """ + Accessor for the current Profile. + + Returns: + The Profile for this transaction manager + + """ + return self._profile + + async def create_request( + self, + connection_id: str = None, + expires_time: str = None, + transaction_message: dict = {}, + ): + """ + Create a new Transaction Record and Request. + + Args: + connection_id: The connection id related to this transaction record + expires_time: The time till which the endorser should endorse the transaction + transaction_message: The actual data in the transaction payload + + Returns: + The transaction Record and transaction request + + """ + + wallet: BaseWallet = self.session.inject(BaseWallet, required=False) + if not wallet: + raise web.HTTPForbidden(reason="No wallet available") + author_did_info = await wallet.get_public_did() + if not author_did_info: + raise web.HTTPForbidden(reason="Public DID not found in wallet") + author_did = author_did_info.did + author_verkey = author_did_info.verkey + + ledger: BaseLedger = self.session.inject(BaseLedger, required=False) + + if not ledger: + reason = "No indy ledger available" + if not self.session.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) + + async with ledger: + try: + taa_info = await ledger.get_txn_author_agreement() + accepted = None + if taa_info["taa_required"]: + accept_record = await ledger.get_latest_txn_author_acceptance() + if accept_record: + accepted = { + "mechanism": accept_record["mechanism"], + "time": accept_record["time"], + } + taa_info["taa_accepted"] = accepted + except LedgerError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + if taa_info["taa_accepted"] is not None: + mechanism = taa_info["taa_accepted"]["mechanism"] + time = taa_info["taa_accepted"]["time"] + else: + mechanism = None + time = None + + if taa_info["taa_record"] is not None: + taaDigest = taa_info["taa_record"]["digest"] + else: + taaDigest = None + + messages_attach = MessagesAttach( + author_did=author_did, + author_verkey=author_verkey, + transaction_message=transaction_message, + mechanism=mechanism, + taaDigest=taaDigest, + time=time, + ) + messages_attach_dict = messages_attach.__dict__ + + transaction = TransactionRecord() + transaction._type = TransactionRecord.SIGNATURE_REQUEST + + signature_request = { + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "author_goal_code": TransactionRecord.WRITE_TRANSACTION, + } + transaction.signature_request.append(signature_request) + + timing = {"expires_time": "1597708800"} + transaction.timing = timing + + formats = { + "attach_id": messages_attach._id, + "format": TransactionRecord.FORMAT_VERSION, + } + transaction.formats.append(formats) + + transaction.messages_attach.append(messages_attach_dict) + transaction.connection_id = connection_id + transaction.state = "request" + + async with self._profile.session() as session: + await transaction.save(session, reason="Change it") + + transaction_request = TransactionRequest( + transaction_id=transaction._id, + signature_request=signature_request, + timing=timing, + messages_attach=messages_attach_dict, + ) + + return transaction, transaction_request + + async def receive_request(self, request: TransactionRequest): + """ + Receive a Transaction request. + + Args: + request: A Transaction Request + """ + + connection_id = self.session.connection_record.connection_id + transaction = TransactionRecord() + + transaction._type = TransactionRecord.SIGNATURE_REQUEST + transaction.signature_request.append(request.signature_request) + transaction.timing = request.timing + + format = { + "attach_id": request.messages_attach["_message_id"], + "format": TransactionRecord.FORMAT_VERSION, + } + transaction.formats.append(format) + + transaction.messages_attach.append(request.messages_attach) + transaction.thread_id = request.transaction_id + transaction.connection_id = connection_id + transaction.state = "request" + + async with self._profile.session() as session: + await transaction.save(session, reason="Change it") + + async def create_endorse_response( + self, transaction: TransactionRecord = None, state: str = None + ): + """ + Create a response to endorse a transaction. + + Args: + transaction: The transaction record which would be endorsed. + state: The state of the transaction record + + Returns: + The updated transaction and an endorsed response + + """ + + wallet: BaseWallet = self.session.inject(BaseWallet, required=False) + if not wallet: + raise web.HTTPForbidden(reason="No wallet available") + endorser_did_info = await wallet.get_public_did() + if not endorser_did_info: + raise web.HTTPForbidden(reason="Public DID not found in wallet") + endorser_did = endorser_did_info.did + endorser_verkey = endorser_did_info.verkey + + transaction.messages_attach[0]["data"]["json"]["endorser"] = endorser_did + + transaction._type = TransactionRecord.SIGNATURE_RESPONSE + + signature_response = { + "message_id": transaction.messages_attach[0]["_message_id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {endorser_did: endorser_verkey}, + } + transaction.signature_response.append(signature_response) + + transaction.state = state + + async with self._profile.session() as session: + await transaction.save(session, reason="Change it") + + endorsed_transaction_response = EndorsedTransactionResponse( + transaction_id=transaction.thread_id, + thread_id=transaction._id, + signature_response=signature_response, + state=state, + endorser_did=endorser_did, + ) + + return transaction, endorsed_transaction_response + + async def receive_endorse_response(self, response: EndorsedTransactionResponse): + """ + Update the transaction record with the endorsed response. + + Args: + response: The Endorsed Transaction Response + """ + + async with self._profile.session() as session: + transaction = await TransactionRecord.retrieve_by_id( + session, response.transaction_id + ) + + transaction._type = TransactionRecord.SIGNATURE_RESPONSE + transaction.state = response.state + + transaction.signature_response.append(response.signature_response) + + transaction.thread_id = response.thread_id + transaction.messages_attach[0]["data"]["json"][ + "endorser" + ] = response.endorser_did + + async with self._profile.session() as session: + await transaction.save(session, reason="Change it") + + async def create_refuse_response( + self, transaction: TransactionRecord = None, state: str = None + ): + """ + Create a response to refuse a transaction. + + Args: + transaction: The transaction record which would be refused + state: The state of the transaction record + + Returns: + The updated transaction and the refused response + + """ + + wallet: BaseWallet = self.session.inject(BaseWallet, required=False) + if not wallet: + raise web.HTTPForbidden(reason="No wallet available") + endorser_did_info = await wallet.get_public_did() + if not endorser_did_info: + raise web.HTTPForbidden(reason="Public DID not found in wallet") + endorser_did = endorser_did_info.did + + transaction.messages_attach[0]["data"]["json"]["endorser"] = endorser_did + + transaction._type = TransactionRecord.SIGNATURE_RESPONSE + + signature_response = { + "message_id": transaction.messages_attach[0]["_message_id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, + } + transaction.signature_response.append(signature_response) + + transaction.state = state + + async with self._profile.session() as session: + await transaction.save(session, reason="Change it") + + refused_transaction_response = RefusedTransactionResponse( + transaction_id=transaction.thread_id, + thread_id=transaction._id, + signature_response=signature_response, + state=state, + endorser_did=endorser_did, + ) + + return transaction, refused_transaction_response + + async def receive_refuse_response(self, response: RefusedTransactionResponse): + """ + Update the transaction record with a refused response. + + Args: + response: The refused transaction response + """ + + async with self._profile.session() as session: + transaction = await TransactionRecord.retrieve_by_id( + session, response.transaction_id + ) + + transaction._type = TransactionRecord.SIGNATURE_RESPONSE + transaction.state = response.state + + transaction.signature_response.append(response.signature_response) + transaction.thread_id = response.thread_id + transaction.messages_attach[0]["data"]["json"][ + "endorser" + ] = response.endorser_did + + async with self._profile.session() as session: + await transaction.save(session, reason="Change it") + + async def cancel_transaction( + self, transaction: TransactionRecord = None, state: str = None + ): + """ + Cancel a Transaction Request. + + Args: + transaction: The transaction record which would be cancelled + state: The state of the transaction record + + Returns: + The updated transaction and the cancelled transaction response + + """ + + transaction.state = state + async with self._profile.session() as session: + await transaction.save(session, reason="Change it") + + cancelled_transaction_response = CancelTransaction( + state="cancelled", thread_id=transaction._id + ) + + return transaction, cancelled_transaction_response + + async def receive_cancel_transaction(self, response: CancelTransaction): + """ + Update the transaction record to cancel a transaction request. + + Args: + response: The cancel transaction response + """ + + connection_id = self.session.connection_record.connection_id + async with self._profile.session() as session: + transaction = await TransactionRecord.retrieve_by_connection_and_thread( + session, connection_id, response.thread_id + ) + + transaction.state = response.state + async with self._profile.session() as session: + await transaction.save(session, reason="Change it") + + async def transaction_resend( + self, transaction: TransactionRecord = None, state: str = None + ): + """ + Resend a transaction request. + + Args: + transaction: The transaction record which needs to be resend + state: the state of the transaction record + + Returns: + The updated transaction and the resend response + + """ + + transaction.state = state + async with self._profile.session() as session: + await transaction.save(session, reason="Change it") + + resend_transaction_response = TransactionResend( + state="resend", thread_id=transaction._id + ) + + return transaction, resend_transaction_response + + async def receive_transaction_resend(self, response: TransactionResend): + """ + Update the transaction with a resend request. + + Args: + response: The Resend transaction response + """ + + connection_id = self.session.connection_record.connection_id + async with self._profile.session() as session: + transaction = await TransactionRecord.retrieve_by_connection_and_thread( + session, connection_id, response.thread_id + ) + + transaction.state = response.state + async with self._profile.session() as session: + await transaction.save(session, reason="Change it") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/message_types.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/message_types.py new file mode 100644 index 0000000000..2e1f2d7993 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/message_types.py @@ -0,0 +1,36 @@ +"""Message type identifiers for Transactions.""" + +from ...didcomm_prefix import DIDCommPrefix + +# Message types + +TRANSACTION_REQUEST = "transactions/1.0/request" +ENDORSED_TRANSACTION_RESPONSE = "transactions/1.0/endorse" +REFUSED_TRANSACTION_RESPONSE = "transactions/1.0/refuse" +CANCEL_TRANSACTION = "transactions/1.0/cancel" +TRANSACTION_RESEND = "transactions/1.0/resend" +ATTACHED_MESSAGE = "transactions/1.0/message" +PROTOCOL_PACKAGE = "aries_cloudagent.protocols.endorse_transaction.v1_0" + + +MESSAGE_TYPES = DIDCommPrefix.qualify_all( + { + TRANSACTION_REQUEST: ( + f"{PROTOCOL_PACKAGE}.messages.transaction_request.TransactionRequest" + ), + ENDORSED_TRANSACTION_RESPONSE: ( + f"{PROTOCOL_PACKAGE}.messages.endorsed_transaction_response" + ".EndorsedTransactionResponse" + ), + REFUSED_TRANSACTION_RESPONSE: ( + f"{PROTOCOL_PACKAGE}.messages.refused_transaction_response" + ".RefusedTransactionResponse" + ), + CANCEL_TRANSACTION: ( + f"{PROTOCOL_PACKAGE}.messages.cancel_transaction.CancelTransaction" + ), + TRANSACTION_RESEND: ( + f"{PROTOCOL_PACKAGE}.messages.transaction_resend.TransactionResend" + ), + } +) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/__init__.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/cancel_transaction.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/cancel_transaction.py new file mode 100644 index 0000000000..29d4fbe46d --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/cancel_transaction.py @@ -0,0 +1,60 @@ +"""Represents a cancel transaction message.""" + +from marshmallow import EXCLUDE, fields + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema +from .....messaging.valid import UUIDFour + +from ..message_types import CANCEL_TRANSACTION, PROTOCOL_PACKAGE + +HANDLER_CLASS = ( + f"{PROTOCOL_PACKAGE}.handlers" + ".transaction_cancel_handler.TransactionCancelHandler" +) + + +class CancelTransaction(AgentMessage): + """Class representing a cancel transaction message.""" + + class Meta: + """Metadata for a cancel transaction message.""" + + handler_class = HANDLER_CLASS + message_type = CANCEL_TRANSACTION + schema_class = "CancelTransactionSchema" + + def __init__( + self, + *, + state: str = None, + thread_id: str = None, + **kwargs, + ): + """ + Initialize a cancel transaction object. + + Args: + state: State of the transaction record + thread_id: Thread id of transaction record + """ + super().__init__(**kwargs) + + self.state = state + self.thread_id = thread_id + + +class CancelTransactionSchema(AgentMessageSchema): + """Cancel transaction schema class.""" + + class Meta: + """Cancel transaction schema metadata.""" + + model_class = CancelTransaction + unknown = EXCLUDE + + state = fields.Str( + required=False, + description="The State of the transaction Record", + example="cancelled", + ) + thread_id = fields.Str(required=False, example=UUIDFour.EXAMPLE) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/endorsed_transaction_response.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/endorsed_transaction_response.py new file mode 100644 index 0000000000..781054c411 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/endorsed_transaction_response.py @@ -0,0 +1,96 @@ +"""Represents an endorsed transaction message.""" + +from marshmallow import EXCLUDE, fields + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema +from .....messaging.valid import UUIDFour + +from ..message_types import ENDORSED_TRANSACTION_RESPONSE, PROTOCOL_PACKAGE + +HANDLER_CLASS = ( + f"{PROTOCOL_PACKAGE}.handlers" + ".endorsed_transaction_response_handler.EndorsedTransactionResponseHandler" +) + + +class EndorsedTransactionResponse(AgentMessage): + """Class representing an endorsed transaction response message.""" + + class Meta: + """Metadata for an endorsed transaction response message.""" + + handler_class = HANDLER_CLASS + message_type = ENDORSED_TRANSACTION_RESPONSE + schema_class = "EndorsedTransactionResponseSchema" + + def __init__( + self, + *, + transaction_id: str = None, + thread_id: str = None, + signature_response: dict = None, + state: str = None, + endorser_did: str = None, + **kwargs, + ): + """ + Initialize an endorsed transaction response object. + + Args: + transaction_id: The id of the transaction record + thread_id: The thread id of the transaction record + signature_response: The response created to endorse the transaction + state: The state of the transaction record + endorser_did: The public did of the endorser who endorses the transaction + """ + super().__init__(**kwargs) + + self.transaction_id = transaction_id + self.thread_id = thread_id + self.signature_response = signature_response + self.state = state + self.endorser_did = endorser_did + + +class EndorsedTransactionResponseSchema(AgentMessageSchema): + """Endorsed transaction response schema class.""" + + class Meta: + """Endorsed transaction response schema metadata.""" + + model_class = EndorsedTransactionResponse + unknown = EXCLUDE + + transaction_id = fields.Str( + required=False, + description="The transaction id of the agent who this response is sent to", + example=UUIDFour.EXAMPLE, + ) + thread_id = fields.Str( + required=False, + description="The transaction id of the agent who this response is sent from", + example=UUIDFour.EXAMPLE, + ) + signature_response = fields.Dict( + required=False, + example={ + "message_id": "143c458d-1b1c-40c7-ab85-4d16808ddf0a", + "context": "did:sov", + "method": "add-signature", + "signer_goal_code": "transaction.endorse", + "signature_type": "", + "signature": { + "4cU41vWW82ArfxJxHkzXPG": "2yAeV5ftuasWNgQwVYzeHeTuM7LwwNtPR3Zg9N4JiDgF" + }, + }, + ) + state = fields.Str( + required=False, + description="The State of the transaction Record", + example="endorsed", + ) + endorser_did = fields.Str( + required=False, + description="The public did of the endorser", + example="V4SGRU86Z58d6TV7PBUe6f", + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/messages_attach.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/messages_attach.py new file mode 100644 index 0000000000..4f4e6db8a6 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/messages_attach.py @@ -0,0 +1,108 @@ +"""Represents the attached message to be included in the transaction record.""" + +from marshmallow import EXCLUDE, fields + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema + +from ..message_types import ATTACHED_MESSAGE + + +SCHEMA_TYPE = "101" +PROTOCOL_VERSION = "2" + + +class MessagesAttach(AgentMessage): + """Class representing the attached message.""" + + class Meta: + """Metadata for attached message class.""" + + schema_class = "MessagesAttachSchema" + message_type = ATTACHED_MESSAGE + + def __init__( + self, + *, + author_did: str = None, + author_verkey: str = None, + endorser_did: str = None, + transaction_message: dict = {}, + mechanism: str = None, + taaDigest: str = None, + time: int = None, + **kwargs + ): + """ + Initialize the attached message object. + + Args: + author_did: The public did of the author who creates the transaction + author_verkey: The verkey of the author who creates the transaction + endorser_did: The public did of the endorser who endorses the transaction + transaction_message: The actual data present in the transaction payload + mechanism: The mechanism of the latest TAA present on the ledger + taaDigest: The digest of the latest TAA present on the ledger + time: The time when the latest TAA was set/enabled + """ + + super().__init__(**kwargs) + + self.mime_type = "application/json" + + self.data = { + "json": { + "endorser": endorser_did, + "identifier": author_did, + "operation": { + "data": transaction_message, + "type": SCHEMA_TYPE, + }, + "protocol_version": PROTOCOL_VERSION, + "reqId": 1597766666168851000, + "signatures": {author_did: author_verkey}, + "taaAcceptance": { + "mechanism": mechanism, + "taaDigest": taaDigest, + "time": time, + }, + } + } + + +class MessagesAttachSchema(AgentMessageSchema): + """Attached Message schema class.""" + + class Meta: + """Attached message schema metadata.""" + + model_class = MessagesAttach + unknown = EXCLUDE + + mime_type = fields.Str(required=True, example="application/json") + data = fields.Dict( + required=True, + example={ + "json": { + "endorser": "V4SGRU86Z58d6TV7PBUe6f", + "identifier": "LjgpST2rjsoxYegQDRm7EL", + "operation": { + "data": { + "attr_names": ["first_name", "last_name"], + "name": "test_schema", + "version": "2.1", + }, + "type": "101", + }, + "protocolVersion": 2, + "reqId": 1597766666168851000, + "signatures": { + "LjgpST2rjs": "4uq1mUATWKZArwyuPgjUEw5UBysWNbkf2SN6SqVwbfSqCfnbm1Vnfw" + }, + "taaAcceptance": { + "mechanism": "manual", + "taaDigest": "f50feca7bd4202c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62", + "time": 1597708800, + }, + } + }, + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/refused_transaction_response.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/refused_transaction_response.py new file mode 100644 index 0000000000..8874d3e839 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/refused_transaction_response.py @@ -0,0 +1,92 @@ +"""Represents a refused transaction message.""" + +from marshmallow import EXCLUDE, fields + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema +from .....messaging.valid import UUIDFour + +from ..message_types import REFUSED_TRANSACTION_RESPONSE, PROTOCOL_PACKAGE + +HANDLER_CLASS = ( + f"{PROTOCOL_PACKAGE}.handlers" + ".refused_transaction_response_handler.RefusedTransactionResponseHandler" +) + + +class RefusedTransactionResponse(AgentMessage): + """Class representing a refused transaction response message.""" + + class Meta: + """Metadata for a refused transaction response message.""" + + handler_class = HANDLER_CLASS + message_type = REFUSED_TRANSACTION_RESPONSE + schema_class = "RefusedTransactionResponseSchema" + + def __init__( + self, + *, + transaction_id: str = None, + thread_id: str = None, + signature_response: dict = None, + state: str = None, + endorser_did: str = None, + **kwargs, + ): + """ + Initialize a refused transaction response object. + + Args: + transaction_id: The id of the transaction record + thread_id: The thread id of the transaction record + signature_response: The response created to refuse the transaction + state: The state of the transaction record + endorser_did: The public did of the endorser who refuses the transaction + """ + super().__init__(**kwargs) + + self.transaction_id = transaction_id + self.thread_id = thread_id + self.signature_response = signature_response + self.state = state + self.endorser_did = endorser_did + + +class RefusedTransactionResponseSchema(AgentMessageSchema): + """Refused transaction response schema class.""" + + class Meta: + """Refused transaction response schema metadata.""" + + model_class = RefusedTransactionResponse + unknown = EXCLUDE + + transaction_id = fields.Str( + required=False, + description="The transaction id of the agent who this response is sent to", + example=UUIDFour.EXAMPLE, + ) + thread_id = fields.Str( + required=False, + description="The transaction id of the agent who this response is sent from", + example=UUIDFour.EXAMPLE, + ) + signature_response = fields.Dict( + required=False, + example={ + "message_id": "143c458d-1b1c-40c7-ab85-4d16808ddf0a", + "context": "did:sov", + "method": "add-signature", + "signer_goal_code": "transaction.refuse", + }, + ) + state = fields.Str( + required=False, + description="The State of the transaction Record", + example="refused", + ) + endorser_did = fields.Str( + required=False, + description="The public did of the endorser", + example="V4SGRU86Z58d6TV7PBUe6f", + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_request.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_request.py new file mode 100644 index 0000000000..74e59a745d --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_request.py @@ -0,0 +1,107 @@ +"""Represents a transaction request message.""" + +from marshmallow import EXCLUDE, fields + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema +from .....messaging.valid import UUIDFour + +from ..message_types import TRANSACTION_REQUEST, PROTOCOL_PACKAGE + + +HANDLER_CLASS = ( + f"{PROTOCOL_PACKAGE}.handlers" + ".transaction_request_handler.TransactionRequestHandler" +) + + +class TransactionRequest(AgentMessage): + """Class representing a transaction request message.""" + + class Meta: + """Metadata for a transaction request message.""" + + handler_class = HANDLER_CLASS + message_type = TRANSACTION_REQUEST + schema_class = "TransactionRequestSchema" + + def __init__( + self, + *, + transaction_id: str = None, + signature_request: dict = None, + timing: dict = None, + transaction_type: str = None, + messages_attach: dict = None, + **kwargs, + ): + """ + Initialize the transaction request object. + + Args: + transaction_id: The transaction id of the transaction record + signature_request: The signature that is requested + timing: The time till the endorser should endorse/refuse a transaction + transaction_type: The type of transaction + messages_attach: The attached message describing the actual transaction + """ + super().__init__(**kwargs) + self.transaction_id = transaction_id + self.signature_request = signature_request + self.timing = timing + self.transaction_type = transaction_type + self.messages_attach = messages_attach + + +class TransactionRequestSchema(AgentMessageSchema): + """Transaction request schema class.""" + + class Meta: + """Transaction request schema metadata.""" + + model_class = TransactionRequest + unknown = EXCLUDE + + transaction_id = fields.Str(required=False, example=UUIDFour.EXAMPLE) + signature_request = fields.Dict( + required=False, + example={ + "context": "did:sov", + "method": "add-signature", + "signature_type": "", + "signer_goal_code": "transaction.endorse", + "author_goal_code": "transaction.ledger.write", + }, + ) + timing = fields.Dict(required=False, example={"expires_time": "1597708800"}) + transaction_type = fields.Str(required=False, example="101") + messages_attach = fields.Dict( + required=False, + example={ + "@id": "143c458d-1b1c-40c7-ab85-4d16808ddf0a", + "mime-type": "application/json", + "data": { + "json": { + "endorser": "V4SGRU86Z58d6TV7PBUe6f", + "identifier": "LjgpST2rjsoxYegQDRm7EL", + "operation": { + "data": { + "attr_names": ["first_name", "last_name"], + "name": "test_schema", + "version": "2.1", + }, + "type": "101", + }, + "protocolVersion": 2, + "reqId": 1597766666168851000, + "signatures": { + "LjgpST2rjsox": "4uq1mUATKMn6Y9sTaGWyuPgjUEw5UBysWNbfSqCfnbm1Vnfw" + }, + "taaAcceptance": { + "mechanism": "manual", + "taaDigest": "f50feca75664270842bd4202c2d6f23e4c6a7e0fc2feb9f62", + "time": 1597708800, + }, + } + }, + }, + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_resend.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_resend.py new file mode 100644 index 0000000000..80ac0b5bc3 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_resend.py @@ -0,0 +1,60 @@ +"""Represents a transaction resend message.""" + +from marshmallow import EXCLUDE, fields + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema +from .....messaging.valid import UUIDFour + +from ..message_types import TRANSACTION_RESEND, PROTOCOL_PACKAGE + +HANDLER_CLASS = ( + f"{PROTOCOL_PACKAGE}.handlers" + ".transaction_resend_handler.TransactionResendHandler" +) + + +class TransactionResend(AgentMessage): + """Class representing a transaction resend message.""" + + class Meta: + """Metadata for a transaction resend message.""" + + handler_class = HANDLER_CLASS + message_type = TRANSACTION_RESEND + schema_class = "TransactionResendSchema" + + def __init__( + self, + *, + state: str = None, + thread_id: str = None, + **kwargs, + ): + """ + Initialize a transaction resend object. + + Args: + state: State of the transaction record + thread_id: Thread id of transaction record + """ + super().__init__(**kwargs) + + self.state = state + self.thread_id = thread_id + + +class TransactionResendSchema(AgentMessageSchema): + """Transaction resend schema class.""" + + class Meta: + """Transaction resend schema metadata.""" + + model_class = TransactionResend + unknown = EXCLUDE + + state = fields.Str( + required=False, + description="The State of the transaction Record", + example="resend", + ) + thread_id = fields.Str(required=False, example=UUIDFour.EXAMPLE) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/__init__.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py new file mode 100644 index 0000000000..e8d52b14db --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py @@ -0,0 +1,208 @@ +"""Handle transaction information interface.""" + +from marshmallow import fields + +from .....messaging.models.base_record import ( + BaseExchangeRecord, + BaseExchangeSchema, +) + +from .....messaging.valid import UUIDFour + +from .....core.profile import ProfileSession + + +class TransactionRecord(BaseExchangeRecord): + """Represents a single transaction record.""" + + class Meta: + """Transaction Record metadata.""" + + schema_class = "TransactionRecordSchema" + + RECORD_ID_NAME = "transaction_id" + CACHE_ENABLED = True + TAG_NAMES = {"state", "thread_id", "connection_id"} + RECORD_TYPE = "transaction" + STATE_INIT = "init" + + SIGNATURE_REQUEST = "http://didcomm.org/sign-attachment/%VER/signature-request" + + SIGNATURE_RESPONSE = "http://didcomm.org/sign-attachment/%VER/signature-response" + + SIGNATURE_TYPE = "" + + SIGNATURE_CONTEXT = "did:sov" + + ADD_SIGNATURE = "add-signature" + + ENDORSE_TRANSACTION = "transaction.endorse" + REFUSE_TRANSACTION = "transaction.refuse" + WRITE_TRANSACTION = "transaction.ledger.write" + + FORMAT_VERSION = "dif/endorse-transaction/request@v1.0" + + def __init__( + self, + *, + transaction_id: str = None, + _type: str = None, + comment: str = None, + signature_request: list = [], + signature_response: list = [], + timing: dict = {}, + formats: list = [], + messages_attach: list = [], + thread_id: str = None, + connection_id: str = None, + state: str = None, + **kwargs, + ): + """Initialize a new TransactionRecord.""" + + super().__init__(transaction_id, state or self.STATE_INIT, **kwargs) + self._type = _type + self.comment = comment + self.signature_request = signature_request + self.signature_response = signature_response + self.timing = timing + self.formats = formats + self.messages_attach = messages_attach + self.thread_id = thread_id + self.connection_id = connection_id + + @property + def record_value(self) -> dict: + """Accessor for the JSON record value generated for this transaction record.""" + return { + prop: getattr(self, prop) + for prop in ( + "comment", + "signature_request", + "signature_response", + "timing", + "formats", + "messages_attach", + "thread_id", + "connection_id", + "state", + ) + } + + @classmethod + async def retrieve_by_connection_and_thread( + cls, session: ProfileSession, connection_id: str, thread_id: str + ) -> "TransactionRecord": + """Retrieve a TransactionRecord by connection and thread ID.""" + cache_key = f"transaction_record_ctidx::{connection_id}::{thread_id}" + record_id = await cls.get_cached_key(session, cache_key) + if record_id: + record = await cls.retrieve_by_id(session, record_id) + else: + record = await cls.retrieve_by_tag_filter( + session, + {"thread_id": thread_id}, + {"connection_id": connection_id} if connection_id else None, + ) + await cls.set_cached_key(session, cache_key, record._id) + return record + + +class TransactionRecordSchema(BaseExchangeSchema): + """Schema to allow serialization/deserialization of transaction records.""" + + class Meta: + """TransactionRecordSchema metadata.""" + + model_class = "TransactionRecord" + + _id = fields.Str( + required=False, description="Transaction identifier", example=UUIDFour.EXAMPLE + ) + + _type = fields.Str( + required=False, + description="Transaction type", + example="101", + ) + + signature_request = fields.List( + fields.Dict( + example={ + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "author_goal_code": TransactionRecord.WRITE_TRANSACTION, + } + ), + required=False, + ) + + signature_response = fields.List( + fields.Dict( + example={ + "message_id": UUIDFour.EXAMPLE, + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, + } + ), + required=False, + ) + + timing = fields.Dict( + example={"expires_time": "2020-12-13T17:29:06+0000"}, required=False + ) + + formats = fields.List( + fields.Dict( + example={ + "attach_id": UUIDFour.EXAMPLE, + "format": TransactionRecord.FORMAT_VERSION, + } + ), + required=False, + ) + + messages_attach = fields.List( + fields.Dict( + example={ + "@id": "143c458d-1b1c-40c7-ab85-4d16808ddf0a", + "mime-type": "application/json", + "data": { + "json": { + "endorser": "V4SGRU86Z58d6TV7PBUe6f", + "identifier": "LjgpST2rjsoxYegQDRm7EL", + "operation": { + "data": { + "attr_names": ["first_name", "last_name"], + "name": "test_schema", + "version": "2.1", + }, + "type": "101", + }, + "protocolVersion": 2, + "reqId": 1597766666168851000, + "signatures": { + "LjgpST2rjsox": "4ATKMn6Y9sTgwqaGTm7py2c2M8x1EVDTWKZArwyuPgjU" + }, + "taaAcceptance": { + "mechanism": "manual", + "taaDigest": "f50fe2c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62", + "time": 1597708800, + }, + } + }, + } + ), + required=False, + ) + thread_id = fields.Str( + required=False, description="Thread Identifier", example=UUIDFour.EXAMPLE + ) + connection_id = fields.Str( + required=False, + description="The connection identifier for thie particular transaction record", + example=UUIDFour.EXAMPLE, + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py new file mode 100644 index 0000000000..51e98d1b27 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -0,0 +1,401 @@ +"""Endorse Transaction handling admin routes.""" + +from aiohttp import web +from aiohttp_apispec import ( + request_schema, + docs, + response_schema, + querystring_schema, + match_info_schema, +) +from marshmallow import fields + +from ....admin.request_context import AdminRequestContext +from ....utils.tracing import AdminAPIMessageTracingSchema +from .manager import TransactionManager +from .models.transaction_record import TransactionRecord, TransactionRecordSchema +from ....connections.models.conn_record import ConnRecord + +from ....messaging.models.openapi import OpenAPISchema +from ....messaging.valid import UUIDFour +from ....messaging.models.base import BaseModelError + +from ....storage.error import StorageError, StorageNotFoundError + + +class TransactionListSchema(OpenAPISchema): + """Result schema for transaction list.""" + + results = fields.List( + fields.Nested(TransactionRecordSchema()), + description="List of transaction records", + ) + + +class TransactionsListQueryStringSchema(OpenAPISchema): + """Parameters and validators for transactions list request query string.""" + + +class TranIdMatchInfoSchema(OpenAPISchema): + """Path parameters and validators for request taking transaction id.""" + + tran_id = fields.Str( + description="Transaction identifier", required=True, example=UUIDFour.EXAMPLE + ) + + +class CreateTransactionRecordSchema(AdminAPIMessageTracingSchema): + """Parameters and validators to create transaction request and record.""" + + conn_id = fields.Str( + description="Connection identifier", required=True, example=UUIDFour.EXAMPLE + ) + transaction_message = fields.Dict( + required=False, + example={ + "attr_names": ["first_name", "last_name"], + "name": "test_schema", + "version": "2.1", + }, + ) + + +@docs( + tags=["endorse-transaction"], + summary="Query transactions", +) +@querystring_schema(TransactionsListQueryStringSchema()) +@response_schema(TransactionListSchema(), 200) +async def transactions_list(request: web.BaseRequest): + """ + Request handler for searching transaction records. + + Args: + request: aiohttp request object + + Returns: + The transaction list response + + """ + + context: AdminRequestContext = request["context"] + + tag_filter = {} + post_filter = {} + + try: + async with context.session() as session: + records = await TransactionRecord.query( + session, tag_filter, post_filter_positive=post_filter, alt=True + ) + results = [record.serialize() for record in records] + except (StorageError, BaseModelError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + return web.json_response({"results": results}) + + +@docs(tags=["endorse-transaction"], summary="Fetch a single transaction record") +@match_info_schema(TranIdMatchInfoSchema()) +@response_schema(TransactionRecordSchema(), 200) +async def transactions_retrieve(request: web.BaseRequest): + """ + Request handler for fetching a single transaction record. + + Args: + request: aiohttp request object + + Returns: + The transaction record response + + """ + + context: AdminRequestContext = request["context"] + transaction_id = request.match_info["tran_id"] + + try: + async with context.session() as session: + record = await TransactionRecord.retrieve_by_id(session, transaction_id) + result = record.serialize() + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + return web.json_response(result) + + +@docs( + tags=["endorse-transaction"], + summary="For author to send a transaction request", +) +@request_schema(CreateTransactionRecordSchema()) +@response_schema(TransactionRecordSchema(), 200) +async def transaction_record_create(request: web.BaseRequest): + """ + Request handler for creating a new transaction record and request. + + Args: + request: aiohttp request object + + Returns: + The transaction record + + """ + + context: AdminRequestContext = request["context"] + outbound_handler = request.app["outbound_message_router"] + + body = await request.json() + + connection_id = body.get("conn_id") + transaction_message = body.get("transaction_message") + + try: + async with context.session() as session: + connection = await ConnRecord.retrieve_by_id(session, connection_id) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + session = await context.session() + transaction_mgr = TransactionManager(session, context.profile) + (transaction, transaction_request) = await transaction_mgr.create_request( + connection_id=connection_id, + transaction_message=transaction_message, + ) + + await outbound_handler(transaction_request, connection_id=connection.connection_id) + + return web.json_response(transaction.serialize()) + + +@docs( + tags=["endorse-transaction"], + summary="For Endorser to endorse a particular transaction record", +) +@match_info_schema(TranIdMatchInfoSchema()) +@response_schema(TransactionRecordSchema(), 200) +async def endorse_transaction_response(request: web.BaseRequest): + """ + Request handler for creating an endorsed transaction response. + + Args: + request: aiohttp request object + + Returns: + The updated transaction record details + + """ + + context: AdminRequestContext = request["context"] + outbound_handler = request.app["outbound_message_router"] + + transaction_id = request.match_info["tran_id"] + try: + async with context.session() as session: + transaction = await TransactionRecord.retrieve_by_id( + session, transaction_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + if transaction.state == "request" or transaction.state == "resend": + + session = await context.session() + transaction_mgr = TransactionManager(session, context.profile) + ( + transaction, + endorsed_transaction_response, + ) = await transaction_mgr.create_endorse_response( + transaction=transaction, state="endorsed" + ) + + await outbound_handler( + endorsed_transaction_response, connection_id=transaction.connection_id + ) + + return web.json_response(transaction.serialize()) + + else: + return web.json_response({"error": "You cannot endorse this transaction"}) + + +@docs( + tags=["endorse-transaction"], + summary="For Endorser to refuse a particular transaction record", +) +@match_info_schema(TranIdMatchInfoSchema()) +@response_schema(TransactionRecordSchema(), 200) +async def refuse_transaction_response(request: web.BaseRequest): + """ + Request handler for creating a refused transaction response. + + Args: + request: aiohttp request object + + Returns: + The updated transaction record details + + """ + + context: AdminRequestContext = request["context"] + outbound_handler = request.app["outbound_message_router"] + + transaction_id = request.match_info["tran_id"] + try: + async with context.session() as session: + transaction = await TransactionRecord.retrieve_by_id( + session, transaction_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + if transaction.state == "request" or transaction.state == "resend": + + session = await context.session() + transaction_mgr = TransactionManager(session, context.profile) + ( + transaction, + refused_transaction_response, + ) = await transaction_mgr.create_refuse_response( + transaction=transaction, state="refused" + ) + + await outbound_handler( + refused_transaction_response, connection_id=transaction.connection_id + ) + + return web.json_response(transaction.serialize()) + + else: + return web.json_response({"error": "You cannot refuse the transaction"}) + + +@docs( + tags=["endorse-transaction"], + summary="For Author to cancel a particular transaction request", +) +@match_info_schema(TranIdMatchInfoSchema()) +@response_schema(TransactionRecordSchema(), 200) +async def cancel_transaction(request: web.BaseRequest): + """ + Request handler for cancelling a Transaction request. + + Args: + request: aiohttp request object + + Returns: + The updated transaction record details + + """ + + context: AdminRequestContext = request["context"] + outbound_handler = request.app["outbound_message_router"] + + transaction_id = request.match_info["tran_id"] + try: + async with context.session() as session: + transaction = await TransactionRecord.retrieve_by_id( + session, transaction_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + if transaction.state != "endorsed" and transaction.state != "refused": + + session = await context.session() + transaction_mgr = TransactionManager(session, context.profile) + ( + transaction, + cancelled_transaction_response, + ) = await transaction_mgr.cancel_transaction( + transaction=transaction, state="cancelled" + ) + + await outbound_handler( + cancelled_transaction_response, connection_id=transaction.connection_id + ) + + return web.json_response(transaction.serialize()) + + else: + return web.json_response({"error": "This transaction cannot be cancelled"}) + + +@docs( + tags=["endorse-transaction"], + summary="For Author to resend a particular transaction request", +) +@match_info_schema(TranIdMatchInfoSchema()) +@response_schema(TransactionRecordSchema(), 200) +async def transaction_resend(request: web.BaseRequest): + """ + Request handler for resending a transaction request. + + Args: + request: aiohttp request object + + Returns: + The updated transaction record details + + """ + + context: AdminRequestContext = request["context"] + outbound_handler = request.app["outbound_message_router"] + + transaction_id = request.match_info["tran_id"] + try: + async with context.session() as session: + transaction = await TransactionRecord.retrieve_by_id( + session, transaction_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + if transaction.state != "endorsed": + + session = await context.session() + transaction_mgr = TransactionManager(session, context.profile) + ( + transaction, + resend_transaction_response, + ) = await transaction_mgr.transaction_resend( + transaction=transaction, state="resend" + ) + + await outbound_handler( + resend_transaction_response, connection_id=transaction.connection_id + ) + + return web.json_response(transaction.serialize()) + + else: + return web.json_response({"error": "You cannot resend an endorsed transaction"}) + + +async def register(app: web.Application): + """Register routes.""" + + app.add_routes( + [ + web.get("/transactions", transactions_list, allow_head=False), + web.get("/transactions/{tran_id}", transactions_retrieve, allow_head=False), + web.post("/transactions/create-request", transaction_record_create), + web.post("/transactions/{tran_id}/endorse", endorse_transaction_response), + web.post("/transactions/{tran_id}/refuse", refuse_transaction_response), + web.post("/transactions/{tran_id}/cancel", cancel_transaction), + web.post("/transaction/{tran_id}/resend", transaction_resend), + ] + ) + + +def post_process_routes(app: web.Application): + """Amend swagger API.""" + + # Add top-level tags description + if "tags" not in app._state["swagger_dict"]: + app._state["swagger_dict"]["tags"] = [] + app._state["swagger_dict"]["tags"].append( + { + "name": "endorse-transaction", + "description": "Endorse a Transaction", + } + ) From ec3c859e1e23c4f115c185d3836684aedb87bdf0 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Wed, 23 Dec 2020 14:27:44 +0530 Subject: [PATCH 002/243] Separated code for setting transaction jobs from connection api and into endorse_transaction api Signed-off-by: Harsh Multani --- .../transaction_role_to_send_handler.py | 37 --------- .../protocols/connections/v1_0/manager.py | 55 ------------- .../connections/v1_0/message_types.py | 4 - .../v1_0/messages/transaction_role_to_send.py | 56 ------------- .../protocols/connections/v1_0/routes.py | 58 -------------- .../connections/v1_0/transaction_roles.py | 10 --- .../transaction_job_to_send_handler.py | 35 ++++++++ .../endorse_transaction/v1_0/manager.py | 56 +++++++++++++ .../endorse_transaction/v1_0/message_types.py | 4 + .../v1_0/messages/transaction_job_to_send.py | 56 +++++++++++++ .../endorse_transaction/v1_0/routes.py | 79 +++++++++++++++++-- .../v1_0/transaction_jobs.py | 10 +++ 12 files changed, 233 insertions(+), 227 deletions(-) delete mode 100644 aries_cloudagent/protocols/connections/v1_0/handlers/transaction_role_to_send_handler.py delete mode 100644 aries_cloudagent/protocols/connections/v1_0/messages/transaction_role_to_send.py delete mode 100644 aries_cloudagent/protocols/connections/v1_0/transaction_roles.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_job_to_send.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/transaction_jobs.py diff --git a/aries_cloudagent/protocols/connections/v1_0/handlers/transaction_role_to_send_handler.py b/aries_cloudagent/protocols/connections/v1_0/handlers/transaction_role_to_send_handler.py deleted file mode 100644 index c7f7ab4bce..0000000000 --- a/aries_cloudagent/protocols/connections/v1_0/handlers/transaction_role_to_send_handler.py +++ /dev/null @@ -1,37 +0,0 @@ -"""Transaction Role to send handler.""" - -from .....messaging.base_handler import ( - BaseHandler, - BaseResponder, - RequestContext, -) - -from ..manager import ConnectionManager, ConnectionManagerError -from ..messages.transaction_role_to_send import TransactionRoleToSend - - -class TransactionRoleToSendHandler(BaseHandler): - """Handler class for sending transaction roles.""" - - async def handle(self, context: RequestContext, responder: BaseResponder): - """ - Handle transaction roles. - - Args: - context: Request context - responder: Responder callback - """ - - self._logger.debug( - f"TransactionRoleToSendHandler called with context {context}" - ) - assert isinstance(context.message, TransactionRoleToSend) - - session = await context.session() - mgr = ConnectionManager(session) - try: - await mgr.set_transaction_their_role( - context.message, context.message_receipt - ) - except ConnectionManagerError: - self._logger.exception("Error receiving transaction roles") diff --git a/aries_cloudagent/protocols/connections/v1_0/manager.py b/aries_cloudagent/protocols/connections/v1_0/manager.py index 7f7771449d..e718154f8e 100644 --- a/aries_cloudagent/protocols/connections/v1_0/manager.py +++ b/aries_cloudagent/protocols/connections/v1_0/manager.py @@ -2,7 +2,6 @@ import logging from typing import Coroutine, Sequence, Tuple -from aiohttp import web from aries_cloudagent.protocols.coordinate_mediation.v1_0.manager import ( MediationManager, @@ -32,7 +31,6 @@ from .messages.connection_invitation import ConnectionInvitation from .messages.connection_request import ConnectionRequest from .messages.connection_response import ConnectionResponse -from .messages.transaction_role_to_send import TransactionRoleToSend from .messages.problem_report import ProblemReportReason from .models.connection_detail import ConnectionDetail @@ -1356,56 +1354,3 @@ async def update_inbound( if conn_info.verkey == recip_verkey: connection.routing_state = routing_state await connection.save(self._session) - - async def set_transaction_my_role( - self, record: ConnRecord, transaction_my_role: str - ): - """ - Set transaction_my_role. - - Args: - record: The connection record in which to set transaction roles - transaction_my_role: My transaction role - - Returns: - The transaction role that is send to other agent - - """ - - value = await record.metadata_get(self._session, "transaction_roles") - - if value: - value["transaction_my_role"] = transaction_my_role - else: - value = {"transaction_my_role": transaction_my_role} - await record.metadata_set(self._session, key="transaction_roles", value=value) - - tx_role_to_send = TransactionRoleToSend(role=transaction_my_role) - return tx_role_to_send - - async def set_transaction_their_role( - self, tx_role_received: TransactionRoleToSend, receipt: MessageReceipt - ): - """ - Set transaction_their_role. - - Args: - tx_role_received: The transaction role that is received from the other agent - receipt: The Message Receipt Object - """ - - try: - connection = await ConnRecord.retrieve_by_did( - self._session, receipt.sender_did, receipt.recipient_did - ) - except StorageNotFoundError as err: - raise web.HTTPNotFound(reason=err.roll_up) from err - - value = await connection.metadata_get(self._session, "transaction_roles") - if value: - value["transaction_their_role"] = tx_role_received.role - else: - value = {"transaction_their_role": tx_role_received.role} - await connection.metadata_set( - self._session, key="transaction_roles", value=value - ) diff --git a/aries_cloudagent/protocols/connections/v1_0/message_types.py b/aries_cloudagent/protocols/connections/v1_0/message_types.py index 8ec515472b..7278dec31d 100644 --- a/aries_cloudagent/protocols/connections/v1_0/message_types.py +++ b/aries_cloudagent/protocols/connections/v1_0/message_types.py @@ -11,7 +11,6 @@ CONNECTION_INVITATION = "connections/1.0/invitation" CONNECTION_REQUEST = "connections/1.0/request" CONNECTION_RESPONSE = "connections/1.0/response" -TRANSACTION_ROLE_TO_SEND = "connections/1.0/transaction_my_role" PROBLEM_REPORT = "connections/1.0/problem_report" PROTOCOL_PACKAGE = "aries_cloudagent.protocols.connections.v1_0" @@ -27,9 +26,6 @@ CONNECTION_RESPONSE: ( f"{PROTOCOL_PACKAGE}.messages.connection_response.ConnectionResponse" ), - TRANSACTION_ROLE_TO_SEND: ( - f"{PROTOCOL_PACKAGE}.messages.transaction_role_to_send.TransactionRoleToSend" - ), PROBLEM_REPORT: f"{PROTOCOL_PACKAGE}.messages.problem_report.ProblemReport", } ) diff --git a/aries_cloudagent/protocols/connections/v1_0/messages/transaction_role_to_send.py b/aries_cloudagent/protocols/connections/v1_0/messages/transaction_role_to_send.py deleted file mode 100644 index 40712dfc8a..0000000000 --- a/aries_cloudagent/protocols/connections/v1_0/messages/transaction_role_to_send.py +++ /dev/null @@ -1,56 +0,0 @@ -"""Represents a Transaction role to send message.""" - -from marshmallow import EXCLUDE, fields - -from .....messaging.agent_message import AgentMessage, AgentMessageSchema - -from ..message_types import TRANSACTION_ROLE_TO_SEND, PROTOCOL_PACKAGE - -HANDLER_CLASS = ( - f"{PROTOCOL_PACKAGE}.handlers" - ".transaction_role_to_send_handler.TransactionRoleToSendHandler" -) - - -class TransactionRoleToSend(AgentMessage): - """Class representing a transaction role to send.""" - - class Meta: - """Metadata for a TransactionRoleToSend.""" - - handler_class = HANDLER_CLASS - message_type = TRANSACTION_ROLE_TO_SEND - schema_class = "TransactionRoleToSendSchema" - - def __init__( - self, - *, - role: str = None, - **kwargs, - ): - """ - Initialize transaction role to send. - - Args: - role: The role that needs to be send - - """ - - super().__init__(**kwargs) - self.role = role - - -class TransactionRoleToSendSchema(AgentMessageSchema): - """Transaction Role to send schema class.""" - - class Meta: - """Metadata for a TransactionRoleToSendSchema.""" - - model_class = TransactionRoleToSend - unknown = EXCLUDE - - role = fields.Str( - required=True, - description="Transaction Role that is sent to the other agent", - example="TRANSACTION_AUTHOR", - ) diff --git a/aries_cloudagent/protocols/connections/v1_0/routes.py b/aries_cloudagent/protocols/connections/v1_0/routes.py index 5f28104cff..76ed93113e 100644 --- a/aries_cloudagent/protocols/connections/v1_0/routes.py +++ b/aries_cloudagent/protocols/connections/v1_0/routes.py @@ -33,8 +33,6 @@ ConnectionInvitationSchema, ) -from .transaction_roles import TransactionRole - class ConnectionModuleResponseSchema(OpenAPISchema): """Response schema for connection module.""" @@ -274,18 +272,6 @@ class ConnIdRefIdMatchInfoSchema(OpenAPISchema): ) -class AssignTransactionRolesSchema(OpenAPISchema): - """Assign transaction related roles to connection record.""" - - transaction_my_role = fields.Str( - description="Transaction related roles", - required=False, - validate=validate.OneOf( - [r.name for r in TransactionRole if isinstance(r.value[0], int)] + ["reset"] - ), - ) - - def connection_sort_key(conn): """Get the sorting key for a particular connection.""" @@ -724,47 +710,6 @@ async def connections_create_static(request: web.BaseRequest): return web.json_response(response) -@docs( - tags=["connection"], - summary="Set transaction roles", -) -@querystring_schema(AssignTransactionRolesSchema()) -@match_info_schema(ConnIdMatchInfoSchema()) -@response_schema(ConnRecordSchema(), 200, description="") -async def set_transaction_roles(request: web.BaseRequest): - """ - Request handler for assigning transaction roles. - - Args: - request: aiohttp request object - - Returns: - The assigned transaction roles - - """ - - context: AdminRequestContext = request["context"] - outbound_handler = request.app["outbound_message_router"] - connection_id = request.match_info["conn_id"] - transaction_my_role = request.query.get("transaction_my_role") - session = await context.session() - - try: - record = await ConnRecord.retrieve_by_id(session, connection_id) - connection_mgr = ConnectionManager(session) - tx_role_to_send = await connection_mgr.set_transaction_my_role( - record=record, transaction_my_role=transaction_my_role - ) - roles = await record.metadata_get(session, "transaction_roles") - except StorageNotFoundError as err: - raise web.HTTPNotFound(reason=err.roll_up) from err - except BaseModelError as err: - raise web.HTTPBadRequest(reason=err.roll_up) from err - - await outbound_handler(tx_role_to_send, connection_id=connection_id) - return web.json_response(roles) - - async def register(app: web.Application): """Register routes.""" @@ -792,9 +737,6 @@ async def register(app: web.Application): "/connections/{conn_id}/establish-inbound/{ref_id}", connections_establish_inbound, ), - web.post( - "/connections/{conn_id}/set-transaction-roles", set_transaction_roles - ), web.delete("/connections/{conn_id}", connections_remove), ] ) diff --git a/aries_cloudagent/protocols/connections/v1_0/transaction_roles.py b/aries_cloudagent/protocols/connections/v1_0/transaction_roles.py deleted file mode 100644 index 56703b4e96..0000000000 --- a/aries_cloudagent/protocols/connections/v1_0/transaction_roles.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Class to manage roles in Connection Record.""" - -from enum import Enum - - -class TransactionRole(Enum): - """Represents roles in Connection Record.""" - - TRANSACTION_AUTHOR = (1,) - TRANSACTION_ENDORSER = (2,) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py new file mode 100644 index 0000000000..28ece3b88c --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py @@ -0,0 +1,35 @@ +"""Transaction Job to send handler.""" + +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + RequestContext, +) + +from ..manager import TransactionManager, TransactionManagerError +from ..messages.transaction_job_to_send import TransactionJobToSend + + +class TransactionJobToSendHandler(BaseHandler): + """Handler class for sending transaction jobs.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Handle transaction jobs. + + Args: + context: Request context + responder: Responder callback + """ + + self._logger.debug(f"TransactionJobToSendHandler called with context {context}") + assert isinstance(context.message, TransactionJobToSend) + + session = await context.session() + mgr = TransactionManager(session, context.profile) + try: + await mgr.set_transaction_their_job( + context.message, context.message_receipt + ) + except TransactionManagerError: + self._logger.exception("Error receiving transaction jobs") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index ece8a2425e..33902533de 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -9,8 +9,13 @@ from .messages.refused_transaction_response import RefusedTransactionResponse from .messages.cancel_transaction import CancelTransaction from .messages.transaction_resend import TransactionResend +from .messages.transaction_job_to_send import TransactionJobToSend from .messages.messages_attach import MessagesAttach +from ....connections.models.conn_record import ConnRecord +from ....transport.inbound.receipt import MessageReceipt +from ....storage.error import StorageNotFoundError + from ....ledger.base import BaseLedger from ....core.error import BaseError from ....core.profile import Profile, ProfileSession @@ -438,3 +443,54 @@ async def receive_transaction_resend(self, response: TransactionResend): transaction.state = response.state async with self._profile.session() as session: await transaction.save(session, reason="Change it") + + async def set_transaction_my_job(self, record: ConnRecord, transaction_my_job: str): + """ + Set transaction_my_job. + + Args: + record: The connection record in which to set transaction jobs + transaction_my_job: My transaction job + + Returns: + The transaction job that is send to other agent + + """ + + value = await record.metadata_get(self._session, "transaction_jobs") + + if value: + value["transaction_my_job"] = transaction_my_job + else: + value = {"transaction_my_job": transaction_my_job} + await record.metadata_set(self._session, key="transaction_jobs", value=value) + + tx_job_to_send = TransactionJobToSend(job=transaction_my_job) + return tx_job_to_send + + async def set_transaction_their_job( + self, tx_job_received: TransactionJobToSend, receipt: MessageReceipt + ): + """ + Set transaction_their_job. + + Args: + tx_job_received: The transaction job that is received from the other agent + receipt: The Message Receipt Object + """ + + try: + connection = await ConnRecord.retrieve_by_did( + self._session, receipt.sender_did, receipt.recipient_did + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + value = await connection.metadata_get(self._session, "transaction_jobs") + if value: + value["transaction_their_job"] = tx_job_received.job + else: + value = {"transaction_their_job": tx_job_received.job} + await connection.metadata_set( + self._session, key="transaction_jobs", value=value + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/message_types.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/message_types.py index 2e1f2d7993..b8f43fb1ed 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/message_types.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/message_types.py @@ -9,6 +9,7 @@ REFUSED_TRANSACTION_RESPONSE = "transactions/1.0/refuse" CANCEL_TRANSACTION = "transactions/1.0/cancel" TRANSACTION_RESEND = "transactions/1.0/resend" +TRANSACTION_JOB_TO_SEND = "transactions/1.0/transaction_my_job" ATTACHED_MESSAGE = "transactions/1.0/message" PROTOCOL_PACKAGE = "aries_cloudagent.protocols.endorse_transaction.v1_0" @@ -32,5 +33,8 @@ TRANSACTION_RESEND: ( f"{PROTOCOL_PACKAGE}.messages.transaction_resend.TransactionResend" ), + TRANSACTION_JOB_TO_SEND: ( + f"{PROTOCOL_PACKAGE}.messages.transaction_job_to_send.TransactionJobToSend" + ), } ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_job_to_send.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_job_to_send.py new file mode 100644 index 0000000000..b389fcf0c4 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/transaction_job_to_send.py @@ -0,0 +1,56 @@ +"""Represents a Transaction Job to send message.""" + +from marshmallow import EXCLUDE, fields + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema + +from ..message_types import TRANSACTION_JOB_TO_SEND, PROTOCOL_PACKAGE + +HANDLER_CLASS = ( + f"{PROTOCOL_PACKAGE}.handlers" + ".transaction_job_to_send_handler.TransactionJobToSendHandler" +) + + +class TransactionJobToSend(AgentMessage): + """Class representing a transaction job to send.""" + + class Meta: + """Metadata for a TransactionJobToSend.""" + + handler_class = HANDLER_CLASS + message_type = TRANSACTION_JOB_TO_SEND + schema_class = "TransactionJobToSendSchema" + + def __init__( + self, + *, + job: str = None, + **kwargs, + ): + """ + Initialize transaction job to send. + + Args: + job: The job that needs to be send + + """ + + super().__init__(**kwargs) + self.job = job + + +class TransactionJobToSendSchema(AgentMessageSchema): + """Transaction Job to send schema class.""" + + class Meta: + """Metadata for a TransactionJobToSendSchema.""" + + model_class = TransactionJobToSend + unknown = EXCLUDE + + job = fields.Str( + required=True, + description="Transaction job that is sent to the other agent", + example="TRANSACTION_AUTHOR", + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 51e98d1b27..ed65873849 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -8,19 +8,20 @@ querystring_schema, match_info_schema, ) -from marshmallow import fields +from marshmallow import fields, validate from ....admin.request_context import AdminRequestContext from ....utils.tracing import AdminAPIMessageTracingSchema from .manager import TransactionManager from .models.transaction_record import TransactionRecord, TransactionRecordSchema -from ....connections.models.conn_record import ConnRecord +from ....connections.models.conn_record import ConnRecord, ConnRecordSchema from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import UUIDFour from ....messaging.models.base import BaseModelError from ....storage.error import StorageError, StorageNotFoundError +from .transaction_jobs import TransactionJob class TransactionListSchema(OpenAPISchema): @@ -60,6 +61,26 @@ class CreateTransactionRecordSchema(AdminAPIMessageTracingSchema): ) +class AssignTransactionJobsSchema(OpenAPISchema): + """Assign transaction related jobs to connection record.""" + + transaction_my_job = fields.Str( + description="Transaction related jobs", + required=False, + validate=validate.OneOf( + [r.name for r in TransactionJob if isinstance(r.value[0], int)] + ["reset"] + ), + ) + + +class ConnIdMatchInfoSchema(OpenAPISchema): + """Path parameters and validators for request taking connection id.""" + + conn_id = fields.Str( + description="Connection identifier", required=True, example=UUIDFour.EXAMPLE + ) + + @docs( tags=["endorse-transaction"], summary="Query transactions", @@ -142,7 +163,7 @@ async def transaction_record_create(request: web.BaseRequest): """ context: AdminRequestContext = request["context"] - outbound_handler = request.app["outbound_message_router"] + outbound_handler = request["outbound_message_router"] body = await request.json() @@ -186,7 +207,7 @@ async def endorse_transaction_response(request: web.BaseRequest): """ context: AdminRequestContext = request["context"] - outbound_handler = request.app["outbound_message_router"] + outbound_handler = request["outbound_message_router"] transaction_id = request.match_info["tran_id"] try: @@ -237,7 +258,7 @@ async def refuse_transaction_response(request: web.BaseRequest): """ context: AdminRequestContext = request["context"] - outbound_handler = request.app["outbound_message_router"] + outbound_handler = request["outbound_message_router"] transaction_id = request.match_info["tran_id"] try: @@ -288,7 +309,7 @@ async def cancel_transaction(request: web.BaseRequest): """ context: AdminRequestContext = request["context"] - outbound_handler = request.app["outbound_message_router"] + outbound_handler = request["outbound_message_router"] transaction_id = request.match_info["tran_id"] try: @@ -339,7 +360,7 @@ async def transaction_resend(request: web.BaseRequest): """ context: AdminRequestContext = request["context"] - outbound_handler = request.app["outbound_message_router"] + outbound_handler = request["outbound_message_router"] transaction_id = request.match_info["tran_id"] try: @@ -371,6 +392,47 @@ async def transaction_resend(request: web.BaseRequest): return web.json_response({"error": "You cannot resend an endorsed transaction"}) +@docs( + tags=["endorse-transaction"], + summary="Set transaction jobs", +) +@querystring_schema(AssignTransactionJobsSchema()) +@match_info_schema(ConnIdMatchInfoSchema()) +@response_schema(ConnRecordSchema(), 200, description="") +async def set_transaction_jobs(request: web.BaseRequest): + """ + Request handler for assigning transaction jobs. + + Args: + request: aiohttp request object + + Returns: + The assigned transaction jobs + + """ + + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + connection_id = request.match_info["conn_id"] + transaction_my_job = request.query.get("transaction_my_job") + session = await context.session() + + try: + record = await ConnRecord.retrieve_by_id(session, connection_id) + transaction_mgr = TransactionManager(session, context.profile) + tx_job_to_send = await transaction_mgr.set_transaction_my_job( + record=record, transaction_my_job=transaction_my_job + ) + jobs = await record.metadata_get(session, "transaction_jobs") + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + except BaseModelError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + await outbound_handler(tx_job_to_send, connection_id=connection_id) + return web.json_response(jobs) + + async def register(app: web.Application): """Register routes.""" @@ -383,6 +445,9 @@ async def register(app: web.Application): web.post("/transactions/{tran_id}/refuse", refuse_transaction_response), web.post("/transactions/{tran_id}/cancel", cancel_transaction), web.post("/transaction/{tran_id}/resend", transaction_resend), + web.post( + "/transactions/{conn_id}/set-transaction-jobs", set_transaction_jobs + ), ] ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/transaction_jobs.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/transaction_jobs.py new file mode 100644 index 0000000000..7ef9577770 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/transaction_jobs.py @@ -0,0 +1,10 @@ +"""Class to manage jobs in Connection Record.""" + +from enum import Enum + + +class TransactionJob(Enum): + """Represents jobs in Connection Record.""" + + TRANSACTION_AUTHOR = (1,) + TRANSACTION_ENDORSER = (2,) From 24ead6f2774d64c08ec4e372fa6996cbdc21422f Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Sun, 27 Dec 2020 22:47:28 +0530 Subject: [PATCH 003/243] Updated the ledger updating APIs (schema and cred def) to prepare a transaction record Signed-off-by: Harsh Multani --- .../credential_definitions/routes.py | 184 ++++++++++-------- .../tests/test_routes.py | 18 ++ aries_cloudagent/messaging/schemas/routes.py | 70 ++++--- .../messaging/schemas/tests/test_routes.py | 3 + .../endorse_transaction/v1_0/manager.py | 49 +++-- .../endorse_transaction/v1_0/routes.py | 52 ++--- 6 files changed, 234 insertions(+), 142 deletions(-) diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index d6db858791..a1a840db17 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -29,6 +29,9 @@ from .util import CredDefQueryStringSchema, CRED_DEF_TAGS, CRED_DEF_SENT_RECORD_TYPE +from ...protocols.endorse_transaction.v1_0.manager import TransactionManager +import json + class CredentialDefinitionSendRequestSchema(OpenAPISchema): """Request schema for schema send request.""" @@ -111,11 +114,21 @@ class CredDefIdMatchInfoSchema(OpenAPISchema): ) +class AutoEndorseOptionSchema(OpenAPISchema): + """Class for user to input whether to auto-endorse the transaction or not.""" + + auto_endorse = fields.Boolean( + description="Auto-endorse Transaction", + required=True, + ) + + @docs( tags=["credential-definition"], summary="Sends a credential definition to the ledger", ) @request_schema(CredentialDefinitionSendRequestSchema()) +@querystring_schema(AutoEndorseOptionSchema()) @response_schema(CredentialDefinitionSendResultsSchema(), 200, description="") async def credential_definitions_send_credential_definition(request: web.BaseRequest): """ @@ -129,92 +142,107 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq """ context: AdminRequestContext = request["context"] + auto_endorse = json.loads(request.query.get("auto_endorse", "null")) + + if auto_endorse: + body = await request.json() + + schema_id = body.get("schema_id") + support_revocation = bool(body.get("support_revocation")) + tag = body.get("tag") + rev_reg_size = body.get("revocation_registry_size") + + ledger = context.inject(BaseLedger, required=False) + if not ledger: + reason = "No ledger available" + if not context.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) + + issuer = context.inject(IndyIssuer) + try: # even if in wallet, send it and raise if erroneously so + async with ledger: + (cred_def_id, cred_def, novel) = await shield( + ledger.create_and_send_credential_definition( + issuer, + schema_id, + signature_type=None, + tag=tag, + support_revocation=support_revocation, + ) + ) + except LedgerError as e: + raise web.HTTPBadRequest(reason=e.message) from e - body = await request.json() - - schema_id = body.get("schema_id") - support_revocation = bool(body.get("support_revocation")) - tag = body.get("tag") - rev_reg_size = body.get("revocation_registry_size") + # If revocation is requested and cred def is novel, create revocation registry + if support_revocation and novel: + session = ( + await context.session() + ) # FIXME - will update to not require session here + tails_base_url = session.settings.get("tails_server_base_url") + if not tails_base_url: + raise web.HTTPBadRequest(reason="tails_server_base_url not configured") + try: + # Create registry + revoc = IndyRevocation(session) + registry_record = await revoc.init_issuer_registry( + cred_def_id, + max_cred_num=rev_reg_size, + ) - ledger = context.inject(BaseLedger, required=False) - if not ledger: - reason = "No ledger available" - if not context.settings.get_value("wallet.type"): - reason += ": missing wallet-type?" - raise web.HTTPForbidden(reason=reason) + except RevocationNotSupportedError as e: + raise web.HTTPBadRequest(reason=e.message) from e + await shield(registry_record.generate_registry(session)) + try: + await registry_record.set_tails_file_public_uri( + session, f"{tails_base_url}/{registry_record.revoc_reg_id}" + ) + await registry_record.send_def(session) + await registry_record.send_entry(session) - issuer = context.inject(IndyIssuer) - try: # even if in wallet, send it and raise if erroneously so - async with ledger: - (cred_def_id, cred_def, novel) = await shield( - ledger.create_and_send_credential_definition( - issuer, - schema_id, - signature_type=None, - tag=tag, - support_revocation=support_revocation, + # stage pending registry independent of whether tails server is OK + pending_registry_record = await revoc.init_issuer_registry( + registry_record.cred_def_id, + max_cred_num=registry_record.max_cred_num, ) - ) - except LedgerError as e: - raise web.HTTPBadRequest(reason=e.message) from e - - # If revocation is requested and cred def is novel, create revocation registry - if support_revocation and novel: - session = ( - await context.session() - ) # FIXME - will update to not require session here - tails_base_url = session.settings.get("tails_server_base_url") - if not tails_base_url: - raise web.HTTPBadRequest(reason="tails_server_base_url not configured") - try: - # Create registry - revoc = IndyRevocation(session) - registry_record = await revoc.init_issuer_registry( - cred_def_id, - max_cred_num=rev_reg_size, - ) - - except RevocationNotSupportedError as e: - raise web.HTTPBadRequest(reason=e.message) from e - await shield(registry_record.generate_registry(session)) - try: - await registry_record.set_tails_file_public_uri( - session, f"{tails_base_url}/{registry_record.revoc_reg_id}" - ) - await registry_record.send_def(session) - await registry_record.send_entry(session) - - # stage pending registry independent of whether tails server is OK - pending_registry_record = await revoc.init_issuer_registry( - registry_record.cred_def_id, - max_cred_num=registry_record.max_cred_num, - ) - ensure_future( - pending_registry_record.stage_pending_registry(session, max_attempts=16) - ) - - tails_server = session.inject(BaseTailsServer) - (upload_success, reason) = await tails_server.upload_tails_file( - session, - registry_record.revoc_reg_id, - registry_record.tails_local_path, - interval=0.8, - backoff=-0.5, - max_attempts=5, # heuristic: respect HTTP timeout - ) - if not upload_success: - raise web.HTTPInternalServerError( - reason=( - f"Tails file for rev reg {registry_record.revoc_reg_id} " - f"failed to upload: {reason}" + ensure_future( + pending_registry_record.stage_pending_registry( + session, max_attempts=16 ) ) - except RevocationError as e: - raise web.HTTPBadRequest(reason=e.message) from e + tails_server = session.inject(BaseTailsServer) + (upload_success, reason) = await tails_server.upload_tails_file( + session, + registry_record.revoc_reg_id, + registry_record.tails_local_path, + interval=0.8, + backoff=-0.5, + max_attempts=5, # heuristic: respect HTTP timeout + ) + if not upload_success: + raise web.HTTPInternalServerError( + reason=( + f"Tails file for rev reg {registry_record.revoc_reg_id} " + f"failed to upload: {reason}" + ) + ) + + except RevocationError as e: + raise web.HTTPBadRequest(reason=e.message) from e + + return web.json_response({"credential_definition_id": cred_def_id}) + + else: + transaction_message = await request.json() + session = await context.session() + transaction_mgr = TransactionManager(session, context.profile) + + transaction = await transaction_mgr.create_record( + transaction_message=transaction_message, + ) - return web.json_response({"credential_definition_id": cred_def_id}) + return web.json_response(transaction.serialize()) @docs( diff --git a/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py b/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py index cc961ce74d..0a14650b25 100644 --- a/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py +++ b/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py @@ -57,6 +57,8 @@ async def test_send_credential_definition(self): } ) + self.request.query = {"auto_endorse": "true"} + with async_mock.patch.object(test_module.web, "json_response") as mock_response: result = ( await test_module.credential_definitions_send_credential_definition( @@ -76,6 +78,9 @@ async def test_send_credential_definition_revoc(self): "tag": "tag", } ) + + self.request.query = {"auto_endorse": "true"} + self.context.settings.set_value("tails_server_base_url", "http://1.2.3.4:8222") mock_tails_server = async_mock.MagicMock( @@ -116,6 +121,8 @@ async def test_send_credential_definition_revoc_no_tails_server_x(self): } ) + self.request.query = {"auto_endorse": "true"} + with self.assertRaises(test_module.web.HTTPBadRequest): await test_module.credential_definitions_send_credential_definition( self.request @@ -129,6 +136,9 @@ async def test_send_credential_definition_revoc_no_support_x(self): "tag": "tag", } ) + + self.request.query = {"auto_endorse": "true"} + self.context.settings.set_value("tails_server_base_url", "http://1.2.3.4:8222") with async_mock.patch.object( @@ -152,6 +162,9 @@ async def test_send_credential_definition_revoc_upload_x(self): "tag": "tag", } ) + + self.request.query = {"auto_endorse": "true"} + self.context.settings.set_value("tails_server_base_url", "http://1.2.3.4:8222") mock_tails_server = async_mock.MagicMock( @@ -188,6 +201,9 @@ async def test_send_credential_definition_revoc_init_issuer_rev_reg_x(self): "tag": "tag", } ) + + self.request.query = {"auto_endorse": "true"} + self.context.settings.set_value("tails_server_base_url", "http://1.2.3.4:8222") mock_tails_server = async_mock.MagicMock( @@ -240,6 +256,8 @@ async def test_send_credential_definition_ledger_x(self): } ) + self.request.query = {"auto_endorse": "true"} + self.ledger.__aenter__ = async_mock.CoroutineMock( side_effect=test_module.LedgerError("oops") ) diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index 745e2e93a1..e46520cf34 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -23,6 +23,9 @@ from ..valid import B58, NATURAL_NUM, INDY_SCHEMA_ID, INDY_VERSION from .util import SchemaQueryStringSchema, SCHEMA_SENT_RECORD_TYPE, SCHEMA_TAGS +from ...protocols.endorse_transaction.v1_0.manager import TransactionManager +import json + class SchemaSendRequestSchema(OpenAPISchema): """Request schema for schema send request.""" @@ -100,8 +103,18 @@ class SchemaIdMatchInfoSchema(OpenAPISchema): ) +class AutoEndorseOptionSchema(OpenAPISchema): + """Class for user to input whether to auto-endorse the transaction or not.""" + + auto_endorse = fields.Boolean( + description="Auto-endorse Transaction", + required=True, + ) + + @docs(tags=["schema"], summary="Sends a schema to the ledger") @request_schema(SchemaSendRequestSchema()) +@querystring_schema(AutoEndorseOptionSchema()) @response_schema(SchemaSendResultsSchema(), 200, description="") async def schemas_send_schema(request: web.BaseRequest): """ @@ -115,32 +128,45 @@ async def schemas_send_schema(request: web.BaseRequest): """ context: AdminRequestContext = request["context"] + auto_endorse = json.loads(request.query.get("auto_endorse", "null")) + + if auto_endorse: + body = await request.json() + + schema_name = body.get("schema_name") + schema_version = body.get("schema_version") + attributes = body.get("attributes") + + ledger = context.inject(BaseLedger, required=False) + if not ledger: + reason = "No ledger available" + if not context.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) + + issuer = context.inject(IndyIssuer) + async with ledger: + try: + schema_id, schema_def = await shield( + ledger.create_and_send_schema( + issuer, schema_name, schema_version, attributes + ) + ) + except (IndyIssuerError, LedgerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err - body = await request.json() - - schema_name = body.get("schema_name") - schema_version = body.get("schema_version") - attributes = body.get("attributes") + return web.json_response({"schema_id": schema_id, "schema": schema_def}) - ledger = context.inject(BaseLedger, required=False) - if not ledger: - reason = "No ledger available" - if not context.settings.get_value("wallet.type"): - reason += ": missing wallet-type?" - raise web.HTTPForbidden(reason=reason) + else: + transaction_message = await request.json() + session = await context.session() + transaction_mgr = TransactionManager(session, context.profile) - issuer = context.inject(IndyIssuer) - async with ledger: - try: - schema_id, schema_def = await shield( - ledger.create_and_send_schema( - issuer, schema_name, schema_version, attributes - ) - ) - except (IndyIssuerError, LedgerError) as err: - raise web.HTTPBadRequest(reason=err.roll_up) from err + transaction = await transaction_mgr.create_record( + transaction_message=transaction_message, + ) - return web.json_response({"schema_id": schema_id, "schema": schema_def}) + return web.json_response(transaction.serialize()) @docs( diff --git a/aries_cloudagent/messaging/schemas/tests/test_routes.py b/aries_cloudagent/messaging/schemas/tests/test_routes.py index 2ef5129bee..e4708e2de5 100644 --- a/aries_cloudagent/messaging/schemas/tests/test_routes.py +++ b/aries_cloudagent/messaging/schemas/tests/test_routes.py @@ -55,6 +55,8 @@ async def test_send_schema(self): } ) + self.request.query = {"auto_endorse": "true"} + with async_mock.patch.object(test_module.web, "json_response") as mock_response: result = await test_module.schemas_send_schema(self.request) assert result == mock_response.return_value @@ -83,6 +85,7 @@ async def test_send_schema_x_ledger(self): "attributes": ["table", "drink", "colour"], } ) + self.request.query = {"auto_endorse": "true"} self.ledger.create_and_send_schema = async_mock.CoroutineMock( side_effect=test_module.LedgerError("Down for routine maintenance") ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 33902533de..162c215c25 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -65,17 +65,15 @@ def profile(self) -> Profile: """ return self._profile - async def create_request( + async def create_record( self, - connection_id: str = None, expires_time: str = None, transaction_message: dict = {}, ): """ - Create a new Transaction Record and Request. + Create a new Transaction Record. Args: - connection_id: The connection id related to this transaction record expires_time: The time till which the endorser should endorse the transaction transaction_message: The actual data in the transaction payload @@ -148,6 +146,7 @@ async def create_request( "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, "author_goal_code": TransactionRecord.WRITE_TRANSACTION, } + transaction.signature_request.clear() transaction.signature_request.append(signature_request) timing = {"expires_time": "1597708800"} @@ -157,20 +156,43 @@ async def create_request( "attach_id": messages_attach._id, "format": TransactionRecord.FORMAT_VERSION, } + transaction.formats.clear() transaction.formats.append(formats) + transaction.messages_attach.clear() transaction.messages_attach.append(messages_attach_dict) - transaction.connection_id = connection_id - transaction.state = "request" + transaction.state = "created" async with self._profile.session() as session: await transaction.save(session, reason="Change it") + return transaction + + async def create_request( + self, transaction: TransactionRecord, connection_id: str = None + ): + """ + Create a new Transaction Request. + + Args: + transaction: The transaction from which the request is created. + connection_id: The connection_id to which the request is send. + + Returns: + The transaction Record and transaction request + + """ + + transaction.state = "request" + transaction.connection_id = connection_id + async with self._profile.session() as session: + await transaction.save(session, reason="Change to requested state") + transaction_request = TransactionRequest( transaction_id=transaction._id, - signature_request=signature_request, - timing=timing, - messages_attach=messages_attach_dict, + signature_request=transaction.signature_request[0], + timing=transaction.timing, + messages_attach=transaction.messages_attach[0], ) return transaction, transaction_request @@ -187,6 +209,7 @@ async def receive_request(self, request: TransactionRequest): transaction = TransactionRecord() transaction._type = TransactionRecord.SIGNATURE_REQUEST + transaction.signature_request.clear() transaction.signature_request.append(request.signature_request) transaction.timing = request.timing @@ -194,8 +217,10 @@ async def receive_request(self, request: TransactionRequest): "attach_id": request.messages_attach["_message_id"], "format": TransactionRecord.FORMAT_VERSION, } + transaction.formats.clear() transaction.formats.append(format) + transaction.messages_attach.clear() transaction.messages_attach.append(request.messages_attach) transaction.thread_id = request.transaction_id transaction.connection_id = connection_id @@ -240,6 +265,7 @@ async def create_endorse_response( "signature_type": TransactionRecord.SIGNATURE_TYPE, "signature": {endorser_did: endorser_verkey}, } + transaction.signature_response.clear() transaction.signature_response.append(signature_response) transaction.state = state @@ -273,6 +299,7 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): transaction._type = TransactionRecord.SIGNATURE_RESPONSE transaction.state = response.state + transaction.signature_response.clear() transaction.signature_response.append(response.signature_response) transaction.thread_id = response.thread_id @@ -316,6 +343,7 @@ async def create_refuse_response( "method": TransactionRecord.ADD_SIGNATURE, "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, } + transaction.signature_response.clear() transaction.signature_response.append(signature_response) transaction.state = state @@ -349,6 +377,7 @@ async def receive_refuse_response(self, response: RefusedTransactionResponse): transaction._type = TransactionRecord.SIGNATURE_RESPONSE transaction.state = response.state + transaction.signature_response.clear() transaction.signature_response.append(response.signature_response) transaction.thread_id = response.thread_id transaction.messages_attach[0]["data"]["json"][ @@ -390,7 +419,6 @@ async def receive_cancel_transaction(self, response: CancelTransaction): Args: response: The cancel transaction response """ - connection_id = self.session.connection_record.connection_id async with self._profile.session() as session: transaction = await TransactionRecord.retrieve_by_connection_and_thread( @@ -433,7 +461,6 @@ async def receive_transaction_resend(self, response: TransactionResend): Args: response: The Resend transaction response """ - connection_id = self.session.connection_record.connection_id async with self._profile.session() as session: transaction = await TransactionRecord.retrieve_by_connection_and_thread( diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index ed65873849..f1d93bc44a 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -2,7 +2,6 @@ from aiohttp import web from aiohttp_apispec import ( - request_schema, docs, response_schema, querystring_schema, @@ -11,7 +10,6 @@ from marshmallow import fields, validate from ....admin.request_context import AdminRequestContext -from ....utils.tracing import AdminAPIMessageTracingSchema from .manager import TransactionManager from .models.transaction_record import TransactionRecord, TransactionRecordSchema from ....connections.models.conn_record import ConnRecord, ConnRecordSchema @@ -45,22 +43,6 @@ class TranIdMatchInfoSchema(OpenAPISchema): ) -class CreateTransactionRecordSchema(AdminAPIMessageTracingSchema): - """Parameters and validators to create transaction request and record.""" - - conn_id = fields.Str( - description="Connection identifier", required=True, example=UUIDFour.EXAMPLE - ) - transaction_message = fields.Dict( - required=False, - example={ - "attr_names": ["first_name", "last_name"], - "name": "test_schema", - "version": "2.1", - }, - ) - - class AssignTransactionJobsSchema(OpenAPISchema): """Assign transaction related jobs to connection record.""" @@ -148,9 +130,10 @@ async def transactions_retrieve(request: web.BaseRequest): tags=["endorse-transaction"], summary="For author to send a transaction request", ) -@request_schema(CreateTransactionRecordSchema()) +@querystring_schema(TranIdMatchInfoSchema()) +@querystring_schema(ConnIdMatchInfoSchema()) @response_schema(TransactionRecordSchema(), 200) -async def transaction_record_create(request: web.BaseRequest): +async def transaction_create_request(request: web.BaseRequest): """ Request handler for creating a new transaction record and request. @@ -164,28 +147,35 @@ async def transaction_record_create(request: web.BaseRequest): context: AdminRequestContext = request["context"] outbound_handler = request["outbound_message_router"] + connection_id = request.query.get("conn_id") + transaction_id = request.query.get("tran_id") - body = await request.json() - - connection_id = body.get("conn_id") - transaction_message = body.get("transaction_message") + try: + async with context.session() as session: + connection_record = await ConnRecord.retrieve_by_id(session, connection_id) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err try: async with context.session() as session: - connection = await ConnRecord.retrieve_by_id(session, connection_id) + transaction_record = await TransactionRecord.retrieve_by_id( + session, transaction_id + ) except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err session = await context.session() transaction_mgr = TransactionManager(session, context.profile) - (transaction, transaction_request) = await transaction_mgr.create_request( - connection_id=connection_id, - transaction_message=transaction_message, + + (transaction_record, transaction_request) = await transaction_mgr.create_request( + transaction=transaction_record, connection_id=connection_id ) - await outbound_handler(transaction_request, connection_id=connection.connection_id) + await outbound_handler( + transaction_request, connection_id=connection_record.connection_id + ) - return web.json_response(transaction.serialize()) + return web.json_response(transaction_record.serialize()) @docs( @@ -440,7 +430,7 @@ async def register(app: web.Application): [ web.get("/transactions", transactions_list, allow_head=False), web.get("/transactions/{tran_id}", transactions_retrieve, allow_head=False), - web.post("/transactions/create-request", transaction_record_create), + web.post("/transactions/create-request", transaction_create_request), web.post("/transactions/{tran_id}/endorse", endorse_transaction_response), web.post("/transactions/{tran_id}/refuse", refuse_transaction_response), web.post("/transactions/{tran_id}/cancel", cancel_transaction), From 89f4b0e55904ad9c4b45ec4c2136f9ccd672d61e Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Sun, 27 Dec 2020 22:50:46 +0530 Subject: [PATCH 004/243] Added test files for messages in endorse_transaction folder Signed-off-by: Harsh Multani --- .../v1_0/messages/tests/__init__.py | 0 .../messages/tests/test_cancel_transaction.py | 70 +++++++++++ .../test_endorsed_transaction_response.py | 105 ++++++++++++++++ .../messages/tests/test_messages_attach.py | 87 +++++++++++++ .../test_refused_transaction_response.py | 100 +++++++++++++++ .../tests/test_transaction_job_to_send.py | 68 ++++++++++ .../tests/test_transaction_request.py | 118 ++++++++++++++++++ .../messages/tests/test_transaction_resend.py | 70 +++++++++++ 8 files changed, 618 insertions(+) create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/__init__.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_cancel_transaction.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_endorsed_transaction_response.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_messages_attach.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_refused_transaction_response.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_job_to_send.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_request.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_resend.py diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/__init__.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_cancel_transaction.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_cancel_transaction.py new file mode 100644 index 0000000000..f64a2b7826 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_cancel_transaction.py @@ -0,0 +1,70 @@ +from unittest import mock, TestCase + +from asynctest import TestCase as AsyncTestCase + +from .....didcomm_prefix import DIDCommPrefix + +from ...message_types import CANCEL_TRANSACTION + +from ..cancel_transaction import CancelTransaction + + +class TestConfig: + test_thread_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + test_state = "cancelled" + + +class TestCancelTransaction(TestCase, TestConfig): + def setUp(self): + self.cancel_transaction = CancelTransaction( + thread_id=self.test_thread_id, state=self.test_state + ) + + def test_init(self): + """Test initialization.""" + assert self.cancel_transaction.thread_id == self.test_thread_id + assert self.cancel_transaction.state == self.test_state + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "cancel_transaction.CancelTransactionSchema.load" + ) + def test_deserialize(self, mock_cancel_transaction_schema_load): + """ + Test deserialization. + """ + obj = {"obj": "obj"} + + cancel_transaction = CancelTransaction.deserialize(obj) + mock_cancel_transaction_schema_load.assert_called_once_with(obj) + + assert cancel_transaction is mock_cancel_transaction_schema_load.return_value + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "cancel_transaction.CancelTransactionSchema.dump" + ) + def test_serialize(self, mock_cancel_transaction_schema_dump): + """ + Test serialization. + """ + cancel_transaction_dict = self.cancel_transaction.serialize() + mock_cancel_transaction_schema_dump.assert_called_once_with( + self.cancel_transaction + ) + + assert ( + cancel_transaction_dict is mock_cancel_transaction_schema_dump.return_value + ) + + +class TestCancelTransactionSchema(AsyncTestCase, TestConfig): + """Test cancel transaction schema.""" + + async def test_make_model(self): + cancel_transaction = CancelTransaction( + thread_id=self.test_thread_id, state=self.test_state + ) + data = cancel_transaction.serialize() + model_instance = CancelTransaction.deserialize(data) + assert type(model_instance) is type(cancel_transaction) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_endorsed_transaction_response.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_endorsed_transaction_response.py new file mode 100644 index 0000000000..91579ebd0b --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_endorsed_transaction_response.py @@ -0,0 +1,105 @@ +from unittest import mock, TestCase + +from asynctest import TestCase as AsyncTestCase + +from .....didcomm_prefix import DIDCommPrefix + +from ...message_types import ENDORSED_TRANSACTION_RESPONSE + +from ..endorsed_transaction_response import EndorsedTransactionResponse + + +class TestConfig: + test_transaction_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + test_thread_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + test_signature_response = { + "message_id": "95f890bf-329f-4450-9d9d-89082077acf9", + "context": "did:sov", + "method": "add-signature", + "signer_goal_code": "transaction.endorse", + "signature_type": "", + "signature": { + "4Sr8NmbMuq6SHLrh7Bv5sN": "2svZP3omPic2Y9xQMh2AVhTd6Hhbrt6Yxc6d9cbwNGLu" + }, + } + test_state = "endorsed" + test_endorser_did = "V4SGRU86Z58d6TV7PBUe6f" + + +class TestEndorsedTransactionResponse(TestCase, TestConfig): + def setUp(self): + self.endorsed_transaction_response = EndorsedTransactionResponse( + transaction_id=self.test_transaction_id, + thread_id=self.test_thread_id, + signature_response=self.test_signature_response, + state=self.test_state, + endorser_did=self.test_endorser_did, + ) + + def test_init(self): + """Test initialization.""" + assert ( + self.endorsed_transaction_response.transaction_id + == self.test_transaction_id + ) + assert self.endorsed_transaction_response.thread_id == self.test_thread_id + assert ( + self.endorsed_transaction_response.signature_response + == self.test_signature_response + ) + assert self.endorsed_transaction_response.state == self.test_state + assert self.endorsed_transaction_response.endorser_did == self.test_endorser_did + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "endorsed_transaction_response.EndorsedTransactionResponseSchema.load" + ) + def test_deserialize(self, mock_endorsed_transaction_response_schema_load): + """ + Test deserialization. + """ + obj = {"obj": "obj"} + + endorsed_transaction_response = EndorsedTransactionResponse.deserialize(obj) + mock_endorsed_transaction_response_schema_load.assert_called_once_with(obj) + + assert ( + endorsed_transaction_response + is mock_endorsed_transaction_response_schema_load.return_value + ) + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "endorsed_transaction_response.EndorsedTransactionResponseSchema.dump" + ) + def test_serialize(self, mock_endorsed_transaction_response_schema_dump): + """ + Test serialization. + """ + endorsed_transaction_response_dict = ( + self.endorsed_transaction_response.serialize() + ) + mock_endorsed_transaction_response_schema_dump.assert_called_once_with( + self.endorsed_transaction_response + ) + + assert ( + endorsed_transaction_response_dict + is mock_endorsed_transaction_response_schema_dump.return_value + ) + + +class TestEndorsedTransactionResponseSchema(AsyncTestCase, TestConfig): + """Test endorsed transaction response schema.""" + + async def test_make_model(self): + endorsed_transaction_response = EndorsedTransactionResponse( + transaction_id=self.test_transaction_id, + thread_id=self.test_thread_id, + signature_response=self.test_signature_response, + state=self.test_state, + endorser_did=self.test_endorser_did, + ) + data = endorsed_transaction_response.serialize() + model_instance = EndorsedTransactionResponse.deserialize(data) + assert type(model_instance) is type(endorsed_transaction_response) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_messages_attach.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_messages_attach.py new file mode 100644 index 0000000000..b7efd6041d --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_messages_attach.py @@ -0,0 +1,87 @@ +from unittest import mock, TestCase + +from asynctest import TestCase as AsyncTestCase + +from .....didcomm_prefix import DIDCommPrefix + +from ...message_types import ATTACHED_MESSAGE + +from ..messages_attach import MessagesAttach + + +class TestConfig: + test_author_did = "LjgpST2rjsoxYegQDRm7EL" + test_author_verkey = "4uq1mUATWKZArwyuPgjUEw5UBysWNbkf2SN6SqVwbfSqCfnbm1Vnfw" + test_endorser_did = "V4SGRU86Z58d6TV7PBUe6f" + test_transaction_message = { + "attr_names": ["first_name", "last_name"], + "name": "test_schema", + "version": "2.1", + } + test_mechanism = "manual" + test_taaDigest = "f50feca7bd4202c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62" + test_time = 1597708800 + + +class TestMessagesAttach(TestCase, TestConfig): + def setUp(self): + self.messages_attach = MessagesAttach( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + endorser_did=self.test_endorser_did, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + ) + + def test_init(self): + """Test initialization.""" + assert self.messages_attach.data["json"]["identifier"] == self.test_author_did + assert self.messages_attach.data["json"]["signatures"] == { + self.test_author_did: self.test_author_verkey + } + assert self.messages_attach.data["json"]["endorser"] == self.test_endorser_did + assert ( + self.messages_attach.data["json"]["operation"]["data"] + == self.test_transaction_message + ) + assert ( + self.messages_attach.data["json"]["taaAcceptance"]["mechanism"] + == self.test_mechanism + ) + assert ( + self.messages_attach.data["json"]["taaAcceptance"]["taaDigest"] + == self.test_taaDigest + ) + assert ( + self.messages_attach.data["json"]["taaAcceptance"]["time"] == self.test_time + ) + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "messages_attach.MessagesAttachSchema.load" + ) + def test_deserialize(self, mock_messages_attach_schema_load): + """ + Test deserialization. + """ + obj = {"obj": "obj"} + + messages_attach = MessagesAttach.deserialize(obj) + mock_messages_attach_schema_load.assert_called_once_with(obj) + + assert messages_attach is mock_messages_attach_schema_load.return_value + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "messages_attach.MessagesAttachSchema.dump" + ) + def test_serialize(self, mock_messages_attach_schema_dump): + """ + Test serialization. + """ + messages_attach_dict = self.messages_attach.serialize() + mock_messages_attach_schema_dump.assert_called_once_with(self.messages_attach) + + assert messages_attach_dict is mock_messages_attach_schema_dump.return_value diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_refused_transaction_response.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_refused_transaction_response.py new file mode 100644 index 0000000000..5ef789e2ac --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_refused_transaction_response.py @@ -0,0 +1,100 @@ +from unittest import mock, TestCase + +from asynctest import TestCase as AsyncTestCase + +from .....didcomm_prefix import DIDCommPrefix + +from ...message_types import REFUSED_TRANSACTION_RESPONSE + +from ..refused_transaction_response import RefusedTransactionResponse + + +class TestConfig: + test_transaction_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + test_thread_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + test_signature_response = { + "message_id": "143c458d-1b1c-40c7-ab85-4d16808ddf0a", + "context": "did:sov", + "method": "add-signature", + "signer_goal_code": "transaction.refuse", + } + test_state = "refused" + test_endorser_did = "V4SGRU86Z58d6TV7PBUe6f" + + +class TestRefusedTransactionResponse(TestCase, TestConfig): + def setUp(self): + self.refused_transaction_response = RefusedTransactionResponse( + transaction_id=self.test_transaction_id, + thread_id=self.test_thread_id, + signature_response=self.test_signature_response, + state=self.test_state, + endorser_did=self.test_endorser_did, + ) + + def test_init(self): + """Test initialization.""" + assert ( + self.refused_transaction_response.transaction_id == self.test_transaction_id + ) + assert self.refused_transaction_response.thread_id == self.test_thread_id + assert ( + self.refused_transaction_response.signature_response + == self.test_signature_response + ) + assert self.refused_transaction_response.state == self.test_state + assert self.refused_transaction_response.endorser_did == self.test_endorser_did + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "refused_transaction_response.RefusedTransactionResponseSchema.load" + ) + def test_deserialize(self, mock_refused_transaction_response_schema_load): + """ + Test deserialization. + """ + obj = {"obj": "obj"} + + refused_transaction_response = RefusedTransactionResponse.deserialize(obj) + mock_refused_transaction_response_schema_load.assert_called_once_with(obj) + + assert ( + refused_transaction_response + is mock_refused_transaction_response_schema_load.return_value + ) + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "refused_transaction_response.RefusedTransactionResponseSchema.dump" + ) + def test_serialize(self, mock_refused_transaction_response_schema_dump): + """ + Test serialization. + """ + refused_transaction_response_dict = ( + self.refused_transaction_response.serialize() + ) + mock_refused_transaction_response_schema_dump.assert_called_once_with( + self.refused_transaction_response + ) + + assert ( + refused_transaction_response_dict + is mock_refused_transaction_response_schema_dump.return_value + ) + + +class TestRefusedTransactionResponseSchema(AsyncTestCase, TestConfig): + """Test refused transaction response schema.""" + + async def test_make_model(self): + refused_transaction_response = RefusedTransactionResponse( + transaction_id=self.test_transaction_id, + thread_id=self.test_thread_id, + signature_response=self.test_signature_response, + state=self.test_state, + endorser_did=self.test_endorser_did, + ) + data = refused_transaction_response.serialize() + model_instance = RefusedTransactionResponse.deserialize(data) + assert type(model_instance) is type(refused_transaction_response) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_job_to_send.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_job_to_send.py new file mode 100644 index 0000000000..a51ad42da2 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_job_to_send.py @@ -0,0 +1,68 @@ +from unittest import mock, TestCase + +from asynctest import TestCase as AsyncTestCase + +from .....didcomm_prefix import DIDCommPrefix + +from ...message_types import TRANSACTION_JOB_TO_SEND + +from ..transaction_job_to_send import TransactionJobToSend + + +class TestConfig: + test_job = "TRANSACTION_AUTHOR" + + +class TestTransactionJobToSend(TestCase, TestConfig): + def setUp(self): + self.transaction_job_to_send = TransactionJobToSend(job=self.test_job) + + def test_init(self): + """Test initialization.""" + assert self.transaction_job_to_send.job == self.test_job + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "transaction_job_to_send.TransactionJobToSendSchema.load" + ) + def test_deserialize(self, mock_transaction_job_to_send_schema_load): + """ + Test deserialization. + """ + obj = {"obj": "obj"} + + transaction_job_to_send = TransactionJobToSend.deserialize(obj) + mock_transaction_job_to_send_schema_load.assert_called_once_with(obj) + + assert ( + transaction_job_to_send + is mock_transaction_job_to_send_schema_load.return_value + ) + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "transaction_job_to_send.TransactionJobToSendSchema.dump" + ) + def test_serialize(self, mock_transaction_job_to_send_schema_dump): + """ + Test serialization. + """ + transaction_job_to_send_dict = self.transaction_job_to_send.serialize() + mock_transaction_job_to_send_schema_dump.assert_called_once_with( + self.transaction_job_to_send + ) + + assert ( + transaction_job_to_send_dict + is mock_transaction_job_to_send_schema_dump.return_value + ) + + +class TestTransactionJobToSendSchema(AsyncTestCase, TestConfig): + """Test transaction job to send schema.""" + + async def test_make_model(self): + transaction_job_to_send = TransactionJobToSend(job=self.test_job) + data = transaction_job_to_send.serialize() + model_instance = TransactionJobToSend.deserialize(data) + assert type(model_instance) is type(transaction_job_to_send) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_request.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_request.py new file mode 100644 index 0000000000..1cc60c179f --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_request.py @@ -0,0 +1,118 @@ +from unittest import mock, TestCase + +from asynctest import TestCase as AsyncTestCase + +from .....didcomm_prefix import DIDCommPrefix + +from ...message_types import TRANSACTION_REQUEST + +from ..transaction_request import TransactionRequest + + +class TestConfig: + test_transaction_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + test_signature_request = { + "author_goal_code": "transaction.ledger.write", + "context": "did:sov", + "method": "add-signature", + "signature_type": "", + "signer_goal_code": "transaction.endorse", + } + test_timing = {"expires_time": "1597708800"} + test_transaction_type = "http://didcomm.org/sign-attachment/%VER/signature-request" + test_messages_attach = { + "@id": "143c458d-1b1c-40c7-ab85-4d16808ddf0a", + "mime-type": "application/json", + "data": { + "json": { + "endorser": "V4SGRU86Z58d6TV7PBUe6f", + "identifier": "LjgpST2rjsoxYegQDRm7EL", + "operation": { + "data": { + "attr_names": ["first_name", "last_name"], + "name": "test_schema", + "version": "2.1", + }, + "type": "101", + }, + "protocolVersion": 2, + "reqId": 1597766666168851000, + "signatures": { + "LjgpST2rjsox": "4uq1mUATKMn6Y9sTaGWyuPgjUEw5UBysWNbfSqCfnbm1Vnfw" + }, + "taaAcceptance": { + "mechanism": "manual", + "taaDigest": "f50feca75664270842bd4202c2d6f23e4c6a7e0fc2feb9f62", + "time": 1597708800, + }, + } + }, + } + + +class TestTransactionRequest(TestCase, TestConfig): + def setUp(self): + self.transaction_request = TransactionRequest( + transaction_id=self.test_transaction_id, + signature_request=self.test_signature_request, + timing=self.test_timing, + transaction_type=self.test_transaction_type, + messages_attach=self.test_messages_attach, + ) + + def test_init(self): + """Test initialization.""" + assert self.transaction_request.transaction_id == self.test_transaction_id + assert self.transaction_request.signature_request == self.test_signature_request + assert self.transaction_request.timing == self.test_timing + assert self.transaction_request.transaction_type == self.test_transaction_type + assert self.transaction_request.messages_attach == self.test_messages_attach + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "transaction_request.TransactionRequestSchema.load" + ) + def test_deserialize(self, mock_transaction_request_schema_load): + """ + Test deserialization. + """ + obj = {"obj": "obj"} + + transaction_request = TransactionRequest.deserialize(obj) + mock_transaction_request_schema_load.assert_called_once_with(obj) + + assert transaction_request is mock_transaction_request_schema_load.return_value + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "transaction_request.TransactionRequestSchema.dump" + ) + def test_serialize(self, mock_transaction_request_schema_dump): + """ + Test serialization. + """ + transaction_request_dict = self.transaction_request.serialize() + mock_transaction_request_schema_dump.assert_called_once_with( + self.transaction_request + ) + + assert ( + transaction_request_dict + is mock_transaction_request_schema_dump.return_value + ) + + +class TestTransactionRequestSchema(AsyncTestCase, TestConfig): + """Test transaction request schema.""" + + async def test_make_model(self): + transaction_request = TransactionRequest( + transaction_id=self.test_transaction_id, + signature_request=self.test_signature_request, + timing=self.test_timing, + transaction_type=self.test_transaction_type, + messages_attach=self.test_messages_attach, + ) + data = transaction_request.serialize() + model_instance = TransactionRequest.deserialize(data) + assert type(model_instance) is type(transaction_request) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_resend.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_resend.py new file mode 100644 index 0000000000..d9c4f978b4 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_resend.py @@ -0,0 +1,70 @@ +from unittest import mock, TestCase + +from asynctest import TestCase as AsyncTestCase + +from .....didcomm_prefix import DIDCommPrefix + +from ...message_types import TRANSACTION_RESEND + +from ..transaction_resend import TransactionResend + + +class TestConfig: + test_thread_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + test_state = "resend" + + +class TestCancelTransaction(TestCase, TestConfig): + def setUp(self): + self.transaction_resend = TransactionResend( + thread_id=self.test_thread_id, state=self.test_state + ) + + def test_init(self): + """Test initialization.""" + assert self.transaction_resend.thread_id == self.test_thread_id + assert self.transaction_resend.state == self.test_state + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "transaction_resend.TransactionResendSchema.load" + ) + def test_deserialize(self, mock_transaction_resend_schema_load): + """ + Test deserialization. + """ + obj = {"obj": "obj"} + + transaction_resend = TransactionResend.deserialize(obj) + mock_transaction_resend_schema_load.assert_called_once_with(obj) + + assert transaction_resend is mock_transaction_resend_schema_load.return_value + + @mock.patch( + "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." + "transaction_resend.TransactionResendSchema.dump" + ) + def test_serialize(self, mock_transaction_resend_schema_dump): + """ + Test serialization. + """ + transaction_resend_dict = self.transaction_resend.serialize() + mock_transaction_resend_schema_dump.assert_called_once_with( + self.transaction_resend + ) + + assert ( + transaction_resend_dict is mock_transaction_resend_schema_dump.return_value + ) + + +class TestTransactionResendSchema(AsyncTestCase, TestConfig): + """Test transaction resend schema.""" + + async def test_make_model(self): + transaction_resend = TransactionResend( + thread_id=self.test_thread_id, state=self.test_state + ) + data = transaction_resend.serialize() + model_instance = TransactionResend.deserialize(data) + assert type(model_instance) is type(transaction_resend) From 7a866c2794b028f36931275c1bd128fd85e6063f Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Tue, 29 Dec 2020 16:13:51 +0530 Subject: [PATCH 005/243] Added WEBHOOK_TOPIC in transaction_record.py Signed-off-by: Harsh Multani --- .../endorse_transaction/v1_0/models/transaction_record.py | 1 + 1 file changed, 1 insertion(+) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py index e8d52b14db..27f43abaf1 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py @@ -25,6 +25,7 @@ class Meta: TAG_NAMES = {"state", "thread_id", "connection_id"} RECORD_TYPE = "transaction" STATE_INIT = "init" + WEBHOOK_TOPIC = "endorse_transaction" SIGNATURE_REQUEST = "http://didcomm.org/sign-attachment/%VER/signature-request" From adeb68892f61fda344f60805a565482bcf10b8dc Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Sat, 2 Jan 2021 20:11:57 +0530 Subject: [PATCH 006/243] Moved error handling code from manager to routes (For Endorse Transaction Protocol). Also, added test_manager.py file Signed-off-by: Harsh Multani --- .../credential_definitions/routes.py | 55 ++ aries_cloudagent/messaging/schemas/routes.py | 55 ++ .../endorse_transaction/v1_0/manager.py | 105 ++-- .../endorse_transaction/v1_0/routes.py | 35 +- .../v1_0/tests/__init__.py | 0 .../v1_0/tests/test_manager.py | 481 ++++++++++++++++++ 6 files changed, 655 insertions(+), 76 deletions(-) create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/tests/__init__.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index a1a840db17..b252b4d78d 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -30,6 +30,8 @@ from .util import CredDefQueryStringSchema, CRED_DEF_TAGS, CRED_DEF_SENT_RECORD_TYPE from ...protocols.endorse_transaction.v1_0.manager import TransactionManager +from ...wallet.base import BaseWallet +from ...ledger.base import BaseLedger import json @@ -236,10 +238,63 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq else: transaction_message = await request.json() session = await context.session() + + wallet: BaseWallet = session.inject(BaseWallet, required=False) + if not wallet: + raise web.HTTPForbidden(reason="No wallet available") + author_did_info = await wallet.get_public_did() + if not author_did_info: + raise web.HTTPForbidden(reason="Public DID not found in wallet") + author_did = author_did_info.did + author_verkey = author_did_info.verkey + + ledger: BaseLedger = session.inject(BaseLedger, required=False) + + if not ledger: + reason = "No indy ledger available" + if not session.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) + + async with ledger: + try: + taa_info = await ledger.get_txn_author_agreement() + accepted = None + if taa_info["taa_required"]: + accept_record = await ledger.get_latest_txn_author_acceptance() + if accept_record: + accepted = { + "mechanism": accept_record["mechanism"], + "time": accept_record["time"], + } + taa_info["taa_accepted"] = accepted + except LedgerError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + if taa_info["taa_accepted"] is not None: + mechanism = taa_info["taa_accepted"]["mechanism"] + time = taa_info["taa_accepted"]["time"] + else: + mechanism = None + time = None + + if taa_info["taa_record"] is not None: + taaDigest = taa_info["taa_record"]["digest"] + else: + taaDigest = None + + + transaction_mgr = TransactionManager(session, context.profile) transaction = await transaction_mgr.create_record( + author_did=author_did, + author_verkey=author_verkey, transaction_message=transaction_message, + mechanism=mechanism, + taaDigest=taaDigest, + time=time, + expires_time="1597708800" ) return web.json_response(transaction.serialize()) diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index e46520cf34..bf0ee83aa7 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -24,6 +24,8 @@ from .util import SchemaQueryStringSchema, SCHEMA_SENT_RECORD_TYPE, SCHEMA_TAGS from ...protocols.endorse_transaction.v1_0.manager import TransactionManager +from ...wallet.base import BaseWallet +from ...ledger.base import BaseLedger import json @@ -160,10 +162,63 @@ async def schemas_send_schema(request: web.BaseRequest): else: transaction_message = await request.json() session = await context.session() + + wallet: BaseWallet = session.inject(BaseWallet, required=False) + if not wallet: + raise web.HTTPForbidden(reason="No wallet available") + author_did_info = await wallet.get_public_did() + if not author_did_info: + raise web.HTTPForbidden(reason="Public DID not found in wallet") + author_did = author_did_info.did + author_verkey = author_did_info.verkey + + ledger: BaseLedger = session.inject(BaseLedger, required=False) + + if not ledger: + reason = "No indy ledger available" + if not session.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) + + async with ledger: + try: + taa_info = await ledger.get_txn_author_agreement() + accepted = None + if taa_info["taa_required"]: + accept_record = await ledger.get_latest_txn_author_acceptance() + if accept_record: + accepted = { + "mechanism": accept_record["mechanism"], + "time": accept_record["time"], + } + taa_info["taa_accepted"] = accepted + except LedgerError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + if taa_info["taa_accepted"] is not None: + mechanism = taa_info["taa_accepted"]["mechanism"] + time = taa_info["taa_accepted"]["time"] + else: + mechanism = None + time = None + + if taa_info["taa_record"] is not None: + taaDigest = taa_info["taa_record"]["digest"] + else: + taaDigest = None + + + transaction_mgr = TransactionManager(session, context.profile) transaction = await transaction_mgr.create_record( + author_did=author_did, + author_verkey=author_verkey, transaction_message=transaction_message, + mechanism=mechanism, + taaDigest=taaDigest, + time=time, + expires_time="1597708800" ) return web.json_response(transaction.serialize()) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 162c215c25..c6aa4782fd 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -67,8 +67,13 @@ def profile(self) -> Profile: async def create_record( self, - expires_time: str = None, - transaction_message: dict = {}, + author_did:str, + author_verkey:str, + transaction_message: dict, + mechanism:str, + taaDigest:str, + time:int, + expires_time: str, ): """ Create a new Transaction Record. @@ -78,54 +83,10 @@ async def create_record( transaction_message: The actual data in the transaction payload Returns: - The transaction Record and transaction request + The transaction Record """ - wallet: BaseWallet = self.session.inject(BaseWallet, required=False) - if not wallet: - raise web.HTTPForbidden(reason="No wallet available") - author_did_info = await wallet.get_public_did() - if not author_did_info: - raise web.HTTPForbidden(reason="Public DID not found in wallet") - author_did = author_did_info.did - author_verkey = author_did_info.verkey - - ledger: BaseLedger = self.session.inject(BaseLedger, required=False) - - if not ledger: - reason = "No indy ledger available" - if not self.session.settings.get_value("wallet.type"): - reason += ": missing wallet-type?" - raise web.HTTPForbidden(reason=reason) - - async with ledger: - try: - taa_info = await ledger.get_txn_author_agreement() - accepted = None - if taa_info["taa_required"]: - accept_record = await ledger.get_latest_txn_author_acceptance() - if accept_record: - accepted = { - "mechanism": accept_record["mechanism"], - "time": accept_record["time"], - } - taa_info["taa_accepted"] = accepted - except LedgerError as err: - raise web.HTTPBadRequest(reason=err.roll_up) from err - - if taa_info["taa_accepted"] is not None: - mechanism = taa_info["taa_accepted"]["mechanism"] - time = taa_info["taa_accepted"]["time"] - else: - mechanism = None - time = None - - if taa_info["taa_record"] is not None: - taaDigest = taa_info["taa_record"]["digest"] - else: - taaDigest = None - messages_attach = MessagesAttach( author_did=author_did, author_verkey=author_verkey, @@ -149,7 +110,7 @@ async def create_record( transaction.signature_request.clear() transaction.signature_request.append(signature_request) - timing = {"expires_time": "1597708800"} + timing = {"expires_time": expires_time} transaction.timing = timing formats = { @@ -169,7 +130,7 @@ async def create_record( return transaction async def create_request( - self, transaction: TransactionRecord, connection_id: str = None + self, transaction: TransactionRecord, connection_id: str ): """ Create a new Transaction Request. @@ -229,8 +190,14 @@ async def receive_request(self, request: TransactionRequest): async with self._profile.session() as session: await transaction.save(session, reason="Change it") + return transaction + async def create_endorse_response( - self, transaction: TransactionRecord = None, state: str = None + self, + transaction: TransactionRecord, + state: str, + endorser_did: str, + endorser_verkey: str ): """ Create a response to endorse a transaction. @@ -244,15 +211,6 @@ async def create_endorse_response( """ - wallet: BaseWallet = self.session.inject(BaseWallet, required=False) - if not wallet: - raise web.HTTPForbidden(reason="No wallet available") - endorser_did_info = await wallet.get_public_did() - if not endorser_did_info: - raise web.HTTPForbidden(reason="Public DID not found in wallet") - endorser_did = endorser_did_info.did - endorser_verkey = endorser_did_info.verkey - transaction.messages_attach[0]["data"]["json"]["endorser"] = endorser_did transaction._type = TransactionRecord.SIGNATURE_RESPONSE @@ -309,9 +267,14 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): async with self._profile.session() as session: await transaction.save(session, reason="Change it") + + return transaction async def create_refuse_response( - self, transaction: TransactionRecord = None, state: str = None + self, + transaction: TransactionRecord, + state: str, + refuser_did :str ): """ Create a response to refuse a transaction. @@ -325,15 +288,7 @@ async def create_refuse_response( """ - wallet: BaseWallet = self.session.inject(BaseWallet, required=False) - if not wallet: - raise web.HTTPForbidden(reason="No wallet available") - endorser_did_info = await wallet.get_public_did() - if not endorser_did_info: - raise web.HTTPForbidden(reason="Public DID not found in wallet") - endorser_did = endorser_did_info.did - - transaction.messages_attach[0]["data"]["json"]["endorser"] = endorser_did + transaction.messages_attach[0]["data"]["json"]["endorser"] = refuser_did transaction._type = TransactionRecord.SIGNATURE_RESPONSE @@ -356,7 +311,7 @@ async def create_refuse_response( thread_id=transaction._id, signature_response=signature_response, state=state, - endorser_did=endorser_did, + endorser_did=refuser_did, ) return transaction, refused_transaction_response @@ -387,8 +342,10 @@ async def receive_refuse_response(self, response: RefusedTransactionResponse): async with self._profile.session() as session: await transaction.save(session, reason="Change it") + return transaction + async def cancel_transaction( - self, transaction: TransactionRecord = None, state: str = None + self, transaction: TransactionRecord, state: str ): """ Cancel a Transaction Request. @@ -429,8 +386,10 @@ async def receive_cancel_transaction(self, response: CancelTransaction): async with self._profile.session() as session: await transaction.save(session, reason="Change it") + return transaction + async def transaction_resend( - self, transaction: TransactionRecord = None, state: str = None + self, transaction: TransactionRecord, state: str ): """ Resend a transaction request. @@ -471,6 +430,8 @@ async def receive_transaction_resend(self, response: TransactionResend): async with self._profile.session() as session: await transaction.save(session, reason="Change it") + return transaction + async def set_transaction_my_job(self, record: ConnRecord, transaction_my_job: str): """ Set transaction_my_job. diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index f1d93bc44a..9de36a8c83 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -21,6 +21,8 @@ from ....storage.error import StorageError, StorageNotFoundError from .transaction_jobs import TransactionJob +from ....wallet.base import BaseWallet + class TransactionListSchema(OpenAPISchema): """Result schema for transaction list.""" @@ -198,6 +200,17 @@ async def endorse_transaction_response(request: web.BaseRequest): context: AdminRequestContext = request["context"] outbound_handler = request["outbound_message_router"] + session = await context.session() + + wallet: BaseWallet = session.inject(BaseWallet, required=False) + + if not wallet: + raise web.HTTPForbidden(reason="No wallet available") + endorser_did_info = await wallet.get_public_did() + if not endorser_did_info: + raise web.HTTPForbidden(reason="Public DID not found in wallet") + endorser_did = endorser_did_info.did + endorser_verkey = endorser_did_info.verkey transaction_id = request.match_info["tran_id"] try: @@ -210,13 +223,15 @@ async def endorse_transaction_response(request: web.BaseRequest): if transaction.state == "request" or transaction.state == "resend": - session = await context.session() transaction_mgr = TransactionManager(session, context.profile) ( transaction, endorsed_transaction_response, ) = await transaction_mgr.create_endorse_response( - transaction=transaction, state="endorsed" + transaction=transaction, + state="endorsed", + endorser_did=endorser_did, + endorser_verkey=endorser_verkey ) await outbound_handler( @@ -249,6 +264,17 @@ async def refuse_transaction_response(request: web.BaseRequest): context: AdminRequestContext = request["context"] outbound_handler = request["outbound_message_router"] + session = await context.session() + + wallet: BaseWallet = session.inject(BaseWallet, required=False) + + if not wallet: + raise web.HTTPForbidden(reason="No wallet available") + refuser_did_info = await wallet.get_public_did() + if not refuser_did_info: + raise web.HTTPForbidden(reason="Public DID not found in wallet") + refuser_did = refuser_did_info.did + transaction_id = request.match_info["tran_id"] try: @@ -261,13 +287,14 @@ async def refuse_transaction_response(request: web.BaseRequest): if transaction.state == "request" or transaction.state == "resend": - session = await context.session() transaction_mgr = TransactionManager(session, context.profile) ( transaction, refused_transaction_response, ) = await transaction_mgr.create_refuse_response( - transaction=transaction, state="refused" + transaction=transaction, + state="refused", + refuser_did=refuser_did ) await outbound_handler( diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/__init__.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py new file mode 100644 index 0000000000..9e0bbaf52d --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py @@ -0,0 +1,481 @@ +from asynctest import TestCase as AsyncTestCase +from asynctest import mock as async_mock +from .....core.in_memory import InMemoryProfile +from .....wallet.in_memory import InMemoryWallet + +from ..manager import TransactionManager +from ..models.transaction_record import TransactionRecord +from .....connections.models.conn_record import ConnRecord + +from ..messages.transaction_request import TransactionRequest + + +class TestTransactionManager(AsyncTestCase): + async def setUp(self): + + self.session = InMemoryProfile.test_session() + self.profile = self.session.profile + + self.test_connection_id="3fa85f64-5717-4562-b3fc-2c963f66afa6" + self.test_receivers_connection_id="3fa85f64-5717-4562-b3fc-2c963f66afa7" + + self.session.connection_record = ConnRecord(connection_id=self.test_receivers_connection_id) + + self.test_author_did = "55GkHamhTU1ZbTbV2ab9DE" + self.test_author_verkey = "3Dn1SJNPaCXcvvJvSbsFWP2xaCjMom3can8CQNhWrTRx" + self.test_endorser_did = "GbuDUYXaUZRfHD2jeDuQuP" + self.test_endorser_verkey = "9WCgWKUaAJj3VWxxtzvvMQN3AoFxoBtBDo9ntwJnVVCC" + self.test_refuser_did = "GbuDUYXaUZRfHD2jeDuQuP" + self.test_transaction_message = { + "attributes": [ + "score" + ], + "schema_name": "prefs", + "schema_version": "1.0" + } + self.test_mechanism="manual" + self.test_taaDigest="f50feca75664270842bd4202c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62" + self.test_time=1597708800 + self.test_expires_time="2020-12-13T17:29:06+0000" + self.test_connection_id="3fa85f64-5717-4562-b3fc-2c963f66afa6" + + self.test_request_type = "http://didcomm.org/sign-attachment/%VER/signature-request" + self.test_response_type = "http://didcomm.org/sign-attachment/%VER/signature-response" + + self.test_signature_request = { + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "author_goal_code": TransactionRecord.WRITE_TRANSACTION, + } + + self.test_format = TransactionRecord.FORMAT_VERSION + + self.manager = TransactionManager(self.session, self.profile) + + assert self.manager.session + assert self.manager.profile + + async def test_create_record(self): + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + save_record.assert_called_once() + + + assert transaction_record._type == self.test_request_type + assert transaction_record.signature_request[0] == self.test_signature_request + assert transaction_record.timing == { + "expires_time" : self.test_expires_time + } + assert transaction_record.formats[0]["format"] == self.test_format + + assert transaction_record.messages_attach[0]["data"]["json"]["identifier"] == self.test_author_did + assert transaction_record.messages_attach[0]["data"]["json"]["signatures"] == { + self.test_author_did : self.test_author_verkey + } + assert transaction_record.messages_attach[0]["data"]["json"]["operation"]["data"] == self.test_transaction_message + assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["mechanism"] == self.test_mechanism + assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["taaDigest"] == self.test_taaDigest + assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["time"] == self.test_time + assert transaction_record.state == "created" + + + async def test_create_request(self): + + transaction_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + ( + transaction_record, + transaction_request + ) = await self.manager.create_request(transaction_record, self.test_connection_id) + save_record.assert_called_once() + + assert transaction_record.state == "request" + assert transaction_record.connection_id == self.test_connection_id + + assert transaction_request.transaction_id == transaction_record._id + assert transaction_request.signature_request == transaction_record.signature_request[0] + assert transaction_request.timing == transaction_record.timing + assert transaction_request.messages_attach == transaction_record.messages_attach[0] + + + async def test_receive_request(self): + + transaction_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + + transaction_request = TransactionRequest( + transaction_id=transaction_record._id, + signature_request=transaction_record.signature_request[0], + timing=transaction_record.timing, + messages_attach=transaction_record.messages_attach[0], + ) + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_record = await self.manager.receive_request(transaction_request) + save_record.assert_called_once() + + assert transaction_record._type == self.test_request_type + assert transaction_record.signature_request[0] == self.test_signature_request + assert transaction_record.timing == { + "expires_time" : self.test_expires_time + } + assert transaction_record.formats[0]["format"] == self.test_format + + assert transaction_record.messages_attach[0]["data"]["json"]["identifier"] == self.test_author_did + assert transaction_record.messages_attach[0]["data"]["json"]["signatures"] == { + self.test_author_did : self.test_author_verkey + } + assert transaction_record.messages_attach[0]["data"]["json"]["operation"]["data"] == self.test_transaction_message + assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["mechanism"] == self.test_mechanism + assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["taaDigest"] == self.test_taaDigest + assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["time"] == self.test_time + + assert transaction_record.thread_id == transaction_request.transaction_id + assert transaction_record.connection_id == self.test_receivers_connection_id + assert transaction_record.state == "request" + + async def test_create_endorse_response(self): + + transaction_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + ( + transaction_record, + endorsed_response + ) = await self.manager.create_endorse_response( + transaction_record, + state="endorsed", + endorser_did=self.test_endorser_did, + endorser_verkey=self.test_endorser_verkey, + ) + save_record.assert_called_once() + + assert transaction_record.messages_attach[0]["data"]["json"]["endorser"] == self.test_endorser_did + assert transaction_record._type == self.test_response_type + assert transaction_record.signature_response[0] == { + "message_id": transaction_record.messages_attach[0]["_message_id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {self.test_endorser_did: self.test_endorser_verkey}, + } + assert transaction_record.state == "endorsed" + + assert endorsed_response.transaction_id == transaction_record.thread_id + assert endorsed_response.thread_id == transaction_record._id + assert endorsed_response.signature_response == { + "message_id": transaction_record.messages_attach[0]["_message_id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {self.test_endorser_did: self.test_endorser_verkey}, + } + assert endorsed_response.state == "endorsed" + assert endorsed_response.endorser_did == self.test_endorser_did + + async def test_receive_endorse_response(self): + + transaction_author_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + + transaction_author_request = TransactionRequest( + transaction_id=transaction_author_record._id, + signature_request=transaction_author_record.signature_request[0], + timing=transaction_author_record.timing, + messages_attach=transaction_author_record.messages_attach[0], + ) + + transaction_endorser_record = await self.manager.receive_request(transaction_author_request) + + ( + transaction_author_record, + endorsed_transaction_response + ) = await self.manager.create_endorse_response( + transaction_author_record, + state="endorsed", + endorser_did=self.test_endorser_did, + endorser_verkey=self.test_endorser_verkey, + ) + + endorsed_transaction_response.transaction_id = transaction_endorser_record ._id + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_endorser_record = await self.manager.receive_endorse_response( + endorsed_transaction_response + ) + + save_record.assert_called_once() + + assert transaction_endorser_record._type == self.test_response_type + assert transaction_endorser_record.state == endorsed_transaction_response.state + assert transaction_endorser_record.signature_response[0] == endorsed_transaction_response.signature_response + assert transaction_endorser_record.thread_id == endorsed_transaction_response.thread_id + assert transaction_endorser_record.messages_attach[0]["data"]["json"]["endorser"] == self.test_endorser_did + + async def test_create_refuse_response(self): + + transaction_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + ( + transaction_record, + refused_response + ) = await self.manager.create_refuse_response( + transaction_record, + state="refused", + refuser_did=self.test_refuser_did, + ) + save_record.assert_called_once() + + assert transaction_record.messages_attach[0]["data"]["json"]["endorser"] == self.test_refuser_did + assert transaction_record._type == self.test_response_type + assert transaction_record.signature_response[0] == { + "message_id": transaction_record.messages_attach[0]["_message_id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, + } + assert transaction_record.state == "refused" + + assert refused_response.transaction_id == transaction_record.thread_id + assert refused_response.thread_id == transaction_record._id + assert refused_response.signature_response == { + "message_id": transaction_record.messages_attach[0]["_message_id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, + } + assert refused_response.state == "refused" + assert refused_response.endorser_did == self.test_refuser_did + + async def test_receive_refuse_response(self): + + transaction_author_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + + transaction_author_request = TransactionRequest( + transaction_id=transaction_author_record._id, + signature_request=transaction_author_record.signature_request[0], + timing=transaction_author_record.timing, + messages_attach=transaction_author_record.messages_attach[0], + ) + + transaction_refuser_record = await self.manager.receive_request(transaction_author_request) + + ( + transaction_author_record, + refused_transaction_response + ) = await self.manager.create_refuse_response( + transaction_author_record, + state="refused", + refuser_did=self.test_refuser_did, + ) + + refused_transaction_response.transaction_id = transaction_refuser_record ._id + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_refuser_record = await self.manager.receive_refuse_response( + refused_transaction_response + ) + + save_record.assert_called_once() + + assert transaction_refuser_record._type == self.test_response_type + assert transaction_refuser_record.state == refused_transaction_response.state + assert transaction_refuser_record.signature_response[0] == refused_transaction_response.signature_response + assert transaction_refuser_record.thread_id == refused_transaction_response.thread_id + assert transaction_refuser_record.messages_attach[0]["data"]["json"]["endorser"] == self.test_refuser_did + + async def test_cancel_transaction(self): + + transaction_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + ( + transaction_record, + cancelled_transaction_response + ) = await self.manager.cancel_transaction(transaction_record, state="cancelled") + save_record.assert_called_once() + + assert transaction_record.state == "cancelled" + + assert cancelled_transaction_response.state == "cancelled" + assert cancelled_transaction_response.thread_id == transaction_record._id + + async def test_receive_cancel_transaction(self): + + transaction_sender_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + + transaction_sender_request = TransactionRequest( + transaction_id=transaction_sender_record._id, + signature_request=transaction_sender_record.signature_request[0], + timing=transaction_sender_record.timing, + messages_attach=transaction_sender_record.messages_attach[0], + ) + + transaction_receiver_record = await self.manager.receive_request(transaction_sender_request) + + ( + transaction_sender_record, + cancelled_transaction_response + ) = await self.manager.cancel_transaction(transaction_sender_record, state="cancelled") + + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_receiver_record = await self.manager.receive_cancel_transaction(cancelled_transaction_response) + save_record.assert_called_once() + + assert transaction_receiver_record.state == "cancelled" + + async def test_transaction_resend(self): + + transaction_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + ( + transaction_record, + resend_transaction_response + ) = await self.manager.transaction_resend(transaction_record, state="resend") + save_record.assert_called_once() + + assert transaction_record.state == "resend" + + assert resend_transaction_response.state == "resend" + assert resend_transaction_response.thread_id == transaction_record._id + + async def test_receive_transaction_resend(self): + + transaction_sender_record = await self.manager.create_record( + author_did=self.test_author_did, + author_verkey=self.test_author_verkey, + transaction_message=self.test_transaction_message, + mechanism=self.test_mechanism, + taaDigest=self.test_taaDigest, + time=self.test_time, + expires_time=self.test_expires_time + ) + + transaction_sender_request = TransactionRequest( + transaction_id=transaction_sender_record._id, + signature_request=transaction_sender_record.signature_request[0], + timing=transaction_sender_record.timing, + messages_attach=transaction_sender_record.messages_attach[0], + ) + + transaction_receiver_record = await self.manager.receive_request(transaction_sender_request) + + ( + transaction_sender_record, + resend_transaction_response + ) = await self.manager.transaction_resend(transaction_sender_record, state="resend") + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_receiver_record = await self.manager.receive_transaction_resend(resend_transaction_response) + save_record.assert_called_once() + + assert transaction_receiver_record.state == "resend" \ No newline at end of file From 9fad2f6f8e37ef5d99f2b4775c0ba4ef7be55e7e Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Sat, 2 Jan 2021 20:24:58 +0530 Subject: [PATCH 007/243] Rectified Formatting of the code (Black, Flake8) Signed-off-by: Harsh Multani --- .../credential_definitions/routes.py | 5 +- aries_cloudagent/messaging/schemas/routes.py | 5 +- .../endorse_transaction/v1_0/manager.py | 37 +- .../endorse_transaction/v1_0/routes.py | 7 +- .../v1_0/tests/test_manager.py | 339 +++++++++++------- 5 files changed, 231 insertions(+), 162 deletions(-) diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index b252b4d78d..a63c225f22 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -31,7 +31,6 @@ from ...protocols.endorse_transaction.v1_0.manager import TransactionManager from ...wallet.base import BaseWallet -from ...ledger.base import BaseLedger import json @@ -283,8 +282,6 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq else: taaDigest = None - - transaction_mgr = TransactionManager(session, context.profile) transaction = await transaction_mgr.create_record( @@ -294,7 +291,7 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq mechanism=mechanism, taaDigest=taaDigest, time=time, - expires_time="1597708800" + expires_time="1597708800", ) return web.json_response(transaction.serialize()) diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index bf0ee83aa7..b06d474ef3 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -25,7 +25,6 @@ from ...protocols.endorse_transaction.v1_0.manager import TransactionManager from ...wallet.base import BaseWallet -from ...ledger.base import BaseLedger import json @@ -207,8 +206,6 @@ async def schemas_send_schema(request: web.BaseRequest): else: taaDigest = None - - transaction_mgr = TransactionManager(session, context.profile) transaction = await transaction_mgr.create_record( @@ -218,7 +215,7 @@ async def schemas_send_schema(request: web.BaseRequest): mechanism=mechanism, taaDigest=taaDigest, time=time, - expires_time="1597708800" + expires_time="1597708800", ) return web.json_response(transaction.serialize()) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index c6aa4782fd..8187cd8097 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -16,12 +16,8 @@ from ....transport.inbound.receipt import MessageReceipt from ....storage.error import StorageNotFoundError -from ....ledger.base import BaseLedger from ....core.error import BaseError from ....core.profile import Profile, ProfileSession -from ....ledger.error import LedgerError - -from ....wallet.base import BaseWallet class TransactionManagerError(BaseError): @@ -67,13 +63,13 @@ def profile(self) -> Profile: async def create_record( self, - author_did:str, - author_verkey:str, + author_did: str, + author_verkey: str, transaction_message: dict, - mechanism:str, - taaDigest:str, - time:int, - expires_time: str, + mechanism: str, + taaDigest: str, + time: int, + expires_time: str, ): """ Create a new Transaction Record. @@ -129,9 +125,7 @@ async def create_record( return transaction - async def create_request( - self, transaction: TransactionRecord, connection_id: str - ): + async def create_request(self, transaction: TransactionRecord, connection_id: str): """ Create a new Transaction Request. @@ -197,7 +191,7 @@ async def create_endorse_response( transaction: TransactionRecord, state: str, endorser_did: str, - endorser_verkey: str + endorser_verkey: str, ): """ Create a response to endorse a transaction. @@ -267,14 +261,11 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): async with self._profile.session() as session: await transaction.save(session, reason="Change it") - + return transaction async def create_refuse_response( - self, - transaction: TransactionRecord, - state: str, - refuser_did :str + self, transaction: TransactionRecord, state: str, refuser_did: str ): """ Create a response to refuse a transaction. @@ -344,9 +335,7 @@ async def receive_refuse_response(self, response: RefusedTransactionResponse): return transaction - async def cancel_transaction( - self, transaction: TransactionRecord, state: str - ): + async def cancel_transaction(self, transaction: TransactionRecord, state: str): """ Cancel a Transaction Request. @@ -388,9 +377,7 @@ async def receive_cancel_transaction(self, response: CancelTransaction): return transaction - async def transaction_resend( - self, transaction: TransactionRecord, state: str - ): + async def transaction_resend(self, transaction: TransactionRecord, state: str): """ Resend a transaction request. diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 9de36a8c83..3c32fa56f0 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -231,7 +231,7 @@ async def endorse_transaction_response(request: web.BaseRequest): transaction=transaction, state="endorsed", endorser_did=endorser_did, - endorser_verkey=endorser_verkey + endorser_verkey=endorser_verkey, ) await outbound_handler( @@ -275,7 +275,6 @@ async def refuse_transaction_response(request: web.BaseRequest): raise web.HTTPForbidden(reason="Public DID not found in wallet") refuser_did = refuser_did_info.did - transaction_id = request.match_info["tran_id"] try: async with context.session() as session: @@ -292,9 +291,7 @@ async def refuse_transaction_response(request: web.BaseRequest): transaction, refused_transaction_response, ) = await transaction_mgr.create_refuse_response( - transaction=transaction, - state="refused", - refuser_did=refuser_did + transaction=transaction, state="refused", refuser_did=refuser_did ) await outbound_handler( diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py index 9e0bbaf52d..b2d9d8ac4e 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py @@ -12,14 +12,16 @@ class TestTransactionManager(AsyncTestCase): async def setUp(self): - + self.session = InMemoryProfile.test_session() self.profile = self.session.profile - self.test_connection_id="3fa85f64-5717-4562-b3fc-2c963f66afa6" - self.test_receivers_connection_id="3fa85f64-5717-4562-b3fc-2c963f66afa7" + self.test_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + self.test_receivers_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa7" - self.session.connection_record = ConnRecord(connection_id=self.test_receivers_connection_id) + self.session.connection_record = ConnRecord( + connection_id=self.test_receivers_connection_id + ) self.test_author_did = "55GkHamhTU1ZbTbV2ab9DE" self.test_author_verkey = "3Dn1SJNPaCXcvvJvSbsFWP2xaCjMom3can8CQNhWrTRx" @@ -27,20 +29,24 @@ async def setUp(self): self.test_endorser_verkey = "9WCgWKUaAJj3VWxxtzvvMQN3AoFxoBtBDo9ntwJnVVCC" self.test_refuser_did = "GbuDUYXaUZRfHD2jeDuQuP" self.test_transaction_message = { - "attributes": [ - "score" - ], - "schema_name": "prefs", - "schema_version": "1.0" - } - self.test_mechanism="manual" - self.test_taaDigest="f50feca75664270842bd4202c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62" - self.test_time=1597708800 - self.test_expires_time="2020-12-13T17:29:06+0000" - self.test_connection_id="3fa85f64-5717-4562-b3fc-2c963f66afa6" - - self.test_request_type = "http://didcomm.org/sign-attachment/%VER/signature-request" - self.test_response_type = "http://didcomm.org/sign-attachment/%VER/signature-response" + "attributes": ["score"], + "schema_name": "prefs", + "schema_version": "1.0", + } + self.test_mechanism = "manual" + self.test_taaDigest = ( + "f50feca75664270842bd4202c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62" + ) + self.test_time = 1597708800 + self.test_expires_time = "2020-12-13T17:29:06+0000" + self.test_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + + self.test_request_type = ( + "http://didcomm.org/sign-attachment/%VER/signature-request" + ) + self.test_response_type = ( + "http://didcomm.org/sign-attachment/%VER/signature-response" + ) self.test_signature_request = { "context": TransactionRecord.SIGNATURE_CONTEXT, @@ -50,7 +56,7 @@ async def setUp(self): "author_goal_code": TransactionRecord.WRITE_TRANSACTION, } - self.test_format = TransactionRecord.FORMAT_VERSION + self.test_format = TransactionRecord.FORMAT_VERSION self.manager = TransactionManager(self.session, self.profile) @@ -69,28 +75,45 @@ async def test_create_record(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) save_record.assert_called_once() - - + assert transaction_record._type == self.test_request_type assert transaction_record.signature_request[0] == self.test_signature_request - assert transaction_record.timing == { - "expires_time" : self.test_expires_time - } + assert transaction_record.timing == {"expires_time": self.test_expires_time} assert transaction_record.formats[0]["format"] == self.test_format - - assert transaction_record.messages_attach[0]["data"]["json"]["identifier"] == self.test_author_did + + assert ( + transaction_record.messages_attach[0]["data"]["json"]["identifier"] + == self.test_author_did + ) assert transaction_record.messages_attach[0]["data"]["json"]["signatures"] == { - self.test_author_did : self.test_author_verkey + self.test_author_did: self.test_author_verkey } - assert transaction_record.messages_attach[0]["data"]["json"]["operation"]["data"] == self.test_transaction_message - assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["mechanism"] == self.test_mechanism - assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["taaDigest"] == self.test_taaDigest - assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["time"] == self.test_time + assert ( + transaction_record.messages_attach[0]["data"]["json"]["operation"]["data"] + == self.test_transaction_message + ) + assert ( + transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ + "mechanism" + ] + == self.test_mechanism + ) + assert ( + transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ + "taaDigest" + ] + == self.test_taaDigest + ) + assert ( + transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ + "time" + ] + == self.test_time + ) assert transaction_record.state == "created" - async def test_create_request(self): @@ -101,26 +124,32 @@ async def test_create_request(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) - + with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: ( - transaction_record, - transaction_request - ) = await self.manager.create_request(transaction_record, self.test_connection_id) + transaction_record, + transaction_request, + ) = await self.manager.create_request( + transaction_record, self.test_connection_id + ) save_record.assert_called_once() assert transaction_record.state == "request" assert transaction_record.connection_id == self.test_connection_id assert transaction_request.transaction_id == transaction_record._id - assert transaction_request.signature_request == transaction_record.signature_request[0] + assert ( + transaction_request.signature_request + == transaction_record.signature_request[0] + ) assert transaction_request.timing == transaction_record.timing - assert transaction_request.messages_attach == transaction_record.messages_attach[0] - + assert ( + transaction_request.messages_attach == transaction_record.messages_attach[0] + ) async def test_receive_request(self): @@ -131,7 +160,7 @@ async def test_receive_request(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_request = TransactionRequest( @@ -143,25 +172,44 @@ async def test_receive_request(self): with async_mock.patch.object( TransactionRecord, "save", autospec=True - ) as save_record: + ) as save_record: transaction_record = await self.manager.receive_request(transaction_request) save_record.assert_called_once() assert transaction_record._type == self.test_request_type assert transaction_record.signature_request[0] == self.test_signature_request - assert transaction_record.timing == { - "expires_time" : self.test_expires_time - } + assert transaction_record.timing == {"expires_time": self.test_expires_time} assert transaction_record.formats[0]["format"] == self.test_format - assert transaction_record.messages_attach[0]["data"]["json"]["identifier"] == self.test_author_did + assert ( + transaction_record.messages_attach[0]["data"]["json"]["identifier"] + == self.test_author_did + ) assert transaction_record.messages_attach[0]["data"]["json"]["signatures"] == { - self.test_author_did : self.test_author_verkey + self.test_author_did: self.test_author_verkey } - assert transaction_record.messages_attach[0]["data"]["json"]["operation"]["data"] == self.test_transaction_message - assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["mechanism"] == self.test_mechanism - assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["taaDigest"] == self.test_taaDigest - assert transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"]["time"] == self.test_time + assert ( + transaction_record.messages_attach[0]["data"]["json"]["operation"]["data"] + == self.test_transaction_message + ) + assert ( + transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ + "mechanism" + ] + == self.test_mechanism + ) + assert ( + transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ + "taaDigest" + ] + == self.test_taaDigest + ) + assert ( + transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ + "time" + ] + == self.test_time + ) assert transaction_record.thread_id == transaction_request.transaction_id assert transaction_record.connection_id == self.test_receivers_connection_id @@ -176,24 +224,27 @@ async def test_create_endorse_response(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: ( - transaction_record, - endorsed_response + transaction_record, + endorsed_response, ) = await self.manager.create_endorse_response( - transaction_record, - state="endorsed", - endorser_did=self.test_endorser_did, - endorser_verkey=self.test_endorser_verkey, - ) - save_record.assert_called_once() - - assert transaction_record.messages_attach[0]["data"]["json"]["endorser"] == self.test_endorser_did + transaction_record, + state="endorsed", + endorser_did=self.test_endorser_did, + endorser_verkey=self.test_endorser_verkey, + ) + save_record.assert_called_once() + + assert ( + transaction_record.messages_attach[0]["data"]["json"]["endorser"] + == self.test_endorser_did + ) assert transaction_record._type == self.test_response_type assert transaction_record.signature_response[0] == { "message_id": transaction_record.messages_attach[0]["_message_id"], @@ -227,7 +278,7 @@ async def test_receive_endorse_response(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_author_request = TransactionRequest( @@ -237,34 +288,45 @@ async def test_receive_endorse_response(self): messages_attach=transaction_author_record.messages_attach[0], ) - transaction_endorser_record = await self.manager.receive_request(transaction_author_request) + transaction_endorser_record = await self.manager.receive_request( + transaction_author_request + ) ( transaction_author_record, - endorsed_transaction_response + endorsed_transaction_response, ) = await self.manager.create_endorse_response( - transaction_author_record, - state="endorsed", - endorser_did=self.test_endorser_did, - endorser_verkey=self.test_endorser_verkey, - ) - - endorsed_transaction_response.transaction_id = transaction_endorser_record ._id - + transaction_author_record, + state="endorsed", + endorser_did=self.test_endorser_did, + endorser_verkey=self.test_endorser_verkey, + ) + + endorsed_transaction_response.transaction_id = transaction_endorser_record._id + with async_mock.patch.object( TransactionRecord, "save", autospec=True - ) as save_record: + ) as save_record: transaction_endorser_record = await self.manager.receive_endorse_response( - endorsed_transaction_response - ) + endorsed_transaction_response + ) save_record.assert_called_once() assert transaction_endorser_record._type == self.test_response_type assert transaction_endorser_record.state == endorsed_transaction_response.state - assert transaction_endorser_record.signature_response[0] == endorsed_transaction_response.signature_response - assert transaction_endorser_record.thread_id == endorsed_transaction_response.thread_id - assert transaction_endorser_record.messages_attach[0]["data"]["json"]["endorser"] == self.test_endorser_did + assert ( + transaction_endorser_record.signature_response[0] + == endorsed_transaction_response.signature_response + ) + assert ( + transaction_endorser_record.thread_id + == endorsed_transaction_response.thread_id + ) + assert ( + transaction_endorser_record.messages_attach[0]["data"]["json"]["endorser"] + == self.test_endorser_did + ) async def test_create_refuse_response(self): @@ -275,23 +337,26 @@ async def test_create_refuse_response(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: ( - transaction_record, - refused_response + transaction_record, + refused_response, ) = await self.manager.create_refuse_response( - transaction_record, - state="refused", - refuser_did=self.test_refuser_did, - ) + transaction_record, + state="refused", + refuser_did=self.test_refuser_did, + ) save_record.assert_called_once() - assert transaction_record.messages_attach[0]["data"]["json"]["endorser"] == self.test_refuser_did + assert ( + transaction_record.messages_attach[0]["data"]["json"]["endorser"] + == self.test_refuser_did + ) assert transaction_record._type == self.test_response_type assert transaction_record.signature_response[0] == { "message_id": transaction_record.messages_attach[0]["_message_id"], @@ -321,7 +386,7 @@ async def test_receive_refuse_response(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_author_request = TransactionRequest( @@ -331,33 +396,44 @@ async def test_receive_refuse_response(self): messages_attach=transaction_author_record.messages_attach[0], ) - transaction_refuser_record = await self.manager.receive_request(transaction_author_request) + transaction_refuser_record = await self.manager.receive_request( + transaction_author_request + ) ( transaction_author_record, - refused_transaction_response + refused_transaction_response, ) = await self.manager.create_refuse_response( - transaction_author_record, - state="refused", - refuser_did=self.test_refuser_did, - ) + transaction_author_record, + state="refused", + refuser_did=self.test_refuser_did, + ) - refused_transaction_response.transaction_id = transaction_refuser_record ._id + refused_transaction_response.transaction_id = transaction_refuser_record._id with async_mock.patch.object( TransactionRecord, "save", autospec=True - ) as save_record: + ) as save_record: transaction_refuser_record = await self.manager.receive_refuse_response( - refused_transaction_response - ) + refused_transaction_response + ) save_record.assert_called_once() assert transaction_refuser_record._type == self.test_response_type assert transaction_refuser_record.state == refused_transaction_response.state - assert transaction_refuser_record.signature_response[0] == refused_transaction_response.signature_response - assert transaction_refuser_record.thread_id == refused_transaction_response.thread_id - assert transaction_refuser_record.messages_attach[0]["data"]["json"]["endorser"] == self.test_refuser_did + assert ( + transaction_refuser_record.signature_response[0] + == refused_transaction_response.signature_response + ) + assert ( + transaction_refuser_record.thread_id + == refused_transaction_response.thread_id + ) + assert ( + transaction_refuser_record.messages_attach[0]["data"]["json"]["endorser"] + == self.test_refuser_did + ) async def test_cancel_transaction(self): @@ -368,16 +444,18 @@ async def test_cancel_transaction(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: ( - transaction_record, - cancelled_transaction_response - ) = await self.manager.cancel_transaction(transaction_record, state="cancelled") + transaction_record, + cancelled_transaction_response, + ) = await self.manager.cancel_transaction( + transaction_record, state="cancelled" + ) save_record.assert_called_once() assert transaction_record.state == "cancelled" @@ -394,7 +472,7 @@ async def test_receive_cancel_transaction(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_sender_request = TransactionRequest( @@ -404,18 +482,23 @@ async def test_receive_cancel_transaction(self): messages_attach=transaction_sender_record.messages_attach[0], ) - transaction_receiver_record = await self.manager.receive_request(transaction_sender_request) + transaction_receiver_record = await self.manager.receive_request( + transaction_sender_request + ) ( - transaction_sender_record, - cancelled_transaction_response - ) = await self.manager.cancel_transaction(transaction_sender_record, state="cancelled") + transaction_sender_record, + cancelled_transaction_response, + ) = await self.manager.cancel_transaction( + transaction_sender_record, state="cancelled" + ) - with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: - transaction_receiver_record = await self.manager.receive_cancel_transaction(cancelled_transaction_response) + transaction_receiver_record = await self.manager.receive_cancel_transaction( + cancelled_transaction_response + ) save_record.assert_called_once() assert transaction_receiver_record.state == "cancelled" @@ -429,16 +512,18 @@ async def test_transaction_resend(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: ( - transaction_record, - resend_transaction_response - ) = await self.manager.transaction_resend(transaction_record, state="resend") + transaction_record, + resend_transaction_response, + ) = await self.manager.transaction_resend( + transaction_record, state="resend" + ) save_record.assert_called_once() assert transaction_record.state == "resend" @@ -455,7 +540,7 @@ async def test_receive_transaction_resend(self): mechanism=self.test_mechanism, taaDigest=self.test_taaDigest, time=self.test_time, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_sender_request = TransactionRequest( @@ -465,17 +550,23 @@ async def test_receive_transaction_resend(self): messages_attach=transaction_sender_record.messages_attach[0], ) - transaction_receiver_record = await self.manager.receive_request(transaction_sender_request) + transaction_receiver_record = await self.manager.receive_request( + transaction_sender_request + ) ( - transaction_sender_record, - resend_transaction_response - ) = await self.manager.transaction_resend(transaction_sender_record, state="resend") + transaction_sender_record, + resend_transaction_response, + ) = await self.manager.transaction_resend( + transaction_sender_record, state="resend" + ) with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: - transaction_receiver_record = await self.manager.receive_transaction_resend(resend_transaction_response) + transaction_receiver_record = await self.manager.receive_transaction_resend( + resend_transaction_response + ) save_record.assert_called_once() - assert transaction_receiver_record.state == "resend" \ No newline at end of file + assert transaction_receiver_record.state == "resend" From 4a208a72fed85bb85b1afa6368ee728c9a99be95 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Sun, 3 Jan 2021 13:21:26 +0530 Subject: [PATCH 008/243] Added Test files for handlers in endorse_transaction folder Signed-off-by: Harsh Multani --- .../v1_0/handlers/tests/__init__.py | 0 ...t_endorsed_transaction_response_handler.py | 34 +++++++++++++++ ...st_refused_transaction_response_handler.py | 34 +++++++++++++++ .../tests/test_transaction_cancel_handler.py | 36 ++++++++++++++++ .../test_transaction_job_to_send_handler.py | 43 +++++++++++++++++++ .../tests/test_transaction_request_handler.py | 34 +++++++++++++++ .../tests/test_transaction_resend_handler.py | 36 ++++++++++++++++ 7 files changed, 217 insertions(+) create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/__init__.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/__init__.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py new file mode 100644 index 0000000000..53c50d5162 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py @@ -0,0 +1,34 @@ +import pytest +from asynctest import mock as async_mock + +from ......messaging.request_context import RequestContext +from ......core.profile import Profile +from ......messaging.responder import MockResponder + +from ...handlers import endorsed_transaction_response_handler as handler +from ...messages.endorsed_transaction_response import EndorsedTransactionResponse + + +@pytest.fixture() +async def request_context() -> RequestContext: + ctx = RequestContext.test_context() + yield ctx + + +@pytest.fixture() +async def profile(request_context) -> Profile: + yield await request_context.profile + + +class TestEndorsedTransactionResponseHandler: + @pytest.mark.asyncio + @async_mock.patch.object(handler, "TransactionManager") + async def test_called(self, mock_tran_mgr, request_context): + mock_tran_mgr.return_value.receive_endorse_response = async_mock.CoroutineMock() + request_context.message = EndorsedTransactionResponse() + handler_inst = handler.EndorsedTransactionResponseHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_tran_mgr.return_value.receive_endorse_response.assert_called_once_with( + request_context.message + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py new file mode 100644 index 0000000000..eda84d0b8b --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py @@ -0,0 +1,34 @@ +import pytest +from asynctest import mock as async_mock + +from ......messaging.request_context import RequestContext +from ......core.profile import Profile +from ......messaging.responder import MockResponder + +from ...handlers import refused_transaction_response_handler as handler +from ...messages.refused_transaction_response import RefusedTransactionResponse + + +@pytest.fixture() +async def request_context() -> RequestContext: + ctx = RequestContext.test_context() + yield ctx + + +@pytest.fixture() +async def profile(request_context) -> Profile: + yield await request_context.profile + + +class TestRefusedTransactionResponseHandler: + @pytest.mark.asyncio + @async_mock.patch.object(handler, "TransactionManager") + async def test_called(self, mock_tran_mgr, request_context): + mock_tran_mgr.return_value.receive_refuse_response = async_mock.CoroutineMock() + request_context.message = RefusedTransactionResponse() + handler_inst = handler.RefusedTransactionResponseHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_tran_mgr.return_value.receive_refuse_response.assert_called_once_with( + request_context.message + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py new file mode 100644 index 0000000000..0d1febc3a1 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py @@ -0,0 +1,36 @@ +import pytest +from asynctest import mock as async_mock + +from ......messaging.request_context import RequestContext +from ......core.profile import Profile +from ......messaging.responder import MockResponder + +from ...handlers import transaction_cancel_handler as handler +from ...messages.cancel_transaction import CancelTransaction + + +@pytest.fixture() +async def request_context() -> RequestContext: + ctx = RequestContext.test_context() + yield ctx + + +@pytest.fixture() +async def profile(request_context) -> Profile: + yield await request_context.profile + + +class TestTransactionCancelHandler: + @pytest.mark.asyncio + @async_mock.patch.object(handler, "TransactionManager") + async def test_called(self, mock_tran_mgr, request_context): + mock_tran_mgr.return_value.receive_cancel_transaction = ( + async_mock.CoroutineMock() + ) + request_context.message = CancelTransaction() + handler_inst = handler.TransactionCancelHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_tran_mgr.return_value.receive_cancel_transaction.assert_called_once_with( + request_context.message + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py new file mode 100644 index 0000000000..e1c6925c3a --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py @@ -0,0 +1,43 @@ +import pytest +from asynctest import mock as async_mock + +from ......messaging.request_context import RequestContext +from ......core.profile import Profile, ProfileSession +from ......messaging.responder import MockResponder +from ......transport.inbound.receipt import MessageReceipt + +from ...handlers import transaction_job_to_send_handler as handler +from ...messages.transaction_job_to_send import TransactionJobToSend + + +@pytest.fixture() +async def request_context() -> RequestContext: + ctx = RequestContext.test_context() + ctx.message_receipt = MessageReceipt() + yield ctx + + +@pytest.fixture() +async def session(request_context) -> ProfileSession: + yield await request_context.session() + + +@pytest.fixture() +async def profile(request_context) -> Profile: + yield await request_context.profile + + +class TestTransactionJobToSendHandler: + @pytest.mark.asyncio + @async_mock.patch.object(handler, "TransactionManager") + async def test_called(self, mock_tran_mgr, request_context): + mock_tran_mgr.return_value.set_transaction_their_job = ( + async_mock.CoroutineMock() + ) + request_context.message = TransactionJobToSend() + handler_inst = handler.TransactionJobToSendHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_tran_mgr.return_value.set_transaction_their_job.assert_called_once_with( + request_context.message, request_context.message_receipt + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py new file mode 100644 index 0000000000..5cf1c8e6f3 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py @@ -0,0 +1,34 @@ +import pytest +from asynctest import mock as async_mock + +from ......messaging.request_context import RequestContext +from ......core.profile import Profile +from ......messaging.responder import MockResponder + +from ...handlers import transaction_request_handler as handler +from ...messages.transaction_request import TransactionRequest + + +@pytest.fixture() +async def request_context() -> RequestContext: + ctx = RequestContext.test_context() + yield ctx + + +@pytest.fixture() +async def profile(request_context) -> Profile: + yield await request_context.profile + + +class TestTransactionRequestHandler: + @pytest.mark.asyncio + @async_mock.patch.object(handler, "TransactionManager") + async def test_called(self, mock_tran_mgr, request_context): + mock_tran_mgr.return_value.receive_request = async_mock.CoroutineMock() + request_context.message = TransactionRequest() + handler_inst = handler.TransactionRequestHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_tran_mgr.return_value.receive_request.assert_called_once_with( + request_context.message + ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py new file mode 100644 index 0000000000..861334ee5a --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py @@ -0,0 +1,36 @@ +import pytest +from asynctest import mock as async_mock + +from ......messaging.request_context import RequestContext +from ......core.profile import Profile +from ......messaging.responder import MockResponder + +from ...handlers import transaction_resend_handler as handler +from ...messages.transaction_resend import TransactionResend + + +@pytest.fixture() +async def request_context() -> RequestContext: + ctx = RequestContext.test_context() + yield ctx + + +@pytest.fixture() +async def profile(request_context) -> Profile: + yield await request_context.profile + + +class TestTransactionResendHandler: + @pytest.mark.asyncio + @async_mock.patch.object(handler, "TransactionManager") + async def test_called(self, mock_tran_mgr, request_context): + mock_tran_mgr.return_value.receive_transaction_resend = ( + async_mock.CoroutineMock() + ) + request_context.message = TransactionResend() + handler_inst = handler.TransactionResendHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_tran_mgr.return_value.receive_transaction_resend.assert_called_once_with( + request_context.message + ) From 55f7503e0e5f18373cd617da711e92302806ec87 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Thu, 7 Jan 2021 01:40:29 +0530 Subject: [PATCH 009/243] Implemented functionality to allow transaction author and transaction endorser to operate different APIs Signed-off-by: Harsh Multani --- .../credential_definitions/routes.py | 4 +- aries_cloudagent/messaging/schemas/routes.py | 4 +- .../endorse_transaction/v1_0/manager.py | 53 +- .../v1_0/models/transaction_record.py | 9 + .../endorse_transaction/v1_0/routes.py | 206 ++++--- .../v1_0/tests/test_manager.py | 572 ------------------ 6 files changed, 201 insertions(+), 647 deletions(-) delete mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index a63c225f22..03a4fe2ba2 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -243,7 +243,9 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq raise web.HTTPForbidden(reason="No wallet available") author_did_info = await wallet.get_public_did() if not author_did_info: - raise web.HTTPForbidden(reason="Public DID not found in wallet") + raise web.HTTPForbidden( + reason="Transaction cannot be created as there is no Public DID in wallet" + ) author_did = author_did_info.did author_verkey = author_did_info.verkey diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index b06d474ef3..f5b2447c39 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -167,7 +167,9 @@ async def schemas_send_schema(request: web.BaseRequest): raise web.HTTPForbidden(reason="No wallet available") author_did_info = await wallet.get_public_did() if not author_did_info: - raise web.HTTPForbidden(reason="Public DID not found in wallet") + raise web.HTTPForbidden( + reason="Transaction cannot be created as there is no Public DID in wallet" + ) author_did = author_did_info.did author_verkey = author_did_info.verkey diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 8187cd8097..6564a0a122 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -118,7 +118,7 @@ async def create_record( transaction.messages_attach.clear() transaction.messages_attach.append(messages_attach_dict) - transaction.state = "created" + transaction.state = TransactionRecord.STATE_TRANSACTION_CREATED async with self._profile.session() as session: await transaction.save(session, reason="Change it") @@ -138,7 +138,13 @@ async def create_request(self, transaction: TransactionRecord, connection_id: st """ - transaction.state = "request" + if transaction.state != TransactionRecord.STATE_TRANSACTION_CREATED: + raise TransactionManagerError( + f"Cannot create a request for transaction record" + f" in state: {transaction.state}" + ) + + transaction.state = TransactionRecord.STATE_REQUEST_SENT transaction.connection_id = connection_id async with self._profile.session() as session: await transaction.save(session, reason="Change to requested state") @@ -179,7 +185,7 @@ async def receive_request(self, request: TransactionRequest): transaction.messages_attach.append(request.messages_attach) transaction.thread_id = request.transaction_id transaction.connection_id = connection_id - transaction.state = "request" + transaction.state = TransactionRecord.STATE_REQUEST_RECEIVED async with self._profile.session() as session: await transaction.save(session, reason="Change it") @@ -205,6 +211,15 @@ async def create_endorse_response( """ + if transaction.state not in ( + TransactionRecord.STATE_REQUEST_RECEIVED, + TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED, + ): + raise TransactionManagerError( + f"Cannot endorse transaction for transaction record" + f" in state: {transaction.state}" + ) + transaction.messages_attach[0]["data"]["json"]["endorser"] = endorser_did transaction._type = TransactionRecord.SIGNATURE_RESPONSE @@ -279,6 +294,15 @@ async def create_refuse_response( """ + if transaction.state not in ( + TransactionRecord.STATE_REQUEST_RECEIVED, + TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED, + ): + raise TransactionManagerError( + f"Cannot refuse transaction for transaction record" + f" in state: {transaction.state}" + ) + transaction.messages_attach[0]["data"]["json"]["endorser"] = refuser_did transaction._type = TransactionRecord.SIGNATURE_RESPONSE @@ -348,12 +372,21 @@ async def cancel_transaction(self, transaction: TransactionRecord, state: str): """ + if transaction.state not in ( + TransactionRecord.STATE_REQUEST_SENT, + TransactionRecord.STATE_TRANSACTION_RESENT, + ): + raise TransactionManagerError( + f"Cannot cancel transaction as transaction is" + f" in state: {transaction.state}" + ) + transaction.state = state async with self._profile.session() as session: await transaction.save(session, reason="Change it") cancelled_transaction_response = CancelTransaction( - state="cancelled", thread_id=transaction._id + state=state, thread_id=transaction._id ) return transaction, cancelled_transaction_response @@ -390,12 +423,22 @@ async def transaction_resend(self, transaction: TransactionRecord, state: str): """ + if transaction.state not in ( + TransactionRecord.STATE_TRANSACTION_REFUSED, + TransactionRecord.STATE_TRANSACTION_CANCELLED, + ): + raise TransactionManagerError( + f"Cannot resend transaction as transaction is" + f" in state: {transaction.state}" + ) + transaction.state = state async with self._profile.session() as session: await transaction.save(session, reason="Change it") resend_transaction_response = TransactionResend( - state="resend", thread_id=transaction._id + state=TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED, + thread_id=transaction._id, ) return transaction, resend_transaction_response diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py index 27f43abaf1..309196fb4f 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py @@ -43,6 +43,15 @@ class Meta: FORMAT_VERSION = "dif/endorse-transaction/request@v1.0" + STATE_TRANSACTION_CREATED = "transaction_created" + STATE_REQUEST_SENT = "request_sent" + STATE_REQUEST_RECEIVED = "request_received" + STATE_TRANSACTION_ENDORSED = "transaction_endorsed" + STATE_TRANSACTION_REFUSED = "transaction_refused" + STATE_TRANSACTION_RESENT = "transaction_resent" + STATE_TRANSACTION_RESENT_RECEIEVED = "transaction_resent_received" + STATE_TRANSACTION_CANCELLED = "transaction_cancelled" + def __init__( self, *, diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 3c32fa56f0..e1a2574e6e 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -167,6 +167,15 @@ async def transaction_create_request(request: web.BaseRequest): raise web.HTTPNotFound(reason=err.roll_up) from err session = await context.session() + jobs = await connection_record.metadata_get(session, "transaction_jobs") + if not jobs: + raise web.HTTPForbidden( + reason="The transaction related jobs are not setup in" + "connection metadata for this connection record" + ) + if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": + raise web.HTTPForbidden(reason="Only a TRANSACTION_AUTHOR can create a request") + transaction_mgr = TransactionManager(session, context.profile) (transaction_record, transaction_request) = await transaction_mgr.create_request( @@ -208,7 +217,9 @@ async def endorse_transaction_response(request: web.BaseRequest): raise web.HTTPForbidden(reason="No wallet available") endorser_did_info = await wallet.get_public_did() if not endorser_did_info: - raise web.HTTPForbidden(reason="Public DID not found in wallet") + raise web.HTTPForbidden( + reason="Transaction cannot be endorsed as there is no Public DID in wallet" + ) endorser_did = endorser_did_info.did endorser_verkey = endorser_did_info.verkey @@ -221,27 +232,41 @@ async def endorse_transaction_response(request: web.BaseRequest): except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err - if transaction.state == "request" or transaction.state == "resend": - - transaction_mgr = TransactionManager(session, context.profile) - ( - transaction, - endorsed_transaction_response, - ) = await transaction_mgr.create_endorse_response( - transaction=transaction, - state="endorsed", - endorser_did=endorser_did, - endorser_verkey=endorser_verkey, + try: + async with context.session() as session: + connection_record = await ConnRecord.retrieve_by_id( + session, transaction.connection_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + session = await context.session() + jobs = await connection_record.metadata_get(session, "transaction_jobs") + if not jobs: + raise web.HTTPForbidden( + reason="The transaction related jobs are not setup in" + "connection metadata for this connection record" ) - - await outbound_handler( - endorsed_transaction_response, connection_id=transaction.connection_id + if jobs["transaction_my_job"] != "TRANSACTION_ENDORSER": + raise web.HTTPForbidden( + reason="Only a TRANSACTION_ENDORSER can endorse a transaction" ) - return web.json_response(transaction.serialize()) + transaction_mgr = TransactionManager(session, context.profile) + ( + transaction, + endorsed_transaction_response, + ) = await transaction_mgr.create_endorse_response( + transaction=transaction, + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + endorser_did=endorser_did, + endorser_verkey=endorser_verkey, + ) + + await outbound_handler( + endorsed_transaction_response, connection_id=transaction.connection_id + ) - else: - return web.json_response({"error": "You cannot endorse this transaction"}) + return web.json_response(transaction.serialize()) @docs( @@ -272,7 +297,9 @@ async def refuse_transaction_response(request: web.BaseRequest): raise web.HTTPForbidden(reason="No wallet available") refuser_did_info = await wallet.get_public_did() if not refuser_did_info: - raise web.HTTPForbidden(reason="Public DID not found in wallet") + raise web.HTTPForbidden( + reason="Transaction cannot be refused as there is no Public DID in wallet" + ) refuser_did = refuser_did_info.did transaction_id = request.match_info["tran_id"] @@ -284,24 +311,40 @@ async def refuse_transaction_response(request: web.BaseRequest): except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err - if transaction.state == "request" or transaction.state == "resend": - - transaction_mgr = TransactionManager(session, context.profile) - ( - transaction, - refused_transaction_response, - ) = await transaction_mgr.create_refuse_response( - transaction=transaction, state="refused", refuser_did=refuser_did + try: + async with context.session() as session: + connection_record = await ConnRecord.retrieve_by_id( + session, transaction.connection_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + session = await context.session() + jobs = await connection_record.metadata_get(session, "transaction_jobs") + if not jobs: + raise web.HTTPForbidden( + reason="The transaction related jobs are not setup in" + "connection metadata for this connection record" ) - - await outbound_handler( - refused_transaction_response, connection_id=transaction.connection_id + if jobs["transaction_my_job"] != "TRANSACTION_ENDORSER": + raise web.HTTPForbidden( + reason="Only a TRANSACTION_ENDORSER can refuse a transaction" ) - return web.json_response(transaction.serialize()) + transaction_mgr = TransactionManager(session, context.profile) + ( + transaction, + refused_transaction_response, + ) = await transaction_mgr.create_refuse_response( + transaction=transaction, + state=TransactionRecord.STATE_TRANSACTION_REFUSED, + refuser_did=refuser_did, + ) - else: - return web.json_response({"error": "You cannot refuse the transaction"}) + await outbound_handler( + refused_transaction_response, connection_id=transaction.connection_id + ) + + return web.json_response(transaction.serialize()) @docs( @@ -334,25 +377,38 @@ async def cancel_transaction(request: web.BaseRequest): except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err - if transaction.state != "endorsed" and transaction.state != "refused": - - session = await context.session() - transaction_mgr = TransactionManager(session, context.profile) - ( - transaction, - cancelled_transaction_response, - ) = await transaction_mgr.cancel_transaction( - transaction=transaction, state="cancelled" + try: + async with context.session() as session: + connection_record = await ConnRecord.retrieve_by_id( + session, transaction.connection_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + session = await context.session() + jobs = await connection_record.metadata_get(session, "transaction_jobs") + if not jobs: + raise web.HTTPForbidden( + reason="The transaction related jobs are not setup in" + "connection metadata for this connection record" ) - - await outbound_handler( - cancelled_transaction_response, connection_id=transaction.connection_id + if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": + raise web.HTTPForbidden( + reason="Only a TRANSACTION_AUTHOR can cancel a transaction" ) - return web.json_response(transaction.serialize()) + transaction_mgr = TransactionManager(session, context.profile) + ( + transaction, + cancelled_transaction_response, + ) = await transaction_mgr.cancel_transaction( + transaction=transaction, state=TransactionRecord.STATE_TRANSACTION_CANCELLED + ) + + await outbound_handler( + cancelled_transaction_response, connection_id=transaction.connection_id + ) - else: - return web.json_response({"error": "This transaction cannot be cancelled"}) + return web.json_response(transaction.serialize()) @docs( @@ -385,25 +441,38 @@ async def transaction_resend(request: web.BaseRequest): except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err - if transaction.state != "endorsed": - - session = await context.session() - transaction_mgr = TransactionManager(session, context.profile) - ( - transaction, - resend_transaction_response, - ) = await transaction_mgr.transaction_resend( - transaction=transaction, state="resend" + try: + async with context.session() as session: + connection_record = await ConnRecord.retrieve_by_id( + session, transaction.connection_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + session = await context.session() + jobs = await connection_record.metadata_get(session, "transaction_jobs") + if not jobs: + raise web.HTTPForbidden( + reason="The transaction related jobs are not setup in" + "connection metadata for this connection record" ) - - await outbound_handler( - resend_transaction_response, connection_id=transaction.connection_id + if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": + raise web.HTTPForbidden( + reason="Only a TRANSACTION_AUTHOR can resend a transaction" ) - return web.json_response(transaction.serialize()) + transaction_mgr = TransactionManager(session, context.profile) + ( + transaction, + resend_transaction_response, + ) = await transaction_mgr.transaction_resend( + transaction=transaction, state=TransactionRecord.STATE_TRANSACTION_RESENT + ) + + await outbound_handler( + resend_transaction_response, connection_id=transaction.connection_id + ) - else: - return web.json_response({"error": "You cannot resend an endorsed transaction"}) + return web.json_response(transaction.serialize()) @docs( @@ -433,16 +502,17 @@ async def set_transaction_jobs(request: web.BaseRequest): try: record = await ConnRecord.retrieve_by_id(session, connection_id) - transaction_mgr = TransactionManager(session, context.profile) - tx_job_to_send = await transaction_mgr.set_transaction_my_job( - record=record, transaction_my_job=transaction_my_job - ) - jobs = await record.metadata_get(session, "transaction_jobs") except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err except BaseModelError as err: raise web.HTTPBadRequest(reason=err.roll_up) from err + transaction_mgr = TransactionManager(session, context.profile) + tx_job_to_send = await transaction_mgr.set_transaction_my_job( + record=record, transaction_my_job=transaction_my_job + ) + jobs = await record.metadata_get(session, "transaction_jobs") + await outbound_handler(tx_job_to_send, connection_id=connection_id) return web.json_response(jobs) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py deleted file mode 100644 index b2d9d8ac4e..0000000000 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py +++ /dev/null @@ -1,572 +0,0 @@ -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock -from .....core.in_memory import InMemoryProfile -from .....wallet.in_memory import InMemoryWallet - -from ..manager import TransactionManager -from ..models.transaction_record import TransactionRecord -from .....connections.models.conn_record import ConnRecord - -from ..messages.transaction_request import TransactionRequest - - -class TestTransactionManager(AsyncTestCase): - async def setUp(self): - - self.session = InMemoryProfile.test_session() - self.profile = self.session.profile - - self.test_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" - self.test_receivers_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa7" - - self.session.connection_record = ConnRecord( - connection_id=self.test_receivers_connection_id - ) - - self.test_author_did = "55GkHamhTU1ZbTbV2ab9DE" - self.test_author_verkey = "3Dn1SJNPaCXcvvJvSbsFWP2xaCjMom3can8CQNhWrTRx" - self.test_endorser_did = "GbuDUYXaUZRfHD2jeDuQuP" - self.test_endorser_verkey = "9WCgWKUaAJj3VWxxtzvvMQN3AoFxoBtBDo9ntwJnVVCC" - self.test_refuser_did = "GbuDUYXaUZRfHD2jeDuQuP" - self.test_transaction_message = { - "attributes": ["score"], - "schema_name": "prefs", - "schema_version": "1.0", - } - self.test_mechanism = "manual" - self.test_taaDigest = ( - "f50feca75664270842bd4202c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62" - ) - self.test_time = 1597708800 - self.test_expires_time = "2020-12-13T17:29:06+0000" - self.test_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" - - self.test_request_type = ( - "http://didcomm.org/sign-attachment/%VER/signature-request" - ) - self.test_response_type = ( - "http://didcomm.org/sign-attachment/%VER/signature-response" - ) - - self.test_signature_request = { - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "author_goal_code": TransactionRecord.WRITE_TRANSACTION, - } - - self.test_format = TransactionRecord.FORMAT_VERSION - - self.manager = TransactionManager(self.session, self.profile) - - assert self.manager.session - assert self.manager.profile - - async def test_create_record(self): - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - transaction_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - save_record.assert_called_once() - - assert transaction_record._type == self.test_request_type - assert transaction_record.signature_request[0] == self.test_signature_request - assert transaction_record.timing == {"expires_time": self.test_expires_time} - assert transaction_record.formats[0]["format"] == self.test_format - - assert ( - transaction_record.messages_attach[0]["data"]["json"]["identifier"] - == self.test_author_did - ) - assert transaction_record.messages_attach[0]["data"]["json"]["signatures"] == { - self.test_author_did: self.test_author_verkey - } - assert ( - transaction_record.messages_attach[0]["data"]["json"]["operation"]["data"] - == self.test_transaction_message - ) - assert ( - transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ - "mechanism" - ] - == self.test_mechanism - ) - assert ( - transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ - "taaDigest" - ] - == self.test_taaDigest - ) - assert ( - transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ - "time" - ] - == self.test_time - ) - assert transaction_record.state == "created" - - async def test_create_request(self): - - transaction_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - ( - transaction_record, - transaction_request, - ) = await self.manager.create_request( - transaction_record, self.test_connection_id - ) - save_record.assert_called_once() - - assert transaction_record.state == "request" - assert transaction_record.connection_id == self.test_connection_id - - assert transaction_request.transaction_id == transaction_record._id - assert ( - transaction_request.signature_request - == transaction_record.signature_request[0] - ) - assert transaction_request.timing == transaction_record.timing - assert ( - transaction_request.messages_attach == transaction_record.messages_attach[0] - ) - - async def test_receive_request(self): - - transaction_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - - transaction_request = TransactionRequest( - transaction_id=transaction_record._id, - signature_request=transaction_record.signature_request[0], - timing=transaction_record.timing, - messages_attach=transaction_record.messages_attach[0], - ) - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - transaction_record = await self.manager.receive_request(transaction_request) - save_record.assert_called_once() - - assert transaction_record._type == self.test_request_type - assert transaction_record.signature_request[0] == self.test_signature_request - assert transaction_record.timing == {"expires_time": self.test_expires_time} - assert transaction_record.formats[0]["format"] == self.test_format - - assert ( - transaction_record.messages_attach[0]["data"]["json"]["identifier"] - == self.test_author_did - ) - assert transaction_record.messages_attach[0]["data"]["json"]["signatures"] == { - self.test_author_did: self.test_author_verkey - } - assert ( - transaction_record.messages_attach[0]["data"]["json"]["operation"]["data"] - == self.test_transaction_message - ) - assert ( - transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ - "mechanism" - ] - == self.test_mechanism - ) - assert ( - transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ - "taaDigest" - ] - == self.test_taaDigest - ) - assert ( - transaction_record.messages_attach[0]["data"]["json"]["taaAcceptance"][ - "time" - ] - == self.test_time - ) - - assert transaction_record.thread_id == transaction_request.transaction_id - assert transaction_record.connection_id == self.test_receivers_connection_id - assert transaction_record.state == "request" - - async def test_create_endorse_response(self): - - transaction_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - ( - transaction_record, - endorsed_response, - ) = await self.manager.create_endorse_response( - transaction_record, - state="endorsed", - endorser_did=self.test_endorser_did, - endorser_verkey=self.test_endorser_verkey, - ) - save_record.assert_called_once() - - assert ( - transaction_record.messages_attach[0]["data"]["json"]["endorser"] - == self.test_endorser_did - ) - assert transaction_record._type == self.test_response_type - assert transaction_record.signature_response[0] == { - "message_id": transaction_record.messages_attach[0]["_message_id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signature": {self.test_endorser_did: self.test_endorser_verkey}, - } - assert transaction_record.state == "endorsed" - - assert endorsed_response.transaction_id == transaction_record.thread_id - assert endorsed_response.thread_id == transaction_record._id - assert endorsed_response.signature_response == { - "message_id": transaction_record.messages_attach[0]["_message_id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signature": {self.test_endorser_did: self.test_endorser_verkey}, - } - assert endorsed_response.state == "endorsed" - assert endorsed_response.endorser_did == self.test_endorser_did - - async def test_receive_endorse_response(self): - - transaction_author_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - - transaction_author_request = TransactionRequest( - transaction_id=transaction_author_record._id, - signature_request=transaction_author_record.signature_request[0], - timing=transaction_author_record.timing, - messages_attach=transaction_author_record.messages_attach[0], - ) - - transaction_endorser_record = await self.manager.receive_request( - transaction_author_request - ) - - ( - transaction_author_record, - endorsed_transaction_response, - ) = await self.manager.create_endorse_response( - transaction_author_record, - state="endorsed", - endorser_did=self.test_endorser_did, - endorser_verkey=self.test_endorser_verkey, - ) - - endorsed_transaction_response.transaction_id = transaction_endorser_record._id - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - transaction_endorser_record = await self.manager.receive_endorse_response( - endorsed_transaction_response - ) - - save_record.assert_called_once() - - assert transaction_endorser_record._type == self.test_response_type - assert transaction_endorser_record.state == endorsed_transaction_response.state - assert ( - transaction_endorser_record.signature_response[0] - == endorsed_transaction_response.signature_response - ) - assert ( - transaction_endorser_record.thread_id - == endorsed_transaction_response.thread_id - ) - assert ( - transaction_endorser_record.messages_attach[0]["data"]["json"]["endorser"] - == self.test_endorser_did - ) - - async def test_create_refuse_response(self): - - transaction_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - ( - transaction_record, - refused_response, - ) = await self.manager.create_refuse_response( - transaction_record, - state="refused", - refuser_did=self.test_refuser_did, - ) - save_record.assert_called_once() - - assert ( - transaction_record.messages_attach[0]["data"]["json"]["endorser"] - == self.test_refuser_did - ) - assert transaction_record._type == self.test_response_type - assert transaction_record.signature_response[0] == { - "message_id": transaction_record.messages_attach[0]["_message_id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, - } - assert transaction_record.state == "refused" - - assert refused_response.transaction_id == transaction_record.thread_id - assert refused_response.thread_id == transaction_record._id - assert refused_response.signature_response == { - "message_id": transaction_record.messages_attach[0]["_message_id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, - } - assert refused_response.state == "refused" - assert refused_response.endorser_did == self.test_refuser_did - - async def test_receive_refuse_response(self): - - transaction_author_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - - transaction_author_request = TransactionRequest( - transaction_id=transaction_author_record._id, - signature_request=transaction_author_record.signature_request[0], - timing=transaction_author_record.timing, - messages_attach=transaction_author_record.messages_attach[0], - ) - - transaction_refuser_record = await self.manager.receive_request( - transaction_author_request - ) - - ( - transaction_author_record, - refused_transaction_response, - ) = await self.manager.create_refuse_response( - transaction_author_record, - state="refused", - refuser_did=self.test_refuser_did, - ) - - refused_transaction_response.transaction_id = transaction_refuser_record._id - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - transaction_refuser_record = await self.manager.receive_refuse_response( - refused_transaction_response - ) - - save_record.assert_called_once() - - assert transaction_refuser_record._type == self.test_response_type - assert transaction_refuser_record.state == refused_transaction_response.state - assert ( - transaction_refuser_record.signature_response[0] - == refused_transaction_response.signature_response - ) - assert ( - transaction_refuser_record.thread_id - == refused_transaction_response.thread_id - ) - assert ( - transaction_refuser_record.messages_attach[0]["data"]["json"]["endorser"] - == self.test_refuser_did - ) - - async def test_cancel_transaction(self): - - transaction_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - ( - transaction_record, - cancelled_transaction_response, - ) = await self.manager.cancel_transaction( - transaction_record, state="cancelled" - ) - save_record.assert_called_once() - - assert transaction_record.state == "cancelled" - - assert cancelled_transaction_response.state == "cancelled" - assert cancelled_transaction_response.thread_id == transaction_record._id - - async def test_receive_cancel_transaction(self): - - transaction_sender_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - - transaction_sender_request = TransactionRequest( - transaction_id=transaction_sender_record._id, - signature_request=transaction_sender_record.signature_request[0], - timing=transaction_sender_record.timing, - messages_attach=transaction_sender_record.messages_attach[0], - ) - - transaction_receiver_record = await self.manager.receive_request( - transaction_sender_request - ) - - ( - transaction_sender_record, - cancelled_transaction_response, - ) = await self.manager.cancel_transaction( - transaction_sender_record, state="cancelled" - ) - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - transaction_receiver_record = await self.manager.receive_cancel_transaction( - cancelled_transaction_response - ) - save_record.assert_called_once() - - assert transaction_receiver_record.state == "cancelled" - - async def test_transaction_resend(self): - - transaction_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - ( - transaction_record, - resend_transaction_response, - ) = await self.manager.transaction_resend( - transaction_record, state="resend" - ) - save_record.assert_called_once() - - assert transaction_record.state == "resend" - - assert resend_transaction_response.state == "resend" - assert resend_transaction_response.thread_id == transaction_record._id - - async def test_receive_transaction_resend(self): - - transaction_sender_record = await self.manager.create_record( - author_did=self.test_author_did, - author_verkey=self.test_author_verkey, - transaction_message=self.test_transaction_message, - mechanism=self.test_mechanism, - taaDigest=self.test_taaDigest, - time=self.test_time, - expires_time=self.test_expires_time, - ) - - transaction_sender_request = TransactionRequest( - transaction_id=transaction_sender_record._id, - signature_request=transaction_sender_record.signature_request[0], - timing=transaction_sender_record.timing, - messages_attach=transaction_sender_record.messages_attach[0], - ) - - transaction_receiver_record = await self.manager.receive_request( - transaction_sender_request - ) - - ( - transaction_sender_record, - resend_transaction_response, - ) = await self.manager.transaction_resend( - transaction_sender_record, state="resend" - ) - - with async_mock.patch.object( - TransactionRecord, "save", autospec=True - ) as save_record: - transaction_receiver_record = await self.manager.receive_transaction_resend( - resend_transaction_response - ) - save_record.assert_called_once() - - assert transaction_receiver_record.state == "resend" From e4c45b1b9b5936b6ac7fd4562a6d0892275aee6d Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Thu, 7 Jan 2021 07:27:27 -0800 Subject: [PATCH 010/243] A few fixes to the endorser code Signed-off-by: Ian Costanzo --- .../messaging/credential_definitions/routes.py | 4 ++-- aries_cloudagent/messaging/schemas/routes.py | 4 ++-- demo/runners/support/agent.py | 7 ++++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index 03a4fe2ba2..b5a7fe6433 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -120,7 +120,7 @@ class AutoEndorseOptionSchema(OpenAPISchema): auto_endorse = fields.Boolean( description="Auto-endorse Transaction", - required=True, + required=False, ) @@ -143,7 +143,7 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq """ context: AdminRequestContext = request["context"] - auto_endorse = json.loads(request.query.get("auto_endorse", "null")) + auto_endorse = json.loads(request.query.get("auto_endorse", "true")) if auto_endorse: body = await request.json() diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index f5b2447c39..fb35f39ec1 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -109,7 +109,7 @@ class AutoEndorseOptionSchema(OpenAPISchema): auto_endorse = fields.Boolean( description="Auto-endorse Transaction", - required=True, + required=False, ) @@ -129,7 +129,7 @@ async def schemas_send_schema(request: web.BaseRequest): """ context: AdminRequestContext = request["context"] - auto_endorse = json.loads(request.query.get("auto_endorse", "null")) + auto_endorse = json.loads(request.query.get("auto_endorse", "true")) if auto_endorse: body = await request.json() diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index 0c5f6e9d68..03767d4915 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -209,7 +209,7 @@ async def register_schema_and_creddef( "attributes": schema_attrs, } schema_response = await self.admin_POST("/schemas", schema_body) - # log_json(json.dumps(schema_response), label="Schema:") + log_json(json.dumps(schema_response), label="Schema:") schema_id = schema_response["schema_id"] log_msg("Schema ID:", schema_id) @@ -529,6 +529,11 @@ async def handle_problem_report(self, message): f"Received problem report: {message['explain-ltxt']}\n", source="stderr" ) + async def handle_endorse_transaction(self, message): + self.log( + f"Received endorse transaction: {message}\n", source="stderr" + ) + async def handle_revocation_registry(self, message): reg_id = message.get("revoc_reg_id", "(undetermined)") self.log(f"Revocation registry: {reg_id} state: {message['state']}") From 5d5976d5fdd535e8361e549617f6a17c79b82f0c Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Sat, 16 Jan 2021 13:58:51 +0530 Subject: [PATCH 011/243] Rectified Black Formatting Signed-off-by: Harsh Multani --- demo/runners/support/agent.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index 79afbe3b6a..e3706e64e7 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -545,9 +545,7 @@ async def handle_problem_report(self, message): ) async def handle_endorse_transaction(self, message): - self.log( - f"Received endorse transaction: {message}\n", source="stderr" - ) + self.log(f"Received endorse transaction: {message}\n", source="stderr") async def handle_revocation_registry(self, message): reg_id = message.get("revoc_reg_id", "(undetermined)") From 21b3816455ddd316fe51cd4ccdf91fd56f84f4cd Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Sun, 17 Jan 2021 20:26:29 +0530 Subject: [PATCH 012/243] Changes Session in TransactionManager to ProfileSession ONLY Signed-off-by: Harsh Multani --- .../credential_definitions/routes.py | 2 +- aries_cloudagent/messaging/schemas/routes.py | 2 +- .../endorsed_transaction_response_handler.py | 3 +- .../refused_transaction_response_handler.py | 3 +- .../tests/test_transaction_cancel_handler.py | 6 +- .../tests/test_transaction_request_handler.py | 6 +- .../tests/test_transaction_resend_handler.py | 6 +- .../handlers/transaction_cancel_handler.py | 7 +- .../transaction_job_to_send_handler.py | 4 +- .../handlers/transaction_request_handler.py | 7 +- .../handlers/transaction_resend_handler.py | 7 +- .../endorse_transaction/v1_0/manager.py | 78 ++++++++++--------- .../endorse_transaction/v1_0/routes.py | 22 +++--- 13 files changed, 90 insertions(+), 63 deletions(-) diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index b5a7fe6433..09b6a98897 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -284,7 +284,7 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq else: taaDigest = None - transaction_mgr = TransactionManager(session, context.profile) + transaction_mgr = TransactionManager(session) transaction = await transaction_mgr.create_record( author_did=author_did, diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index fb35f39ec1..acdce7e0f9 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -208,7 +208,7 @@ async def schemas_send_schema(request: web.BaseRequest): else: taaDigest = None - transaction_mgr = TransactionManager(session, context.profile) + transaction_mgr = TransactionManager(session) transaction = await transaction_mgr.create_record( author_did=author_did, diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py index e3df8ced04..d3d7b810e0 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py @@ -27,7 +27,8 @@ async def handle(self, context: RequestContext, responder: BaseResponder): ) assert isinstance(context.message, EndorsedTransactionResponse) - mgr = TransactionManager(context, context.profile) + profile_session = await context.session() + mgr = TransactionManager(profile_session) try: await mgr.receive_endorse_response(context.message) except TransactionManagerError: diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py index e21022bd4b..e19d876e03 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py @@ -27,7 +27,8 @@ async def handle(self, context: RequestContext, responder: BaseResponder): ) assert isinstance(context.message, RefusedTransactionResponse) - mgr = TransactionManager(context, context.profile) + profile_session = await context.session() + mgr = TransactionManager(profile_session) try: await mgr.receive_refuse_response(context.message) except TransactionManagerError: diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py index 0d1febc3a1..419e9c6be0 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py @@ -7,6 +7,7 @@ from ...handlers import transaction_cancel_handler as handler from ...messages.cancel_transaction import CancelTransaction +from ......connections.models.conn_record import ConnRecord @pytest.fixture() @@ -28,9 +29,12 @@ async def test_called(self, mock_tran_mgr, request_context): async_mock.CoroutineMock() ) request_context.message = CancelTransaction() + request_context.connection_record = ConnRecord( + connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" + ) handler_inst = handler.TransactionCancelHandler() responder = MockResponder() await handler_inst.handle(request_context, responder) mock_tran_mgr.return_value.receive_cancel_transaction.assert_called_once_with( - request_context.message + request_context.message, request_context.connection_record.connection_id ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py index 5cf1c8e6f3..1eaec5b2d7 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py @@ -7,6 +7,7 @@ from ...handlers import transaction_request_handler as handler from ...messages.transaction_request import TransactionRequest +from ......connections.models.conn_record import ConnRecord @pytest.fixture() @@ -26,9 +27,12 @@ class TestTransactionRequestHandler: async def test_called(self, mock_tran_mgr, request_context): mock_tran_mgr.return_value.receive_request = async_mock.CoroutineMock() request_context.message = TransactionRequest() + request_context.connection_record = ConnRecord( + connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" + ) handler_inst = handler.TransactionRequestHandler() responder = MockResponder() await handler_inst.handle(request_context, responder) mock_tran_mgr.return_value.receive_request.assert_called_once_with( - request_context.message + request_context.message, request_context.connection_record.connection_id ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py index 861334ee5a..95a57a2a27 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py @@ -7,6 +7,7 @@ from ...handlers import transaction_resend_handler as handler from ...messages.transaction_resend import TransactionResend +from ......connections.models.conn_record import ConnRecord @pytest.fixture() @@ -28,9 +29,12 @@ async def test_called(self, mock_tran_mgr, request_context): async_mock.CoroutineMock() ) request_context.message = TransactionResend() + request_context.connection_record = ConnRecord( + connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" + ) handler_inst = handler.TransactionResendHandler() responder = MockResponder() await handler_inst.handle(request_context, responder) mock_tran_mgr.return_value.receive_transaction_resend.assert_called_once_with( - request_context.message + request_context.message, request_context.connection_record.connection_id ) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py index 26ce58362c..9f20798958 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py @@ -25,8 +25,11 @@ async def handle(self, context: RequestContext, responder: BaseResponder): self._logger.debug(f"TransactionCancelHandler called with context {context}") assert isinstance(context.message, CancelTransaction) - mgr = TransactionManager(context, context.profile) + profile_session = await context.session() + mgr = TransactionManager(profile_session) try: - await mgr.receive_cancel_transaction(context.message) + await mgr.receive_cancel_transaction( + context.message, context.connection_record.connection_id + ) except TransactionManagerError: self._logger.exception("Error receiving cancel transaction request") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py index 28ece3b88c..6ec346276f 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py @@ -25,8 +25,8 @@ async def handle(self, context: RequestContext, responder: BaseResponder): self._logger.debug(f"TransactionJobToSendHandler called with context {context}") assert isinstance(context.message, TransactionJobToSend) - session = await context.session() - mgr = TransactionManager(session, context.profile) + profile_session = await context.session() + mgr = TransactionManager(profile_session) try: await mgr.set_transaction_their_job( context.message, context.message_receipt diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py index ca5eb4d80f..1630d6dc4b 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py @@ -25,8 +25,11 @@ async def handle(self, context: RequestContext, responder: BaseResponder): self._logger.debug(f"TransactionRequestHandler called with context {context}") assert isinstance(context.message, TransactionRequest) - mgr = TransactionManager(context, context.profile) + profile_session = await context.session() + mgr = TransactionManager(profile_session) try: - await mgr.receive_request(context.message) + await mgr.receive_request( + context.message, context.connection_record.connection_id + ) except TransactionManagerError: self._logger.exception("Error receiving transaction request") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py index 1837818b4e..1113dc5bcd 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py @@ -25,8 +25,11 @@ async def handle(self, context: RequestContext, responder: BaseResponder): self._logger.debug(f"TransactionResendHandler called with context {context}") assert isinstance(context.message, TransactionResend) - mgr = TransactionManager(context, context.profile) + profile_session = await context.session() + mgr = TransactionManager(profile_session) try: - await mgr.receive_transaction_resend(context.message) + await mgr.receive_transaction_resend( + context.message, context.connection_record.connection_id + ) except TransactionManagerError: self._logger.exception("Error receiving resend transaction request") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 6564a0a122..5b1e4213ec 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -17,7 +17,7 @@ from ....storage.error import StorageNotFoundError from ....core.error import BaseError -from ....core.profile import Profile, ProfileSession +from ....core.profile import ProfileSession class TransactionManagerError(BaseError): @@ -27,16 +27,14 @@ class TransactionManagerError(BaseError): class TransactionManager: """Class for managing transactions.""" - def __init__(self, session: ProfileSession, profile: Profile): + def __init__(self, session: ProfileSession): """ Initialize a TransactionManager. Args: session: The Profile Session for this transaction manager - profile: The Profile for this transaction manager """ self._session = session - self._profile = profile self._logger = logging.getLogger(__name__) @property @@ -50,17 +48,6 @@ def session(self) -> ProfileSession: """ return self._session - @property - def profile(self) -> Profile: - """ - Accessor for the current Profile. - - Returns: - The Profile for this transaction manager - - """ - return self._profile - async def create_record( self, author_did: str, @@ -120,8 +107,9 @@ async def create_record( transaction.messages_attach.append(messages_attach_dict) transaction.state = TransactionRecord.STATE_TRANSACTION_CREATED - async with self._profile.session() as session: - await transaction.save(session, reason="Change it") + profile_session = await self.session + async with profile_session.profile.session() as session: + await transaction.save(session, reason="Created a Transaction Record") return transaction @@ -146,7 +134,8 @@ async def create_request(self, transaction: TransactionRecord, connection_id: st transaction.state = TransactionRecord.STATE_REQUEST_SENT transaction.connection_id = connection_id - async with self._profile.session() as session: + profile_session = await self.session + async with profile_session.profile.session() as session: await transaction.save(session, reason="Change to requested state") transaction_request = TransactionRequest( @@ -158,15 +147,15 @@ async def create_request(self, transaction: TransactionRecord, connection_id: st return transaction, transaction_request - async def receive_request(self, request: TransactionRequest): + async def receive_request(self, request: TransactionRequest, connection_id: str): """ Receive a Transaction request. Args: request: A Transaction Request + connection_id: The connection id related to this transaction record """ - connection_id = self.session.connection_record.connection_id transaction = TransactionRecord() transaction._type = TransactionRecord.SIGNATURE_REQUEST @@ -187,7 +176,8 @@ async def receive_request(self, request: TransactionRequest): transaction.connection_id = connection_id transaction.state = TransactionRecord.STATE_REQUEST_RECEIVED - async with self._profile.session() as session: + profile_session = await self.session + async with profile_session.profile.session() as session: await transaction.save(session, reason="Change it") return transaction @@ -237,7 +227,8 @@ async def create_endorse_response( transaction.state = state - async with self._profile.session() as session: + profile_session = await self.session + async with profile_session.profile.session() as session: await transaction.save(session, reason="Change it") endorsed_transaction_response = EndorsedTransactionResponse( @@ -258,7 +249,8 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): response: The Endorsed Transaction Response """ - async with self._profile.session() as session: + profile_session = await self.session + async with profile_session.profile.session() as session: transaction = await TransactionRecord.retrieve_by_id( session, response.transaction_id ) @@ -274,7 +266,7 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): "endorser" ] = response.endorser_did - async with self._profile.session() as session: + async with profile_session.profile.session() as session: await transaction.save(session, reason="Change it") return transaction @@ -318,7 +310,8 @@ async def create_refuse_response( transaction.state = state - async with self._profile.session() as session: + profile_session = await self.session + async with profile_session.profile.session() as session: await transaction.save(session, reason="Change it") refused_transaction_response = RefusedTransactionResponse( @@ -339,7 +332,8 @@ async def receive_refuse_response(self, response: RefusedTransactionResponse): response: The refused transaction response """ - async with self._profile.session() as session: + profile_session = await self.session + async with profile_session.profile.session() as session: transaction = await TransactionRecord.retrieve_by_id( session, response.transaction_id ) @@ -354,7 +348,7 @@ async def receive_refuse_response(self, response: RefusedTransactionResponse): "endorser" ] = response.endorser_did - async with self._profile.session() as session: + async with profile_session.profile.session() as session: await transaction.save(session, reason="Change it") return transaction @@ -382,7 +376,8 @@ async def cancel_transaction(self, transaction: TransactionRecord, state: str): ) transaction.state = state - async with self._profile.session() as session: + profile_session = await self.session + async with profile_session.profile.session() as session: await transaction.save(session, reason="Change it") cancelled_transaction_response = CancelTransaction( @@ -391,21 +386,25 @@ async def cancel_transaction(self, transaction: TransactionRecord, state: str): return transaction, cancelled_transaction_response - async def receive_cancel_transaction(self, response: CancelTransaction): + async def receive_cancel_transaction( + self, response: CancelTransaction, connection_id: str + ): """ Update the transaction record to cancel a transaction request. Args: response: The cancel transaction response + connection_id: The connection_id related to this Transaction Record """ - connection_id = self.session.connection_record.connection_id - async with self._profile.session() as session: + + profile_session = await self.session + async with profile_session.profile.session() as session: transaction = await TransactionRecord.retrieve_by_connection_and_thread( session, connection_id, response.thread_id ) transaction.state = response.state - async with self._profile.session() as session: + async with profile_session.profile.session() as session: await transaction.save(session, reason="Change it") return transaction @@ -433,7 +432,8 @@ async def transaction_resend(self, transaction: TransactionRecord, state: str): ) transaction.state = state - async with self._profile.session() as session: + profile_session = await self.session + async with profile_session.profile.session() as session: await transaction.save(session, reason="Change it") resend_transaction_response = TransactionResend( @@ -443,21 +443,25 @@ async def transaction_resend(self, transaction: TransactionRecord, state: str): return transaction, resend_transaction_response - async def receive_transaction_resend(self, response: TransactionResend): + async def receive_transaction_resend( + self, response: TransactionResend, connection_id: str + ): """ Update the transaction with a resend request. Args: response: The Resend transaction response + connection_id: The connection_id related to this Transaction Record """ - connection_id = self.session.connection_record.connection_id - async with self._profile.session() as session: + + profile_session = await self.session + async with profile_session.profile.session() as session: transaction = await TransactionRecord.retrieve_by_connection_and_thread( session, connection_id, response.thread_id ) transaction.state = response.state - async with self._profile.session() as session: + async with profile_session.profile.session() as session: await transaction.save(session, reason="Change it") return transaction diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index e1a2574e6e..8cfb2ef974 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -170,13 +170,13 @@ async def transaction_create_request(request: web.BaseRequest): jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in" + reason="The transaction related jobs are not setup in " "connection metadata for this connection record" ) if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": raise web.HTTPForbidden(reason="Only a TRANSACTION_AUTHOR can create a request") - transaction_mgr = TransactionManager(session, context.profile) + transaction_mgr = TransactionManager(session) (transaction_record, transaction_request) = await transaction_mgr.create_request( transaction=transaction_record, connection_id=connection_id @@ -243,7 +243,7 @@ async def endorse_transaction_response(request: web.BaseRequest): jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in" + reason="The transaction related jobs are not setup in " "connection metadata for this connection record" ) if jobs["transaction_my_job"] != "TRANSACTION_ENDORSER": @@ -251,7 +251,7 @@ async def endorse_transaction_response(request: web.BaseRequest): reason="Only a TRANSACTION_ENDORSER can endorse a transaction" ) - transaction_mgr = TransactionManager(session, context.profile) + transaction_mgr = TransactionManager(session) ( transaction, endorsed_transaction_response, @@ -322,7 +322,7 @@ async def refuse_transaction_response(request: web.BaseRequest): jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in" + reason="The transaction related jobs are not setup in " "connection metadata for this connection record" ) if jobs["transaction_my_job"] != "TRANSACTION_ENDORSER": @@ -330,7 +330,7 @@ async def refuse_transaction_response(request: web.BaseRequest): reason="Only a TRANSACTION_ENDORSER can refuse a transaction" ) - transaction_mgr = TransactionManager(session, context.profile) + transaction_mgr = TransactionManager(session) ( transaction, refused_transaction_response, @@ -388,7 +388,7 @@ async def cancel_transaction(request: web.BaseRequest): jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in" + reason="The transaction related jobs are not setup in " "connection metadata for this connection record" ) if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": @@ -396,7 +396,7 @@ async def cancel_transaction(request: web.BaseRequest): reason="Only a TRANSACTION_AUTHOR can cancel a transaction" ) - transaction_mgr = TransactionManager(session, context.profile) + transaction_mgr = TransactionManager(session) ( transaction, cancelled_transaction_response, @@ -452,7 +452,7 @@ async def transaction_resend(request: web.BaseRequest): jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in" + reason="The transaction related jobs are not setup in " "connection metadata for this connection record" ) if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": @@ -460,7 +460,7 @@ async def transaction_resend(request: web.BaseRequest): reason="Only a TRANSACTION_AUTHOR can resend a transaction" ) - transaction_mgr = TransactionManager(session, context.profile) + transaction_mgr = TransactionManager(session) ( transaction, resend_transaction_response, @@ -507,7 +507,7 @@ async def set_transaction_jobs(request: web.BaseRequest): except BaseModelError as err: raise web.HTTPBadRequest(reason=err.roll_up) from err - transaction_mgr = TransactionManager(session, context.profile) + transaction_mgr = TransactionManager(session) tx_job_to_send = await transaction_mgr.set_transaction_my_job( record=record, transaction_my_job=transaction_my_job ) From 9791debd7565b6291bc3bc94e62e1e8a247dfa77 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Tue, 19 Jan 2021 20:34:17 +0530 Subject: [PATCH 013/243] Added Exception Handling to check whether transaction_jobs are set or not Signed-off-by: Harsh Multani --- .../protocols/endorse_transaction/v1_0/routes.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 8cfb2ef974..c8a2414395 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -173,6 +173,16 @@ async def transaction_create_request(request: web.BaseRequest): reason="The transaction related jobs are not setup in " "connection metadata for this connection record" ) + if "transaction_my_job" not in jobs.keys(): + raise web.HTTPForbidden( + reason='The "transaction_my_job" is not set in "transaction_jobs"' + " in connection metadata for this connection record" + ) + if "transaction_their_job" not in jobs.keys(): + raise web.HTTPForbidden( + reason='Ask the other agent to set up "transaction_my_job" ' + ' in "transaction_jobs" in connection metadata for their connection record' + ) if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": raise web.HTTPForbidden(reason="Only a TRANSACTION_AUTHOR can create a request") From 6c80d3cb176b7762c4deacc59e7b515f1257daf2 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Thu, 28 Jan 2021 01:57:28 +0530 Subject: [PATCH 014/243] Moved the code that appends Signature Request from 'create_record' to 'create_request' in manager.py file Signed-off-by: Harsh Multani --- .../endorse_transaction/v1_0/manager.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 5b1e4213ec..94bab77856 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -81,17 +81,6 @@ async def create_record( messages_attach_dict = messages_attach.__dict__ transaction = TransactionRecord() - transaction._type = TransactionRecord.SIGNATURE_REQUEST - - signature_request = { - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "author_goal_code": TransactionRecord.WRITE_TRANSACTION, - } - transaction.signature_request.clear() - transaction.signature_request.append(signature_request) timing = {"expires_time": expires_time} transaction.timing = timing @@ -132,6 +121,17 @@ async def create_request(self, transaction: TransactionRecord, connection_id: st f" in state: {transaction.state}" ) + transaction._type = TransactionRecord.SIGNATURE_REQUEST + signature_request = { + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "author_goal_code": TransactionRecord.WRITE_TRANSACTION, + } + transaction.signature_request.clear() + transaction.signature_request.append(signature_request) + transaction.state = TransactionRecord.STATE_REQUEST_SENT transaction.connection_id = connection_id profile_session = await self.session From 5af2d43b929f4a03bab19b26289491dfca82c3b0 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Thu, 28 Jan 2021 18:21:28 +0530 Subject: [PATCH 015/243] Added an endpoint to write an endorsed transaction to the ledger Signed-off-by: Harsh Multani --- .../credential_definitions/routes.py | 1 + aries_cloudagent/messaging/schemas/routes.py | 1 + .../endorse_transaction/v1_0/manager.py | 2 + .../v1_0/messages/messages_attach.py | 3 +- .../endorse_transaction/v1_0/routes.py | 179 ++++++++++++++++++ 5 files changed, 185 insertions(+), 1 deletion(-) diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index 09b6a98897..06e786e6e8 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -290,6 +290,7 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq author_did=author_did, author_verkey=author_verkey, transaction_message=transaction_message, + transaction_type="102", mechanism=mechanism, taaDigest=taaDigest, time=time, diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index acdce7e0f9..3e82ef3289 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -214,6 +214,7 @@ async def schemas_send_schema(request: web.BaseRequest): author_did=author_did, author_verkey=author_verkey, transaction_message=transaction_message, + transaction_type="101", mechanism=mechanism, taaDigest=taaDigest, time=time, diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 94bab77856..4e5dcfc462 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -53,6 +53,7 @@ async def create_record( author_did: str, author_verkey: str, transaction_message: dict, + transaction_type: str, mechanism: str, taaDigest: str, time: int, @@ -74,6 +75,7 @@ async def create_record( author_did=author_did, author_verkey=author_verkey, transaction_message=transaction_message, + transaction_type=transaction_type, mechanism=mechanism, taaDigest=taaDigest, time=time, diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/messages_attach.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/messages_attach.py index 4f4e6db8a6..e010857330 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/messages_attach.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/messages_attach.py @@ -27,6 +27,7 @@ def __init__( author_verkey: str = None, endorser_did: str = None, transaction_message: dict = {}, + transaction_type: str = None, mechanism: str = None, taaDigest: str = None, time: int = None, @@ -55,7 +56,7 @@ def __init__( "identifier": author_did, "operation": { "data": transaction_message, - "type": SCHEMA_TYPE, + "type": transaction_type, }, "protocol_version": PROTOCOL_VERSION, "reqId": 1597766666168851000, diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index c8a2414395..bb154bef74 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -1,5 +1,6 @@ """Endorse Transaction handling admin routes.""" +from asyncio import shield, ensure_future from aiohttp import web from aiohttp_apispec import ( docs, @@ -23,6 +24,13 @@ from ....wallet.base import BaseWallet +from ....ledger.base import BaseLedger +from ....ledger.error import LedgerError +from ....indy.issuer import IndyIssuer, IndyIssuerError +from ....revocation.indy import IndyRevocation +from ....revocation.error import RevocationNotSupportedError, RevocationError +from ....tails.base import BaseTailsServer + class TransactionListSchema(OpenAPISchema): """Result schema for transaction list.""" @@ -527,6 +535,176 @@ async def set_transaction_jobs(request: web.BaseRequest): return web.json_response(jobs) +@docs( + tags=["endorse-transaction"], + summary="For Author to write an endorsed transaction to the ledger", +) +@match_info_schema(TranIdMatchInfoSchema()) +@response_schema(TransactionRecordSchema(), 200) +async def transaction_write(request: web.BaseRequest): + """ + Request handler for writing an endorsed transaction to the ledger. + + Args: + request: aiohttp request object + + Returns: + The returned ledger response + + """ + + context: AdminRequestContext = request["context"] + + transaction_id = request.match_info["tran_id"] + try: + async with context.session() as session: + transaction = await TransactionRecord.retrieve_by_id( + session, transaction_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + try: + async with context.session() as session: + connection_record = await ConnRecord.retrieve_by_id( + session, transaction.connection_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + session = await context.session() + jobs = await connection_record.metadata_get(session, "transaction_jobs") + if not jobs: + raise web.HTTPForbidden( + reason="The transaction related jobs are not setup in " + "connection metadata for this connection record" + ) + if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": + raise web.HTTPForbidden( + reason="Only a TRANSACTION_AUTHOR can write a transaction to the ledger" + ) + + if transaction.state != TransactionRecord.STATE_TRANSACTION_ENDORSED: + raise web.HTTPForbidden( + reason="Only an endorsed transaction can be written to the ledger" + ) + + body = transaction.messages_attach[0]["data"]["json"]["operation"]["data"] + + if transaction.messages_attach[0]["data"]["json"]["operation"]["type"] == "101": + + schema_name = body.get("schema_name") + schema_version = body.get("schema_version") + attributes = body.get("attributes") + + ledger = context.inject(BaseLedger, required=False) + if not ledger: + reason = "No ledger available" + if not context.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) + + issuer = context.inject(IndyIssuer) + async with ledger: + try: + schema_id, schema_def = await shield( + ledger.create_and_send_schema( + issuer, schema_name, schema_version, attributes + ) + ) + except (IndyIssuerError, LedgerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + return web.json_response({"schema_id": schema_id, "schema": schema_def}) + + else: + + schema_id = body.get("schema_id") + support_revocation = bool(body.get("support_revocation")) + tag = body.get("tag") + rev_reg_size = body.get("revocation_registry_size") + + ledger = context.inject(BaseLedger, required=False) + if not ledger: + reason = "No ledger available" + if not context.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) + + issuer = context.inject(IndyIssuer) + try: # even if in wallet, send it and raise if erroneously so + async with ledger: + (cred_def_id, cred_def, novel) = await shield( + ledger.create_and_send_credential_definition( + issuer, + schema_id, + signature_type=None, + tag=tag, + support_revocation=support_revocation, + ) + ) + except LedgerError as e: + raise web.HTTPBadRequest(reason=e.message) from e + + # If revocation is requested and cred def is novel, create revocation registry + if support_revocation and novel: + session = ( + await context.session() + ) # FIXME - will update to not require session here + tails_base_url = session.settings.get("tails_server_base_url") + if not tails_base_url: + raise web.HTTPBadRequest(reason="tails_server_base_url not configured") + try: + # Create registry + revoc = IndyRevocation(session) + registry_record = await revoc.init_issuer_registry( + cred_def_id, + max_cred_num=rev_reg_size, + ) + + except RevocationNotSupportedError as e: + raise web.HTTPBadRequest(reason=e.message) from e + await shield(registry_record.generate_registry(session)) + try: + await registry_record.set_tails_file_public_uri( + session, f"{tails_base_url}/{registry_record.revoc_reg_id}" + ) + await registry_record.send_def(session) + await registry_record.send_entry(session) + + # stage pending registry independent of whether tails server is OK + pending_registry_record = await revoc.init_issuer_registry( + registry_record.cred_def_id, + max_cred_num=registry_record.max_cred_num, + ) + ensure_future( + pending_registry_record.stage_pending_registry( + session, max_attempts=16 + ) + ) + + tails_server = session.inject(BaseTailsServer) + (upload_success, reason) = await tails_server.upload_tails_file( + session, + registry_record.revoc_reg_id, + registry_record.tails_local_path, + interval=0.8, + backoff=-0.5, + max_attempts=5, # heuristic: respect HTTP timeout + ) + if not upload_success: + raise web.HTTPInternalServerError( + reason=( + f"Tails file for rev reg {registry_record.revoc_reg_id} " + f"failed to upload: {reason}" + ) + ) + + except RevocationError as e: + raise web.HTTPBadRequest(reason=e.message) from e + + return web.json_response({"credential_definition_id": cred_def_id}) + + async def register(app: web.Application): """Register routes.""" @@ -542,6 +720,7 @@ async def register(app: web.Application): web.post( "/transactions/{conn_id}/set-transaction-jobs", set_transaction_jobs ), + web.post("/transactions/{tran_id}/write", transaction_write), ] ) From 2baa0052d9db7cab11d2c27d263946e982ffb018 Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 1 Feb 2021 18:52:56 +0000 Subject: [PATCH 016/243] work in progress Signed-off-by: sklump --- .../protocols/out_of_band/v1_0/manager.py | 3 +- .../protocols/present_proof/definition.py | 6 ++ .../protocols/present_proof/v1_0/manager.py | 6 +- .../present_proof/v1_0/message_types.py | 2 +- .../present_proof/v1_0/tests/test_manager.py | 83 +++++++++++++++++++ .../protocols/present_proof/v2_0/__init__.py | 0 .../present_proof/v2_0/message_types.py | 34 ++++++++ .../present_proof/v2_0/messages/pres_ack.py | 42 ++++++++++ .../v2_0/messages/pres_proposal.py | 59 +++++++++++++ 9 files changed, 229 insertions(+), 6 deletions(-) create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/__init__.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/message_types.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py index d7d85177d6..ab3373a47b 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py @@ -412,8 +412,7 @@ async def receive_invitation( if conn_rec is None: if len(unq_handshake_protos) == 0: raise OutOfBandManagerError( - "No existing connection exists and \ - handshake_protocol is missing" + "No existing connection exists and handshake_protocol is missing" ) # Create a new connection for proto in unq_handshake_protos: diff --git a/aries_cloudagent/protocols/present_proof/definition.py b/aries_cloudagent/protocols/present_proof/definition.py index 62bddef6f5..97889b6ee6 100644 --- a/aries_cloudagent/protocols/present_proof/definition.py +++ b/aries_cloudagent/protocols/present_proof/definition.py @@ -6,5 +6,11 @@ "minimum_minor_version": 0, "current_minor_version": 0, "path": "v1_0", + }, + { + "major_version": 2, + "minimum_minor_version": 0, + "current_minor_version": 0, + "path": "v2_0", } ] diff --git a/aries_cloudagent/protocols/present_proof/v1_0/manager.py b/aries_cloudagent/protocols/present_proof/v1_0/manager.py index d8920dc39a..912137708a 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/manager.py @@ -454,9 +454,9 @@ async def receive_presentation( thread_id = message._thread_id try: connection_id_filter = ( - {"connection_id": connection_record.connection_id} - if connection_record is not None - else None + None + if connection_record is None + else {"connection_id": connection_record.connection_id} ) ( presentation_exchange_record diff --git a/aries_cloudagent/protocols/present_proof/v1_0/message_types.py b/aries_cloudagent/protocols/present_proof/v1_0/message_types.py index e86f87d5f0..8c09eedec3 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/message_types.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/message_types.py @@ -1,4 +1,4 @@ -"""Message and inner object type identifiers for Connections.""" +"""Message and inner object type identifiers for present-proof protocol v1.0.""" from ...didcomm_prefix import DIDCommPrefix diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py index 21cc68c140..26a7cdfb32 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py @@ -783,6 +783,89 @@ async def test_receive_presentation(self): V10PresentationExchange.STATE_PRESENTATION_RECEIVED ) + async def test_receive_presentation_oob(self): + connection_record = async_mock.MagicMock(connection_id=CONN_ID) + + exchange_dummy = V10PresentationExchange( + presentation_proposal_dict={ + "presentation_proposal": { + "@type": DIDCommPrefix.qualify_current( + "present-proof/1.0/presentation-preview" + ), + "attributes": [ + {"name": "favourite", "cred_def_id": CD_ID, "value": "potato"}, + {"name": "icon", "cred_def_id": CD_ID, "value": "cG90YXRv"}, + ], + "predicates": [], + } + }, + presentation_request={ + "name": "proof-request", + "version": "1.0", + "nonce": "1234567890", + "requested_attributes": { + "0_favourite_uuid": { + "name": "favourite", + "restrictions": [{"cred_def_id": CD_ID}], + }, + "1_icon_uuid": { + "name": "icon", + "restrictions": [{"cred_def_id": CD_ID}], + }, + }, + }, + presentation={ + "proof": { + "proofs": [], + "requested_proof": { + "revealed_attrs": { + "0_favourite_uuid": { + "sub_proof_index": 0, + "raw": "potato", + "encoded": "12345678901234567890", + }, + "1_icon_uuid": { + "sub_proof_index": 1, + "raw": "cG90YXRv", + "encoded": "12345678901234567890", + }, + }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {}, + }, + }, + "identifiers": [ + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + }, + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + }, + ], + }, + ) + message = async_mock.MagicMock() + + with async_mock.patch.object( + V10PresentationExchange, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V10PresentationExchange, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex: + retrieve_ex.side_effect = [StorageNotFoundError(), exchange_dummy] + exchange_out = await self.manager.receive_presentation( + message, connection_record + ) + assert exchange_out.state == ( + V10PresentationExchange.STATE_PRESENTATION_RECEIVED + ) + async def test_receive_presentation_bait_and_switch(self): connection_record = async_mock.MagicMock(connection_id=CONN_ID) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py new file mode 100644 index 0000000000..ed1fd7d63f --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py @@ -0,0 +1,34 @@ +"""Message and inner object type identifiers for present-proof protocol v2.0.""" + +from ...didcomm_prefix import DIDCommPrefix + +SPEC_URI = ( + "https://github.com/hyperledger/aries-rfcs/tree/" + "de0092a41b7d54c4fe58a69e0dba24ae8bec9360/features/0454-present-proof-v2" +) + +# Message types +PRES_PROPOSAL = "present-proof/2.0/propose-presentation" +PRES_REQUEST = "present-proof/2.0/request-presentation" +PRES = "present-proof/2.0/presentation" +PRES_ACK = "present-proof/2.0/ack" + +PROTOCOL_PACKAGE = "aries_cloudagent.protocols.present_proof.v2_0" + +MESSAGE_TYPES = DIDCommPrefix.qualify_all( + { + PRES_PROPOSAL: ( + f"{PROTOCOL_PACKAGE}.messages.pres_proposal.PresProposal" + ), + PRES_REQUEST: ( + f"{PROTOCOL_PACKAGE}.messages.pres_request.PresRequest" + ), + PRES: f"{PROTOCOL_PACKAGE}.messages.pres.Pres", + PRES_ACK: ( + f"{PROTOCOL_PACKAGE}.messages.pres_ack.PresAck" + ), + } +) + +# Inner object types +PRES_PREVIEW = "present-proof/2.0/presentation-preview" diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py new file mode 100644 index 0000000000..786e6ad948 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py @@ -0,0 +1,42 @@ +"""Represents an explicit RFC 15 ack message, adopted into present-proof protocol.""" + +from marshmallow import EXCLUDE + +from .....messaging.ack.message import Ack, AckSchema + +from ..message_types import PRES_ACK, PROTOCOL_PACKAGE + +HANDLER_CLASS = ( + f"{PROTOCOL_PACKAGE}.handlers.pres_ack_handler.PresAckHandler" +) + + +class PresAck(Ack): + """Base class representing an explicit ack message for present-proof protocol.""" + + class Meta: + """PresAck metadata.""" + + handler_class = HANDLER_CLASS + message_type = PRES_ACK + schema_class = "PresAckSchema" + + def __init__(self, status: str = None, **kwargs): + """ + Initialize an explicit ack message instance. + + Args: + status: Status (default OK) + + """ + super().__init__(status, **kwargs) + + +class PresAckSchema(AckSchema): + """Schema for PresAck class.""" + + class Meta: + """PresAck schema metadata.""" + + model_class = PresAck + unknown = EXCLUDE diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py new file mode 100644 index 0000000000..a3e0e1373e --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -0,0 +1,59 @@ +"""A presentation proposal content message.""" + +from marshmallow import EXCLUDE, fields + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema + +from ..message_types import PRESENTATION_PROPOSAL, PROTOCOL_PACKAGE + +from .inner.presentation_preview import PresentationPreview, PresentationPreviewSchema + +HANDLER_CLASS = ( + f"{PROTOCOL_PACKAGE}.handlers." + "presentation_proposal_handler.PresentationProposalHandler" +) + + +class PresentationProposal(AgentMessage): + """Class representing a presentation proposal.""" + + class Meta: + """PresentationProposal metadata.""" + + handler_class = HANDLER_CLASS + schema_class = "PresentationProposalSchema" + message_type = PRESENTATION_PROPOSAL + + def __init__( + self, + _id: str = None, + *, + comment: str = None, + presentation_proposal: PresentationPreview = None, + **kwargs, + ): + """ + Initialize presentation proposal object. + + Args: + comment: optional human-readable comment + presentation_proposal: proposed presentation preview + """ + super().__init__(_id, **kwargs) + self.comment = comment + self.presentation_proposal = presentation_proposal + + +class PresentationProposalSchema(AgentMessageSchema): + """Presentation proposal schema.""" + + class Meta: + """Presentation proposal schema metadata.""" + + model_class = PresentationProposal + unknown = EXCLUDE + + comment = fields.Str( + description="Human-readable comment", required=False, allow_none=True + ) + presentation_proposal = fields.Nested(PresentationPreviewSchema, required=True) From b6406a02c42dacef72fdde9f28333b84f8687fdc Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 2 Feb 2021 15:03:21 +0000 Subject: [PATCH 017/243] work in progress Signed-off-by: sklump --- .../issue_credential/v2_0/message_types.py | 2 +- .../v2_0/messages/cred_format.py | 16 +-- .../v2_0/messages/pres_format.py | 130 ++++++++++++++++++ .../v2_0/messages/pres_proposal.py | 4 +- 4 files changed, 141 insertions(+), 11 deletions(-) create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/message_types.py b/aries_cloudagent/protocols/issue_credential/v2_0/message_types.py index 8d8db60f7f..46141d76fa 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/message_types.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/message_types.py @@ -4,7 +4,7 @@ SPEC_URI = ( "https://github.com/hyperledger/aries-rfcs/tree/" - "6509b84abaf5760a8ba1744c8078d513f28456db/features/0453-issue-credential-v2" + "cd27fc64aa2805f756a118043d7c880354353047/features/0453-issue-credential-v2" ) # Message types diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py index 70a98c4de2..566316af49 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py @@ -1,4 +1,4 @@ -"""Credential format inner object.""" +"""Issue-credential protocol message attachment format.""" from collections import namedtuple from enum import Enum @@ -21,15 +21,15 @@ class V20CredFormat(BaseModel): - """Credential format.""" + """Issue-credential protocol message attachment format.""" class Meta: - """Credential format metadata.""" + """Issue-credential protocol message attachment format metadata.""" schema_class = "V20CredFormatSchema" class Format(Enum): - """Proposal credential format.""" + """Attachment format.""" INDY = FormatSpec( "hlindy-zkp-v1.0", @@ -103,7 +103,7 @@ def __init__( attach_id: str = None, format_: Union[str, "V20CredFormat.Format"] = None, ): - """Initialize cred format.""" + """Initialize issue-credential protocol message attachment format.""" self.attach_id = attach_id or uuid4() self.format_ = ( V20CredFormat.Format.get(format_) or V20CredFormat.Format.INDY @@ -116,10 +116,10 @@ def format(self) -> str: class V20CredFormatSchema(BaseModelSchema): - """Credential format schema.""" + """Issue-credential protocol message attachment format schema.""" class Meta: - """Credential format schema metadata.""" + """Issue-credential protocol message attachment format schema metadata.""" model_class = V20CredFormat unknown = EXCLUDE @@ -133,7 +133,7 @@ class Meta: format_ = fields.Str( required=True, allow_none=False, - description="acceptable credential format specifier", + description="acceptable issue-credential message attachment format specifier", data_key="format", validate=validate.OneOf([f.aries for f in V20CredFormat.Format]), example=V20CredFormat.Format.INDY.aries, diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py new file mode 100644 index 0000000000..5b08100e51 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -0,0 +1,130 @@ +"""Credential format inner object.""" + +from collections import namedtuple +from enum import Enum +from re import sub +from typing import Mapping, Sequence, Union +from uuid import uuid4 + +from marshmallow import EXCLUDE, fields, validate, ValidationError + +from .....messaging.credential_definitions.util import CRED_DEF_TAGS +from .....messaging.decorators.attach_decorator import AttachDecorator +from .....messaging.models.base import BaseModel, BaseModelSchema +from .....messaging.valid import UUIDFour + +# Aries RFC value, further monikers +FormatSpec = namedtuple("FormatSpec", "aries aka") + + +class V20PresFormat(BaseModel): + """Present-proof protocol message attachment format.""" + + class Meta: + """Present-proof protocol message attachment format metadata.""" + + schema_class = "V20PresFormatSchema" + + class Format(Enum): + """Attachment format.""" + + INDY = FormatSpec( + "hlindy-zkp-v1.0", + {"indy", "hyperledgerindy", "hlindy"}, + ) + DIF = FormatSpec( + "dif/presentation-exchange/definitions@v1.0", + {"dif", "w3c", "jsonld"}, + ) + + @classmethod + def get(cls, label: Union[str, "V20PresFormat.Format"]): + """Get format enum for label.""" + if isinstance(label, str): + for fmt in V20PresFormat.Format: + if ( + fmt.aries == label + or sub("[^a-zA-Z0-9]+", "", label.lower()) in fmt.aka + ): + return fmt + elif isinstance(label, V20PresFormat.Format): + return label + + return None + + @property + def aries(self) -> str: + """Accessor for aries identifier.""" + return self.value.aries + + @property + def aka(self) -> str: + """Accessor for alternative identifier list.""" + return self.value.aka + + def validate_proposal_attach(self, data: Mapping): + """Raise ValidationError for wrong proposal~attach content.""" + if self is V20PredFormat.Format.INDY: + if data.keys() - set(CRED_DEF_TAGS): + raise ValidationError(f"Bad indy credential filter: {data}") + + def get_attachment_data( + self, + formats: Sequence["V20PresFormat"], + attachments: Sequence[AttachDecorator], + ): + """Find attachment of current format, base64-decode and return its data.""" + for fmt in formats: + if V20PresFormat.Format.get(fmt.format) is self: + attach_id = fmt.attach_id + break + else: + return None + + for atch in attachments: + if atch.ident == attach_id: + return atch.indy_dict + + return None + + def __init__( + self, + *, + attach_id: str = None, + format_: Union[str, "V20PresFormat.Format"] = None, + ): + """Initialize present-proof protocol message attachment format.""" + self.attach_id = attach_id or uuid4() + self.format_ = ( + V20PresFormat.Format.get(format_) or V20PresFormat.Format.INDY + ).aries + + @property + def format(self) -> str: + """Return format.""" + return self.format_ + + +class V20PresFormatSchema(BaseModelSchema): + """Present-proof protocol message attachment format schema.""" + + class Meta: + """Present-proof protocol message attachment format schema metadata.""" + + model_class = V20PresFormat + unknown = EXCLUDE + + attach_id = fields.Str( + required=True, + allow_none=False, + description="attachment identifier", + example=UUIDFour.EXAMPLE, + ) + format_ = fields.Str( + required=True, + allow_none=False, + description="acceptable present-proof message attachment format specifier", + data_key="format", + validate=validate.OneOf([f.aries for f in V20PresFormat.Format]), + example=V20PresFormat.Format.INDY.aries, + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py index a3e0e1373e..255090da6c 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -4,9 +4,9 @@ from .....messaging.agent_message import AgentMessage, AgentMessageSchema -from ..message_types import PRESENTATION_PROPOSAL, PROTOCOL_PACKAGE +from ..message_types import PRES_PROPOSAL, PROTOCOL_PACKAGE -from .inner.presentation_preview import PresentationPreview, PresentationPreviewSchema +from .inner.pres_preview import PresentationPreview, PresentationPreviewSchema HANDLER_CLASS = ( f"{PROTOCOL_PACKAGE}.handlers." From 879667c5d86049e6d431779ada7c449d6991a686 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Wed, 3 Feb 2021 04:47:21 +0530 Subject: [PATCH 018/243] Refactored the code Signed-off-by: Harsh Multani --- .../endorse_transaction/v1_0/manager.py | 20 +++++++++---------- .../endorse_transaction/v1_0/routes.py | 3 +-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 4e5dcfc462..e38ad9f054 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -138,7 +138,7 @@ async def create_request(self, transaction: TransactionRecord, connection_id: st transaction.connection_id = connection_id profile_session = await self.session async with profile_session.profile.session() as session: - await transaction.save(session, reason="Change to requested state") + await transaction.save(session, reason="Created an endorsement request") transaction_request = TransactionRequest( transaction_id=transaction._id, @@ -180,7 +180,7 @@ async def receive_request(self, request: TransactionRequest, connection_id: str) profile_session = await self.session async with profile_session.profile.session() as session: - await transaction.save(session, reason="Change it") + await transaction.save(session, reason="Received an endorsement request") return transaction @@ -231,7 +231,7 @@ async def create_endorse_response( profile_session = await self.session async with profile_session.profile.session() as session: - await transaction.save(session, reason="Change it") + await transaction.save(session, reason="Created an endorsed response") endorsed_transaction_response = EndorsedTransactionResponse( transaction_id=transaction.thread_id, @@ -269,7 +269,7 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): ] = response.endorser_did async with profile_session.profile.session() as session: - await transaction.save(session, reason="Change it") + await transaction.save(session, reason="Received an endorsed response") return transaction @@ -314,7 +314,7 @@ async def create_refuse_response( profile_session = await self.session async with profile_session.profile.session() as session: - await transaction.save(session, reason="Change it") + await transaction.save(session, reason="Created a refused response") refused_transaction_response = RefusedTransactionResponse( transaction_id=transaction.thread_id, @@ -351,7 +351,7 @@ async def receive_refuse_response(self, response: RefusedTransactionResponse): ] = response.endorser_did async with profile_session.profile.session() as session: - await transaction.save(session, reason="Change it") + await transaction.save(session, reason="Received a refused response") return transaction @@ -380,7 +380,7 @@ async def cancel_transaction(self, transaction: TransactionRecord, state: str): transaction.state = state profile_session = await self.session async with profile_session.profile.session() as session: - await transaction.save(session, reason="Change it") + await transaction.save(session, reason="Cancelled the transaction") cancelled_transaction_response = CancelTransaction( state=state, thread_id=transaction._id @@ -407,7 +407,7 @@ async def receive_cancel_transaction( transaction.state = response.state async with profile_session.profile.session() as session: - await transaction.save(session, reason="Change it") + await transaction.save(session, reason="Received a cancel request") return transaction @@ -436,7 +436,7 @@ async def transaction_resend(self, transaction: TransactionRecord, state: str): transaction.state = state profile_session = await self.session async with profile_session.profile.session() as session: - await transaction.save(session, reason="Change it") + await transaction.save(session, reason="Resends the transaction request") resend_transaction_response = TransactionResend( state=TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED, @@ -464,7 +464,7 @@ async def receive_transaction_resend( transaction.state = response.state async with profile_session.profile.session() as session: - await transaction.save(session, reason="Change it") + await transaction.save(session, reason="Receives a transaction request") return transaction diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index bb154bef74..9dac9e2fa4 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -13,7 +13,7 @@ from ....admin.request_context import AdminRequestContext from .manager import TransactionManager from .models.transaction_record import TransactionRecord, TransactionRecordSchema -from ....connections.models.conn_record import ConnRecord, ConnRecordSchema +from ....connections.models.conn_record import ConnRecord from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import UUIDFour @@ -499,7 +499,6 @@ async def transaction_resend(request: web.BaseRequest): ) @querystring_schema(AssignTransactionJobsSchema()) @match_info_schema(ConnIdMatchInfoSchema()) -@response_schema(ConnRecordSchema(), 200, description="") async def set_transaction_jobs(request: web.BaseRequest): """ Request handler for assigning transaction jobs. From 0694e1d354bad26fc2c5e918a38fa9c9abd42dce Mon Sep 17 00:00:00 2001 From: sklump Date: Wed, 3 Feb 2021 19:56:15 +0000 Subject: [PATCH 019/243] work in progress Signed-off-by: sklump --- aries_cloudagent/indy/sdk/verifier.py | 2 +- .../v2_0/messages/cred_format.py | 4 +- .../v2_0/messages/cred_issue.py | 10 +- .../v2_0/messages/cred_offer.py | 7 +- .../v2_0/messages/cred_proposal.py | 6 +- .../v2_0/messages/cred_request.py | 10 +- .../protocols/out_of_band/v1_0/manager.py | 2 +- .../present_proof/{v1_0 => }/util/__init__.py | 0 .../present_proof/{v1_0 => }/util/indy.py | 0 .../{v1_0 => }/util/predicate.py | 0 .../handlers/presentation_request_handler.py | 8 +- .../protocols/present_proof/v1_0/manager.py | 3 +- .../present_proof/v1_0/tests/test_manager.py | 3 +- .../present_proof/v2_0/message_types.py | 10 +- .../v2_0/messages/inner/__init__.py | 0 .../v2_0/messages/inner/pres_preview.py | 444 +++++++++++++ .../v2_0/messages/inner/tests/__init__.py | 0 .../messages/inner/tests/test_pres_preview.py | 595 ++++++++++++++++++ .../present_proof/v2_0/messages/pres_ack.py | 20 +- .../v2_0/messages/pres_format.py | 15 +- .../v2_0/messages/pres_proposal.py | 86 ++- .../v2_0/messages/tests/__init__.py | 0 22 files changed, 1170 insertions(+), 55 deletions(-) rename aries_cloudagent/protocols/present_proof/{v1_0 => }/util/__init__.py (100%) rename aries_cloudagent/protocols/present_proof/{v1_0 => }/util/indy.py (100%) rename aries_cloudagent/protocols/present_proof/{v1_0 => }/util/predicate.py (100%) create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/inner/__init__.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/inner/pres_preview.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/__init__.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/test_pres_preview.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/tests/__init__.py diff --git a/aries_cloudagent/indy/sdk/verifier.py b/aries_cloudagent/indy/sdk/verifier.py index 8963c22b29..7990257748 100644 --- a/aries_cloudagent/indy/sdk/verifier.py +++ b/aries_cloudagent/indy/sdk/verifier.py @@ -11,7 +11,7 @@ from ...ledger.indy import IndySdkLedger from ...messaging.util import canon, encode -from ...protocols.present_proof.v1_0.util.indy import indy_proof_req2non_revoc_intervals +from ...protocols.present_proof.util.indy import indy_proof_req2non_revoc_intervals from ..verifier import IndyVerifier diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py index 566316af49..6b10fb6f8f 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py @@ -127,13 +127,13 @@ class Meta: attach_id = fields.Str( required=True, allow_none=False, - description="attachment identifier", + description="Attachment identifier", example=UUIDFour.EXAMPLE, ) format_ = fields.Str( required=True, allow_none=False, - description="acceptable issue-credential message attachment format specifier", + description="Acceptable issue-credential message attachment format specifier", data_key="format", validate=validate.OneOf([f.aries for f in V20CredFormat.Format]), example=V20CredFormat.Format.INDY.aries, diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py index 194df023df..8f4290243a 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py @@ -44,6 +44,8 @@ def __init__( Args: comment: optional comment credentials_attach: credentials attachments + formats: acceptable attachment formats + filter_attach: list of credential attachments """ super().__init__(_id=_id, **kwargs) @@ -88,8 +90,12 @@ class Meta: V20CredFormatSchema, many=True, required=True, - description="Acceptable credential formats", + description="Acceptable attachment formats", ) credentials_attach = fields.Nested( - AttachDecoratorSchema, many=True, required=True, data_key="credentials~attach" + AttachDecoratorSchema, + many=True, + required=True, + data_key="credentials~attach", + description="Credential attachments", ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py index c44ef4b98f..0801483f82 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py @@ -47,6 +47,7 @@ def __init__( replacement_id: unique to issuer, to coordinate credential replacement comment: optional human-readable comment credential_preview: credential preview + formats: acceptable attachment formats offers_attach: list of offer attachments """ @@ -99,5 +100,9 @@ class Meta: description="Acceptable credential formats", ) offers_attach = fields.Nested( - AttachDecoratorSchema, required=True, many=True, data_key="offers~attach" + AttachDecoratorSchema, + required=True, + many=True, + data_key="offers~attach", + description="Offer attachments", ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py index 151e2cbf7b..3a751764f9 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py @@ -46,7 +46,7 @@ def __init__( Args: comment: optional human-readable comment credential_proposal: proposed credential preview - formats: acceptable credential formats + formats: acceptable attachment formats filter_attach: list of attachments filtering credential proposal """ @@ -92,14 +92,14 @@ class Meta: V20CredFormatSchema, many=True, required=True, - description="Acceptable credential formats", + description="Acceptable attachment formats", ) filters_attach = fields.Nested( AttachDecoratorSchema, data_key="filters~attach", required=True, description=( - "Credential filter per acceptable format " "on corresponding identifier" + "Credential filter per acceptable format on corresponding identifier" ), many=True, ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py index b90f9bea9f..7f43e56cb0 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py @@ -44,6 +44,8 @@ def __init__( Args: requests_attach: requests attachments comment: optional comment + formats: acceptable attachment formats + requests_attach: list of request attachments """ super().__init__(_id=_id, **kwargs) @@ -81,8 +83,12 @@ class Meta: V20CredFormatSchema, many=True, required=True, - description="Acceptable credential formats", + description="Acceptable attachment formats", ) requests_attach = fields.Nested( - AttachDecoratorSchema, required=True, many=True, data_key="requests~attach" + AttachDecoratorSchema, + required=True, + many=True, + data_key="requests~attach", + description="Request attachments", ) diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py index ab3373a47b..0dcd893cf8 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py @@ -41,7 +41,7 @@ from ....ledger.base import BaseLedger from ....messaging.responder import BaseResponder from ...present_proof.v1_0.messages.presentation_proposal import PresentationProposal -from ...present_proof.v1_0.util.indy import indy_proof_req_preview2indy_requested_creds +from ...present_proof.util.indy import indy_proof_req_preview2indy_requested_creds from ....indy.holder import IndyHolder from ....messaging.decorators.attach_decorator import AttachDecorator diff --git a/aries_cloudagent/protocols/present_proof/v1_0/util/__init__.py b/aries_cloudagent/protocols/present_proof/util/__init__.py similarity index 100% rename from aries_cloudagent/protocols/present_proof/v1_0/util/__init__.py rename to aries_cloudagent/protocols/present_proof/util/__init__.py diff --git a/aries_cloudagent/protocols/present_proof/v1_0/util/indy.py b/aries_cloudagent/protocols/present_proof/util/indy.py similarity index 100% rename from aries_cloudagent/protocols/present_proof/v1_0/util/indy.py rename to aries_cloudagent/protocols/present_proof/util/indy.py diff --git a/aries_cloudagent/protocols/present_proof/v1_0/util/predicate.py b/aries_cloudagent/protocols/present_proof/util/predicate.py similarity index 100% rename from aries_cloudagent/protocols/present_proof/v1_0/util/predicate.py rename to aries_cloudagent/protocols/present_proof/util/predicate.py diff --git a/aries_cloudagent/protocols/present_proof/v1_0/handlers/presentation_request_handler.py b/aries_cloudagent/protocols/present_proof/v1_0/handlers/presentation_request_handler.py index 3f448dba81..bc3d80cbf6 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/handlers/presentation_request_handler.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/handlers/presentation_request_handler.py @@ -1,21 +1,21 @@ """Presentation request message handler.""" +from .....indy.holder import IndyHolder from .....messaging.base_handler import ( BaseHandler, BaseResponder, HandlerException, RequestContext, ) -from .....indy.holder import IndyHolder from .....storage.error import StorageNotFoundError +from .....utils.tracing import trace_event, get_timer + +from ...util.indy import indy_proof_req_preview2indy_requested_creds from ..manager import PresentationManager from ..messages.presentation_proposal import PresentationProposal from ..messages.presentation_request import PresentationRequest from ..models.presentation_exchange import V10PresentationExchange -from ..util.indy import indy_proof_req_preview2indy_requested_creds - -from .....utils.tracing import trace_event, get_timer class PresentationRequestHandler(BaseHandler): diff --git a/aries_cloudagent/protocols/present_proof/v1_0/manager.py b/aries_cloudagent/protocols/present_proof/v1_0/manager.py index 912137708a..7314a2a297 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/manager.py @@ -15,13 +15,14 @@ from ....revocation.models.revocation_registry import RevocationRegistry from ....storage.error import StorageNotFoundError +from ..util.indy import indy_proof_req2non_revoc_intervals + from .models.presentation_exchange import V10PresentationExchange from .messages.presentation_ack import PresentationAck from .messages.presentation_proposal import PresentationProposal from .messages.presentation_request import PresentationRequest from .messages.presentation import Presentation from .message_types import ATTACH_DECO_IDS, PRESENTATION, PRESENTATION_REQUEST -from .util.indy import indy_proof_req2non_revoc_intervals LOGGER = logging.getLogger(__name__) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py index 26a7cdfb32..9415f17ec4 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py @@ -18,6 +18,8 @@ from ....didcomm_prefix import DIDCommPrefix +from ...util.indy import indy_proof_req_preview2indy_requested_creds + from .. import manager as test_module from ..manager import PresentationManager, PresentationManagerError from ..messages.presentation import Presentation @@ -30,7 +32,6 @@ PresPredSpec, ) from ..models.presentation_exchange import V10PresentationExchange -from ..util.indy import indy_proof_req_preview2indy_requested_creds CONN_ID = "connection_id" diff --git a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py index ed1fd7d63f..c099dfd1c4 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py @@ -8,10 +8,10 @@ ) # Message types -PRES_PROPOSAL = "present-proof/2.0/propose-presentation" -PRES_REQUEST = "present-proof/2.0/request-presentation" -PRES = "present-proof/2.0/presentation" -PRES_ACK = "present-proof/2.0/ack" +PRES_20_PROPOSAL = "present-proof/2.0/propose-presentation" +PRES_20_REQUEST = "present-proof/2.0/request-presentation" +PRES_20 = "present-proof/2.0/presentation" +PRES_20_ACK = "present-proof/2.0/ack" PROTOCOL_PACKAGE = "aries_cloudagent.protocols.present_proof.v2_0" @@ -31,4 +31,4 @@ ) # Inner object types -PRES_PREVIEW = "present-proof/2.0/presentation-preview" +PRES_20_PREVIEW = "present-proof/2.0/presentation-preview" diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/pres_preview.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/pres_preview.py new file mode 100644 index 0000000000..dc7d89fa8d --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/pres_preview.py @@ -0,0 +1,444 @@ +"""A presentation preview inner object.""" + +from enum import Enum +from time import time +from typing import Mapping, Sequence + +from marshmallow import fields + +from ......ledger.indy import IndySdkLedger +from ......messaging.models.base import BaseModel, BaseModelSchema +from ......messaging.util import canon +from ......messaging.valid import INDY_CRED_DEF_ID, INDY_PREDICATE +from ......revocation.models.indy import NonRevocationInterval +from ......wallet.util import b64_to_str +from ......indy.util import generate_pr_nonce + +from .....didcomm_prefix import DIDCommPrefix + +from ...message_types import PRES_20_PREVIEW +from ...util.predicate import Predicate + + +class V20PresPredSpec(BaseModel): + """Class representing a predicate specification within a presentation preview.""" + + class Meta: + """Pred spec metadata.""" + + schema_class = "V20PresPredSpecSchema" + + def __init__( + self, + name: str, + *, + cred_def_id: str = None, + predicate: str, + threshold: int, + **kwargs, + ): + """ + Initialize preview object. + + Args: + name: attribute name + cred_def_id: credential definition identifier + predicate: predicate type (e.g., ">=") + threshold: threshold value + + """ + super().__init__(**kwargs) + self.name = name + self.cred_def_id = cred_def_id + self.predicate = predicate + self.threshold = threshold + + def __eq__(self, other): + """Equality comparator.""" + + if canon(self.name) != canon(other.name): + return False # distinct attribute names modulo canonicalization + + if self.cred_def_id != other.cred_def_id: + return False + + if self.predicate != other.predicate: + return False + + return self.threshold == other.threshold + + +class V20PresPredSpecSchema(BaseModelSchema): + """Predicate specifiation schema.""" + + class Meta: + """Predicate specifiation schema metadata.""" + + model_class = V20PresPredSpec + + name = fields.Str(description="Attribute name", required=True, example="high_score") + cred_def_id = fields.Str( + description="Credential definition identifier", + required=False, + **INDY_CRED_DEF_ID, + ) + predicate = fields.Str( + description="Predicate type ('<', '<=', '>=', or '>')", + required=True, + **INDY_PREDICATE, + ) + threshold = fields.Int(description="Threshold value", required=True, strict=True) + + +class V20PresAttrSpec(BaseModel): + """Class representing an attibute specification within a presentation preview.""" + + class Meta: + """Attr spec metadata.""" + + schema_class = "V20PresAttrSpecSchema" + + class Posture(Enum): + """Attribute posture: self-attested, revealed claim or unrevealed claim.""" + + SELF_ATTESTED = 0 + REVEALED_CLAIM = 1 + UNREVEALED_CLAIM = 2 + + def __init__( + self, + name: str, + cred_def_id: str = None, + mime_type: str = None, + value: str = None, + referent: str = None, + **kwargs, + ): + """ + Initialize attribute specification object. + + Args: + name: attribute name + cred_def_id: credential definition identifier + (None for self-attested attribute) + mime_type: MIME type + value: attribute value as credential stores it + (None for unrevealed attribute) + referent: credential referent + + """ + super().__init__(**kwargs) + self.name = name + self.cred_def_id = cred_def_id + self.mime_type = mime_type.lower() if mime_type else None + self.value = value + self.referent = referent + + @staticmethod + def list_plain(plain: dict, cred_def_id: str, referent: str = None): + """ + Return a list of `V20PresAttrSpec` on input cred def id. + + Args: + plain: dict mapping names to values + cred_def_id: credential definition identifier to specify + referent: single referent to use, omit for none + + Returns: + List of V20PresAttrSpec on input cred def id with no MIME types + + """ + return [ + V20PresAttrSpec( + name=k, cred_def_id=cred_def_id, value=plain[k], referent=referent + ) + for k in plain + ] + + @property + def posture(self) -> "V20PresAttrSpec.Posture": + """Attribute posture: self-attested, revealed claim, or unrevealed claim.""" + + if self.cred_def_id: + if self.value: + return V20PresAttrSpec.Posture.REVEALED_CLAIM + return V20PresAttrSpec.Posture.UNREVEALED_CLAIM + if self.value: + return V20PresAttrSpec.Posture.SELF_ATTESTED + + return None + + def b64_decoded_value(self) -> str: + """Value, base64-decoded if applicable.""" + + return b64_to_str(self.value) if self.value and self.mime_type else self.value + + def satisfies(self, pred_spec: V20PresPredSpec): + """Whether current specified attribute satisfies input specified predicate.""" + + return bool( + self.value + and not self.mime_type + and canon(self.name) == canon(pred_spec.name) + and not pred_spec.cred_def_id + or (self.cred_def_id == pred_spec.cred_def_id) + and Predicate.get(pred_spec.predicate).value.yes( + self.value, pred_spec.threshold + ) + ) + + def __eq__(self, other): + """Equality comparator.""" + + if canon(self.name) != canon(other.name): + return False # distinct attribute names + + if self.cred_def_id != other.cred_def_id: + return False # distinct attribute cred def ids + + if self.mime_type != other.mime_type: + return False # distinct MIME types + + if self.referent != other.referent: + return False # distinct credential referents + + return self.b64_decoded_value() == other.b64_decoded_value() + + +class V20PresAttrSpecSchema(BaseModelSchema): + """Attribute specifiation schema.""" + + class Meta: + """Attribute specifiation schema metadata.""" + + model_class = V20PresAttrSpec + + name = fields.Str( + description="Attribute name", required=True, example="favourite_drink" + ) + cred_def_id = fields.Str(required=False, **INDY_CRED_DEF_ID) + mime_type = fields.Str( + description="MIME type (default null)", + required=False, + data_key="mime-type", + example="image/jpeg", + ) + value = fields.Str(description="Attribute value", required=False, example="martini") + referent = fields.Str( + description="Credential referent", required=False, example="0" + ) + + +class V20PresPreview(BaseModel): + """Class representing presentation preview.""" + + class Meta: + """Presentation preview metadata.""" + + schema_class = "V20PresPreviewSchema" + message_type = PRES_20_PREVIEW + + def __init__( + self, + *, + _type: str = None, + attributes: Sequence[V20PresAttrSpec] = None, + predicates: Sequence[V20PresPredSpec] = None, + **kwargs, + ): + """ + Initialize presentation preview object. + + Args: + _type: formalism for Marshmallow model creation: ignored + attributes: list of attribute specifications + predicates: list of predicate specifications + + """ + super().__init__(**kwargs) + self.attributes = list(attributes) if attributes else [] + self.predicates = list(predicates) if predicates else [] + + @property + def _type(self): + """Accessor for message type.""" + + return DIDCommPrefix.qualify_current(PresPreview.Meta.message_type) + + def has_attr_spec(self, cred_def_id: str, name: str, value: str) -> bool: + """ + Return whether preview contains given attribute specification. + + Args: + cred_def_id: credential definition identifier + name: attribute name + value: attribute value + + Returns: + Whether preview contains matching attribute specification. + + """ + + return any( + canon(a.name) == canon(name) + and a.value in (value, None) + and a.cred_def_id == cred_def_id + for a in self.attributes + ) + + async def indy_proof_request( + self, + name: str = None, + version: str = None, + nonce: str = None, + ledger: IndySdkLedger = None, + non_revoc_intervals: Mapping[str, NonRevocationInterval] = None, + ) -> dict: + """ + Return indy proof request corresponding to presentation preview. + + Typically the verifier turns the proof preview into a proof request. + + Args: + name: for proof request + version: version for proof request + nonce: nonce for proof request + ledger: ledger with credential definitions, to check for revocation support + non_revoc_intervals: non-revocation interval to use per cred def id + where applicable (default from and to the current time if applicable) + + Returns: + Indy proof request dict. + + """ + + def non_revoc(cred_def_id: str) -> NonRevocationInterval: + """Non-revocation interval to use for input cred def id.""" + + nonlocal epoch_now + nonlocal non_revoc_intervals + + return (non_revoc_intervals or {}).get( + cred_def_id, NonRevocationInterval(epoch_now, epoch_now) + ) + + epoch_now = int(time()) + + proof_req = { + "name": name or "proof-request", + "version": version or "1.0", + "nonce": nonce or await generate_pr_nonce(), + "requested_attributes": {}, + "requested_predicates": {}, + } + + attr_specs_names = {} + for attr_spec in self.attributes: + if attr_spec.posture == V20PresAttrSpec.Posture.SELF_ATTESTED: + proof_req["requested_attributes"][ + "self_{}_uuid".format(canon(attr_spec.name)) + ] = {"name": attr_spec.name} + continue + + cd_id = attr_spec.cred_def_id + revoc_support = False + if cd_id: + if ledger: + async with ledger: + revoc_support = (await ledger.get_credential_definition(cd_id))[ + "value" + ].get("revocation") + interval = non_revoc(cd_id) if revoc_support else None + + if attr_spec.referent: + if attr_spec.referent in attr_specs_names: + attr_specs_names[attr_spec.referent]["names"].append(attr_spec.name) + else: + attr_specs_names[attr_spec.referent] = { + "names": [attr_spec.name], + **{ + "restrictions": [{"cred_def_id": cd_id}] + for _ in [""] + if cd_id + }, + **{ + "non_revoked": interval.serialize() + for _ in [""] + if revoc_support + }, + } + else: + proof_req["requested_attributes"][ + "{}_{}_uuid".format( + len(proof_req["requested_attributes"]), + canon(attr_spec.name), + ) + ] = { + "name": attr_spec.name, + **{"restrictions": [{"cred_def_id": cd_id}] for _ in [""] if cd_id}, + **{ + "non_revoked": interval.serialize() + for _ in [""] + if revoc_support + }, + } + + for (reft, attr_spec) in attr_specs_names.items(): + proof_req["requested_attributes"][ + "{}_{}_uuid".format( + len(proof_req["requested_attributes"]), canon(attr_spec["names"][0]) + ) + ] = attr_spec + + for pred_spec in self.predicates: + cd_id = pred_spec.cred_def_id + revoc_support = False + if cd_id: + if ledger: + async with ledger: + revoc_support = (await ledger.get_credential_definition(cd_id))[ + "value" + ].get("revocation") + interval = non_revoc(cd_id) if revoc_support else None + + proof_req["requested_predicates"][ + "{}_{}_{}_uuid".format( + len(proof_req["requested_predicates"]), + canon(pred_spec.name), + Predicate.get(pred_spec.predicate).value.fortran, + ) + ] = { + "name": pred_spec.name, + "p_type": pred_spec.predicate, + "p_value": pred_spec.threshold, + **{"restrictions": [{"cred_def_id": cd_id}] for _ in [""] if cd_id}, + **{"non_revoked": interval.serialize() for _ in [""] if revoc_support}, + } + + return proof_req + + def __eq__(self, other): + """Equality comparator.""" + + for part in vars(self): + if getattr(self, part, None) != getattr(other, part, None): + return False + return True + + +class V20PresPreviewSchema(BaseModelSchema): + """Presentation preview schema.""" + + class Meta: + """Pres preview schema metadata.""" + + model_class = V20PresPreview + + _type = fields.Str( + description="Message type identifier", + required=False, + example=DIDCommPrefix.qualify_current(PRES_PREVIEW), + data_key="@type", + ) + attributes = fields.Nested(V20PresAttrSpecSchema, required=True, many=True) + predicates = fields.Nested(V20PresPredSpecSchema, required=True, many=True) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/test_pres_preview.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/test_pres_preview.py new file mode 100644 index 0000000000..2feabe3749 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/test_pres_preview.py @@ -0,0 +1,595 @@ +import json +import pytest + +from copy import deepcopy +from time import time +from unittest import TestCase + +from asynctest import TestCase as AsyncTestCase +from asynctest import mock as async_mock + +from .......messaging.util import canon +from .......revocation.models.indy import NonRevocationInterval + +from ......didcomm_prefix import DIDCommPrefix + +from ....message_types import PRES_20_PREVIEW +from ....util.predicate import Predicate + +from ..pres_preview import V20PresAttrSpec, V20PresPredSpec, V20PresPreview + + +S_ID = { + "score": "NcYxiDXkpYi6ov5FcYDi1e:2:score:1.0", + "membership": "NcYxiDXkpYi6ov5FcYDi1e:2:membership:1.0", +} +CD_ID = {name: f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID[name]}:tag1" for name in S_ID} +PRES_PREVIEW = V20PresPreview( + attributes=[ + V20PresAttrSpec( + name="player", cred_def_id=CD_ID["score"], value="Richie Knucklez" + ), + V20PresAttrSpec( + name="screenCapture", + cred_def_id=CD_ID["score"], + mime_type="image/png", + value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + ), + ], + predicates=[ + V20PresPredSpec( + name="highScore", + cred_def_id=CD_ID["score"], + predicate=">=", + threshold=1000000, + ) + ], +) +PRES_PREVIEW_ATTR_NAMES = V20PresPreview( + attributes=[ + V20PresAttrSpec( + name="player", + cred_def_id=CD_ID["score"], + value="Richie Knucklez", + referent="reft-0", + ), + V20PresAttrSpec( + name="screenCapture", + cred_def_id=CD_ID["score"], + mime_type="image/png", + value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + referent="reft-0", + ), + V20PresAttrSpec( + name="member", + cred_def_id=CD_ID["membership"], + value="Richard Hand", + referent="reft-1", + ), + V20PresAttrSpec( + name="since", + cred_def_id=CD_ID["membership"], + value="2020-01-01", + referent="reft-1", + ), + ] +) +INDY_PROOF_REQ = json.loads( + f"""{{ + "name": "proof-req", + "version": "1.0", + "nonce": "12345", + "requested_attributes": {{ + "0_player_uuid": {{ + "name": "player", + "restrictions": [ + {{ + "cred_def_id": "{CD_ID['score']}" + }} + ] + }}, + "1_screencapture_uuid": {{ + "name": "screenCapture", + "restrictions": [ + {{ + "cred_def_id": "{CD_ID['score']}" + }} + ] + }} + }}, + "requested_predicates": {{ + "0_highscore_GE_uuid": {{ + "name": "highScore", + "p_type": ">=", + "p_value": 1000000, + "restrictions": [ + {{ + "cred_def_id": "{CD_ID['score']}" + }} + ] + }} + }} +}}""" +) +INDY_PROOF_REQ_ATTR_NAMES = json.loads( + f"""{{ + "name": "proof-req", + "version": "1.0", + "nonce": "12345", + "requested_attributes": {{ + "0_player_uuid": {{ + "names": ["player", "screenCapture"], + "restrictions": [ + {{ + "cred_def_id": "{CD_ID['score']}" + }} + ] + }}, + "1_member_uuid": {{ + "names": ["member", "since"], + "restrictions": [ + {{ + "cred_def_id": "{CD_ID['membership']}" + }} + ] + }} + }}, + "requested_predicates": {{}} +}}""" +) + + +class TestV20PresAttrSpec(TestCase): + """Presentation-preview attribute specification tests""" + + def test_posture(self): + self_attested = V20PresAttrSpec(name="ident", cred_def_id=None, value="655321") + assert self_attested.posture == V20PresAttrSpec.Posture.SELF_ATTESTED + + revealed = V20PresAttrSpec( + name="ident", cred_def_id=CD_ID["score"], value="655321" + ) + assert revealed.posture == V20PresAttrSpec.Posture.REVEALED_CLAIM + + unrevealed = V20PresAttrSpec(name="ident", cred_def_id=CD_ID["score"]) + assert unrevealed.posture == V20PresAttrSpec.Posture.UNREVEALED_CLAIM + + no_posture = V20PresAttrSpec(name="no_spec") + assert no_posture.posture is None + + def test_list_plain(self): + by_list = V20PresAttrSpec.list_plain( + plain={"ident": "655321", " Given Name ": "Alexander DeLarge"}, + cred_def_id=CD_ID["score"], + ) + explicit = [ + V20PresAttrSpec(name="ident", cred_def_id=CD_ID["score"], value="655321"), + V20PresAttrSpec( + name="givenname", cred_def_id=CD_ID["score"], value="Alexander DeLarge" + ), + ] + + # order could be askew + for listp in by_list: + assert any(xp == listp for xp in explicit) + assert len(explicit) == len(by_list) + + def test_list_plain_share_referent(self): + by_list = V20PresAttrSpec.list_plain( + plain={"ident": "655321", " Given Name ": "Alexander DeLarge"}, + cred_def_id=CD_ID["score"], + referent="dummy", + ) + explicit = [ + V20PresAttrSpec( + name="ident", + cred_def_id=CD_ID["score"], + value="655321", + referent="dummy", + ), + V20PresAttrSpec( + name="givenname", + cred_def_id=CD_ID["score"], + value="Alexander DeLarge", + referent="dummy", + ), + ] + + # order could be askew + for listp in by_list: + assert any(xp == listp for xp in explicit) + assert len(explicit) == len(by_list) + + def test_eq(self): + attr_specs_none_plain = [ + V20PresAttrSpec(name="name", value="value"), + V20PresAttrSpec(name="name", value="value", mime_type=None), + V20PresAttrSpec(name=" NAME ", value="value"), + ] + attr_specs_different = [ + V20PresAttrSpec(name="name", value="dmFsdWU=", mime_type="image/png"), + V20PresAttrSpec(name="name", value="value", cred_def_id="cred_def_id"), + V20PresAttrSpec(name="name", value="distinct value", mime_type=None), + V20PresAttrSpec(name="distinct name", value="value", mime_type=None), + V20PresAttrSpec(name="name", value="dmFsdWU=", mime_type=None), + V20PresAttrSpec(name="name"), + V20PresAttrSpec( + name="name", value="value", cred_def_id="cred_def_id", referent="reft-0" + ), + V20PresAttrSpec( + name="name", value="value", cred_def_id="cred_def_id", referent="reft-1" + ), + ] + + for lhs in attr_specs_none_plain: + for rhs in attr_specs_different: + assert lhs != rhs + + for lidx in range(len(attr_specs_none_plain) - 1): + for ridx in range(lidx + 1, len(attr_specs_none_plain)): + assert attr_specs_none_plain[lidx] == attr_specs_none_plain[ridx] + + for lidx in range(len(attr_specs_different) - 1): + for ridx in range(lidx + 1, len(attr_specs_different)): + assert attr_specs_different[lidx] != attr_specs_different[ridx] + + def test_deserialize(self): + """Test deserialization.""" + dump = json.dumps( + { + "name": "PLAYER", + "cred_def_id": CD_ID["score"], + "value": "Richie Knucklez", + } + ) + + attr_spec = V20PresAttrSpec.deserialize(dump) + assert type(attr_spec) == V20PresAttrSpec + assert canon(attr_spec.name) == "player" + + dump = json.dumps( + { + "name": "PLAYER", + "cred_def_id": CD_ID["score"], + "value": "Richie Knucklez", + "referent": "0", + } + ) + + attr_spec = V20PresAttrSpec.deserialize(dump) + assert type(attr_spec) == V20PresAttrSpec + assert canon(attr_spec.name) == "player" + + def test_serialize(self): + """Test serialization.""" + + attr_spec_dict = PRES_PREVIEW.attributes[0].serialize() + assert attr_spec_dict == { + "name": "player", + "cred_def_id": CD_ID["score"], + "value": "Richie Knucklez", + } + + attr_spec_dict = PRES_PREVIEW_ATTR_NAMES.attributes[0].serialize() + assert attr_spec_dict == { + "name": "player", + "cred_def_id": CD_ID["score"], + "value": "Richie Knucklez", + "referent": "reft-0", + } + + +class TestPredicate(TestCase): + """Predicate tests for coverage""" + + def test_get(self): + """Get predicate.""" + assert Predicate.get("LT") == Predicate.get("$lt") == Predicate.get("<") + assert Predicate.get("LE") == Predicate.get("$lte") == Predicate.get("<=") + assert Predicate.get("GE") == Predicate.get("$gte") == Predicate.get(">=") + assert Predicate.get("GT") == Predicate.get("$gt") == Predicate.get(">") + assert Predicate.get("!=") is None + + def test_cmp(self): + """Test comparison via predicates""" + assert Predicate.get("LT").value.yes(0, 1) + assert Predicate.get("LT").value.yes("0", "1") + assert Predicate.get("LT").value.no(0, 0) + assert Predicate.get("LT").value.no(1, 0) + assert Predicate.get("LT").value.no("1", "0") + assert Predicate.get("LT").value.no("0", "0") + + assert Predicate.get("LE").value.yes(0, 1) + assert Predicate.get("LE").value.yes("0", "1") + assert Predicate.get("LE").value.yes(0, 0) + assert Predicate.get("LE").value.no(1, 0) + assert Predicate.get("LE").value.no("1", "0") + assert Predicate.get("LE").value.yes("0", "0") + + assert Predicate.get("GE").value.no(0, 1) + assert Predicate.get("GE").value.no("0", "1") + assert Predicate.get("GE").value.yes(0, 0) + assert Predicate.get("GE").value.yes(1, 0) + assert Predicate.get("GE").value.yes("1", "0") + assert Predicate.get("GE").value.yes("0", "0") + + assert Predicate.get("GT").value.no(0, 1) + assert Predicate.get("GT").value.no("0", "1") + assert Predicate.get("GT").value.no(0, 0) + assert Predicate.get("GT").value.yes(1, 0) + assert Predicate.get("GT").value.yes("1", "0") + assert Predicate.get("GT").value.no("0", "0") + + +class TestV20PresPredSpec(TestCase): + """Presentation predicate specification tests""" + + def test_deserialize(self): + """Test deserialization.""" + dump = json.dumps( + { + "name": "HIGH SCORE", + "cred_def_id": CD_ID["score"], + "predicate": ">=", + "threshold": 1000000, + } + ) + + pred_spec = V20PresPredSpec.deserialize(dump) + assert type(pred_spec) == V20PresPredSpec + assert canon(pred_spec.name) == "highscore" + + def test_serialize(self): + """Test serialization.""" + + pred_spec_dict = PRES_PREVIEW.predicates[0].serialize() + assert pred_spec_dict == { + "name": "highScore", + "cred_def_id": CD_ID["score"], + "predicate": ">=", + "threshold": 1000000, + } + + def test_eq(self): + """Test equality operator.""" + + pred_spec_a = V20PresPredSpec( + name="a", + cred_def_id=CD_ID["score"], + predicate=Predicate.GE.value.math, + threshold=0, + ) + pred_spec_b = V20PresPredSpec( + name="b", + cred_def_id=CD_ID["score"], + predicate=Predicate.GE.value.math, + threshold=0, + ) + assert pred_spec_a != pred_spec_b + + pred_spec_a.name = "b" + assert pred_spec_a == pred_spec_b + + pred_spec_a.predicate = Predicate.LE.value.math + assert pred_spec_a != pred_spec_b + + pred_spec_a.predicate = Predicate.GE.value.math + assert pred_spec_a == pred_spec_b + + pred_spec_a.threshold = 100 + assert pred_spec_a != pred_spec_b + + pred_spec_a.threshold = 0 + pred_spec_a.cred_def_id = None + assert pred_spec_a != pred_spec_b + + +@pytest.mark.indy +class TestV20PresPreviewAsync(AsyncTestCase): + """Presentation preview tests""" + + @pytest.mark.asyncio + async def test_to_indy_proof_request(self): + """Test presentation preview to indy proof request.""" + + indy_proof_req = await PRES_PREVIEW.indy_proof_request( + **{k: INDY_PROOF_REQ[k] for k in ("name", "version", "nonce")} + ) + + assert indy_proof_req == INDY_PROOF_REQ + + @pytest.mark.asyncio + async def test_to_indy_proof_request_attr_names(self): + """Test presentation preview to indy proof request.""" + + indy_proof_req = await PRES_PREVIEW_ATTR_NAMES.indy_proof_request( + **{k: INDY_PROOF_REQ_ATTR_NAMES[k] for k in ("name", "version", "nonce")} + ) + + assert indy_proof_req == INDY_PROOF_REQ_ATTR_NAMES + + async def test_to_indy_proof_request_self_attested(self): + """Test presentation preview to indy proof request with self-attested values.""" + + pres_preview_selfie = deepcopy(PRES_PREVIEW) + for attr_spec in pres_preview_selfie.attributes: + attr_spec.cred_def_id = None + + indy_proof_req_selfie = await pres_preview_selfie.indy_proof_request( + **{k: INDY_PROOF_REQ[k] for k in ("name", "version", "nonce")} + ) + + assert not any( + "restrictions" in attr_spec + for attr_spec in indy_proof_req_selfie["requested_attributes"].values() + ) + + @pytest.mark.asyncio + async def test_to_indy_proof_request_revo_default_interval(self): + """Test pres preview to indy proof req with revocation support, defaults.""" + + copy_indy_proof_req = deepcopy(INDY_PROOF_REQ) + + pres_preview = deepcopy(PRES_PREVIEW) + mock_ledger = async_mock.MagicMock( + get_credential_definition=async_mock.CoroutineMock( + return_value={"value": {"revocation": {"...": "..."}}} + ) + ) + + indy_proof_req_revo = await pres_preview.indy_proof_request( + **{k: INDY_PROOF_REQ[k] for k in ("name", "version", "nonce")}, + ledger=mock_ledger, + ) + + for uuid, attr_spec in indy_proof_req_revo["requested_attributes"].items(): + assert set(attr_spec.get("non_revoked", {}).keys()) == {"from", "to"} + copy_indy_proof_req["requested_attributes"][uuid][ + "non_revoked" + ] = attr_spec["non_revoked"] + for uuid, pred_spec in indy_proof_req_revo["requested_predicates"].items(): + assert set(pred_spec.get("non_revoked", {}).keys()) == {"from", "to"} + copy_indy_proof_req["requested_predicates"][uuid][ + "non_revoked" + ] = pred_spec["non_revoked"] + + assert copy_indy_proof_req == indy_proof_req_revo + + @pytest.mark.asyncio + async def test_to_indy_proof_request_revo(self): + """Test pres preview to indy proof req with revocation support, interval.""" + + EPOCH_NOW = int(time()) + copy_indy_proof_req = deepcopy(INDY_PROOF_REQ) + + pres_preview = deepcopy(PRES_PREVIEW) + mock_ledger = async_mock.MagicMock( + get_credential_definition=async_mock.CoroutineMock( + return_value={"value": {"revocation": {"...": "..."}}} + ) + ) + + indy_proof_req_revo = await pres_preview.indy_proof_request( + **{k: INDY_PROOF_REQ[k] for k in ("name", "version", "nonce")}, + ledger=mock_ledger, + non_revoc_intervals={ + CD_ID[s_id]: NonRevocationInterval(1234567890, EPOCH_NOW) + for s_id in S_ID + }, + ) + + for uuid, attr_spec in indy_proof_req_revo["requested_attributes"].items(): + assert set(attr_spec.get("non_revoked", {}).keys()) == {"from", "to"} + copy_indy_proof_req["requested_attributes"][uuid][ + "non_revoked" + ] = attr_spec["non_revoked"] + for uuid, pred_spec in indy_proof_req_revo["requested_predicates"].items(): + assert set(pred_spec.get("non_revoked", {}).keys()) == {"from", "to"} + copy_indy_proof_req["requested_predicates"][uuid][ + "non_revoked" + ] = pred_spec["non_revoked"] + + assert copy_indy_proof_req == indy_proof_req_revo + + @pytest.mark.asyncio + async def test_satisfaction(self): + """Test presentation preview predicate satisfaction.""" + + pred_spec = V20PresPredSpec( + name="highScore", + cred_def_id=CD_ID["score"], + predicate=Predicate.GE.value.math, + threshold=1000000, + ) + attr_spec = V20PresAttrSpec( + name="HIGHSCORE", cred_def_id=CD_ID["score"], value=1234567 + ) + assert attr_spec.satisfies(pred_spec) + + attr_spec = V20PresAttrSpec( + name="HIGHSCORE", cred_def_id=CD_ID["score"], value=985260 + ) + assert not attr_spec.satisfies(pred_spec) + + +@pytest.mark.indy +class TestV20PresPreview(TestCase): + """Presentation preview tests""" + + def test_init(self): + """Test initializer.""" + assert PRES_PREVIEW.attributes + assert PRES_PREVIEW.predicates + assert PRES_PREVIEW.has_attr_spec( + cred_def_id=CD_ID["score"], name="player", value="Richie Knucklez" + ) + + def test_type(self): + """Test type.""" + assert PRES_PREVIEW._type == DIDCommPrefix.qualify_current(PRES_20_PREVIEW) + + def test_deserialize(self): + """Test deserialization.""" + dump = { + "@type": DIDCommPrefix.qualify_current(PRES_20_PREVIEW), + "attributes": [ + { + "name": "player", + "cred_def_id": CD_ID["score"], + "value": "Richie Knucklez", + }, + { + "name": "screenCapture", + "cred_def_id": CD_ID["score"], + "mime-type": "image/png", + "value": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + }, + ], + "predicates": [ + { + "name": "highScore", + "cred_def_id": CD_ID["score"], + "predicate": ">=", + "threshold": 1000000, + } + ], + } + + preview = V20PresPreview.deserialize(dump) + assert type(preview) == V20PresPreview + + def test_serialize(self): + """Test serialization.""" + + preview_dict = PRES_PREVIEW.serialize() + assert preview_dict == { + "@type": DIDCommPrefix.qualify_current(PRES_20_PREVIEW), + "attributes": [ + { + "name": "player", + "cred_def_id": CD_ID["score"], + "value": "Richie Knucklez", + }, + { + "name": "screenCapture", + "cred_def_id": CD_ID["score"], + "mime-type": "image/png", + "value": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + }, + ], + "predicates": [ + { + "name": "highScore", + "cred_def_id": CD_ID["score"], + "predicate": ">=", + "threshold": 1000000, + } + ], + } + + def test_eq(self): + pres_preview_a = V20PresPreview.deserialize(PRES_PREVIEW.serialize()) + assert pres_preview_a == PRES_PREVIEW + + pres_preview_a.predicates = [] + assert pres_preview_a != PRES_PREVIEW diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py index 786e6ad948..512dcb57f1 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py @@ -4,22 +4,22 @@ from .....messaging.ack.message import Ack, AckSchema -from ..message_types import PRES_ACK, PROTOCOL_PACKAGE +from ..message_types import PRES_20_ACK, PROTOCOL_PACKAGE HANDLER_CLASS = ( - f"{PROTOCOL_PACKAGE}.handlers.pres_ack_handler.PresAckHandler" + f"{PROTOCOL_PACKAGE}.handlers.pres_ack_handler.V20PresAckHandler" ) -class PresAck(Ack): +class V20PresAck(Ack): """Base class representing an explicit ack message for present-proof protocol.""" class Meta: - """PresAck metadata.""" + """V20PresAck metadata.""" handler_class = HANDLER_CLASS - message_type = PRES_ACK - schema_class = "PresAckSchema" + message_type = PRES_20_ACK + schema_class = "V20PresAckSchema" def __init__(self, status: str = None, **kwargs): """ @@ -32,11 +32,11 @@ def __init__(self, status: str = None, **kwargs): super().__init__(status, **kwargs) -class PresAckSchema(AckSchema): - """Schema for PresAck class.""" +class V20PresAckSchema(AckSchema): + """Schema for V20PresAck class.""" class Meta: - """PresAck schema metadata.""" + """V20PresAck schema metadata.""" - model_class = PresAck + model_class = V20PresAck unknown = EXCLUDE diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py index 5b08100e51..1c497dbb13 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -8,11 +8,12 @@ from marshmallow import EXCLUDE, fields, validate, ValidationError -from .....messaging.credential_definitions.util import CRED_DEF_TAGS from .....messaging.decorators.attach_decorator import AttachDecorator -from .....messaging.models.base import BaseModel, BaseModelSchema +from .....messaging.models.base import BaseModelError, BaseModel, BaseModelSchema from .....messaging.valid import UUIDFour +from .inner.pres_preview import PresPreview, PresPreviewSchema + # Aries RFC value, further monikers FormatSpec = namedtuple("FormatSpec", "aries aka") @@ -65,8 +66,10 @@ def aka(self) -> str: def validate_proposal_attach(self, data: Mapping): """Raise ValidationError for wrong proposal~attach content.""" if self is V20PredFormat.Format.INDY: - if data.keys() - set(CRED_DEF_TAGS): - raise ValidationError(f"Bad indy credential filter: {data}") + try: + V20PredProposal.deserialize(data) + except BaseModelError as x: + raise ValidationError("Invalid presentation proposal") from x def get_attachment_data( self, @@ -117,13 +120,13 @@ class Meta: attach_id = fields.Str( required=True, allow_none=False, - description="attachment identifier", + description="Attachment identifier", example=UUIDFour.EXAMPLE, ) format_ = fields.Str( required=True, allow_none=False, - description="acceptable present-proof message attachment format specifier", + description="Acceptable present-proof message attachment format specifier", data_key="format", validate=validate.OneOf([f.aries for f in V20PresFormat.Format]), example=V20PresFormat.Format.INDY.aries, diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py index 255090da6c..515f5423aa 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -1,59 +1,113 @@ """A presentation proposal content message.""" -from marshmallow import EXCLUDE, fields +from typing import Sequence + +from marshmallow import EXCLUDE, fields, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema +from .....messaging.decorators.attach_decorator import ( + AttachDecorator, + AttachDecoratorSchema, +) -from ..message_types import PRES_PROPOSAL, PROTOCOL_PACKAGE +from ..message_types import PRES_20_PROPOSAL, PROTOCOL_PACKAGE -from .inner.pres_preview import PresentationPreview, PresentationPreviewSchema +from .pres_format import V20PresFormat, V20PresFormatSchema HANDLER_CLASS = ( - f"{PROTOCOL_PACKAGE}.handlers." - "presentation_proposal_handler.PresentationProposalHandler" + f"{PROTOCOL_PACKAGE}.handlers.pres_proposal_handler.V20PresProposalHandler" ) -class PresentationProposal(AgentMessage): +class V20PresProposal(AgentMessage): """Class representing a presentation proposal.""" class Meta: - """PresentationProposal metadata.""" + """V20PresProposal metadata.""" handler_class = HANDLER_CLASS - schema_class = "PresentationProposalSchema" - message_type = PRESENTATION_PROPOSAL + schema_class = "V20PresProposalSchema" + message_type = PRES_20_PROPOSAL def __init__( self, _id: str = None, *, comment: str = None, - presentation_proposal: PresentationPreview = None, + formats: Sequence[V20PresFormat], + proposal_attach: Sequence[AttachDecorator], **kwargs, ): """ - Initialize presentation proposal object. + Initialize pres proposal object. Args: comment: optional human-readable comment - presentation_proposal: proposed presentation preview + formats: acceptable attachment formats + pres_proposal: proposed pres preview """ super().__init__(_id, **kwargs) self.comment = comment - self.presentation_proposal = presentation_proposal + self.pres_proposal = pres_proposal + + def proposal(self, fmt: V20PredFormat.Format = None) -> dict: + """ + Return attached proposal item. + + Args: + fmt: format of attachment in list to decode and return + """ + return (fmt or V20PredFormat.Format.INDY).get_attachment_data( + self.formats, + self.proposal_attach, + ) -class PresentationProposalSchema(AgentMessageSchema): +class V20PresProposalSchema(AgentMessageSchema): """Presentation proposal schema.""" class Meta: """Presentation proposal schema metadata.""" - model_class = PresentationProposal + model_class = V20PresProposal unknown = EXCLUDE comment = fields.Str( description="Human-readable comment", required=False, allow_none=True ) - presentation_proposal = fields.Nested(PresentationPreviewSchema, required=True) + formats = fields.Nested( + V20PredFormatSchema, + many=True, + required=True, + descrption="Acceptable attachment formats", + ) + proposal_attach = fields.Nested( + AttachDecoratorSchema, + data_key="filters~attach", + required=True, + description="Attachment per acceptable format on corresponding identifier", + ) + + @validates_schema + def validate_fields(self, data, **kwargs): + """Validate filter per format.""" + + def get_proposal_attach_by_id(attach_id): + """Return filter with input attachment identifier.""" + for p in proposal_attach: + if p.ident == attach_id: + return p + raise ValidationError( + f"No proposal attachment matches attach_id {attach_id} in format" + ) + + formats = data.get("formats") or [] + proposal_attach = data.get("proposal_attach") or [] + if len(formats) != len(proposal_attach): + raise ValidationError("Formats vs. proposal attachments length mismatch") + + for fmt in formats: + proposal_atch = get_proposal_attach_by_id(fmt.attach_id) + V20PresFormat.Format.get(fmt.format).validate_proposal_attach( + proposal_atch.indy_dict + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From bf926b92af6380b52d047e8cea08c940c9a57fd4 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 4 Feb 2021 15:40:41 +0000 Subject: [PATCH 020/243] work in progress Signed-off-by: sklump --- .../protocols/out_of_band/v1_0/manager.py | 2 +- .../out_of_band/v1_0/tests/test_manager.py | 20 +- .../protocols/present_proof/util/indy.py | 4 +- .../inner => util}/presentation_preview.py | 25 +- .../messages/inner => util/tests}/__init__.py | 0 .../tests/test_presentation_preview.py | 14 +- .../present_proof/v1_0/message_types.py | 3 - .../v1_0/messages/presentation_proposal.py | 2 +- .../v1_0/messages/tests/test_presentation.py | 4 +- .../tests/test_presentation_proposal.py | 10 +- .../tests/test_presentation_request.py | 4 +- .../protocols/present_proof/v1_0/routes.py | 7 +- .../present_proof/v1_0/tests/test_manager.py | 6 +- .../present_proof/v1_0/tests/test_routes.py | 14 +- .../present_proof/v2_0/message_types.py | 11 +- .../inner/tests => v2_0/messages}/__init__.py | 0 .../v2_0/messages/inner/__init__.py | 0 .../v2_0/messages/inner/pres_preview.py | 444 ------------- .../v2_0/messages/inner/tests/__init__.py | 0 .../messages/inner/tests/test_pres_preview.py | 595 ------------------ .../v2_0/messages/pres_format.py | 5 +- .../v2_0/messages/pres_proposal.py | 17 +- .../v2_0/messages/tests/test_pres_ack.py | 61 ++ .../v2_0/messages/tests/test_pres_proposal.py | 83 +++ 24 files changed, 216 insertions(+), 1115 deletions(-) rename aries_cloudagent/protocols/present_proof/{v1_0/messages/inner => util}/presentation_preview.py (96%) rename aries_cloudagent/protocols/present_proof/{v1_0/messages/inner => util/tests}/__init__.py (100%) rename aries_cloudagent/protocols/present_proof/{v1_0/messages/inner => util}/tests/test_presentation_preview.py (98%) rename aries_cloudagent/protocols/present_proof/{v1_0/messages/inner/tests => v2_0/messages}/__init__.py (100%) delete mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/inner/__init__.py delete mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/inner/pres_preview.py delete mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/__init__.py delete mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/test_pres_preview.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_ack.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py index 214e48225b..960d878677 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py @@ -27,11 +27,11 @@ from ...issue_credential.v1_0.models.credential_exchange import V10CredentialExchange from ...issue_credential.v2_0.messages.cred_offer import V20CredOffer from ...issue_credential.v2_0.models.cred_ex_record import V20CredExRecord +from ...present_proof.util.indy import indy_proof_req_preview2indy_requested_creds from ...present_proof.v1_0.manager import PresentationManager from ...present_proof.v1_0.message_types import PRESENTATION_REQUEST from ...present_proof.v1_0.messages.presentation_proposal import PresentationProposal from ...present_proof.v1_0.models.presentation_exchange import V10PresentationExchange -from ...present_proof.v1_0.util.indy import indy_proof_req_preview2indy_requested_creds from .messages.invitation import HSProto, InvitationMessage from .messages.problem_report import ProblemReport diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py index 0ef0648624..3cd2cabf2b 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py @@ -23,19 +23,17 @@ from .....protocols.issue_credential.v1_0.message_types import ( CREDENTIAL_OFFER, ) +from .....protocols.present_proof.util.presentation_preview import ( + PresAttrSpec, + PresentationPreview, + PresPredSpec, +) from .....protocols.present_proof.v1_0.manager import PresentationManager from .....protocols.present_proof.v1_0.message_types import ( PRESENTATION_REQUEST, ATTACH_DECO_IDS, - PRESENTATION_PREVIEW, ) -from .....protocols.present_proof.v1_0.messages.presentation import ( - Presentation, -) -from .....protocols.present_proof.v1_0.models.presentation_exchange import ( - V10PresentationExchange, -) -from .....protocols.present_proof.v1_0.message_types import PRESENTATION_REQUEST +from .....protocols.present_proof.v1_0.messages.presentation import Presentation from .....protocols.present_proof.v1_0.messages.presentation_proposal import ( PresentationProposal, ) @@ -43,10 +41,8 @@ PresentationRequest, PresentationRequestSchema, ) -from .....protocols.present_proof.v1_0.messages.inner.presentation_preview import ( - PresAttrSpec, - PresentationPreview, - PresPredSpec, +from .....protocols.present_proof.v1_0.models.presentation_exchange import ( + V10PresentationExchange, ) from .....storage.error import StorageError, StorageNotFoundError from .....multitenant.manager import MultitenantManager diff --git a/aries_cloudagent/protocols/present_proof/util/indy.py b/aries_cloudagent/protocols/present_proof/util/indy.py index c081709cdd..7a0c3b6601 100644 --- a/aries_cloudagent/protocols/present_proof/util/indy.py +++ b/aries_cloudagent/protocols/present_proof/util/indy.py @@ -1,8 +1,8 @@ """Utilities for dealing with indy conventions.""" -from .....indy.holder import IndyHolder +from ....indy.holder import IndyHolder -from ..messages.inner.presentation_preview import PresentationPreview +from .presentation_preview import PresentationPreview async def indy_proof_req_preview2indy_requested_creds( diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/inner/presentation_preview.py b/aries_cloudagent/protocols/present_proof/util/presentation_preview.py similarity index 96% rename from aries_cloudagent/protocols/present_proof/v1_0/messages/inner/presentation_preview.py rename to aries_cloudagent/protocols/present_proof/util/presentation_preview.py index 172cb1282a..47bfa6cf7b 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/inner/presentation_preview.py +++ b/aries_cloudagent/protocols/present_proof/util/presentation_preview.py @@ -6,18 +6,19 @@ from marshmallow import fields -from ......ledger.indy import IndySdkLedger -from ......messaging.models.base import BaseModel, BaseModelSchema -from ......messaging.util import canon -from ......messaging.valid import INDY_CRED_DEF_ID, INDY_PREDICATE -from ......revocation.models.indy import NonRevocationInterval -from ......wallet.util import b64_to_str -from ......indy.util import generate_pr_nonce - -from .....didcomm_prefix import DIDCommPrefix - -from ...message_types import PRESENTATION_PREVIEW -from ...util.predicate import Predicate +from ....ledger.indy import IndySdkLedger +from ....messaging.models.base import BaseModel, BaseModelSchema +from ....messaging.util import canon +from ....messaging.valid import INDY_CRED_DEF_ID, INDY_PREDICATE +from ....revocation.models.indy import NonRevocationInterval +from ....wallet.util import b64_to_str +from ....indy.util import generate_pr_nonce + +from ...didcomm_prefix import DIDCommPrefix + +from .predicate import Predicate + +PRESENTATION_PREVIEW = "present-proof/1.0/presentation-preview" # message type class PresPredSpec(BaseModel): diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/inner/__init__.py b/aries_cloudagent/protocols/present_proof/util/tests/__init__.py similarity index 100% rename from aries_cloudagent/protocols/present_proof/v1_0/messages/inner/__init__.py rename to aries_cloudagent/protocols/present_proof/util/tests/__init__.py diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/inner/tests/test_presentation_preview.py b/aries_cloudagent/protocols/present_proof/util/tests/test_presentation_preview.py similarity index 98% rename from aries_cloudagent/protocols/present_proof/v1_0/messages/inner/tests/test_presentation_preview.py rename to aries_cloudagent/protocols/present_proof/util/tests/test_presentation_preview.py index 70c7282652..0c48ae9797 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/inner/tests/test_presentation_preview.py +++ b/aries_cloudagent/protocols/present_proof/util/tests/test_presentation_preview.py @@ -8,21 +8,19 @@ from asynctest import TestCase as AsyncTestCase from asynctest import mock as async_mock -from .......messaging.util import canon -from .......revocation.models.indy import NonRevocationInterval +from .....messaging.util import canon +from .....revocation.models.indy import NonRevocationInterval -from ......didcomm_prefix import DIDCommPrefix - -from ....message_types import PRESENTATION_PREVIEW -from ....util.predicate import Predicate +from ....didcomm_prefix import DIDCommPrefix +from ..predicate import Predicate from ..presentation_preview import ( PresAttrSpec, PresPredSpec, - PresentationPreview, + PRESENTATION_PREVIEW, + PresentationPreview, ) - S_ID = { "score": "NcYxiDXkpYi6ov5FcYDi1e:2:score:1.0", "membership": "NcYxiDXkpYi6ov5FcYDi1e:2:membership:1.0", diff --git a/aries_cloudagent/protocols/present_proof/v1_0/message_types.py b/aries_cloudagent/protocols/present_proof/v1_0/message_types.py index 8c09eedec3..32af405f94 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/message_types.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/message_types.py @@ -30,9 +30,6 @@ } ) -# Inner object types -PRESENTATION_PREVIEW = "present-proof/1.0/presentation-preview" - # Identifiers to use in attachment decorators ATTACH_DECO_IDS = { PRESENTATION_REQUEST: "libindy-request-presentation-0", diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py index a3e0e1373e..a177634856 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py @@ -6,7 +6,7 @@ from ..message_types import PRESENTATION_PROPOSAL, PROTOCOL_PACKAGE -from .inner.presentation_preview import PresentationPreview, PresentationPreviewSchema +from ...util.presentation_preview import PresentationPreview, PresentationPreviewSchema HANDLER_CLASS = ( f"{PROTOCOL_PACKAGE}.handlers." diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py index 4b15049826..d4569c6c4b 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py @@ -7,7 +7,9 @@ from .....didcomm_prefix import DIDCommPrefix -from ...message_types import ATTACH_DECO_IDS, PRESENTATION_PREVIEW, PRESENTATION +from ....util.presentation_preview import PRESENTATION_PREVIEW + +from ...message_types import ATTACH_DECO_IDS, PRESENTATION from ..presentation import Presentation, PresentationSchema diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py index a0af8be7c2..5b21af8fa1 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py @@ -2,10 +2,16 @@ from .....didcomm_prefix import DIDCommPrefix -from ...message_types import PRESENTATION_PREVIEW, PRESENTATION_PROPOSAL +from ....util.presentation_preview import ( + PresAttrSpec, + PresPredSpec, + PRESENTATION_PREVIEW, + PresentationPreview, +) + +from ...message_types import PRESENTATION_PROPOSAL from ..presentation_proposal import PresentationProposal -from ..inner.presentation_preview import PresAttrSpec, PresPredSpec, PresentationPreview S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py index c3fd1ea6ca..1785746bfa 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py @@ -7,7 +7,9 @@ from .....didcomm_prefix import DIDCommPrefix -from ...message_types import ATTACH_DECO_IDS, PRESENTATION_PREVIEW, PRESENTATION_REQUEST +from ....util.presentation_preview import PRESENTATION_PREVIEW + +from ...message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST from ..presentation_request import PresentationRequest, PresentationRequestSchema diff --git a/aries_cloudagent/protocols/present_proof/v1_0/routes.py b/aries_cloudagent/protocols/present_proof/v1_0/routes.py index bdf22dccd2..e2c7c0517b 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/routes.py @@ -42,12 +42,13 @@ from ...problem_report.v1_0 import internal_error -from .manager import PresentationManager -from .message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST, SPEC_URI -from .messages.inner.presentation_preview import ( +from ..util.presentation_preview import ( PresentationPreview, PresentationPreviewSchema, ) + +from .manager import PresentationManager +from .message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST, SPEC_URI from .messages.presentation_proposal import PresentationProposal from .messages.presentation_request import PresentationRequest from .models.presentation_exchange import ( diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py index 9415f17ec4..52a62ca2fd 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py @@ -19,6 +19,7 @@ from ....didcomm_prefix import DIDCommPrefix from ...util.indy import indy_proof_req_preview2indy_requested_creds +from ...util.presentation_preview import PresAttrSpec, PresentationPreview, PresPredSpec from .. import manager as test_module from ..manager import PresentationManager, PresentationManagerError @@ -26,11 +27,6 @@ from ..messages.presentation_ack import PresentationAck from ..messages.presentation_proposal import PresentationProposal from ..messages.presentation_request import PresentationRequest -from ..messages.inner.presentation_preview import ( - PresAttrSpec, - PresentationPreview, - PresPredSpec, -) from ..models.presentation_exchange import V10PresentationExchange diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py index 37d5c79825..2b64fcca2d 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py @@ -292,7 +292,7 @@ async def test_presentation_exchange_send_proposal(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + "aries_cloudagent.protocols.present_proof.util.presentation_preview.PresentationPreview", autospec=True, ) as mock_preview: @@ -340,7 +340,7 @@ async def test_presentation_exchange_send_proposal_not_ready(self): "aries_cloudagent.connections.models.conn_record.ConnRecord", autospec=True, ) as mock_connection_record, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + "aries_cloudagent.protocols.present_proof.util.presentation_preview.PresentationPreview", autospec=True, ) as mock_preview, async_mock.patch( "aries_cloudagent.protocols.present_proof.v1_0.messages.presentation_proposal.PresentationProposal", @@ -366,7 +366,7 @@ async def test_presentation_exchange_send_proposal_x(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + "aries_cloudagent.protocols.present_proof.util.presentation_preview.PresentationPreview", autospec=True, ) as mock_preview: @@ -390,7 +390,7 @@ async def test_presentation_exchange_create_request(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + "aries_cloudagent.protocols.present_proof.util.presentation_preview.PresentationPreview", autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True @@ -441,7 +441,7 @@ async def test_presentation_exchange_create_request_x(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + "aries_cloudagent.protocols.present_proof.util.presentation_preview.PresentationPreview", autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True @@ -492,7 +492,7 @@ async def test_presentation_exchange_send_free_request(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + "aries_cloudagent.protocols.present_proof.util.presentation_preview.PresentationPreview", autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True @@ -1103,7 +1103,7 @@ async def test_presentation_exchange_verify_presentation(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + "aries_cloudagent.protocols.present_proof.util.presentation_preview.PresentationPreview", autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True diff --git a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py index c099dfd1c4..a6706b9a88 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py @@ -17,18 +17,15 @@ MESSAGE_TYPES = DIDCommPrefix.qualify_all( { - PRES_PROPOSAL: ( + PRES_20_PROPOSAL: ( f"{PROTOCOL_PACKAGE}.messages.pres_proposal.PresProposal" ), - PRES_REQUEST: ( + PRES_20_REQUEST: ( f"{PROTOCOL_PACKAGE}.messages.pres_request.PresRequest" ), - PRES: f"{PROTOCOL_PACKAGE}.messages.pres.Pres", - PRES_ACK: ( + PRES_20: f"{PROTOCOL_PACKAGE}.messages.pres.Pres", + PRES_20_ACK: ( f"{PROTOCOL_PACKAGE}.messages.pres_ack.PresAck" ), } ) - -# Inner object types -PRES_20_PREVIEW = "present-proof/2.0/presentation-preview" diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/inner/tests/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/__init__.py similarity index 100% rename from aries_cloudagent/protocols/present_proof/v1_0/messages/inner/tests/__init__.py rename to aries_cloudagent/protocols/present_proof/v2_0/messages/__init__.py diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/pres_preview.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/pres_preview.py deleted file mode 100644 index dc7d89fa8d..0000000000 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/pres_preview.py +++ /dev/null @@ -1,444 +0,0 @@ -"""A presentation preview inner object.""" - -from enum import Enum -from time import time -from typing import Mapping, Sequence - -from marshmallow import fields - -from ......ledger.indy import IndySdkLedger -from ......messaging.models.base import BaseModel, BaseModelSchema -from ......messaging.util import canon -from ......messaging.valid import INDY_CRED_DEF_ID, INDY_PREDICATE -from ......revocation.models.indy import NonRevocationInterval -from ......wallet.util import b64_to_str -from ......indy.util import generate_pr_nonce - -from .....didcomm_prefix import DIDCommPrefix - -from ...message_types import PRES_20_PREVIEW -from ...util.predicate import Predicate - - -class V20PresPredSpec(BaseModel): - """Class representing a predicate specification within a presentation preview.""" - - class Meta: - """Pred spec metadata.""" - - schema_class = "V20PresPredSpecSchema" - - def __init__( - self, - name: str, - *, - cred_def_id: str = None, - predicate: str, - threshold: int, - **kwargs, - ): - """ - Initialize preview object. - - Args: - name: attribute name - cred_def_id: credential definition identifier - predicate: predicate type (e.g., ">=") - threshold: threshold value - - """ - super().__init__(**kwargs) - self.name = name - self.cred_def_id = cred_def_id - self.predicate = predicate - self.threshold = threshold - - def __eq__(self, other): - """Equality comparator.""" - - if canon(self.name) != canon(other.name): - return False # distinct attribute names modulo canonicalization - - if self.cred_def_id != other.cred_def_id: - return False - - if self.predicate != other.predicate: - return False - - return self.threshold == other.threshold - - -class V20PresPredSpecSchema(BaseModelSchema): - """Predicate specifiation schema.""" - - class Meta: - """Predicate specifiation schema metadata.""" - - model_class = V20PresPredSpec - - name = fields.Str(description="Attribute name", required=True, example="high_score") - cred_def_id = fields.Str( - description="Credential definition identifier", - required=False, - **INDY_CRED_DEF_ID, - ) - predicate = fields.Str( - description="Predicate type ('<', '<=', '>=', or '>')", - required=True, - **INDY_PREDICATE, - ) - threshold = fields.Int(description="Threshold value", required=True, strict=True) - - -class V20PresAttrSpec(BaseModel): - """Class representing an attibute specification within a presentation preview.""" - - class Meta: - """Attr spec metadata.""" - - schema_class = "V20PresAttrSpecSchema" - - class Posture(Enum): - """Attribute posture: self-attested, revealed claim or unrevealed claim.""" - - SELF_ATTESTED = 0 - REVEALED_CLAIM = 1 - UNREVEALED_CLAIM = 2 - - def __init__( - self, - name: str, - cred_def_id: str = None, - mime_type: str = None, - value: str = None, - referent: str = None, - **kwargs, - ): - """ - Initialize attribute specification object. - - Args: - name: attribute name - cred_def_id: credential definition identifier - (None for self-attested attribute) - mime_type: MIME type - value: attribute value as credential stores it - (None for unrevealed attribute) - referent: credential referent - - """ - super().__init__(**kwargs) - self.name = name - self.cred_def_id = cred_def_id - self.mime_type = mime_type.lower() if mime_type else None - self.value = value - self.referent = referent - - @staticmethod - def list_plain(plain: dict, cred_def_id: str, referent: str = None): - """ - Return a list of `V20PresAttrSpec` on input cred def id. - - Args: - plain: dict mapping names to values - cred_def_id: credential definition identifier to specify - referent: single referent to use, omit for none - - Returns: - List of V20PresAttrSpec on input cred def id with no MIME types - - """ - return [ - V20PresAttrSpec( - name=k, cred_def_id=cred_def_id, value=plain[k], referent=referent - ) - for k in plain - ] - - @property - def posture(self) -> "V20PresAttrSpec.Posture": - """Attribute posture: self-attested, revealed claim, or unrevealed claim.""" - - if self.cred_def_id: - if self.value: - return V20PresAttrSpec.Posture.REVEALED_CLAIM - return V20PresAttrSpec.Posture.UNREVEALED_CLAIM - if self.value: - return V20PresAttrSpec.Posture.SELF_ATTESTED - - return None - - def b64_decoded_value(self) -> str: - """Value, base64-decoded if applicable.""" - - return b64_to_str(self.value) if self.value and self.mime_type else self.value - - def satisfies(self, pred_spec: V20PresPredSpec): - """Whether current specified attribute satisfies input specified predicate.""" - - return bool( - self.value - and not self.mime_type - and canon(self.name) == canon(pred_spec.name) - and not pred_spec.cred_def_id - or (self.cred_def_id == pred_spec.cred_def_id) - and Predicate.get(pred_spec.predicate).value.yes( - self.value, pred_spec.threshold - ) - ) - - def __eq__(self, other): - """Equality comparator.""" - - if canon(self.name) != canon(other.name): - return False # distinct attribute names - - if self.cred_def_id != other.cred_def_id: - return False # distinct attribute cred def ids - - if self.mime_type != other.mime_type: - return False # distinct MIME types - - if self.referent != other.referent: - return False # distinct credential referents - - return self.b64_decoded_value() == other.b64_decoded_value() - - -class V20PresAttrSpecSchema(BaseModelSchema): - """Attribute specifiation schema.""" - - class Meta: - """Attribute specifiation schema metadata.""" - - model_class = V20PresAttrSpec - - name = fields.Str( - description="Attribute name", required=True, example="favourite_drink" - ) - cred_def_id = fields.Str(required=False, **INDY_CRED_DEF_ID) - mime_type = fields.Str( - description="MIME type (default null)", - required=False, - data_key="mime-type", - example="image/jpeg", - ) - value = fields.Str(description="Attribute value", required=False, example="martini") - referent = fields.Str( - description="Credential referent", required=False, example="0" - ) - - -class V20PresPreview(BaseModel): - """Class representing presentation preview.""" - - class Meta: - """Presentation preview metadata.""" - - schema_class = "V20PresPreviewSchema" - message_type = PRES_20_PREVIEW - - def __init__( - self, - *, - _type: str = None, - attributes: Sequence[V20PresAttrSpec] = None, - predicates: Sequence[V20PresPredSpec] = None, - **kwargs, - ): - """ - Initialize presentation preview object. - - Args: - _type: formalism for Marshmallow model creation: ignored - attributes: list of attribute specifications - predicates: list of predicate specifications - - """ - super().__init__(**kwargs) - self.attributes = list(attributes) if attributes else [] - self.predicates = list(predicates) if predicates else [] - - @property - def _type(self): - """Accessor for message type.""" - - return DIDCommPrefix.qualify_current(PresPreview.Meta.message_type) - - def has_attr_spec(self, cred_def_id: str, name: str, value: str) -> bool: - """ - Return whether preview contains given attribute specification. - - Args: - cred_def_id: credential definition identifier - name: attribute name - value: attribute value - - Returns: - Whether preview contains matching attribute specification. - - """ - - return any( - canon(a.name) == canon(name) - and a.value in (value, None) - and a.cred_def_id == cred_def_id - for a in self.attributes - ) - - async def indy_proof_request( - self, - name: str = None, - version: str = None, - nonce: str = None, - ledger: IndySdkLedger = None, - non_revoc_intervals: Mapping[str, NonRevocationInterval] = None, - ) -> dict: - """ - Return indy proof request corresponding to presentation preview. - - Typically the verifier turns the proof preview into a proof request. - - Args: - name: for proof request - version: version for proof request - nonce: nonce for proof request - ledger: ledger with credential definitions, to check for revocation support - non_revoc_intervals: non-revocation interval to use per cred def id - where applicable (default from and to the current time if applicable) - - Returns: - Indy proof request dict. - - """ - - def non_revoc(cred_def_id: str) -> NonRevocationInterval: - """Non-revocation interval to use for input cred def id.""" - - nonlocal epoch_now - nonlocal non_revoc_intervals - - return (non_revoc_intervals or {}).get( - cred_def_id, NonRevocationInterval(epoch_now, epoch_now) - ) - - epoch_now = int(time()) - - proof_req = { - "name": name or "proof-request", - "version": version or "1.0", - "nonce": nonce or await generate_pr_nonce(), - "requested_attributes": {}, - "requested_predicates": {}, - } - - attr_specs_names = {} - for attr_spec in self.attributes: - if attr_spec.posture == V20PresAttrSpec.Posture.SELF_ATTESTED: - proof_req["requested_attributes"][ - "self_{}_uuid".format(canon(attr_spec.name)) - ] = {"name": attr_spec.name} - continue - - cd_id = attr_spec.cred_def_id - revoc_support = False - if cd_id: - if ledger: - async with ledger: - revoc_support = (await ledger.get_credential_definition(cd_id))[ - "value" - ].get("revocation") - interval = non_revoc(cd_id) if revoc_support else None - - if attr_spec.referent: - if attr_spec.referent in attr_specs_names: - attr_specs_names[attr_spec.referent]["names"].append(attr_spec.name) - else: - attr_specs_names[attr_spec.referent] = { - "names": [attr_spec.name], - **{ - "restrictions": [{"cred_def_id": cd_id}] - for _ in [""] - if cd_id - }, - **{ - "non_revoked": interval.serialize() - for _ in [""] - if revoc_support - }, - } - else: - proof_req["requested_attributes"][ - "{}_{}_uuid".format( - len(proof_req["requested_attributes"]), - canon(attr_spec.name), - ) - ] = { - "name": attr_spec.name, - **{"restrictions": [{"cred_def_id": cd_id}] for _ in [""] if cd_id}, - **{ - "non_revoked": interval.serialize() - for _ in [""] - if revoc_support - }, - } - - for (reft, attr_spec) in attr_specs_names.items(): - proof_req["requested_attributes"][ - "{}_{}_uuid".format( - len(proof_req["requested_attributes"]), canon(attr_spec["names"][0]) - ) - ] = attr_spec - - for pred_spec in self.predicates: - cd_id = pred_spec.cred_def_id - revoc_support = False - if cd_id: - if ledger: - async with ledger: - revoc_support = (await ledger.get_credential_definition(cd_id))[ - "value" - ].get("revocation") - interval = non_revoc(cd_id) if revoc_support else None - - proof_req["requested_predicates"][ - "{}_{}_{}_uuid".format( - len(proof_req["requested_predicates"]), - canon(pred_spec.name), - Predicate.get(pred_spec.predicate).value.fortran, - ) - ] = { - "name": pred_spec.name, - "p_type": pred_spec.predicate, - "p_value": pred_spec.threshold, - **{"restrictions": [{"cred_def_id": cd_id}] for _ in [""] if cd_id}, - **{"non_revoked": interval.serialize() for _ in [""] if revoc_support}, - } - - return proof_req - - def __eq__(self, other): - """Equality comparator.""" - - for part in vars(self): - if getattr(self, part, None) != getattr(other, part, None): - return False - return True - - -class V20PresPreviewSchema(BaseModelSchema): - """Presentation preview schema.""" - - class Meta: - """Pres preview schema metadata.""" - - model_class = V20PresPreview - - _type = fields.Str( - description="Message type identifier", - required=False, - example=DIDCommPrefix.qualify_current(PRES_PREVIEW), - data_key="@type", - ) - attributes = fields.Nested(V20PresAttrSpecSchema, required=True, many=True) - predicates = fields.Nested(V20PresPredSpecSchema, required=True, many=True) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/test_pres_preview.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/test_pres_preview.py deleted file mode 100644 index 2feabe3749..0000000000 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/inner/tests/test_pres_preview.py +++ /dev/null @@ -1,595 +0,0 @@ -import json -import pytest - -from copy import deepcopy -from time import time -from unittest import TestCase - -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock - -from .......messaging.util import canon -from .......revocation.models.indy import NonRevocationInterval - -from ......didcomm_prefix import DIDCommPrefix - -from ....message_types import PRES_20_PREVIEW -from ....util.predicate import Predicate - -from ..pres_preview import V20PresAttrSpec, V20PresPredSpec, V20PresPreview - - -S_ID = { - "score": "NcYxiDXkpYi6ov5FcYDi1e:2:score:1.0", - "membership": "NcYxiDXkpYi6ov5FcYDi1e:2:membership:1.0", -} -CD_ID = {name: f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID[name]}:tag1" for name in S_ID} -PRES_PREVIEW = V20PresPreview( - attributes=[ - V20PresAttrSpec( - name="player", cred_def_id=CD_ID["score"], value="Richie Knucklez" - ), - V20PresAttrSpec( - name="screenCapture", - cred_def_id=CD_ID["score"], - mime_type="image/png", - value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", - ), - ], - predicates=[ - V20PresPredSpec( - name="highScore", - cred_def_id=CD_ID["score"], - predicate=">=", - threshold=1000000, - ) - ], -) -PRES_PREVIEW_ATTR_NAMES = V20PresPreview( - attributes=[ - V20PresAttrSpec( - name="player", - cred_def_id=CD_ID["score"], - value="Richie Knucklez", - referent="reft-0", - ), - V20PresAttrSpec( - name="screenCapture", - cred_def_id=CD_ID["score"], - mime_type="image/png", - value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", - referent="reft-0", - ), - V20PresAttrSpec( - name="member", - cred_def_id=CD_ID["membership"], - value="Richard Hand", - referent="reft-1", - ), - V20PresAttrSpec( - name="since", - cred_def_id=CD_ID["membership"], - value="2020-01-01", - referent="reft-1", - ), - ] -) -INDY_PROOF_REQ = json.loads( - f"""{{ - "name": "proof-req", - "version": "1.0", - "nonce": "12345", - "requested_attributes": {{ - "0_player_uuid": {{ - "name": "player", - "restrictions": [ - {{ - "cred_def_id": "{CD_ID['score']}" - }} - ] - }}, - "1_screencapture_uuid": {{ - "name": "screenCapture", - "restrictions": [ - {{ - "cred_def_id": "{CD_ID['score']}" - }} - ] - }} - }}, - "requested_predicates": {{ - "0_highscore_GE_uuid": {{ - "name": "highScore", - "p_type": ">=", - "p_value": 1000000, - "restrictions": [ - {{ - "cred_def_id": "{CD_ID['score']}" - }} - ] - }} - }} -}}""" -) -INDY_PROOF_REQ_ATTR_NAMES = json.loads( - f"""{{ - "name": "proof-req", - "version": "1.0", - "nonce": "12345", - "requested_attributes": {{ - "0_player_uuid": {{ - "names": ["player", "screenCapture"], - "restrictions": [ - {{ - "cred_def_id": "{CD_ID['score']}" - }} - ] - }}, - "1_member_uuid": {{ - "names": ["member", "since"], - "restrictions": [ - {{ - "cred_def_id": "{CD_ID['membership']}" - }} - ] - }} - }}, - "requested_predicates": {{}} -}}""" -) - - -class TestV20PresAttrSpec(TestCase): - """Presentation-preview attribute specification tests""" - - def test_posture(self): - self_attested = V20PresAttrSpec(name="ident", cred_def_id=None, value="655321") - assert self_attested.posture == V20PresAttrSpec.Posture.SELF_ATTESTED - - revealed = V20PresAttrSpec( - name="ident", cred_def_id=CD_ID["score"], value="655321" - ) - assert revealed.posture == V20PresAttrSpec.Posture.REVEALED_CLAIM - - unrevealed = V20PresAttrSpec(name="ident", cred_def_id=CD_ID["score"]) - assert unrevealed.posture == V20PresAttrSpec.Posture.UNREVEALED_CLAIM - - no_posture = V20PresAttrSpec(name="no_spec") - assert no_posture.posture is None - - def test_list_plain(self): - by_list = V20PresAttrSpec.list_plain( - plain={"ident": "655321", " Given Name ": "Alexander DeLarge"}, - cred_def_id=CD_ID["score"], - ) - explicit = [ - V20PresAttrSpec(name="ident", cred_def_id=CD_ID["score"], value="655321"), - V20PresAttrSpec( - name="givenname", cred_def_id=CD_ID["score"], value="Alexander DeLarge" - ), - ] - - # order could be askew - for listp in by_list: - assert any(xp == listp for xp in explicit) - assert len(explicit) == len(by_list) - - def test_list_plain_share_referent(self): - by_list = V20PresAttrSpec.list_plain( - plain={"ident": "655321", " Given Name ": "Alexander DeLarge"}, - cred_def_id=CD_ID["score"], - referent="dummy", - ) - explicit = [ - V20PresAttrSpec( - name="ident", - cred_def_id=CD_ID["score"], - value="655321", - referent="dummy", - ), - V20PresAttrSpec( - name="givenname", - cred_def_id=CD_ID["score"], - value="Alexander DeLarge", - referent="dummy", - ), - ] - - # order could be askew - for listp in by_list: - assert any(xp == listp for xp in explicit) - assert len(explicit) == len(by_list) - - def test_eq(self): - attr_specs_none_plain = [ - V20PresAttrSpec(name="name", value="value"), - V20PresAttrSpec(name="name", value="value", mime_type=None), - V20PresAttrSpec(name=" NAME ", value="value"), - ] - attr_specs_different = [ - V20PresAttrSpec(name="name", value="dmFsdWU=", mime_type="image/png"), - V20PresAttrSpec(name="name", value="value", cred_def_id="cred_def_id"), - V20PresAttrSpec(name="name", value="distinct value", mime_type=None), - V20PresAttrSpec(name="distinct name", value="value", mime_type=None), - V20PresAttrSpec(name="name", value="dmFsdWU=", mime_type=None), - V20PresAttrSpec(name="name"), - V20PresAttrSpec( - name="name", value="value", cred_def_id="cred_def_id", referent="reft-0" - ), - V20PresAttrSpec( - name="name", value="value", cred_def_id="cred_def_id", referent="reft-1" - ), - ] - - for lhs in attr_specs_none_plain: - for rhs in attr_specs_different: - assert lhs != rhs - - for lidx in range(len(attr_specs_none_plain) - 1): - for ridx in range(lidx + 1, len(attr_specs_none_plain)): - assert attr_specs_none_plain[lidx] == attr_specs_none_plain[ridx] - - for lidx in range(len(attr_specs_different) - 1): - for ridx in range(lidx + 1, len(attr_specs_different)): - assert attr_specs_different[lidx] != attr_specs_different[ridx] - - def test_deserialize(self): - """Test deserialization.""" - dump = json.dumps( - { - "name": "PLAYER", - "cred_def_id": CD_ID["score"], - "value": "Richie Knucklez", - } - ) - - attr_spec = V20PresAttrSpec.deserialize(dump) - assert type(attr_spec) == V20PresAttrSpec - assert canon(attr_spec.name) == "player" - - dump = json.dumps( - { - "name": "PLAYER", - "cred_def_id": CD_ID["score"], - "value": "Richie Knucklez", - "referent": "0", - } - ) - - attr_spec = V20PresAttrSpec.deserialize(dump) - assert type(attr_spec) == V20PresAttrSpec - assert canon(attr_spec.name) == "player" - - def test_serialize(self): - """Test serialization.""" - - attr_spec_dict = PRES_PREVIEW.attributes[0].serialize() - assert attr_spec_dict == { - "name": "player", - "cred_def_id": CD_ID["score"], - "value": "Richie Knucklez", - } - - attr_spec_dict = PRES_PREVIEW_ATTR_NAMES.attributes[0].serialize() - assert attr_spec_dict == { - "name": "player", - "cred_def_id": CD_ID["score"], - "value": "Richie Knucklez", - "referent": "reft-0", - } - - -class TestPredicate(TestCase): - """Predicate tests for coverage""" - - def test_get(self): - """Get predicate.""" - assert Predicate.get("LT") == Predicate.get("$lt") == Predicate.get("<") - assert Predicate.get("LE") == Predicate.get("$lte") == Predicate.get("<=") - assert Predicate.get("GE") == Predicate.get("$gte") == Predicate.get(">=") - assert Predicate.get("GT") == Predicate.get("$gt") == Predicate.get(">") - assert Predicate.get("!=") is None - - def test_cmp(self): - """Test comparison via predicates""" - assert Predicate.get("LT").value.yes(0, 1) - assert Predicate.get("LT").value.yes("0", "1") - assert Predicate.get("LT").value.no(0, 0) - assert Predicate.get("LT").value.no(1, 0) - assert Predicate.get("LT").value.no("1", "0") - assert Predicate.get("LT").value.no("0", "0") - - assert Predicate.get("LE").value.yes(0, 1) - assert Predicate.get("LE").value.yes("0", "1") - assert Predicate.get("LE").value.yes(0, 0) - assert Predicate.get("LE").value.no(1, 0) - assert Predicate.get("LE").value.no("1", "0") - assert Predicate.get("LE").value.yes("0", "0") - - assert Predicate.get("GE").value.no(0, 1) - assert Predicate.get("GE").value.no("0", "1") - assert Predicate.get("GE").value.yes(0, 0) - assert Predicate.get("GE").value.yes(1, 0) - assert Predicate.get("GE").value.yes("1", "0") - assert Predicate.get("GE").value.yes("0", "0") - - assert Predicate.get("GT").value.no(0, 1) - assert Predicate.get("GT").value.no("0", "1") - assert Predicate.get("GT").value.no(0, 0) - assert Predicate.get("GT").value.yes(1, 0) - assert Predicate.get("GT").value.yes("1", "0") - assert Predicate.get("GT").value.no("0", "0") - - -class TestV20PresPredSpec(TestCase): - """Presentation predicate specification tests""" - - def test_deserialize(self): - """Test deserialization.""" - dump = json.dumps( - { - "name": "HIGH SCORE", - "cred_def_id": CD_ID["score"], - "predicate": ">=", - "threshold": 1000000, - } - ) - - pred_spec = V20PresPredSpec.deserialize(dump) - assert type(pred_spec) == V20PresPredSpec - assert canon(pred_spec.name) == "highscore" - - def test_serialize(self): - """Test serialization.""" - - pred_spec_dict = PRES_PREVIEW.predicates[0].serialize() - assert pred_spec_dict == { - "name": "highScore", - "cred_def_id": CD_ID["score"], - "predicate": ">=", - "threshold": 1000000, - } - - def test_eq(self): - """Test equality operator.""" - - pred_spec_a = V20PresPredSpec( - name="a", - cred_def_id=CD_ID["score"], - predicate=Predicate.GE.value.math, - threshold=0, - ) - pred_spec_b = V20PresPredSpec( - name="b", - cred_def_id=CD_ID["score"], - predicate=Predicate.GE.value.math, - threshold=0, - ) - assert pred_spec_a != pred_spec_b - - pred_spec_a.name = "b" - assert pred_spec_a == pred_spec_b - - pred_spec_a.predicate = Predicate.LE.value.math - assert pred_spec_a != pred_spec_b - - pred_spec_a.predicate = Predicate.GE.value.math - assert pred_spec_a == pred_spec_b - - pred_spec_a.threshold = 100 - assert pred_spec_a != pred_spec_b - - pred_spec_a.threshold = 0 - pred_spec_a.cred_def_id = None - assert pred_spec_a != pred_spec_b - - -@pytest.mark.indy -class TestV20PresPreviewAsync(AsyncTestCase): - """Presentation preview tests""" - - @pytest.mark.asyncio - async def test_to_indy_proof_request(self): - """Test presentation preview to indy proof request.""" - - indy_proof_req = await PRES_PREVIEW.indy_proof_request( - **{k: INDY_PROOF_REQ[k] for k in ("name", "version", "nonce")} - ) - - assert indy_proof_req == INDY_PROOF_REQ - - @pytest.mark.asyncio - async def test_to_indy_proof_request_attr_names(self): - """Test presentation preview to indy proof request.""" - - indy_proof_req = await PRES_PREVIEW_ATTR_NAMES.indy_proof_request( - **{k: INDY_PROOF_REQ_ATTR_NAMES[k] for k in ("name", "version", "nonce")} - ) - - assert indy_proof_req == INDY_PROOF_REQ_ATTR_NAMES - - async def test_to_indy_proof_request_self_attested(self): - """Test presentation preview to indy proof request with self-attested values.""" - - pres_preview_selfie = deepcopy(PRES_PREVIEW) - for attr_spec in pres_preview_selfie.attributes: - attr_spec.cred_def_id = None - - indy_proof_req_selfie = await pres_preview_selfie.indy_proof_request( - **{k: INDY_PROOF_REQ[k] for k in ("name", "version", "nonce")} - ) - - assert not any( - "restrictions" in attr_spec - for attr_spec in indy_proof_req_selfie["requested_attributes"].values() - ) - - @pytest.mark.asyncio - async def test_to_indy_proof_request_revo_default_interval(self): - """Test pres preview to indy proof req with revocation support, defaults.""" - - copy_indy_proof_req = deepcopy(INDY_PROOF_REQ) - - pres_preview = deepcopy(PRES_PREVIEW) - mock_ledger = async_mock.MagicMock( - get_credential_definition=async_mock.CoroutineMock( - return_value={"value": {"revocation": {"...": "..."}}} - ) - ) - - indy_proof_req_revo = await pres_preview.indy_proof_request( - **{k: INDY_PROOF_REQ[k] for k in ("name", "version", "nonce")}, - ledger=mock_ledger, - ) - - for uuid, attr_spec in indy_proof_req_revo["requested_attributes"].items(): - assert set(attr_spec.get("non_revoked", {}).keys()) == {"from", "to"} - copy_indy_proof_req["requested_attributes"][uuid][ - "non_revoked" - ] = attr_spec["non_revoked"] - for uuid, pred_spec in indy_proof_req_revo["requested_predicates"].items(): - assert set(pred_spec.get("non_revoked", {}).keys()) == {"from", "to"} - copy_indy_proof_req["requested_predicates"][uuid][ - "non_revoked" - ] = pred_spec["non_revoked"] - - assert copy_indy_proof_req == indy_proof_req_revo - - @pytest.mark.asyncio - async def test_to_indy_proof_request_revo(self): - """Test pres preview to indy proof req with revocation support, interval.""" - - EPOCH_NOW = int(time()) - copy_indy_proof_req = deepcopy(INDY_PROOF_REQ) - - pres_preview = deepcopy(PRES_PREVIEW) - mock_ledger = async_mock.MagicMock( - get_credential_definition=async_mock.CoroutineMock( - return_value={"value": {"revocation": {"...": "..."}}} - ) - ) - - indy_proof_req_revo = await pres_preview.indy_proof_request( - **{k: INDY_PROOF_REQ[k] for k in ("name", "version", "nonce")}, - ledger=mock_ledger, - non_revoc_intervals={ - CD_ID[s_id]: NonRevocationInterval(1234567890, EPOCH_NOW) - for s_id in S_ID - }, - ) - - for uuid, attr_spec in indy_proof_req_revo["requested_attributes"].items(): - assert set(attr_spec.get("non_revoked", {}).keys()) == {"from", "to"} - copy_indy_proof_req["requested_attributes"][uuid][ - "non_revoked" - ] = attr_spec["non_revoked"] - for uuid, pred_spec in indy_proof_req_revo["requested_predicates"].items(): - assert set(pred_spec.get("non_revoked", {}).keys()) == {"from", "to"} - copy_indy_proof_req["requested_predicates"][uuid][ - "non_revoked" - ] = pred_spec["non_revoked"] - - assert copy_indy_proof_req == indy_proof_req_revo - - @pytest.mark.asyncio - async def test_satisfaction(self): - """Test presentation preview predicate satisfaction.""" - - pred_spec = V20PresPredSpec( - name="highScore", - cred_def_id=CD_ID["score"], - predicate=Predicate.GE.value.math, - threshold=1000000, - ) - attr_spec = V20PresAttrSpec( - name="HIGHSCORE", cred_def_id=CD_ID["score"], value=1234567 - ) - assert attr_spec.satisfies(pred_spec) - - attr_spec = V20PresAttrSpec( - name="HIGHSCORE", cred_def_id=CD_ID["score"], value=985260 - ) - assert not attr_spec.satisfies(pred_spec) - - -@pytest.mark.indy -class TestV20PresPreview(TestCase): - """Presentation preview tests""" - - def test_init(self): - """Test initializer.""" - assert PRES_PREVIEW.attributes - assert PRES_PREVIEW.predicates - assert PRES_PREVIEW.has_attr_spec( - cred_def_id=CD_ID["score"], name="player", value="Richie Knucklez" - ) - - def test_type(self): - """Test type.""" - assert PRES_PREVIEW._type == DIDCommPrefix.qualify_current(PRES_20_PREVIEW) - - def test_deserialize(self): - """Test deserialization.""" - dump = { - "@type": DIDCommPrefix.qualify_current(PRES_20_PREVIEW), - "attributes": [ - { - "name": "player", - "cred_def_id": CD_ID["score"], - "value": "Richie Knucklez", - }, - { - "name": "screenCapture", - "cred_def_id": CD_ID["score"], - "mime-type": "image/png", - "value": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", - }, - ], - "predicates": [ - { - "name": "highScore", - "cred_def_id": CD_ID["score"], - "predicate": ">=", - "threshold": 1000000, - } - ], - } - - preview = V20PresPreview.deserialize(dump) - assert type(preview) == V20PresPreview - - def test_serialize(self): - """Test serialization.""" - - preview_dict = PRES_PREVIEW.serialize() - assert preview_dict == { - "@type": DIDCommPrefix.qualify_current(PRES_20_PREVIEW), - "attributes": [ - { - "name": "player", - "cred_def_id": CD_ID["score"], - "value": "Richie Knucklez", - }, - { - "name": "screenCapture", - "cred_def_id": CD_ID["score"], - "mime-type": "image/png", - "value": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", - }, - ], - "predicates": [ - { - "name": "highScore", - "cred_def_id": CD_ID["score"], - "predicate": ">=", - "threshold": 1000000, - } - ], - } - - def test_eq(self): - pres_preview_a = V20PresPreview.deserialize(PRES_PREVIEW.serialize()) - assert pres_preview_a == PRES_PREVIEW - - pres_preview_a.predicates = [] - assert pres_preview_a != PRES_PREVIEW diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py index 1c497dbb13..ebb2091afa 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -12,10 +12,9 @@ from .....messaging.models.base import BaseModelError, BaseModel, BaseModelSchema from .....messaging.valid import UUIDFour -from .inner.pres_preview import PresPreview, PresPreviewSchema +from ...util.presentation_preview import PresentationPreview, PresentationPreviewSchema -# Aries RFC value, further monikers -FormatSpec = namedtuple("FormatSpec", "aries aka") +FormatSpec = namedtuple("FormatSpec", "aries aka") # Aries RFC value, further monikers class V20PresFormat(BaseModel): diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py index 515f5423aa..3f527a9783 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -44,13 +44,14 @@ def __init__( Args: comment: optional human-readable comment formats: acceptable attachment formats - pres_proposal: proposed pres preview + proposal_attach: proposal attachments specifying criteria by format """ super().__init__(_id, **kwargs) self.comment = comment - self.pres_proposal = pres_proposal + self.proposal_attach = proposal_attach or [] + print(f'** MESSAGE stored {self.proposal_attach}') - def proposal(self, fmt: V20PredFormat.Format = None) -> dict: + def proposal(self, fmt: V20PresFormat.Format = None) -> dict: """ Return attached proposal item. @@ -58,7 +59,7 @@ def proposal(self, fmt: V20PredFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20PredFormat.Format.INDY).get_attachment_data( + return (fmt or V20PresFormat.Format.INDY).get_attachment_data( self.formats, self.proposal_attach, ) @@ -76,24 +77,24 @@ class Meta: description="Human-readable comment", required=False, allow_none=True ) formats = fields.Nested( - V20PredFormatSchema, + V20PresFormatSchema, many=True, required=True, descrption="Acceptable attachment formats", ) proposal_attach = fields.Nested( AttachDecoratorSchema, - data_key="filters~attach", + data_key="proposal~attach", required=True, description="Attachment per acceptable format on corresponding identifier", ) @validates_schema def validate_fields(self, data, **kwargs): - """Validate filter per format.""" + """Validate proposal attachment per format.""" def get_proposal_attach_by_id(attach_id): - """Return filter with input attachment identifier.""" + """Return proposal attachment with input attachment identifier.""" for p in proposal_attach: if p.ident == attach_id: return p diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_ack.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_ack.py new file mode 100644 index 0000000000..d1cb6627ed --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_ack.py @@ -0,0 +1,61 @@ +import json + +from datetime import datetime, timezone +from unittest import TestCase + +from .....didcomm_prefix import DIDCommPrefix + +from ...message_types import PRES_20_ACK + +from ..pres_ack import V20PresAck + + +class TestV20PresAck(TestCase): + """Presentation ack tests.""" + + def test_init(self): + """Test initializer.""" + pres_ack = V20PresAck() + assert pres_ack.status == "OK" + + def test_type(self): + """Test type.""" + pres_ack = V20PresAck() + assert pres_ack._type == DIDCommPrefix.qualify_current(PRES_20_ACK) + + def test_deserialize(self): + """Test deserialization.""" + dump = json.dumps( + {"@type": DIDCommPrefix.qualify_current(PRES_20_ACK), "status": "OK"} + ) + + pres_ack = V20PresAck.deserialize(dump) + assert type(pres_ack) == V20PresAck + + def test_serialize(self): + """Test serialization.""" + pres_ack_dict = V20PresAck().serialize() + pres_ack_dict.pop("@id") + + assert pres_ack_dict == { + "@type": DIDCommPrefix.qualify_current(PRES_20_ACK), + "status": "OK", + } + + +class TestV20PresAckSchema(TestCase): + """Test presentation ack schema""" + + def test_make_model(self): + """Test making model.""" + pres_ack_dict = V20PresAck().serialize() + """ + Looks like: { + "@type": ".../present-proof/1.0/ack", + "@id": "f49773e3-bd56-4868-a5f1-456d1e6d1a16", + "status": "OK" + } + """ + + model_instance = V20PresAck.deserialize(pres_ack_dict) + assert isinstance(model_instance, V20PresAck) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py new file mode 100644 index 0000000000..a84bd06b3d --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py @@ -0,0 +1,83 @@ +from unittest import TestCase + +from ......messaging.decorators.attach_decorator import AttachDecorator +from ......messaging.models.base import BaseModelError + +from .....didcomm_prefix import DIDCommPrefix + +from ....util.presentation_preview import ( + PresAttrSpec, + PresPredSpec, + PRESENTATION_PREVIEW, + PresentationPreview, +) + +from ...message_types import PRES_20_PROPOSAL + +from ..pres_format import V20PresFormat +from ..pres_proposal import V20PresProposal + + +S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" +CD_ID = f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID}:tag1" +PRES_PREVIEW = PresentationPreview( + attributes=[ + PresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), + PresAttrSpec( + name="screenCapture", + cred_def_id=CD_ID, + mime_type="image/png", + value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + ), + ], + predicates=[ + PresPredSpec( + name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 + ) + ], +) + + +class TestV20PresProposal(TestCase): + """Presentation proposal tests.""" + + def test_init_type(self): + """Test initializer and type.""" + pres_proposal = V20PresProposal( + comment="Hello World", + formats=[ + V20PresFormat( + attach_id="abc", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + proposal_attach=[ + AttachDecorator.from_indy_dict(PRES_PREVIEW.serialize(), ident="abc") + ], + ) + assert pres_proposal._type == DIDCommPrefix.qualify_current(PRES_20_PROPOSAL) + + def test_serde(self): + """Test de/serialization.""" + pres_proposal = V20PresProposal( + comment="Hello World", + formats=[ + V20PresFormat( + attach_id="abc", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + proposal_attach=[ + AttachDecorator.from_indy_dict(PRES_PREVIEW.serialize(), ident="abc") + ], + ) + pres_proposal_ser = pres_proposal.serialize() + print(f'\n>> pp {pres_proposal}') + print(f'>> pp-ser {pres_proposal_ser}') + pres_proposal_deser = V20PresProposal.deserialize(pres_proposal_ser) + assert type(pres_proposal_deser) == V20PresProposal + + pres_proposal_dict = pres_proposal_deser.serialize() + pres_proposal_dict.pop("@id") + + assert pres_proposal_dict == pres_proposal_ser From 872caaaa278e2919587deb85ab1d7b002b64d163 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Fri, 5 Feb 2021 00:11:49 +0530 Subject: [PATCH 021/243] Implementing final step of double signing the transaction (WIP) Signed-off-by: Harsh Multani --- aries_cloudagent/ledger/indy.py | 67 +++++++++++++ .../endorse_transaction/v1_0/manager.py | 65 +++++++++++-- .../endorse_transaction/v1_0/routes.py | 94 +++++++++++++++++++ 3 files changed, 216 insertions(+), 10 deletions(-) diff --git a/aries_cloudagent/ledger/indy.py b/aries_cloudagent/ledger/indy.py index 9afe5850b8..0a46c62906 100644 --- a/aries_cloudagent/ledger/indy.py +++ b/aries_cloudagent/ledger/indy.py @@ -353,6 +353,73 @@ async def _submit( f"Unexpected operation code from ledger: {operation}" ) + # todo - implementing changes for writing final transaction to the ledger + # (For Sign Transaction Protocol) + async def create_schema( + self, + issuer: IndyIssuer = None, + schema_name: str = None, + schema_version: str = None, + attribute_names: Sequence[str] = None, + signed_request: dict = None, + ) -> Tuple[str, dict]: + """ + Send schema to ledger. + + Args: + issuer: The issuer instance creating the schema + schema_name: The schema name + schema_version: The schema version + attribute_names: A list of schema attributes + + """ + + public_info = await self.wallet.get_public_did() + if not public_info: + raise BadLedgerRequestError("Cannot publish schema without a public DID") + + # Error here while signing the already signed request from transaction author + if signed_request: + signed_request_json = await indy.ledger.sign_request( + self.wallet.opened.handle, public_info.did, signed_request + ) + return signed_request_json + + else: + + schema_info = await self.check_existing_schema( + public_info.did, schema_name, schema_version, attribute_names + ) + if schema_info: + LOGGER.warning("Schema already exists on ledger. Returning details.") + schema_id, schema_def = schema_info + else: + if self.pool.read_only: + raise LedgerError( + "Error cannot write schema when ledger is in read only mode" + ) + + try: + schema_id, schema_json = await issuer.create_schema( + public_info.did, + schema_name, + schema_version, + attribute_names, + ) + except IndyIssuerError as err: + raise LedgerError(err.message) from err + + with IndyErrorHandler("Exception building schema request", LedgerError): + request_json = await indy.ledger.build_schema_request( + public_info.did, schema_json + ) + + signed_request_json = await indy.ledger.sign_request( + self.wallet.opened.handle, public_info.did, request_json + ) + + return signed_request_json + async def create_and_send_schema( self, issuer: IndyIssuer, diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index e38ad9f054..6832407bb8 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -104,7 +104,15 @@ async def create_record( return transaction - async def create_request(self, transaction: TransactionRecord, connection_id: str): + # todo - implementing changes for writing final transaction to the ledger + # (For Sign Transaction Protocol) + async def create_request( + self, + transaction: TransactionRecord, + connection_id: str, + signature: str = None, + signed_request: dict = None, + ): """ Create a new Transaction Request. @@ -136,6 +144,16 @@ async def create_request(self, transaction: TransactionRecord, connection_id: st transaction.state = TransactionRecord.STATE_REQUEST_SENT transaction.connection_id = connection_id + + if signature: + author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] + transaction.messages_attach[0]["data"]["json"]["signatures"][ + author_did + ] = signature + transaction.messages_attach[0]["data"]["json"]["reqId"] = signed_request[ + "reqId" + ] + profile_session = await self.session async with profile_session.profile.session() as session: await transaction.save(session, reason="Created an endorsement request") @@ -184,12 +202,15 @@ async def receive_request(self, request: TransactionRequest, connection_id: str) return transaction + # todo - implementing changes for writing final transaction to the ledger + # (For Sign Transaction Protocol) async def create_endorse_response( self, transaction: TransactionRecord, state: str, endorser_did: str, endorser_verkey: str, + signature: str = None, ): """ Create a response to endorse a transaction. @@ -212,18 +233,34 @@ async def create_endorse_response( f" in state: {transaction.state}" ) + transaction._type = TransactionRecord.SIGNATURE_RESPONSE + transaction.messages_attach[0]["data"]["json"]["endorser"] = endorser_did - transaction._type = TransactionRecord.SIGNATURE_RESPONSE + if signature: + author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] + transaction.messages_attach[0]["data"]["json"]["signature"][ + author_did + ] = signature + signature_response = { + "message_id": transaction.messages_attach[0]["_message_id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {endorser_did: signature}, + } + + else: + signature_response = { + "message_id": transaction.messages_attach[0]["_message_id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {endorser_did: endorser_verkey}, + } - signature_response = { - "message_id": transaction.messages_attach[0]["_message_id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signature": {endorser_did: endorser_verkey}, - } transaction.signature_response.clear() transaction.signature_response.append(signature_response) @@ -243,6 +280,8 @@ async def create_endorse_response( return transaction, endorsed_transaction_response + # todo - implementing changes for writing final transaction to the ledger + # (For Sign Transaction Protocol) async def receive_endorse_response(self, response: EndorsedTransactionResponse): """ Update the transaction record with the endorsed response. @@ -268,6 +307,12 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): "endorser" ] = response.endorser_did + author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] + endorser_did = response.endorser_did + transaction.messages_attach[0]["data"]["json"]["signature"][ + author_did + ] = response.signature_response["signature"][endorser_did] + async with profile_session.profile.session() as session: await transaction.save(session, reason="Received an endorsed response") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 9dac9e2fa4..64fe61eb0e 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -30,6 +30,7 @@ from ....revocation.indy import IndyRevocation from ....revocation.error import RevocationNotSupportedError, RevocationError from ....tails.base import BaseTailsServer +import json class TransactionListSchema(OpenAPISchema): @@ -136,6 +137,8 @@ async def transactions_retrieve(request: web.BaseRequest): return web.json_response(result) +# todo - implementing changes for writing final transaction to the ledger +# (For Sign Transaction Protocol) @docs( tags=["endorse-transaction"], summary="For author to send a transaction request", @@ -196,6 +199,57 @@ async def transaction_create_request(request: web.BaseRequest): transaction_mgr = TransactionManager(session) + if ( + transaction_record.messages_attach[0]["data"]["json"]["operation"]["type"] + == "101" + ): + + issuer = context.inject(IndyIssuer) + ledger = context.inject(BaseLedger, required=False) + + schema_name = transaction_record.messages_attach[0]["data"]["json"][ + "operation" + ]["data"]["schema_name"] + schema_version = transaction_record.messages_attach[0]["data"]["json"][ + "operation" + ]["data"]["schema_version"] + attributes = transaction_record.messages_attach[0]["data"]["json"]["operation"][ + "data" + ]["attributes"] + + async with ledger: + try: + schema_request = await shield( + ledger.create_schema( + issuer, schema_name, schema_version, attributes + ) + ) + except (IndyIssuerError, LedgerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + schema_request = json.loads(schema_request) + + ( + transaction_record, + transaction_request, + ) = await transaction_mgr.create_request( + transaction=transaction_record, + connection_id=connection_id, + signature=schema_request["signature"], + signed_request=schema_request, + ) + + await outbound_handler( + transaction_request, connection_id=connection_record.connection_id + ) + + return web.json_response(transaction_record.serialize()) + + else: + pass + + transaction_mgr = TransactionManager(session) + (transaction_record, transaction_request) = await transaction_mgr.create_request( transaction=transaction_record, connection_id=connection_id ) @@ -207,6 +261,8 @@ async def transaction_create_request(request: web.BaseRequest): return web.json_response(transaction_record.serialize()) +# todo - implementing changes for writing final transaction to the ledger +# (For Sign Transaction Protocol) @docs( tags=["endorse-transaction"], summary="For Endorser to endorse a particular transaction record", @@ -270,6 +326,44 @@ async def endorse_transaction_response(request: web.BaseRequest): ) transaction_mgr = TransactionManager(session) + + if transaction.messages_attach[0]["data"]["json"]["operation"]["type"] == "101": + + ledger = context.inject(BaseLedger, required=False) + + schema_json = transaction.messages_attach[0]["data"]["json"] + + del schema_json["taaAcceptance"] + del schema_json["endorser"] + + async with ledger: + try: + signed_schema_request = await shield( + ledger.create_schema(signed_request=schema_json) + ) + except (IndyIssuerError, LedgerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + ( + transaction, + endorsed_transaction_response, + ) = await transaction_mgr.create_endorse_response( + transaction=transaction, + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + endorser_did=endorser_did, + endorser_verkey=endorser_verkey, + signature=signed_schema_request["signature"], + ) + + await outbound_handler( + endorsed_transaction_response, connection_id=transaction.connection_id + ) + + return web.json_response(transaction.serialize()) + + else: + pass + ( transaction, endorsed_transaction_response, From 0cae6cb019cafd16a2e8913ef106dbf6b56f763c Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Sun, 7 Feb 2021 09:03:45 -0800 Subject: [PATCH 022/243] Fix endorser logic (w.i.p. final transaction write still gets an error) Signed-off-by: Ian Costanzo --- aries_cloudagent/ledger/base.py | 22 ++++++ aries_cloudagent/ledger/indy.py | 70 ++++++++++++++++--- aries_cloudagent/messaging/schemas/routes.py | 63 +++++++++++------ .../endorse_transaction/v1_0/manager.py | 35 ++++++---- .../endorse_transaction/v1_0/routes.py | 56 ++++++++++++++- 5 files changed, 202 insertions(+), 44 deletions(-) diff --git a/aries_cloudagent/ledger/base.py b/aries_cloudagent/ledger/base.py index 3ddee20a11..263bed9aca 100644 --- a/aries_cloudagent/ledger/base.py +++ b/aries_cloudagent/ledger/base.py @@ -3,10 +3,12 @@ import re from abc import ABC, abstractmethod, ABCMeta +from collections import namedtuple from enum import Enum from typing import Sequence, Tuple, Union from ..indy.issuer import IndyIssuer +from ..utils import sentinel from .endpoint_type import EndpointType @@ -131,6 +133,25 @@ async def get_latest_txn_author_acceptance(self): def taa_digest(self, version: str, text: str): """Generate the digest of a TAA record.""" + @abstractmethod + async def txn_endorse( + self, + request_json: str, + ) -> str: + """ + """ + + @abstractmethod + async def txn_submit( + self, + request_json: str, + sign: bool, + taa_accept: bool, + sign_did: namedtuple("DIDInfo", "did verkey metadata"), + ) -> str: + """ + """ + @abstractmethod async def create_and_send_schema( self, @@ -138,6 +159,7 @@ async def create_and_send_schema( schema_name: str, schema_version: str, attribute_names: Sequence[str], + write_ledger: bool = True, ) -> Tuple[str, dict]: """ Send schema to ledger. diff --git a/aries_cloudagent/ledger/indy.py b/aries_cloudagent/ledger/indy.py index 0a46c62906..1aa9528e35 100644 --- a/aries_cloudagent/ledger/indy.py +++ b/aries_cloudagent/ledger/indy.py @@ -167,6 +167,7 @@ async def open(self): with IndyErrorHandler( f"Exception opening pool ledger {self.name}", LedgerConfigError ): + print(">>> Open pool ledger") self.handle = await indy.pool.open_pool_ledger(self.name, "{}") self.opened = True @@ -176,6 +177,7 @@ async def close(self): exc = None for attempt in range(3): try: + print(">>> Closing pool ledger") await indy.pool.close_pool_ledger(self.handle) except IndyError as err: await asyncio.sleep(0.01) @@ -202,6 +204,7 @@ async def context_open(self): self.close_task.cancel() if not self.opened: LOGGER.debug("Opening the pool ledger") + print(">>> Opening the pool ledger") await self.open() self.ref_count += 1 @@ -214,6 +217,7 @@ async def closer(timeout: int): async with self.ref_lock: if not self.ref_count: LOGGER.debug("Closing pool ledger after timeout") + print(">>> Closing pool ledger after timeout") await self.close() async with self.ref_lock: @@ -277,12 +281,32 @@ async def __aexit__(self, exc_type, exc, tb): await self.pool.context_close() await super().__aexit__(exc_type, exc, tb) + async def _endorse( + self, + request_json: str, + ) -> str: + + if not self.pool.handle: + raise ClosedPoolError( + f"Cannot endorse request with closed pool '{self.pool.name}'" + ) + + public_info = await self.wallet.get_public_did() + if not public_info: + raise BadLedgerRequestError("Cannot endorse transaction without a public DID") + + endorsed_request_json = await indy.ledger.multi_sign_request( + self.wallet.opened.handle, public_info.did, request_json + ) + return json.loads(endorsed_request_json) + async def _submit( self, request_json: str, sign: bool = None, taa_accept: bool = None, sign_did: DIDInfo = sentinel, + write_ledger: bool = True, ) -> str: """ Sign and submit request to ledger. @@ -325,10 +349,19 @@ async def _submit( acceptance["time"], ) ) - submit_op = indy.ledger.sign_and_submit_request( - self.pool.handle, self.wallet.opened.handle, sign_did.did, request_json - ) + if write_ledger: + print("Signing and Submitting:", request_json) + submit_op = indy.ledger.sign_and_submit_request( + self.pool.handle, self.wallet.opened.handle, sign_did.did, request_json + ) + else: + # multi-sign, since we expect this to get endorsed later + print("Signing:", request_json) + submit_op = indy.ledger.multi_sign_request( + self.wallet.opened.handle, sign_did.did, request_json + ) else: + print("Submitting:", request_json) submit_op = indy.ledger.submit_request(self.pool.handle, request_json) with IndyErrorHandler( @@ -336,6 +369,10 @@ async def _submit( ): request_result_json = await submit_op + if sign and not write_ledger: + print("returning signed result:", request_result_json) + return request_result_json + request_result = json.loads(request_result_json) operation = request_result.get("op", "") @@ -353,6 +390,21 @@ async def _submit( f"Unexpected operation code from ledger: {operation}" ) + async def txn_endorse( + self, + request_json: str, + ) -> str: + return await self._endorse(request_json) + + async def txn_submit( + self, + request_json: str, + sign: bool = None, + taa_accept: bool = None, + sign_did: DIDInfo = sentinel, + ) -> str: + return await self._submit(request_json, sign=sign, taa_accept=taa_accept, sign_did=sign_did) + # todo - implementing changes for writing final transaction to the ledger # (For Sign Transaction Protocol) async def create_schema( @@ -380,13 +432,12 @@ async def create_schema( # Error here while signing the already signed request from transaction author if signed_request: - signed_request_json = await indy.ledger.sign_request( - self.wallet.opened.handle, public_info.did, signed_request + signed_request_json = await indy.ledger.multi_sign_request( + self.wallet.opened.handle, public_info.did, json.dumps(signed_request) ) - return signed_request_json + return json.loads(signed_request_json) else: - schema_info = await self.check_existing_schema( public_info.did, schema_name, schema_version, attribute_names ) @@ -426,6 +477,7 @@ async def create_and_send_schema( schema_name: str, schema_version: str, attribute_names: Sequence[str], + write_ledger: bool = True, ) -> Tuple[str, dict]: """ Send schema to ledger. @@ -471,7 +523,9 @@ async def create_and_send_schema( ) try: - resp = await self._submit(request_json, True, sign_did=public_info) + resp = await self._submit(request_json, True, sign_did=public_info, write_ledger=write_ledger) + if not write_ledger: + return schema_id, json.loads(resp) try: # parse sequence number out of response seq_no = json.loads(resp)["result"]["txnMetadata"]["seqNo"] diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index 3e82ef3289..d3f7e8a6fb 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -131,33 +131,54 @@ async def schemas_send_schema(request: web.BaseRequest): context: AdminRequestContext = request["context"] auto_endorse = json.loads(request.query.get("auto_endorse", "true")) - if auto_endorse: - body = await request.json() + body = await request.json() - schema_name = body.get("schema_name") - schema_version = body.get("schema_version") - attributes = body.get("attributes") + schema_name = body.get("schema_name") + schema_version = body.get("schema_version") + attributes = body.get("attributes") - ledger = context.inject(BaseLedger, required=False) - if not ledger: - reason = "No ledger available" - if not context.settings.get_value("wallet.type"): - reason += ": missing wallet-type?" - raise web.HTTPForbidden(reason=reason) + ledger = context.inject(BaseLedger, required=False) + if not ledger: + reason = "No ledger available" + if not context.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) - issuer = context.inject(IndyIssuer) - async with ledger: - try: - schema_id, schema_def = await shield( - ledger.create_and_send_schema( - issuer, schema_name, schema_version, attributes - ) + issuer = context.inject(IndyIssuer) + async with ledger: + try: + # if not auto_endorse, then the returned "schema_def" is actually the signed transaction + schema_id, schema_def = await shield( + ledger.create_and_send_schema( + issuer, schema_name, schema_version, attributes, write_ledger=auto_endorse, ) - except (IndyIssuerError, LedgerError) as err: - raise web.HTTPBadRequest(reason=err.roll_up) from err + ) + except (IndyIssuerError, LedgerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + if auto_endorse: return web.json_response({"schema_id": schema_id, "schema": schema_def}) + else: + session = await context.session() + print("creating transaction with:", schema_def) + transaction_mgr = TransactionManager(session) + + # ignore all parameters except the last one (which is the signed ledger transaction) + transaction = await transaction_mgr.create_record( + author_did="", + author_verkey="", + transaction_message={}, + transaction_type="101", + mechanism="", + taaDigest={}, + time=0, + expires_time="1597708800", + messages_attach=schema_def, + ) + + return web.json_response(transaction.serialize()) + """ else: transaction_message = await request.json() session = await context.session() @@ -222,7 +243,7 @@ async def schemas_send_schema(request: web.BaseRequest): ) return web.json_response(transaction.serialize()) - + """ @docs( tags=["schema"], diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 6832407bb8..cb649597f9 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -2,6 +2,7 @@ from aiohttp import web import logging +import uuid from .models.transaction_record import TransactionRecord from .messages.transaction_request import TransactionRequest @@ -58,6 +59,7 @@ async def create_record( taaDigest: str, time: int, expires_time: str, + messages_attach: dict, ): """ Create a new Transaction Record. @@ -71,6 +73,7 @@ async def create_record( """ + """ messages_attach = MessagesAttach( author_did=author_did, author_verkey=author_verkey, @@ -80,7 +83,9 @@ async def create_record( taaDigest=taaDigest, time=time, ) - messages_attach_dict = messages_attach.__dict__ + """ + messages_attach["_id"] = str(uuid.uuid4()) + messages_attach_dict = {"data": {"json": messages_attach}} transaction = TransactionRecord() @@ -88,7 +93,7 @@ async def create_record( transaction.timing = timing formats = { - "attach_id": messages_attach._id, + "attach_id": messages_attach["_id"], "format": TransactionRecord.FORMAT_VERSION, } transaction.formats.clear() @@ -176,6 +181,8 @@ async def receive_request(self, request: TransactionRequest, connection_id: str) connection_id: The connection id related to this transaction record """ + print("Request received:", request) + transaction = TransactionRecord() transaction._type = TransactionRecord.SIGNATURE_REQUEST @@ -184,7 +191,7 @@ async def receive_request(self, request: TransactionRequest, connection_id: str) transaction.timing = request.timing format = { - "attach_id": request.messages_attach["_message_id"], + "attach_id": request.messages_attach["data"]["json"]["_id"], "format": TransactionRecord.FORMAT_VERSION, } transaction.formats.clear() @@ -235,15 +242,17 @@ async def create_endorse_response( transaction._type = TransactionRecord.SIGNATURE_RESPONSE - transaction.messages_attach[0]["data"]["json"]["endorser"] = endorser_did + # don't modify the transaction payload + #transaction.messages_attach[0]["data"]["json"]["endorser"] = endorser_did if signature: - author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] - transaction.messages_attach[0]["data"]["json"]["signature"][ - author_did - ] = signature + # don't modify the transaction payload + #author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] + #transaction.messages_attach[0]["data"]["json"]["signatures"][ + # author_did + #] = signature signature_response = { - "message_id": transaction.messages_attach[0]["_message_id"], + "message_id": transaction.messages_attach[0]["data"]["json"]["_id"], "context": TransactionRecord.SIGNATURE_CONTEXT, "method": TransactionRecord.ADD_SIGNATURE, "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, @@ -253,7 +262,7 @@ async def create_endorse_response( else: signature_response = { - "message_id": transaction.messages_attach[0]["_message_id"], + "message_id": transaction.messages_attach[0]["data"]["json"]["_id"], "context": TransactionRecord.SIGNATURE_CONTEXT, "method": TransactionRecord.ADD_SIGNATURE, "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, @@ -309,8 +318,8 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] endorser_did = response.endorser_did - transaction.messages_attach[0]["data"]["json"]["signature"][ - author_did + transaction.messages_attach[0]["data"]["json"]["signatures"][ + endorser_did ] = response.signature_response["signature"][endorser_did] async with profile_session.profile.session() as session: @@ -347,7 +356,7 @@ async def create_refuse_response( transaction._type = TransactionRecord.SIGNATURE_RESPONSE signature_response = { - "message_id": transaction.messages_attach[0]["_message_id"], + "message_id": transaction.messages_attach[0]["data"]["json"]["_id"], "context": TransactionRecord.SIGNATURE_CONTEXT, "method": TransactionRecord.ADD_SIGNATURE, "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 64fe61eb0e..0a707c172f 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -199,6 +199,8 @@ async def transaction_create_request(request: web.BaseRequest): transaction_mgr = TransactionManager(session) + """ + # we already have a signed transaction attached, we just need to send it to the issuer if ( transaction_record.messages_attach[0]["data"]["json"]["operation"]["type"] == "101" @@ -247,6 +249,7 @@ async def transaction_create_request(request: web.BaseRequest): else: pass + """ transaction_mgr = TransactionManager(session) @@ -254,6 +257,9 @@ async def transaction_create_request(request: web.BaseRequest): transaction=transaction_record, connection_id=connection_id ) + print(":transaction_record", transaction_record) + print("transaction_request:", transaction_request) + await outbound_handler( transaction_request, connection_id=connection_record.connection_id ) @@ -327,6 +333,8 @@ async def endorse_transaction_response(request: web.BaseRequest): transaction_mgr = TransactionManager(session) + """ + # don't do any transaction_type-specific logic, just endorse the transaction if transaction.messages_attach[0]["data"]["json"]["operation"]["type"] == "101": ledger = context.inject(BaseLedger, required=False) @@ -341,6 +349,7 @@ async def endorse_transaction_response(request: web.BaseRequest): signed_schema_request = await shield( ledger.create_schema(signed_request=schema_json) ) + print("signed_schema_request:", signed_schema_request) except (IndyIssuerError, LedgerError) as err: raise web.HTTPBadRequest(reason=err.roll_up) from err @@ -352,7 +361,7 @@ async def endorse_transaction_response(request: web.BaseRequest): state=TransactionRecord.STATE_TRANSACTION_ENDORSED, endorser_did=endorser_did, endorser_verkey=endorser_verkey, - signature=signed_schema_request["signature"], + signature=signed_schema_request["signatures"][endorser_did], ) await outbound_handler( @@ -363,6 +372,20 @@ async def endorse_transaction_response(request: web.BaseRequest): else: pass + """ + + ledger = context.inject(BaseLedger, required=False) + + transaction_json = transaction.messages_attach[0]["data"]["json"] + + async with ledger: + try: + endorsed_transaction_request = await shield( + ledger.txn_endorse(json.dumps(transaction_json)) + ) + print("endorsed_transaction_request:", endorsed_transaction_request) + except (IndyIssuerError, LedgerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err ( transaction, @@ -372,6 +395,7 @@ async def endorse_transaction_response(request: web.BaseRequest): state=TransactionRecord.STATE_TRANSACTION_ENDORSED, endorser_did=endorser_did, endorser_verkey=endorser_verkey, + signature=endorsed_transaction_request["signatures"][endorser_did], ) await outbound_handler( @@ -681,6 +705,34 @@ async def transaction_write(request: web.BaseRequest): reason="Only an endorsed transaction can be written to the ledger" ) + ledger_transaction = transaction.messages_attach[0]["data"]["json"] + print("ledger_transaction:", ledger_transaction) + endorsed_signature = transaction.signature_response[0] + print("endorsed_signature:", endorsed_signature) + for endorser_did in endorsed_signature["signature"].keys(): + ledger_transaction["signatures"][endorser_did] = endorsed_signature["signature"][endorser_did] + print("signed ledger_transaction:", ledger_transaction) + + ledger = context.inject(BaseLedger, required=False) + if not ledger: + reason = "No ledger available" + if not context.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) + + async with ledger: + try: + print("Writing to ledger ...", json.dumps(ledger_transaction)) + ledger_response = await shield( + ledger.txn_submit(json.dumps(ledger_transaction), sign=False, taa_accept=False) + ) + print("ledger_response:", ledger_response) + except (IndyIssuerError, LedgerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + return web.json_response(json.loads(ledger_response)) + + """ body = transaction.messages_attach[0]["data"]["json"]["operation"]["data"] if transaction.messages_attach[0]["data"]["json"]["operation"]["type"] == "101": @@ -796,7 +848,7 @@ async def transaction_write(request: web.BaseRequest): raise web.HTTPBadRequest(reason=e.message) from e return web.json_response({"credential_definition_id": cred_def_id}) - + """ async def register(app: web.Application): """Register routes.""" From c9777d63a9df9de6b2950f0d3b15e6ec310c765d Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Sun, 7 Feb 2021 15:50:41 -0800 Subject: [PATCH 023/243] Update transaction endorsement protocols and messages, happy path case is working Signed-off-by: Ian Costanzo --- aries_cloudagent/ledger/base.py | 1 + aries_cloudagent/ledger/indy.py | 10 +++-- aries_cloudagent/messaging/schemas/routes.py | 12 ++++- .../endorse_transaction/v1_0/manager.py | 45 ++++++++++++------- .../v1_0/models/transaction_record.py | 44 +++++++++--------- .../endorse_transaction/v1_0/routes.py | 32 ++++++------- 6 files changed, 86 insertions(+), 58 deletions(-) diff --git a/aries_cloudagent/ledger/base.py b/aries_cloudagent/ledger/base.py index 263bed9aca..565e14bd4b 100644 --- a/aries_cloudagent/ledger/base.py +++ b/aries_cloudagent/ledger/base.py @@ -160,6 +160,7 @@ async def create_and_send_schema( schema_version: str, attribute_names: Sequence[str], write_ledger: bool = True, + endorser_did: str = None, ) -> Tuple[str, dict]: """ Send schema to ledger. diff --git a/aries_cloudagent/ledger/indy.py b/aries_cloudagent/ledger/indy.py index 1aa9528e35..3bb4e45117 100644 --- a/aries_cloudagent/ledger/indy.py +++ b/aries_cloudagent/ledger/indy.py @@ -298,7 +298,7 @@ async def _endorse( endorsed_request_json = await indy.ledger.multi_sign_request( self.wallet.opened.handle, public_info.did, request_json ) - return json.loads(endorsed_request_json) + return endorsed_request_json async def _submit( self, @@ -407,6 +407,7 @@ async def txn_submit( # todo - implementing changes for writing final transaction to the ledger # (For Sign Transaction Protocol) + # note this function is NOT USED async def create_schema( self, issuer: IndyIssuer = None, @@ -414,7 +415,7 @@ async def create_schema( schema_version: str = None, attribute_names: Sequence[str] = None, signed_request: dict = None, - ) -> Tuple[str, dict]: + ) -> str: """ Send schema to ledger. @@ -478,6 +479,7 @@ async def create_and_send_schema( schema_version: str, attribute_names: Sequence[str], write_ledger: bool = True, + endorser_did: str = None, ) -> Tuple[str, dict]: """ Send schema to ledger. @@ -523,9 +525,11 @@ async def create_and_send_schema( ) try: + if endorser_did and not write_ledger: + request_json = await indy.ledger.append_request_endorser(request_json, endorser_did) resp = await self._submit(request_json, True, sign_did=public_info, write_ledger=write_ledger) if not write_ledger: - return schema_id, json.loads(resp) + return schema_id, {"signed_txn": resp} try: # parse sequence number out of response seq_no = json.loads(resp)["result"]["txnMetadata"]["seqNo"] diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index d3f7e8a6fb..872bd1bfb5 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -112,10 +112,17 @@ class AutoEndorseOptionSchema(OpenAPISchema): required=False, ) +class EndorserDIDOptionSchema(OpenAPISchema): + endorser_did = fields.Str( + description="Endorser DID", + required=False, + ) + @docs(tags=["schema"], summary="Sends a schema to the ledger") @request_schema(SchemaSendRequestSchema()) @querystring_schema(AutoEndorseOptionSchema()) +@querystring_schema(EndorserDIDOptionSchema()) @response_schema(SchemaSendResultsSchema(), 200, description="") async def schemas_send_schema(request: web.BaseRequest): """ @@ -130,6 +137,7 @@ async def schemas_send_schema(request: web.BaseRequest): """ context: AdminRequestContext = request["context"] auto_endorse = json.loads(request.query.get("auto_endorse", "true")) + endorser_did = request.query.get("endorser_did", None) body = await request.json() @@ -150,7 +158,7 @@ async def schemas_send_schema(request: web.BaseRequest): # if not auto_endorse, then the returned "schema_def" is actually the signed transaction schema_id, schema_def = await shield( ledger.create_and_send_schema( - issuer, schema_name, schema_version, attributes, write_ledger=auto_endorse, + issuer, schema_name, schema_version, attributes, write_ledger=auto_endorse, endorser_did=endorser_did, ) ) except (IndyIssuerError, LedgerError) as err: @@ -174,7 +182,7 @@ async def schemas_send_schema(request: web.BaseRequest): taaDigest={}, time=0, expires_time="1597708800", - messages_attach=schema_def, + messages_attach=schema_def["signed_txn"], ) return web.json_response(transaction.serialize()) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index cb649597f9..f76c728e9d 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -59,7 +59,7 @@ async def create_record( taaDigest: str, time: int, expires_time: str, - messages_attach: dict, + messages_attach: str, ): """ Create a new Transaction Record. @@ -84,8 +84,11 @@ async def create_record( time=time, ) """ - messages_attach["_id"] = str(uuid.uuid4()) - messages_attach_dict = {"data": {"json": messages_attach}} + messages_attach_dict = { + "@id": str(uuid.uuid4()), + "mime-type": "application/json", + "data": {"json": messages_attach}, + } transaction = TransactionRecord() @@ -93,7 +96,7 @@ async def create_record( transaction.timing = timing formats = { - "attach_id": messages_attach["_id"], + "attach_id": messages_attach_dict["@id"], "format": TransactionRecord.FORMAT_VERSION, } transaction.formats.clear() @@ -150,6 +153,8 @@ async def create_request( transaction.state = TransactionRecord.STATE_REQUEST_SENT transaction.connection_id = connection_id + """ + # don't try to introspect the attached message, it's already signed we just need to forward along for endorsement if signature: author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] transaction.messages_attach[0]["data"]["json"]["signatures"][ @@ -158,6 +163,7 @@ async def create_request( transaction.messages_attach[0]["data"]["json"]["reqId"] = signed_request[ "reqId" ] + """ profile_session = await self.session async with profile_session.profile.session() as session: @@ -191,7 +197,7 @@ async def receive_request(self, request: TransactionRequest, connection_id: str) transaction.timing = request.timing format = { - "attach_id": request.messages_attach["data"]["json"]["_id"], + "attach_id": request.messages_attach["@id"], "format": TransactionRecord.FORMAT_VERSION, } transaction.formats.clear() @@ -217,6 +223,7 @@ async def create_endorse_response( state: str, endorser_did: str, endorser_verkey: str, + endorsed_msg: str = None, signature: str = None, ): """ @@ -242,8 +249,10 @@ async def create_endorse_response( transaction._type = TransactionRecord.SIGNATURE_RESPONSE - # don't modify the transaction payload - #transaction.messages_attach[0]["data"]["json"]["endorser"] = endorser_did + # don't modify the transaction payload? + if endorsed_msg: + # update - need to return the endorsed msg or else the ledger will reject the eventual write + transaction.messages_attach[0]["data"]["json"] = endorsed_msg if signature: # don't modify the transaction payload @@ -252,7 +261,7 @@ async def create_endorse_response( # author_did #] = signature signature_response = { - "message_id": transaction.messages_attach[0]["data"]["json"]["_id"], + "message_id": transaction.messages_attach[0]["@id"], "context": TransactionRecord.SIGNATURE_CONTEXT, "method": TransactionRecord.ADD_SIGNATURE, "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, @@ -262,7 +271,7 @@ async def create_endorse_response( else: signature_response = { - "message_id": transaction.messages_attach[0]["data"]["json"]["_id"], + "message_id": transaction.messages_attach[0]["@id"], "context": TransactionRecord.SIGNATURE_CONTEXT, "method": TransactionRecord.ADD_SIGNATURE, "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, @@ -299,6 +308,8 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): response: The Endorsed Transaction Response """ + print("received endorse response:", response) + profile_session = await self.session async with profile_session.profile.session() as session: transaction = await TransactionRecord.retrieve_by_id( @@ -312,15 +323,17 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): transaction.signature_response.append(response.signature_response) transaction.thread_id = response.thread_id - transaction.messages_attach[0]["data"]["json"][ - "endorser" - ] = response.endorser_did + #transaction.messages_attach[0]["data"]["json"][ + # "endorser" + #] = response.endorser_did - author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] + #author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] endorser_did = response.endorser_did - transaction.messages_attach[0]["data"]["json"]["signatures"][ - endorser_did - ] = response.signature_response["signature"][endorser_did] + #transaction.messages_attach[0]["data"]["json"]["signatures"][ + # endorser_did + #] = response.signature_response["signature"][endorser_did] + # the returned signature is actually the endorsed ledger transaction + transaction.messages_attach[0]["data"]["json"] = response.signature_response["signature"][endorser_did] async with profile_session.profile.session() as session: await transaction.save(session, reason="Received an endorsed response") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py index 309196fb4f..56770c6117 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py @@ -181,28 +181,28 @@ class Meta: "@id": "143c458d-1b1c-40c7-ab85-4d16808ddf0a", "mime-type": "application/json", "data": { - "json": { - "endorser": "V4SGRU86Z58d6TV7PBUe6f", - "identifier": "LjgpST2rjsoxYegQDRm7EL", - "operation": { - "data": { - "attr_names": ["first_name", "last_name"], - "name": "test_schema", - "version": "2.1", - }, - "type": "101", - }, - "protocolVersion": 2, - "reqId": 1597766666168851000, - "signatures": { - "LjgpST2rjsox": "4ATKMn6Y9sTgwqaGTm7py2c2M8x1EVDTWKZArwyuPgjU" - }, - "taaAcceptance": { - "mechanism": "manual", - "taaDigest": "f50fe2c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62", - "time": 1597708800, - }, - } + "json": "{" + "\"endorser\": \"V4SGRU86Z58d6TV7PBUe6f\"," + "\"identifier\": \"LjgpST2rjsoxYegQDRm7EL\"," + "\"operation\": {" + "\"data\": {" + "\"attr_names\": [\"first_name\", \"last_name\"]," + "\"name\": \"test_schema\"," + "\"version\": \"2.1\"," + "}," + "\"type\": \"101\"," + "}," + "\"protocolVersion\": 2," + "\"reqId\": 1597766666168851000," + "\"signatures\": {" + "\"LjgpST2rjsox\": \"4ATKMn6Y9sTgwqaGTm7py2c2M8x1EVDTWKZArwyuPgjU\"" + "}," + "\"taaAcceptance\": {" + "\"mechanism\": \"manual\"," + "\"taaDigest\": \"f50fe2c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62\"," + "\"time\": 1597708800," + "}" + "}" }, } ), diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 0a707c172f..0e5d22f740 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -221,11 +221,11 @@ async def transaction_create_request(request: web.BaseRequest): async with ledger: try: - schema_request = await shield( - ledger.create_schema( - issuer, schema_name, schema_version, attributes - ) - ) + #schema_request = await shield( + # ledger.create_schema( + # issuer, schema_name, schema_version, attributes + # ) + #) except (IndyIssuerError, LedgerError) as err: raise web.HTTPBadRequest(reason=err.roll_up) from err @@ -346,10 +346,10 @@ async def endorse_transaction_response(request: web.BaseRequest): async with ledger: try: - signed_schema_request = await shield( - ledger.create_schema(signed_request=schema_json) - ) - print("signed_schema_request:", signed_schema_request) + #signed_schema_request = await shield( + # ledger.create_schema(signed_request=schema_json) + #) + #print("signed_schema_request:", signed_schema_request) except (IndyIssuerError, LedgerError) as err: raise web.HTTPBadRequest(reason=err.roll_up) from err @@ -381,7 +381,7 @@ async def endorse_transaction_response(request: web.BaseRequest): async with ledger: try: endorsed_transaction_request = await shield( - ledger.txn_endorse(json.dumps(transaction_json)) + ledger.txn_endorse(transaction_json) ) print("endorsed_transaction_request:", endorsed_transaction_request) except (IndyIssuerError, LedgerError) as err: @@ -395,7 +395,8 @@ async def endorse_transaction_response(request: web.BaseRequest): state=TransactionRecord.STATE_TRANSACTION_ENDORSED, endorser_did=endorser_did, endorser_verkey=endorser_verkey, - signature=endorsed_transaction_request["signatures"][endorser_did], + endorsed_msg=endorsed_transaction_request, + signature=endorsed_transaction_request, ) await outbound_handler( @@ -709,8 +710,9 @@ async def transaction_write(request: web.BaseRequest): print("ledger_transaction:", ledger_transaction) endorsed_signature = transaction.signature_response[0] print("endorsed_signature:", endorsed_signature) - for endorser_did in endorsed_signature["signature"].keys(): - ledger_transaction["signatures"][endorser_did] = endorsed_signature["signature"][endorser_did] + # the returned attachment is updated with the signature + #for endorser_did in endorsed_signature["signature"].keys(): + # ledger_transaction["signatures"][endorser_did] = endorsed_signature["signature"][endorser_did] print("signed ledger_transaction:", ledger_transaction) ledger = context.inject(BaseLedger, required=False) @@ -722,9 +724,9 @@ async def transaction_write(request: web.BaseRequest): async with ledger: try: - print("Writing to ledger ...", json.dumps(ledger_transaction)) + print("Writing to ledger ...", ledger_transaction) ledger_response = await shield( - ledger.txn_submit(json.dumps(ledger_transaction), sign=False, taa_accept=False) + ledger.txn_submit(ledger_transaction, sign=False, taa_accept=False) ) print("ledger_response:", ledger_response) except (IndyIssuerError, LedgerError) as err: From 51ef7c6a3baa42a10d8236b7130853096343ed07 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Tue, 9 Feb 2021 09:00:06 -0800 Subject: [PATCH 024/243] Some code cleanup - remove println's and unused code blocks Signed-off-by: Ian Costanzo --- aries_cloudagent/ledger/base.py | 6 +- aries_cloudagent/ledger/indy.py | 98 ++------ aries_cloudagent/messaging/schemas/routes.py | 10 +- .../endorse_transaction/v1_0/manager.py | 34 +-- .../v1_0/models/transaction_record.py | 40 ++-- .../endorse_transaction/v1_0/routes.py | 222 ------------------ 6 files changed, 56 insertions(+), 354 deletions(-) diff --git a/aries_cloudagent/ledger/base.py b/aries_cloudagent/ledger/base.py index 565e14bd4b..0db233c1b6 100644 --- a/aries_cloudagent/ledger/base.py +++ b/aries_cloudagent/ledger/base.py @@ -138,8 +138,7 @@ async def txn_endorse( self, request_json: str, ) -> str: - """ - """ + """""" @abstractmethod async def txn_submit( @@ -149,8 +148,7 @@ async def txn_submit( taa_accept: bool, sign_did: namedtuple("DIDInfo", "did verkey metadata"), ) -> str: - """ - """ + """""" @abstractmethod async def create_and_send_schema( diff --git a/aries_cloudagent/ledger/indy.py b/aries_cloudagent/ledger/indy.py index 3bb4e45117..78d73ebfed 100644 --- a/aries_cloudagent/ledger/indy.py +++ b/aries_cloudagent/ledger/indy.py @@ -167,7 +167,6 @@ async def open(self): with IndyErrorHandler( f"Exception opening pool ledger {self.name}", LedgerConfigError ): - print(">>> Open pool ledger") self.handle = await indy.pool.open_pool_ledger(self.name, "{}") self.opened = True @@ -177,7 +176,6 @@ async def close(self): exc = None for attempt in range(3): try: - print(">>> Closing pool ledger") await indy.pool.close_pool_ledger(self.handle) except IndyError as err: await asyncio.sleep(0.01) @@ -204,7 +202,6 @@ async def context_open(self): self.close_task.cancel() if not self.opened: LOGGER.debug("Opening the pool ledger") - print(">>> Opening the pool ledger") await self.open() self.ref_count += 1 @@ -217,7 +214,6 @@ async def closer(timeout: int): async with self.ref_lock: if not self.ref_count: LOGGER.debug("Closing pool ledger after timeout") - print(">>> Closing pool ledger after timeout") await self.close() async with self.ref_lock: @@ -293,7 +289,9 @@ async def _endorse( public_info = await self.wallet.get_public_did() if not public_info: - raise BadLedgerRequestError("Cannot endorse transaction without a public DID") + raise BadLedgerRequestError( + "Cannot endorse transaction without a public DID" + ) endorsed_request_json = await indy.ledger.multi_sign_request( self.wallet.opened.handle, public_info.did, request_json @@ -350,18 +348,18 @@ async def _submit( ) ) if write_ledger: - print("Signing and Submitting:", request_json) submit_op = indy.ledger.sign_and_submit_request( - self.pool.handle, self.wallet.opened.handle, sign_did.did, request_json + self.pool.handle, + self.wallet.opened.handle, + sign_did.did, + request_json, ) else: # multi-sign, since we expect this to get endorsed later - print("Signing:", request_json) submit_op = indy.ledger.multi_sign_request( self.wallet.opened.handle, sign_did.did, request_json ) else: - print("Submitting:", request_json) submit_op = indy.ledger.submit_request(self.pool.handle, request_json) with IndyErrorHandler( @@ -370,7 +368,6 @@ async def _submit( request_result_json = await submit_op if sign and not write_ledger: - print("returning signed result:", request_result_json) return request_result_json request_result = json.loads(request_result_json) @@ -394,6 +391,9 @@ async def txn_endorse( self, request_json: str, ) -> str: + """ + Endorse a (signed) ledger transaction. + """ return await self._endorse(request_json) async def txn_submit( @@ -402,75 +402,13 @@ async def txn_submit( sign: bool = None, taa_accept: bool = None, sign_did: DIDInfo = sentinel, - ) -> str: - return await self._submit(request_json, sign=sign, taa_accept=taa_accept, sign_did=sign_did) - - # todo - implementing changes for writing final transaction to the ledger - # (For Sign Transaction Protocol) - # note this function is NOT USED - async def create_schema( - self, - issuer: IndyIssuer = None, - schema_name: str = None, - schema_version: str = None, - attribute_names: Sequence[str] = None, - signed_request: dict = None, ) -> str: """ - Send schema to ledger. - - Args: - issuer: The issuer instance creating the schema - schema_name: The schema name - schema_version: The schema version - attribute_names: A list of schema attributes - + Submit a signed (and endorsed) transaction to the ledger. """ - - public_info = await self.wallet.get_public_did() - if not public_info: - raise BadLedgerRequestError("Cannot publish schema without a public DID") - - # Error here while signing the already signed request from transaction author - if signed_request: - signed_request_json = await indy.ledger.multi_sign_request( - self.wallet.opened.handle, public_info.did, json.dumps(signed_request) - ) - return json.loads(signed_request_json) - - else: - schema_info = await self.check_existing_schema( - public_info.did, schema_name, schema_version, attribute_names - ) - if schema_info: - LOGGER.warning("Schema already exists on ledger. Returning details.") - schema_id, schema_def = schema_info - else: - if self.pool.read_only: - raise LedgerError( - "Error cannot write schema when ledger is in read only mode" - ) - - try: - schema_id, schema_json = await issuer.create_schema( - public_info.did, - schema_name, - schema_version, - attribute_names, - ) - except IndyIssuerError as err: - raise LedgerError(err.message) from err - - with IndyErrorHandler("Exception building schema request", LedgerError): - request_json = await indy.ledger.build_schema_request( - public_info.did, schema_json - ) - - signed_request_json = await indy.ledger.sign_request( - self.wallet.opened.handle, public_info.did, request_json - ) - - return signed_request_json + return await self._submit( + request_json, sign=sign, taa_accept=taa_accept, sign_did=sign_did + ) async def create_and_send_schema( self, @@ -526,8 +464,12 @@ async def create_and_send_schema( try: if endorser_did and not write_ledger: - request_json = await indy.ledger.append_request_endorser(request_json, endorser_did) - resp = await self._submit(request_json, True, sign_did=public_info, write_ledger=write_ledger) + request_json = await indy.ledger.append_request_endorser( + request_json, endorser_did + ) + resp = await self._submit( + request_json, True, sign_did=public_info, write_ledger=write_ledger + ) if not write_ledger: return schema_id, {"signed_txn": resp} try: diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index 872bd1bfb5..9a6020f5d6 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -112,6 +112,7 @@ class AutoEndorseOptionSchema(OpenAPISchema): required=False, ) + class EndorserDIDOptionSchema(OpenAPISchema): endorser_did = fields.Str( description="Endorser DID", @@ -158,7 +159,12 @@ async def schemas_send_schema(request: web.BaseRequest): # if not auto_endorse, then the returned "schema_def" is actually the signed transaction schema_id, schema_def = await shield( ledger.create_and_send_schema( - issuer, schema_name, schema_version, attributes, write_ledger=auto_endorse, endorser_did=endorser_did, + issuer, + schema_name, + schema_version, + attributes, + write_ledger=auto_endorse, + endorser_did=endorser_did, ) ) except (IndyIssuerError, LedgerError) as err: @@ -169,7 +175,6 @@ async def schemas_send_schema(request: web.BaseRequest): else: session = await context.session() - print("creating transaction with:", schema_def) transaction_mgr = TransactionManager(session) # ignore all parameters except the last one (which is the signed ledger transaction) @@ -253,6 +258,7 @@ async def schemas_send_schema(request: web.BaseRequest): return web.json_response(transaction.serialize()) """ + @docs( tags=["schema"], summary="Search for matching schema that agent originated", diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index f76c728e9d..ad6f3908a0 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -153,18 +153,6 @@ async def create_request( transaction.state = TransactionRecord.STATE_REQUEST_SENT transaction.connection_id = connection_id - """ - # don't try to introspect the attached message, it's already signed we just need to forward along for endorsement - if signature: - author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] - transaction.messages_attach[0]["data"]["json"]["signatures"][ - author_did - ] = signature - transaction.messages_attach[0]["data"]["json"]["reqId"] = signed_request[ - "reqId" - ] - """ - profile_session = await self.session async with profile_session.profile.session() as session: await transaction.save(session, reason="Created an endorsement request") @@ -187,8 +175,6 @@ async def receive_request(self, request: TransactionRequest, connection_id: str) connection_id: The connection id related to this transaction record """ - print("Request received:", request) - transaction = TransactionRecord() transaction._type = TransactionRecord.SIGNATURE_REQUEST @@ -256,10 +242,10 @@ async def create_endorse_response( if signature: # don't modify the transaction payload - #author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] - #transaction.messages_attach[0]["data"]["json"]["signatures"][ + # author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] + # transaction.messages_attach[0]["data"]["json"]["signatures"][ # author_did - #] = signature + # ] = signature signature_response = { "message_id": transaction.messages_attach[0]["@id"], "context": TransactionRecord.SIGNATURE_CONTEXT, @@ -308,8 +294,6 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): response: The Endorsed Transaction Response """ - print("received endorse response:", response) - profile_session = await self.session async with profile_session.profile.session() as session: transaction = await TransactionRecord.retrieve_by_id( @@ -323,17 +307,11 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): transaction.signature_response.append(response.signature_response) transaction.thread_id = response.thread_id - #transaction.messages_attach[0]["data"]["json"][ - # "endorser" - #] = response.endorser_did - #author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] endorser_did = response.endorser_did - #transaction.messages_attach[0]["data"]["json"]["signatures"][ - # endorser_did - #] = response.signature_response["signature"][endorser_did] - # the returned signature is actually the endorsed ledger transaction - transaction.messages_attach[0]["data"]["json"] = response.signature_response["signature"][endorser_did] + transaction.messages_attach[0]["data"]["json"] = response.signature_response[ + "signature" + ][endorser_did] async with profile_session.profile.session() as session: await transaction.save(session, reason="Received an endorsed response") diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py index 56770c6117..28f8ea7b46 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py @@ -182,26 +182,26 @@ class Meta: "mime-type": "application/json", "data": { "json": "{" - "\"endorser\": \"V4SGRU86Z58d6TV7PBUe6f\"," - "\"identifier\": \"LjgpST2rjsoxYegQDRm7EL\"," - "\"operation\": {" - "\"data\": {" - "\"attr_names\": [\"first_name\", \"last_name\"]," - "\"name\": \"test_schema\"," - "\"version\": \"2.1\"," - "}," - "\"type\": \"101\"," - "}," - "\"protocolVersion\": 2," - "\"reqId\": 1597766666168851000," - "\"signatures\": {" - "\"LjgpST2rjsox\": \"4ATKMn6Y9sTgwqaGTm7py2c2M8x1EVDTWKZArwyuPgjU\"" - "}," - "\"taaAcceptance\": {" - "\"mechanism\": \"manual\"," - "\"taaDigest\": \"f50fe2c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62\"," - "\"time\": 1597708800," - "}" + '"endorser": "V4SGRU86Z58d6TV7PBUe6f",' + '"identifier": "LjgpST2rjsoxYegQDRm7EL",' + '"operation": {' + '"data": {' + '"attr_names": ["first_name", "last_name"],' + '"name": "test_schema",' + '"version": "2.1",' + "}," + '"type": "101",' + "}," + '"protocolVersion": 2,' + '"reqId": 1597766666168851000,' + '"signatures": {' + '"LjgpST2rjsox": "4ATKMn6Y9sTgwqaGTm7py2c2M8x1EVDTWKZArwyuPgjU"' + "}," + '"taaAcceptance": {' + '"mechanism": "manual",' + '"taaDigest": "f50fe2c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62",' + '"time": 1597708800,' + "}" "}" }, } diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 0e5d22f740..6325d4a7b8 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -199,67 +199,12 @@ async def transaction_create_request(request: web.BaseRequest): transaction_mgr = TransactionManager(session) - """ - # we already have a signed transaction attached, we just need to send it to the issuer - if ( - transaction_record.messages_attach[0]["data"]["json"]["operation"]["type"] - == "101" - ): - - issuer = context.inject(IndyIssuer) - ledger = context.inject(BaseLedger, required=False) - - schema_name = transaction_record.messages_attach[0]["data"]["json"][ - "operation" - ]["data"]["schema_name"] - schema_version = transaction_record.messages_attach[0]["data"]["json"][ - "operation" - ]["data"]["schema_version"] - attributes = transaction_record.messages_attach[0]["data"]["json"]["operation"][ - "data" - ]["attributes"] - - async with ledger: - try: - #schema_request = await shield( - # ledger.create_schema( - # issuer, schema_name, schema_version, attributes - # ) - #) - except (IndyIssuerError, LedgerError) as err: - raise web.HTTPBadRequest(reason=err.roll_up) from err - - schema_request = json.loads(schema_request) - - ( - transaction_record, - transaction_request, - ) = await transaction_mgr.create_request( - transaction=transaction_record, - connection_id=connection_id, - signature=schema_request["signature"], - signed_request=schema_request, - ) - - await outbound_handler( - transaction_request, connection_id=connection_record.connection_id - ) - - return web.json_response(transaction_record.serialize()) - - else: - pass - """ - transaction_mgr = TransactionManager(session) (transaction_record, transaction_request) = await transaction_mgr.create_request( transaction=transaction_record, connection_id=connection_id ) - print(":transaction_record", transaction_record) - print("transaction_request:", transaction_request) - await outbound_handler( transaction_request, connection_id=connection_record.connection_id ) @@ -333,47 +278,6 @@ async def endorse_transaction_response(request: web.BaseRequest): transaction_mgr = TransactionManager(session) - """ - # don't do any transaction_type-specific logic, just endorse the transaction - if transaction.messages_attach[0]["data"]["json"]["operation"]["type"] == "101": - - ledger = context.inject(BaseLedger, required=False) - - schema_json = transaction.messages_attach[0]["data"]["json"] - - del schema_json["taaAcceptance"] - del schema_json["endorser"] - - async with ledger: - try: - #signed_schema_request = await shield( - # ledger.create_schema(signed_request=schema_json) - #) - #print("signed_schema_request:", signed_schema_request) - except (IndyIssuerError, LedgerError) as err: - raise web.HTTPBadRequest(reason=err.roll_up) from err - - ( - transaction, - endorsed_transaction_response, - ) = await transaction_mgr.create_endorse_response( - transaction=transaction, - state=TransactionRecord.STATE_TRANSACTION_ENDORSED, - endorser_did=endorser_did, - endorser_verkey=endorser_verkey, - signature=signed_schema_request["signatures"][endorser_did], - ) - - await outbound_handler( - endorsed_transaction_response, connection_id=transaction.connection_id - ) - - return web.json_response(transaction.serialize()) - - else: - pass - """ - ledger = context.inject(BaseLedger, required=False) transaction_json = transaction.messages_attach[0]["data"]["json"] @@ -383,7 +287,6 @@ async def endorse_transaction_response(request: web.BaseRequest): endorsed_transaction_request = await shield( ledger.txn_endorse(transaction_json) ) - print("endorsed_transaction_request:", endorsed_transaction_request) except (IndyIssuerError, LedgerError) as err: raise web.HTTPBadRequest(reason=err.roll_up) from err @@ -707,13 +610,7 @@ async def transaction_write(request: web.BaseRequest): ) ledger_transaction = transaction.messages_attach[0]["data"]["json"] - print("ledger_transaction:", ledger_transaction) endorsed_signature = transaction.signature_response[0] - print("endorsed_signature:", endorsed_signature) - # the returned attachment is updated with the signature - #for endorser_did in endorsed_signature["signature"].keys(): - # ledger_transaction["signatures"][endorser_did] = endorsed_signature["signature"][endorser_did] - print("signed ledger_transaction:", ledger_transaction) ledger = context.inject(BaseLedger, required=False) if not ledger: @@ -724,133 +621,14 @@ async def transaction_write(request: web.BaseRequest): async with ledger: try: - print("Writing to ledger ...", ledger_transaction) ledger_response = await shield( ledger.txn_submit(ledger_transaction, sign=False, taa_accept=False) ) - print("ledger_response:", ledger_response) except (IndyIssuerError, LedgerError) as err: raise web.HTTPBadRequest(reason=err.roll_up) from err return web.json_response(json.loads(ledger_response)) - """ - body = transaction.messages_attach[0]["data"]["json"]["operation"]["data"] - - if transaction.messages_attach[0]["data"]["json"]["operation"]["type"] == "101": - - schema_name = body.get("schema_name") - schema_version = body.get("schema_version") - attributes = body.get("attributes") - - ledger = context.inject(BaseLedger, required=False) - if not ledger: - reason = "No ledger available" - if not context.settings.get_value("wallet.type"): - reason += ": missing wallet-type?" - raise web.HTTPForbidden(reason=reason) - - issuer = context.inject(IndyIssuer) - async with ledger: - try: - schema_id, schema_def = await shield( - ledger.create_and_send_schema( - issuer, schema_name, schema_version, attributes - ) - ) - except (IndyIssuerError, LedgerError) as err: - raise web.HTTPBadRequest(reason=err.roll_up) from err - - return web.json_response({"schema_id": schema_id, "schema": schema_def}) - - else: - - schema_id = body.get("schema_id") - support_revocation = bool(body.get("support_revocation")) - tag = body.get("tag") - rev_reg_size = body.get("revocation_registry_size") - - ledger = context.inject(BaseLedger, required=False) - if not ledger: - reason = "No ledger available" - if not context.settings.get_value("wallet.type"): - reason += ": missing wallet-type?" - raise web.HTTPForbidden(reason=reason) - - issuer = context.inject(IndyIssuer) - try: # even if in wallet, send it and raise if erroneously so - async with ledger: - (cred_def_id, cred_def, novel) = await shield( - ledger.create_and_send_credential_definition( - issuer, - schema_id, - signature_type=None, - tag=tag, - support_revocation=support_revocation, - ) - ) - except LedgerError as e: - raise web.HTTPBadRequest(reason=e.message) from e - - # If revocation is requested and cred def is novel, create revocation registry - if support_revocation and novel: - session = ( - await context.session() - ) # FIXME - will update to not require session here - tails_base_url = session.settings.get("tails_server_base_url") - if not tails_base_url: - raise web.HTTPBadRequest(reason="tails_server_base_url not configured") - try: - # Create registry - revoc = IndyRevocation(session) - registry_record = await revoc.init_issuer_registry( - cred_def_id, - max_cred_num=rev_reg_size, - ) - - except RevocationNotSupportedError as e: - raise web.HTTPBadRequest(reason=e.message) from e - await shield(registry_record.generate_registry(session)) - try: - await registry_record.set_tails_file_public_uri( - session, f"{tails_base_url}/{registry_record.revoc_reg_id}" - ) - await registry_record.send_def(session) - await registry_record.send_entry(session) - - # stage pending registry independent of whether tails server is OK - pending_registry_record = await revoc.init_issuer_registry( - registry_record.cred_def_id, - max_cred_num=registry_record.max_cred_num, - ) - ensure_future( - pending_registry_record.stage_pending_registry( - session, max_attempts=16 - ) - ) - - tails_server = session.inject(BaseTailsServer) - (upload_success, reason) = await tails_server.upload_tails_file( - session, - registry_record.revoc_reg_id, - registry_record.tails_local_path, - interval=0.8, - backoff=-0.5, - max_attempts=5, # heuristic: respect HTTP timeout - ) - if not upload_success: - raise web.HTTPInternalServerError( - reason=( - f"Tails file for rev reg {registry_record.revoc_reg_id} " - f"failed to upload: {reason}" - ) - ) - - except RevocationError as e: - raise web.HTTPBadRequest(reason=e.message) from e - - return web.json_response({"credential_definition_id": cred_def_id}) - """ async def register(app: web.Application): """Register routes.""" From f608ec5f326659f4bb4de30919adb2684349e506 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Tue, 9 Feb 2021 09:15:36 -0800 Subject: [PATCH 025/243] Cleanup cred def code Signed-off-by: Ian Costanzo --- .../credential_definitions/routes.py | 152 +++++++++--------- 1 file changed, 77 insertions(+), 75 deletions(-) diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index 06e786e6e8..05ac108fbf 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -145,92 +145,94 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq context: AdminRequestContext = request["context"] auto_endorse = json.loads(request.query.get("auto_endorse", "true")) - if auto_endorse: - body = await request.json() + body = await request.json() - schema_id = body.get("schema_id") - support_revocation = bool(body.get("support_revocation")) - tag = body.get("tag") - rev_reg_size = body.get("revocation_registry_size") + schema_id = body.get("schema_id") + support_revocation = bool(body.get("support_revocation")) + tag = body.get("tag") + rev_reg_size = body.get("revocation_registry_size") - ledger = context.inject(BaseLedger, required=False) - if not ledger: - reason = "No ledger available" - if not context.settings.get_value("wallet.type"): - reason += ": missing wallet-type?" - raise web.HTTPForbidden(reason=reason) + ledger = context.inject(BaseLedger, required=False) + if not ledger: + reason = "No ledger available" + if not context.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) - issuer = context.inject(IndyIssuer) - try: # even if in wallet, send it and raise if erroneously so - async with ledger: - (cred_def_id, cred_def, novel) = await shield( - ledger.create_and_send_credential_definition( - issuer, - schema_id, - signature_type=None, - tag=tag, - support_revocation=support_revocation, - ) + issuer = context.inject(IndyIssuer) + try: # even if in wallet, send it and raise if erroneously so + async with ledger: + (cred_def_id, cred_def, novel) = await shield( + ledger.create_and_send_credential_definition( + issuer, + schema_id, + signature_type=None, + tag=tag, + support_revocation=support_revocation, ) - except LedgerError as e: - raise web.HTTPBadRequest(reason=e.message) from e + ) - # If revocation is requested and cred def is novel, create revocation registry - if support_revocation and novel: - session = ( - await context.session() - ) # FIXME - will update to not require session here - tails_base_url = session.settings.get("tails_server_base_url") - if not tails_base_url: - raise web.HTTPBadRequest(reason="tails_server_base_url not configured") - try: - # Create registry - revoc = IndyRevocation(session) - registry_record = await revoc.init_issuer_registry( - cred_def_id, - max_cred_num=rev_reg_size, - ) + ## TODO if not auto_endorse deal with the response transaction + + except LedgerError as e: + raise web.HTTPBadRequest(reason=e.message) from e + + # If revocation is requested and cred def is novel, create revocation registry + if support_revocation and novel: + session = ( + await context.session() + ) # FIXME - will update to not require session here + tails_base_url = session.settings.get("tails_server_base_url") + if not tails_base_url: + raise web.HTTPBadRequest(reason="tails_server_base_url not configured") + try: + # Create registry + revoc = IndyRevocation(session) + registry_record = await revoc.init_issuer_registry( + cred_def_id, + max_cred_num=rev_reg_size, + ) - except RevocationNotSupportedError as e: - raise web.HTTPBadRequest(reason=e.message) from e - await shield(registry_record.generate_registry(session)) - try: - await registry_record.set_tails_file_public_uri( - session, f"{tails_base_url}/{registry_record.revoc_reg_id}" - ) - await registry_record.send_def(session) - await registry_record.send_entry(session) + except RevocationNotSupportedError as e: + raise web.HTTPBadRequest(reason=e.message) from e + await shield(registry_record.generate_registry(session)) + try: + await registry_record.set_tails_file_public_uri( + session, f"{tails_base_url}/{registry_record.revoc_reg_id}" + ) + await registry_record.send_def(session) + await registry_record.send_entry(session) - # stage pending registry independent of whether tails server is OK - pending_registry_record = await revoc.init_issuer_registry( - registry_record.cred_def_id, - max_cred_num=registry_record.max_cred_num, - ) - ensure_future( - pending_registry_record.stage_pending_registry( - session, max_attempts=16 - ) + # stage pending registry independent of whether tails server is OK + pending_registry_record = await revoc.init_issuer_registry( + registry_record.cred_def_id, + max_cred_num=registry_record.max_cred_num, + ) + ensure_future( + pending_registry_record.stage_pending_registry( + session, max_attempts=16 ) + ) - tails_server = session.inject(BaseTailsServer) - (upload_success, reason) = await tails_server.upload_tails_file( - session, - registry_record.revoc_reg_id, - registry_record.tails_local_path, - interval=0.8, - backoff=-0.5, - max_attempts=5, # heuristic: respect HTTP timeout - ) - if not upload_success: - raise web.HTTPInternalServerError( - reason=( - f"Tails file for rev reg {registry_record.revoc_reg_id} " - f"failed to upload: {reason}" - ) + tails_server = session.inject(BaseTailsServer) + (upload_success, reason) = await tails_server.upload_tails_file( + session, + registry_record.revoc_reg_id, + registry_record.tails_local_path, + interval=0.8, + backoff=-0.5, + max_attempts=5, # heuristic: respect HTTP timeout + ) + if not upload_success: + raise web.HTTPInternalServerError( + reason=( + f"Tails file for rev reg {registry_record.revoc_reg_id} " + f"failed to upload: {reason}" ) + ) - except RevocationError as e: - raise web.HTTPBadRequest(reason=e.message) from e + except RevocationError as e: + raise web.HTTPBadRequest(reason=e.message) from e return web.json_response({"credential_definition_id": cred_def_id}) From 98b656ba6fef7817ffa3b0c75d391d365d7a2830 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Tue, 9 Feb 2021 09:47:41 -0800 Subject: [PATCH 026/243] Fix mis-merged cred def logic Signed-off-by: Ian Costanzo --- aries_cloudagent/messaging/credential_definitions/routes.py | 2 ++ demo/runners/performance.py | 3 +++ 2 files changed, 5 insertions(+) diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index edad7084bd..88ff508cb4 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -230,6 +230,7 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq except RevocationError as e: raise web.HTTPBadRequest(reason=e.message) from e + if auto_endorse: return web.json_response({"credential_definition_id": cred_def_id}) else: @@ -293,6 +294,7 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq taaDigest=taaDigest, time=time, expires_time="1597708800", + messages_attach={}, # TODO ) return web.json_response(transaction.serialize()) diff --git a/demo/runners/performance.py b/demo/runners/performance.py index 50d7d1fadc..9fa3279c95 100644 --- a/demo/runners/performance.py +++ b/demo/runners/performance.py @@ -79,6 +79,9 @@ async def handle_issue_credential_v2_0_indy(self, payload): if rev_reg_id and cred_rev_id: self.revocations.append((rev_reg_id, cred_rev_id)) + async def handle_issuer_cred_rev(self, message): + pass + async def handle_ping(self, payload): thread_id = payload["thread_id"] if thread_id in self.sent_pings or ( From 508d70e561b908f284de97df77cc1cd5cca72937 Mon Sep 17 00:00:00 2001 From: sklump Date: Wed, 10 Feb 2021 14:55:46 +0000 Subject: [PATCH 027/243] work in progress Signed-off-by: sklump --- .../v2_0/messages/pres_format.py | 8 +- .../v2_0/messages/pres_proposal.py | 12 +-- .../v2_0/messages/pres_request.py | 99 +++++++++++++++++++ .../v2_0/messages/tests/test_pres_format.py | 99 +++++++++++++++++++ .../v2_0/messages/tests/test_pres_proposal.py | 10 +- 5 files changed, 215 insertions(+), 13 deletions(-) create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py index ebb2091afa..ee5e2c85b1 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -12,7 +12,7 @@ from .....messaging.models.base import BaseModelError, BaseModel, BaseModelSchema from .....messaging.valid import UUIDFour -from ...util.presentation_preview import PresentationPreview, PresentationPreviewSchema +from ...util.presentation_preview import PresentationPreview FormatSpec = namedtuple("FormatSpec", "aries aka") # Aries RFC value, further monikers @@ -66,9 +66,11 @@ def validate_proposal_attach(self, data: Mapping): """Raise ValidationError for wrong proposal~attach content.""" if self is V20PredFormat.Format.INDY: try: - V20PredProposal.deserialize(data) + PresentationPreview.deserialize(data) except BaseModelError as x: - raise ValidationError("Invalid presentation proposal") from x + raise ValidationError( + "Invalid presentation proposal attachment: {x.message}" + ) def get_attachment_data( self, diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py index 3f527a9783..43bc93d49c 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -48,10 +48,10 @@ def __init__( """ super().__init__(_id, **kwargs) self.comment = comment + self.formats = formats self.proposal_attach = proposal_attach or [] - print(f'** MESSAGE stored {self.proposal_attach}') - def proposal(self, fmt: V20PresFormat.Format = None) -> dict: + def attachment(self, fmt: V20PresFormat.Format = None) -> dict: """ Return attached proposal item. @@ -74,7 +74,7 @@ class Meta: unknown = EXCLUDE comment = fields.Str( - description="Human-readable comment", required=False, allow_none=True + description="Human-readable comment", required=False ) formats = fields.Nested( V20PresFormatSchema, @@ -93,8 +93,8 @@ class Meta: def validate_fields(self, data, **kwargs): """Validate proposal attachment per format.""" - def get_proposal_attach_by_id(attach_id): - """Return proposal attachment with input attachment identifier.""" + def get_attach_by_id(attach_id): + """Return attachment with input attachment identifier.""" for p in proposal_attach: if p.ident == attach_id: return p @@ -108,7 +108,7 @@ def get_proposal_attach_by_id(attach_id): raise ValidationError("Formats vs. proposal attachments length mismatch") for fmt in formats: - proposal_atch = get_proposal_attach_by_id(fmt.attach_id) + proposal_atch = get_attach_by_id(fmt.attach_id) V20PresFormat.Format.get(fmt.format).validate_proposal_attach( proposal_atch.indy_dict ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py new file mode 100644 index 0000000000..f5c942ca81 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py @@ -0,0 +1,99 @@ +"""A presentation request content message.""" + +from typing import Sequence + +from marshmallow import EXCLUDE, fields + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema +from .....messaging.decorators.attach_decorator import ( + AttachDecorator, + AttachDecoratorSchema, +) + +from ..message_types import PRES_20_REQUEST, PROTOCOL_PACKAGE + +from .pres_format import V20PresFormat, V20PresFormatSchema + +HANDLER_CLASS = ( + f"{PROTOCOL_PACKAGE}.handlers.pres_request_handler.V20PresRequestHandler" +) + + +class V20PresRequest(AgentMessage): + """Class representing a presentation request.""" + + class Meta: + """V20PresRequest metadata.""" + + handler_class = HANDLER_CLASS + schema_class = "V20PresRequestSchema" + message_type = PRES_20_REQUEST + + def __init__( + self, + _id: str = None, + *, + comment: str = None, + will_confirm: bool = None, + formats: Sequence[V20PresFormat], + request_presentations_attach: Sequence[AttachDecorator] = None, + **kwargs, + ): + """ + Initialize presentation request object. + + Args: + request_presentations_attach: proof request attachments + comment: optional comment + + """ + super().__init__(_id=_id, **kwargs) + self.comment = comment + self.will_confirm = will_confirm or False + self.formats = formats + self.request_presentations_attach = ( + list(request_presentations_attach) if request_presentations_attach else [] + ) + + + def attachment(self, fmt: V20PresFormat.Format = None) -> dict: + """ + Return attached presentation request item. + + Args: + fmt: format of attachment in list to decode and return + + """ + return (fmt or V20PresFormat.Format.INDY).get_attachment_data( + self.formats, + self.request_presentations_attach, + ) + + +class V20PresRequestSchema(AgentMessageSchema): + """Presentation request schema.""" + + class Meta: + """V20PresRequest schema metadata.""" + + model_class = V20PresRequest + unknown = EXCLUDE + + comment = fields.Str( + required=False, description="Human-readable comment" + ) + will_confirm = fields.Bool( + required=False, description="Whether verifier will send confirmation ack" + ) + formats = fields.Nested( + V20PresFormatSchema, + many=True, + required=True, + descrption="Acceptable attachment formats", + ) + request_presentations_attach = fields.Nested( + AttachDecoratorSchema, + data_key="request_presentations~attach", + required=True, + description="Attachment per acceptable format on corresponding identifier", + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py new file mode 100644 index 0000000000..1836632ed8 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py @@ -0,0 +1,99 @@ +from unittest import TestCase + +from marshmallow import ValidationError + +from ......messaging.decorators.attach_decorator import AttachDecorator + +from ..pres_format import V20PresFormat +from ....util.presentation_preview import PresentationPreview + + +S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" +CD_ID = f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID}:tag1" +PRES_PREVIEW = PresentationPreview( + attributes=[ + PresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), + PresAttrSpec( + name="screenCapture", + cred_def_id=CD_ID, + mime_type="image/png", + value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + ), + ], + predicates=[ + PresPredSpec( + name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 + ) + ], +) + + +class TestV20FormatFormat(TestCase): + """Coverage for self-get.""" + + def test_get_completeness(self): + assert ( + V20PresFormat.Format.get(V20PresFormat.Format.INDY) + is V20PresFormat.Format.INDY + ) + assert V20PresFormat.Format.get("no such format") is None + assert V20PresFormat.Format.get("Indy") is V20PresFormat.Format.INDY + assert V20PresFormat.Format.get("HL/INDY").aries == "hlindy-zkp-v1.0" + assert "indy" in V20PresFormat.Format.get("HL/INDY").aka + assert ( + V20PresFormat.Format.get("JSON-LD").aries + == "dif/presentation-exchange/definitions@v1.0" + ) + + def test_validate_proposal_attach_x(self): + with self.assertRaises(ValidationError) as context: + V20PresFormat.INDY.validate_proposal_attach( + data="not even close" + ) + assert "Invalid presentation proposal attachment" in str(context.exception) + + def test_get_attachment_data(self): + assert ( + V20PresFormat.Format.INDY.get_attachment_data( + formats=[ + V20PresFormat(attach_id="abc", format_=V20PresFormat.Format.INDY) + ], + attachments=[ + AttachDecorator.from_indy_dict( + PRES_PREVIEW.serialize(), + ident="abc", + ) + ], + ) + == PRES_PREVIEW + ) + + assert ( + V20PresFormat.Format.INDY.get_attachment_data( + formats=[ + V20PresFormat(attach_id="abc", format_=V20PresFormat.Format.INDY) + ], + attachments=[ + AttachDecorator.from_indy_dict( + PRES_PREVIEW.serialize(), + ident="xxx", + ) + ], + ) + is None + ) + + assert ( + V20PresFormat.Format.DIF.get_attachment_data( + formats=[ + V20PresFormat(attach_id="abc", format_=V20PresFormat.Format.INDY) + ], + attachments=[ + AttachDecorator.from_indy_dict( + PRES_PREVIEW.serialize(), + ident="abc", + ) + ], + ) + is None + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py index a84bd06b3d..8af61094db 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py @@ -41,8 +41,8 @@ class TestV20PresProposal(TestCase): """Presentation proposal tests.""" - def test_init_type(self): - """Test initializer and type.""" + def test_init_type_attachment(self): + """Test initializer, type, attachment.""" pres_proposal = V20PresProposal( comment="Hello World", formats=[ @@ -56,6 +56,10 @@ def test_init_type(self): ], ) assert pres_proposal._type == DIDCommPrefix.qualify_current(PRES_20_PROPOSAL) + assert ( + pres_proposal.attachment(V20PresFormat.Format.INDY) + == PRES_PREVIEW.serialize() + ) def test_serde(self): """Test de/serialization.""" @@ -72,8 +76,6 @@ def test_serde(self): ], ) pres_proposal_ser = pres_proposal.serialize() - print(f'\n>> pp {pres_proposal}') - print(f'>> pp-ser {pres_proposal_ser}') pres_proposal_deser = V20PresProposal.deserialize(pres_proposal_ser) assert type(pres_proposal_deser) == V20PresProposal From 10c493cf7317eb1aa14ebc334823f369d36aa348 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Wed, 10 Feb 2021 07:14:02 -0800 Subject: [PATCH 028/243] Add endorser support for credential definitions Signed-off-by: Ian Costanzo --- aries_cloudagent/ledger/base.py | 2 + aries_cloudagent/ledger/indy.py | 10 ++- .../credential_definitions/routes.py | 69 ++++------------- aries_cloudagent/messaging/schemas/routes.py | 75 +------------------ .../endorse_transaction/v1_0/manager.py | 28 +------ 5 files changed, 29 insertions(+), 155 deletions(-) diff --git a/aries_cloudagent/ledger/base.py b/aries_cloudagent/ledger/base.py index 0db233c1b6..ca32e3a2ba 100644 --- a/aries_cloudagent/ledger/base.py +++ b/aries_cloudagent/ledger/base.py @@ -197,6 +197,8 @@ async def create_and_send_credential_definition( signature_type: str = None, tag: str = None, support_revocation: bool = False, + write_ledger: bool = True, + endorser_did: str = None, ) -> Tuple[str, dict, bool]: """ Send credential definition to ledger and store relevant key matter in wallet. diff --git a/aries_cloudagent/ledger/indy.py b/aries_cloudagent/ledger/indy.py index 78d73ebfed..52d37c62d3 100644 --- a/aries_cloudagent/ledger/indy.py +++ b/aries_cloudagent/ledger/indy.py @@ -634,6 +634,8 @@ async def create_and_send_credential_definition( signature_type: str = None, tag: str = None, support_revocation: bool = False, + write_ledger: bool = True, + endorser_did: str = None, ) -> Tuple[str, dict, bool]: """ Send credential definition to ledger and store relevant key matter in wallet. @@ -727,7 +729,13 @@ async def create_and_send_credential_definition( request_json = await indy.ledger.build_cred_def_request( public_info.did, credential_definition_json ) - await self._submit(request_json, True, sign_did=public_info) + if endorser_did and not write_ledger: + request_json = await indy.ledger.append_request_endorser( + request_json, endorser_did + ) + resp = await self._submit(request_json, True, sign_did=public_info, write_ledger=write_ledger) + if not write_ledger: + return (credential_definition_id, {"signed_txn": resp}, novel) # Add non-secrets record storage = self.get_indy_storage() diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index 88ff508cb4..cf1a4bf831 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -124,12 +124,22 @@ class AutoEndorseOptionSchema(OpenAPISchema): ) +class EndorserDIDOptionSchema(OpenAPISchema): + """Class for user to input the DID associated with the requested endorser.""" + + endorser_did = fields.Str( + description="Endorser DID", + required=False, + ) + + @docs( tags=["credential-definition"], summary="Sends a credential definition to the ledger", ) @request_schema(CredentialDefinitionSendRequestSchema()) @querystring_schema(AutoEndorseOptionSchema()) +@querystring_schema(EndorserDIDOptionSchema()) @response_schema(CredentialDefinitionSendResultsSchema(), 200, description="") async def credential_definitions_send_credential_definition(request: web.BaseRequest): """ @@ -144,6 +154,7 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq """ context: AdminRequestContext = request["context"] auto_endorse = json.loads(request.query.get("auto_endorse", "true")) + endorser_did = request.query.get("endorser_did", None) body = await request.json() @@ -169,6 +180,8 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq signature_type=None, tag=tag, support_revocation=support_revocation, + write_ledger=auto_endorse, + endorser_did=endorser_did, ) ) @@ -234,67 +247,13 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq return web.json_response({"credential_definition_id": cred_def_id}) else: - transaction_message = await request.json() session = await context.session() - wallet: BaseWallet = session.inject(BaseWallet, required=False) - if not wallet: - raise web.HTTPForbidden(reason="No wallet available") - author_did_info = await wallet.get_public_did() - if not author_did_info: - raise web.HTTPForbidden( - reason="Transaction cannot be created as there is no Public DID in wallet" - ) - author_did = author_did_info.did - author_verkey = author_did_info.verkey - - ledger: BaseLedger = session.inject(BaseLedger, required=False) - - if not ledger: - reason = "No indy ledger available" - if not session.settings.get_value("wallet.type"): - reason += ": missing wallet-type?" - raise web.HTTPForbidden(reason=reason) - - async with ledger: - try: - taa_info = await ledger.get_txn_author_agreement() - accepted = None - if taa_info["taa_required"]: - accept_record = await ledger.get_latest_txn_author_acceptance() - if accept_record: - accepted = { - "mechanism": accept_record["mechanism"], - "time": accept_record["time"], - } - taa_info["taa_accepted"] = accepted - except LedgerError as err: - raise web.HTTPBadRequest(reason=err.roll_up) from err - - if taa_info["taa_accepted"] is not None: - mechanism = taa_info["taa_accepted"]["mechanism"] - time = taa_info["taa_accepted"]["time"] - else: - mechanism = None - time = None - - if taa_info["taa_record"] is not None: - taaDigest = taa_info["taa_record"]["digest"] - else: - taaDigest = None - transaction_mgr = TransactionManager(session) transaction = await transaction_mgr.create_record( - author_did=author_did, - author_verkey=author_verkey, - transaction_message=transaction_message, - transaction_type="102", - mechanism=mechanism, - taaDigest=taaDigest, - time=time, + messages_attach=cred_def["signed_txn"], expires_time="1597708800", - messages_attach={}, # TODO ) return web.json_response(transaction.serialize()) diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index 9a6020f5d6..1d36dca4af 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -114,6 +114,8 @@ class AutoEndorseOptionSchema(OpenAPISchema): class EndorserDIDOptionSchema(OpenAPISchema): + """Class for user to input the DID associated with the requested endorser.""" + endorser_did = fields.Str( description="Endorser DID", required=False, @@ -179,84 +181,11 @@ async def schemas_send_schema(request: web.BaseRequest): # ignore all parameters except the last one (which is the signed ledger transaction) transaction = await transaction_mgr.create_record( - author_did="", - author_verkey="", - transaction_message={}, - transaction_type="101", - mechanism="", - taaDigest={}, - time=0, - expires_time="1597708800", messages_attach=schema_def["signed_txn"], - ) - - return web.json_response(transaction.serialize()) - """ - else: - transaction_message = await request.json() - session = await context.session() - - wallet: BaseWallet = session.inject(BaseWallet, required=False) - if not wallet: - raise web.HTTPForbidden(reason="No wallet available") - author_did_info = await wallet.get_public_did() - if not author_did_info: - raise web.HTTPForbidden( - reason="Transaction cannot be created as there is no Public DID in wallet" - ) - author_did = author_did_info.did - author_verkey = author_did_info.verkey - - ledger: BaseLedger = session.inject(BaseLedger, required=False) - - if not ledger: - reason = "No indy ledger available" - if not session.settings.get_value("wallet.type"): - reason += ": missing wallet-type?" - raise web.HTTPForbidden(reason=reason) - - async with ledger: - try: - taa_info = await ledger.get_txn_author_agreement() - accepted = None - if taa_info["taa_required"]: - accept_record = await ledger.get_latest_txn_author_acceptance() - if accept_record: - accepted = { - "mechanism": accept_record["mechanism"], - "time": accept_record["time"], - } - taa_info["taa_accepted"] = accepted - except LedgerError as err: - raise web.HTTPBadRequest(reason=err.roll_up) from err - - if taa_info["taa_accepted"] is not None: - mechanism = taa_info["taa_accepted"]["mechanism"] - time = taa_info["taa_accepted"]["time"] - else: - mechanism = None - time = None - - if taa_info["taa_record"] is not None: - taaDigest = taa_info["taa_record"]["digest"] - else: - taaDigest = None - - transaction_mgr = TransactionManager(session) - - transaction = await transaction_mgr.create_record( - author_did=author_did, - author_verkey=author_verkey, - transaction_message=transaction_message, - transaction_type="101", - mechanism=mechanism, - taaDigest=taaDigest, - time=time, expires_time="1597708800", ) return web.json_response(transaction.serialize()) - """ @docs( diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index ad6f3908a0..44a3eb84d3 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -51,15 +51,8 @@ def session(self) -> ProfileSession: async def create_record( self, - author_did: str, - author_verkey: str, - transaction_message: dict, - transaction_type: str, - mechanism: str, - taaDigest: str, - time: int, - expires_time: str, messages_attach: str, + expires_time: str, ): """ Create a new Transaction Record. @@ -73,17 +66,6 @@ async def create_record( """ - """ - messages_attach = MessagesAttach( - author_did=author_did, - author_verkey=author_verkey, - transaction_message=transaction_message, - transaction_type=transaction_type, - mechanism=mechanism, - taaDigest=taaDigest, - time=time, - ) - """ messages_attach_dict = { "@id": str(uuid.uuid4()), "mime-type": "application/json", @@ -241,11 +223,6 @@ async def create_endorse_response( transaction.messages_attach[0]["data"]["json"] = endorsed_msg if signature: - # don't modify the transaction payload - # author_did = transaction.messages_attach[0]["data"]["json"]["identifier"] - # transaction.messages_attach[0]["data"]["json"]["signatures"][ - # author_did - # ] = signature signature_response = { "message_id": transaction.messages_attach[0]["@id"], "context": TransactionRecord.SIGNATURE_CONTEXT, @@ -284,8 +261,6 @@ async def create_endorse_response( return transaction, endorsed_transaction_response - # todo - implementing changes for writing final transaction to the ledger - # (For Sign Transaction Protocol) async def receive_endorse_response(self, response: EndorsedTransactionResponse): """ Update the transaction record with the endorsed response. @@ -308,6 +283,7 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): transaction.thread_id = response.thread_id + # the returned signature is actually the endorsed ledger transaction endorser_did = response.endorser_did transaction.messages_attach[0]["data"]["json"] = response.signature_response[ "signature" From 0aa2bdc363691c463c6dec0b3bfafc335f58a910 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Wed, 10 Feb 2021 20:09:34 -0800 Subject: [PATCH 029/243] Add wallet non-secrets records for schema and cred def added via endorser protocol Signed-off-by: Ian Costanzo --- aries_cloudagent/ledger/indy.py | 7 +- .../tests/test_routes.py | 12 --- .../endorse_transaction/v1_0/manager.py | 17 ++++ .../v1_0/models/transaction_record.py | 1 + .../endorse_transaction/v1_0/routes.py | 81 ++++++++++++++++++- 5 files changed, 103 insertions(+), 15 deletions(-) diff --git a/aries_cloudagent/ledger/indy.py b/aries_cloudagent/ledger/indy.py index 52d37c62d3..ed799a7fd7 100644 --- a/aries_cloudagent/ledger/indy.py +++ b/aries_cloudagent/ledger/indy.py @@ -500,6 +500,8 @@ async def create_and_send_schema( else: raise + # TODO refactor this code (duplicated in endorser transaction manager) + # Add non-secrets record schema_id_parts = schema_id.split(":") schema_tags = { "schema_id": schema_id, @@ -733,10 +735,13 @@ async def create_and_send_credential_definition( request_json = await indy.ledger.append_request_endorser( request_json, endorser_did ) - resp = await self._submit(request_json, True, sign_did=public_info, write_ledger=write_ledger) + resp = await self._submit( + request_json, True, sign_did=public_info, write_ledger=write_ledger + ) if not write_ledger: return (credential_definition_id, {"signed_txn": resp}, novel) + # TODO refactor this code (duplicated in endorser transaction manager) # Add non-secrets record storage = self.get_indy_storage() schema_id_parts = schema_id.split(":") diff --git a/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py b/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py index 410d355ed8..bc752b0148 100644 --- a/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py +++ b/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py @@ -144,16 +144,12 @@ async def test_send_credential_definition_revoc_no_support_x(self): "tag": "tag", } ) -<<<<<<< HEAD self.request.query = {"auto_endorse": "true"} - self.context.settings.set_value("tails_server_base_url", "http://1.2.3.4:8222") -======= self.context.profile.settings.set_value( "tails_server_base_url", "http://1.2.3.4:8222" ) ->>>>>>> upstream/main with async_mock.patch.object( test_module, "IndyRevocation", async_mock.MagicMock() @@ -176,16 +172,12 @@ async def test_send_credential_definition_revoc_upload_x(self): "tag": "tag", } ) -<<<<<<< HEAD self.request.query = {"auto_endorse": "true"} - self.context.settings.set_value("tails_server_base_url", "http://1.2.3.4:8222") -======= self.context.profile.settings.set_value( "tails_server_base_url", "http://1.2.3.4:8222" ) ->>>>>>> upstream/main mock_tails_server = async_mock.MagicMock( upload_tails_file=async_mock.CoroutineMock( @@ -221,16 +213,12 @@ async def test_send_credential_definition_revoc_init_issuer_rev_reg_x(self): "tag": "tag", } ) -<<<<<<< HEAD self.request.query = {"auto_endorse": "true"} - self.context.settings.set_value("tails_server_base_url", "http://1.2.3.4:8222") -======= self.context.profile.settings.set_value( "tails_server_base_url", "http://1.2.3.4:8222" ) ->>>>>>> upstream/main mock_tails_server = async_mock.MagicMock( upload_tails_file=async_mock.CoroutineMock(return_value=(True, None)) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 44a3eb84d3..7f32e810ec 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -294,6 +294,23 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): return transaction + async def complete_transaction(self, transaction: TransactionRecord): + """ + Complete a transaction (final state after the received ledger transaction is written to the ledger). + + Args: + transaction: The transaction record which would be completed + + Returns: + The updated transaction + """ + transaction.state = TransactionRecord.STATE_TRANSACTION_COMPLETED + profile_session = await self.session + async with profile_session.profile.session() as session: + await transaction.save(session, reason="Completed transaction") + + return transaction + async def create_refuse_response( self, transaction: TransactionRecord, state: str, refuser_did: str ): diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py index 28f8ea7b46..3e1e1cc0b0 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/models/transaction_record.py @@ -51,6 +51,7 @@ class Meta: STATE_TRANSACTION_RESENT = "transaction_resent" STATE_TRANSACTION_RESENT_RECEIEVED = "transaction_resent_received" STATE_TRANSACTION_CANCELLED = "transaction_cancelled" + STATE_TRANSACTION_COMPLETED = "transaction_completed" def __init__( self, diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 6325d4a7b8..9378cbadac 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -9,16 +9,20 @@ match_info_schema, ) from marshmallow import fields, validate +from time import time from ....admin.request_context import AdminRequestContext from .manager import TransactionManager from .models.transaction_record import TransactionRecord, TransactionRecordSchema from ....connections.models.conn_record import ConnRecord +from ....messaging.credential_definitions.util import CRED_DEF_SENT_RECORD_TYPE from ....messaging.models.openapi import OpenAPISchema +from ....messaging.schemas.util import SCHEMA_SENT_RECORD_TYPE from ....messaging.valid import UUIDFour from ....messaging.models.base import BaseModelError +from ....storage.base import StorageRecord from ....storage.error import StorageError, StorageNotFoundError from .transaction_jobs import TransactionJob @@ -621,13 +625,86 @@ async def transaction_write(request: web.BaseRequest): async with ledger: try: - ledger_response = await shield( + ledger_response_json = await shield( ledger.txn_submit(ledger_transaction, sign=False, taa_accept=False) ) except (IndyIssuerError, LedgerError) as err: raise web.HTTPBadRequest(reason=err.roll_up) from err - return web.json_response(json.loads(ledger_response)) + print("After writing to ledger:") + ledger_response = json.loads(ledger_response_json) + print("ledger_response:", ledger_response) + message_attach = json.loads(transaction.messages_attach[0]["data"]["json"]) + print("message_attach:", message_attach) + + # write the wallet non-secrets record + # TODO refactor this code (duplicated from ledger.indy.py) + print("ledger txn type:", ledger_response["result"]["txn"]["type"]) + if ledger_response["result"]["txn"]["type"] == "101": + # schema transaction + print("Adding schema record ...") + schema_id = ledger_response["result"]["txnMetadata"]["txnId"] + schema_id_parts = schema_id.split(":") + public_did = ledger_response["result"]["txn"]["metadata"]["from"] + schema_tags = { + "schema_id": schema_id, + "schema_issuer_did": public_did, + "schema_name": schema_id_parts[-2], + "schema_version": schema_id_parts[-1], + "epoch": str(int(time())), + } + record = StorageRecord(SCHEMA_SENT_RECORD_TYPE, schema_id, schema_tags) + print("Adding storage record:", record) + # TODO refactor this code? + async with ledger: + storage = ledger.get_indy_storage() + await storage.add_record(record) + print(">>> done") + + elif ledger_response["result"]["txn"]["type"] == "102": + # cred def transaction + print("Adding cred def record ...") + async with ledger: + try: + schema_seq_no = str(ledger_response["result"]["txn"]["data"]["ref"]) + schema_response = await shield(ledger.get_schema(schema_seq_no)) + except (IndyIssuerError, LedgerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + print("schema_response:", schema_response) + + schema_id = schema_response["id"] + schema_id_parts = schema_id.split(":") + public_did = ledger_response["result"]["txn"]["metadata"]["from"] + credential_definition_id = ledger_response["result"]["txnMetadata"]["txnId"] + cred_def_tags = { + "schema_id": schema_id, + "schema_issuer_did": schema_id_parts[0], + "schema_name": schema_id_parts[-2], + "schema_version": schema_id_parts[-1], + "issuer_did": public_did, + "cred_def_id": credential_definition_id, + "epoch": str(int(time())), + } + record = StorageRecord( + CRED_DEF_SENT_RECORD_TYPE, credential_definition_id, cred_def_tags + ) + print("Adding storage record:", record) + # TODO refactor this code? + async with ledger: + storage = ledger.get_indy_storage() + await storage.add_record(record) + print(">>> done") + + else: + # TODO unknown ledger transaction type, just ignore for now ... + pass + + # update the final transaction status + transaction_mgr = TransactionManager(session) + tx_completed = await transaction_mgr.complete_transaction(transaction=transaction) + + return web.json_response(tx_completed.__dict__) async def register(app: web.Application): From 706a4844f265e1ac3ac02c071a9afd87f668ca10 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Thu, 11 Feb 2021 06:57:05 -0800 Subject: [PATCH 030/243] Fix FLAKE8 test failures Signed-off-by: Ian Costanzo --- aries_cloudagent/ledger/base.py | 10 +++++++--- aries_cloudagent/ledger/indy.py | 8 ++------ .../messaging/credential_definitions/routes.py | 5 +---- aries_cloudagent/messaging/schemas/routes.py | 7 +++---- .../protocols/endorse_transaction/v1_0/manager.py | 11 ++++++++--- .../protocols/endorse_transaction/v1_0/routes.py | 10 +++------- 6 files changed, 24 insertions(+), 27 deletions(-) diff --git a/aries_cloudagent/ledger/base.py b/aries_cloudagent/ledger/base.py index ca32e3a2ba..8439dd38dd 100644 --- a/aries_cloudagent/ledger/base.py +++ b/aries_cloudagent/ledger/base.py @@ -13,6 +13,10 @@ from .endpoint_type import EndpointType +# TODO duplicated from ..wallet.base due to recursive import +DIDInfo = namedtuple("DIDInfo", "did verkey metadata") + + class BaseLedger(ABC, metaclass=ABCMeta): """Base class for ledger.""" @@ -138,7 +142,7 @@ async def txn_endorse( self, request_json: str, ) -> str: - """""" + """Endorse (sign) the provided transaction.""" @abstractmethod async def txn_submit( @@ -146,9 +150,9 @@ async def txn_submit( request_json: str, sign: bool, taa_accept: bool, - sign_did: namedtuple("DIDInfo", "did verkey metadata"), + sign_did: DIDInfo = sentinel, ) -> str: - """""" + """Write the provided (signed and possibly endorsed) transaction to the ledger.""" @abstractmethod async def create_and_send_schema( diff --git a/aries_cloudagent/ledger/indy.py b/aries_cloudagent/ledger/indy.py index ed799a7fd7..d332500ebb 100644 --- a/aries_cloudagent/ledger/indy.py +++ b/aries_cloudagent/ledger/indy.py @@ -391,9 +391,7 @@ async def txn_endorse( self, request_json: str, ) -> str: - """ - Endorse a (signed) ledger transaction. - """ + """Endorse a (signed) ledger transaction.""" return await self._endorse(request_json) async def txn_submit( @@ -403,9 +401,7 @@ async def txn_submit( taa_accept: bool = None, sign_did: DIDInfo = sentinel, ) -> str: - """ - Submit a signed (and endorsed) transaction to the ledger. - """ + """Submit a signed (and endorsed) transaction to the ledger.""" return await self._submit( request_json, sign=sign, taa_accept=taa_accept, sign_did=sign_did ) diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index cf1a4bf831..a262c97c91 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -10,6 +10,7 @@ request_schema, response_schema, ) +import json from marshmallow import fields @@ -30,8 +31,6 @@ from .util import CredDefQueryStringSchema, CRED_DEF_TAGS, CRED_DEF_SENT_RECORD_TYPE from ...protocols.endorse_transaction.v1_0.manager import TransactionManager -from ...wallet.base import BaseWallet -import json class CredentialDefinitionSendRequestSchema(OpenAPISchema): @@ -185,8 +184,6 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq ) ) - ## TODO if not auto_endorse deal with the response transaction - except LedgerError as e: raise web.HTTPBadRequest(reason=e.message) from e diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index 1d36dca4af..899f76868d 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -10,6 +10,7 @@ request_schema, response_schema, ) +import json from marshmallow import fields from marshmallow.validate import Regexp @@ -24,8 +25,6 @@ from .util import SchemaQueryStringSchema, SCHEMA_SENT_RECORD_TYPE, SCHEMA_TAGS from ...protocols.endorse_transaction.v1_0.manager import TransactionManager -from ...wallet.base import BaseWallet -import json class SchemaSendRequestSchema(OpenAPISchema): @@ -158,7 +157,8 @@ async def schemas_send_schema(request: web.BaseRequest): issuer = context.inject(IndyIssuer) async with ledger: try: - # if not auto_endorse, then the returned "schema_def" is actually the signed transaction + # if not auto_endorse, then the returned "schema_def" is actually + # the signed transaction schema_id, schema_def = await shield( ledger.create_and_send_schema( issuer, @@ -179,7 +179,6 @@ async def schemas_send_schema(request: web.BaseRequest): transaction_mgr = TransactionManager(session) - # ignore all parameters except the last one (which is the signed ledger transaction) transaction = await transaction_mgr.create_record( messages_attach=schema_def["signed_txn"], expires_time="1597708800", diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 7f32e810ec..55dacb7e25 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -11,7 +11,6 @@ from .messages.cancel_transaction import CancelTransaction from .messages.transaction_resend import TransactionResend from .messages.transaction_job_to_send import TransactionJobToSend -from .messages.messages_attach import MessagesAttach from ....connections.models.conn_record import ConnRecord from ....transport.inbound.receipt import MessageReceipt @@ -219,7 +218,8 @@ async def create_endorse_response( # don't modify the transaction payload? if endorsed_msg: - # update - need to return the endorsed msg or else the ledger will reject the eventual write + # need to return the endorsed msg or else the ledger will reject the + # eventual transaction write transaction.messages_attach[0]["data"]["json"] = endorsed_msg if signature: @@ -296,14 +296,19 @@ async def receive_endorse_response(self, response: EndorsedTransactionResponse): async def complete_transaction(self, transaction: TransactionRecord): """ - Complete a transaction (final state after the received ledger transaction is written to the ledger). + Complete a transaction. + + This is the final state after the received ledger transaction + is written to the ledger. Args: transaction: The transaction record which would be completed Returns: The updated transaction + """ + transaction.state = TransactionRecord.STATE_TRANSACTION_COMPLETED profile_session = await self.session async with profile_session.profile.session() as session: diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 9378cbadac..2c2a293c92 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -1,6 +1,6 @@ """Endorse Transaction handling admin routes.""" -from asyncio import shield, ensure_future +from asyncio import shield from aiohttp import web from aiohttp_apispec import ( docs, @@ -8,6 +8,7 @@ querystring_schema, match_info_schema, ) +import json from marshmallow import fields, validate from time import time @@ -16,6 +17,7 @@ from .models.transaction_record import TransactionRecord, TransactionRecordSchema from ....connections.models.conn_record import ConnRecord +from ....indy.issuer import IndyIssuerError from ....messaging.credential_definitions.util import CRED_DEF_SENT_RECORD_TYPE from ....messaging.models.openapi import OpenAPISchema from ....messaging.schemas.util import SCHEMA_SENT_RECORD_TYPE @@ -30,11 +32,6 @@ from ....ledger.base import BaseLedger from ....ledger.error import LedgerError -from ....indy.issuer import IndyIssuer, IndyIssuerError -from ....revocation.indy import IndyRevocation -from ....revocation.error import RevocationNotSupportedError, RevocationError -from ....tails.base import BaseTailsServer -import json class TransactionListSchema(OpenAPISchema): @@ -614,7 +611,6 @@ async def transaction_write(request: web.BaseRequest): ) ledger_transaction = transaction.messages_attach[0]["data"]["json"] - endorsed_signature = transaction.signature_response[0] ledger = context.inject(BaseLedger, required=False) if not ledger: From e62e0737af22502833c4d4eb824a80b68d314b38 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Thu, 11 Feb 2021 07:07:57 -0800 Subject: [PATCH 031/243] Fixed ledger test Signed-off-by: Ian Costanzo --- aries_cloudagent/ledger/tests/test_indy.py | 1 + 1 file changed, 1 insertion(+) diff --git a/aries_cloudagent/ledger/tests/test_indy.py b/aries_cloudagent/ledger/tests/test_indy.py index e99cd9d297..ebd680d4a1 100644 --- a/aries_cloudagent/ledger/tests/test_indy.py +++ b/aries_cloudagent/ledger/tests/test_indy.py @@ -524,6 +524,7 @@ async def test_send_schema( mock_build_schema_req.return_value, True, sign_did=mock_wallet.get_public_did.return_value, + write_ledger=True, ) assert schema_id == issuer.create_schema.return_value[0] From 48f469c7464013ba1cfc99f8a99c29baec3af4b5 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Sun, 14 Feb 2021 16:48:49 +0530 Subject: [PATCH 032/243] Fixed transaction refusing workflow Signed-off-by: Harsh Multani --- .../protocols/endorse_transaction/v1_0/manager.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 55dacb7e25..358d7efad5 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -340,12 +340,10 @@ async def create_refuse_response( f" in state: {transaction.state}" ) - transaction.messages_attach[0]["data"]["json"]["endorser"] = refuser_did - transaction._type = TransactionRecord.SIGNATURE_RESPONSE signature_response = { - "message_id": transaction.messages_attach[0]["data"]["json"]["_id"], + "message_id": transaction.messages_attach[0]["@id"], "context": TransactionRecord.SIGNATURE_CONTEXT, "method": TransactionRecord.ADD_SIGNATURE, "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, @@ -389,9 +387,6 @@ async def receive_refuse_response(self, response: RefusedTransactionResponse): transaction.signature_response.clear() transaction.signature_response.append(response.signature_response) transaction.thread_id = response.thread_id - transaction.messages_attach[0]["data"]["json"][ - "endorser" - ] = response.endorser_did async with profile_session.profile.session() as session: await transaction.save(session, reason="Received a refused response") From a2d642bf1783457abae8c8381e2d54e5329f7654 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Mon, 15 Feb 2021 20:35:29 +0530 Subject: [PATCH 033/243] Updated test cases for handlers in endorse_transaction folder Signed-off-by: Harsh Multani --- .../endorsed_transaction_response_handler.py | 4 ++ .../refused_transaction_response_handler.py | 4 ++ ...t_endorsed_transaction_response_handler.py | 65 +++++++++++------ ...st_refused_transaction_response_handler.py | 65 +++++++++++------ .../tests/test_transaction_cancel_handler.py | 72 ++++++++++++------- .../test_transaction_job_to_send_handler.py | 72 +++++++++++-------- .../tests/test_transaction_request_handler.py | 66 ++++++++++------- .../tests/test_transaction_resend_handler.py | 72 ++++++++++++------- .../handlers/transaction_cancel_handler.py | 4 ++ .../transaction_job_to_send_handler.py | 4 ++ .../handlers/transaction_request_handler.py | 4 ++ .../handlers/transaction_resend_handler.py | 4 ++ 12 files changed, 283 insertions(+), 153 deletions(-) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py index d3d7b810e0..83674f20ad 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/endorsed_transaction_response_handler.py @@ -3,6 +3,7 @@ from .....messaging.base_handler import ( BaseHandler, BaseResponder, + HandlerException, RequestContext, ) @@ -27,6 +28,9 @@ async def handle(self, context: RequestContext, responder: BaseResponder): ) assert isinstance(context.message, EndorsedTransactionResponse) + if not context.connection_ready: + raise HandlerException("No connection established") + profile_session = await context.session() mgr = TransactionManager(profile_session) try: diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py index e19d876e03..24831ab2fe 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/refused_transaction_response_handler.py @@ -3,6 +3,7 @@ from .....messaging.base_handler import ( BaseHandler, BaseResponder, + HandlerException, RequestContext, ) @@ -27,6 +28,9 @@ async def handle(self, context: RequestContext, responder: BaseResponder): ) assert isinstance(context.message, RefusedTransactionResponse) + if not context.connection_ready: + raise HandlerException("No connection established") + profile_session = await context.session() mgr = TransactionManager(profile_session) try: diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py index 53c50d5162..83f3814625 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py @@ -1,34 +1,55 @@ -import pytest -from asynctest import mock as async_mock +from asynctest import ( + mock as async_mock, + TestCase as AsyncTestCase, +) from ......messaging.request_context import RequestContext -from ......core.profile import Profile from ......messaging.responder import MockResponder +from ......transport.inbound.receipt import MessageReceipt from ...handlers import endorsed_transaction_response_handler as handler from ...messages.endorsed_transaction_response import EndorsedTransactionResponse -@pytest.fixture() -async def request_context() -> RequestContext: - ctx = RequestContext.test_context() - yield ctx +class TestEndorsedTransactionResponseHandler(AsyncTestCase): + async def test_called(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_endorse_response = ( + async_mock.CoroutineMock() + ) + request_context.message = EndorsedTransactionResponse() + request_context.connection_ready = True + handler_inst = handler.EndorsedTransactionResponseHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) - -@pytest.fixture() -async def profile(request_context) -> Profile: - yield await request_context.profile - - -class TestEndorsedTransactionResponseHandler: - @pytest.mark.asyncio - @async_mock.patch.object(handler, "TransactionManager") - async def test_called(self, mock_tran_mgr, request_context): - mock_tran_mgr.return_value.receive_endorse_response = async_mock.CoroutineMock() - request_context.message = EndorsedTransactionResponse() - handler_inst = handler.EndorsedTransactionResponseHandler() - responder = MockResponder() - await handler_inst.handle(request_context, responder) mock_tran_mgr.return_value.receive_endorse_response.assert_called_once_with( request_context.message ) + assert not responder.messages + + async def test_called_not_ready(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_endorse_response = ( + async_mock.CoroutineMock() + ) + request_context.message = EndorsedTransactionResponse() + request_context.connection_ready = False + handler_inst = handler.EndorsedTransactionResponseHandler() + responder = MockResponder() + with self.assertRaises(handler.HandlerException): + await handler_inst.handle(request_context, responder) + + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py index eda84d0b8b..1fde23309e 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py @@ -1,34 +1,55 @@ -import pytest -from asynctest import mock as async_mock +from asynctest import ( + mock as async_mock, + TestCase as AsyncTestCase, +) from ......messaging.request_context import RequestContext -from ......core.profile import Profile from ......messaging.responder import MockResponder +from ......transport.inbound.receipt import MessageReceipt from ...handlers import refused_transaction_response_handler as handler from ...messages.refused_transaction_response import RefusedTransactionResponse -@pytest.fixture() -async def request_context() -> RequestContext: - ctx = RequestContext.test_context() - yield ctx +class TestRefusedTransactionResponseHandler(AsyncTestCase): + async def test_called(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_refuse_response = ( + async_mock.CoroutineMock() + ) + request_context.message = RefusedTransactionResponse() + request_context.connection_ready = True + handler_inst = handler.RefusedTransactionResponseHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) - -@pytest.fixture() -async def profile(request_context) -> Profile: - yield await request_context.profile - - -class TestRefusedTransactionResponseHandler: - @pytest.mark.asyncio - @async_mock.patch.object(handler, "TransactionManager") - async def test_called(self, mock_tran_mgr, request_context): - mock_tran_mgr.return_value.receive_refuse_response = async_mock.CoroutineMock() - request_context.message = RefusedTransactionResponse() - handler_inst = handler.RefusedTransactionResponseHandler() - responder = MockResponder() - await handler_inst.handle(request_context, responder) mock_tran_mgr.return_value.receive_refuse_response.assert_called_once_with( request_context.message ) + assert not responder.messages + + async def test_called_not_ready(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_refuse_response = ( + async_mock.CoroutineMock() + ) + request_context.message = RefusedTransactionResponse() + request_context.connection_ready = False + handler_inst = handler.RefusedTransactionResponseHandler() + responder = MockResponder() + with self.assertRaises(handler.HandlerException): + await handler_inst.handle(request_context, responder) + + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py index 419e9c6be0..1a76e7d6f7 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py @@ -1,40 +1,58 @@ -import pytest -from asynctest import mock as async_mock +from asynctest import ( + mock as async_mock, + TestCase as AsyncTestCase, +) from ......messaging.request_context import RequestContext -from ......core.profile import Profile from ......messaging.responder import MockResponder +from ......transport.inbound.receipt import MessageReceipt from ...handlers import transaction_cancel_handler as handler from ...messages.cancel_transaction import CancelTransaction from ......connections.models.conn_record import ConnRecord -@pytest.fixture() -async def request_context() -> RequestContext: - ctx = RequestContext.test_context() - yield ctx +class TestTransactionCancelHandler(AsyncTestCase): + async def test_called(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_cancel_transaction = ( + async_mock.CoroutineMock() + ) + request_context.message = CancelTransaction() + request_context.connection_record = ConnRecord( + connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" + ) + request_context.connection_ready = True + handler_inst = handler.TransactionCancelHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) - -@pytest.fixture() -async def profile(request_context) -> Profile: - yield await request_context.profile - - -class TestTransactionCancelHandler: - @pytest.mark.asyncio - @async_mock.patch.object(handler, "TransactionManager") - async def test_called(self, mock_tran_mgr, request_context): - mock_tran_mgr.return_value.receive_cancel_transaction = ( - async_mock.CoroutineMock() - ) - request_context.message = CancelTransaction() - request_context.connection_record = ConnRecord( - connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" - ) - handler_inst = handler.TransactionCancelHandler() - responder = MockResponder() - await handler_inst.handle(request_context, responder) mock_tran_mgr.return_value.receive_cancel_transaction.assert_called_once_with( request_context.message, request_context.connection_record.connection_id ) + assert not responder.messages + + async def test_called_not_ready(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_cancel_transaction = ( + async_mock.CoroutineMock() + ) + request_context.message = CancelTransaction() + request_context.connection_ready = False + handler_inst = handler.TransactionCancelHandler() + responder = MockResponder() + with self.assertRaises(handler.HandlerException): + await handler_inst.handle(request_context, responder) + + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py index e1c6925c3a..096d5b3c22 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py @@ -1,8 +1,9 @@ -import pytest -from asynctest import mock as async_mock +from asynctest import ( + mock as async_mock, + TestCase as AsyncTestCase, +) from ......messaging.request_context import RequestContext -from ......core.profile import Profile, ProfileSession from ......messaging.responder import MockResponder from ......transport.inbound.receipt import MessageReceipt @@ -10,34 +11,45 @@ from ...messages.transaction_job_to_send import TransactionJobToSend -@pytest.fixture() -async def request_context() -> RequestContext: - ctx = RequestContext.test_context() - ctx.message_receipt = MessageReceipt() - yield ctx +class TestTransactionJobToSendHandler(AsyncTestCase): + async def test_called(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.set_transaction_their_job = ( + async_mock.CoroutineMock() + ) + request_context.message = TransactionJobToSend() + request_context.connection_ready = True + handler_inst = handler.TransactionJobToSendHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) - -@pytest.fixture() -async def session(request_context) -> ProfileSession: - yield await request_context.session() - - -@pytest.fixture() -async def profile(request_context) -> Profile: - yield await request_context.profile - - -class TestTransactionJobToSendHandler: - @pytest.mark.asyncio - @async_mock.patch.object(handler, "TransactionManager") - async def test_called(self, mock_tran_mgr, request_context): - mock_tran_mgr.return_value.set_transaction_their_job = ( - async_mock.CoroutineMock() - ) - request_context.message = TransactionJobToSend() - handler_inst = handler.TransactionJobToSendHandler() - responder = MockResponder() - await handler_inst.handle(request_context, responder) mock_tran_mgr.return_value.set_transaction_their_job.assert_called_once_with( request_context.message, request_context.message_receipt ) + assert not responder.messages + + async def test_called_not_ready(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.set_transaction_their_job = ( + async_mock.CoroutineMock() + ) + request_context.message = TransactionJobToSend() + request_context.connection_ready = False + handler_inst = handler.TransactionJobToSendHandler() + responder = MockResponder() + with self.assertRaises(handler.HandlerException): + await handler_inst.handle(request_context, responder) + + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py index 1eaec5b2d7..2a4c5c636c 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py @@ -1,38 +1,54 @@ -import pytest -from asynctest import mock as async_mock +from asynctest import ( + mock as async_mock, + TestCase as AsyncTestCase, +) from ......messaging.request_context import RequestContext -from ......core.profile import Profile from ......messaging.responder import MockResponder +from ......transport.inbound.receipt import MessageReceipt from ...handlers import transaction_request_handler as handler from ...messages.transaction_request import TransactionRequest from ......connections.models.conn_record import ConnRecord -@pytest.fixture() -async def request_context() -> RequestContext: - ctx = RequestContext.test_context() - yield ctx +class TestTransactionRequestHandler(AsyncTestCase): + async def test_called(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_request = async_mock.CoroutineMock() + request_context.message = TransactionRequest() + request_context.connection_record = ConnRecord( + connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" + ) + request_context.connection_ready = True + handler_inst = handler.TransactionRequestHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) - -@pytest.fixture() -async def profile(request_context) -> Profile: - yield await request_context.profile - - -class TestTransactionRequestHandler: - @pytest.mark.asyncio - @async_mock.patch.object(handler, "TransactionManager") - async def test_called(self, mock_tran_mgr, request_context): - mock_tran_mgr.return_value.receive_request = async_mock.CoroutineMock() - request_context.message = TransactionRequest() - request_context.connection_record = ConnRecord( - connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" - ) - handler_inst = handler.TransactionRequestHandler() - responder = MockResponder() - await handler_inst.handle(request_context, responder) mock_tran_mgr.return_value.receive_request.assert_called_once_with( request_context.message, request_context.connection_record.connection_id ) + assert not responder.messages + + async def test_called_not_ready(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_request = async_mock.CoroutineMock() + request_context.message = TransactionRequest() + request_context.connection_ready = False + handler_inst = handler.TransactionRequestHandler() + responder = MockResponder() + with self.assertRaises(handler.HandlerException): + await handler_inst.handle(request_context, responder) + + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py index 95a57a2a27..b91f613de4 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py @@ -1,40 +1,58 @@ -import pytest -from asynctest import mock as async_mock +from asynctest import ( + mock as async_mock, + TestCase as AsyncTestCase, +) from ......messaging.request_context import RequestContext -from ......core.profile import Profile from ......messaging.responder import MockResponder +from ......transport.inbound.receipt import MessageReceipt from ...handlers import transaction_resend_handler as handler from ...messages.transaction_resend import TransactionResend from ......connections.models.conn_record import ConnRecord -@pytest.fixture() -async def request_context() -> RequestContext: - ctx = RequestContext.test_context() - yield ctx +class TestTransactionResendHandler(AsyncTestCase): + async def test_called(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_transaction_resend = ( + async_mock.CoroutineMock() + ) + request_context.message = TransactionResend() + request_context.connection_record = ConnRecord( + connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" + ) + request_context.connection_ready = True + handler_inst = handler.TransactionResendHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) - -@pytest.fixture() -async def profile(request_context) -> Profile: - yield await request_context.profile - - -class TestTransactionResendHandler: - @pytest.mark.asyncio - @async_mock.patch.object(handler, "TransactionManager") - async def test_called(self, mock_tran_mgr, request_context): - mock_tran_mgr.return_value.receive_transaction_resend = ( - async_mock.CoroutineMock() - ) - request_context.message = TransactionResend() - request_context.connection_record = ConnRecord( - connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" - ) - handler_inst = handler.TransactionResendHandler() - responder = MockResponder() - await handler_inst.handle(request_context, responder) mock_tran_mgr.return_value.receive_transaction_resend.assert_called_once_with( request_context.message, request_context.connection_record.connection_id ) + assert not responder.messages + + async def test_called_not_ready(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + handler, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_transaction_resend = ( + async_mock.CoroutineMock() + ) + request_context.message = TransactionResend() + request_context.connection_ready = False + handler_inst = handler.TransactionResendHandler() + responder = MockResponder() + with self.assertRaises(handler.HandlerException): + await handler_inst.handle(request_context, responder) + + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py index 9f20798958..a9fcd88ffa 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_cancel_handler.py @@ -3,6 +3,7 @@ from .....messaging.base_handler import ( BaseHandler, BaseResponder, + HandlerException, RequestContext, ) @@ -25,6 +26,9 @@ async def handle(self, context: RequestContext, responder: BaseResponder): self._logger.debug(f"TransactionCancelHandler called with context {context}") assert isinstance(context.message, CancelTransaction) + if not context.connection_ready: + raise HandlerException("No connection established") + profile_session = await context.session() mgr = TransactionManager(profile_session) try: diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py index 6ec346276f..869338f00d 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_job_to_send_handler.py @@ -3,6 +3,7 @@ from .....messaging.base_handler import ( BaseHandler, BaseResponder, + HandlerException, RequestContext, ) @@ -25,6 +26,9 @@ async def handle(self, context: RequestContext, responder: BaseResponder): self._logger.debug(f"TransactionJobToSendHandler called with context {context}") assert isinstance(context.message, TransactionJobToSend) + if not context.connection_ready: + raise HandlerException("No connection established") + profile_session = await context.session() mgr = TransactionManager(profile_session) try: diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py index 1630d6dc4b..bd09e42e0a 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_request_handler.py @@ -3,6 +3,7 @@ from .....messaging.base_handler import ( BaseHandler, BaseResponder, + HandlerException, RequestContext, ) @@ -25,6 +26,9 @@ async def handle(self, context: RequestContext, responder: BaseResponder): self._logger.debug(f"TransactionRequestHandler called with context {context}") assert isinstance(context.message, TransactionRequest) + if not context.connection_ready: + raise HandlerException("No connection established") + profile_session = await context.session() mgr = TransactionManager(profile_session) try: diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py index 1113dc5bcd..327943dfb1 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/transaction_resend_handler.py @@ -3,6 +3,7 @@ from .....messaging.base_handler import ( BaseHandler, BaseResponder, + HandlerException, RequestContext, ) @@ -25,6 +26,9 @@ async def handle(self, context: RequestContext, responder: BaseResponder): self._logger.debug(f"TransactionResendHandler called with context {context}") assert isinstance(context.message, TransactionResend) + if not context.connection_ready: + raise HandlerException("No connection established") + profile_session = await context.session() mgr = TransactionManager(profile_session) try: From 45135ff1074f7a7467932b3bcdbb6302499a79e2 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Mon, 15 Feb 2021 09:29:03 -0800 Subject: [PATCH 034/243] W.I.P. integration test framework using behave and demo framework Signed-off-by: Ian Costanzo --- demo/bdd_support/agent_backchannel_client.py | 104 ++++ demo/bdd_support/agent_test_utils.py | 53 ++ demo/behave.ini | 14 + demo/features/0036-issue-credential.feature | 19 + demo/features/0160-connection.feature | 21 + ...red_data_schema_biological_indicators.json | 56 ++ .../data/cred_data_schema_driverslicense.json | 71 +++ ...cred_data_schema_driverslicense_revoc.json | 48 ++ .../data/cred_data_schema_health_consent.json | 29 + ...cred_data_schema_health_consent_revoc.json | 56 ++ .../data/cred_data_schema_health_id.json | 64 +++ .../data/presentation_DL_address.json | 12 + .../data/presentation_DL_age_over_19.json | 19 + .../presentation_DL_incorrect_address.json | 11 + .../data/presentation_DL_revoc_address.json | 12 + .../presentation_DL_revoc_address_w_ts.json | 13 + .../data/presentation_Health_ID_Num.json | 12 + .../presentation_biological_indicator_a.json | 19 + .../data/presentation_health_consent.json | 19 + ...sentation_health_consent_revoc_expiry.json | 14 + .../data/proof_request_DL_address.json | 16 + .../data/proof_request_DL_age_over_19.json | 29 + .../data/proof_request_DL_revoc_address.json | 16 + .../data/proof_request_Health_ID_Num.json | 16 + .../proof_request_biological_indicator_a.json | 30 ++ ...of_request_biological_indicator_a_2.0.json | 32 ++ .../data/proof_request_health_consent.json | 33 ++ ...f_request_health_consent_revoc_expiry.json | 18 + demo/features/data/proposal_DL_address.json | 11 + .../data/proposal_DL_age_over_19.json | 11 + .../features/data/proposal_Health_ID_Num.json | 11 + .../data/schema_biological_indicators.json | 14 + demo/features/data/schema_driverslicense.json | 13 + .../data/schema_driverslicense_revoc.json | 13 + demo/features/data/schema_health_consent.json | 14 + .../data/schema_health_consent_revoc.json | 14 + demo/features/data/schema_health_id.json | 15 + demo/features/environment.py | 32 ++ demo/features/steps/0036-issue-credential.py | 376 +++++++++++++ demo/features/steps/0160-connection.py | 453 ++++++++++++++++ demo/features/steps/test.py | 17 + demo/features/test.feature | 10 + demo/requirements.behave.txt | 2 + demo/run_bdd | 230 ++++++++ demo/runners/agent_container.py | 498 ++++++++++++++++++ demo/runners/support/agent.py | 1 + docker/Dockerfile.bdd | 6 + 47 files changed, 2597 insertions(+) create mode 100644 demo/bdd_support/agent_backchannel_client.py create mode 100644 demo/bdd_support/agent_test_utils.py create mode 100644 demo/behave.ini create mode 100644 demo/features/0036-issue-credential.feature create mode 100644 demo/features/0160-connection.feature create mode 100644 demo/features/data/cred_data_schema_biological_indicators.json create mode 100644 demo/features/data/cred_data_schema_driverslicense.json create mode 100644 demo/features/data/cred_data_schema_driverslicense_revoc.json create mode 100644 demo/features/data/cred_data_schema_health_consent.json create mode 100644 demo/features/data/cred_data_schema_health_consent_revoc.json create mode 100644 demo/features/data/cred_data_schema_health_id.json create mode 100644 demo/features/data/presentation_DL_address.json create mode 100644 demo/features/data/presentation_DL_age_over_19.json create mode 100644 demo/features/data/presentation_DL_incorrect_address.json create mode 100644 demo/features/data/presentation_DL_revoc_address.json create mode 100644 demo/features/data/presentation_DL_revoc_address_w_ts.json create mode 100644 demo/features/data/presentation_Health_ID_Num.json create mode 100644 demo/features/data/presentation_biological_indicator_a.json create mode 100644 demo/features/data/presentation_health_consent.json create mode 100644 demo/features/data/presentation_health_consent_revoc_expiry.json create mode 100644 demo/features/data/proof_request_DL_address.json create mode 100644 demo/features/data/proof_request_DL_age_over_19.json create mode 100644 demo/features/data/proof_request_DL_revoc_address.json create mode 100644 demo/features/data/proof_request_Health_ID_Num.json create mode 100644 demo/features/data/proof_request_biological_indicator_a.json create mode 100644 demo/features/data/proof_request_biological_indicator_a_2.0.json create mode 100644 demo/features/data/proof_request_health_consent.json create mode 100644 demo/features/data/proof_request_health_consent_revoc_expiry.json create mode 100644 demo/features/data/proposal_DL_address.json create mode 100644 demo/features/data/proposal_DL_age_over_19.json create mode 100644 demo/features/data/proposal_Health_ID_Num.json create mode 100644 demo/features/data/schema_biological_indicators.json create mode 100644 demo/features/data/schema_driverslicense.json create mode 100644 demo/features/data/schema_driverslicense_revoc.json create mode 100644 demo/features/data/schema_health_consent.json create mode 100644 demo/features/data/schema_health_consent_revoc.json create mode 100644 demo/features/data/schema_health_id.json create mode 100644 demo/features/environment.py create mode 100644 demo/features/steps/0036-issue-credential.py create mode 100644 demo/features/steps/0160-connection.py create mode 100644 demo/features/steps/test.py create mode 100644 demo/features/test.feature create mode 100644 demo/requirements.behave.txt create mode 100755 demo/run_bdd create mode 100644 demo/runners/agent_container.py create mode 100644 docker/Dockerfile.bdd diff --git a/demo/bdd_support/agent_backchannel_client.py b/demo/bdd_support/agent_backchannel_client.py new file mode 100644 index 0000000000..cc1cd78dfe --- /dev/null +++ b/demo/bdd_support/agent_backchannel_client.py @@ -0,0 +1,104 @@ +import asyncio +from aiohttp import ( + web, + ClientSession, + ClientRequest, + ClientResponse, + ClientError, + ClientTimeout, +) +import json +from time import sleep + + +###################################################################### +# coroutine utilities +###################################################################### + +def run_coroutine(coroutine): + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + return loop.run_until_complete(coroutine()) + finally: + loop.close() + +def run_coroutine_with_args(coroutine, *args): + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + return loop.run_until_complete(coroutine(*args)) + finally: + loop.close() + +def run_coroutine_with_kwargs(coroutine, *args, **kwargs): + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + return loop.run_until_complete(coroutine(*args, **kwargs)) + finally: + loop.close() + + +async def make_agent_backchannel_request( + method, path, data=None, text=False, params=None +) -> (int, str): + params = {k: v for (k, v) in (params or {}).items() if v is not None} + client_session: ClientSession = ClientSession() + async with client_session.request( + method, path, json=data, params=params + ) as resp: + resp_status = resp.status + resp_text = await resp.text() + await client_session.close() + return (resp_status, resp_text) + + +def agent_backchannel_GET(url, topic, operation=None, id=None) -> (int, str): + agent_url = url + topic + "/" + if operation: + agent_url = agent_url + operation + "/" + if id: + agent_url = agent_url + id + (resp_status, resp_text) = run_coroutine_with_kwargs(make_agent_backchannel_request, "GET", agent_url) + return (resp_status, resp_text) + + +def agent_backchannel_POST(url, topic, operation=None, id=None, data=None) -> (int, str): + agent_url = url + topic + "/" + payload = {} + if data: + payload["data"] = data + if operation: + agent_url = agent_url + operation + "/" + if id: + if topic == 'credential': + payload["cred_ex_id"] = id + else: + payload["id"] = id + (resp_status, resp_text) = run_coroutine_with_kwargs(make_agent_backchannel_request, "POST", agent_url, data=payload) + return (resp_status, resp_text) + +def agent_backchannel_DELETE(url, topic, id=None, data=None) -> (int, str): + agent_url = url + topic + "/" + if id: + agent_url = agent_url + id + (resp_status, resp_text) = run_coroutine_with_kwargs(make_agent_backchannel_request, "DELETE", agent_url) + return (resp_status, resp_text) + +def expected_agent_state(agent_url, protocol_txt, thread_id, status_txt): + sleep(0.2) + state = "None" + if type(status_txt) != list: + status_txt = [status_txt] + for i in range(5): + (resp_status, resp_text) = agent_backchannel_GET(agent_url + "/agent/command/", protocol_txt, id=thread_id) + if resp_status == 200: + resp_json = json.loads(resp_text) + state = resp_json["state"] + if state in status_txt: + return True + sleep(0.2) + + print("From", agent_url, "Expected state", status_txt, "but received", state, ", with a response status of", resp_status) + return False diff --git a/demo/bdd_support/agent_test_utils.py b/demo/bdd_support/agent_test_utils.py new file mode 100644 index 0000000000..66a3ff7bb5 --- /dev/null +++ b/demo/bdd_support/agent_test_utils.py @@ -0,0 +1,53 @@ +import time + +def create_non_revoke_interval(timeframe): + # timeframe containes two variables, the To and from of the non-revoked to and from parameters in the send presentation request message + # The to and from timeframe variables are always relative to now. + # The to and from time is represented as a total number of seconds from Unix Epoch + # Deconstruct the timeframe and add it to the context to be used in the request later. + # putting timefrom here where the revoke happens just in case it is needed. It may not and could be removed from here and added to the request step. + # + # Timeframe examples: + # -86400:+86400 + # now:now + # -86400:0 + # :now (openended from) + # now: (openended to) + + timeframe_list = timeframe.split(":") + from_reference = timeframe_list[0] + to_reference = timeframe_list[1] + + if (from_reference == 'now') or (from_reference == ''): + if from_reference == 'now': from_interval = int(time.time()) + if from_reference == '': from_interval = None + #from_interval = from_reference + else: + from_interval = int(from_reference) + int(time.time()) + + if (to_reference == 'now') or (to_reference == ''): + if to_reference == 'now': to_reference = int(time.time()) + to_interval = to_reference + else: + to_interval = int(to_reference) + int(time.time()) + + return { + "non_revoked": { + "from": from_interval, + "to": to_interval + } + } + +def get_relative_timestamp_to_epoch(timestamp): + # timestamps are always relative to now. + or - is represented in seconds from Unix Epoch. + # Valid timestsamps are + # now + # +###### ie +86400 + # -###### ie -86400 + + if (timestamp == 'now'): + epoch_time = int(time.time()) + else: + epoch_time = int(timestamp) + int(time.time()) + + return epoch_time diff --git a/demo/behave.ini b/demo/behave.ini new file mode 100644 index 0000000000..3bbc76d6b9 --- /dev/null +++ b/demo/behave.ini @@ -0,0 +1,14 @@ +# -- FILE: behave.ini +[behave] +#include_re=0160-connection.feature +#include_re=0011-0183-revocation.feature +#junit = false +#junit_directory = ./reports +format=json.pretty +no_skipped=true +#logging_level = INFO + +[behave.userdata] +# these should be set dynamically, when running under Docker +#Acme = http://localhost:8020 +#Bob = http://localhost:8070 diff --git a/demo/features/0036-issue-credential.feature b/demo/features/0036-issue-credential.feature new file mode 100644 index 0000000000..bd1679cdf1 --- /dev/null +++ b/demo/features/0036-issue-credential.feature @@ -0,0 +1,19 @@ +Feature: RFC 0036 Aries agent issue credential + + Background: create a schema and credential definition in order to issue a credential + Given "Acme" has a public did + And "Acme" is ready to issue a credential + + @T001-AIP10-RFC0036 @AcceptanceTest @P1 @critical @Indy @RFC0036 + Scenario: Issue a credential with the Holder beginning with a proposal + Given "2" agents + | name | role | + | Acme | issuer | + | Bob | holder | + And "Acme" and "Bob" have an existing connection + When "Bob" proposes a credential to "Acme" + And "Acme" offers a credential + And "Bob" requests the credential + And "Acme" issues the credential + And "Bob" acknowledges the credential issue + Then "Bob" has the credential issued diff --git a/demo/features/0160-connection.feature b/demo/features/0160-connection.feature new file mode 100644 index 0000000000..843ad3da36 --- /dev/null +++ b/demo/features/0160-connection.feature @@ -0,0 +1,21 @@ +Feature: RFC 0160 Aries agent connection functions + + @T001-AIP10-RFC0160 @P1 @critical @AcceptanceTest @RFC0160 + Scenario Outline: establish a connection between two agents + Given we have "2" agents + | name | role | capabilities | + | Acme | inviter | | + | Bob | invitee | | + When "Acme" generates a connection invitation + And "Bob" receives the connection invitation + And "Bob" sends a connection request to "Acme" + And "Acme" receives the connection request + And "Acme" sends a connection response to "Bob" + And "Bob" receives the connection response + And "Bob" sends to "Acme" + Then "Acme" and "Bob" have a connection + + Examples: + | message | Acme_capabilities | Bob_capabilities | + | trustping | | | + | trustping | --mediation | --mediation | diff --git a/demo/features/data/cred_data_schema_biological_indicators.json b/demo/features/data/cred_data_schema_biological_indicators.json new file mode 100644 index 0000000000..ac35fd94b1 --- /dev/null +++ b/demo/features/data/cred_data_schema_biological_indicators.json @@ -0,0 +1,56 @@ +{ + "Data_BI_NormalizedValues":{ + "cred_name":"Data_BiologicalIndicators_NormalizedValues", + "schema_name":"Schema_Biological_Indicators", + "schema_version":"0.2.0", + "attributes":[ + { + "name":"name", + "value":"Bio Indicator A" + }, + { + "name":"range", + "value":"99" + }, + { + "name":"concentration", + "value":"10" + }, + { + "name":"unit", + "value":"x" + }, + { + "name":"collected_on", + "value":"04/02/2020" + } + ] + }, + "Data_BI_HealthValues":{ + "cred_name":"Data_BiologicalIndicators_HealthValues", + "schema_name":"Schema_Biological_Indicators", + "schema_version":"0.2.0", + "attributes":[ + { + "name":"name", + "value":"Bio Indicator A" + }, + { + "name":"range", + "value":"99" + }, + { + "name":"concentration", + "value":"10" + }, + { + "name":"unit", + "value":"x" + }, + { + "name":"collected_on", + "value":"04/02/2020" + } + ] + } +} \ No newline at end of file diff --git a/demo/features/data/cred_data_schema_driverslicense.json b/demo/features/data/cred_data_schema_driverslicense.json new file mode 100644 index 0000000000..cc9dd605ca --- /dev/null +++ b/demo/features/data/cred_data_schema_driverslicense.json @@ -0,0 +1,71 @@ +{ + "Data_DL_MaxValues":{ + "cred_name":"Data_DriversLicense_MaxValues", + "schema_name":"Schema_DriversLicense", + "schema_version":"1.0.1", + "attributes":[ + { + "name":"address", + "value":"947 this street, Kingston Ontario Canada, K9O 3R5" + }, + { + "name":"DL_number", + "value":"09385029529385" + }, + { + "name":"expiry", + "value":"10/12/2022" + }, + { + "name":"age", + "value":"30" + } + ] + }, + "Data_HealthID_NormalizedValues":{ + "cred_name":"Data_HealthID_NormalizedValues", + "schema_name":"Schema_DriversLicense", + "schema_version":"1.0.1", + "attributes":[ + { + "name":"address", + "value":"947 this street, Kingston Ontario Canada, K9O 3R5" + }, + { + "name":"DL_number", + "value":"09385029529385" + }, + { + "name":"expiry", + "value":"10/12/2022" + }, + { + "name":"age", + "value":"30" + } + ] + }, + "Data_DL_MinValues":{ + "cred_name":"Data_DriversLicense_MinValues", + "schema_name":"Schema_DriversLicense", + "schema_version":"1.0.1", + "attributes":[ + { + "name":"address", + "value":"9" + }, + { + "name":"DL_number", + "value":"0" + }, + { + "name":"expiry", + "value":"10/12/2022" + }, + { + "name":"age", + "value":"20" + } + ] + } +} \ No newline at end of file diff --git a/demo/features/data/cred_data_schema_driverslicense_revoc.json b/demo/features/data/cred_data_schema_driverslicense_revoc.json new file mode 100644 index 0000000000..a9e075ab9b --- /dev/null +++ b/demo/features/data/cred_data_schema_driverslicense_revoc.json @@ -0,0 +1,48 @@ +{ + "Data_DL_MaxValues":{ + "cred_name":"Data_DL_Revoc_MaxValues", + "schema_name":"Schema_DriversLicense_revoc", + "schema_version":"1.1.0", + "attributes":[ + { + "name":"address", + "value":"947 this street, Kingston Ontario Canada, K9O 3R5" + }, + { + "name":"DL_number", + "value":"09385029529385" + }, + { + "name":"expiry", + "value":"10/12/2022" + }, + { + "name":"age", + "value":"30" + } + ] + }, + "Data_DL_MinValues":{ + "cred_name":"Data_DL_Revoc_MinValues", + "schema_name":"Schema_DriversLicense_revoc", + "schema_version":"1.1.0", + "attributes":[ + { + "name":"address", + "value":"9 6 st, Q Ontario Canada, K9O 3R5" + }, + { + "name":"DL_number", + "value":"09" + }, + { + "name":"expiry", + "value":"1/1/22" + }, + { + "name":"age", + "value":"15" + } + ] + } +} \ No newline at end of file diff --git a/demo/features/data/cred_data_schema_health_consent.json b/demo/features/data/cred_data_schema_health_consent.json new file mode 100644 index 0000000000..b0703135f7 --- /dev/null +++ b/demo/features/data/cred_data_schema_health_consent.json @@ -0,0 +1,29 @@ +{ + "Data_BI_HealthValues":{ + "cred_name":"Data_HealthConsent_NormalizedValues", + "schema_name":"Schema_Health_Consent", + "schema_version":"0.2.0", + "attributes":[ + { + "name":"name", + "value":"Big Data Consent Firm" + }, + { + "name":"jti_id", + "value":"97375899098359893987267983990020" + }, + { + "name":"expiry", + "value":"04/02/2021" + }, + { + "name":"phone", + "value":"x" + }, + { + "name":"consented_on", + "value":"04/02/2020" + } + ] + } +} \ No newline at end of file diff --git a/demo/features/data/cred_data_schema_health_consent_revoc.json b/demo/features/data/cred_data_schema_health_consent_revoc.json new file mode 100644 index 0000000000..51317ab806 --- /dev/null +++ b/demo/features/data/cred_data_schema_health_consent_revoc.json @@ -0,0 +1,56 @@ +{ + "Data_BI_HealthValues":{ + "cred_name":"Data_HealthConsent_NormalizedValues", + "schema_name":"Schema_Health_Consent_Revoc", + "schema_version":"1.2.0", + "attributes":[ + { + "name":"name", + "value":"Big Data Consent Firm" + }, + { + "name":"jti_id", + "value":"97375899098359893987267983990020" + }, + { + "name":"expiry", + "value":"04/02/2021" + }, + { + "name":"phone", + "value":"x" + }, + { + "name":"consented_on", + "value":"04/02/2020" + } + ] + }, + "Data_BI_HealthValues_Reissue":{ + "cred_name":"Data_HealthConsent_NormalizedValues", + "schema_name":"Schema_Health_Consent_Revoc", + "schema_version":"1.2.0", + "attributes":[ + { + "name":"name", + "value":"Bob Givesconsent" + }, + { + "name":"jti_id", + "value":"998273597238957298375982" + }, + { + "name":"expiry", + "value":"04/02/2022" + }, + { + "name":"phone", + "value":"5555555555" + }, + { + "name":"consented_on", + "value":"11/11/2020" + } + ] + } +} \ No newline at end of file diff --git a/demo/features/data/cred_data_schema_health_id.json b/demo/features/data/cred_data_schema_health_id.json new file mode 100644 index 0000000000..ab25ef927a --- /dev/null +++ b/demo/features/data/cred_data_schema_health_id.json @@ -0,0 +1,64 @@ +{ + "Data_DL_MaxValues":{ + "cred_name":"Data_HealthID_NormalizedValues", + "schema_name":"Schema_Health_ID", + "schema_version":"1.0.0", + "attributes":[ + { + "name":"name", + "value":"Great Name" + }, + { + "name":"health_id_num", + "value":"9999-999-999-RT" + }, + { + "name":"expiry", + "value":"2234-05-24" + }, + { + "name":"dob", + "value":"1970-05-24" + }, + { + "name":"issued", + "value":"2222-08-19" + }, + { + "name":"province", + "value":"Ontario" + } + ] + }, + "Data_HealthID_NormalizedValues":{ + "cred_name":"Data_HealthID_NormalizedValues", + "schema_name":"Schema_Health_ID", + "schema_version":"1.0.0", + "attributes":[ + { + "name":"name", + "value":"Not So Great Name" + }, + { + "name":"health_id_num", + "value":"1500-150-015-PQ" + }, + { + "name":"expiry", + "value":"2024-05-24" + }, + { + "name":"dob", + "value":"1970-05-24" + }, + { + "name":"issued", + "value":"2018-08-19" + }, + { + "name":"province", + "value":"British Columbia" + } + ] + } +} \ No newline at end of file diff --git a/demo/features/data/presentation_DL_address.json b/demo/features/data/presentation_DL_address.json new file mode 100644 index 0000000000..16372fd4c5 --- /dev/null +++ b/demo/features/data/presentation_DL_address.json @@ -0,0 +1,12 @@ +{ + "presentation": { + "comment": "This is a comment for the send presentation.", + "requested_attributes": { + "address_attrs": { + "cred_type_name": "Schema_DriversLicense", + "revealed": true, + "cred_id": "replace_me" + } + } + } +} \ No newline at end of file diff --git a/demo/features/data/presentation_DL_age_over_19.json b/demo/features/data/presentation_DL_age_over_19.json new file mode 100644 index 0000000000..d6714ff733 --- /dev/null +++ b/demo/features/data/presentation_DL_age_over_19.json @@ -0,0 +1,19 @@ +{ + "presentation": { + "comment": "This is a comment for the send presentation.", + "requested_attributes": { + "address_attrs": { + "cred_type_name": "Schema_DriversLicense", + "revealed": true, + "cred_id": "replace_me" + } + }, + "requested_predicates": { + "age": { + "cred_type_name": "Schema_DriversLicense", + "cred_id": "replace me" + } + }, + "self_attested_attributes": {} + } +} \ No newline at end of file diff --git a/demo/features/data/presentation_DL_incorrect_address.json b/demo/features/data/presentation_DL_incorrect_address.json new file mode 100644 index 0000000000..4fc02e5478 --- /dev/null +++ b/demo/features/data/presentation_DL_incorrect_address.json @@ -0,0 +1,11 @@ +{ + "presentation": { + "comment": "This is a comment for the send presentation.", + "requested_attributes": { + "address_attrs": { + "revealed": true, + "cred_id": "d413f359-9595-4ab6-94cf-1aa191d2c884" + } + } + } +} \ No newline at end of file diff --git a/demo/features/data/presentation_DL_revoc_address.json b/demo/features/data/presentation_DL_revoc_address.json new file mode 100644 index 0000000000..6ce88033f0 --- /dev/null +++ b/demo/features/data/presentation_DL_revoc_address.json @@ -0,0 +1,12 @@ +{ + "presentation": { + "comment": "This is a comment for the send presentation.", + "requested_attributes": { + "address_attrs": { + "cred_type_name": "Schema_DriversLicense_Revoc", + "revealed": true, + "cred_id": "replace_me" + } + } + } +} \ No newline at end of file diff --git a/demo/features/data/presentation_DL_revoc_address_w_ts.json b/demo/features/data/presentation_DL_revoc_address_w_ts.json new file mode 100644 index 0000000000..0cfd8bf024 --- /dev/null +++ b/demo/features/data/presentation_DL_revoc_address_w_ts.json @@ -0,0 +1,13 @@ +{ + "presentation": { + "comment": "This is a comment for the send presentation.", + "requested_attributes": { + "address_attrs": { + "cred_type_name": "Schema_DriversLicense_Revoc", + "revealed": true, + "cred_id": "replace_me", + "timestamp": "now" + } + } + } +} \ No newline at end of file diff --git a/demo/features/data/presentation_Health_ID_Num.json b/demo/features/data/presentation_Health_ID_Num.json new file mode 100644 index 0000000000..cab7cc19b0 --- /dev/null +++ b/demo/features/data/presentation_Health_ID_Num.json @@ -0,0 +1,12 @@ +{ + "presentation": { + "comment": "This is a comment for the send presentation.", + "requested_attributes": { + "health_attrs": { + "cred_type_name": "Schema_Health_ID", + "revealed": true, + "cred_id": "replace_me" + } + } + } +} \ No newline at end of file diff --git a/demo/features/data/presentation_biological_indicator_a.json b/demo/features/data/presentation_biological_indicator_a.json new file mode 100644 index 0000000000..f57040fa0c --- /dev/null +++ b/demo/features/data/presentation_biological_indicator_a.json @@ -0,0 +1,19 @@ +{ + "presentation": { + "comment": "This is a comment for the send presentation.", + "requested_attributes": { + "bioindicators_attrs": { + "cred_type_name": "Schema_Biological_Indicators", + "cred_id": "replace me", + "revealed": true + } + }, + "requested_predicates": { + "concentration": { + "cred_type_name": "Schema_Biological_Indicators", + "cred_id": "replace me" + } + }, + "self_attested_attributes": {} + } +} \ No newline at end of file diff --git a/demo/features/data/presentation_health_consent.json b/demo/features/data/presentation_health_consent.json new file mode 100644 index 0000000000..dcd0e35e9f --- /dev/null +++ b/demo/features/data/presentation_health_consent.json @@ -0,0 +1,19 @@ +{ + "presentation": { + "comment": "This is a comment for the send presentation for the Health Consent Proof.", + "requested_attributes": { + "bioindicators_attrs": { + "cred_type_name": "Schema_Biological_Indicators", + "cred_id": "replace me", + "revealed": true + }, + "consent_attrs": { + "cred_type_name": "Schema_Health_Consent", + "cred_id": "replace me", + "revealed": true + } + }, + "requested_predicates": {}, + "self_attested_attributes": {} + } +} \ No newline at end of file diff --git a/demo/features/data/presentation_health_consent_revoc_expiry.json b/demo/features/data/presentation_health_consent_revoc_expiry.json new file mode 100644 index 0000000000..5b6b252871 --- /dev/null +++ b/demo/features/data/presentation_health_consent_revoc_expiry.json @@ -0,0 +1,14 @@ +{ + "presentation": { + "comment": "This is a comment for the send presentation for the Health Consent Proof.", + "requested_attributes": { + "consent_attrs": { + "cred_type_name": "Schema_Health_Consent_Revoc", + "cred_id": "replace me", + "revealed": true + } + }, + "requested_predicates": {}, + "self_attested_attributes": {} + } +} \ No newline at end of file diff --git a/demo/features/data/proof_request_DL_address.json b/demo/features/data/proof_request_DL_address.json new file mode 100644 index 0000000000..e569131d3c --- /dev/null +++ b/demo/features/data/proof_request_DL_address.json @@ -0,0 +1,16 @@ +{ + "presentation_proposal": { + "requested_attributes": { + "address_attrs": { + "name": "address", + "restrictions": [ + { + "schema_name": "Schema_DriversLicense", + "schema_version": "1.0.1" + } + ] + } + }, + "version": "0.1.0" + } +} \ No newline at end of file diff --git a/demo/features/data/proof_request_DL_age_over_19.json b/demo/features/data/proof_request_DL_age_over_19.json new file mode 100644 index 0000000000..546fba1b2e --- /dev/null +++ b/demo/features/data/proof_request_DL_age_over_19.json @@ -0,0 +1,29 @@ +{ + "presentation_proposal": { + "requested_attributes": { + "address_attrs": { + "name": "address", + "restrictions": [ + { + "schema_name": "Schema_DriversLicense", + "schema_version": "1.0.1" + } + ] + } + }, + "requested_predicates": { + "age": { + "name": "age", + "p_type": ">", + "p_value": 19, + "restrictions": [ + { + "schema_name": "Schema_DriversLicense", + "schema_version": "1.0.1" + } + ] + } + }, + "version": "0.1.0" + } +} \ No newline at end of file diff --git a/demo/features/data/proof_request_DL_revoc_address.json b/demo/features/data/proof_request_DL_revoc_address.json new file mode 100644 index 0000000000..361aff0881 --- /dev/null +++ b/demo/features/data/proof_request_DL_revoc_address.json @@ -0,0 +1,16 @@ +{ + "presentation_proposal": { + "requested_attributes": { + "address_attrs": { + "name": "address", + "restrictions": [ + { + "schema_name": "Schema_DriversLicense_Revoc", + "schema_version": "1.1.0" + } + ] + } + }, + "version": "0.1.0" + } +} \ No newline at end of file diff --git a/demo/features/data/proof_request_Health_ID_Num.json b/demo/features/data/proof_request_Health_ID_Num.json new file mode 100644 index 0000000000..c3c1d01348 --- /dev/null +++ b/demo/features/data/proof_request_Health_ID_Num.json @@ -0,0 +1,16 @@ +{ + "presentation_proposal": { + "requested_attributes": { + "health_attrs": { + "name": "health_id_num", + "restrictions": [ + { + "schema_name": "Schema_Health_ID", + "schema_version": "1.0.0" + } + ] + } + }, + "version": "0.1.0" + } +} \ No newline at end of file diff --git a/demo/features/data/proof_request_biological_indicator_a.json b/demo/features/data/proof_request_biological_indicator_a.json new file mode 100644 index 0000000000..ae3a5e88e1 --- /dev/null +++ b/demo/features/data/proof_request_biological_indicator_a.json @@ -0,0 +1,30 @@ +{ + "presentation_proposal": { + "name": "Biological Indicator A Proof", + "requested_attributes": { + "bioindicators_attrs": { + "name": "name", + "restrictions": [ + { + "schema_name": "Schema_Biological_Indicators", + "schema_version": "0.2.0" + } + ] + } + }, + "requested_predicates": { + "concentration": { + "name": "concentration", + "p_type": ">", + "p_value": 1, + "restrictions": [ + { + "schema_name": "Schema_Biological_Indicators", + "schema_version": "0.2.0" + } + ] + } + }, + "version": "0.1.0" + } +} \ No newline at end of file diff --git a/demo/features/data/proof_request_biological_indicator_a_2.0.json b/demo/features/data/proof_request_biological_indicator_a_2.0.json new file mode 100644 index 0000000000..92441e0307 --- /dev/null +++ b/demo/features/data/proof_request_biological_indicator_a_2.0.json @@ -0,0 +1,32 @@ +{ + "presentation_proposal": { + "name": "Biological Indicator A Proof", + "requested_attributes": { + "bioindicators_attrs": { + "names": [ + "name" + ], + "restrictions": [ + { + "schema_name": "Schema_Biological_Indicators", + "schema_version": "0.2.0" + } + ] + } + }, + "requested_predicates": { + "concentration": { + "name": "concentration", + "p_type": ">", + "p_value": 1, + "restrictions": [ + { + "schema_name": "Schema_Biological_Indicators", + "schema_version": "0.2.0" + } + ] + } + }, + "version": "0.2.0" + } +} \ No newline at end of file diff --git a/demo/features/data/proof_request_health_consent.json b/demo/features/data/proof_request_health_consent.json new file mode 100644 index 0000000000..a97a41088e --- /dev/null +++ b/demo/features/data/proof_request_health_consent.json @@ -0,0 +1,33 @@ +{ + "presentation_proposal": { + "name": "Health Consent Proof", + "requested_attributes": { + "bioindicators_attrs": { + "names": [ + "name", + "range", + "concentration", + "unit", + "collected_on" + ], + "restrictions": [ + { + "schema_name": "Schema_Biological_Indicators", + "schema_version": "0.2.0" + } + ] + }, + "consent_attrs": { + "name": "jti_id", + "restrictions": [ + { + "schema_name": "Schema_Health_Consent", + "schema_version": "0.2.0" + } + ] + } + }, + "requested_predicates": {}, + "version": "0.1.0" + } +} \ No newline at end of file diff --git a/demo/features/data/proof_request_health_consent_revoc_expiry.json b/demo/features/data/proof_request_health_consent_revoc_expiry.json new file mode 100644 index 0000000000..84bc377c27 --- /dev/null +++ b/demo/features/data/proof_request_health_consent_revoc_expiry.json @@ -0,0 +1,18 @@ +{ + "presentation_proposal": { + "name": "Health Consent Proof", + "requested_attributes": { + "consent_attrs": { + "name": "expiry", + "restrictions": [ + { + "schema_name": "Schema_Health_Consent_Revoc", + "schema_version": "1.2.0" + } + ] + } + }, + "requested_predicates": {}, + "version": "0.1.0" + } +} \ No newline at end of file diff --git a/demo/features/data/proposal_DL_address.json b/demo/features/data/proposal_DL_address.json new file mode 100644 index 0000000000..69ddae885e --- /dev/null +++ b/demo/features/data/proposal_DL_address.json @@ -0,0 +1,11 @@ +{ + "presentation_proposal": { + "requested_attributes": [ + { + "name": "address", + "cred_def_id": "replace_me", + "cred_type_name": "Schema_DriversLicense" + } + ] + } +} \ No newline at end of file diff --git a/demo/features/data/proposal_DL_age_over_19.json b/demo/features/data/proposal_DL_age_over_19.json new file mode 100644 index 0000000000..ef869ca821 --- /dev/null +++ b/demo/features/data/proposal_DL_age_over_19.json @@ -0,0 +1,11 @@ +{ + "presentation_proposal": { + "requested_attributes": [ + { + "name": "age", + "cred_def_id": "replace_me", + "cred_type_name": "Schema_DriversLicense" + } + ] + } +} \ No newline at end of file diff --git a/demo/features/data/proposal_Health_ID_Num.json b/demo/features/data/proposal_Health_ID_Num.json new file mode 100644 index 0000000000..f5d55279e2 --- /dev/null +++ b/demo/features/data/proposal_Health_ID_Num.json @@ -0,0 +1,11 @@ +{ + "presentation_proposal": { + "requested_attributes": [ + { + "name": "health_id_num", + "cred_def_id": "replace_me", + "cred_type_name": "Schema_Health_ID" + } + ] + } +} \ No newline at end of file diff --git a/demo/features/data/schema_biological_indicators.json b/demo/features/data/schema_biological_indicators.json new file mode 100644 index 0000000000..a3e45c599c --- /dev/null +++ b/demo/features/data/schema_biological_indicators.json @@ -0,0 +1,14 @@ +{ + "schema":{ + "schema_name":"Schema_Biological_Indicators", + "schema_version":"0.2.0", + "attributes":[ + "name", + "range", + "concentration", + "unit", + "collected_on" + ] + }, + "cred_def_support_revocation":false +} \ No newline at end of file diff --git a/demo/features/data/schema_driverslicense.json b/demo/features/data/schema_driverslicense.json new file mode 100644 index 0000000000..4c2c548603 --- /dev/null +++ b/demo/features/data/schema_driverslicense.json @@ -0,0 +1,13 @@ +{ + "schema":{ + "schema_name":"Schema_DriversLicense", + "schema_version":"1.0.1", + "attributes":[ + "address", + "DL_number", + "expiry", + "age" + ] + }, + "cred_def_support_revocation":false +} \ No newline at end of file diff --git a/demo/features/data/schema_driverslicense_revoc.json b/demo/features/data/schema_driverslicense_revoc.json new file mode 100644 index 0000000000..9f554d0da0 --- /dev/null +++ b/demo/features/data/schema_driverslicense_revoc.json @@ -0,0 +1,13 @@ +{ + "schema":{ + "schema_name":"Schema_DriversLicense_Revoc", + "schema_version":"1.1.0", + "attributes":[ + "address", + "DL_number", + "expiry", + "age" + ] + }, + "cred_def_support_revocation":true +} \ No newline at end of file diff --git a/demo/features/data/schema_health_consent.json b/demo/features/data/schema_health_consent.json new file mode 100644 index 0000000000..489ece585b --- /dev/null +++ b/demo/features/data/schema_health_consent.json @@ -0,0 +1,14 @@ +{ + "schema":{ + "schema_name":"Schema_Health_Consent", + "schema_version":"0.2.0", + "attributes":[ + "name", + "jti_id", + "expiry", + "phone", + "consented_on" + ] + }, + "cred_def_support_revocation":false +} \ No newline at end of file diff --git a/demo/features/data/schema_health_consent_revoc.json b/demo/features/data/schema_health_consent_revoc.json new file mode 100644 index 0000000000..16c912222b --- /dev/null +++ b/demo/features/data/schema_health_consent_revoc.json @@ -0,0 +1,14 @@ +{ + "schema":{ + "schema_name":"Schema_Health_Consent_Revoc", + "schema_version":"1.2.0", + "attributes":[ + "name", + "jti_id", + "expiry", + "phone", + "consented_on" + ] + }, + "cred_def_support_revocation":true +} \ No newline at end of file diff --git a/demo/features/data/schema_health_id.json b/demo/features/data/schema_health_id.json new file mode 100644 index 0000000000..7f086115a3 --- /dev/null +++ b/demo/features/data/schema_health_id.json @@ -0,0 +1,15 @@ +{ + "schema":{ + "schema_name":"Schema_Health_ID", + "schema_version":"1.0.0", + "attributes":[ + "name", + "health_id_num", + "expiry", + "dob", + "issued", + "province" + ] + }, + "cred_def_support_revocation":false +} \ No newline at end of file diff --git a/demo/features/environment.py b/demo/features/environment.py new file mode 100644 index 0000000000..fbef13baed --- /dev/null +++ b/demo/features/environment.py @@ -0,0 +1,32 @@ + +def before_feature(context, feature): + pass + +def after_feature(context, feature): + pass + +def before_tag(context, tag): + pass + +def after_tag(context, tag): + pass + +def before_scenario(context, scenario): + print(">>> before_scenario activated") + +def after_scenario(context, step): + # shut down any agents that were started for the scenario + print(">>> after_scenario activated") + +def before_step(context, step): + pass + +def after_step(context, step): + pass + +def before_all(context): + pass + +def after_all(context): + pass + diff --git a/demo/features/steps/0036-issue-credential.py b/demo/features/steps/0036-issue-credential.py new file mode 100644 index 0000000000..76324e87c9 --- /dev/null +++ b/demo/features/steps/0036-issue-credential.py @@ -0,0 +1,376 @@ +from behave import * +import json +from agent_backchannel_client import agent_backchannel_GET, agent_backchannel_POST, expected_agent_state +from time import sleep +import time + +# This step is defined in another feature file +# Given "Acme" and "Bob" have an existing connection + + +SCHEMA_TEMPLATE = { + "schema_name": "test_schema.", + "schema_version": "1.0.0", + "attributes": ["attr_1","attr_2","attr_3"], +} + +CRED_DEF_TEMPLATE = { + "support_revocation": False, + "schema_id": "", + "tag": "default" +} + +CREDENTIAL_ATTR_TEMPLATE = [ + {"name": "attr_1", "value": "value_1"}, + {"name": "attr_2", "value": "value_2"}, + {"name": "attr_3", "value": "value_3"} +] + +@given('"{issuer}" has a public did') +def step_impl(context, issuer): + issuer_url = context.config.userdata.get(issuer) + + (resp_status, resp_text) = agent_backchannel_GET(issuer_url + "/agent/command/", "did") + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + resp_json = json.loads(resp_text) + issuer_did = resp_json + + if "schema" not in context: + # check for a schema already loaded in the context. If it is not, load the template + if "schema" not in context: + context.schema = SCHEMA_TEMPLATE.copy() + context.schema["schema_name"] = context.schema["schema_name"] + issuer + + #context.issuer_did = issuer_did["did"] + if 'issuer_did_dict' in context: + context.issuer_did_dict[context.schema['schema_name']] = issuer_did["did"] + else: + context.issuer_did_dict = {context.schema['schema_name']: issuer_did["did"]} + +@given('"{issuer}" is ready to issue a credential') +def step_impl(context, issuer): + # TODO remove these references to schema and cred def, move them to one call to the API and let the Backchannel take care of + # what to do to be ready to issie a credential + context.execute_steps(''' + When "''' + issuer + '''" creates a new schema + And "''' + issuer + '''" creates a new credential definition + Then "''' + issuer + '''" has an existing schema + And "''' + issuer + '''" has an existing credential definition + ''') + +@when('"{issuer}" creates a new schema') +def step_impl(context, issuer): + issuer_url = context.config.userdata.get(issuer) + + #if not "issuer_schema_id_dict" in context: + # check for a schema template already loaded in the context. If it is, it was loaded from an external Schema, so use it. + if "schema" in context: + schema = context.schema + else: + schema = SCHEMA_TEMPLATE.copy() + schema["schema_name"] = schema["schema_name"] + issuer + + (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "schema", data=schema) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + resp_json = json.loads(resp_text) + #context.issuer_schema_id = resp_json["schema_id"] + if 'issuer_schema_id_dict' in context: + context.issuer_schema_id_dict[context.schema['schema_name']] = resp_json["schema_id"] + else: + context.issuer_schema_id_dict = {context.schema['schema_name']: resp_json["schema_id"]} + +@when('"{issuer}" creates a new credential definition') +def step_impl(context, issuer): + issuer_url = context.config.userdata.get(issuer) + + #if not "credential_definition_id_dict" in context: + cred_def = CRED_DEF_TEMPLATE.copy() + cred_def["schema_id"] = context.issuer_schema_id_dict[context.schema['schema_name']] + if "support_revocation" in context: + cred_def["support_revocation"] = context.support_revocation + + (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "credential-definition", data=cred_def) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + resp_json = json.loads(resp_text) + if "support_revocation" in context: + # Could make a call to get the rev reg creation time for calculating non revocation intervals + #context.cred_rev_creation_time = resp_json["created"] + context.cred_rev_creation_time = time.time() + + if 'credential_definition_id_dict' in context: + context.credential_definition_id_dict[context.schema['schema_name']] = resp_json["credential_definition_id"] + else: + context.credential_definition_id_dict = {context.schema['schema_name']: resp_json["credential_definition_id"]} + +@then('"{issuer}" has an existing schema') +def step_impl(context, issuer): + issuer_url = context.config.userdata.get(issuer) + issuer_schema_id = context.issuer_schema_id_dict[context.schema['schema_name']] + + (resp_status, resp_text) = agent_backchannel_GET(issuer_url + "/agent/command/", "schema", id=issuer_schema_id) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + resp_json = json.loads(resp_text) + #context.issuer_schema = resp_json + if 'issuer_schema_dict' in context: + context.issuer_schema_dict[context.schema['schema_name']] = resp_json + else: + context.issuer_schema_dict = {context.schema['schema_name']: resp_json} + + +@then('"{issuer}" has an existing credential definition') +def step_impl(context, issuer): + issuer_url = context.config.userdata.get(issuer) + issuer_credential_definition_id = context.credential_definition_id_dict[context.schema['schema_name']] + + (resp_status, resp_text) = agent_backchannel_GET(issuer_url + "/agent/command/", "credential-definition", id=issuer_credential_definition_id) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + resp_json = json.loads(resp_text) + #context.issuer_credential_definition = resp_json + if 'issuer_credential_definition_dict' in context: + context.issuer_credential_definition_dict[context.schema['schema_name']] = resp_json + else: + context.issuer_credential_definition_dict = {context.schema['schema_name']: resp_json} + + +@given('"{issuer}" has an existing schema and credential definition') +def step_impl(context, issuer): + context.execute_steps(u''' + Given "''' + issuer + '''" has a public did + When "''' + issuer + '''" creates a new schema + And "''' + issuer + '''" creates a new credential definition + Then "''' + issuer + '''" has an existing schema + And "''' + issuer + '''" has an existing credential definition + ''') + +@when('"{issuer}" initiates an automated credential issuance') +def step_impl(context, issuer): + issuer_url = context.config.userdata.get(issuer) + issuer_did = context.issuer_did + issuer_connection_id = context.connection_id_dict[issuer][context.holder_name] + issuer_schema_id = context.issuer_schema_id + issuer_schema = context.issuer_schema + issuer_credential_definition_id = context.credential_definition_id + issuer_credential_definition = context.issuer_credential_definition + + credential_offer = { + "schema_issuer_did": issuer_did, + "issuer_did": issuer_did, + "schema_name": issuer_schema["name"], + "cred_def_id": issuer_credential_definition["id"], + "schema_version": issuer_schema["version"], + "credential_proposal": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/issue-credential/1.0/credential-preview", + "attributes": CREDENTIAL_ATTR_TEMPLATE.copy(), + }, + "connection_id": issuer_connection_id, + "schema_id": issuer_schema["id"], + } + + (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "issue-credential", operation="send", data=credential_offer) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + resp_json = json.loads(resp_text) + issuer_credential_definition = resp_json + +@given('"{holder}" proposes a credential to "{issuer}"') +@when('"{holder}" proposes a credential to "{issuer}"') +def step_impl(context, holder, issuer): + holder_url = context.config.userdata.get(holder) + + # check for a schema template already loaded in the context. If it is, it was loaded from an external Schema, so use it. + if "credential_data" in context: + cred_data = context.credential_data + else: + cred_data = CREDENTIAL_ATTR_TEMPLATE.copy() + + credential_offer = { + "schema_issuer_did": context.issuer_did_dict[context.schema['schema_name']], + "issuer_did": context.issuer_did_dict[context.schema['schema_name']], + "schema_name": context.issuer_schema_dict[context.schema['schema_name']]["name"], + "cred_def_id": context.issuer_credential_definition_dict[context.schema['schema_name']]["id"], + "schema_version": context.issuer_schema_dict[context.schema['schema_name']]["version"], + "credential_proposal": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/issue-credential/1.0/credential-preview", + "attributes": cred_data, + }, + "connection_id": context.connection_id_dict[holder][issuer], + "schema_id": context.issuer_schema_dict[context.schema['schema_name']]["id"], + } + + #(resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "issue-credential", operation="send-proposal", id=holder_connection_id, data=credential_offer) + (resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "issue-credential", operation="send-proposal", data=credential_offer) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + resp_json = json.loads(resp_text) + + # Check the State of the credential + assert resp_json["state"] == "proposal-sent" + + # Get the thread ID from the response text. + context.cred_thread_id = resp_json["thread_id"] + +@given('"{issuer}" offers a credential') +@when('"{issuer}" offers a credential') +@when('"{issuer}" offers the credential') +@when('"{issuer}" sends a credential offer') +def step_impl(context, issuer): + issuer_url = context.config.userdata.get(issuer) + + # if context does not have the credential thread id then the proposal was not the starting point for the protocol. + if not "cred_thread_id" in context: + + if "credential_data" in context: + cred_data = context.credential_data + else: + cred_data = CREDENTIAL_ATTR_TEMPLATE.copy() + + credential_offer = { + "cred_def_id": context.issuer_credential_definition_dict[context.schema['schema_name']]["id"], + "credential_preview": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/issue-credential/1.0/credential-preview", + "attributes": cred_data, + }, + "connection_id": context.connection_id_dict[issuer][context.holder_name], + } + + (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "issue-credential", operation="send-offer", data=credential_offer) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + resp_json = json.loads(resp_text) + context.cred_thread_id = resp_json["thread_id"] + + else: + # If context has the credential thread id then the proposal was done. + (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "issue-credential", operation="send-offer", id=context.cred_thread_id) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + resp_json = json.loads(resp_text) + + # Check the issuers State + assert resp_json["state"] == "offer-sent" + + # Check the state of the holder after issuers call of send-offer + assert expected_agent_state(context.holder_url, "issue-credential", context.cred_thread_id, "offer-received") + + +@when('"{holder}" requests the credential') +@when('"{holder}" sends a credential request') +def step_impl(context, holder): + holder_url = context.holder_url + + # If @indy then we can be sure we cannot start the protocol from this command. We can be sure that we have previously + # reveived the thread_id. + if "Indy" in context.tags: + sleep(1) + (resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "issue-credential", operation="send-request", id=context.cred_thread_id) + + # If we are starting from here in the protocol you won't have the cred_ex_id or the thread_id + else: + (resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "issue-credential", operation="send-request", id=context.connection_id_dict[holder][context.issuer_name]) + + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + resp_json = json.loads(resp_text) + assert resp_json["state"] == "request-sent" + + # Verify issuer status + assert expected_agent_state(context.issuer_url, "issue-credential", context.cred_thread_id, "request-received") + + +@when('"{issuer}" issues the credential') +@when('"{issuer}" issues a credential') +def step_impl(context, issuer): + issuer_url = context.config.userdata.get(issuer) + + if "credential_data" in context: + cred_data = context.credential_data + else: + cred_data = CREDENTIAL_ATTR_TEMPLATE.copy() + + # a credential preview shouldn't have to be here with a cred_ex_id being passed + credential_preview = { + "credential_preview": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/issue-credential/1.0/credential-preview", + "attributes": cred_data, + }, + "comment": "issuing credential", + } + + (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "issue-credential", operation="issue", id=context.cred_thread_id, data=credential_preview) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + resp_json = json.loads(resp_text) + assert resp_json["state"] == "credential-issued" + + # Verify holder status + assert expected_agent_state(context.holder_url, "issue-credential", context.cred_thread_id, "credential-received") + + +@when('"{holder}" acknowledges the credential issue') +@when('"{holder}" receives and acknowledges the credential') +def step_impl(context, holder): + holder_url = context.config.userdata.get(holder) + + # a credential id shouldn't be needed with a cred_ex_id being passed + credential_id = { + "credential_id": context.cred_thread_id, + } + + # (resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "credential", operation="store", id=context.holder_cred_ex_id) + sleep(1) + (resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "issue-credential", operation="store", id=context.cred_thread_id, data=credential_id) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + resp_json = json.loads(resp_text) + assert resp_json["state"] == "done" + #context.credential_id = resp_json["credential_id"] + if 'credential_id_dict' in context: + try: + context.credential_id_dict[context.schema['schema_name']].append(resp_json["credential_id"]) + except KeyError: + context.credential_id_dict[context.schema['schema_name']] = [resp_json["credential_id"]] + else: + context.credential_id_dict = {context.schema['schema_name']: [resp_json["credential_id"]]} + + # Verify issuer status + # This is returning none instead of Done. Should this be the case. Needs investigation. + #assert expected_agent_state(context.issuer_url, "issue-credential", context.cred_thread_id, "done") + + # if the credential supports revocation, get the Issuers webhook callback JSON from the store command + # From that JSON save off the credential revocation identifier, and the revocation registry identifier. + if "support_revocation" in context: + if context.support_revocation: + (resp_status, resp_text) = agent_backchannel_GET(context.config.userdata.get(context.issuer_name) + "/agent/response/", "revocation-registry", id=context.cred_thread_id) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + resp_json = json.loads(resp_text) + context.cred_rev_id = resp_json["revocation_id"] + context.rev_reg_id = resp_json["revoc_reg_id"] + + +@then('"{holder}" has the credential issued') +def step_impl(context, holder): + + holder_url = context.config.userdata.get(holder) + # get the credential from the holders wallet + (resp_status, resp_text) = agent_backchannel_GET(holder_url + "/agent/command/", "credential", id=context.credential_id_dict[context.schema['schema_name']][len(context.credential_id_dict[context.schema['schema_name']])-1]) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + resp_json = json.loads(resp_text) + assert resp_json["referent"] == context.credential_id_dict[context.schema['schema_name']][len(context.credential_id_dict[context.schema['schema_name']])-1] + assert resp_json["schema_id"] == context.issuer_schema_id_dict[context.schema["schema_name"]] + assert resp_json["cred_def_id"] == context.credential_definition_id_dict[context.schema["schema_name"]] + + # Make sure the issuer is not holding the credential + # get the credential from the holders wallet + # TODO this expected error is not displaying in the agent output until after all the tests are executed. Uncomment this out when + # there is a solution to the error messaging happening at the end. + #(resp_status, resp_text) = agent_backchannel_GET(context.issuer_url + "/agent/command/", "credential", id=context.credential_id_dict[context.schema['schema_name']]) + #assert resp_status == 404, f'resp_status {resp_status} is not 404; {resp_text}' + + + +@when(u'"{holder}" negotiates the offer with a proposal of the credential to "{issuer}"') +@when(u'"{holder}" negotiates the offer with another proposal of the credential to "{issuer}"') +def step_impl(context, holder, issuer): + #context.execute_steps('''When "''' + holder + '''" proposes a credential to "''' + sender + ''') + context.execute_steps(''' + When "''' + holder + '''" proposes a credential to "''' + issuer + '''" + ''') diff --git a/demo/features/steps/0160-connection.py b/demo/features/steps/0160-connection.py new file mode 100644 index 0000000000..135ad4f6ff --- /dev/null +++ b/demo/features/steps/0160-connection.py @@ -0,0 +1,453 @@ +# ----------------------------------------------------------- +# Behave Step Definitions for the Connection Protocol 0160 +# used to establish connections between Aries Agents. +# 0160 connection-protocol RFC: +# https://github.com/hyperledger/aries-rfcs/tree/9b0aaa39df7e8bd434126c4b33c097aae78d65bf/features/0160-connection-protocol#0160-connection-protocol +# +# Current AIP version level of test coverage: 1.0 +# +# ----------------------------------------------------------- + +from behave import given, when, then +import json +from bdd_support.agent_backchannel_client import agent_backchannel_GET, agent_backchannel_POST, expected_agent_state + +@given('{n} agents') +@given(u'we have {n} agents') +def step_impl(context, n): + """Startup 'n' agents based on the options provided in the context table parameters.""" + + context.active_agents = {} + for row in context.table: + agent_name = row['name'] + agent_role = row['role'] + agent_params = row['capabilities'] + + context.active_agents[agent_name] = { + 'name': agent_name, + 'role': agent_role, + 'agent': None, + } + + # startup an agent with the provided params + agent = None + # TODO + + # keep reference to the agent so we can shut it down later + context.active_agents[agent_name]['agent'] = agent + + +@when('"{inviter}" generates a connection invitation') +def step_impl(context, inviter): + inviter_url = context.config.userdata.get(inviter) + + (resp_status, resp_text) = agent_backchannel_POST(inviter_url + "/agent/command/", "connection", operation="create-invitation") + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + resp_json = json.loads(resp_text) + context.inviter_invitation = resp_json["invitation"] + + # check and see if the connection_id_dict exists + # if it does, it was probably used to create another connection in a 3+ agent scenario + # so that means we need to keep the connection ids around for use in the scenario + # so we will not create a new dict which will reset the dict + if hasattr(context, 'temp_connection_id_dict'): + context.temp_connection_id_dict[inviter] = resp_json["connection_id"] + else: + context.temp_connection_id_dict = {inviter: resp_json["connection_id"]} + + # Check to see if the inviter_name exists in context. If not, antother suite is using it so set the inviter name and url + if not hasattr(context, 'inviter_name') or context.inviter_name != inviter: + context.inviter_url = inviter_url + context.inviter_name = inviter + + # get connection and verify status + assert expected_agent_state(inviter_url, "connection", context.temp_connection_id_dict[inviter], "invited") + +@given('"{invitee}" receives the connection invitation') +@when('"{invitee}" receives the connection invitation') +def step_impl(context, invitee): + invitee_url = context.config.userdata.get(invitee) + + data = context.inviter_invitation + (resp_status, resp_text) = agent_backchannel_POST(invitee_url + "/agent/command/", "connection", operation="receive-invitation", data=data) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + resp_json = json.loads(resp_text) + + if not hasattr(context, 'connection_id_dict'): + context.connection_id_dict = {} + context.connection_id_dict[invitee] = {} + + context.connection_id_dict[invitee][context.inviter_name] = resp_json["connection_id"] + + # Also add the inviter into the main connection_id_dict. if the len is 0 that means its already been cleared and this may be Mallory. + if len(context.temp_connection_id_dict) != 0: + context.connection_id_dict[context.inviter_name] = {invitee: context.temp_connection_id_dict[context.inviter_name]} + #clear the temp connection id dict used in the initial step. We don't need it anymore. + context.temp_connection_id_dict.clear() + + # Check to see if the invitee_name exists in context. If not, antother suite is using it so set the invitee name and url + if not hasattr(context, 'invitee_name'): + context.invitee_url = invitee_url + context.invitee_name = invitee + + # get connection and verify status + assert expected_agent_state(invitee_url, "connection", context.connection_id_dict[invitee][context.inviter_name], "invited") + +@when('"{inviter}" sends a connection response to "{invitee}"') +@given('"{inviter}" sends a connection response to "{invitee}"') +@then('"{inviter}" sends a connection response to "{invitee}"') +def step_impl(context, inviter, invitee): + inviter_url = context.config.userdata.get(inviter) + #inviter_connection_id = context.connection_id_dict[inviter] + inviter_connection_id = context.connection_id_dict[inviter][invitee] + invitee_url = context.config.userdata.get(invitee) + invitee_connection_id = context.connection_id_dict[invitee][inviter] + + # get connection and verify status + assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "requested") + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "requested") + + (resp_status, resp_text) = agent_backchannel_POST(inviter_url + "/agent/command/", "connection", operation="accept-request", id=inviter_connection_id) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + # get connection and verify status + assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "responded") + +@when('"{invitee}" receives the connection response') +@given('"{invitee}" receives the connection response') +def step_impl(context, invitee): + invitee_url = context.config.userdata.get(invitee) + invitee_connection_id = context.connection_id_dict[invitee][context.inviter_name] + + # invitee already recieved the connection response in the accept-request call so get connection and verify status=responded. + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "responded") + +@given('"{invitee}" sends a connection request to "{inviter}"') +@when('"{invitee}" sends a connection request to "{inviter}"') +def step_impl(context, invitee, inviter): + invitee_url = context.config.userdata.get(invitee) + invitee_connection_id = context.connection_id_dict[invitee][inviter] + inviter_url = context.config.userdata.get(inviter) + inviter_connection_id = context.connection_id_dict[inviter][invitee] + + # get connection and verify status + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "invited") + assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "invited") + + (resp_status, resp_text) = agent_backchannel_POST(invitee_url + "/agent/command/", "connection", operation="accept-invitation", id=invitee_connection_id) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + # get connection and verify status + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "requested") + + +@when('"{inviter}" receives the connection request') +@given('"{inviter}" receives the connection request') +def step_impl(context, inviter): + inviter_url = context.config.userdata.get(inviter) + inviter_connection_id = context.connection_id_dict[inviter][context.invitee_name] + + # inviter already recieved the connection request in the accept-invitation call so get connection and verify status=requested. + assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "requested") + + +@when('"{inviter}" accepts the connection response to "{invitee}"') +def step_impl(context, inviter, invitee): + inviter_url = context.config.userdata.get(inviter) + inviter_connection_id = context.connection_id_dict[inviter][invitee] + invitee_url = context.config.userdata.get(invitee) + invitee_connection_id = context.connection_id_dict[invitee][inviter] + + # get connection and verify status + assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "requested") + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "requested") + + (resp_status, resp_text) = agent_backchannel_POST(inviter_url + "/agent/command/", "connection", operation="accept-request", id=inviter_connection_id) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + # get connection and verify status + assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "responded") + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "complete") + +@when('"{invitee}" sends a response ping') +def step_impl(context, invitee): + invitee_url = context.config.userdata.get(invitee) + invitee_connection_id = context.connection_id_dict[invitee][context.inviter_name] + + # get connection and verify status + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "responded") + + data = {"comment": "Hello from " + invitee} + (resp_status, resp_text) = agent_backchannel_POST(invitee_url + "/agent/command/", "connection", operation="send-ping", id=invitee_connection_id, data=data) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + # get connection and verify status + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "complete") + +@when('"{inviter}" receives the response ping') +def step_impl(context, inviter): + # extra step to force status to 'active' for VCX + inviter_url = context.config.userdata.get(inviter) + inviter_connection_id = context.connection_id_dict[inviter][context.invitee_name] + + data = {"comment": "Hello from " + inviter} + (resp_status, resp_text) = agent_backchannel_POST(inviter_url + "/agent/command/", "connection", operation="send-ping", id=inviter_connection_id, data=data) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + # get connection and verify status + assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "complete") + +@then('"{inviter}" and "{invitee}" still have a completed connection') +@then('"{inviter}" and "{invitee}" have a connection') +def step_impl(context, inviter, invitee): + inviter_url = context.config.userdata.get(inviter) + inviter_connection_id = context.connection_id_dict[inviter][invitee] + invitee_url = context.config.userdata.get(invitee) + invitee_connection_id = context.connection_id_dict[invitee][inviter] + + # Check to see if this is a DID Exchange connection to set the state to check appropriatly for that protocol. + if "responder_url" in context: + state_to_assert = "completed" + else: + state_to_assert = "complete" + + # get connection and verify status for inviter + assert expected_agent_state(inviter_url, "connection", inviter_connection_id, state_to_assert) + + # get connection and verify status for invitee + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, state_to_assert) + +@then('"{invitee}" is connected to "{inviter}"') +def step_impl(context, inviter, invitee): + inviter_url = context.config.userdata.get(inviter) + inviter_connection_id = context.connection_id_dict[inviter][invitee] + invitee_url = context.config.userdata.get(invitee) + invitee_connection_id = context.connection_id_dict[invitee][inviter] + + # get connection and verify status for inviter + assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "responded") + + # get connection and verify status for invitee + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "complete") + +@given('"{sender}" and "{receiver}" have an existing connection') +def step_impl(context, sender, receiver): + if "DIDExchangeConnection" in context.tags: + context.execute_steps(u''' + When "''' + sender + '''" sends an explicit invitation + And "''' + receiver + '''" receives the invitation + And "''' + receiver + '''" sends the request to "''' + sender + '''" + And "''' + sender + '''" receives the request + And "''' + sender + '''" sends a response to "''' + receiver + '''" + And "''' + receiver + '''" receives the response + And "''' + receiver + '''" sends complete to "''' + sender + '''" + Then "''' + sender + '''" and "''' + receiver + '''" have a connection + ''') + + else: + context.execute_steps(u''' + When "''' + sender + '''" generates a connection invitation + And "''' + receiver + '''" receives the connection invitation + And "''' + receiver + '''" sends a connection request to "''' + sender + '''" + And "''' + sender + '''" receives the connection request + And "''' + sender + '''" sends a connection response to "''' + receiver + '''" + And "''' + receiver + '''" receives the connection response + And "''' + receiver + '''" sends trustping to "''' + sender + '''" + Then "''' + sender + '''" and "''' + receiver + '''" have a connection + ''') + +@when(u'"{sender}" sends a trust ping') +def step_impl(context, sender): + sender_url = context.config.userdata.get(sender) + sender_connection_id = context.connection_id_dict[sender][context.inviter_name] + + # get connection and verify status + assert expected_agent_state(sender_url, "connection", sender_connection_id, "active") + + data = {"comment": "Hello from " + sender} + (resp_status, resp_text) = agent_backchannel_POST(sender_url + "/agent/command/", "connection", operation="send-ping", id=sender_connection_id, data=data) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + # get connection and verify status + assert expected_agent_state(sender_url, "connection", sender_connection_id, "complete") + +@then('"{receiver}" receives the trust ping') +def step_impl(context, receiver): + # TODO + pass + + +@given('"{invitee}" has sent a connection request to "{inviter}"') +def step_impl(context, invitee, inviter): + context.execute_steps(''' + When "''' + inviter + '''" generates a connection invitation + And "''' + invitee + '''" receives the connection invitation + And "''' + invitee + '''" sends a connection request + ''') + +@given('"{inviter}" has accepted the connection request by sending a connection response') +def step_impl(context, inviter): + context.execute_steps('''When "''' + inviter + '''" accepts the connection response''') + + +@given(u'"{invitee}" is in the state of complete') +def step_impl(context, invitee): + invitee_url = context.config.userdata.get(invitee) + invitee_connection_id = context.connection_id_dict[invitee][context.inviter_name] + + # get connection and verify status + assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "complete") + + +@given(u'"{inviter}" is in the state of responded') +def step_impl(context, inviter): + inviter_url = context.config.userdata.get(inviter) + inviter_connection_id = context.connection_id_dict[inviter][context.invitee_name] + + # get connection and verify status + assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "responded") + + +@when(u'"{sender}" sends acks to "{reciever}"') +def step_impl(context, sender, reciever): + sender_url = context.config.userdata.get(sender) + sender_connection_id = context.connection_id_dict[sender][context.inviter_name] + + data = {"comment": "acknowledgement from " + sender} + # TODO acks not implemented yet, this will fail. + (resp_status, resp_text) = agent_backchannel_POST(sender_url + "/agent/command/", "connection", operation="acks", id=sender_connection_id, data=data) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + +@when('"{sender}" sends trustping to "{receiver}"') +def step_impl(context, sender, receiver): + sender_url = context.config.userdata.get(sender) + sender_connection_id = context.connection_id_dict[sender][receiver] + + data = {"comment": "acknowledgement from " + sender} + (resp_status, resp_text) = agent_backchannel_POST(sender_url + "/agent/command/", "connection", operation="send-ping", id=sender_connection_id, data=data) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + +@then(u'"{inviter}" is in the state of complete') +def step_impl(context, inviter): + # get connection and verify status + assert expected_agent_state(context.config.userdata.get(inviter), "connection", context.connection_id_dict[inviter][context.invitee_name], "complete") + + +@given(u'"{inviter}" generated a single-use connection invitation') +def step_impl(context, inviter): + context.execute_steps(''' + When "''' + inviter + '''" generates a connection invitation + ''') + + +@given(u'"{invitee}" received the connection invitation') +def step_impl(context, invitee): + context.execute_steps(''' + When "''' + invitee + '''" receives the connection invitation + ''') + + +@given(u'"{invitee}" sent a connection request to "{inviter}"') +def step_impl(context, invitee, inviter): + context.execute_steps(''' + When "''' + invitee + '''" sends a connection request to "''' + inviter + '''" + ''') + + +@given(u'"{inviter}" and "{invitee}" have a connection') +def step_impl(context, inviter, invitee): + context.execute_steps(''' + When "''' + invitee + '''" sends trustping to "''' + inviter + '''" + Then "''' + inviter + '''" and "''' + invitee + '''" have a connection + ''') + + +@when(u'"{inviteinterceptor}" sends a connection request to "{inviter}" based on the connection invitation') +def step_impl(context, inviteinterceptor, inviter): + context.execute_steps(''' + When "''' + inviteinterceptor + '''" receives the connection invitation + ''') + inviteinterceptor_url = context.config.userdata.get(inviteinterceptor) + inviteinterceptor_connection_id = context.connection_id_dict[inviteinterceptor][inviter] + + # get connection and verify status before call + assert expected_agent_state(inviteinterceptor_url, "connection", inviteinterceptor_connection_id, "invited") + + (resp_status, resp_text) = agent_backchannel_POST(inviteinterceptor_url + "/agent/command/", "connection", operation="accept-invitation", id=inviteinterceptor_connection_id) + assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + + # get connection and verify status + assert expected_agent_state(inviteinterceptor_url, "connection", inviteinterceptor_connection_id, "requested") + +@then(u'"{inviter}" sends a request_not_accepted error') +def step_impl(context, inviter): + inviter_url = context.config.userdata.get(inviter) + inviter_connection_id = context.connection_id_dict[inviter][context.invitee_name] + + # TODO It is expected that accept-request should send a request not accepted error, not a 500 + (resp_status, resp_text) = agent_backchannel_POST(inviter_url + "/agent/command/", "connection", operation="accept-request", id=inviter_connection_id) + # TODO once bug 418 has been fixed change this assert to the proper response code. + # bug reference URL: https://app.zenhub.com/workspaces/von---verifiable-organization-network-5adf53987ccbaa70597dbec0/issues/hyperledger/aries-cloudagent-python/418 + assert resp_status == 406, f'resp_status {resp_status} is not 406; {resp_text}' + #assert resp_status == 500 + + # Invitee should still be active based on the inviter connection id. + #assert connection_status(inviter_url, inviter_connection_id, ["complete"]) + +@given(u'"{inviter}" generated a multi-use connection invitation') +def step_impl(context, inviter): + context.execute_steps(''' + When "''' + inviter + '''" generates a connection invitation + ''') + + +@when(u'"{sender}" and "{receiver}" complete the connection process') +def step_impl(context, sender, receiver): + context.execute_steps(u''' + When "''' + receiver + '''" receives the connection invitation + And "''' + receiver + '''" sends a connection request to "''' + sender + '''" + And "''' + sender + '''" receives the connection request + And "''' + sender + '''" sends a connection response to "''' + receiver + '''" + And "''' + receiver + '''" receives the connection response + And "''' + receiver + '''" sends trustping to "''' + sender + '''" + ''') + +@then('"{inviter}" and "{invitee}" are able to complete the connection') +def step_impl(context): + raise NotImplementedError('STEP: Then "Acme" and "Bob" are able to complete the connection') + + +@then(u'"{receiver}" and "{sender}" have another connection') +def step_impl(context, receiver, sender): + context.execute_steps(u''' + Then "''' + sender + '''" and "''' + receiver + '''" have a connection + ''') + + +@given(u'"Bob" has Invalid DID Method') +def step_impl(context): + raise NotImplementedError(u'STEP: Given "Bob" has Invalid DID Method') + + +@then(u'"Acme" sends an request not accepted error') +def step_impl(context): + raise NotImplementedError(u'STEP: Then "Acme" sends an request not accepted error') + + +@then(u'the state of "Acme" is reset to Null') +def step_impl(context): + raise NotImplementedError(u'STEP: Then the state of "Acme" is reset to Null') + + +@then(u'the state of "Bob" is reset to Null') +def step_impl(context): + raise NotImplementedError(u'STEP: Then the state of "Bob" is reset to Null') + + +@given(u'"Bob" has unknown endpoint protocols') +def step_impl(context): + raise NotImplementedError(u'STEP: Given "Bob" has unknown endpoint protocols') diff --git a/demo/features/steps/test.py b/demo/features/steps/test.py new file mode 100644 index 0000000000..a2e34211f1 --- /dev/null +++ b/demo/features/steps/test.py @@ -0,0 +1,17 @@ +from behave import given, when, then, step + +@given(u'an account with "2400" asset points') +def step_impl(context): + pass + +@step(u'the account rofile is tagged as "fraudulent"') +def step_impl(context): + pass + +@when(u'the account owner trades his asset') +def step_impl(context): + pass + +@then(u'the application should prompt an "XXXX" error') +def step_impl(context): + pass diff --git a/demo/features/test.feature b/demo/features/test.feature new file mode 100644 index 0000000000..01b750b0a2 --- /dev/null +++ b/demo/features/test.feature @@ -0,0 +1,10 @@ +Feature: Application can validate a transaction based on specific + tags associated in the account profile + + @fraudulent + Scenario: Fraudulent tagged account trades an asset + Given an account with "2400" asset points + But the account profile is tagged as "fraudulent" + When the account owner trades his asset + Then the application should prompt an "XXXX" error + \ No newline at end of file diff --git a/demo/requirements.behave.txt b/demo/requirements.behave.txt new file mode 100644 index 0000000000..b0d3114f5b --- /dev/null +++ b/demo/requirements.behave.txt @@ -0,0 +1,2 @@ +behave +allure-behave diff --git a/demo/run_bdd b/demo/run_bdd new file mode 100755 index 0000000000..40f3934327 --- /dev/null +++ b/demo/run_bdd @@ -0,0 +1,230 @@ +#!/bin/bash + +shopt -s nocasematch + +cd $(dirname $0) + +AGENT="agent_container" +ARGS="" + +TRACE_ENABLED="" +TRACE_TAG=acapy.events +if ! [ -z "$TRACE_TARGET_URL" ]; then + TRACE_TARGET=http://${TRACE_TARGET_URL}/ +else + TRACE_TARGET=log +fi +WEBHOOK_TARGET="" +if [ -z "$DOCKER_NET" ]; then + DOCKER_NET="bridge" +fi + +for i in "$@" +do + if [ ! -z "$SKIP" ]; then + SKIP="" + continue + fi + case $i in + --events) + if [ "${AGENT}" = "performance" ]; then + echo -e "\nIgnoring the \"--events\" option when running the ${AGENT} agent.\n" + else + EVENTS=1 + fi + continue + ;; + --self-attested) + SELF_ATTESTED=1 + continue + ;; + --trace-log) + TRACE_ENABLED=1 + TRACE_TARGET=log + TRACE_TAG=acapy.events + continue + ;; + --trace-http) + TRACE_ENABLED=1 + TRACE_TARGET=http://${TRACE_TARGET_URL}/ + TRACE_TAG=acapy.events + continue + ;; + --webhook-url) + WEBHOOK_TARGET=http://${WEBHOOK_URL} + continue + ;; + --debug-ptvsd) + ENABLE_PTVSD=1 + continue + ;; + --debug-pycharm) + ENABLE_PYDEVD_PYCHARM=1 + continue + ;; + --debug-pycharm-controller-port) + PYDEVD_PYCHARM_CONTROLLER_PORT=$2 + SKIP=1 + continue + ;; + --debug-pycharm-agent-port) + PYDEVD_PYCHARM_AGENT_PORT=$2 + SKIP=1 + continue + ;; + --timing) + if [ ! -d "../logs" ]; then + mkdir ../logs && chmod -R uga+rws ../logs + fi + if [ "$(ls -ld ../logs | grep dr..r..rwx)" == "" ]; then + echo "Error: To use the --timing parameter, the directory '../logs' must exist and all users must be able to write to it." + echo "For example, to create the directory and then set the permissions use: 'mkdir ../logs; chmod uga+rws ../logs'" + exit 1 + fi + continue + ;; + --bg) + if [ "${AGENT}" = "alice" ] || [ "${AGENT}" = "faber" ] || [ "${AGENT}" = "acme" ]; then + DOCKER_OPTS="-d" + echo -e "\nRunning in ${AGENT} in the background. Note that you cannot use the command line console in this mode." + echo To see the logs use: \"docker logs ${AGENT}\". + echo While viewing logs, hit CTRL-C to return to the command line. + echo To stop the agent, use: \"docker stop ${AGENT}\". The docker environment will + echo -e "be removed on stop.\n\n" + else + echo The "bg" option \(for running docker in detached mode\) is only for agents Alice, Faber and Acme. + echo Ignoring... + fi + continue + ;; + --help) + cat <; --debug-pycharm-controller-port + --debug-pycharm; --debug-ptvsd + +EOF + exit 0 + ;; + esac + ARGS="${ARGS:+$ARGS }$i" +done + +AGENT_MODULE="agent_container" +AGENT_PORT=8020 +AGENT_PORT_RANGE=8020-8099 + +echo "Preparing agent image..." +docker build -q -t faber-alice-demo -f ../docker/Dockerfile.demo .. || exit 1 +docker build -q -t aries-bdd-image -f ../docker/Dockerfile.bdd .. || exit 1 + +if [ ! -z "$DOCKERHOST" ]; then + # provided via APPLICATION_URL environment variable + export RUNMODE="docker" +elif [ -z "${PWD_HOST_FQDN}" ]; then + DOCKERHOST=`docker run --rm --net=host eclipse/che-ip` + export RUNMODE="docker" +else + PWD_HOST="${PWD_HOST_FQDN}" + if [ "$PWD_HOST_FQDN" = "labs.play-with-docker.com" ]; then + export ETH_CONFIG="eth1" + elif [ "$PWD_HOST_FQDN" = "play-with-docker.vonx.io" ]; then + export ETH_CONFIG="eth0" + else + export ETH_CONFIG="eth0" + fi + MY_HOST=`ifconfig ${ETH_CONFIG} | grep inet | cut -d':' -f2 | cut -d' ' -f1 | sed 's/\./\-/g'` + export DOCKERHOST="ip${MY_HOST}-${SESSION_ID}-{PORT}.direct.${PWD_HOST_FQDN}" + export RUNMODE="pwd" +fi + +# check if ngrok is running on our $AGENT_PORT (don't override if AGENT_ENDPOINT is already set) +if [ -z "$AGENT_ENDPOINT" ] && [ "$RUNMODE" == "docker" ]; then + echo "Trying to detect ngrok service endpoint" + JQ=${JQ:-`which jq`} + if [ -x "$JQ" ]; then + NGROK_ENDPOINT=$(curl --silent localhost:4040/api/tunnels | $JQ -r '.tunnels[0].public_url') + if [ -z "$NGROK_ENDPOINT" ] || [ "$NGROK_ENDPOINT" = "null" ]; then + echo "ngrok not detected for agent endpoint" + else + export AGENT_ENDPOINT=$NGROK_ENDPOINT + echo "Detected ngrok agent endpoint [$AGENT_ENDPOINT]" + fi + else + echo "jq not found" + fi +fi + +echo $DOCKERHOST + +DOCKER_ENV="-e LOG_LEVEL=${LOG_LEVEL} -e RUNMODE=${RUNMODE} -e DOCKERHOST=${DOCKERHOST}" +if ! [ -z "$AGENT_PORT" ]; then + DOCKER_ENV="${DOCKER_ENV} -e AGENT_PORT=${AGENT_PORT}" +fi +if ! [ -z "$POSTGRES" ]; then + DOCKER_ENV="${DOCKER_ENV} -e POSTGRES=1 -e RUST_BACKTRACE=1" +fi +if ! [ -z "$LEDGER_URL" ]; then + GENESIS_URL="${LEDGER_URL}/genesis" + DOCKER_ENV="${DOCKER_ENV} -e LEDGER_URL=${LEDGER_URL}" +fi +if ! [ -z "$GENESIS_URL" ]; then + DOCKER_ENV="${DOCKER_ENV} -e GENESIS_URL=${GENESIS_URL}" +fi +if ! [ -z "$AGENT_ENDPOINT" ]; then + DOCKER_ENV="${DOCKER_ENV} -e AGENT_ENDPOINT=${AGENT_ENDPOINT}" +fi +if ! [ -z "$EVENTS" ]; then + DOCKER_ENV="${DOCKER_ENV} -e EVENTS=1" +fi +if ! [ -z "$SELF_ATTESTED" ]; then + DOCKER_ENV="${DOCKER_ENV} -e SELF_ATTESTED=${SELF_ATTESTED}" +fi +if ! [ -z "$TRACE_TARGET" ]; then + DOCKER_ENV="${DOCKER_ENV} -e TRACE_TARGET=${TRACE_TARGET}" + DOCKER_ENV="${DOCKER_ENV} -e TRACE_TAG=${TRACE_TAG}" + DOCKER_ENV="${DOCKER_ENV} -e TRACE_ENABLED=${TRACE_ENABLED}" +fi +if ! [ -z "$WEBHOOK_TARGET" ]; then + DOCKER_ENV="${DOCKER_ENV} -e WEBHOOK_TARGET=${WEBHOOK_TARGET}" +fi +# if $TAILS_NETWORK is specified it will override any previously specified $DOCKER_NET +if ! [ -z "$TAILS_NETWORK" ]; then + DOCKER_NET="${TAILS_NETWORK}" + DOCKER_ENV="${DOCKER_ENV} -e TAILS_NETWORK=${TAILS_NETWORK}" + DOCKER_ENV="${DOCKER_ENV} -e TAILS_NGROK_NAME=ngrok-tails-server" +fi +if ! [ -z "$PUBLIC_TAILS_URL" ]; then + DOCKER_ENV="${DOCKER_ENV} -e PUBLIC_TAILS_URL=${PUBLIC_TAILS_URL}" +fi +if ! [ -z "$TAILS_FILE_COUNT" ]; then + DOCKER_ENV="${DOCKER_ENV} -e TAILS_FILE_COUNT=${TAILS_FILE_COUNT}" +fi + +if ! [ -z "${ENABLE_PYDEVD_PYCHARM}" ]; then + DOCKER_ENV="${DOCKER_ENV} -e ENABLE_PYDEVD_PYCHARM=${ENABLE_PYDEVD_PYCHARM} -e PYDEVD_PYCHARM_CONTROLLER_PORT=${PYDEVD_PYCHARM_CONTROLLER_PORT} -e PYDEVD_PYCHARM_AGENT_PORT=${PYDEVD_PYCHARM_AGENT_PORT}" +fi + +# on Windows, docker run needs to be prefixed by winpty +if [ "$OSTYPE" = "msys" ]; then + DOCKER="winpty docker" +fi +DOCKER=${DOCKER:-docker} + +$DOCKER run --name $AGENT --rm -it ${DOCKER_OPTS} \ + --network=${DOCKER_NET} \ + -p 0.0.0.0:$AGENT_PORT_RANGE:$AGENT_PORT_RANGE \ + -v "/$(pwd)/../logs:/home/indy/logs" \ + $DOCKER_ENV \ + aries-bdd-image $AGENT_MODULE --port $AGENT_PORT $ARGS diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py new file mode 100644 index 0000000000..c96e02d5da --- /dev/null +++ b/demo/runners/agent_container.py @@ -0,0 +1,498 @@ +import asyncio +import json +import logging +import os +import random +import sys +import time + +from qrcode import QRCode + +from aiohttp import ClientError + +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from runners.support.agent import ( # noqa:E402 + DemoAgent, + default_genesis_txns, + start_mediator_agent, + connect_wallet_to_mediator, +) +from runners.support.utils import ( # noqa:E402 + log_msg, + log_status, + log_timer, + prompt, + prompt_loop, + require_indy, +) + + +CRED_PREVIEW_TYPE = "https://didcomm.org/issue-credential/2.0/credential-preview" +SELF_ATTESTED = os.getenv("SELF_ATTESTED") +TAILS_FILE_COUNT = int(os.getenv("TAILS_FILE_COUNT", 100)) + +logging.basicConfig(level=logging.WARNING) +LOGGER = logging.getLogger(__name__) + + +class AriesAgent(DemoAgent): + def __init__( + self, + ident: str, + http_port: int, + admin_port: int, + no_auto: bool = False, + **kwargs, + ): + super().__init__( + ident, + http_port, + admin_port, + prefix="Aries", + extra_args=[] + if no_auto + else ["--auto-accept-invites", "--auto-accept-requests"], + **kwargs, + ) + self.connection_id = None + self._connection_ready = None + self.cred_state = {} + # TODO define a dict to hold credential attributes + # based on cred_def_id + self.cred_attrs = {} + + async def detect_connection(self): + await self._connection_ready + self._connection_ready = None + + @property + def connection_ready(self): + return self._connection_ready.done() and self._connection_ready.result() + + async def handle_oob_invitation(self, message): + pass + + async def handle_connections(self, message): + # a bit of a hack, but for the mediator connection self._connection_ready + # will be None + if not self._connection_ready: + return + + conn_id = message["connection_id"] + if message["state"] == "invitation": + self.connection_id = conn_id + if conn_id == self.connection_id: + if ( + message["rfc23_state"] in ["completed", "response-sent"] + and not self._connection_ready.done() + ): + self.log("Connected") + self._connection_ready.set_result(True) + + async def handle_issue_credential_v2_0(self, message): + state = message["state"] + cred_ex_id = message["cred_ex_id"] + prev_state = self.cred_state.get(cred_ex_id) + if prev_state == state: + return # ignore + self.cred_state[cred_ex_id] = state + + self.log(f"Credential: state = {state}, cred_ex_id = {cred_ex_id}") + + if state == "request-received": + log_status("#17 Issue credential to X") + # issue credential based on offer preview in cred ex record + await self.admin_POST( + f"/issue-credential-2.0/records/{cred_ex_id}/issue", + {"comment": f"Issuing credential, exchange {cred_ex_id}"}, + ) + + async def handle_issue_credential_v2_0_indy(self, message): + rev_reg_id = message.get("rev_reg_id") + cred_rev_id = message.get("cred_rev_id") + if rev_reg_id and cred_rev_id: + self.log(f"Revocation registry ID: {rev_reg_id}") + self.log(f"Credential revocation ID: {cred_rev_id}") + + async def handle_issuer_cred_rev(self, message): + pass + + async def handle_present_proof(self, message): + state = message["state"] + + pres_ex_id = message["presentation_exchange_id"] + self.log(f"Presentation: state = {state}, pres_ex_id = {pres_ex_id}") + + if state == "presentation_received": + log_status("#27 Process the proof provided by X") + log_status("#28 Check if proof is valid") + proof = await self.admin_POST( + f"/present-proof/records/{pres_ex_id}/verify-presentation" + ) + self.log("Proof =", proof["verified"]) + + async def handle_basicmessages(self, message): + self.log("Received message:", message["content"]) + + async def generate_invitation(self, use_did_exchange: bool, auto_accept: bool = True, display_qr: bool = False, wait: bool = False): + self._connection_ready = asyncio.Future() + with log_timer("Generate invitation duration:"): + # Generate an invitation + log_status("#7 Create a connection to alice and print out the invite details") + invi_rec = await self.get_invite(use_did_exchange, auto_accept) + + if display_qr: + qr = QRCode(border=1) + qr.add_data(invi_rec["invitation_url"]) + log_msg( + "Use the following JSON to accept the invite from another demo agent." + " Or use the QR code to connect from a mobile agent." + ) + log_msg(json.dumps(invi_rec["invitation"]), label="Invitation Data:", color=None) + qr.print_ascii(invert=True) + + if wait: + log_msg("Waiting for connection...") + await self.detect_connection() + + return invi_rec + + async def create_schema_and_cred_def(self, schema_name, schema_attrs, revocation): + with log_timer("Publish schema/cred def duration:"): + log_status("#3/4 Create a new schema/cred def on the ledger") + version = format( + "%d.%d.%d" + % ( + random.randint(1, 101), + random.randint(1, 101), + random.randint(1, 101), + ) + ) + (_, cred_def_id,) = await self.register_schema_and_creddef( # schema id + schema_name, + version, + schema_attrs, + support_revocation=revocation, + revocation_registry_size=TAILS_FILE_COUNT if revocation else None, + ) + return cred_def_id + + +class AgentContainer(): + def __init__( + self, + genesis_txns: str, + ident: str, + start_port: int, + no_auto: bool = False, + revocation: bool = False, + tails_server_base_url: str = None, + show_timing: bool = False, + multitenant: bool = False, + mediation: bool = False, + use_did_exchange: bool = False, + wallet_type: str = None, + seed: str = "random", + ): + # configuration parameters + self.genesis_txns = genesis_txns + self.ident = ident + self.start_port = start_port + self.no_auto = no_auto + self.revocation = revocation + self.tails_server_base_url = tails_server_base_url + self.show_timing = show_timing + self.multitenant = multitenant + self.mediation = mediation + self.use_did_exchange = use_did_exchange + self.wallet_type = wallet_type + self.seed = seed + + # local agent(s) + self.agent = None + self.mediator_agent = None + + async def initialize( + self, + the_agent: DemoAgent = None, + public_did: bool = False, + schema_name: str = None, + schema_attrs: list = None, + ): + """Startup agent(s), register DID, schema, cred def as appropriate.""" + + if not the_agent: + log_status( + "#1 Provision an agent and wallet, get back configuration details" + + (f" (Wallet type: {self.wallet_type})" if self.wallet_type else "") + ) + self.agent = AriesAgent( + self.ident, + self.start_port, + self.start_port + 1, + genesis_data = self.genesis_txns, + no_auto = self.no_auto, + tails_server_base_url = self.tails_server_base_url, + timing = self.show_timing, + revocation = self.revocation, + multitenant = self.multitenant, + mediation = self.mediation, + wallet_type = self.wallet_type, + seed = self.seed, + ) + else: + self.agent = the_agent + + await self.agent.listen_webhooks(self.start_port + 2) + + if public_did: + await self.agent.register_did() + + with log_timer("Startup duration:"): + await self.agent.start_process() + + log_msg("Admin URL is at:", self.agent.admin_url) + log_msg("Endpoint URL is at:", self.agent.endpoint) + + if self.mediation: + self.mediator_agent = await start_mediator_agent(self.start_port + 4, self.genesis_txns) + if not self.mediator_agent: + raise Exception("Mediator agent returns None :-(") + else: + self.mediator_agent = None + + if self.multitenant: + # create an initial managed sub-wallet (also mediated) + await self.agent.register_or_switch_wallet( + self.ident + ".initial", + public_did=public_did, + webhook_port=self.agent.get_new_webhook_port(), + mediator_agent=self.mediator_agent, + ) + elif self.mediation: + # we need to pre-connect the agent to its mediator + if not await connect_wallet_to_mediator(self.agent, self.mediator_agent): + raise Exception("Mediation setup FAILED :-(") + + if schema_name and schema_attrs: + if not public_did: + raise Exception("Can't create a schema/cred def without a public DID :-(") + # Create a schema + self.cred_def_id = await self.agent.create_schema_and_cred_def(schema_name, schema_attrs, self.revocation) + + async def terminate(self): + """Shut down any running agents.""" + + terminated = True + try: + if self.mediator_agent: + log_msg("Shutting down mediator agent ...") + await self.mediator_agent.terminate() + if self.agent: + log_msg("Shutting down agent ...") + await self.agent.terminate() + except Exception: + LOGGER.exception("Error terminating agent:") + terminated = False + + return terminated + + +async def test_main( + start_port: int, + no_auto: bool = False, + revocation: bool = False, + tails_server_base_url: str = None, + show_timing: bool = False, + multitenant: bool = False, + mediation: bool = False, + use_did_exchange: bool = False, + wallet_type: str = None, +): + """Test to startup a couple of agents.""" + + genesis = await default_genesis_txns() + if not genesis: + print("Error retrieving ledger genesis transactions") + sys.exit(1) + + faber_container = None + alice_container = None + try: + # initialize the containers + faber_container = AgentContainer( + genesis, + "Faber.agent", + start_port, + no_auto = no_auto, + revocation = revocation, + tails_server_base_url = tails_server_base_url, + show_timing = show_timing, + multitenant = multitenant, + mediation = mediation, + use_did_exchange = use_did_exchange, + wallet_type = wallet_type, + ) + alice_container = AgentContainer( + genesis, + "Alice.agent", + start_port+10, + no_auto = no_auto, + revocation = False, + show_timing = show_timing, + multitenant = multitenant, + mediation = mediation, + use_did_exchange = use_did_exchange, + wallet_type = wallet_type, + seed = None, + ) + + # start the agents - faber gets a public DID and schema/cred def + await faber_container.initialize( + public_did = True, + schema_name = "degree schema", + schema_attrs = ["name", "date", "degree", "grade",], + ) + await alice_container.initialize( + public_did = False, + ) + + # TODO faber create invitation + # TODO alice accept invitation + # TODO wait for faber connection to activate + # TODO faber issue credential to alice + # TODO alice check for received credential + + log_msg("Sleeping ...") + await asyncio.sleep(3.0) + + except Exception as e: + LOGGER.exception("Error initializing agent:", e) + raise(e) + + finally: + terminated = True + try: + # shut down containers at the end of the test + if alice_container: + log_msg("Shutting down alice agent ...") + await alice_container.terminate() + if faber_container: + log_msg("Shutting down faber agent ...") + await faber_container.terminate() + except Exception as e: + LOGGER.exception("Error terminating agent:", e) + terminated = False + + await asyncio.sleep(0.1) + + if not terminated: + os._exit(1) + + await asyncio.sleep(2.0) + os._exit(1) + + +if __name__ == "__main__": + import argparse + + parser = argparse.ArgumentParser(description="Runs an Aries demo agent.") + parser.add_argument("--no-auto", action="store_true", help="Disable auto issuance") + parser.add_argument( + "-p", + "--port", + type=int, + default=8020, + metavar=(""), + help="Choose the starting port number to listen on", + ) + parser.add_argument( + "--did-exchange", + action="store_true", + help="Use DID-Exchange protocol for connections", + ) + parser.add_argument( + "--revocation", action="store_true", help="Enable credential revocation" + ) + parser.add_argument( + "--tails-server-base-url", + type=str, + metavar=(""), + help="Tals server base url", + ) + parser.add_argument( + "--timing", action="store_true", help="Enable timing information" + ) + parser.add_argument( + "--multitenant", action="store_true", help="Enable multitenancy options" + ) + parser.add_argument( + "--mediation", action="store_true", help="Enable mediation functionality" + ) + parser.add_argument( + "--wallet-type", + type=str, + metavar="", + help="Set the agent wallet type", + ) + args = parser.parse_args() + + if args.did_exchange and args.mediation: + raise Exception( + "DID-Exchange connection protocol is not (yet) compatible with mediation" + ) + + ENABLE_PYDEVD_PYCHARM = os.getenv("ENABLE_PYDEVD_PYCHARM", "").lower() + ENABLE_PYDEVD_PYCHARM = ENABLE_PYDEVD_PYCHARM and ENABLE_PYDEVD_PYCHARM not in ( + "false", + "0", + ) + PYDEVD_PYCHARM_HOST = os.getenv("PYDEVD_PYCHARM_HOST", "localhost") + PYDEVD_PYCHARM_CONTROLLER_PORT = int( + os.getenv("PYDEVD_PYCHARM_CONTROLLER_PORT", 5001) + ) + + if ENABLE_PYDEVD_PYCHARM: + try: + import pydevd_pycharm + + print( + "Aries aca-py remote debugging to " + f"{PYDEVD_PYCHARM_HOST}:{PYDEVD_PYCHARM_CONTROLLER_PORT}" + ) + pydevd_pycharm.settrace( + host=PYDEVD_PYCHARM_HOST, + port=PYDEVD_PYCHARM_CONTROLLER_PORT, + stdoutToServer=True, + stderrToServer=True, + suspend=False, + ) + except ImportError: + print("pydevd_pycharm library was not found") + + require_indy() + + tails_server_base_url = args.tails_server_base_url or os.getenv("PUBLIC_TAILS_URL") + + if args.revocation and not tails_server_base_url: + raise Exception( + "If revocation is enabled, --tails-server-base-url must be provided" + ) + + try: + asyncio.get_event_loop().run_until_complete( + test_main( + args.port, + args.no_auto, + args.revocation, + tails_server_base_url, + args.timing, + args.multitenant, + args.mediation, + args.did_exchange, + args.wallet_type, + ) + ) + except KeyboardInterrupt: + os._exit(1) diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index 5ff379c154..8cbff3e3df 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -361,6 +361,7 @@ async def register_did( raise Exception(f"Error registering DID, response code {resp.status}") nym_info = await resp.json() self.did = nym_info["did"] + self.log(f"nym_info: {nym_info}") if self.multitenant: if not self.agency_wallet_did: self.agency_wallet_did = self.did diff --git a/docker/Dockerfile.bdd b/docker/Dockerfile.bdd new file mode 100644 index 0000000000..dfe439c878 --- /dev/null +++ b/docker/Dockerfile.bdd @@ -0,0 +1,6 @@ +FROM faber-alice-demo + +# Install bdd dependencies +RUN pip3 install --no-cache-dir -r demo/requirements.behave.txt + +ENTRYPOINT ["bash", "-c", "demo/ngrok-wait.sh \"$@\"", "--"] From 6b6082e04abceb5396a6d9e6383719748aab8f7f Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Tue, 16 Feb 2021 12:58:59 +0530 Subject: [PATCH 035/243] Updated test cases for messages in endorse_transaction folder Signed-off-by: Harsh Multani --- .../v1_0/messages/tests/test_cancel_transaction.py | 8 +++++++- .../messages/tests/test_endorsed_transaction_response.py | 9 ++++++++- .../v1_0/messages/tests/test_messages_attach.py | 8 +++++++- .../messages/tests/test_refused_transaction_response.py | 8 +++++++- .../v1_0/messages/tests/test_transaction_job_to_send.py | 8 +++++++- .../v1_0/messages/tests/test_transaction_request.py | 8 +++++++- .../v1_0/messages/tests/test_transaction_resend.py | 8 +++++++- 7 files changed, 50 insertions(+), 7 deletions(-) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_cancel_transaction.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_cancel_transaction.py index f64a2b7826..a233649b62 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_cancel_transaction.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_cancel_transaction.py @@ -25,6 +25,12 @@ def test_init(self): assert self.cancel_transaction.thread_id == self.test_thread_id assert self.cancel_transaction.state == self.test_state + def test_type(self): + """Test type.""" + assert self.cancel_transaction._type == DIDCommPrefix.qualify_current( + CANCEL_TRANSACTION + ) + @mock.patch( "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." "cancel_transaction.CancelTransactionSchema.load" @@ -33,7 +39,7 @@ def test_deserialize(self, mock_cancel_transaction_schema_load): """ Test deserialization. """ - obj = {"obj": "obj"} + obj = self.cancel_transaction cancel_transaction = CancelTransaction.deserialize(obj) mock_cancel_transaction_schema_load.assert_called_once_with(obj) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_endorsed_transaction_response.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_endorsed_transaction_response.py index 91579ebd0b..9ca343c73c 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_endorsed_transaction_response.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_endorsed_transaction_response.py @@ -50,6 +50,13 @@ def test_init(self): assert self.endorsed_transaction_response.state == self.test_state assert self.endorsed_transaction_response.endorser_did == self.test_endorser_did + def test_type(self): + """Test type.""" + assert ( + self.endorsed_transaction_response._type + == DIDCommPrefix.qualify_current(ENDORSED_TRANSACTION_RESPONSE) + ) + @mock.patch( "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." "endorsed_transaction_response.EndorsedTransactionResponseSchema.load" @@ -58,7 +65,7 @@ def test_deserialize(self, mock_endorsed_transaction_response_schema_load): """ Test deserialization. """ - obj = {"obj": "obj"} + obj = self.endorsed_transaction_response endorsed_transaction_response = EndorsedTransactionResponse.deserialize(obj) mock_endorsed_transaction_response_schema_load.assert_called_once_with(obj) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_messages_attach.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_messages_attach.py index b7efd6041d..0e0d1e5a29 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_messages_attach.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_messages_attach.py @@ -58,6 +58,12 @@ def test_init(self): self.messages_attach.data["json"]["taaAcceptance"]["time"] == self.test_time ) + def test_type(self): + """Test type.""" + assert self.messages_attach._type == DIDCommPrefix.qualify_current( + ATTACHED_MESSAGE + ) + @mock.patch( "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." "messages_attach.MessagesAttachSchema.load" @@ -66,7 +72,7 @@ def test_deserialize(self, mock_messages_attach_schema_load): """ Test deserialization. """ - obj = {"obj": "obj"} + obj = self.messages_attach messages_attach = MessagesAttach.deserialize(obj) mock_messages_attach_schema_load.assert_called_once_with(obj) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_refused_transaction_response.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_refused_transaction_response.py index 5ef789e2ac..071668d371 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_refused_transaction_response.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_refused_transaction_response.py @@ -45,6 +45,12 @@ def test_init(self): assert self.refused_transaction_response.state == self.test_state assert self.refused_transaction_response.endorser_did == self.test_endorser_did + def test_type(self): + """Test type.""" + assert self.refused_transaction_response._type == DIDCommPrefix.qualify_current( + REFUSED_TRANSACTION_RESPONSE + ) + @mock.patch( "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." "refused_transaction_response.RefusedTransactionResponseSchema.load" @@ -53,7 +59,7 @@ def test_deserialize(self, mock_refused_transaction_response_schema_load): """ Test deserialization. """ - obj = {"obj": "obj"} + obj = self.refused_transaction_response refused_transaction_response = RefusedTransactionResponse.deserialize(obj) mock_refused_transaction_response_schema_load.assert_called_once_with(obj) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_job_to_send.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_job_to_send.py index a51ad42da2..bfd1ae18e7 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_job_to_send.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_job_to_send.py @@ -21,6 +21,12 @@ def test_init(self): """Test initialization.""" assert self.transaction_job_to_send.job == self.test_job + def test_type(self): + """Test type.""" + assert self.transaction_job_to_send._type == DIDCommPrefix.qualify_current( + TRANSACTION_JOB_TO_SEND + ) + @mock.patch( "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." "transaction_job_to_send.TransactionJobToSendSchema.load" @@ -29,7 +35,7 @@ def test_deserialize(self, mock_transaction_job_to_send_schema_load): """ Test deserialization. """ - obj = {"obj": "obj"} + obj = self.transaction_job_to_send transaction_job_to_send = TransactionJobToSend.deserialize(obj) mock_transaction_job_to_send_schema_load.assert_called_once_with(obj) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_request.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_request.py index 1cc60c179f..8bbb69ae12 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_request.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_request.py @@ -68,6 +68,12 @@ def test_init(self): assert self.transaction_request.transaction_type == self.test_transaction_type assert self.transaction_request.messages_attach == self.test_messages_attach + def test_type(self): + """Test type.""" + assert self.transaction_request._type == DIDCommPrefix.qualify_current( + TRANSACTION_REQUEST + ) + @mock.patch( "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." "transaction_request.TransactionRequestSchema.load" @@ -76,7 +82,7 @@ def test_deserialize(self, mock_transaction_request_schema_load): """ Test deserialization. """ - obj = {"obj": "obj"} + obj = self.transaction_request transaction_request = TransactionRequest.deserialize(obj) mock_transaction_request_schema_load.assert_called_once_with(obj) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_resend.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_resend.py index d9c4f978b4..666a52435c 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_resend.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/messages/tests/test_transaction_resend.py @@ -25,6 +25,12 @@ def test_init(self): assert self.transaction_resend.thread_id == self.test_thread_id assert self.transaction_resend.state == self.test_state + def test_type(self): + """Test type.""" + assert self.transaction_resend._type == DIDCommPrefix.qualify_current( + TRANSACTION_RESEND + ) + @mock.patch( "aries_cloudagent.protocols.endorse_transaction.v1_0.messages." "transaction_resend.TransactionResendSchema.load" @@ -33,7 +39,7 @@ def test_deserialize(self, mock_transaction_resend_schema_load): """ Test deserialization. """ - obj = {"obj": "obj"} + obj = self.transaction_resend transaction_resend = TransactionResend.deserialize(obj) mock_transaction_resend_schema_load.assert_called_once_with(obj) From 7f70ae4f7513aeddebf93408625368e99fd8b9fc Mon Sep 17 00:00:00 2001 From: Ethan Sung Date: Tue, 16 Feb 2021 16:41:41 +0900 Subject: [PATCH 036/243] Fix incorrect responder profile Signed-off-by: Ethan Sung --- aries_cloudagent/transport/inbound/session.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/aries_cloudagent/transport/inbound/session.py b/aries_cloudagent/transport/inbound/session.py index aae37a0996..120fe8d416 100644 --- a/aries_cloudagent/transport/inbound/session.py +++ b/aries_cloudagent/transport/inbound/session.py @@ -4,7 +4,9 @@ import logging from typing import Callable, Sequence, Union +from ...admin.server import AdminResponder from ...core.profile import Profile +from ...messaging.responder import BaseResponder from ...multitenant.manager import MultitenantManager from ..error import WireFormatError @@ -169,6 +171,11 @@ async def handle_relay_context(self, payload_enc: Union[str, bytes]): self.profile.context, wallet ) + # Update a responder profile with wallet profile + responder: AdminResponder = profile.inject(BaseResponder) + responder._profile = profile + profile.context.injector.bind_instance(BaseResponder, responder) + # overwrite session profile with wallet profile self.profile = profile From e49fd168d7cc3f3854f69cbb6d23423e3d6c6261 Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 16 Feb 2021 16:19:38 +0000 Subject: [PATCH 037/243] cover easy modules 100% Signed-off-by: sklump --- aries_cloudagent/core/tests/test_in_memory.py | 4 + .../multitenant/admin/tests/test_routes.py | 94 +++++++ .../v1_0/tests/test_mediation_manager.py | 8 +- .../present_proof/v1_0/tests/test_routes.py | 238 +++++++++++++++--- 4 files changed, 303 insertions(+), 41 deletions(-) diff --git a/aries_cloudagent/core/tests/test_in_memory.py b/aries_cloudagent/core/tests/test_in_memory.py index 819dfc8565..506ac5bb06 100644 --- a/aries_cloudagent/core/tests/test_in_memory.py +++ b/aries_cloudagent/core/tests/test_in_memory.py @@ -17,3 +17,7 @@ async def test_properties(self, profile): assert "InMemoryProfile" in str(profile) assert profile.created + + @pytest.mark.asyncio + async def test_profile_clear(self): + InMemoryProfile.test_profile(settings=None, bind={"a": None}) diff --git a/aries_cloudagent/multitenant/admin/tests/test_routes.py b/aries_cloudagent/multitenant/admin/tests/test_routes.py index 6ecd75c72e..c4820a71d3 100644 --- a/aries_cloudagent/multitenant/admin/tests/test_routes.py +++ b/aries_cloudagent/multitenant/admin/tests/test_routes.py @@ -276,6 +276,100 @@ async def test_wallet_update(self): {"wallet_id": "test-wallet-id", "settings": settings} ) + async def test_wallet_update_no_wallet_webhook_urls(self): + self.request.match_info = {"wallet_id": "test-wallet-id"} + body = { + "label": "test-label", + "image_url": "test-image-url", + } + self.request.json = async_mock.CoroutineMock(return_value=body) + mock_multitenant_mgr = self.session_inject[MultitenantManager] + + with async_mock.patch.object(test_module.web, "json_response") as mock_response: + settings = { + "default_label": body["label"], + "image_url": body["image_url"], + } + wallet_mock = async_mock.MagicMock( + serialize=async_mock.MagicMock( + return_value={ + "wallet_id": "test-wallet-id", + "settings": settings, + } + ) + ) + mock_multitenant_mgr.update_wallet = async_mock.CoroutineMock( + return_value=wallet_mock + ) + + await test_module.wallet_update(self.request) + + mock_multitenant_mgr.update_wallet.assert_called_once_with( + "test-wallet-id", + settings, + ) + mock_response.assert_called_once_with( + {"wallet_id": "test-wallet-id", "settings": settings} + ) + + async def test_wallet_update_empty_wallet_webhook_urls(self): + self.request.match_info = {"wallet_id": "test-wallet-id"} + body = { + "wallet_webhook_urls": [], + "label": "test-label", + "image_url": "test-image-url", + } + self.request.json = async_mock.CoroutineMock(return_value=body) + mock_multitenant_mgr = self.session_inject[MultitenantManager] + + with async_mock.patch.object(test_module.web, "json_response") as mock_response: + settings = { + "wallet.webhook_urls": [], + "wallet.dispatch_type": "base", + "default_label": body["label"], + "image_url": body["image_url"], + } + wallet_mock = async_mock.MagicMock( + serialize=async_mock.MagicMock( + return_value={ + "wallet_id": "test-wallet-id", + "settings": settings, + } + ) + ) + mock_multitenant_mgr.update_wallet = async_mock.CoroutineMock( + return_value=wallet_mock + ) + + await test_module.wallet_update(self.request) + + mock_multitenant_mgr.update_wallet.assert_called_once_with( + "test-wallet-id", + settings, + ) + mock_response.assert_called_once_with( + {"wallet_id": "test-wallet-id", "settings": settings} + ) + + async def test_wallet_update_wallet_settings_x(self): + self.request.match_info = {"wallet_id": "test-wallet-id"} + body = { + "wallet_webhook_urls": ["test-webhook-url"], + "label": "test-label", + "image_url": "test-image-url", + } + self.request.json = async_mock.CoroutineMock(return_value=body) + mock_multitenant_mgr = self.session_inject[MultitenantManager] + + with async_mock.patch.object(test_module.web, "json_response") as mock_response: + mock_multitenant_mgr.update_wallet = async_mock.CoroutineMock( + side_effect=test_module.WalletSettingsError("bad settings") + ) + + with self.assertRaises(test_module.web.HTTPBadRequest) as context: + await test_module.wallet_update(self.request) + assert "bad settings" in str(context.exception) + async def test_wallet_update_no_params(self): self.request.match_info = {"wallet_id": "test-wallet-id"} body = {} diff --git a/aries_cloudagent/protocols/coordinate_mediation/v1_0/tests/test_mediation_manager.py b/aries_cloudagent/protocols/coordinate_mediation/v1_0/tests/test_mediation_manager.py index d616c8c280..d2505ccfb9 100644 --- a/aries_cloudagent/protocols/coordinate_mediation/v1_0/tests/test_mediation_manager.py +++ b/aries_cloudagent/protocols/coordinate_mediation/v1_0/tests/test_mediation_manager.py @@ -250,13 +250,19 @@ async def test_set_get_default_mediator_by_id( await manager._set_default_mediator_id("test", session) assert await manager.get_default_mediator_id() == "test" - async def test_set_set_get_default_mediator_by_id( + async def test_set_set_get_default_mediator_id( self, manager: MediationManager, session ): await manager._set_default_mediator_id("test", session) await manager._set_default_mediator_id("updated", session) assert await manager.get_default_mediator_id() == "updated" + async def test_set_default_mediator_by_id(self, manager: MediationManager): + with async_mock.patch.object( + test_module.MediationRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_retrieve: + await manager.set_default_mediator_by_id("test") + async def test_clear_default_mediator(self, manager: MediationManager, session): await manager._set_default_mediator_id("test", session) assert await manager.get_default_mediator_id() diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py index 5ef9f0cb48..41ee4671a0 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py @@ -59,7 +59,10 @@ async def test_presentation_exchange_list(self): } with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -90,7 +93,10 @@ async def test_presentation_exchange_list_x(self): } with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -108,7 +114,10 @@ async def test_presentation_exchange_credentials_list_not_found(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -140,7 +149,10 @@ async def test_presentation_exchange_credentials_x(self): ) with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -172,7 +184,10 @@ async def test_presentation_exchange_credentials_list_single_referent(self): ) with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -200,14 +215,17 @@ async def test_presentation_exchange_credentials_list_multiple_referents(self): self.profile.context.injector.bind_instance( IndyHolder, async_mock.MagicMock( - get_credentials_for_presentation_request_by_referent=async_mock.CoroutineMock( - return_value=returned_credentials + get_credentials_for_presentation_request_by_referent=( + async_mock.CoroutineMock(return_value=returned_credentials) ) ), ) with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -228,7 +246,10 @@ async def test_presentation_exchange_retrieve(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_pres_ex: @@ -252,7 +273,10 @@ async def test_presentation_exchange_retrieve_not_found(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_pres_ex: @@ -274,7 +298,10 @@ async def test_presentation_exchange_retrieve_ser_x(self): connection_id="abc123", thread_id="thid123" ) with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_pres_ex: @@ -301,7 +328,10 @@ async def test_presentation_exchange_send_proposal(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview: @@ -349,10 +379,16 @@ async def test_presentation_exchange_send_proposal_not_ready(self): "aries_cloudagent.connections.models.conn_record.ConnRecord", autospec=True, ) as mock_connection_record, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.presentation_proposal.PresentationProposal", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.presentation_proposal.PresentationProposal" + ), autospec=True, ) as mock_proposal: @@ -375,7 +411,10 @@ async def test_presentation_exchange_send_proposal_x(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview: @@ -399,7 +438,10 @@ async def test_presentation_exchange_create_request(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True @@ -407,7 +449,10 @@ async def test_presentation_exchange_create_request(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange, async_mock.patch( "aries_cloudagent.indy.util.generate_pr_nonce", @@ -450,7 +495,10 @@ async def test_presentation_exchange_create_request_x(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True @@ -458,7 +506,10 @@ async def test_presentation_exchange_create_request_x(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange, async_mock.patch( "aries_cloudagent.indy.util.generate_pr_nonce", @@ -501,7 +552,10 @@ async def test_presentation_exchange_send_free_request(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True @@ -509,7 +563,10 @@ async def test_presentation_exchange_send_free_request(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -608,7 +665,10 @@ async def test_presentation_exchange_send_free_request_x(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -733,7 +793,10 @@ async def test_presentation_exchange_send_bound_request_not_found(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -775,7 +838,10 @@ async def test_presentation_exchange_send_bound_request_not_ready(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -798,12 +864,29 @@ async def test_presentation_exchange_send_bound_request_not_ready(self): with self.assertRaises(test_module.web.HTTPForbidden): await test_module.presentation_exchange_send_bound_request(self.request) + async def test_presentation_exchange_send_bound_request_px_rec_not_found(self): + self.request.json = async_mock.CoroutineMock(return_value={"trace": False}) + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module.V10PresentationExchange, + "retrieve_by_id", + async_mock.CoroutineMock(), + ) as mock_retrieve: + mock_retrieve.side_effect = StorageNotFoundError("no such record") + with self.assertRaises(test_module.web.HTTPNotFound) as context: + await test_module.presentation_exchange_send_bound_request(self.request) + assert "no such record" in str(context.exception) + async def test_presentation_exchange_send_bound_request_bad_state(self): self.request.json = async_mock.CoroutineMock(return_value={"trace": False}) self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -840,7 +923,10 @@ async def test_presentation_exchange_send_bound_request_x(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -907,7 +993,10 @@ async def test_presentation_exchange_send_presentation(self): ) as mock_presentation_manager, async_mock.patch.object( test_module, "PresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -945,6 +1034,20 @@ async def test_presentation_exchange_send_presentation(self): mock_presentation_exchange.serialize.return_value ) + async def test_presentation_exchange_send_presentation_px_rec_not_found(self): + self.request.json = async_mock.CoroutineMock(return_value={"trace": False}) + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module.V10PresentationExchange, + "retrieve_by_id", + async_mock.CoroutineMock(), + ) as mock_retrieve: + mock_retrieve.side_effect = StorageNotFoundError("no such record") + with self.assertRaises(test_module.web.HTTPNotFound) as context: + await test_module.presentation_exchange_send_presentation(self.request) + assert "no such record" in str(context.exception) + async def test_presentation_exchange_send_presentation_not_found(self): self.request.json = async_mock.CoroutineMock() self.request.match_info = {"pres_ex_id": "dummy"} @@ -966,7 +1069,10 @@ async def test_presentation_exchange_send_presentation_not_found(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1008,7 +1114,10 @@ async def test_presentation_exchange_send_presentation_not_ready(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1035,7 +1144,10 @@ async def test_presentation_exchange_send_presentation_bad_state(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1078,7 +1190,10 @@ async def test_presentation_exchange_send_presentation_x(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1124,7 +1239,10 @@ async def test_presentation_exchange_verify_presentation(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True @@ -1132,7 +1250,10 @@ async def test_presentation_exchange_verify_presentation(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1168,6 +1289,22 @@ async def test_presentation_exchange_verify_presentation(self): ) mock_response.assert_called_once_with({"thread_id": "sample-thread-id"}) + async def test_presentation_exchange_verify_presentation_px_rec_not_found(self): + self.request.json = async_mock.CoroutineMock(return_value={"trace": False}) + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module.V10PresentationExchange, + "retrieve_by_id", + async_mock.CoroutineMock(), + ) as mock_retrieve: + mock_retrieve.side_effect = StorageNotFoundError("no such record") + with self.assertRaises(test_module.web.HTTPNotFound) as context: + await test_module.presentation_exchange_verify_presentation( + self.request + ) + assert "no such record" in str(context.exception) + async def test_presentation_exchange_verify_presentation_not_found(self): self.request.match_info = {"pres_ex_id": "dummy"} self.profile.context.injector.bind_instance( @@ -1191,7 +1328,10 @@ async def test_presentation_exchange_verify_presentation_not_found(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1224,7 +1364,10 @@ async def test_presentation_exchange_verify_presentation_not_ready(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1253,7 +1396,10 @@ async def test_presentation_exchange_verify_presentation_bad_state(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1293,7 +1439,10 @@ async def test_presentation_exchange_verify_presentation_x(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1331,7 +1480,10 @@ async def test_presentation_exchange_remove(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1357,7 +1509,10 @@ async def test_presentation_exchange_remove_not_found(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1376,7 +1531,10 @@ async def test_presentation_exchange_remove_x(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: From 5cf6d11531846421a10d3d0ff346bda87467527a Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 16 Feb 2021 17:26:24 +0000 Subject: [PATCH 038/243] adjust Aries demo README to fit current admin API Signed-off-by: sklump --- demo/AriesOpenAPIDemo.md | 2 +- demo/collateral/1-Faber-Invitation-1.png | Bin 109703 -> 22567 bytes demo/collateral/1-Faber-Invitation-2.png | Bin 236709 -> 26391 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/AriesOpenAPIDemo.md b/demo/AriesOpenAPIDemo.md index cfba316447..6e6be8a031 100644 --- a/demo/AriesOpenAPIDemo.md +++ b/demo/AriesOpenAPIDemo.md @@ -223,7 +223,7 @@ We’ll start the demo by establishing a connection between the Alice and Faber ### Use the Faber Agent to Create an Invitation -In the Faber browser tab, execute the **`POST /connections/create-invitation`** endpoint. No input data is needed to be added for this call. If successful, you should see a connection Id, an invitation, and the invitation URL. The Ids will be different on each run. +In the Faber browser tab, navigate to the **`POST /connections/create-invitation`** endpoint. Replace the sample body with and empty production (`{}`) and execute the call. If successful, you should see a connection id, an invitation, and the invitation URL. The connection ids will be different on each run. **Hint: set an Alias on the Invitation, this makes it easier to find the Connection later on** diff --git a/demo/collateral/1-Faber-Invitation-1.png b/demo/collateral/1-Faber-Invitation-1.png index 09e7729378fc2e1cfd1183d74f9045bb9393b483..7dbb0183480b075093d1a3b1b14b768ed123045c 100644 GIT binary patch literal 22567 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 AlK=n! literal 109703 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 IqS5{T1!*&MPXGV_ diff --git a/demo/collateral/1-Faber-Invitation-2.png b/demo/collateral/1-Faber-Invitation-2.png index 5f16941a23da8bf122d9d59e9f171779f029d25f..a5c29f107efa89f6e44b1f32eede7cf8e0089b7f 100644 GIT binary patch literal 26391 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 H{NsNBZgfDf literal 236709 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 z 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�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 L{an^LB{Ts5hyzOi From 37316e7a53685d3668548021e0844a5aa720b584 Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 16 Feb 2021 19:01:28 +0000 Subject: [PATCH 039/243] allow problem report on present-proof protocol Signed-off-by: sklump --- .../v1_0/tests/test_routes.py | 4 +- .../v2_0/tests/test_routes.py | 2 - .../protocols/present_proof/v1_0/routes.py | 57 ++++ .../present_proof/v1_0/tests/test_routes.py | 243 +++++++++++++++--- 4 files changed, 262 insertions(+), 44 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/tests/test_routes.py b/aries_cloudagent/protocols/issue_credential/v1_0/tests/test_routes.py index 6ce3900e4a..450f46bc10 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/tests/test_routes.py @@ -1340,8 +1340,6 @@ async def test_credential_exchange_problem_report(self): with async_mock.patch.object( test_module, "ConnRecord", autospec=True ) as mock_conn_rec, async_mock.patch.object( - test_module, "CredentialManager", autospec=True - ) as mock_credential_manager, async_mock.patch.object( test_module, "V10CredentialExchange", autospec=True ) as mock_cred_ex, async_mock.patch.object( test_module, "ProblemReport", autospec=True @@ -1359,7 +1357,7 @@ async def test_credential_exchange_problem_report(self): connection_id=mock_cred_ex.retrieve_by_id.return_value.connection_id, ) - async def test_credential_exchange_problem_report_bad_cred_id(self): + async def test_credential_exchange_problem_report_bad_cred_ex_id(self): self.request.json = async_mock.CoroutineMock() self.request.match_info = {"cred_ex_id": "dummy"} diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py index c3ea434b84..7b46521793 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py @@ -1476,8 +1476,6 @@ async def test_credential_exchange_problem_report(self): with async_mock.patch.object( test_module, "ConnRecord", autospec=True ) as mock_conn_rec, async_mock.patch.object( - test_module, "V20CredManager", autospec=True - ) as mock_cred_mgr, async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec, async_mock.patch.object( test_module, "ProblemReport", autospec=True diff --git a/aries_cloudagent/protocols/present_proof/v1_0/routes.py b/aries_cloudagent/protocols/present_proof/v1_0/routes.py index f8ebbea43b..bdb3bea73c 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/routes.py @@ -41,6 +41,7 @@ from ....wallet.error import WalletNotFoundError from ...problem_report.v1_0 import internal_error +from ...problem_report.v1_0.message import ProblemReport from .manager import PresentationManager from .message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST, SPEC_URI @@ -449,6 +450,12 @@ class CredentialsFetchQueryStringSchema(OpenAPISchema): ) +class V10PresentationProblemReportRequestSchema(OpenAPISchema): + """Request schema for sending problem report.""" + + explain_ltxt = fields.Str(required=True) + + class PresExIdMatchInfoSchema(OpenAPISchema): """Path parameters and validators for request taking presentation exchange id.""" @@ -1098,6 +1105,52 @@ async def presentation_exchange_verify_presentation(request: web.BaseRequest): return web.json_response(result) +@docs( + tags=["present-proof"], + summary="Send a problem report for presentation exchange", +) +@match_info_schema(PresExIdMatchInfoSchema()) +@request_schema(V10PresentationProblemReportRequestSchema()) +@response_schema(PresentProofModuleResponseSchema(), 200, description="") +async def presentation_exchange_problem_report(request: web.BaseRequest): + """ + Request handler for sending problem report. + + Args: + request: aiohttp request object + + """ + r_time = get_timer() + + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + + pres_ex_id = request.match_info["pres_ex_id"] + body = await request.json() + + try: + async with await context.session() as session: + pres_ex_record = await V10PresentationExchange.retrieve_by_id( + session, pres_ex_id + ) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + error_result = ProblemReport(explain_ltxt=body["explain_ltxt"]) + error_result.assign_thread_id(pres_ex_record.thread_id) + + await outbound_handler(error_result, connection_id=pres_ex_record.connection_id) + + trace_event( + context.settings, + error_result, + outcome="presentation_exchange_problem_report.END", + perf_counter=r_time, + ) + + return web.json_response({}) + + @docs(tags=["present-proof"], summary="Remove an existing presentation exchange record") @match_info_schema(PresExIdMatchInfoSchema()) @response_schema(PresentProofModuleResponseSchema(), description="") @@ -1174,6 +1227,10 @@ async def register(app: web.Application): "/present-proof/records/{pres_ex_id}/verify-presentation", presentation_exchange_verify_presentation, ), + web.post( + "/present-proof/records/{pres_ex_id}/problem-report", + presentation_exchange_problem_report, + ), web.delete( "/present-proof/records/{pres_ex_id}", presentation_exchange_remove, diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py index 5ef9f0cb48..993babba67 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py @@ -59,7 +59,10 @@ async def test_presentation_exchange_list(self): } with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -90,7 +93,10 @@ async def test_presentation_exchange_list_x(self): } with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -108,7 +114,10 @@ async def test_presentation_exchange_credentials_list_not_found(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -140,7 +149,10 @@ async def test_presentation_exchange_credentials_x(self): ) with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -172,7 +184,10 @@ async def test_presentation_exchange_credentials_list_single_referent(self): ) with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -200,14 +215,17 @@ async def test_presentation_exchange_credentials_list_multiple_referents(self): self.profile.context.injector.bind_instance( IndyHolder, async_mock.MagicMock( - get_credentials_for_presentation_request_by_referent=async_mock.CoroutineMock( - return_value=returned_credentials + get_credentials_for_presentation_request_by_referent=( + async_mock.CoroutineMock(return_value=returned_credentials) ) ), ) with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -228,7 +246,10 @@ async def test_presentation_exchange_retrieve(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_pres_ex: @@ -252,7 +273,10 @@ async def test_presentation_exchange_retrieve_not_found(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_pres_ex: @@ -274,7 +298,10 @@ async def test_presentation_exchange_retrieve_ser_x(self): connection_id="abc123", thread_id="thid123" ) with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_pres_ex: @@ -301,7 +328,10 @@ async def test_presentation_exchange_send_proposal(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview: @@ -349,10 +379,16 @@ async def test_presentation_exchange_send_proposal_not_ready(self): "aries_cloudagent.connections.models.conn_record.ConnRecord", autospec=True, ) as mock_connection_record, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.presentation_proposal.PresentationProposal", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.presentation_proposal.PresentationProposal" + ), autospec=True, ) as mock_proposal: @@ -375,7 +411,10 @@ async def test_presentation_exchange_send_proposal_x(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview: @@ -399,7 +438,10 @@ async def test_presentation_exchange_create_request(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True @@ -407,7 +449,10 @@ async def test_presentation_exchange_create_request(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange, async_mock.patch( "aries_cloudagent.indy.util.generate_pr_nonce", @@ -450,7 +495,10 @@ async def test_presentation_exchange_create_request_x(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True @@ -458,7 +506,10 @@ async def test_presentation_exchange_create_request_x(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange, async_mock.patch( "aries_cloudagent.indy.util.generate_pr_nonce", @@ -501,7 +552,10 @@ async def test_presentation_exchange_send_free_request(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.messages.inner.presentation_preview.PresentationPreview", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "messages.inner.presentation_preview.PresentationPreview" + ), autospec=True, ) as mock_preview, async_mock.patch.object( test_module, "PresentationRequest", autospec=True @@ -509,7 +563,10 @@ async def test_presentation_exchange_send_free_request(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -608,7 +665,10 @@ async def test_presentation_exchange_send_free_request_x(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -733,7 +793,10 @@ async def test_presentation_exchange_send_bound_request_not_found(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -775,7 +838,10 @@ async def test_presentation_exchange_send_bound_request_not_ready(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -803,7 +869,10 @@ async def test_presentation_exchange_send_bound_request_bad_state(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -840,7 +909,10 @@ async def test_presentation_exchange_send_bound_request_x(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -907,7 +979,10 @@ async def test_presentation_exchange_send_presentation(self): ) as mock_presentation_manager, async_mock.patch.object( test_module, "PresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -966,7 +1041,10 @@ async def test_presentation_exchange_send_presentation_not_found(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1008,7 +1086,10 @@ async def test_presentation_exchange_send_presentation_not_ready(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1035,7 +1116,10 @@ async def test_presentation_exchange_send_presentation_bad_state(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1078,7 +1162,10 @@ async def test_presentation_exchange_send_presentation_x(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1132,7 +1219,10 @@ async def test_presentation_exchange_verify_presentation(self): "aries_cloudagent.messaging.decorators.attach_decorator.AttachDecorator", autospec=True, ) as mock_attach_decorator, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1191,7 +1281,10 @@ async def test_presentation_exchange_verify_presentation_not_found(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1224,7 +1317,10 @@ async def test_presentation_exchange_verify_presentation_not_ready(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1253,7 +1349,10 @@ async def test_presentation_exchange_verify_presentation_bad_state(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1293,7 +1392,10 @@ async def test_presentation_exchange_verify_presentation_x(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1327,11 +1429,68 @@ async def test_presentation_exchange_verify_presentation_x(self): self.request ) + async def test_presentation_exchange_problem_report(self): + self.request.json = async_mock.CoroutineMock() + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_record, async_mock.patch( + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), + autospec=True, + ) as mock_pres_ex, async_mock.patch( + ("aries_cloudagent.protocols.problem_report.v1_0.message.ProblemReport"), + autospec=True, + ) as mock_prob_report, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + + # Since we are mocking import + importlib.reload(test_module) + + mock_pres_ex.retrieve_by_id = async_mock.CoroutineMock() + + await test_module.presentation_exchange_problem_report(self.request) + + mock_response.assert_called_once_with({}) + self.request["outbound_message_router"].assert_awaited_once_with( + mock_prob_report.return_value, + connection_id=mock_pres_ex.retrieve_by_id.return_value.connection_id, + ) + + async def test_presentation_exchange_problem_report_bad_pres_ex_id(self): + self.request.json = async_mock.CoroutineMock() + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch( + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), + autospec=True, + ) as mock_pres_ex: + + # Since we are mocking import + importlib.reload(test_module) + + mock_pres_ex.retrieve_by_id = async_mock.CoroutineMock( + side_effect=test_module.StorageNotFoundError() + ) + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.presentation_exchange_problem_report(self.request) + async def test_presentation_exchange_remove(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1357,7 +1516,10 @@ async def test_presentation_exchange_remove_not_found(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: @@ -1376,7 +1538,10 @@ async def test_presentation_exchange_remove_x(self): self.request.match_info = {"pres_ex_id": "dummy"} with async_mock.patch( - "aries_cloudagent.protocols.present_proof.v1_0.models.presentation_exchange.V10PresentationExchange", + ( + "aries_cloudagent.protocols.present_proof.v1_0." + "models.presentation_exchange.V10PresentationExchange" + ), autospec=True, ) as mock_presentation_exchange: From 4199cb6d17ac58edd8645b597c06da3ccd448615 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Tue, 16 Feb 2021 18:28:57 -0800 Subject: [PATCH 040/243] bdd test for agent connection for ecveral scenarios Signed-off-by: Ian Costanzo --- demo/bdd_support/agent_backchannel_client.py | 81 +++- demo/features/0036-issue-credential.feature | 19 - demo/features/0160-connection.feature | 18 +- demo/features/environment.py | 16 +- demo/features/steps/0036-issue-credential.py | 376 ------------------- demo/features/steps/0160-connection.py | 221 ++--------- demo/features/steps/test.py | 17 - demo/features/test.feature | 10 - demo/run_bdd | 2 +- demo/runners/agent_container.py | 196 +++++++--- docker/Dockerfile.bdd | 5 +- 11 files changed, 281 insertions(+), 680 deletions(-) delete mode 100644 demo/features/0036-issue-credential.feature delete mode 100644 demo/features/steps/0036-issue-credential.py delete mode 100644 demo/features/steps/test.py delete mode 100644 demo/features/test.feature diff --git a/demo/bdd_support/agent_backchannel_client.py b/demo/bdd_support/agent_backchannel_client.py index cc1cd78dfe..3023994282 100644 --- a/demo/bdd_support/agent_backchannel_client.py +++ b/demo/bdd_support/agent_backchannel_client.py @@ -10,35 +10,98 @@ import json from time import sleep +from runners.agent_container import AgentContainer, create_agent_with_args +from runners.support.agent import DemoAgent + ###################################################################### # coroutine utilities ###################################################################### def run_coroutine(coroutine): - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) + loop = asyncio.get_event_loop() + if not loop: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) try: return loop.run_until_complete(coroutine()) finally: - loop.close() + pass + #loop.close() def run_coroutine_with_args(coroutine, *args): - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) + loop = asyncio.get_event_loop() + if not loop: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) try: return loop.run_until_complete(coroutine(*args)) finally: - loop.close() + pass + #loop.close() def run_coroutine_with_kwargs(coroutine, *args, **kwargs): - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) + loop = asyncio.get_event_loop() + if not loop: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) try: return loop.run_until_complete(coroutine(*args, **kwargs)) finally: - loop.close() + pass + #loop.close() + + +###################################################################### +# aries agent +###################################################################### +def create_agent_container_with_args(in_args: list): + return run_coroutine_with_args( + create_agent_with_args, + in_args + ) + +def aries_container_initialize( + the_container: AgentContainer, + schema_name: str = None, + schema_attrs: list = None, +): + run_coroutine_with_kwargs( + the_container.initialize, + schema_name = schema_name, + schema_attrs = schema_attrs, + ) + +def aries_container_terminate( + the_container: AgentContainer, +): + return run_coroutine(the_container.terminate) +def aries_container_generate_invitation( + the_container: AgentContainer, +): + return run_coroutine_with_kwargs( + the_container.generate_invitation, + ) + +def aries_container_receive_invitation( + the_container: AgentContainer, + invite_details: dict, +): + return run_coroutine_with_kwargs( + the_container.input_invitation, + invite_details, + ) + +def aries_container_detect_connection( + the_container: AgentContainer, +): + run_coroutine(the_container.detect_connection) + + +###################################################################### +# probably obsolete ... +###################################################################### async def make_agent_backchannel_request( method, path, data=None, text=False, params=None diff --git a/demo/features/0036-issue-credential.feature b/demo/features/0036-issue-credential.feature deleted file mode 100644 index bd1679cdf1..0000000000 --- a/demo/features/0036-issue-credential.feature +++ /dev/null @@ -1,19 +0,0 @@ -Feature: RFC 0036 Aries agent issue credential - - Background: create a schema and credential definition in order to issue a credential - Given "Acme" has a public did - And "Acme" is ready to issue a credential - - @T001-AIP10-RFC0036 @AcceptanceTest @P1 @critical @Indy @RFC0036 - Scenario: Issue a credential with the Holder beginning with a proposal - Given "2" agents - | name | role | - | Acme | issuer | - | Bob | holder | - And "Acme" and "Bob" have an existing connection - When "Bob" proposes a credential to "Acme" - And "Acme" offers a credential - And "Bob" requests the credential - And "Acme" issues the credential - And "Bob" acknowledges the credential issue - Then "Bob" has the credential issued diff --git a/demo/features/0160-connection.feature b/demo/features/0160-connection.feature index 843ad3da36..c85a7342c1 100644 --- a/demo/features/0160-connection.feature +++ b/demo/features/0160-connection.feature @@ -5,17 +5,15 @@ Feature: RFC 0160 Aries agent connection functions Given we have "2" agents | name | role | capabilities | | Acme | inviter | | - | Bob | invitee | | + | Bob | invitee | | When "Acme" generates a connection invitation And "Bob" receives the connection invitation - And "Bob" sends a connection request to "Acme" - And "Acme" receives the connection request - And "Acme" sends a connection response to "Bob" - And "Bob" receives the connection response - And "Bob" sends to "Acme" - Then "Acme" and "Bob" have a connection + Then "Acme" has an active connection + And "Bob" has an active connection Examples: - | message | Acme_capabilities | Bob_capabilities | - | trustping | | | - | trustping | --mediation | --mediation | + | Acme_capabilities | Bob_capabilities | + | | | + | --mediation | --mediation | + | --multitenant | --multitenant | + | --mediation --multitenant | --mediation --multitenant | diff --git a/demo/features/environment.py b/demo/features/environment.py index fbef13baed..8cfddd930e 100644 --- a/demo/features/environment.py +++ b/demo/features/environment.py @@ -1,4 +1,9 @@ +from runners.agent_container import AgentContainer +from bdd_support.agent_backchannel_client import ( + aries_container_terminate, +) + def before_feature(context, feature): pass @@ -15,9 +20,18 @@ def before_scenario(context, scenario): print(">>> before_scenario activated") def after_scenario(context, step): - # shut down any agents that were started for the scenario print(">>> after_scenario activated") + # shut down any agents that were started for the scenario + if "active_agents" in context: + print(">>> shutting down active agents ...") + for agent_name in context.active_agents.keys(): + print(" shutting down:", agent_name) + agent = context.active_agents[agent_name]['agent'] + if agent: + terminated = aries_container_terminate(agent) + print(" terminated:", terminated) + def before_step(context, step): pass diff --git a/demo/features/steps/0036-issue-credential.py b/demo/features/steps/0036-issue-credential.py deleted file mode 100644 index 76324e87c9..0000000000 --- a/demo/features/steps/0036-issue-credential.py +++ /dev/null @@ -1,376 +0,0 @@ -from behave import * -import json -from agent_backchannel_client import agent_backchannel_GET, agent_backchannel_POST, expected_agent_state -from time import sleep -import time - -# This step is defined in another feature file -# Given "Acme" and "Bob" have an existing connection - - -SCHEMA_TEMPLATE = { - "schema_name": "test_schema.", - "schema_version": "1.0.0", - "attributes": ["attr_1","attr_2","attr_3"], -} - -CRED_DEF_TEMPLATE = { - "support_revocation": False, - "schema_id": "", - "tag": "default" -} - -CREDENTIAL_ATTR_TEMPLATE = [ - {"name": "attr_1", "value": "value_1"}, - {"name": "attr_2", "value": "value_2"}, - {"name": "attr_3", "value": "value_3"} -] - -@given('"{issuer}" has a public did') -def step_impl(context, issuer): - issuer_url = context.config.userdata.get(issuer) - - (resp_status, resp_text) = agent_backchannel_GET(issuer_url + "/agent/command/", "did") - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - resp_json = json.loads(resp_text) - issuer_did = resp_json - - if "schema" not in context: - # check for a schema already loaded in the context. If it is not, load the template - if "schema" not in context: - context.schema = SCHEMA_TEMPLATE.copy() - context.schema["schema_name"] = context.schema["schema_name"] + issuer - - #context.issuer_did = issuer_did["did"] - if 'issuer_did_dict' in context: - context.issuer_did_dict[context.schema['schema_name']] = issuer_did["did"] - else: - context.issuer_did_dict = {context.schema['schema_name']: issuer_did["did"]} - -@given('"{issuer}" is ready to issue a credential') -def step_impl(context, issuer): - # TODO remove these references to schema and cred def, move them to one call to the API and let the Backchannel take care of - # what to do to be ready to issie a credential - context.execute_steps(''' - When "''' + issuer + '''" creates a new schema - And "''' + issuer + '''" creates a new credential definition - Then "''' + issuer + '''" has an existing schema - And "''' + issuer + '''" has an existing credential definition - ''') - -@when('"{issuer}" creates a new schema') -def step_impl(context, issuer): - issuer_url = context.config.userdata.get(issuer) - - #if not "issuer_schema_id_dict" in context: - # check for a schema template already loaded in the context. If it is, it was loaded from an external Schema, so use it. - if "schema" in context: - schema = context.schema - else: - schema = SCHEMA_TEMPLATE.copy() - schema["schema_name"] = schema["schema_name"] + issuer - - (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "schema", data=schema) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - resp_json = json.loads(resp_text) - #context.issuer_schema_id = resp_json["schema_id"] - if 'issuer_schema_id_dict' in context: - context.issuer_schema_id_dict[context.schema['schema_name']] = resp_json["schema_id"] - else: - context.issuer_schema_id_dict = {context.schema['schema_name']: resp_json["schema_id"]} - -@when('"{issuer}" creates a new credential definition') -def step_impl(context, issuer): - issuer_url = context.config.userdata.get(issuer) - - #if not "credential_definition_id_dict" in context: - cred_def = CRED_DEF_TEMPLATE.copy() - cred_def["schema_id"] = context.issuer_schema_id_dict[context.schema['schema_name']] - if "support_revocation" in context: - cred_def["support_revocation"] = context.support_revocation - - (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "credential-definition", data=cred_def) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - resp_json = json.loads(resp_text) - if "support_revocation" in context: - # Could make a call to get the rev reg creation time for calculating non revocation intervals - #context.cred_rev_creation_time = resp_json["created"] - context.cred_rev_creation_time = time.time() - - if 'credential_definition_id_dict' in context: - context.credential_definition_id_dict[context.schema['schema_name']] = resp_json["credential_definition_id"] - else: - context.credential_definition_id_dict = {context.schema['schema_name']: resp_json["credential_definition_id"]} - -@then('"{issuer}" has an existing schema') -def step_impl(context, issuer): - issuer_url = context.config.userdata.get(issuer) - issuer_schema_id = context.issuer_schema_id_dict[context.schema['schema_name']] - - (resp_status, resp_text) = agent_backchannel_GET(issuer_url + "/agent/command/", "schema", id=issuer_schema_id) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - resp_json = json.loads(resp_text) - #context.issuer_schema = resp_json - if 'issuer_schema_dict' in context: - context.issuer_schema_dict[context.schema['schema_name']] = resp_json - else: - context.issuer_schema_dict = {context.schema['schema_name']: resp_json} - - -@then('"{issuer}" has an existing credential definition') -def step_impl(context, issuer): - issuer_url = context.config.userdata.get(issuer) - issuer_credential_definition_id = context.credential_definition_id_dict[context.schema['schema_name']] - - (resp_status, resp_text) = agent_backchannel_GET(issuer_url + "/agent/command/", "credential-definition", id=issuer_credential_definition_id) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - resp_json = json.loads(resp_text) - #context.issuer_credential_definition = resp_json - if 'issuer_credential_definition_dict' in context: - context.issuer_credential_definition_dict[context.schema['schema_name']] = resp_json - else: - context.issuer_credential_definition_dict = {context.schema['schema_name']: resp_json} - - -@given('"{issuer}" has an existing schema and credential definition') -def step_impl(context, issuer): - context.execute_steps(u''' - Given "''' + issuer + '''" has a public did - When "''' + issuer + '''" creates a new schema - And "''' + issuer + '''" creates a new credential definition - Then "''' + issuer + '''" has an existing schema - And "''' + issuer + '''" has an existing credential definition - ''') - -@when('"{issuer}" initiates an automated credential issuance') -def step_impl(context, issuer): - issuer_url = context.config.userdata.get(issuer) - issuer_did = context.issuer_did - issuer_connection_id = context.connection_id_dict[issuer][context.holder_name] - issuer_schema_id = context.issuer_schema_id - issuer_schema = context.issuer_schema - issuer_credential_definition_id = context.credential_definition_id - issuer_credential_definition = context.issuer_credential_definition - - credential_offer = { - "schema_issuer_did": issuer_did, - "issuer_did": issuer_did, - "schema_name": issuer_schema["name"], - "cred_def_id": issuer_credential_definition["id"], - "schema_version": issuer_schema["version"], - "credential_proposal": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/issue-credential/1.0/credential-preview", - "attributes": CREDENTIAL_ATTR_TEMPLATE.copy(), - }, - "connection_id": issuer_connection_id, - "schema_id": issuer_schema["id"], - } - - (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "issue-credential", operation="send", data=credential_offer) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - resp_json = json.loads(resp_text) - issuer_credential_definition = resp_json - -@given('"{holder}" proposes a credential to "{issuer}"') -@when('"{holder}" proposes a credential to "{issuer}"') -def step_impl(context, holder, issuer): - holder_url = context.config.userdata.get(holder) - - # check for a schema template already loaded in the context. If it is, it was loaded from an external Schema, so use it. - if "credential_data" in context: - cred_data = context.credential_data - else: - cred_data = CREDENTIAL_ATTR_TEMPLATE.copy() - - credential_offer = { - "schema_issuer_did": context.issuer_did_dict[context.schema['schema_name']], - "issuer_did": context.issuer_did_dict[context.schema['schema_name']], - "schema_name": context.issuer_schema_dict[context.schema['schema_name']]["name"], - "cred_def_id": context.issuer_credential_definition_dict[context.schema['schema_name']]["id"], - "schema_version": context.issuer_schema_dict[context.schema['schema_name']]["version"], - "credential_proposal": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/issue-credential/1.0/credential-preview", - "attributes": cred_data, - }, - "connection_id": context.connection_id_dict[holder][issuer], - "schema_id": context.issuer_schema_dict[context.schema['schema_name']]["id"], - } - - #(resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "issue-credential", operation="send-proposal", id=holder_connection_id, data=credential_offer) - (resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "issue-credential", operation="send-proposal", data=credential_offer) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - resp_json = json.loads(resp_text) - - # Check the State of the credential - assert resp_json["state"] == "proposal-sent" - - # Get the thread ID from the response text. - context.cred_thread_id = resp_json["thread_id"] - -@given('"{issuer}" offers a credential') -@when('"{issuer}" offers a credential') -@when('"{issuer}" offers the credential') -@when('"{issuer}" sends a credential offer') -def step_impl(context, issuer): - issuer_url = context.config.userdata.get(issuer) - - # if context does not have the credential thread id then the proposal was not the starting point for the protocol. - if not "cred_thread_id" in context: - - if "credential_data" in context: - cred_data = context.credential_data - else: - cred_data = CREDENTIAL_ATTR_TEMPLATE.copy() - - credential_offer = { - "cred_def_id": context.issuer_credential_definition_dict[context.schema['schema_name']]["id"], - "credential_preview": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/issue-credential/1.0/credential-preview", - "attributes": cred_data, - }, - "connection_id": context.connection_id_dict[issuer][context.holder_name], - } - - (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "issue-credential", operation="send-offer", data=credential_offer) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - resp_json = json.loads(resp_text) - context.cred_thread_id = resp_json["thread_id"] - - else: - # If context has the credential thread id then the proposal was done. - (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "issue-credential", operation="send-offer", id=context.cred_thread_id) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - resp_json = json.loads(resp_text) - - # Check the issuers State - assert resp_json["state"] == "offer-sent" - - # Check the state of the holder after issuers call of send-offer - assert expected_agent_state(context.holder_url, "issue-credential", context.cred_thread_id, "offer-received") - - -@when('"{holder}" requests the credential') -@when('"{holder}" sends a credential request') -def step_impl(context, holder): - holder_url = context.holder_url - - # If @indy then we can be sure we cannot start the protocol from this command. We can be sure that we have previously - # reveived the thread_id. - if "Indy" in context.tags: - sleep(1) - (resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "issue-credential", operation="send-request", id=context.cred_thread_id) - - # If we are starting from here in the protocol you won't have the cred_ex_id or the thread_id - else: - (resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "issue-credential", operation="send-request", id=context.connection_id_dict[holder][context.issuer_name]) - - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - resp_json = json.loads(resp_text) - assert resp_json["state"] == "request-sent" - - # Verify issuer status - assert expected_agent_state(context.issuer_url, "issue-credential", context.cred_thread_id, "request-received") - - -@when('"{issuer}" issues the credential') -@when('"{issuer}" issues a credential') -def step_impl(context, issuer): - issuer_url = context.config.userdata.get(issuer) - - if "credential_data" in context: - cred_data = context.credential_data - else: - cred_data = CREDENTIAL_ATTR_TEMPLATE.copy() - - # a credential preview shouldn't have to be here with a cred_ex_id being passed - credential_preview = { - "credential_preview": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/issue-credential/1.0/credential-preview", - "attributes": cred_data, - }, - "comment": "issuing credential", - } - - (resp_status, resp_text) = agent_backchannel_POST(issuer_url + "/agent/command/", "issue-credential", operation="issue", id=context.cred_thread_id, data=credential_preview) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - resp_json = json.loads(resp_text) - assert resp_json["state"] == "credential-issued" - - # Verify holder status - assert expected_agent_state(context.holder_url, "issue-credential", context.cred_thread_id, "credential-received") - - -@when('"{holder}" acknowledges the credential issue') -@when('"{holder}" receives and acknowledges the credential') -def step_impl(context, holder): - holder_url = context.config.userdata.get(holder) - - # a credential id shouldn't be needed with a cred_ex_id being passed - credential_id = { - "credential_id": context.cred_thread_id, - } - - # (resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "credential", operation="store", id=context.holder_cred_ex_id) - sleep(1) - (resp_status, resp_text) = agent_backchannel_POST(holder_url + "/agent/command/", "issue-credential", operation="store", id=context.cred_thread_id, data=credential_id) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - resp_json = json.loads(resp_text) - assert resp_json["state"] == "done" - #context.credential_id = resp_json["credential_id"] - if 'credential_id_dict' in context: - try: - context.credential_id_dict[context.schema['schema_name']].append(resp_json["credential_id"]) - except KeyError: - context.credential_id_dict[context.schema['schema_name']] = [resp_json["credential_id"]] - else: - context.credential_id_dict = {context.schema['schema_name']: [resp_json["credential_id"]]} - - # Verify issuer status - # This is returning none instead of Done. Should this be the case. Needs investigation. - #assert expected_agent_state(context.issuer_url, "issue-credential", context.cred_thread_id, "done") - - # if the credential supports revocation, get the Issuers webhook callback JSON from the store command - # From that JSON save off the credential revocation identifier, and the revocation registry identifier. - if "support_revocation" in context: - if context.support_revocation: - (resp_status, resp_text) = agent_backchannel_GET(context.config.userdata.get(context.issuer_name) + "/agent/response/", "revocation-registry", id=context.cred_thread_id) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - resp_json = json.loads(resp_text) - context.cred_rev_id = resp_json["revocation_id"] - context.rev_reg_id = resp_json["revoc_reg_id"] - - -@then('"{holder}" has the credential issued') -def step_impl(context, holder): - - holder_url = context.config.userdata.get(holder) - # get the credential from the holders wallet - (resp_status, resp_text) = agent_backchannel_GET(holder_url + "/agent/command/", "credential", id=context.credential_id_dict[context.schema['schema_name']][len(context.credential_id_dict[context.schema['schema_name']])-1]) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - resp_json = json.loads(resp_text) - assert resp_json["referent"] == context.credential_id_dict[context.schema['schema_name']][len(context.credential_id_dict[context.schema['schema_name']])-1] - assert resp_json["schema_id"] == context.issuer_schema_id_dict[context.schema["schema_name"]] - assert resp_json["cred_def_id"] == context.credential_definition_id_dict[context.schema["schema_name"]] - - # Make sure the issuer is not holding the credential - # get the credential from the holders wallet - # TODO this expected error is not displaying in the agent output until after all the tests are executed. Uncomment this out when - # there is a solution to the error messaging happening at the end. - #(resp_status, resp_text) = agent_backchannel_GET(context.issuer_url + "/agent/command/", "credential", id=context.credential_id_dict[context.schema['schema_name']]) - #assert resp_status == 404, f'resp_status {resp_status} is not 404; {resp_text}' - - - -@when(u'"{holder}" negotiates the offer with a proposal of the credential to "{issuer}"') -@when(u'"{holder}" negotiates the offer with another proposal of the credential to "{issuer}"') -def step_impl(context, holder, issuer): - #context.execute_steps('''When "''' + holder + '''" proposes a credential to "''' + sender + ''') - context.execute_steps(''' - When "''' + holder + '''" proposes a credential to "''' + issuer + '''" - ''') diff --git a/demo/features/steps/0160-connection.py b/demo/features/steps/0160-connection.py index 135ad4f6ff..7ea32a59c2 100644 --- a/demo/features/steps/0160-connection.py +++ b/demo/features/steps/0160-connection.py @@ -10,18 +10,34 @@ from behave import given, when, then import json -from bdd_support.agent_backchannel_client import agent_backchannel_GET, agent_backchannel_POST, expected_agent_state +from bdd_support.agent_backchannel_client import ( + create_agent_container_with_args, + aries_container_initialize, + aries_container_generate_invitation, + aries_container_receive_invitation, + aries_container_detect_connection, + agent_backchannel_GET, + agent_backchannel_POST, + expected_agent_state +) +from runners.agent_container import AgentContainer + @given('{n} agents') @given(u'we have {n} agents') def step_impl(context, n): """Startup 'n' agents based on the options provided in the context table parameters.""" + start_port = 8020 + context.active_agents = {} for row in context.table: agent_name = row['name'] agent_role = row['role'] agent_params = row['capabilities'] + in_args = ['--ident', agent_name, '--port', str(start_port),] + if agent_params and 0 < len(agent_params): + in_args.extend(agent_params.split(" ")) context.active_agents[agent_name] = { 'name': agent_name, @@ -30,207 +46,44 @@ def step_impl(context, n): } # startup an agent with the provided params - agent = None - # TODO + print("Create agent with:", in_args) + agent = create_agent_container_with_args(in_args) # keep reference to the agent so we can shut it down later context.active_agents[agent_name]['agent'] = agent + aries_container_initialize( + agent, + ) + start_port = start_port + 10 + @when('"{inviter}" generates a connection invitation') def step_impl(context, inviter): - inviter_url = context.config.userdata.get(inviter) - - (resp_status, resp_text) = agent_backchannel_POST(inviter_url + "/agent/command/", "connection", operation="create-invitation") - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + agent = context.active_agents[inviter] - resp_json = json.loads(resp_text) - context.inviter_invitation = resp_json["invitation"] - - # check and see if the connection_id_dict exists - # if it does, it was probably used to create another connection in a 3+ agent scenario - # so that means we need to keep the connection ids around for use in the scenario - # so we will not create a new dict which will reset the dict - if hasattr(context, 'temp_connection_id_dict'): - context.temp_connection_id_dict[inviter] = resp_json["connection_id"] - else: - context.temp_connection_id_dict = {inviter: resp_json["connection_id"]} - - # Check to see if the inviter_name exists in context. If not, antother suite is using it so set the inviter name and url - if not hasattr(context, 'inviter_name') or context.inviter_name != inviter: - context.inviter_url = inviter_url - context.inviter_name = inviter + invitation = aries_container_generate_invitation(agent['agent']) + context.inviter_invitation = invitation["invitation"] # get connection and verify status - assert expected_agent_state(inviter_url, "connection", context.temp_connection_id_dict[inviter], "invited") + #assert expected_agent_state(inviter_url, "connection", context.temp_connection_id_dict[inviter], "invited") -@given('"{invitee}" receives the connection invitation') @when('"{invitee}" receives the connection invitation') def step_impl(context, invitee): - invitee_url = context.config.userdata.get(invitee) - - data = context.inviter_invitation - (resp_status, resp_text) = agent_backchannel_POST(invitee_url + "/agent/command/", "connection", operation="receive-invitation", data=data) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - resp_json = json.loads(resp_text) - - if not hasattr(context, 'connection_id_dict'): - context.connection_id_dict = {} - context.connection_id_dict[invitee] = {} - - context.connection_id_dict[invitee][context.inviter_name] = resp_json["connection_id"] - - # Also add the inviter into the main connection_id_dict. if the len is 0 that means its already been cleared and this may be Mallory. - if len(context.temp_connection_id_dict) != 0: - context.connection_id_dict[context.inviter_name] = {invitee: context.temp_connection_id_dict[context.inviter_name]} - #clear the temp connection id dict used in the initial step. We don't need it anymore. - context.temp_connection_id_dict.clear() - - # Check to see if the invitee_name exists in context. If not, antother suite is using it so set the invitee name and url - if not hasattr(context, 'invitee_name'): - context.invitee_url = invitee_url - context.invitee_name = invitee - - # get connection and verify status - assert expected_agent_state(invitee_url, "connection", context.connection_id_dict[invitee][context.inviter_name], "invited") - -@when('"{inviter}" sends a connection response to "{invitee}"') -@given('"{inviter}" sends a connection response to "{invitee}"') -@then('"{inviter}" sends a connection response to "{invitee}"') -def step_impl(context, inviter, invitee): - inviter_url = context.config.userdata.get(inviter) - #inviter_connection_id = context.connection_id_dict[inviter] - inviter_connection_id = context.connection_id_dict[inviter][invitee] - invitee_url = context.config.userdata.get(invitee) - invitee_connection_id = context.connection_id_dict[invitee][inviter] - - # get connection and verify status - assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "requested") - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "requested") - - (resp_status, resp_text) = agent_backchannel_POST(inviter_url + "/agent/command/", "connection", operation="accept-request", id=inviter_connection_id) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - # get connection and verify status - assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "responded") - -@when('"{invitee}" receives the connection response') -@given('"{invitee}" receives the connection response') -def step_impl(context, invitee): - invitee_url = context.config.userdata.get(invitee) - invitee_connection_id = context.connection_id_dict[invitee][context.inviter_name] - - # invitee already recieved the connection response in the accept-request call so get connection and verify status=responded. - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "responded") - -@given('"{invitee}" sends a connection request to "{inviter}"') -@when('"{invitee}" sends a connection request to "{inviter}"') -def step_impl(context, invitee, inviter): - invitee_url = context.config.userdata.get(invitee) - invitee_connection_id = context.connection_id_dict[invitee][inviter] - inviter_url = context.config.userdata.get(inviter) - inviter_connection_id = context.connection_id_dict[inviter][invitee] - - # get connection and verify status - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "invited") - assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "invited") - - (resp_status, resp_text) = agent_backchannel_POST(invitee_url + "/agent/command/", "connection", operation="accept-invitation", id=invitee_connection_id) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - # get connection and verify status - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "requested") - - -@when('"{inviter}" receives the connection request') -@given('"{inviter}" receives the connection request') -def step_impl(context, inviter): - inviter_url = context.config.userdata.get(inviter) - inviter_connection_id = context.connection_id_dict[inviter][context.invitee_name] - - # inviter already recieved the connection request in the accept-invitation call so get connection and verify status=requested. - assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "requested") - - -@when('"{inviter}" accepts the connection response to "{invitee}"') -def step_impl(context, inviter, invitee): - inviter_url = context.config.userdata.get(inviter) - inviter_connection_id = context.connection_id_dict[inviter][invitee] - invitee_url = context.config.userdata.get(invitee) - invitee_connection_id = context.connection_id_dict[invitee][inviter] - - # get connection and verify status - assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "requested") - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "requested") - - (resp_status, resp_text) = agent_backchannel_POST(inviter_url + "/agent/command/", "connection", operation="accept-request", id=inviter_connection_id) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - # get connection and verify status - assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "responded") - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "complete") - -@when('"{invitee}" sends a response ping') -def step_impl(context, invitee): - invitee_url = context.config.userdata.get(invitee) - invitee_connection_id = context.connection_id_dict[invitee][context.inviter_name] - - # get connection and verify status - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "responded") + agent = context.active_agents[invitee] - data = {"comment": "Hello from " + invitee} - (resp_status, resp_text) = agent_backchannel_POST(invitee_url + "/agent/command/", "connection", operation="send-ping", id=invitee_connection_id, data=data) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - # get connection and verify status - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "complete") - -@when('"{inviter}" receives the response ping') -def step_impl(context, inviter): - # extra step to force status to 'active' for VCX - inviter_url = context.config.userdata.get(inviter) - inviter_connection_id = context.connection_id_dict[inviter][context.invitee_name] - - data = {"comment": "Hello from " + inviter} - (resp_status, resp_text) = agent_backchannel_POST(inviter_url + "/agent/command/", "connection", operation="send-ping", id=inviter_connection_id, data=data) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' + invite_data = context.inviter_invitation + connection = aries_container_receive_invitation(agent['agent'], invite_data) # get connection and verify status - assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "complete") - -@then('"{inviter}" and "{invitee}" still have a completed connection') -@then('"{inviter}" and "{invitee}" have a connection') -def step_impl(context, inviter, invitee): - inviter_url = context.config.userdata.get(inviter) - inviter_connection_id = context.connection_id_dict[inviter][invitee] - invitee_url = context.config.userdata.get(invitee) - invitee_connection_id = context.connection_id_dict[invitee][inviter] - - # Check to see if this is a DID Exchange connection to set the state to check appropriatly for that protocol. - if "responder_url" in context: - state_to_assert = "completed" - else: - state_to_assert = "complete" - - # get connection and verify status for inviter - assert expected_agent_state(inviter_url, "connection", inviter_connection_id, state_to_assert) - - # get connection and verify status for invitee - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, state_to_assert) + #assert expected_agent_state(invitee_url, "connection", context.connection_id_dict[invitee][context.inviter_name], "invited") -@then('"{invitee}" is connected to "{inviter}"') -def step_impl(context, inviter, invitee): - inviter_url = context.config.userdata.get(inviter) - inviter_connection_id = context.connection_id_dict[inviter][invitee] - invitee_url = context.config.userdata.get(invitee) - invitee_connection_id = context.connection_id_dict[invitee][inviter] +@then('"{agent_name}" has an active connection') +def step_impl(context, agent_name): + agent = context.active_agents[agent_name] - # get connection and verify status for inviter - assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "responded") - - # get connection and verify status for invitee - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "complete") + # throws an exception if the connection isn't established in time + aries_container_detect_connection(agent['agent']) @given('"{sender}" and "{receiver}" have an existing connection') def step_impl(context, sender, receiver): diff --git a/demo/features/steps/test.py b/demo/features/steps/test.py deleted file mode 100644 index a2e34211f1..0000000000 --- a/demo/features/steps/test.py +++ /dev/null @@ -1,17 +0,0 @@ -from behave import given, when, then, step - -@given(u'an account with "2400" asset points') -def step_impl(context): - pass - -@step(u'the account rofile is tagged as "fraudulent"') -def step_impl(context): - pass - -@when(u'the account owner trades his asset') -def step_impl(context): - pass - -@then(u'the application should prompt an "XXXX" error') -def step_impl(context): - pass diff --git a/demo/features/test.feature b/demo/features/test.feature deleted file mode 100644 index 01b750b0a2..0000000000 --- a/demo/features/test.feature +++ /dev/null @@ -1,10 +0,0 @@ -Feature: Application can validate a transaction based on specific - tags associated in the account profile - - @fraudulent - Scenario: Fraudulent tagged account trades an asset - Given an account with "2400" asset points - But the account profile is tagged as "fraudulent" - When the account owner trades his asset - Then the application should prompt an "XXXX" error - \ No newline at end of file diff --git a/demo/run_bdd b/demo/run_bdd index 40f3934327..93b64157c9 100755 --- a/demo/run_bdd +++ b/demo/run_bdd @@ -227,4 +227,4 @@ $DOCKER run --name $AGENT --rm -it ${DOCKER_OPTS} \ -p 0.0.0.0:$AGENT_PORT_RANGE:$AGENT_PORT_RANGE \ -v "/$(pwd)/../logs:/home/indy/logs" \ $DOCKER_ENV \ - aries-bdd-image $AGENT_MODULE --port $AGENT_PORT $ARGS + aries-bdd-image diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index c96e02d5da..8272f2a218 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -1,3 +1,4 @@ +import argparse import asyncio import json import logging @@ -19,6 +20,7 @@ connect_wallet_to_mediator, ) from runners.support.utils import ( # noqa:E402 + log_json, log_msg, log_status, log_timer, @@ -158,6 +160,16 @@ async def generate_invitation(self, use_did_exchange: bool, auto_accept: bool = return invi_rec + async def input_invitation(self, invite_details: dict, wait: bool = False): + self._connection_ready = asyncio.Future() + with log_timer("Connect duration:"): + connection = await self.receive_invite(invite_details) + log_json(connection, label="Invitation response:") + + if wait: + log_msg("Waiting for connection...") + await agent.detect_connection() + async def create_schema_and_cred_def(self, schema_name, schema_attrs, revocation): with log_timer("Publish schema/cred def duration:"): log_status("#3/4 Create a new schema/cred def on the ledger") @@ -193,6 +205,7 @@ def __init__( mediation: bool = False, use_did_exchange: bool = False, wallet_type: str = None, + public_did: bool = True, seed: str = "random", ): # configuration parameters @@ -207,6 +220,7 @@ def __init__( self.mediation = mediation self.use_did_exchange = use_did_exchange self.wallet_type = wallet_type + self.public_did = public_did self.seed = seed # local agent(s) @@ -216,7 +230,6 @@ def __init__( async def initialize( self, the_agent: DemoAgent = None, - public_did: bool = False, schema_name: str = None, schema_attrs: list = None, ): @@ -246,7 +259,7 @@ async def initialize( await self.agent.listen_webhooks(self.start_port + 2) - if public_did: + if self.public_did: await self.agent.register_did() with log_timer("Startup duration:"): @@ -266,7 +279,7 @@ async def initialize( # create an initial managed sub-wallet (also mediated) await self.agent.register_or_switch_wallet( self.ident + ".initial", - public_did=public_did, + public_did=self.public_did, webhook_port=self.agent.get_new_webhook_port(), mediator_agent=self.mediator_agent, ) @@ -276,7 +289,7 @@ async def initialize( raise Exception("Mediation setup FAILED :-(") if schema_name and schema_attrs: - if not public_did: + if not self.public_did: raise Exception("Can't create a schema/cred def without a public DID :-(") # Create a schema self.cred_def_id = await self.agent.create_schema_and_cred_def(schema_name, schema_attrs, self.revocation) @@ -296,8 +309,119 @@ async def terminate(self): LOGGER.exception("Error terminating agent:") terminated = False + await asyncio.sleep(3.0) + return terminated + async def generate_invitation(self, auto_accept: bool = True, display_qr: bool = False, wait: bool = False): + return await self.agent.generate_invitation(self.use_did_exchange, auto_accept, display_qr, wait) + + async def input_invitation(self, invite_details: dict, wait: bool = False): + return await self.agent.input_invitation(invite_details, wait) + + async def detect_connection(self): + await self.agent.detect_connection() + + +def arg_parser(): + parser = argparse.ArgumentParser(description="Runs an Aries demo agent.") + parser.add_argument( + "--ident", + type=str, + metavar="", + help="Agent identity (label)", + ) + parser.add_argument( + "--no-auto", + action="store_true", + help="Disable auto issuance", + ) + parser.add_argument( + "--public-did", + action="store_true", + help="Create a public DID for the agent", + ) + parser.add_argument( + "-p", + "--port", + type=int, + default=8020, + metavar=(""), + help="Choose the starting port number to listen on", + ) + parser.add_argument( + "--did-exchange", + action="store_true", + help="Use DID-Exchange protocol for connections", + ) + parser.add_argument( + "--revocation", action="store_true", help="Enable credential revocation" + ) + parser.add_argument( + "--tails-server-base-url", + type=str, + metavar=(""), + help="Tals server base url", + ) + parser.add_argument( + "--timing", action="store_true", help="Enable timing information" + ) + parser.add_argument( + "--multitenant", action="store_true", help="Enable multitenancy options" + ) + parser.add_argument( + "--mediation", action="store_true", help="Enable mediation functionality" + ) + parser.add_argument( + "--wallet-type", + type=str, + metavar="", + help="Set the agent wallet type", + ) + return parser + + +async def create_agent_with_args(in_args: list): + parser = arg_parser() + args = parser.parse_args(in_args) + + if args.did_exchange and args.mediation: + raise Exception( + "DID-Exchange connection protocol is not (yet) compatible with mediation" + ) + + require_indy() + + tails_server_base_url = args.tails_server_base_url or os.getenv("PUBLIC_TAILS_URL") + + if args.revocation and not tails_server_base_url: + raise Exception( + "If revocation is enabled, --tails-server-base-url must be provided" + ) + + genesis = await default_genesis_txns() + if not genesis: + print("Error retrieving ledger genesis transactions") + sys.exit(1) + + agent = AgentContainer( + genesis, + args.ident + ".agent", + args.port, + no_auto = args.no_auto, + revocation = args.revocation, + tails_server_base_url = tails_server_base_url, + show_timing = args.timing, + multitenant = args.multitenant, + mediation = args.mediation, + use_did_exchange = args.did_exchange, + wallet_type = args.wallet_type, + public_did = args.public_did, + seed = "random" if args.public_did else None, + ) + + return agent + async def test_main( start_port: int, @@ -333,6 +457,8 @@ async def test_main( mediation = mediation, use_did_exchange = use_did_exchange, wallet_type = wallet_type, + public_did = True, + seed = "random", ) alice_container = AgentContainer( genesis, @@ -345,22 +471,28 @@ async def test_main( mediation = mediation, use_did_exchange = use_did_exchange, wallet_type = wallet_type, + public_did = False, seed = None, ) # start the agents - faber gets a public DID and schema/cred def await faber_container.initialize( - public_did = True, schema_name = "degree schema", schema_attrs = ["name", "date", "degree", "grade",], ) - await alice_container.initialize( - public_did = False, - ) + await alice_container.initialize() + + # faber create invitation + invite = await faber_container.generate_invitation() + + # alice accept invitation + invite_details = invite["invitation"] + connection = await alice_container.input_invitation(invite_details) + + # wait for faber connection to activate + await faber_container.detect_connection() + await alice_container.detect_connection() - # TODO faber create invitation - # TODO alice accept invitation - # TODO wait for faber connection to activate # TODO faber issue credential to alice # TODO alice check for received credential @@ -395,47 +527,7 @@ async def test_main( if __name__ == "__main__": - import argparse - - parser = argparse.ArgumentParser(description="Runs an Aries demo agent.") - parser.add_argument("--no-auto", action="store_true", help="Disable auto issuance") - parser.add_argument( - "-p", - "--port", - type=int, - default=8020, - metavar=(""), - help="Choose the starting port number to listen on", - ) - parser.add_argument( - "--did-exchange", - action="store_true", - help="Use DID-Exchange protocol for connections", - ) - parser.add_argument( - "--revocation", action="store_true", help="Enable credential revocation" - ) - parser.add_argument( - "--tails-server-base-url", - type=str, - metavar=(""), - help="Tals server base url", - ) - parser.add_argument( - "--timing", action="store_true", help="Enable timing information" - ) - parser.add_argument( - "--multitenant", action="store_true", help="Enable multitenancy options" - ) - parser.add_argument( - "--mediation", action="store_true", help="Enable mediation functionality" - ) - parser.add_argument( - "--wallet-type", - type=str, - metavar="", - help="Set the agent wallet type", - ) + parser = arg_parser() args = parser.parse_args() if args.did_exchange and args.mediation: diff --git a/docker/Dockerfile.bdd b/docker/Dockerfile.bdd index dfe439c878..eb4db18a53 100644 --- a/docker/Dockerfile.bdd +++ b/docker/Dockerfile.bdd @@ -3,4 +3,7 @@ FROM faber-alice-demo # Install bdd dependencies RUN pip3 install --no-cache-dir -r demo/requirements.behave.txt -ENTRYPOINT ["bash", "-c", "demo/ngrok-wait.sh \"$@\"", "--"] +# ENTRYPOINT ["bash", "-c", "demo/ngrok-wait.sh \"$@\"", "--"] +WORKDIR ./demo +RUN chmod a+w . +ENTRYPOINT ["behave"] From c03a9ec569699cf494aef70666ec7b93582fd618 Mon Sep 17 00:00:00 2001 From: Ethan Sung Date: Wed, 17 Feb 2021 13:23:01 +0900 Subject: [PATCH 041/243] Update responder profile by creating a new responder Co-authored-by: Timo Glastra Signed-off-by: Ethan Sung --- aries_cloudagent/transport/inbound/session.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/aries_cloudagent/transport/inbound/session.py b/aries_cloudagent/transport/inbound/session.py index 120fe8d416..ac79ba251b 100644 --- a/aries_cloudagent/transport/inbound/session.py +++ b/aries_cloudagent/transport/inbound/session.py @@ -171,9 +171,15 @@ async def handle_relay_context(self, payload_enc: Union[str, bytes]): self.profile.context, wallet ) - # Update a responder profile with wallet profile - responder: AdminResponder = profile.inject(BaseResponder) - responder._profile = profile + + base_responder: AdminResponder = profile.inject(BaseResponder) + + # Create new responder based on base responder + responder = AdminResponder( + profile, + base_responder._send, + base_responder._webhook, + ) profile.context.injector.bind_instance(BaseResponder, responder) # overwrite session profile with wallet profile From 70edc36f09421d22a03289c924600ed5738f7582 Mon Sep 17 00:00:00 2001 From: Ethan Sung Date: Wed, 17 Feb 2021 14:43:41 +0900 Subject: [PATCH 042/243] Add properties in AdminResponder Signed-off-by: Ethan Sung --- aries_cloudagent/admin/server.py | 10 ++++++++++ aries_cloudagent/transport/inbound/session.py | 7 +++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/aries_cloudagent/admin/server.py b/aries_cloudagent/admin/server.py index f137f0e5cb..a1344ddffd 100644 --- a/aries_cloudagent/admin/server.py +++ b/aries_cloudagent/admin/server.py @@ -108,6 +108,16 @@ async def send_webhook(self, topic: str, payload: dict): """ await self._webhook(self._profile, topic, payload) + @property + def send(self) -> Coroutine: + """Accessor for async function to send outbound message.""" + return self._send + + @property + def webhook(self) -> Coroutine: + """Accessor for the async function to dispatch a webhook.""" + return self._webhook + class WebhookTarget: """Class for managing webhook target information.""" diff --git a/aries_cloudagent/transport/inbound/session.py b/aries_cloudagent/transport/inbound/session.py index ac79ba251b..165b486a7a 100644 --- a/aries_cloudagent/transport/inbound/session.py +++ b/aries_cloudagent/transport/inbound/session.py @@ -171,14 +171,13 @@ async def handle_relay_context(self, payload_enc: Union[str, bytes]): self.profile.context, wallet ) - base_responder: AdminResponder = profile.inject(BaseResponder) - + # Create new responder based on base responder responder = AdminResponder( profile, - base_responder._send, - base_responder._webhook, + base_responder.send, + base_responder.webhook, ) profile.context.injector.bind_instance(BaseResponder, responder) From 04318733965495a83650fb62312fdddaecf970bb Mon Sep 17 00:00:00 2001 From: Ethan Sung Date: Wed, 17 Feb 2021 14:44:01 +0900 Subject: [PATCH 043/243] Add unit test Signed-off-by: Ethan Sung --- aries_cloudagent/transport/inbound/tests/test_session.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/aries_cloudagent/transport/inbound/tests/test_session.py b/aries_cloudagent/transport/inbound/tests/test_session.py index c5fcff15fb..9cf8cce413 100644 --- a/aries_cloudagent/transport/inbound/tests/test_session.py +++ b/aries_cloudagent/transport/inbound/tests/test_session.py @@ -3,7 +3,9 @@ from asynctest import TestCase, mock as async_mock +from ....admin.server import AdminResponder from ....core.in_memory import InMemoryProfile +from ....messaging.responder import BaseResponder from ....multitenant.manager import MultitenantManager from ...error import WireFormatError @@ -121,6 +123,10 @@ async def test_receive(self): MultitenantManager, self.multitenant_mgr ) self.profile.context.update_settings({"multitenant.enabled": True}) + self.base_responder = async_mock.MagicMock(AdminResponder, autospec=True) + self.profile.context.injector.bind_instance( + BaseResponder, self.base_responder + ) sess = InboundSession( profile=self.profile, From 354d89a6afe5f71f74b961059041d719e3a3a1fa Mon Sep 17 00:00:00 2001 From: Ethan Sung Date: Wed, 17 Feb 2021 14:48:00 +0900 Subject: [PATCH 044/243] Fix format Signed-off-by: Ethan Sung --- aries_cloudagent/transport/inbound/tests/test_session.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/aries_cloudagent/transport/inbound/tests/test_session.py b/aries_cloudagent/transport/inbound/tests/test_session.py index 9cf8cce413..17cb970e4e 100644 --- a/aries_cloudagent/transport/inbound/tests/test_session.py +++ b/aries_cloudagent/transport/inbound/tests/test_session.py @@ -124,9 +124,7 @@ async def test_receive(self): ) self.profile.context.update_settings({"multitenant.enabled": True}) self.base_responder = async_mock.MagicMock(AdminResponder, autospec=True) - self.profile.context.injector.bind_instance( - BaseResponder, self.base_responder - ) + self.profile.context.injector.bind_instance(BaseResponder, self.base_responder) sess = InboundSession( profile=self.profile, From a5192690253bde251e4875facec4690690d647e7 Mon Sep 17 00:00:00 2001 From: sklump Date: Wed, 17 Feb 2021 12:03:52 +0000 Subject: [PATCH 045/243] fix collaterol pics Signed-off-by: sklump --- demo/collateral/1-Faber-Invitation-1.png | Bin 22567 -> 22406 bytes demo/collateral/1-Faber-Invitation-2.png | Bin 26391 -> 26367 bytes demo/collateral/1-Faber-Invitation-3.png | Bin 240101 -> 33676 bytes demo/collateral/1-Faber-Invitation-4.png | Bin 178199 -> 19542 bytes demo/collateral/2-Alice-Invitation-1.png | Bin 190482 -> 29888 bytes demo/collateral/2-Alice-Invitation-2.png | Bin 163205 -> 22123 bytes demo/collateral/2-Alice-Invitation-3.png | Bin 146869 -> 28751 bytes demo/collateral/2-Alice-Invitation-4.png | Bin 114164 -> 19923 bytes demo/collateral/2-Alice-Invitation-5.png | Bin 182386 -> 24722 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/demo/collateral/1-Faber-Invitation-1.png b/demo/collateral/1-Faber-Invitation-1.png index 7dbb0183480b075093d1a3b1b14b768ed123045c..9119eaf4c324f3b493daa0ff99514282449d5d99 100644 GIT binary patch literal 22406 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 literal 22567 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 AlK=n! diff --git a/demo/collateral/1-Faber-Invitation-2.png b/demo/collateral/1-Faber-Invitation-2.png index a5c29f107efa89f6e44b1f32eede7cf8e0089b7f..7f890fceba5669cd0e625e0efe64a27809a5bf53 100644 GIT binary patch literal 26367 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 H{NsNBZgfDf diff --git a/demo/collateral/1-Faber-Invitation-3.png b/demo/collateral/1-Faber-Invitation-3.png index 7664a9554f0b1dd59678240e7d932d2c3d0e8bc4..dc977ca30c72046e35ab3ab4805dc110b2e6c13c 100644 GIT binary patch literal 33676 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 bo?VqwBGc#tHqOWPF@73%bZ?_>Jq-RoOiYw^ diff --git a/demo/collateral/1-Faber-Invitation-4.png b/demo/collateral/1-Faber-Invitation-4.png index 86046ec1cab8723862000d3b7d68b09f16429665..ade206351612e06ec03c211a619cc39d3caf601e 100644 GIT binary patch literal 19542 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 literal 178199 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

dk&r-Hml$RxD@E+!wOl>`IH0wruF z9wVGBp{DoCP@|TEjGt_0P2#6dW`NCv-o|g>jZcNC5nNFsNA6*;dz|yGJXmf$fgSpt7>PMLz$Hl&JMqd;Zce?J zo4>!7vEs-&kF7Yt_V&RL z1X;`AEjgx~rv{%_0lif`-wr+76XjBk1bFW;5I8-t5ql;wix(dgFB9kL-%Ct46 zcgV~Qt57)8GwuORYay?=uY#V%)j_Pb`@_JsusGiM=(Z;3RqR@L&)a*fc0394H-R2jYdi*pLIknTCmIsuNilQ$)aqT6=lZ>zyoXn2pkVeRL zwY%x*=UXyZ4^Dur8&)W2RwLhbdP)Azdm!CRP4%@z&54-7u4AtV@AT&q#%FidW}pk- zzr~nB?(O2%yImb3r%+>6QS2CJC}1XE&iaRL!&dWvPy+^AlSe^+C-E$?&X4i3xa6CP? zK#7vx&%iJgu#Xm5DnO*N@lX6y=H^FhB78m1w0_npx8ag$NeHh{bv3>XmmTg`PaS-Q=V{oX!LS5lJ^4Ee8V(^74I@4I79OcHSKM=Ik- zU-lk5CZP=^5cVcnJT`)p0>04sI)w7R0p1XE_7YC%I1O%(SUdTeb zE6WX4^32Gs*=bIzF(2IL3X^w>k?pBdJ~+gXnn~cZv;tDB+!L!=IHblBm17@^@%#Jf|#13+GqI(Kn&oUv@mw; zzZTj0AG{kC(zSAc-&p)Jp3x5UP7kP5(|w7~ofi3Kh`#?}n2;sW`J^{W9X7dM$W9f> zB~G3`8W}KWl8rI18Fo^gm-aOkSBNt4)9Rqn_S=i-|0 zML9MNBGUwBNmK|iGIm))G9`aOQ!ej%;cpWU?ar6RJIoE6Fecy5 zUbYD>**5jdSK!5OM+TTyY^;9ONu10R_X`bkR$1)Nt@B5^`jX5hMY#sFirPNmmNaAf zE2#lcZ1UF|b-P@-eqre0_<%}ymL1BY3LiZglH zQiTL|cHU%k8s<@4nAI~-wyf(}91{36*6L1Q)^XG3RGE5bfwAbi%g6E30tN9+8=kVF zeuc`D*nDBp3ENpWko#|>{9Jo}h-)W?z5NY;;h!IoccK#EOstz%pms8s$hLC` zuM3U+n*quwIV`!w3t0RONabG(C`*^hOWjGmQv2(~$A91MU@VmY1Kn0@_`4hbACn>f zfvUJ-%4JYM{a-kW+KZ(_dY=cw4=;A!lx9?JKO^d3vuwCzSA&+8b`N(zAs$wD-Ql5D zcRg@*eDV0P%I(KDF1&em`K2{4V?oD_gsk$%=Nb1iX&6nyw$x~O?l2ZGv5J-Q#nD~M zs<;*~la9DFxSg!cf9>Q0`9HE>oWEvwH}sa|mJ{?3f1M9>W1;-fpqKFA_`FPs1*u_=g5RR!8w8NesF;tGp|t}`Bv z$`*Cxft4+hkO}^ci`pVyh^mAWz{E}Wn{Lbg^@VQ_Q<&CH8FuOj4O~GT{hh@dd%2Xd z>Ov-y{l`ySmBN+WnLe~{S83qg6^Ty2F@_V@o{9!;uH&g(rQS-~loJ)LnJQu$*>BH7 z)b7(@dhR{Se9%75;ATNCQ= zgahd3|MSgX4b{!}a3&hC6^EGQZx7F%I=r5p+ZjiH`zzO8G%rvy%a*r%2mb#D_5b06 z3d|SA9{tG%9X?!`*|kjM>n(?@B(Ltat(x8G?ag3U8a_)$-c|Wjj~%m z50t47^dkLV+gpcfx4}ljQVP644Z!EvqI^jbLpIL(i8gVkw`3*1QXQ}a?SMR0}dYkN&FP5LQknR70U{si_~Dw=>^sUg;rbyIAIqtn6GheEX%x7a+!^ z3?H$w9ShCRH|oHNm@haeWHc}mq~?4vNMLS#^1{&5b0Pf>16UvC<%Si|`9(g_F}cQ$7b8ib#A;;;TpEnhmZZ@Rg>%+~Nz{vi&d^*sxbf92wY z_%veY6L}fFHjda@kIP;hY{*``9FaD9}W50ac zOG#Jvtz~h8Ax;QNOKUB-gmGTGb7pnmLHt2Zr02w=8Sj&o%qbU9DYaM-|`r? z58YK+#;J;d?asF|7xt`o)Vf%?>W?cC8XoASy(D++k=nxQYIBK3s>+1*4GE*t?RO}| z1#`s9Nu%9G&Pm~nh8n9b8Fzarnf2uehouG%X~_!5)HGINba^MET~3;PM1wL=2zgcQ zahzX^%DGEL-My_*u1_c4uXK!kXN}UowAd7XF1{wF%S+l&xyQG-bD?Bg)XTnO&E89{ zPCX%;tJWCPovld$tC!ZRh`uEbSz50eZs!PLC!DpHDiCJCZnlZR4t?DnK5MKA<<}_A zOR8^7%m4VN9ZC@j^xB(_ZeKi)-%kqFGBJ_4O&ix6UZW}}x-!PlI}`j(bsJrO zX<5k>#ClhCvVYHEHK@<1Tv4^AD!w+isv^9?WeBTb94c8{f*F7o6km9i=kw~tMUrO! z_r6qxjz?lkFqA%>?eh*?z2VU>{Gbo_$mSv{Y!@9QHj18`f@*v|)NUkZwLwmj-mj&TZ04&`OT%MI*L|oh)@tX7@fa z|Hz6NgBxpSC;{biw);1s#g4dhA8+axB5j&vRJv)1ldn(<1O zWL_c$UX=7a&d+n=y!(o1PKaP{2SBpyK>Z_C)+MjY0Mdlx`LsV*5cv3pzDwwc-W9#O zWE>hNvuomZyg|t5&C2_{VTwgn3)_KvSH~Q0{VZXs{DT&KDq)LSQVF|JuxNurh7fvK z6RiiIF#Xc;I8UVs`RpDXvV`(ex+f}B3=lu2o>&D-34!L+7g%})O;M4l#aET3qeRmU zEDy$GSrXRUm*d32H#o9 zBW+=^^77jJxfKrIWQbF32ZJHwRgSKW+0WSe&c>ju+B6u>SLxszYVTA(${ae#kv|Bp zaB8_bd2a*7Vr>&#OIT;Lp;td(!f8Op^7lwqN#W{tIT~!^dOHL6YdkG-j^)8gBfDcu)wd)%Vcd{KmYPO0ugSn5d_Z+BPQJkkcTP*STAKT5 zGi9R53I#aPUz3>2e~#V5M)#hnW&}g4Z81Feb@4-6qf@Rqu49@jMS{ZtcCeL4Jtt+V zmK|{=z#|k->^R!7hpA44{?|6-Nno@2mrm)&hnjq35NH&k4~;}NlQ@*S(Teu(jfihMRwO@ z{f{#YG7<-aF^RK#fblp+U&nzX5erW-b$%6hF{FiUUms16{pog7*l9fZ+R8oRtCm$d zWvu}^Vb+ll14p;ETgbPw^edxlV%_8CwX?#c>Ihp5f{U{n+zyj9aP1g>s}&)ql-EV< zdAA#{hg9|fWQ<82Dj~51&8GNl-7r7^Xm#rKhU~FnR}Y)xD9a)33b7Tf{cat?MBw@! zfpr%9{MYeN#|0`Ce)UTEPpiqp?bhXP*7wJZxK~5_na$XM0e>mt>e$D-$nUP_#&!cg zQS0bFO^}<)(`ZmTI=XH9?c-I(5x*HO0XX2Mcd1gUg{1V%GIXcx9r?xzwo2?)+nB@* znS1ErD05FJtV2LcW7VDofg-R(IzBCwiVynn$iLxXPjuM1xJJ%ridX9tjn+n5jn1=X zKVtB%mWyU>clWy0PG%jpi`?z&>?BNt`KS^!PG8O)=>?>T@&B_Hz_&3yK&R~(!}g5z z65je)ys2NSUgO3rs=7XkiI?1$izQ!&?u09O=Fh2%HTCc76T@|^HDcN6jUdQ!N$f_uz>^Xy9c&;G9Heo?Z?(yH3ClQ^-)!m$MDa>7%McBOJVO3*iI~yQOtsN#BWk@@)wY2``H3 zHD$p+j>XWi-LX#8C3<5Z<;pkrF=9Lmmwg@V;y4Ayaz2%`idLJhjUD&%kJcR_Y<%&Z zQF4>J6bF(M>BrBaOKl5y?;~T$Uh^Wm`0^OfoR_U-5rase6`Nsvu9GWWae4fm#qTG3 z);U<*V&v|0E#t{{3d|4Q6F}Aw*R4e2X>_BySME|H&wZ*^dUAd*BGxjxZaMqbul#eW z6p`vWK9m{xxjyr=nkikeW9t^SqMHG&j|w{HPd98JiG=i2MTh7y6*gm0kxm*TV+Mk~ zu(7b*L`lm>{+Z;XMI|ojn@LI3<|b?oIgJhDq|M?D#j%7+l`^&gQL7ZdVt@u?G@;sv3oJa>ELW2Oa$> z?&>gNr`?WoQDR zk>lZwk^b{|=MgMbi9!RG#AQ_5*?bqaKavMOpJfpa32z#l<(~z1`Zts=swwYY0nJZp zqC$>EB+A3|1Re9Zp#b<#4eG#fT*s9e&lJrJ3qqm?%v8+PX?v8O%1ty5beN zWeYNIQd?#`<-A53e8S(Loyj}h@8xe5)p9uubQ zL9>P2RXRnnUT5$&c&p`B)Q7Z>#Y*pZE1W+0RWj;uosZ|p&CyRCnwvFSe0O!(YCUqu zXe#A%k2x4t=X*!CSHnG$QhB|UVXwwxx5-*ion_$B(Ke0#fvB_E9wr&4_LCb!nOtQd zzeGHO4&}I3<%C{8q<8Hdj=beYh2=@96rT z?W`5JMaNSf-^GG>ChVWvBRL6cQEjf~0kPGefWr5cy01zZ@pcOZ!LsE7*B@=y7z5H17Wy>GXRKYzZF34&*H@v$ z+mk{T^=44lRIlZ)!^#}agCTH=!?v2aaNYO?GlU2EK&N)~9qFTpZs~m;fZr=(J{Pz+ z?zz5o)jc>dL}a?ADb7dGSQ#jW=zWzvXWXuByrge1;uD+>%^+->*=1R*sMX5d)T#NL zxr=SE#BFZmSlLtxslNX;ay_4A)fP!UU(k9^ZvWcS+^0|mp}B(UYQq@J?(7%u#n*4( zp%oH;_F2%?x&~=>)+@?fgtc*^dWYhbd7Ef}&`)cTW?nj)P#W&_I}Lq+x*QH&0q zbdDcZ&S{+HU%;u^im*MnU+dpNYcwAPg{ZQ1X@{|EhK8w0hed{Jxjp-Qga3+;a$=`g+D6IK z>%VlNpQ;3I^1Jcvh>fehbo&{&>z(Nc(B<0m)4x_= zXw*?J3;UBvqI&$*YsccccT(d_y<2TQ{c}?Pa_cq&c-OL#Rkoi0mpWPU8AgX}4wF95 z|Ao!zIRt5Yu#O7oUz*u}Lm+_;hkl-sVZotZ`WFDnzu*&bzeAAL4{=83-+rX{D;fw? zSP^M{1(8N?Tgo8vi%MqlqV$jSbQ*MjvO7Ol>-hrthqh-Hh8~HoZ2Suh?09l3F9P$j z%#<^DUF)3sXCt9H+qHtdTx5O4rjgZlrrk4r#x};e;|qzY0$z>12D9( zj-s>TejRi9AIRd18$PFC-u$vH-a26*ilQ-Vc={N$=EFSsdHhAb#E zc8|EVHm-_elQpV+AqIP2;^;~h$@9;itW=FF@7byQj7bH4!+i*_+WJ}==Vc%x<&e}| zX0Sru6w|7i%iWXa!K9B+y**N2fa;sGOQWTKBuRND#HHL?6J6%>6RWb4Q-_M17Bg5b zOY>@_piIN5>~S>zv3J4ErGG6UmS;R>SXh42JLRW-&~5d^t+VU}<8_q=4k1gT8-W3~ z_0vO>>5C-?Z;z(AvaNk!?_H1X_xUCfA$Sm)s+S#?D!mfgfpxW2J5UR}jmyP$?`M1- zHQKS+MOqA1i@V)F@O%5>k+od7OdF5iq6EmyIz4`o<@wAWLpBLIg!1f7K*jWhHRMD$ zsL#V_2h`tz4XNs2V^4pzh_BvS3Qt~evi{8hl)~}{r3K`0wcyX1hJ2UvSC-8qre412 zSsq9%S*7TL$*_UNeOLHnO^viXQ_Ov>7CjjdknZ5L{)N;2)?fThP3!6w*$*_}Sbjh5 z&nF5CJl_9#Gp&ETmUhct+z|#pr|6A-qg^IX`tHpz`sOHyMdA-ovvKqLmGfsji3qz0fGq*z(3hi+;uSU2^hCV`ZxY1aU8fSjp^R`-|K7orU#bMeBJa!&vvCtmE($zS0p8VnaqNu&ft=6`Q^ z+?L!wEkIrzt}1ljuST@6^hcu7FkMGY34?3t@T&dYS)k*re}n1%DH)*=bIQ&$^4zpP zXk}bIqD%C?dVnzr82Gby8>?)*3lK-AuDA`!?lDG~3%zd8`bT_r@G7gIG zTW68eC-tnnC2`hutOX^{-P2B&XMK-#4cu5InK$4=Un_;*=&xSnSNq z3!P2$`Lx@0RnDO#5YQn+VUck+Ps{5vo|D3?yIQu1$cPsqjP93Xb!N$46^6J~seCmS zQG=JVn4AYq!1`0g44MPpR^6LJqtfO!9+jHio7PRXY!HN#P!_4!0;S(rt3up4+Lk5Y z4C6{`&~k3T1EbEa7{TVgH0biUp}WbWRR?z_{aP7k*<6&gvtMsF$myW#xg!##l`xeJ z4?$gUxcI>-GGSq1`{J8bMEs9gGSm8|Wr-%PLZDW9_@tMBV1AFJe*QVEVWyz*)eiirr0GX6`^C$rPN%J3;>i5&N0xt_XANo30)a z|7+K#S%TB8ugt0~;7tWuZh!4nQ91*c#@7_s_wSbKW|#3YQCOZtCK1Ql0#hBlCJZX zWIajO=0D!HRORoj$NegOaDp`Ei$n=rMbI(D%7hyNRxTwk#oXT;TI1<%tefkLh#DvH z_evO$5nqT38FD@7#-@XC_62QpawT}^^qJ)MGtwsCWVD7w->mGth?Bu~vW~E5zi-fa zjtvGMv*ndCosL*32v+0J)xNgVR*%V>kk-h|u9RB1@ohCg=V5J}V6Cutr>?hJB(Vnc zwVP}oD+od`LW&z4@^gAI$zdpd{V@f#nLS?s+8_vb*(E(bEoRQn67|*QS{G?ekqiYX zzphUQ*RN+Nb;p?PrC%PBbW3I2Uj>bGbPC^huE(;B52?l>X_o|H^1-7rTnYEU#E8+D zI*k}5P2mTzoEdJzw?Lavt~sc<@lp29qEhy=f9)baHKkFDKPav(^wPtBA_{KArH@Hy z_Vx7@0+4wEjXRd6o_&hg^vAp;tsGkJKLa-T=l_X|N0$!B%%U;F!w=EHbP+z%LI?CN zeP={1_XZZ9do&8}%O>C-GfH)~RSxj8LFgPYyJgwBqwUqR1*&D|5-DggGV0YA>5lHv z5;lpDm5X66g~~#lKIj4pKJzMm1f`I{^?U~G{MRs*T08-sWVS(L|^Y@rxuJzpHl5@u+0H&cD zy1WMvj`>8ACXr|iaK6Mes+oNWW2WGHEW3VUB3*wn7)O`e;QaZ+Sr*{-$4P<*F#t%a zzbf(Eraat@S9UA45zDq`Cca9JmMO$PG}{csn{5`=Q35^yT85rj>qm?yVT5Csn)d$# z)%WU6=z439uYb^MC~8Ji_?H>))y>CJpar$fuY25nI&p=H8S1sZx9OV9PJ*9149<^Y zZ}(b`=PcC7MQTr#ilX)Y#Pqc~eq#E5wmXzN6GSoe;(M$*Wb&;`K^>h~|4~=z%vHbF zOHDAMFtoX<>ZUJgofKPERTUrx&8y`CR1Rya!kPMCqdnKAp^FL(?r|SRbXD8~1K9c^ zok{A~qDRFJMmJY)_}M=MkWsKH?*4N6njWOPwBir;nYUPYQ6<0oSPsmelqpw$FcQlz*q8CEKxD`(pLH?t@1$c)c+P)* zwz_|(ni+popi_|7R;er|!n%8_Zx5|@uXeAb!1sn5e}`oI%%+{*w=Zpk%^AE^4jHjZ zR1gQCaHsF8DeqO)pEIz_wUTI(2P`G-*7#sISV_tT^MMaKg;XjNm$%#4tNlE?W4 znpo5PGpu8aagCV#KwCJrdp%Yzby{X8_~w=2asMf@p%?CENAV{zlacEb#4KlhGrlm2 z2w~3+>Wq0(hOSqfoJb$0?__7oYobOMVtKG#oVxz%vxe053Nsuec(nl@f6*bqA}2lt zsbOT@g=tkOi66&@2MaVs4L3<^HIeHZSO&`*F+3xxXBX1(E<(s#B?Iqow2=Vu2{B%d z-!qIwZH66LM)w9}uLgJRN2CL%$- z-NblQc?zSi(`bYZpyTy0FOI~v(oKYIV()jlN;Y!Ux9$90UjZI|x095Ix(ihjKWq0; zHBFCq?Zc*{HqDo4sd*=&ga3<2`ElovNa6MNFc_yM`ptGQPY>=DT620g6G0#VD?1f+BPlL0D{~et&GHkxMZ>53mq*zml)^tZ&*{zC$ zdo1FU`(-kQsW1QGFeDgqT&|c-@cn^yP8@WGb|J>mSlaB-%4z{l4pc4 zdlllXYzqoSZnHQ{O?SRXDwugSMS^l4qUQ*a|zE%Gg|cyX_kW`D8`j zWYtSfzBS-H-{ri!F(v~Dc<|u;wnT{{U`7Ey7b6#?&*tLK18kz*V^%qUlgQ`i!|_Pu z>f*DPdiCQM8YGa*;2==-H82Xytz!;oBYlm(u;CgA{=$oEU}ChT){?Ox?}S~t%r<=a zK*BCK-3K)wfqhwtSR_OxEmWP=f1we&?Z1{3Cr%TvZ|XtNN+flUzNi#=_L>NBq4Dh| znP8jm+0uiFwo_d%8*sk1-kS~mVHFlXWQ?ZRmTY}D`a}aQv6^BSUe9_iXcJ=>kQm_N zhdU-CGlKGTe$3T5Qd6`0Ji^yU=PRiV$hT8MnayYPVXW0#-R0LFPUfr@*Qa)pX{$G9 zRW!Hn%VNYHS?^_qJ=6>!SEgi(HM=Fu5#dVfe{)EU@-1uIBYy{;fT>J< z&1RO!VIU6)CCq>RwIwSzJI>uATf{3?bO^@qPEBt!jKM-NMr>t#*LXJI>Hgg4qY;{0w;hlHQ zUp!orwGwG`WcABKoQqF-QBj^8JLi4Juy36q@A(ww6p(MrO`_6p)Y>QMNK_m9@XL`a zx09wxolB2sE8}DbHG~78uq4`AyOWn@IqnD2_l1Rrm-(4t_hq@*Tn%5jbcUpw5lmsw zW9V#M2@WvP_(y9YFbR83KWYpsHqt0~QVcN|J@J(U&}xs3k|`NRvKyq^5L6k%BMV@| zllZ|+(MGMkK~c%n>DaUOJ=xi!FkM99yKj2|r<~zC77JhpyU>owbZjV!hLI7H2aVmc zJb6{*k4}LS18bb?ds)E?f-3*TkD$+%Gu;ZBiUdf7fB< za2zaHlIe{^$t6tl%*+^`Fewnv6m>LU`cKMe*5=gqFX? zvOaK4?I7)a6u(PI)UOU+V9<|4F_o&bX z4GD>auyK1RaqW~BL8I8tSjLd<>dRg7H@C7snx2=Q<{` zp46({(wUS{)x|>DMkfYzr52*z=T51?qHyDi`XY0klH(J_GPV%7vd7(9&xl;(Z((vL zn*D5o(!6*hx;CY4>+c-~Ju4Bd8>Q}l%_vu&5#Dx^WwZ`M2N z`RZEOwDLMije57D-Hj<3)0~k%*uCNm49}+z#lIs-yqt44V1%@^Av{)5@-;DpgRKS* zqj{`x@?M=@j-E~8C!I=yzunuC25F<3as8!A@OB}fZdO&rrC_$5uq^+1-rM}?@&YTu z)sy=b%x)F3(oHSz%aB`qs%sb%$5;U$FNFbiX0Ut{!AL=qkJ{UoH4oio_S0kfi<~?ubUX> z8V~&&iB-l)n(cHA_*1%nfDaa@meD2!Z0EeT(Gv{00@=b_9cU~D>cv!`;=l!R8tUcX z>w5$l>l*Glhl0DgsqM}lfy2k=>ho;i`i>zi1+MsQia&hshI7~0^OrIGe=>VG%l{J6r z8g;Ub^+dn0@KF8UD#kYpCF-c|HeS0-2s;qx7|>;iZ_0Zn5v=;y#e%NoaY&^X!FDWt zsh&e)RbpT@ivE#W-6XY&v+pJ6muFpv=_U<_7+Gh2ha*(FIbF9 zY&Dg}(1f1o0JBJ{Sh+em=|7Vy%$E!e6du~EviHr6QWouU zb@V%sHDuEByO4tj$Ms4JkS~i zKjg1$EJeSOBBZBp zqoZFTKN-Rfahn5e=&JNlbw4>Ov-zx8$?YNXUDgHs56Df&w5#SBmLC9|Ztr%vAzrCL zd9|~Pw;06r^{=TbPV<|_>uT*P)e1KtFQ$kgn!@s{kE?DgKju8M47r|PP9*3Sjsq|iGDeM&F5`#N>nnbTkims5=m6JIq8?|nyBwMTMXq(FdtSd z^2C-+e+=G zvS>ySigLD9F}Yk1adTlV8RM(V2#Ka{5OJSwL2r4?|P~@@v?u9 zsVQP@Zs`{8@*kRFXtk-7$8yA`-82tn6tStzYLIUzNlU;J9@DFh0jmg6wG8fc3!17; zfs4^sSuC8o^=%g`75C`5)j2cx2-R6-&3n1E9k6Vf$<&m{fpSuy4!ri zEekgP0-Gpm)@rk(3We^Jg0(7}-ItJVXq$$*bw}Gcu?A4K+?Ccb-milnd>muV3+baa zh&GO^K_qgZhK)+sNs?khCJQ1siO>(e8H7tWFZxbGGf6hy*;|z5!C2 z@(3G0mTd6crgOs^x&c%#9i1jFU^ZW>y{%dItkV7mqxY-DLe$(x%)@J$e$GE-|`SzojO3%|bTH zZj;N8jTAk;q_^&^&?LD0+C*A#TjBy&xyYnHh6>X7g?-?NewIdpL=uz3Da(5pQ6O z?yB#P5RQO%1mO2i^og6gCMHGgOWzxU(`v7OcX-Ha{WG&JW9(Qz-Gsg~NZH8U$>WqM z#HV6I%^`8LF>;U@el~x(BGjH&yHHMobh&ZBxQ<9mnOLxUwpC9x}9v3cRKcK31 z0@%W*zPy_3T;MitIl1xF?ufqA!&Btt!rBf1v7j+ZQ@ei#q$jr5HcJLRPA{3%{YJ_$ z`mzM}+LnTD`k%Riy77{Cs^swxVsf2tabo)oNWkQX* zz{Au^z8OqqHjA0zR=REXB($-SLrHh{ZsRxJn0**=@wM+E*9r+J^#vw|N#Ew-Tc3Zr zeR7gyXxH2∾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 diff --git a/demo/collateral/2-Alice-Invitation-4.png b/demo/collateral/2-Alice-Invitation-4.png index 54337ce7adf56f3c1ced76b19141198503ab7563..5c31bc0c3cd8bd337255b03454624047f512c310 100644 GIT binary patch literal 19923 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%0D2C7_)k2%QlT=)a- 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≠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 E15@{z+5i9m diff --git a/demo/collateral/2-Alice-Invitation-5.png b/demo/collateral/2-Alice-Invitation-5.png index 94a6d3e7bb90f49d01458ff749a8b4399e09dce2..a7b96ad7879a722aec64c8ca54cef6c1376610b0 100644 GIT binary patch literal 24722 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�KcaKtq23)!Nldd>M!vPh}@mlG7k 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� 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 From 3be3c7cafbd9c9055f07119f3b25e22bcb91ab9b Mon Sep 17 00:00:00 2001 From: sklump Date: Wed, 17 Feb 2021 19:14:40 +0000 Subject: [PATCH 046/243] messages + unit tests Signed-off-by: sklump --- .../protocols/present_proof/definition.py | 2 +- .../present_proof/{util => indy}/__init__.py | 0 .../present_proof/{util => indy}/predicate.py | 0 .../present_proof/indy/presentation.py | 160 ++ .../{util => indy}/presentation_preview.py | 52 +- .../present_proof/indy/proof_request.py | 162 ++ .../{util => indy}/tests/__init__.py | 0 .../tests/test_presentation_preview.py | 2 +- .../{util/indy.py => indy/xform.py} | 4 +- .../v1_0/messages/tests/test_presentation.py | 2 +- .../tests/test_presentation_proposal.py | 18 +- .../tests/test_presentation_request.py | 2 +- .../protocols/present_proof/v1_0/routes.py | 162 +- .../present_proof/v1_0/tests/test_manager.py | 32 +- .../present_proof/v2_0/message_types.py | 12 +- .../present_proof/v2_0/messages/pres.py | 109 + .../present_proof/v2_0/messages/pres_ack.py | 4 +- .../v2_0/messages/pres_format.py | 21 +- .../v2_0/messages/pres_proposal.py | 8 +- .../v2_0/messages/pres_request.py | 34 +- .../v2_0/messages/tests/test_pres.py | 1811 +++++++++++++++++ .../v2_0/messages/tests/test_pres_format.py | 22 +- .../v2_0/messages/tests/test_pres_proposal.py | 30 +- .../v2_0/messages/tests/test_pres_request.py | 225 ++ 24 files changed, 2612 insertions(+), 262 deletions(-) rename aries_cloudagent/protocols/present_proof/{util => indy}/__init__.py (100%) rename aries_cloudagent/protocols/present_proof/{util => indy}/predicate.py (100%) create mode 100644 aries_cloudagent/protocols/present_proof/indy/presentation.py rename aries_cloudagent/protocols/present_proof/{util => indy}/presentation_preview.py (89%) create mode 100644 aries_cloudagent/protocols/present_proof/indy/proof_request.py rename aries_cloudagent/protocols/present_proof/{util => indy}/tests/__init__.py (100%) rename aries_cloudagent/protocols/present_proof/{util => indy}/tests/test_presentation_preview.py (99%) rename aries_cloudagent/protocols/present_proof/{util/indy.py => indy/xform.py} (98%) create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py diff --git a/aries_cloudagent/protocols/present_proof/definition.py b/aries_cloudagent/protocols/present_proof/definition.py index 97889b6ee6..baf2b7b433 100644 --- a/aries_cloudagent/protocols/present_proof/definition.py +++ b/aries_cloudagent/protocols/present_proof/definition.py @@ -12,5 +12,5 @@ "minimum_minor_version": 0, "current_minor_version": 0, "path": "v2_0", - } + }, ] diff --git a/aries_cloudagent/protocols/present_proof/util/__init__.py b/aries_cloudagent/protocols/present_proof/indy/__init__.py similarity index 100% rename from aries_cloudagent/protocols/present_proof/util/__init__.py rename to aries_cloudagent/protocols/present_proof/indy/__init__.py diff --git a/aries_cloudagent/protocols/present_proof/util/predicate.py b/aries_cloudagent/protocols/present_proof/indy/predicate.py similarity index 100% rename from aries_cloudagent/protocols/present_proof/util/predicate.py rename to aries_cloudagent/protocols/present_proof/indy/predicate.py diff --git a/aries_cloudagent/protocols/present_proof/indy/presentation.py b/aries_cloudagent/protocols/present_proof/indy/presentation.py new file mode 100644 index 0000000000..473518f4de --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/indy/presentation.py @@ -0,0 +1,160 @@ +"""Utilities to deal with indy.""" + +from marshmallow import fields, validate, validates_schema + +from ....indy.holder import IndyHolder +from ....messaging.models.openapi import OpenAPISchema +from ....messaging.valid import ( + INDY_CRED_DEF_ID, + INDY_PREDICATE, + INDY_VERSION, + INT_EPOCH, +) + + +class IndyProofReqPredSpecRestrictionsSchema(OpenAPISchema): + """Schema for restrictions in attr or pred specifier indy proof request.""" + + schema_id = fields.String( + description="Schema identifier", required=False, **INDY_SCHEMA_ID + ) + schema_issuer_did = fields.String( + description="Schema issuer (origin) DID", required=False, **INDY_DID + ) + schema_name = fields.String( + example="transcript", description="Schema name", required=False + ) + schema_version = fields.String( + description="Schema version", required=False, **INDY_VERSION + ) + issuer_did = fields.String( + description="Credential issuer DID", required=False, **INDY_DID + ) + cred_def_id = fields.String( + description="Credential definition identifier", + required=False, + **INDY_CRED_DEF_ID, + ) + + +class IndyProofReqNonRevokedSchema(OpenAPISchema): + """Non-revocation times specification in indy proof request.""" + + to = fields.Int( + description="Timestamp of interest for non-revocation proof", + required=True, + strict=True, + **INT_EPOCH, + ) + + +class IndyProofReqAttrSpecSchema(OpenAPISchema): + """Schema for attribute specification in indy proof request.""" + + name = fields.String( + example="favouriteDrink", description="Attribute name", required=False + ) + names = fields.List( + fields.String(example="age"), + description="Attribute name group", + required=False, + ) + restrictions = fields.List( + fields.Dict( + keys=fields.Str( + validate=validate.Regexp( + "^schema_id|" + "schema_issuer_did|" + "schema_name|" + "schema_version|" + "issuer_did|" + "cred_def_id|" + "attr::.+::value$" # indy does not support attr::...::marker here + ), + example="cred_def_id", # marshmallow/apispec v3.0 ignores + ), + values=fields.Str(example=INDY_CRED_DEF_ID["example"]), + ), + description=( + "If present, credential must satisfy one of given restrictions: specify " + "schema_id, schema_issuer_did, schema_name, schema_version, " + "issuer_did, cred_def_id, and/or attr::::value " + "where represents a credential attribute name" + ), + required=False, + ) + non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) + + @validates_schema + def validate_fields(self, data, **kwargs): + """ + Validate schema fields. + + Data must have exactly one of name or names; if names then restrictions are + mandatory. + + Args: + data: The data to validate + + Raises: + ValidationError: if data has both or neither of name and names + + """ + if ("name" in data) == ("names" in data): + raise ValidationError( + "Attribute specification must have either name or names but not both" + ) + restrictions = data.get("restrictions") + if ("names" in data) and (not restrictions or all(not r for r in restrictions)): + raise ValidationError( + "Attribute specification on 'names' must have non-empty restrictions" + ) + + +class IndyProofReqPredSpecSchema(OpenAPISchema): + """Schema for predicate specification in indy proof request.""" + + name = fields.String(example="index", description="Attribute name", required=True) + p_type = fields.String( + description="Predicate type ('<', '<=', '>=', or '>')", + required=True, + **INDY_PREDICATE, + ) + p_value = fields.Int(description="Threshold value", required=True, strict=True) + restrictions = fields.List( + fields.Nested(IndyProofReqPredSpecRestrictionsSchema()), + description="If present, credential must satisfy one of given restrictions", + required=False, + ) + non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) + + +class IndyProofRequestSchema(OpenAPISchema): + """Schema for indy proof request.""" + + nonce = fields.String(description="Nonce", required=False, example="1234567890") + name = fields.String( + description="Proof request name", + required=False, + example="Proof request", + default="Proof request", + ) + version = fields.String( + description="Proof request version", + required=False, + default="1.0", + **INDY_VERSION, + ) + requested_attributes = fields.Dict( + description="Requested attribute specifications of proof request", + required=True, + keys=fields.Str(example="0_attr_uuid"), # marshmallow/apispec v3.0 ignores + values=fields.Nested(IndyProofReqAttrSpecSchema()), + ) + requested_predicates = fields.Dict( + description="Requested predicate specifications of proof request", + required=True, + keys=fields.Str(example="0_age_GE_uuid"), # marshmallow/apispec v3.0 ignores + values=fields.Nested(IndyProofReqPredSpecSchema()), + ) + non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) diff --git a/aries_cloudagent/protocols/present_proof/util/presentation_preview.py b/aries_cloudagent/protocols/present_proof/indy/presentation_preview.py similarity index 89% rename from aries_cloudagent/protocols/present_proof/util/presentation_preview.py rename to aries_cloudagent/protocols/present_proof/indy/presentation_preview.py index 47bfa6cf7b..1ee7c7d9e1 100644 --- a/aries_cloudagent/protocols/present_proof/util/presentation_preview.py +++ b/aries_cloudagent/protocols/present_proof/indy/presentation_preview.py @@ -21,13 +21,13 @@ PRESENTATION_PREVIEW = "present-proof/1.0/presentation-preview" # message type -class PresPredSpec(BaseModel): +class IndyPresPredSpec(BaseModel): """Class representing a predicate specification within a presentation preview.""" class Meta: """Pred spec metadata.""" - schema_class = "PresPredSpecSchema" + schema_class = "IndyPresPredSpecSchema" def __init__( self, @@ -69,13 +69,13 @@ def __eq__(self, other): return self.threshold == other.threshold -class PresPredSpecSchema(BaseModelSchema): +class IndyPresPredSpecSchema(BaseModelSchema): """Predicate specifiation schema.""" class Meta: """Predicate specifiation schema metadata.""" - model_class = PresPredSpec + model_class = IndyPresPredSpec name = fields.Str(description="Attribute name", required=True, example="high_score") cred_def_id = fields.Str( @@ -91,13 +91,13 @@ class Meta: threshold = fields.Int(description="Threshold value", required=True, strict=True) -class PresAttrSpec(BaseModel): +class IndyPresAttrSpec(BaseModel): """Class representing an attibute specification within a presentation preview.""" class Meta: """Attr spec metadata.""" - schema_class = "PresAttrSpecSchema" + schema_class = "IndyPresAttrSpecSchema" class Posture(Enum): """Attribute posture: self-attested, revealed claim or unrevealed claim.""" @@ -138,7 +138,7 @@ def __init__( @staticmethod def list_plain(plain: dict, cred_def_id: str, referent: str = None): """ - Return a list of `PresAttrSpec` on input cred def id. + Return a list of `IndyPresAttrSpec` on input cred def id. Args: plain: dict mapping names to values @@ -146,26 +146,26 @@ def list_plain(plain: dict, cred_def_id: str, referent: str = None): referent: single referent to use, omit for none Returns: - List of PresAttrSpec on input cred def id with no MIME types + List of IndyPresAttrSpec on input cred def id with no MIME types """ return [ - PresAttrSpec( + IndyPresAttrSpec( name=k, cred_def_id=cred_def_id, value=plain[k], referent=referent ) for k in plain ] @property - def posture(self) -> "PresAttrSpec.Posture": + def posture(self) -> "IndyPresAttrSpec.Posture": """Attribute posture: self-attested, revealed claim, or unrevealed claim.""" if self.cred_def_id: if self.value: - return PresAttrSpec.Posture.REVEALED_CLAIM - return PresAttrSpec.Posture.UNREVEALED_CLAIM + return IndyPresAttrSpec.Posture.REVEALED_CLAIM + return IndyPresAttrSpec.Posture.UNREVEALED_CLAIM if self.value: - return PresAttrSpec.Posture.SELF_ATTESTED + return IndyPresAttrSpec.Posture.SELF_ATTESTED return None @@ -174,7 +174,7 @@ def b64_decoded_value(self) -> str: return b64_to_str(self.value) if self.value and self.mime_type else self.value - def satisfies(self, pred_spec: PresPredSpec): + def satisfies(self, pred_spec: IndyPresPredSpec): """Whether current specified attribute satisfies input specified predicate.""" return bool( @@ -206,13 +206,13 @@ def __eq__(self, other): return self.b64_decoded_value() == other.b64_decoded_value() -class PresAttrSpecSchema(BaseModelSchema): +class IndyPresAttrSpecSchema(BaseModelSchema): """Attribute specifiation schema.""" class Meta: """Attribute specifiation schema metadata.""" - model_class = PresAttrSpec + model_class = IndyPresAttrSpec name = fields.Str( description="Attribute name", required=True, example="favourite_drink" @@ -230,21 +230,21 @@ class Meta: ) -class PresentationPreview(BaseModel): +class IndyPresentationPreview(BaseModel): """Class representing presentation preview.""" class Meta: """Presentation preview metadata.""" - schema_class = "PresentationPreviewSchema" + schema_class = "IndyPresentationPreviewSchema" message_type = PRESENTATION_PREVIEW def __init__( self, *, _type: str = None, - attributes: Sequence[PresAttrSpec] = None, - predicates: Sequence[PresPredSpec] = None, + attributes: Sequence[IndyPresAttrSpec] = None, + predicates: Sequence[IndyPresPredSpec] = None, **kwargs, ): """ @@ -264,7 +264,7 @@ def __init__( def _type(self): """Accessor for message type.""" - return DIDCommPrefix.qualify_current(PresentationPreview.Meta.message_type) + return DIDCommPrefix.qualify_current(IndyPresentationPreview.Meta.message_type) def has_attr_spec(self, cred_def_id: str, name: str, value: str) -> bool: """ @@ -335,7 +335,7 @@ def non_revoc(cred_def_id: str) -> NonRevocationInterval: attr_specs_names = {} for attr_spec in self.attributes: - if attr_spec.posture == PresAttrSpec.Posture.SELF_ATTESTED: + if attr_spec.posture == IndyPresAttrSpec.Posture.SELF_ATTESTED: proof_req["requested_attributes"][ "self_{}_uuid".format(canon(attr_spec.name)) ] = {"name": attr_spec.name} @@ -427,13 +427,13 @@ def __eq__(self, other): return True -class PresentationPreviewSchema(BaseModelSchema): +class IndyPresentationPreviewSchema(BaseModelSchema): """Presentation preview schema.""" class Meta: """Presentation preview schema metadata.""" - model_class = PresentationPreview + model_class = IndyPresentationPreview _type = fields.Str( description="Message type identifier", @@ -441,5 +441,5 @@ class Meta: example=DIDCommPrefix.qualify_current(PRESENTATION_PREVIEW), data_key="@type", ) - attributes = fields.Nested(PresAttrSpecSchema, required=True, many=True) - predicates = fields.Nested(PresPredSpecSchema, required=True, many=True) + attributes = fields.Nested(IndyPresAttrSpecSchema, required=True, many=True) + predicates = fields.Nested(IndyPresPredSpecSchema, required=True, many=True) diff --git a/aries_cloudagent/protocols/present_proof/indy/proof_request.py b/aries_cloudagent/protocols/present_proof/indy/proof_request.py new file mode 100644 index 0000000000..5fb1137a15 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/indy/proof_request.py @@ -0,0 +1,162 @@ +"""Utilities to deal with indy.""" + +from marshmallow import fields, validate, validates_schema + +from ....indy.holder import IndyHolder +from ....messaging.models.openapi import OpenAPISchema +from ....messaging.valid import ( + INDY_CRED_DEF_ID, + INDY_DID, + INDY_PREDICATE, + INDY_SCHEMA_ID, + INDY_VERSION, + INT_EPOCH, +) + + +class IndyProofReqPredSpecRestrictionsSchema(OpenAPISchema): + """Schema for restrictions in attr or pred specifier indy proof request.""" + + schema_id = fields.String( + description="Schema identifier", required=False, **INDY_SCHEMA_ID + ) + schema_issuer_did = fields.String( + description="Schema issuer (origin) DID", required=False, **INDY_DID + ) + schema_name = fields.String( + example="transcript", description="Schema name", required=False + ) + schema_version = fields.String( + description="Schema version", required=False, **INDY_VERSION + ) + issuer_did = fields.String( + description="Credential issuer DID", required=False, **INDY_DID + ) + cred_def_id = fields.String( + description="Credential definition identifier", + required=False, + **INDY_CRED_DEF_ID, + ) + + +class IndyProofReqNonRevokedSchema(OpenAPISchema): + """Non-revocation times specification in indy proof request.""" + + to = fields.Int( + description="Timestamp of interest for non-revocation proof", + required=True, + strict=True, + **INT_EPOCH, + ) + + +class IndyProofReqAttrSpecSchema(OpenAPISchema): + """Schema for attribute specification in indy proof request.""" + + name = fields.String( + example="favouriteDrink", description="Attribute name", required=False + ) + names = fields.List( + fields.String(example="age"), + description="Attribute name group", + required=False, + ) + restrictions = fields.List( + fields.Dict( + keys=fields.Str( + validate=validate.Regexp( + "^schema_id|" + "schema_issuer_did|" + "schema_name|" + "schema_version|" + "issuer_did|" + "cred_def_id|" + "attr::.+::value$" # indy does not support attr::...::marker here + ), + example="cred_def_id", # marshmallow/apispec v3.0 ignores + ), + values=fields.Str(example=INDY_CRED_DEF_ID["example"]), + ), + description=( + "If present, credential must satisfy one of given restrictions: specify " + "schema_id, schema_issuer_did, schema_name, schema_version, " + "issuer_did, cred_def_id, and/or attr::::value " + "where represents a credential attribute name" + ), + required=False, + ) + non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) + + @validates_schema + def validate_fields(self, data, **kwargs): + """ + Validate schema fields. + + Data must have exactly one of name or names; if names then restrictions are + mandatory. + + Args: + data: The data to validate + + Raises: + ValidationError: if data has both or neither of name and names + + """ + if ("name" in data) == ("names" in data): + raise ValidationError( + "Attribute specification must have either name or names but not both" + ) + restrictions = data.get("restrictions") + if ("names" in data) and (not restrictions or all(not r for r in restrictions)): + raise ValidationError( + "Attribute specification on 'names' must have non-empty restrictions" + ) + + +class IndyProofReqPredSpecSchema(OpenAPISchema): + """Schema for predicate specification in indy proof request.""" + + name = fields.String(example="index", description="Attribute name", required=True) + p_type = fields.String( + description="Predicate type ('<', '<=', '>=', or '>')", + required=True, + **INDY_PREDICATE, + ) + p_value = fields.Int(description="Threshold value", required=True, strict=True) + restrictions = fields.List( + fields.Nested(IndyProofReqPredSpecRestrictionsSchema()), + description="If present, credential must satisfy one of given restrictions", + required=False, + ) + non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) + + +class IndyProofRequestSchema(OpenAPISchema): + """Schema for indy proof request.""" + + nonce = fields.String(description="Nonce", required=False, example="1234567890") + name = fields.String( + description="Proof request name", + required=False, + example="Proof request", + default="Proof request", + ) + version = fields.String( + description="Proof request version", + required=False, + default="1.0", + **INDY_VERSION, + ) + requested_attributes = fields.Dict( + description="Requested attribute specifications of proof request", + required=True, + keys=fields.Str(example="0_attr_uuid"), # marshmallow/apispec v3.0 ignores + values=fields.Nested(IndyProofReqAttrSpecSchema()), + ) + requested_predicates = fields.Dict( + description="Requested predicate specifications of proof request", + required=True, + keys=fields.Str(example="0_age_GE_uuid"), # marshmallow/apispec v3.0 ignores + values=fields.Nested(IndyProofReqPredSpecSchema()), + ) + non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) diff --git a/aries_cloudagent/protocols/present_proof/util/tests/__init__.py b/aries_cloudagent/protocols/present_proof/indy/tests/__init__.py similarity index 100% rename from aries_cloudagent/protocols/present_proof/util/tests/__init__.py rename to aries_cloudagent/protocols/present_proof/indy/tests/__init__.py diff --git a/aries_cloudagent/protocols/present_proof/util/tests/test_presentation_preview.py b/aries_cloudagent/protocols/present_proof/indy/tests/test_presentation_preview.py similarity index 99% rename from aries_cloudagent/protocols/present_proof/util/tests/test_presentation_preview.py rename to aries_cloudagent/protocols/present_proof/indy/tests/test_presentation_preview.py index 0c48ae9797..bf6dd321e4 100644 --- a/aries_cloudagent/protocols/present_proof/util/tests/test_presentation_preview.py +++ b/aries_cloudagent/protocols/present_proof/indy/tests/test_presentation_preview.py @@ -18,7 +18,7 @@ PresAttrSpec, PresPredSpec, PRESENTATION_PREVIEW, - PresentationPreview, + PresentationPreview, ) S_ID = { diff --git a/aries_cloudagent/protocols/present_proof/util/indy.py b/aries_cloudagent/protocols/present_proof/indy/xform.py similarity index 98% rename from aries_cloudagent/protocols/present_proof/util/indy.py rename to aries_cloudagent/protocols/present_proof/indy/xform.py index 7a0c3b6601..a81c451a5b 100644 --- a/aries_cloudagent/protocols/present_proof/util/indy.py +++ b/aries_cloudagent/protocols/present_proof/indy/xform.py @@ -1,6 +1,4 @@ -"""Utilities for dealing with indy conventions.""" - -from ....indy.holder import IndyHolder +"""Utilities to deal with indy.""" from .presentation_preview import PresentationPreview diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py index d4569c6c4b..88dd654e92 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py @@ -7,7 +7,7 @@ from .....didcomm_prefix import DIDCommPrefix -from ....util.presentation_preview import PRESENTATION_PREVIEW +from ....indy.presentation_preview import PRESENTATION_PREVIEW from ...message_types import ATTACH_DECO_IDS, PRESENTATION diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py index 5b21af8fa1..d2ec6eac51 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py @@ -2,11 +2,11 @@ from .....didcomm_prefix import DIDCommPrefix -from ....util.presentation_preview import ( - PresAttrSpec, - PresPredSpec, - PRESENTATION_PREVIEW, - PresentationPreview, +from ....indy.presentation_preview import ( + IndyPresAttrSpec, + IndyPresPredSpec, + IndyPresentationPreview, + PRESENTATION_PREVIEW, ) from ...message_types import PRESENTATION_PROPOSAL @@ -16,10 +16,10 @@ S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" CD_ID = f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID}:tag1" -PRES_PREVIEW = PresentationPreview( +PRES_PREVIEW = IndyPresentationPreview( attributes=[ - PresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), - PresAttrSpec( + IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), + IndyPresAttrSpec( name="screenCapture", cred_def_id=CD_ID, mime_type="image/png", @@ -27,7 +27,7 @@ ), ], predicates=[ - PresPredSpec( + IndyPresPredSpec( name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 ) ], diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py index 1785746bfa..4234be120b 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py @@ -7,7 +7,7 @@ from .....didcomm_prefix import DIDCommPrefix -from ....util.presentation_preview import PRESENTATION_PREVIEW +from ....indy.presentation_preview import PRESENTATION_PREVIEW from ...message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST diff --git a/aries_cloudagent/protocols/present_proof/v1_0/routes.py b/aries_cloudagent/protocols/present_proof/v1_0/routes.py index 55c173df0f..6f176eaeef 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/routes.py @@ -42,10 +42,11 @@ from ...problem_report.v1_0 import internal_error -from ..util.presentation_preview import ( - PresentationPreview, - PresentationPreviewSchema, +from ..indy.presentation_preview import ( + IndyPresentationPreview, + IndyPresentationPreviewSchema, ) +from ..indy.presentation_request import IndyProofRequestSchema from .manager import PresentationManager from .message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST, SPEC_URI @@ -116,7 +117,10 @@ class V10PresentationProposalRequestSchema(AdminAPIMessageTracingSchema): comment = fields.Str( description="Human-readable comment", required=False, allow_none=True ) - presentation_proposal = fields.Nested(PresentationPreviewSchema(), required=True) + presentation_proposal = fields.Nested( + IndyPresentationPreviewSchema(), + required=True, + ) auto_present = fields.Boolean( description=( "Whether to respond automatically to presentation requests, building " @@ -132,154 +136,6 @@ class V10PresentationProposalRequestSchema(AdminAPIMessageTracingSchema): ) -class IndyProofReqPredSpecRestrictionsSchema(OpenAPISchema): - """Schema for restrictions in attr or pred specifier indy proof request.""" - - schema_id = fields.String( - description="Schema identifier", required=False, **INDY_SCHEMA_ID - ) - schema_issuer_did = fields.String( - description="Schema issuer (origin) DID", required=False, **INDY_DID - ) - schema_name = fields.String( - example="transcript", description="Schema name", required=False - ) - schema_version = fields.String( - description="Schema version", required=False, **INDY_VERSION - ) - issuer_did = fields.String( - description="Credential issuer DID", required=False, **INDY_DID - ) - cred_def_id = fields.String( - description="Credential definition identifier", - required=False, - **INDY_CRED_DEF_ID, - ) - - -class IndyProofReqNonRevokedSchema(OpenAPISchema): - """Non-revocation times specification in indy proof request.""" - - to = fields.Int( - description="Timestamp of interest for non-revocation proof", - required=True, - strict=True, - **INT_EPOCH, - ) - - -class IndyProofReqAttrSpecSchema(OpenAPISchema): - """Schema for attribute specification in indy proof request.""" - - name = fields.String( - example="favouriteDrink", description="Attribute name", required=False - ) - names = fields.List( - fields.String(example="age"), - description="Attribute name group", - required=False, - ) - restrictions = fields.List( - fields.Dict( - keys=fields.Str( - validate=validate.Regexp( - "^schema_id|" - "schema_issuer_did|" - "schema_name|" - "schema_version|" - "issuer_did|" - "cred_def_id|" - "attr::.+::value$" # indy does not support attr::...::marker here - ), - example="cred_def_id", # marshmallow/apispec v3.0 ignores - ), - values=fields.Str(example=INDY_CRED_DEF_ID["example"]), - ), - description=( - "If present, credential must satisfy one of given restrictions: specify " - "schema_id, schema_issuer_did, schema_name, schema_version, " - "issuer_did, cred_def_id, and/or attr::::value " - "where represents a credential attribute name" - ), - required=False, - ) - non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) - - @validates_schema - def validate_fields(self, data, **kwargs): - """ - Validate schema fields. - - Data must have exactly one of name or names; if names then restrictions are - mandatory. - - Args: - data: The data to validate - - Raises: - ValidationError: if data has both or neither of name and names - - """ - if ("name" in data) == ("names" in data): - raise ValidationError( - "Attribute specification must have either name or names but not both" - ) - restrictions = data.get("restrictions") - if ("names" in data) and (not restrictions or all(not r for r in restrictions)): - raise ValidationError( - "Attribute specification on 'names' must have non-empty restrictions" - ) - - -class IndyProofReqPredSpecSchema(OpenAPISchema): - """Schema for predicate specification in indy proof request.""" - - name = fields.String(example="index", description="Attribute name", required=True) - p_type = fields.String( - description="Predicate type ('<', '<=', '>=', or '>')", - required=True, - **INDY_PREDICATE, - ) - p_value = fields.Int(description="Threshold value", required=True, strict=True) - restrictions = fields.List( - fields.Nested(IndyProofReqPredSpecRestrictionsSchema()), - description="If present, credential must satisfy one of given restrictions", - required=False, - ) - non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) - - -class IndyProofRequestSchema(OpenAPISchema): - """Schema for indy proof request.""" - - nonce = fields.String(description="Nonce", required=False, example="1234567890") - name = fields.String( - description="Proof request name", - required=False, - example="Proof request", - default="Proof request", - ) - version = fields.String( - description="Proof request version", - required=False, - default="1.0", - **INDY_VERSION, - ) - requested_attributes = fields.Dict( - description="Requested attribute specifications of proof request", - required=True, - keys=fields.Str(example="0_attr_uuid"), # marshmallow/apispec v3.0 ignores - values=fields.Nested(IndyProofReqAttrSpecSchema()), - ) - requested_predicates = fields.Dict( - description="Requested predicate specifications of proof request", - required=True, - keys=fields.Str(example="0_age_GE_uuid"), # marshmallow/apispec v3.0 ignores - values=fields.Nested(IndyProofReqPredSpecSchema()), - ) - non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) - - class IndyCredInfoSchema(OpenAPISchema): """Schema for indy cred-info.""" @@ -637,7 +493,7 @@ async def presentation_exchange_send_proposal(request: web.BaseRequest): connection_record = await ConnRecord.retrieve_by_id(session, connection_id) presentation_proposal_message = PresentationProposal( comment=comment, - presentation_proposal=PresentationPreview.deserialize( + presentation_proposal=IndyPresentationPreview.deserialize( presentation_preview ), ) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py index 768590cdbb..72f48332e4 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py @@ -18,8 +18,12 @@ from ....didcomm_prefix import DIDCommPrefix -from ...util.indy import indy_proof_req_preview2indy_requested_creds -from ...util.presentation_preview import PresAttrSpec, PresentationPreview, PresPredSpec +from ...indy.xform import indy_proof_req_preview2indy_requested_creds +from ...indy.presentation_preview import ( + IndyPresAttrSpec, + IndyPresentationPreview, + IndyPresPredSpec, +) from .. import manager as test_module from ..manager import PresentationManager, PresentationManagerError @@ -35,10 +39,10 @@ S_ID = f"{ISSUER_DID}:2:vidya:1.0" CD_ID = f"{ISSUER_DID}:3:CL:{S_ID}:tag1" RR_ID = f"{ISSUER_DID}:4:{CD_ID}:CL_ACCUM:0" -PRES_PREVIEW = PresentationPreview( +PRES_PREVIEW = IndyPresentationPreview( attributes=[ - PresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), - PresAttrSpec( + IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), + IndyPresAttrSpec( name="screenCapture", cred_def_id=CD_ID, mime_type="image/png", @@ -46,17 +50,17 @@ ), ], predicates=[ - PresPredSpec( + IndyPresPredSpec( name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 ) ], ) -PRES_PREVIEW_NAMES = PresentationPreview( +PRES_PREVIEW_NAMES = IndyPresentationPreview( attributes=[ - PresAttrSpec( + IndyPresAttrSpec( name="player", cred_def_id=CD_ID, value="Richie Knucklez", referent="0" ), - PresAttrSpec( + IndyPresAttrSpec( name="screenCapture", cred_def_id=CD_ID, mime_type="image/png", @@ -65,7 +69,7 @@ ), ], predicates=[ - PresPredSpec( + IndyPresPredSpec( name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 ) ], @@ -369,17 +373,17 @@ async def test_create_presentation_proof_req_non_revoc_interval_none(self): assert exchange_out.state == V10PresentationExchange.STATE_PRESENTATION_SENT async def test_create_presentation_self_asserted(self): - PRES_PREVIEW_SELFIE = PresentationPreview( + PRES_PREVIEW_SELFIE = IndyPresentationPreview( attributes=[ - PresAttrSpec(name="player", value="Richie Knucklez"), - PresAttrSpec( + IndyPresAttrSpec(name="player", value="Richie Knucklez"), + IndyPresAttrSpec( name="screenCapture", mime_type="image/png", value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", ), ], predicates=[ - PresPredSpec( + IndyPresPredSpec( name="highScore", cred_def_id=None, predicate=">=", diff --git a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py index a6706b9a88..64dacde9d1 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py @@ -17,15 +17,9 @@ MESSAGE_TYPES = DIDCommPrefix.qualify_all( { - PRES_20_PROPOSAL: ( - f"{PROTOCOL_PACKAGE}.messages.pres_proposal.PresProposal" - ), - PRES_20_REQUEST: ( - f"{PROTOCOL_PACKAGE}.messages.pres_request.PresRequest" - ), + PRES_20_PROPOSAL: (f"{PROTOCOL_PACKAGE}.messages.pres_proposal.PresProposal"), + PRES_20_REQUEST: (f"{PROTOCOL_PACKAGE}.messages.pres_request.PresRequest"), PRES_20: f"{PROTOCOL_PACKAGE}.messages.pres.Pres", - PRES_20_ACK: ( - f"{PROTOCOL_PACKAGE}.messages.pres_ack.PresAck" - ), + PRES_20_ACK: (f"{PROTOCOL_PACKAGE}.messages.pres_ack.PresAck"), } ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py new file mode 100644 index 0000000000..2dec15660e --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py @@ -0,0 +1,109 @@ +"""A (proof) presentation content message.""" + +from typing import Sequence + +from marshmallow import EXCLUDE, fields, validates_schema, ValidationError + +from .....messaging.agent_message import AgentMessage, AgentMessageSchema +from .....messaging.decorators.attach_decorator import ( + AttachDecorator, + AttachDecoratorSchema, +) + +from ..message_types import PRES_20, PROTOCOL_PACKAGE + +from .pres_format import V20PresFormat, V20PresFormatSchema + +HANDLER_CLASS = f"{PROTOCOL_PACKAGE}.handlers.pres_handler.V20PresHandler" + + +class V20Pres(AgentMessage): + """Class representing a presentation.""" + + class Meta: + """Presentation metadata.""" + + handler_class = HANDLER_CLASS + schema_class = "V20PresSchema" + message_type = PRES_20 + + def __init__( + self, + _id: str = None, + *, + comment: str = None, + formats: Sequence[V20PresFormat], + presentations_attach: Sequence[AttachDecorator] = None, + **kwargs, + ): + """ + Initialize presentation object. + + Args: + presentations_attach: attachments + comment: optional comment + + """ + super().__init__(_id=_id, **kwargs) + self.comment = comment + self.formats = formats + self.presentations_attach = ( + list(presentations_attach) if presentations_attach else [] + ) + + def attachment(self, fmt: V20PresFormat.Format = None) -> dict: + """ + Return attached presentation item. + + Args: + fmt: format of attachment in list to decode and return + + """ + return (fmt or V20PresFormat.Format.INDY).get_attachment_data( + self.formats, + self.presentations_attach, + ) + + +class V20PresSchema(AgentMessageSchema): + """Presentation schema.""" + + class Meta: + """Presentation schema metadata.""" + + model_class = V20Pres + unknown = EXCLUDE + + comment = fields.Str( + description="Human-readable comment", required=False, allow_none=True + ) + formats = fields.Nested( + V20PresFormatSchema, + many=True, + required=True, + descrption="Acceptable attachment formats", + ) + presentations_attach = fields.Nested( + AttachDecoratorSchema, required=True, many=True, data_key="presentations~attach" + ) + + @validates_schema + def validate_fields(self, data, **kwargs): + """Validate attachments against formats.""" + + def get_attach_by_id(attach_id): + """Return attachment with input attachment identifier.""" + for a in presentations_attach: + if a.ident == attach_id: + return a + raise ValidationError( + f"No attachment matches attach_id {attach_id} in format" + ) + + formats = data.get("formats") or [] + presentations_attach = data.get("presentations_attach") or [] + if len(formats) != len(presentations_attach): + raise ValidationError("Formats vs. attachments length mismatch") + + for fmt in formats: + get_attach_by_id(fmt.attach_id) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py index 512dcb57f1..af22b75216 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_ack.py @@ -6,9 +6,7 @@ from ..message_types import PRES_20_ACK, PROTOCOL_PACKAGE -HANDLER_CLASS = ( - f"{PROTOCOL_PACKAGE}.handlers.pres_ack_handler.V20PresAckHandler" -) +HANDLER_CLASS = f"{PROTOCOL_PACKAGE}.handlers.pres_ack_handler.V20PresAckHandler" class V20PresAck(Ack): diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py index ee5e2c85b1..c77ad93c8e 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -6,13 +6,14 @@ from typing import Mapping, Sequence, Union from uuid import uuid4 -from marshmallow import EXCLUDE, fields, validate, ValidationError +from marshmallow import EXCLUDE, fields, validate from .....messaging.decorators.attach_decorator import AttachDecorator -from .....messaging.models.base import BaseModelError, BaseModel, BaseModelSchema +from .....messaging.models.base import BaseModel, BaseModelSchema from .....messaging.valid import UUIDFour -from ...util.presentation_preview import PresentationPreview +from ...indy.presentation_preview import IndyPresentationPreviewSchema +from ...indy.proof_request import IndyProofRequestSchema FormatSpec = namedtuple("FormatSpec", "aries aka") # Aries RFC value, further monikers @@ -64,13 +65,13 @@ def aka(self) -> str: def validate_proposal_attach(self, data: Mapping): """Raise ValidationError for wrong proposal~attach content.""" - if self is V20PredFormat.Format.INDY: - try: - PresentationPreview.deserialize(data) - except BaseModelError as x: - raise ValidationError( - "Invalid presentation proposal attachment: {x.message}" - ) + if self is V20PresFormat.Format.INDY: + IndyPresentationPreviewSchema().load(data) + + def validate_request_attach(self, data: Mapping): + """Raise ValidationError for wrong request_presentations~attach content.""" + if self is V20PresFormat.Format.INDY: + IndyProofRequestSchema().load(data) def get_attachment_data( self, diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py index 43bc93d49c..b38c0a1019 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -64,6 +64,7 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: self.proposal_attach, ) + class V20PresProposalSchema(AgentMessageSchema): """Presentation proposal schema.""" @@ -73,9 +74,7 @@ class Meta: model_class = V20PresProposal unknown = EXCLUDE - comment = fields.Str( - description="Human-readable comment", required=False - ) + comment = fields.Str(description="Human-readable comment", required=False) formats = fields.Nested( V20PresFormatSchema, many=True, @@ -84,8 +83,9 @@ class Meta: ) proposal_attach = fields.Nested( AttachDecoratorSchema, - data_key="proposal~attach", + many=True, required=True, + data_key="proposal~attach", description="Attachment per acceptable format on corresponding identifier", ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py index f5c942ca81..7b7110531f 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py @@ -2,7 +2,7 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields +from marshmallow import EXCLUDE, fields, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema from .....messaging.decorators.attach_decorator import ( @@ -55,7 +55,6 @@ def __init__( list(request_presentations_attach) if request_presentations_attach else [] ) - def attachment(self, fmt: V20PresFormat.Format = None) -> dict: """ Return attached presentation request item. @@ -79,9 +78,7 @@ class Meta: model_class = V20PresRequest unknown = EXCLUDE - comment = fields.Str( - required=False, description="Human-readable comment" - ) + comment = fields.Str(required=False, description="Human-readable comment") will_confirm = fields.Bool( required=False, description="Whether verifier will send confirmation ack" ) @@ -93,7 +90,32 @@ class Meta: ) request_presentations_attach = fields.Nested( AttachDecoratorSchema, - data_key="request_presentations~attach", + many=True, required=True, description="Attachment per acceptable format on corresponding identifier", + data_key="request_presentations~attach", ) + + @validates_schema + def validate_fields(self, data, **kwargs): + """Validate attachment per format.""" + + def get_attach_by_id(attach_id): + """Return attachment with input attachment identifier.""" + for a in request_presentations_attach: + if a.ident == attach_id: + return a + raise ValidationError( + f"No attachment matches attach_id {attach_id} in format" + ) + + formats = data.get("formats") or [] + request_presentations_attach = data.get("request_presentations_attach") or [] + if len(formats) != len(request_presentations_attach): + raise ValidationError("Formats vs. attachments length mismatch") + + for fmt in formats: + request_atch = get_attach_by_id(fmt.attach_id) + V20PresFormat.Format.get(fmt.format).validate_request_attach( + request_atch.indy_dict + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py new file mode 100644 index 0000000000..927c8da7db --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py @@ -0,0 +1,1811 @@ +import json +import pytest + +from datetime import datetime, timezone +from unittest import TestCase + +from ......messaging.decorators.attach_decorator import AttachDecorator +from ......messaging.models.base import BaseModelError +from ......messaging.util import str_to_datetime, str_to_epoch + +from .....didcomm_prefix import DIDCommPrefix + +from ....indy.presentation_preview import PRESENTATION_PREVIEW + +from ...message_types import PRES_20 + +from ..pres_format import V20PresFormat +from ..pres import V20Pres, V20PresSchema + + +INDY_PROOF = json.loads( + """{ + "proof": { + "proofs": [ + { + "primary_proof": { + "eq_proof": { + "revealed_attrs": { + "player": "51643998292319337989293919354395093705917445045137690661130646028663839100479", + "screencapture": "44349549498354774830429200435932754610833874667251545521048906777181334567815" + }, + "a_prime": "99225796363129499107604366233301127916801972855861917994091548556785477066502130364812678473656139160841991495705941663142249404264191136660967090000331013804872112053828446231809361437830836319053659748356431221803865514426935793809384997872056337751830616632363564742453553492463002290910985263848243042219992778220569301291770422529015543837803240796109915443060533925706334481433988647943330126921627882396088865869804752372160284361135101444121353171684921889674279086653358367368851378746682682017641177839566946615542088910003479771742848013401738739436319413416417782857315505655723403098381845469564775640588", + "e": "28484172708495089688591061270972815967199639781170588390863001534745829714460906432474939589201651469315129053056279820725958192110265136", + "v": "310372334186966867767394517648718214703060542831249429833856393387373123821840122943078768258679350688701210557571314095023780969910990133962277141702540794078947706642651608840502392669887782435197020314627659897216201821476693212776945691916847975724720629133302982522740709659244048850715861867163370042548490158397753134853555833520807793752332629616695158900467048806794540963892785661237500652426649694476839734543710070772542960644069106447786837388953205349573770161012926822761642443603379863014577283739370081232865330663720633954578384601051328768426422459925307605555673543912329275856396630694738618400128412881389666175048976575778590587039239852074579445246476657508798666439893978860122625600280248580653651989659501745788120866210838204610848826992305622269021702688221635993649651671518759866100294588385482901147670474709698187899410921387549396343476268788611619095756118794378610337782521199137176224", + "m": { + "master_secret": "8862971523696585539875886113995946020345090415446970983664333029999473510798222518918685777004680817221644138616821331322893963179678008732473561080506239631376575074759262558623", + "date": "3701779401056653400708681878780576462168055130242160156441633682389568986593680911678649493653787250169881692457012639607423195648009201693522087171287177627155679953691027082306", + "highscore": "15076065627409123507707791591890677721352422176962229116158012124884023896353283613850809563416017162039356935197216493911366484372240599638993754251972383037120760793174059437326" + }, + "m2": "936898843995229611075174877423066852536402039331414286329629096155063110397949209326899164087270236968111471019540493930568502892781443118611948331343540849982215419978654911341" + }, + "ge_proofs": [ + { + "u": { + "0": "9910469266382558421810537687107445527637953525140204243652090909154732881567346670639902692019649848585497930780041894066589111086262231121289584890680947709857922351898933228959", + "3": "13248890365144372967021124637790988823123419165600968402954657790395188046865908780216014168108873473963822724485182321396055154711186623889234974568160016086782335901983921278203", + "2": "12729039529929764954731327277162243472469670773258016331674525566138793186295239771259296208473089652983817249211287815365374343774154094615763169572305994728783319085378462750119", + "1": "7521808223922555179229230989469494924108464850902024304215849946306721494292541804707880060117792628557556919883251581183099791703469635100219991762282695219119375485542725378777" + }, + "r": { + "3": "2474586272027077975486776866285873096434331606893837372003598899080539007560599606386516216782289932402894639261205313757395792446618729476125758006073556965534129613180311177356435264610207048503766208536525437467431668179066975773784256747360733829457728689042564760785075167221871190381905962993342585054474809475874638461649882224522900216073005325070483781773167488104736004488166472769233964211119250710987817940295641154170092028642853085492684423831557787832223441677166939601580910358630679766277360055054583280321123214001754046780045473183143311899432032961118915743585200408079711683568075159956637355186537460890150634531127711285758617739650166494804700747238587328374163718880396805711619195410428497141", + "2": "2630464840206472451352435662547628615461823248193121896366292326754757111056015434024860402045528167154717793472610145065612236007297496233371229987771148480914236050468139151516543123252130359806069866913832582652430060368351667452390252792745981559902564451307173881741056494603759634524628446420629554945618261322035719400890137143004894938649567505283955045583301734843724484105958980144825603458470170246633173176192352102370358808823038609216670566297573459331481693366189829604088382174720921421068848195803685053584587847959340545747151323994860573252761484349482452752365951814578536977631851802458952874933908594142054875532155473403049377997857193944575096457437636198069049894085647451273888200116980726092", + "1": "2852147521010832076474693080123829749829373205563299890275783906381127244731842078098806253403603591226341534169437752738669698923225573040124923814326088208465858997309773274462266090025447286378141544917213418789777276232863321772419735930833747576309139155217894968446024099207333956546610641531588126922714769703447074214896402884035961312686767119156707888839495093047502240940442068243444839642678428392561564279122033304060367830470731800699885137708112213347900071682836322404659581146632750296228233441035302852186755012460856485782729749727931571925009194110383907166489891246153746477910501305713189452876479941940283249570571466801547498554092112942172290619708436101630604721002777991653223187127539407188", + "DELTA": "400740231805932179607546658608482360416676808879808936308239007450069335712770990135423875914299915061808733825416765503161922435087393607455279098108543704733230814698288332881292132566532892722244536550609474863487095816391676106247864333163126795882262678039103218492008333619274792818770308974444039810096709828122153085809072205039719201560334210985909087337968918296450456759914221258287823859138473869581326860149282690703526479416994879663317413415525469689392534867388970645182739614666457086788145724809368914878257774143699515974528212285813531498884015621850779340589427600835454594927635608618313963836648119837777098673007860656489994343544396208432731266075365830717274498351940211946906749568641992530", + "0": "1206673881851533752176657850353675358524597024445357836801291763123272463247544653871603547107824681844497100741157733091042299879547696954660696997520368168483474593036101472335505287047339386308031509611499543209773577503155192535635651933608157610580443175876534879594575874473220014224237470499919793664212944782077926675612730961243351448995290239215801924035454011696132815884654568365382507261689165029962957712345451405751438882798844088168256631131921905245510548989991506332080163507201398283921938862585730222296508424960186566696340473016767188656883762864118588802209468135703456208025238541839477324582906436589408122727413989766360283059475263178640070468528674228956264205722590748705114610224502937924" + }, + "mj": "15076065627409123507707791591890677721352422176962229116158012124884023896353283613850809563416017162039356935197216493911366484372240599638993754251972383037120760793174059437326", + "alpha": "20251550018805200717806858447687954659786798446794929315180340450717009476769405863150379133594211911561358797900043949141708879953965949034296837455168571993614131838308136400934080334484858045221098438795729643169952299593947544536931262318894249728605957882845005603393308631544441292352568325855333088710935761954865297018529190379824999153478968957974616452369432737206876894394433169704416574734350248494633324787866283669843201013454433040804437117653085130836624250598443032846839559239219803003053865279821640383428381442135797658167010830469471880710203270574788431679668220274396595963367127851323648855427656787139315767612273110920619973147968805075620184678295428649237076408491062282135768652643652528789723106929481799840238867321416457406628403722479816549749574895345371486180196838697381621782729034821539642473730374275", + "t": { + "1": "12625197327271658918836077104165526795551240746110291943686378253405709448817799744491714171274845559259436160572533367386665079411321345166308961745117961730852997405633497191717007336383275404469818669156913360917193297281721819431590624901667128875332561566036439988983652391578753211775620012967251966145029999420901103522072647380944582775843791262702644151927742979273959780439648875773579687106661837930590989533046533664173215551687012232903455587682542013722715620746003808218596250895466798585940038977660031964518043170383195848432855521396949050006496669882466103602834555814104353098012178481563132990657", + "3": "82102416726449754901570630901431660447826687124743534767954749884467633032358726226619062293813250820543583618667653110864397826099702636976514863698490371598871942970264169528954417033219855319798151022602756245903134559243361308006137131575819330897670063637536795053765101329851925607560890238602738686737347630399680932950512292412006361269539738453753560364596561872651528860308101942007770489206306048924418921104517753483478955863296623417733412161191192531054326372049247205543273207371278781809399097610512792780914259992762072456575639120070897889219135350947197581287043954055372025101673838669553746551523", + "0": "100578099981822727242488292109669009229478055276500695778799086886344998432604032811665840061704724353178176792298171825200217745276011656576161627798148614876492383276153655146449848780838571509873143828996025628954667317519574656744701630828190045526936155193536814016169445565475181479441229047491855276823646742587245970832496856994388840793376871874193330364608394771574962996229647270622689890201908589893313568444474914909794303851820492781326574727803226373005399197371492982012783800353741451399606551384719595965296619783050926116585174881782168129321205830465290478768408675156580724359333089093105010344487", + "2": "47291536708088381287407033267847414228876334422991232636387475485756328314399598367105968385520172836890544717976118198568671113811836108861048793780118048683411340116566023370245246884524520199561342298868861751758445312599348599287067000725278934840752177807977101054892905295530294108292736307777321970970868898458355273485795649568677223443447768573057466329236959267653001983213430774265365847091875699626385937604178216275273379502023024485339694410370916685404579472512288185963724377525685276628144678139522579811749896221643038522340842472046618109166452353106698715375908659582424315255951960930185079622552", + "DELTA": "55673614276503115042406892194681370272903807098038274960776275804979087176140123726613332530447421097732347173352956738522605590407126570163366084735258393133886870700490345929950624260625461471012084011187108973815830590105522983606251371051538463584013547099942110852482167674597067842508689609606420417081221833855564428834462819662758502495039815615824926366319292041564418283778981490957086445486745581161189382261760754225714728934548296947403634289640526526314947616964122321833465956469712078741533550908164428460947933509296796422321858634999992086190358241952920458802129165732538146634862846975496258789679" + }, + "predicate": { + "attr_name": "highscore", + "p_type": "GE", + "value": 1000000 + } + } + ] + }, + "non_revoc_proof": null + } + ], + "aggregated_proof": { + "c_hash": "81147637626301581116624461636159287563986704950981430016774756525127013830996", + "c_list": [ + [ + 3, + 18, + 5, + 11, + 249, + 192, + 147, + 232, + 208, + 2, + 120, + 15, + 246, + 67, + 152, + 178, + 13, + 223, + 45, + 197, + 49, + 251, + 124, + 129, + 88, + 30, + 22, + 215, + 93, + 198, + 188, + 111, + 134, + 78, + 237, + 244, + 150, + 57, + 134, + 207, + 48, + 252, + 238, + 215, + 44, + 69, + 28, + 38, + 231, + 95, + 66, + 222, + 118, + 30, + 137, + 6, + 78, + 103, + 185, + 218, + 139, + 176, + 149, + 97, + 40, + 224, + 246, + 241, + 87, + 80, + 58, + 169, + 185, + 39, + 121, + 175, + 175, + 181, + 73, + 172, + 152, + 149, + 252, + 2, + 237, + 255, + 147, + 215, + 212, + 0, + 134, + 24, + 198, + 1, + 241, + 191, + 206, + 227, + 200, + 228, + 32, + 22, + 90, + 101, + 237, + 161, + 32, + 157, + 211, + 231, + 28, + 106, + 42, + 227, + 234, + 207, + 116, + 119, + 121, + 173, + 188, + 167, + 195, + 218, + 223, + 194, + 123, + 102, + 140, + 36, + 121, + 231, + 254, + 240, + 155, + 55, + 244, + 236, + 106, + 84, + 62, + 169, + 69, + 56, + 191, + 61, + 29, + 29, + 117, + 196, + 40, + 26, + 210, + 204, + 194, + 164, + 5, + 25, + 138, + 235, + 164, + 176, + 182, + 32, + 100, + 24, + 52, + 71, + 227, + 199, + 45, + 162, + 88, + 66, + 245, + 222, + 51, + 250, + 174, + 222, + 34, + 93, + 63, + 181, + 49, + 45, + 226, + 120, + 183, + 81, + 127, + 222, + 168, + 100, + 99, + 8, + 8, + 248, + 24, + 142, + 118, + 99, + 42, + 157, + 170, + 117, + 103, + 183, + 22, + 253, + 189, + 186, + 234, + 88, + 129, + 202, + 193, + 32, + 237, + 49, + 251, + 49, + 131, + 183, + 2, + 22, + 44, + 207, + 13, + 83, + 98, + 38, + 14, + 160, + 14, + 13, + 146, + 108, + 239, + 43, + 47, + 238, + 251, + 17, + 206, + 164, + 179, + 185, + 103, + 219, + 80, + 159, + 145, + 184, + 239, + 46, + 12 + ], + [ + 3, + 28, + 187, + 101, + 204, + 218, + 140, + 64, + 119, + 109, + 189, + 77, + 133, + 186, + 157, + 230, + 147, + 59, + 219, + 42, + 64, + 16, + 163, + 132, + 197, + 115, + 236, + 3, + 117, + 211, + 98, + 142, + 33, + 166, + 85, + 1, + 88, + 93, + 245, + 55, + 253, + 248, + 59, + 240, + 70, + 169, + 206, + 15, + 157, + 202, + 59, + 254, + 204, + 251, + 3, + 126, + 139, + 138, + 251, + 103, + 229, + 185, + 66, + 105, + 188, + 36, + 47, + 233, + 32, + 148, + 14, + 116, + 14, + 40, + 62, + 209, + 131, + 62, + 108, + 124, + 251, + 157, + 114, + 208, + 94, + 195, + 239, + 168, + 196, + 162, + 19, + 23, + 21, + 215, + 235, + 26, + 12, + 211, + 250, + 184, + 14, + 57, + 116, + 53, + 94, + 179, + 92, + 6, + 45, + 72, + 140, + 173, + 133, + 162, + 150, + 17, + 235, + 31, + 82, + 88, + 14, + 89, + 143, + 166, + 97, + 157, + 250, + 191, + 236, + 95, + 115, + 137, + 102, + 29, + 61, + 179, + 40, + 219, + 182, + 124, + 162, + 134, + 146, + 113, + 137, + 234, + 30, + 130, + 201, + 215, + 22, + 28, + 40, + 108, + 174, + 166, + 191, + 239, + 251, + 166, + 163, + 248, + 245, + 140, + 249, + 199, + 168, + 137, + 50, + 230, + 83, + 204, + 238, + 235, + 156, + 202, + 77, + 1, + 12, + 112, + 242, + 56, + 189, + 100, + 37, + 43, + 139, + 230, + 60, + 235, + 94, + 110, + 13, + 51, + 230, + 136, + 33, + 208, + 191, + 83, + 149, + 167, + 17, + 255, + 252, + 115, + 11, + 177, + 12, + 98, + 208, + 13, + 82, + 83, + 78, + 81, + 44, + 77, + 166, + 235, + 230, + 94, + 52, + 76, + 191, + 176, + 18, + 64, + 223, + 96, + 145, + 51, + 38, + 236, + 143, + 134, + 22, + 244, + 116, + 214, + 26, + 66, + 199, + 249, + 64, + 11, + 164, + 153, + 174, + 107, + 201, + 247, + 134, + 223, + 136, + 2, + 39 + ], + [ + 100, + 2, + 197, + 149, + 94, + 78, + 16, + 15, + 216, + 212, + 33, + 205, + 178, + 90, + 159, + 110, + 12, + 9, + 195, + 172, + 98, + 84, + 106, + 166, + 143, + 8, + 199, + 177, + 41, + 127, + 219, + 144, + 203, + 178, + 101, + 82, + 112, + 39, + 1, + 201, + 198, + 130, + 88, + 22, + 198, + 20, + 169, + 14, + 201, + 230, + 67, + 228, + 169, + 137, + 134, + 157, + 105, + 111, + 4, + 85, + 56, + 183, + 107, + 8, + 1, + 230, + 16, + 54, + 137, + 81, + 99, + 165, + 2, + 191, + 84, + 188, + 68, + 200, + 91, + 223, + 145, + 201, + 36, + 217, + 23, + 124, + 88, + 78, + 186, + 186, + 63, + 25, + 188, + 95, + 138, + 240, + 187, + 154, + 27, + 12, + 228, + 173, + 156, + 225, + 43, + 200, + 163, + 221, + 241, + 105, + 61, + 99, + 182, + 150, + 56, + 141, + 248, + 113, + 54, + 231, + 19, + 51, + 4, + 232, + 15, + 70, + 213, + 186, + 10, + 247, + 219, + 255, + 159, + 30, + 42, + 205, + 228, + 91, + 1, + 158, + 90, + 6, + 112, + 252, + 153, + 234, + 57, + 90, + 107, + 172, + 180, + 150, + 189, + 188, + 201, + 143, + 121, + 38, + 51, + 235, + 122, + 163, + 129, + 205, + 24, + 30, + 59, + 91, + 233, + 1, + 80, + 186, + 199, + 153, + 222, + 201, + 78, + 156, + 74, + 111, + 31, + 105, + 83, + 23, + 167, + 55, + 2, + 38, + 102, + 254, + 51, + 157, + 37, + 83, + 232, + 48, + 29, + 108, + 30, + 13, + 152, + 151, + 27, + 218, + 2, + 59, + 4, + 74, + 22, + 127, + 186, + 54, + 120, + 127, + 203, + 250, + 161, + 6, + 9, + 166, + 122, + 112, + 141, + 64, + 60, + 192, + 95, + 47, + 191, + 8, + 94, + 231, + 5, + 11, + 61, + 239, + 136, + 85, + 56, + 42, + 11, + 224, + 60, + 229, + 139, + 244, + 25, + 26, + 159, + 166, + 79, + 67, + 12, + 111, + 148, + 193 + ], + [ + 1, + 118, + 159, + 2, + 129, + 184, + 137, + 5, + 51, + 164, + 24, + 85, + 155, + 119, + 100, + 109, + 91, + 14, + 209, + 217, + 55, + 243, + 140, + 157, + 24, + 70, + 85, + 43, + 5, + 8, + 112, + 215, + 228, + 90, + 166, + 205, + 46, + 79, + 107, + 162, + 136, + 139, + 7, + 34, + 80, + 253, + 216, + 178, + 107, + 67, + 44, + 184, + 135, + 90, + 140, + 117, + 10, + 237, + 33, + 146, + 73, + 88, + 123, + 61, + 203, + 227, + 138, + 96, + 130, + 148, + 4, + 70, + 34, + 234, + 229, + 13, + 25, + 202, + 122, + 58, + 244, + 228, + 234, + 223, + 237, + 124, + 22, + 222, + 229, + 79, + 223, + 138, + 52, + 50, + 28, + 168, + 4, + 214, + 26, + 111, + 217, + 22, + 205, + 149, + 100, + 36, + 40, + 42, + 248, + 58, + 10, + 35, + 103, + 175, + 77, + 175, + 198, + 195, + 122, + 176, + 250, + 57, + 64, + 233, + 128, + 200, + 162, + 124, + 129, + 200, + 54, + 99, + 99, + 237, + 246, + 107, + 97, + 196, + 62, + 167, + 109, + 187, + 143, + 106, + 43, + 133, + 219, + 70, + 181, + 42, + 107, + 13, + 12, + 146, + 149, + 22, + 234, + 39, + 69, + 126, + 128, + 174, + 121, + 208, + 84, + 98, + 130, + 153, + 17, + 20, + 239, + 13, + 190, + 143, + 247, + 160, + 214, + 157, + 53, + 196, + 181, + 181, + 187, + 175, + 76, + 97, + 142, + 193, + 183, + 80, + 88, + 109, + 73, + 178, + 79, + 222, + 47, + 193, + 232, + 233, + 110, + 215, + 229, + 80, + 49, + 145, + 59, + 202, + 136, + 50, + 49, + 12, + 253, + 21, + 122, + 80, + 183, + 142, + 34, + 141, + 237, + 142, + 23, + 99, + 69, + 231, + 105, + 76, + 248, + 237, + 130, + 200, + 215, + 160, + 59, + 25, + 198, + 105, + 130, + 20, + 96, + 200, + 183, + 159, + 232, + 177, + 244, + 84, + 169, + 245, + 209, + 111, + 53, + 240, + 123, + 11, + 152 + ], + [ + 2, + 138, + 96, + 92, + 255, + 34, + 116, + 173, + 20, + 69, + 199, + 3, + 5, + 92, + 201, + 32, + 201, + 31, + 179, + 150, + 90, + 107, + 31, + 3, + 191, + 223, + 78, + 115, + 65, + 64, + 16, + 87, + 247, + 247, + 21, + 69, + 196, + 57, + 136, + 39, + 234, + 158, + 1, + 163, + 252, + 36, + 57, + 107, + 168, + 117, + 225, + 98, + 29, + 146, + 235, + 106, + 133, + 38, + 101, + 9, + 184, + 149, + 75, + 179, + 75, + 156, + 5, + 109, + 37, + 180, + 150, + 97, + 61, + 70, + 97, + 32, + 135, + 82, + 71, + 4, + 200, + 150, + 253, + 125, + 232, + 119, + 231, + 74, + 221, + 185, + 139, + 56, + 214, + 209, + 46, + 138, + 92, + 102, + 93, + 249, + 240, + 97, + 245, + 177, + 115, + 108, + 189, + 68, + 93, + 85, + 108, + 216, + 40, + 161, + 55, + 32, + 13, + 34, + 12, + 198, + 184, + 69, + 10, + 191, + 38, + 79, + 194, + 167, + 19, + 135, + 195, + 62, + 245, + 248, + 122, + 144, + 132, + 233, + 238, + 78, + 242, + 137, + 129, + 117, + 210, + 244, + 53, + 87, + 73, + 246, + 30, + 223, + 83, + 0, + 84, + 83, + 36, + 211, + 231, + 24, + 60, + 58, + 114, + 223, + 218, + 47, + 32, + 47, + 34, + 227, + 224, + 122, + 50, + 215, + 242, + 198, + 104, + 205, + 192, + 11, + 142, + 139, + 17, + 101, + 236, + 88, + 9, + 119, + 137, + 218, + 215, + 73, + 235, + 183, + 59, + 223, + 42, + 203, + 218, + 76, + 184, + 27, + 70, + 225, + 6, + 151, + 2, + 183, + 106, + 124, + 14, + 219, + 58, + 71, + 100, + 2, + 135, + 124, + 43, + 178, + 12, + 140, + 45, + 136, + 135, + 69, + 195, + 219, + 63, + 249, + 58, + 140, + 198, + 123, + 143, + 203, + 132, + 105, + 55, + 36, + 14, + 107, + 211, + 251, + 173, + 102, + 241, + 193, + 165, + 3, + 168, + 108, + 93, + 127, + 3, + 162, + 227 + ], + [ + 1, + 185, + 5, + 29, + 44, + 82, + 241, + 206, + 149, + 5, + 122, + 252, + 235, + 120, + 16, + 15, + 71, + 16, + 151, + 103, + 254, + 245, + 217, + 73, + 207, + 230, + 48, + 243, + 78, + 241, + 168, + 104, + 15, + 36, + 251, + 86, + 253, + 17, + 224, + 55, + 55, + 167, + 239, + 241, + 16, + 62, + 0, + 100, + 53, + 9, + 36, + 151, + 215, + 143, + 218, + 214, + 72, + 24, + 152, + 42, + 144, + 168, + 100, + 122, + 101, + 248, + 55, + 109, + 225, + 78, + 58, + 108, + 185, + 206, + 44, + 23, + 114, + 116, + 222, + 91, + 168, + 112, + 48, + 141, + 64, + 71, + 142, + 191, + 255, + 83, + 126, + 61, + 160, + 123, + 215, + 116, + 45, + 198, + 122, + 62, + 63, + 107, + 40, + 58, + 56, + 166, + 148, + 204, + 220, + 10, + 67, + 200, + 94, + 140, + 173, + 98, + 26, + 61, + 146, + 74, + 106, + 73, + 162, + 150, + 210, + 96, + 244, + 191, + 80, + 109, + 153, + 157, + 59, + 31, + 151, + 218, + 156, + 244, + 212, + 208, + 160, + 112, + 220, + 134, + 64, + 28, + 164, + 111, + 219, + 198, + 234, + 130, + 54, + 20, + 217, + 56, + 115, + 0, + 28, + 44, + 18, + 3, + 8, + 70, + 248, + 157, + 67, + 198, + 216, + 69, + 232, + 236, + 111, + 145, + 191, + 214, + 186, + 208, + 126, + 133, + 151, + 166, + 251, + 30, + 26, + 163, + 255, + 234, + 241, + 251, + 253, + 132, + 247, + 204, + 95, + 124, + 142, + 76, + 250, + 115, + 91, + 240, + 169, + 203, + 162, + 57, + 41, + 42, + 150, + 242, + 72, + 227, + 223, + 76, + 149, + 87, + 153, + 77, + 193, + 63, + 159, + 32, + 190, + 32, + 126, + 53, + 26, + 99, + 95, + 59, + 205, + 22, + 161, + 9, + 195, + 16, + 48, + 79, + 53, + 235, + 46, + 71, + 0, + 8, + 57, + 55, + 6, + 87, + 1, + 198, + 107, + 255, + 135, + 80, + 239, + 33, + 47 + ] + ] + } + }, + "requested_proof": { + "revealed_attrs": { + "0_player_uuid": { + "sub_proof_index": 0, + "raw": "Richie Knucklez", + "encoded": "51643998292319337989293919354395093705917445045137690661130646028663839100479" + }, + "0_screencapture_uuid": { + "sub_proof_index": 0, + "raw": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + "encoded": "44349549498354774830429200435932754610833874667251545521048906777181334567815" + } + }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": { + "0_highscore_GE_uuid": { + "sub_proof_index": 0 + } + } + }, + "identifiers": [ + { + "schema_id": "WjFgAM9qFept242HWzUSTZ:2:high_score:1.0", + "cred_def_id": "WjFgAM9qFept242HWzUSTZ:3:CL:13:tag", + "rev_reg_id": null, + "timestamp": null + } + ] +}""" +) + +PRES = V20Pres( + comment="Test", + formats=[ + V20PresFormat( + attach_id="abc", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + presentations_attach=[ + AttachDecorator.from_indy_dict( + indy_dict=INDY_PROOF, + ident="abc", + ) + ], +) + + +class TestPresentation(TestCase): + """Presentation tests.""" + + def test_init_type(self): + """Test initializer, type.""" + assert PRES.presentations_attach[0].indy_dict == INDY_PROOF + assert len(PRES.formats) == len(PRES.presentations_attach) + assert PRES.attachment(V20PresFormat.Format.INDY) == INDY_PROOF + assert PRES._type == DIDCommPrefix.qualify_current(PRES_20) + + def test_deserialize(self): + """Test deserialization.""" + dump = json.dumps( + { + "@type": DIDCommPrefix.qualify_current(PRES_20), + "comment": "Hello World", + "formats": [ + { + "attach_id": "abc", + "format": V20PresFormat.Format.INDY.aries, + } + ], + "presentations~attach": [ + AttachDecorator.from_indy_dict( + indy_dict=INDY_PROOF, + ident="abc", + ).serialize() + ], + } + ) + + pres = V20Pres.deserialize(dump) + assert type(pres) == V20Pres + + def test_deserialize_x(self): + """Test deserialization failures.""" + dump_x = json.dumps( + { + "@type": DIDCommPrefix.qualify_current(PRES_20), + "comment": "Hello World", + "formats": [ + { + "attach_id": "abc", + "format": V20PresFormat.Format.INDY.aries, + } + ], + "presentations~attach": [], + } + ) + with pytest.raises(BaseModelError): + V20Pres.deserialize(dump_x) + + dump_x = json.dumps( + { + "@type": DIDCommPrefix.qualify_current(PRES_20), + "comment": "Hello World", + "formats": [ + { + "attach_id": "abc", + "format": V20PresFormat.Format.INDY.aries, + } + ], + "presentations~attach": [ + AttachDecorator.from_indy_dict( + indy_dict=INDY_PROOF, + ident="def", + ).serialize() + ], + } + ) + with pytest.raises(BaseModelError): + V20Pres.deserialize(dump_x) + + def test_serialize(self): + """Test serialization.""" + pres_dict = PRES.serialize() + pres_dict.pop("@id") + + serialized = { + "@type": DIDCommPrefix.qualify_current(PRES_20), + "formats": [ + { + "attach_id": "abc", + "format": V20PresFormat.Format.INDY.aries, + } + ], + "presentations~attach": [ + AttachDecorator.from_indy_dict( + indy_dict=INDY_PROOF, + ident="abc", + ).serialize() + ], + "comment": "Test", + } + assert pres_dict == serialized + + +class TestV20PresSchema(TestCase): + """Test presentation schema""" + + def test_make_model(self): + """Test making model.""" + pres_dict = PRES.serialize() + """ + Looks like: { + "@type": ".../present-proof/1.0/presentation", + "@id": "f49773e3-bd56-4868-a5f1-456d1e6d1a16", + "comment": "Test", + "formats": [ + { + "attach_id": "abc", + "format": "hlindy-zkp-v1.0" + } + ], + "presentations~attach": [ + { + "mime-type": "application/json", + "data": { + "base64": "eyJuYW..." + } + } + ] + } + """ + + model_instance = PRES.deserialize(pres_dict) + assert isinstance(model_instance, V20Pres) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py index 1836632ed8..8cb17238c4 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py @@ -4,16 +4,21 @@ from ......messaging.decorators.attach_decorator import AttachDecorator +from ....indy.presentation_preview import ( + IndyPresAttrSpec, + IndyPresentationPreview, + IndyPresPredSpec, +) + from ..pres_format import V20PresFormat -from ....util.presentation_preview import PresentationPreview S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" CD_ID = f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID}:tag1" -PRES_PREVIEW = PresentationPreview( +PRES_PREVIEW = IndyPresentationPreview( attributes=[ - PresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), - PresAttrSpec( + IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), + IndyPresAttrSpec( name="screenCapture", cred_def_id=CD_ID, mime_type="image/png", @@ -21,7 +26,7 @@ ), ], predicates=[ - PresPredSpec( + IndyPresPredSpec( name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 ) ], @@ -47,10 +52,7 @@ def test_get_completeness(self): def test_validate_proposal_attach_x(self): with self.assertRaises(ValidationError) as context: - V20PresFormat.INDY.validate_proposal_attach( - data="not even close" - ) - assert "Invalid presentation proposal attachment" in str(context.exception) + V20PresFormat.Format.INDY.validate_proposal_attach(data="not even close") def test_get_attachment_data(self): assert ( @@ -65,7 +67,7 @@ def test_get_attachment_data(self): ) ], ) - == PRES_PREVIEW + == PRES_PREVIEW.serialize() ) assert ( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py index 8af61094db..bd82c09045 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py @@ -1,3 +1,5 @@ +import pytest + from unittest import TestCase from ......messaging.decorators.attach_decorator import AttachDecorator @@ -5,11 +7,11 @@ from .....didcomm_prefix import DIDCommPrefix -from ....util.presentation_preview import ( - PresAttrSpec, - PresPredSpec, - PRESENTATION_PREVIEW, - PresentationPreview, +from ....indy.presentation_preview import ( + IndyPresAttrSpec, + IndyPresPredSpec, + IndyPresentationPreview, + PRESENTATION_PREVIEW, ) from ...message_types import PRES_20_PROPOSAL @@ -20,10 +22,10 @@ S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" CD_ID = f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID}:tag1" -PRES_PREVIEW = PresentationPreview( +PRES_PREVIEW = IndyPresentationPreview( attributes=[ - PresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), - PresAttrSpec( + IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), + IndyPresAttrSpec( name="screenCapture", cred_def_id=CD_ID, mime_type="image/png", @@ -31,7 +33,7 @@ ), ], predicates=[ - PresPredSpec( + IndyPresPredSpec( name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 ) ], @@ -80,6 +82,12 @@ def test_serde(self): assert type(pres_proposal_deser) == V20PresProposal pres_proposal_dict = pres_proposal_deser.serialize() - pres_proposal_dict.pop("@id") - assert pres_proposal_dict == pres_proposal_ser + + pres_proposal_dict["formats"][0]["attach_id"] = "def" + with pytest.raises(BaseModelError): + V20PresProposal.deserialize(pres_proposal_dict) # id mismatch + + pres_proposal_dict["formats"] = [] + with pytest.raises(BaseModelError): + V20PresProposal.deserialize(pres_proposal_dict) # length mismatch diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py new file mode 100644 index 0000000000..525bd3834e --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py @@ -0,0 +1,225 @@ +import json +import pytest + +from datetime import datetime, timezone +from unittest import TestCase + +from ......messaging.decorators.attach_decorator import AttachDecorator +from ......messaging.models.base import BaseModelError +from ......messaging.util import str_to_datetime, str_to_epoch + +from .....didcomm_prefix import DIDCommPrefix + +from ....indy.presentation_preview import PRESENTATION_PREVIEW + +from ...message_types import PRES_20_REQUEST + +from ..pres_format import V20PresFormat +from ..pres_request import V20PresRequest, V20PresRequestSchema + + +NOW_8601 = datetime.utcnow().replace(tzinfo=timezone.utc).isoformat(" ", "seconds") +NOW_EPOCH = str_to_epoch(NOW_8601) +CD_ID = "GMm4vMw8LLrLJjp81kRRLp:3:CL:12:tag" +INDY_PROOF_REQ = json.loads( + f"""{{ + "name": "proof-req", + "version": "1.0", + "nonce": "12345", + "requested_attributes": {{ + "0_player_uuid": {{ + "name": "player", + "restrictions": [ + {{ + "cred_def_id": "{CD_ID}" + }} + ], + "non_revoked": {{ + "from": {NOW_EPOCH}, + "to": {NOW_EPOCH} + }} + }}, + "0_screencapture_uuid": {{ + "name": "screenCapture", + "restrictions": [ + {{ + "cred_def_id": "{CD_ID}" + }} + ], + "non_revoked": {{ + "from": {NOW_EPOCH}, + "to": {NOW_EPOCH} + }} + }} + }}, + "requested_predicates": {{ + "0_highscore_GE_uuid": {{ + "name": "highScore", + "p_type": ">=", + "p_value": 1000000, + "restrictions": [ + {{ + "cred_def_id": "{CD_ID}" + }} + ], + "non_revoked": {{ + "from": {NOW_EPOCH}, + "to": {NOW_EPOCH} + }} + }} + }} +}}""" +) + +PRES_REQ = V20PresRequest( + comment="Test", + will_confirm=True, + formats=[ + V20PresFormat( + attach_id="abc", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.from_indy_dict( + indy_dict=INDY_PROOF_REQ, + ident="abc", + ) + ], +) + + +class TestV20PresRequest(TestCase): + """Presentation request tests.""" + + def test_init_type(self): + """Test initializer, type.""" + assert PRES_REQ.will_confirm + assert len(PRES_REQ.formats) == len(PRES_REQ.request_presentations_attach) + assert PRES_REQ.request_presentations_attach[0].indy_dict == INDY_PROOF_REQ + assert PRES_REQ.attachment(V20PresFormat.Format.INDY) == INDY_PROOF_REQ + assert PRES_REQ._type == DIDCommPrefix.qualify_current(PRES_20_REQUEST) + + def test_deserialize(self): + """Test deserialization.""" + dump = json.dumps( + { + "@type": DIDCommPrefix.qualify_current(PRES_20_REQUEST), + "comment": "Hello World", + "will_confirm": True, + "formats": [ + { + "attach_id": "abc", + "format": V20PresFormat.Format.INDY.aries, + } + ], + "request_presentations~attach": [ + AttachDecorator.from_indy_dict( + indy_dict=INDY_PROOF_REQ, + ident="abc", + ).serialize() + ], + } + ) + + pres_request = V20PresRequest.deserialize(dump) + assert type(pres_request) == V20PresRequest + + def test_deserialize_x(self): + """Test deserialization failures.""" + dump_x = json.dumps( + { + "@type": DIDCommPrefix.qualify_current(PRES_20_REQUEST), + "comment": "Hello World", + "will_confirm": True, + "formats": [ + { + "attach_id": "abc", + "format": V20PresFormat.Format.INDY.aries, + } + ], + "request_presentations~attach": [], + } + ) + with pytest.raises(BaseModelError): + V20PresRequest.deserialize(dump_x) + + dump_x = json.dumps( + { + "@type": DIDCommPrefix.qualify_current(PRES_20_REQUEST), + "comment": "Hello World", + "will_confirm": True, + "formats": [ + { + "attach_id": "abc", + "format": V20PresFormat.Format.INDY.aries, + } + ], + "request_presentations~attach": [ + AttachDecorator.from_indy_dict( + indy_dict=INDY_PROOF_REQ, + ident="def", + ).serialize() + ], + } + ) + with pytest.raises(BaseModelError): + V20PresRequest.deserialize(dump_x) + + def test_serialize(self): + """Test serialization.""" + pres_req_dict = PRES_REQ.serialize() + pres_req_dict.pop("@id") + + serialized = { + "@type": DIDCommPrefix.qualify_current(PRES_20_REQUEST), + "will_confirm": True, + "formats": [ + { + "attach_id": "abc", + "format": V20PresFormat.Format.INDY.aries, + } + ], + "request_presentations~attach": [ + AttachDecorator.from_indy_dict( + indy_dict=INDY_PROOF_REQ, + ident="abc", + ).serialize() + ], + "comment": "Test", + } + assert pres_req_dict == serialized + + +class TestV20PresRequestSchema(TestCase): + """Test presentation request schema""" + + def test_make_model(self): + """Test making model.""" + pres_req_dict = PRES_REQ.serialize() + """ + Looks like: { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/present-proof/2.0/..." + "@id": "...", + "will_confirm": true, + "request_presentations~attach": [ + { + "@id": "abc", + "mime-type": "application/json", + "data": { + "base64": "eyJu..." + } + } + ], + "formats": [ + { + "attach_id": "abc", + "format": "hlindy-zkp-v1.0" + } + ], + "comment": "Test" + } + """ + + model_instance = PRES_REQ.deserialize(pres_req_dict) + assert isinstance(model_instance, V20PresRequest) From db6978aa2326091fc77c68292b0f232efaffd066 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Wed, 17 Feb 2021 17:27:59 -0800 Subject: [PATCH 047/243] Added scenarios for issue credential w.i.p. Signed-off-by: Ian Costanzo --- demo/bdd_support/agent_backchannel_client.py | 33 ++++++ demo/features/0036-issue-credential.feature | 23 +++++ demo/features/0160-connection.feature | 11 +- demo/features/steps/0036-issue-credential.py | 101 +++++++++++++++++++ demo/features/steps/0160-connection.py | 30 ++---- demo/runners/agent_container.py | 87 ++++++++++++++-- demo/runners/support/agent.py | 13 ++- 7 files changed, 259 insertions(+), 39 deletions(-) create mode 100644 demo/features/0036-issue-credential.feature create mode 100644 demo/features/steps/0036-issue-credential.py diff --git a/demo/bdd_support/agent_backchannel_client.py b/demo/bdd_support/agent_backchannel_client.py index 3023994282..1629efb35a 100644 --- a/demo/bdd_support/agent_backchannel_client.py +++ b/demo/bdd_support/agent_backchannel_client.py @@ -98,6 +98,39 @@ def aries_container_detect_connection( ): run_coroutine(the_container.detect_connection) +def aries_container_create_schema_cred_def( + the_container: AgentContainer, + schema_name: str, + schema_attrs: list, +): + return run_coroutine_with_args( + the_container.create_schema_and_cred_def, + schema_name, + schema_attrs, + ) + +def aries_container_issue_credential( + the_container: AgentContainer, + cred_def_id: str, + cred_attrs: dict, +): + return run_coroutine_with_args( + the_container.issue_credential, + cred_def_id, + cred_attrs, + ) + +def aries_container_receive_credential( + the_container: AgentContainer, + cred_def_id: str, + cred_attrs: dict, +): + return run_coroutine_with_args( + the_container.receive_credential, + cred_def_id, + cred_attrs, + ) + ###################################################################### # probably obsolete ... diff --git a/demo/features/0036-issue-credential.feature b/demo/features/0036-issue-credential.feature new file mode 100644 index 0000000000..27f2cd304d --- /dev/null +++ b/demo/features/0036-issue-credential.feature @@ -0,0 +1,23 @@ +Feature: RFC 0036 Aries agent issue credential + + @T003-AIP10-RFC0036 @AcceptanceTest @P1 @critical @Indy @RFC0036 + Scenario Outline: Issue a credential with the Issuer beginning with an offer + Given we have "2" agents + | name | role | capabilities | + | Acme | issuer | | + | Bob | holder | | + And "Acme" and "Bob" have an existing connection + And "Acme" is ready to issue a credential + When "Acme" offers a credential + And "Bob" requests the credential + And "Acme" issues the credential + And "Bob" acknowledges the credential issue + Then "Bob" has the credential issued + + Examples: + | Acme_capabilities | Bob_capabilities | + | --public-did | | + | --public-did --did-exchange | --did-exchange | + | --public-did --mediation | --mediation | + | --public-did --multitenant | --multitenant | + | --public-did --mediation --multitenant | --mediation --multitenant | diff --git a/demo/features/0160-connection.feature b/demo/features/0160-connection.feature index c85a7342c1..e470f3de0f 100644 --- a/demo/features/0160-connection.feature +++ b/demo/features/0160-connection.feature @@ -12,8 +12,9 @@ Feature: RFC 0160 Aries agent connection functions And "Bob" has an active connection Examples: - | Acme_capabilities | Bob_capabilities | - | | | - | --mediation | --mediation | - | --multitenant | --multitenant | - | --mediation --multitenant | --mediation --multitenant | + | Acme_capabilities | Bob_capabilities | + | --public-did | | + | --public-did --did-exchange | --did-exchange | + | --public-did --mediation | --mediation | + | --public-did --multitenant | --multitenant | + | --public-did --mediation --multitenant | --mediation --multitenant | diff --git a/demo/features/steps/0036-issue-credential.py b/demo/features/steps/0036-issue-credential.py new file mode 100644 index 0000000000..ed75680143 --- /dev/null +++ b/demo/features/steps/0036-issue-credential.py @@ -0,0 +1,101 @@ + +from behave import given, when, then +import json +from time import sleep +import time + +from bdd_support.agent_backchannel_client import ( + create_agent_container_with_args, + aries_container_initialize, + aries_container_generate_invitation, + aries_container_receive_invitation, + aries_container_detect_connection, + aries_container_create_schema_cred_def, + aries_container_issue_credential, + aries_container_receive_credential, + agent_backchannel_GET, + agent_backchannel_POST, + expected_agent_state +) +from runners.agent_container import AgentContainer + + +# This step is defined in another feature file +# Given "Acme" and "Bob" have an existing connection + + +SCHEMA_TEMPLATE = { + "schema_name": "test_schema", + "schema_version": "1.0.0", + "attributes": ["attr_1","attr_2","attr_3"], +} + +CRED_DEF_TEMPLATE = { + "support_revocation": False, + "schema_id": "", + "tag": "default" +} + +CREDENTIAL_ATTR_TEMPLATE = { + "attr_1": "value_1", + "attr_2": "value_2", + "attr_3": "value_3", +} + + +@given('"{issuer}" is ready to issue a credential') +def step_impl(context, issuer): + agent = context.active_agents[issuer] + + cred_def_id = aries_container_create_schema_cred_def( + agent['agent'], + SCHEMA_TEMPLATE["schema_name"], + SCHEMA_TEMPLATE["attributes"], + ) + + context.cred_def_id = cred_def_id + context.cred_attrs = CREDENTIAL_ATTR_TEMPLATE + + +@when('"{issuer}" offers a credential') +def step_impl(context, issuer): + agent = context.active_agents[issuer] + + aries_container_issue_credential( + agent['agent'], + context.cred_def_id, + context.cred_attrs, + ) + + # TODO Check the issuers State + #assert resp_json["state"] == "offer-sent" + + # TODO Check the state of the holder after issuers call of send-offer + #assert expected_agent_state(context.holder_url, "issue-credential", context.cred_thread_id, "offer-received") + + +@when('"{holder}" requests the credential') +def step_impl(context, holder): + # TODO + pass + + +@when('"{issuer}" issues the credential') +def step_impl(context, issuer): + # TODO + pass + + +@when('"{holder}" acknowledges the credential issue') +def step_impl(context, holder): + # TODO + pass + + +@then('"{holder}" has the credential issued') +def step_impl(context, holder): + agent = context.active_agents[holder] + + # TODO check the received credential status + sleep(5) + diff --git a/demo/features/steps/0160-connection.py b/demo/features/steps/0160-connection.py index 7ea32a59c2..6c67d67f9d 100644 --- a/demo/features/steps/0160-connection.py +++ b/demo/features/steps/0160-connection.py @@ -10,6 +10,7 @@ from behave import given, when, then import json + from bdd_support.agent_backchannel_client import ( create_agent_container_with_args, aries_container_initialize, @@ -87,29 +88,12 @@ def step_impl(context, agent_name): @given('"{sender}" and "{receiver}" have an existing connection') def step_impl(context, sender, receiver): - if "DIDExchangeConnection" in context.tags: - context.execute_steps(u''' - When "''' + sender + '''" sends an explicit invitation - And "''' + receiver + '''" receives the invitation - And "''' + receiver + '''" sends the request to "''' + sender + '''" - And "''' + sender + '''" receives the request - And "''' + sender + '''" sends a response to "''' + receiver + '''" - And "''' + receiver + '''" receives the response - And "''' + receiver + '''" sends complete to "''' + sender + '''" - Then "''' + sender + '''" and "''' + receiver + '''" have a connection - ''') - - else: - context.execute_steps(u''' - When "''' + sender + '''" generates a connection invitation - And "''' + receiver + '''" receives the connection invitation - And "''' + receiver + '''" sends a connection request to "''' + sender + '''" - And "''' + sender + '''" receives the connection request - And "''' + sender + '''" sends a connection response to "''' + receiver + '''" - And "''' + receiver + '''" receives the connection response - And "''' + receiver + '''" sends trustping to "''' + sender + '''" - Then "''' + sender + '''" and "''' + receiver + '''" have a connection - ''') + context.execute_steps(u''' + When "''' + sender + '''" generates a connection invitation + And "''' + receiver + '''" receives the connection invitation + Then "''' + sender + '''" has an active connection + And "''' + receiver + '''" has an active connection + ''') @when(u'"{sender}" sends a trust ping') def step_impl(context, sender): diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index 8272f2a218..c4e1519308 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -80,11 +80,18 @@ async def handle_connections(self, message): # will be None if not self._connection_ready: return - conn_id = message["connection_id"] + + # inviter: if message["state"] == "invitation": self.connection_id = conn_id + + # invitee: + if (not self.connection_id) and message["rfc23_state"] == "invitation-received": + self.connection_id = conn_id + if conn_id == self.connection_id: + # inviter or invitee: if ( message["rfc23_state"] in ["completed", "response-sent"] and not self._connection_ready.done() @@ -109,6 +116,20 @@ async def handle_issue_credential_v2_0(self, message): f"/issue-credential-2.0/records/{cred_ex_id}/issue", {"comment": f"Issuing credential, exchange {cred_ex_id}"}, ) + elif state == "offer-received": + log_status("#15 After receiving credential offer, send credential request") + await self.admin_POST( + f"/issue-credential-2.0/records/{cred_ex_id}/send-request" + ) + elif state == "done": + cred_id = message["cred_id_stored"] + self.log(f"Stored credential {cred_id} in wallet") + log_status(f"#18.1 Stored credential {cred_id} in wallet") + cred = await self.admin_GET(f"/credential/{cred_id}") + log_json(cred, label="Credential details:") + self.log("credential_id", cred_id) + self.log("cred_def_id", cred["cred_def_id"]) + self.log("schema_id", cred["schema_id"]) async def handle_issue_credential_v2_0_indy(self, message): rev_reg_id = message.get("rev_reg_id") @@ -223,6 +244,8 @@ def __init__( self.public_did = public_did self.seed = seed + self.exchange_tracing = False + # local agent(s) self.agent = None self.mediator_agent = None @@ -277,10 +300,11 @@ async def initialize( if self.multitenant: # create an initial managed sub-wallet (also mediated) + rand_name = str(random.randint(100_000, 999_999)) await self.agent.register_or_switch_wallet( - self.ident + ".initial", + self.ident + ".initial." + rand_name, public_did=self.public_did, - webhook_port=self.agent.get_new_webhook_port(), + webhook_port=None, mediator_agent=self.mediator_agent, ) elif self.mediation: @@ -289,10 +313,57 @@ async def initialize( raise Exception("Mediation setup FAILED :-(") if schema_name and schema_attrs: - if not self.public_did: - raise Exception("Can't create a schema/cred def without a public DID :-(") - # Create a schema - self.cred_def_id = await self.agent.create_schema_and_cred_def(schema_name, schema_attrs, self.revocation) + # Create a schema/cred def + self.cred_def_id = await self.create_schema_and_cred_def(schema_name, schema_attrs, self.revocation) + + async def create_schema_and_cred_def( + self, + schema_name: str, + schema_attrs: list, + ): + if not self.public_did: + raise Exception("Can't create a schema/cred def without a public DID :-(") + self.cred_def_id = await self.agent.create_schema_and_cred_def(schema_name, schema_attrs, self.revocation) + return self.cred_def_id + + async def issue_credential( + self, + cred_def_id: str, + cred_attrs: dict, + ): + log_status("#13 Issue credential offer to X") + + # TODO define attributes to send for credential + self.agent.cred_attrs[cred_def_id] = cred_attrs + + cred_preview = { + "@type": CRED_PREVIEW_TYPE, + "attributes": [ + {"name": n, "value": v} + for (n, v) in self.agent.cred_attrs[cred_def_id].items() + ], + } + offer_request = { + "connection_id": self.agent.connection_id, + "comment": f"Offer on cred def id {cred_def_id}", + "auto_remove": False, + "credential_preview": cred_preview, + "filter": {"indy": {"cred_def_id": cred_def_id}}, + "trace": self.exchange_tracing, + } + await self.agent.admin_POST( + "/issue-credential-2.0/send-offer", offer_request + ) + + return True + + async def receive_credential( + self, + cred_def_id: str, + cred_attrs: dict, + ): + # TODO + return True async def terminate(self): """Shut down any running agents.""" @@ -310,7 +381,7 @@ async def terminate(self): terminated = False await asyncio.sleep(3.0) - + return terminated async def generate_invitation(self, auto_accept: bool = True, display_qr: bool = False, wait: bool = False): diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index 8cbff3e3df..02b19f86f6 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -511,12 +511,19 @@ def _terminate(self): raise Exception(msg) async def terminate(self): - loop = asyncio.get_event_loop() - if self.proc: - await loop.run_in_executor(None, self._terminate) + # close session to admin api + self.log("Shutting down admin api session") await self.client_session.close() + # shut down web hooks first + self.log("Shutting down web hooks site") if self.webhook_site: await self.webhook_site.stop() + await asyncio.sleep(0.5) + # now shut down the agent + self.log("Shutting down agent") + loop = asyncio.get_event_loop() + if self.proc: + await loop.run_in_executor(None, self._terminate) async def listen_webhooks(self, webhook_port): self.webhook_port = webhook_port From 2d7252e3f6dfdc85582e3b493c2fe0a20fd369a2 Mon Sep 17 00:00:00 2001 From: Ethan Sung Date: Thu, 18 Feb 2021 15:45:44 +0900 Subject: [PATCH 048/243] Fix AdminResponder send overriding problem Signed-off-by: Ethan Sung --- aries_cloudagent/admin/server.py | 4 ++-- aries_cloudagent/transport/inbound/session.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/aries_cloudagent/admin/server.py b/aries_cloudagent/admin/server.py index a1344ddffd..5f993ad6d0 100644 --- a/aries_cloudagent/admin/server.py +++ b/aries_cloudagent/admin/server.py @@ -109,12 +109,12 @@ async def send_webhook(self, topic: str, payload: dict): await self._webhook(self._profile, topic, payload) @property - def send(self) -> Coroutine: + def send_fn(self) -> Coroutine: """Accessor for async function to send outbound message.""" return self._send @property - def webhook(self) -> Coroutine: + def webhook_fn(self) -> Coroutine: """Accessor for the async function to dispatch a webhook.""" return self._webhook diff --git a/aries_cloudagent/transport/inbound/session.py b/aries_cloudagent/transport/inbound/session.py index 165b486a7a..c92af9c2ad 100644 --- a/aries_cloudagent/transport/inbound/session.py +++ b/aries_cloudagent/transport/inbound/session.py @@ -176,8 +176,8 @@ async def handle_relay_context(self, payload_enc: Union[str, bytes]): # Create new responder based on base responder responder = AdminResponder( profile, - base_responder.send, - base_responder.webhook, + base_responder.send_fn, + base_responder.webhook_fn, ) profile.context.injector.bind_instance(BaseResponder, responder) From 9f791dd89c71c76f9963539ea62367feeae0ccbf Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 18 Feb 2021 16:30:22 +0000 Subject: [PATCH 049/243] query endpoints by connection id Signed-off-by: sklump --- aries_cloudagent/connections/base_manager.py | 49 +++++++++---------- .../protocols/connections/v1_0/manager.py | 26 ++++++++++ .../protocols/connections/v1_0/routes.py | 44 ++++++++++++++++- .../connections/v1_0/tests/test_manager.py | 22 +++++++++ .../connections/v1_0/tests/test_routes.py | 49 +++++++++++++++++++ 5 files changed, 164 insertions(+), 26 deletions(-) diff --git a/aries_cloudagent/connections/base_manager.py b/aries_cloudagent/connections/base_manager.py index ccc191248a..3ee4857006 100644 --- a/aries_cloudagent/connections/base_manager.py +++ b/aries_cloudagent/connections/base_manager.py @@ -209,10 +209,23 @@ async def remove_keys_for_did(self, did: str): storage = self._session.inject(BaseStorage) await storage.delete_all_records(self.RECORD_TYPE_DID_KEY, {"did": did}) + async def _get_from_ledger(self, public_did: str) -> Tuple[str, Sequence[str]]: + """Get endpoint and recipient keys for public DID from ledger.""" + ledger = self._session.inject(BaseLedger, required=False) + if not ledger: + raise BaseConnectionManagerError( + f"Cannot resolve DID {public_did} without ledger instance" + ) + async with ledger: + endpoint = await ledger.get_endpoint_for_did(public_did) + recipient_keys = [await ledger.get_key_for_did(public_did)] + + return (endpoint, recipient_keys) + async def fetch_connection_targets( self, connection: ConnRecord ) -> Sequence[ConnectionTarget]: - """Get a list of connection target from a `ConnRecord`. + """Get a list of connection targets from a `ConnRecord`. Args: connection: The connection record (with associated `DIDDoc`) @@ -235,36 +248,22 @@ async def fetch_connection_targets( invitation = await connection.retrieve_invitation(self._session) if isinstance(invitation, ConnectionInvitation): # conn protocol invitation if invitation.did: - # populate recipient keys and endpoint from the ledger - ledger = self._session.inject(BaseLedger, required=False) - if not ledger: - raise BaseConnectionManagerError( - "Cannot resolve DID without ledger instance" - ) - async with ledger: - endpoint = await ledger.get_endpoint_for_did(invitation.did) - recipient_keys = [await ledger.get_key_for_did(invitation.did)] - routing_keys = [] + # populate recipient keys, endpoint from ledger + (endpoint, recipient_keys) = await self._get_from_ledger( + invitation.did + ) + routing_keys = [] else: endpoint = invitation.endpoint recipient_keys = invitation.recipient_keys routing_keys = invitation.routing_keys else: # out-of-band invitation if invitation.service_dids: - # populate recipient keys and endpoint from the ledger - ledger = self._session.inject(BaseLedger, required=False) - if not ledger: - raise BaseConnectionManagerError( - "Cannot resolve DID without ledger instance" - ) - async with ledger: - endpoint = await ledger.get_endpoint_for_did( - invitation.service_dids[0] - ) - recipient_keys = [ - await ledger.get_key_for_did(invitation.service_dids[0]) - ] - routing_keys = [] + # populate recipient keys, endpoint from ledger + (endpoint, recipient_keys) = await self._get_from_ledger( + invitation.service_dids[0] + ) + routing_keys = [] else: endpoint = invitation.service_blocks[0].service_endpoint recipient_keys = [ diff --git a/aries_cloudagent/protocols/connections/v1_0/manager.py b/aries_cloudagent/protocols/connections/v1_0/manager.py index 5a6cb03f7e..d33954e5cc 100644 --- a/aries_cloudagent/protocols/connections/v1_0/manager.py +++ b/aries_cloudagent/protocols/connections/v1_0/manager.py @@ -810,6 +810,32 @@ async def accept_response( return connection + async def get_endpoints(self, conn_id: str) -> Tuple[str, str]: + """ + Get connection endpoints. + + Args: + conn_id: connection identifier + + Returns: + Their endpoint for this connection + + """ + connection = await ConnRecord.retrieve_by_id(self._session, conn_id) + + wallet = self._session.inject(BaseWallet) + my_did_info = await wallet.get_local_did(connection.my_did) + my_endpoint = my_did_info.metadata.get( + "endpoint", + self._session.settings.get("default_endpoint"), + ) + + conn_targets = await self.get_connection_targets( + connection_id=connection.connection_id, + connection=connection, + ) + return (my_endpoint, conn_targets[0].endpoint) + async def create_static_connection( self, my_did: str = None, diff --git a/aries_cloudagent/protocols/connections/v1_0/routes.py b/aries_cloudagent/protocols/connections/v1_0/routes.py index 4cbcffc683..7ff4e8d721 100644 --- a/aries_cloudagent/protocols/connections/v1_0/routes.py +++ b/aries_cloudagent/protocols/connections/v1_0/routes.py @@ -272,6 +272,13 @@ class ConnIdRefIdMatchInfoSchema(OpenAPISchema): ) +class EndpointsResultSchema(OpenAPISchema): + """Result schema for connection endpoints.""" + + my_endpoint = fields.Str(description="My endpoint", **ENDPOINT) + their_endpoint = fields.Str(description="Their endpoint", **ENDPOINT) + + def connection_sort_key(conn): """Get the sorting key for a particular connection.""" @@ -369,6 +376,35 @@ async def connections_retrieve(request: web.BaseRequest): return web.json_response(result) +@docs(tags=["connection"], summary="Fetch connection remote endpoint") +@match_info_schema(ConnIdMatchInfoSchema()) +@response_schema(EndpointsResultSchema(), 200, description="") +async def connections_endpoints(request: web.BaseRequest): + """ + Request handler for fetching connection endpoints. + + Args: + request: aiohttp request object + + Returns: + The endpoints response + + """ + context: AdminRequestContext = request["context"] + connection_id = request.match_info["conn_id"] + session = await context.session() + + connection_mgr = ConnectionManager(session) + try: + endpoints = await connection_mgr.get_endpoints(connection_id) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + except (BaseModelError, StorageError, WalletError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + return web.json_response(dict(zip(("my_endpoint", "their_endpoint"), endpoints))) + + @docs(tags=["connection"], summary="Fetch connection metadata") @match_info_schema(ConnIdMatchInfoSchema()) @querystring_schema(ConnectionMetadataQuerySchema()) @@ -731,6 +767,11 @@ async def register(app: web.Application): allow_head=False, ), web.post("/connections/{conn_id}/metadata", connections_metadata_set), + web.get( + "/connections/{conn_id}/endpoints", + connections_endpoints, + allow_head=False, + ), web.post("/connections/create-static", connections_create_static), web.post("/connections/create-invitation", connections_create_invitation), web.post("/connections/receive-invitation", connections_receive_invitation), @@ -739,7 +780,8 @@ async def register(app: web.Application): connections_accept_invitation, ), web.post( - "/connections/{conn_id}/accept-request", connections_accept_request + "/connections/{conn_id}/accept-request", + connections_accept_request, ), web.post( "/connections/{conn_id}/establish-inbound/{ref_id}", diff --git a/aries_cloudagent/protocols/connections/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/connections/v1_0/tests/test_manager.py index 6e83016515..b45626b9d0 100644 --- a/aries_cloudagent/protocols/connections/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/connections/v1_0/tests/test_manager.py @@ -1288,6 +1288,28 @@ async def test_accept_response_auto_send_mediation_request(self): assert isinstance(message, MediationRequest) assert target["connection_id"] == conn_rec.connection_id + async def test_get_endpoints(self): + conn_id = "dummy" + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_retrieve, async_mock.patch.object( + InMemoryWallet, "get_local_did", autospec=True + ) as mock_wallet_get_local_did, async_mock.patch.object( + self.manager, "get_connection_targets", async_mock.CoroutineMock() + ) as mock_get_conn_targets: + mock_retrieve.return_value = async_mock.MagicMock() + mock_wallet_get_local_did.return_value = async_mock.MagicMock( + metadata={"endpoint": "localhost:8020"} + ) + mock_get_conn_targets.return_value = [ + async_mock.MagicMock(endpoint="10.20.30.40:5060") + ] + assert await self.manager.get_endpoints(conn_id) == ( + "localhost:8020", + "10.20.30.40:5060", + ) + async def test_create_static_connection(self): with async_mock.patch.object( ConnRecord, "save", autospec=True diff --git a/aries_cloudagent/protocols/connections/v1_0/tests/test_routes.py b/aries_cloudagent/protocols/connections/v1_0/tests/test_routes.py index 81a3022b6f..8be411a7ff 100644 --- a/aries_cloudagent/protocols/connections/v1_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/connections/v1_0/tests/test_routes.py @@ -135,6 +135,55 @@ async def test_connections_retrieve(self): await test_module.connections_retrieve(self.request) mock_response.assert_called_once_with({"hello": "world"}) + async def test_connections_endpoints(self): + self.request.match_info = {"conn_id": "dummy"} + mock_conn_rec = async_mock.MagicMock() + + with async_mock.patch.object( + test_module, "ConnectionManager", autospec=True + ) as mock_conn_mgr_cls, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_conn_mgr_cls.return_value = async_mock.MagicMock( + get_endpoints=async_mock.CoroutineMock( + return_value=("localhost:8080", "1.2.3.4:8081") + ) + ) + await test_module.connections_endpoints(self.request) + mock_response.assert_called_once_with( + { + "my_endpoint": "localhost:8080", + "their_endpoint": "1.2.3.4:8081", + } + ) + + async def test_connections_endpoints_x(self): + self.request.match_info = {"conn_id": "dummy"} + mock_conn_rec = async_mock.MagicMock() + + with async_mock.patch.object( + test_module, "ConnectionManager", autospec=True + ) as mock_conn_mgr_cls, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_conn_mgr_cls.return_value = async_mock.MagicMock( + get_endpoints=async_mock.CoroutineMock( + side_effect=StorageNotFoundError() + ) + ) + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.connections_endpoints(self.request) + + mock_conn_mgr_cls.return_value = async_mock.MagicMock( + get_endpoints=async_mock.CoroutineMock( + side_effect=test_module.WalletError() + ) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.connections_endpoints(self.request) + async def test_connections_metadata(self): self.request.match_info = {"conn_id": "dummy"} mock_conn_rec = async_mock.MagicMock() From e0517d6ea477a314a5a595b2107fb57cbc09ba3d Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Thu, 18 Feb 2021 09:09:21 -0800 Subject: [PATCH 050/243] use main branch for codecov badge Signed-off-by: Andrew Whitehead --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e65e464c6..0db0c2e775 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![pypi releases](https://img.shields.io/pypi/v/aries_cloudagent)](https://pypi.org/project/aries-cloudagent/) [![CircleCI](https://circleci.com/gh/hyperledger/aries-cloudagent-python.svg?style=shield)](https://circleci.com/gh/hyperledger/aries-cloudagent-python) -[![codecov](https://codecov.io/gh/hyperledger/aries-cloudagent-python/branch/master/graph/badge.svg)](https://codecov.io/gh/hyperledger/aries-cloudagent-python) +[![codecov](https://codecov.io/gh/hyperledger/aries-cloudagent-python/branch/main/graph/badge.svg)](https://codecov.io/gh/hyperledger/aries-cloudagent-python) From 1d0cf3c3210595e21dab2558426c8329731134f2 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 18 Feb 2021 18:13:59 +0000 Subject: [PATCH 051/243] work in progress: prepare attachment decorator Signed-off-by: sklump --- .../messaging/decorators/attach_decorator.py | 22 ++--- .../decorators/tests/test_attach_decorator.py | 20 ++--- .../handlers/tests/test_request_handler.py | 2 +- .../handlers/tests/test_response_handler.py | 2 +- .../protocols/didexchange/v1_0/manager.py | 4 +- .../v1_0/messages/tests/test_request.py | 4 +- .../v1_0/messages/tests/test_response.py | 4 +- .../didexchange/v1_0/tests/test_manager.py | 18 ++-- .../v1_0/messages/credential_issue.py | 6 +- .../v1_0/messages/credential_offer.py | 6 +- .../v1_0/messages/credential_request.py | 6 +- .../messages/tests/test_credential_issue.py | 16 ++-- .../messages/tests/test_credential_offer.py | 20 ++--- .../messages/tests/test_credential_request.py | 20 ++--- .../tests/test_cred_request_handler.py | 8 +- .../issue_credential/v2_0/manager.py | 10 +-- .../v2_0/messages/cred_format.py | 2 +- .../v2_0/messages/cred_proposal.py | 2 +- .../v2_0/messages/tests/test_cred_format.py | 6 +- .../v2_0/messages/tests/test_cred_issue.py | 14 ++-- .../v2_0/messages/tests/test_cred_offer.py | 20 +++-- .../v2_0/messages/tests/test_cred_proposal.py | 8 +- .../v2_0/messages/tests/test_cred_request.py | 16 ++-- .../protocols/issue_credential/v2_0/routes.py | 2 +- .../v2_0/tests/test_manager.py | 84 +++++++++---------- .../out_of_band/v1_0/messages/invitation.py | 2 +- .../out_of_band/v1_0/tests/test_manager.py | 4 +- .../protocols/present_proof/v1_0/manager.py | 8 +- .../v1_0/messages/presentation.py | 2 +- .../v1_0/messages/presentation_request.py | 2 +- .../v1_0/messages/tests/test_presentation.py | 14 ++-- .../tests/test_presentation_request.py | 14 ++-- .../protocols/present_proof/v1_0/routes.py | 8 +- .../present_proof/v1_0/tests/test_manager.py | 12 +-- .../present_proof/v1_0/tests/test_routes.py | 6 +- 35 files changed, 198 insertions(+), 196 deletions(-) diff --git a/aries_cloudagent/messaging/decorators/attach_decorator.py b/aries_cloudagent/messaging/decorators/attach_decorator.py index bb0ed4f2c5..bda5518f74 100644 --- a/aries_cloudagent/messaging/decorators/attach_decorator.py +++ b/aries_cloudagent/messaging/decorators/attach_decorator.py @@ -546,20 +546,20 @@ def __init__( self.data = data @property - def indy_dict(self): + def base64_dict(self): """ - Return indy data structure encoded in attachment. + Return data structure base64-encoded in attachment. - Returns: dict with indy object in data attachment + Returns: data attachment's base64-encoded dict, b64-decoded and json-loaded """ assert hasattr(self.data, "base64_") return json.loads(b64_to_bytes(self.data.base64)) @classmethod - def from_indy_dict( + def data_base64( cls, - indy_dict: dict, + mapping: Mapping, *, ident: str = None, description: str = None, @@ -568,13 +568,13 @@ def from_indy_dict( byte_count: int = None, ): """ - Create `AttachDecorator` instance from indy object (dict). + Create `AttachDecorator` instance on base64-encoded data from input mapping. - Given indy object (dict), JSON dump, base64-encode, and embed + Given mapping, JSON dump, base64-encode, and embed it as data; mark `application/json` MIME type. Args: - indy_dict: indy (dict) data structure + mapping: (dict) data structure; e.g., indy production ident: optional attachment identifier (default random UUID4) description: optional attachment description filename: optional attachment filename @@ -590,12 +590,12 @@ def from_indy_dict( lastmod_time=lastmod_time, byte_count=byte_count, data=AttachDecoratorData( - base64_=bytes_to_b64(json.dumps(indy_dict).encode()) + base64_=bytes_to_b64(json.dumps(mapping).encode()) ), ) @classmethod - def from_aries_msg( + def data_json( cls, message: dict, *, @@ -606,7 +606,7 @@ def from_aries_msg( byte_count: int = None, ): """ - Create `AttachDecorator` instance from an aries message. + Create `AttachDecorator` instance on json-encoded data from input mapping. Given message object (dict), JSON dump, and embed it as data; mark `application/json` MIME type. diff --git a/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py b/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py index ef2543017b..b0754f30e4 100644 --- a/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py +++ b/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py @@ -305,9 +305,9 @@ def test_serialize_load_appended_links(self): assert decorator.description == DESCRIPTION assert decorator.data == DATA_LINKS - def test_indy_dict(self): - deco_indy = AttachDecorator.from_indy_dict( - indy_dict=INDY_CRED, + def test_base64_dict(self): + deco_indy = AttachDecorator.data_base64( + mapping=INDY_CRED, ident=IDENT, description=DESCRIPTION, ) @@ -317,11 +317,11 @@ def test_indy_dict(self): assert deco_indy.data.json is None assert deco_indy.data.links is None assert deco_indy.data.sha256 is None - assert deco_indy.indy_dict == INDY_CRED + assert deco_indy.base64_dict == INDY_CRED assert deco_indy.ident == IDENT assert deco_indy.description == DESCRIPTION - deco_indy_auto_id = AttachDecorator.from_indy_dict(indy_dict=INDY_CRED) + deco_indy_auto_id = AttachDecorator.data_base64(mapping=INDY_CRED) assert deco_indy_auto_id.ident # cover AttachDecoratorData equality operator @@ -336,8 +336,8 @@ def test_indy_dict(self): assert lynx_str != links assert links != DATA_LINKS # has sha256 - def test_from_aries_msg(self): - deco_aries = AttachDecorator.from_aries_msg( + def test_data_json(self): + deco_aries = AttachDecorator.data_json( message=INDY_CRED, ident=IDENT, description=DESCRIPTION, @@ -352,7 +352,7 @@ def test_from_aries_msg(self): assert deco_aries.ident == IDENT assert deco_aries.description == DESCRIPTION - deco_aries_auto_id = AttachDecorator.from_aries_msg(message=INDY_CRED) + deco_aries_auto_id = AttachDecorator.data_json(message=INDY_CRED) assert deco_aries_auto_id.ident @@ -372,8 +372,8 @@ async def test_did_raw_key(self, wallet, seed): @pytest.mark.asyncio async def test_indy_sign(self, wallet, seed): - deco_indy = AttachDecorator.from_indy_dict( - indy_dict=INDY_CRED, + deco_indy = AttachDecorator.data_base64( + mapping=INDY_CRED, ident=IDENT, description=DESCRIPTION, filename=FILENAME, diff --git a/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_request_handler.py b/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_request_handler.py index 97f4f86e38..b70da3abd2 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_request_handler.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_request_handler.py @@ -88,7 +88,7 @@ async def setUp(self): wallet = self.session.wallet self.did_info = await wallet.create_local_did() - self.did_doc_attach = AttachDecorator.from_indy_dict(self.did_doc().serialize()) + self.did_doc_attach = AttachDecorator.data_base64(self.did_doc().serialize()) await self.did_doc_attach.data.sign(self.did_info.verkey, wallet) self.request = DIDXRequest( diff --git a/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_response_handler.py b/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_response_handler.py index 6da8dca157..9f683e0a92 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_response_handler.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/handlers/tests/test_response_handler.py @@ -62,7 +62,7 @@ async def setUp(self): wallet = (await self.ctx.session()).wallet self.did_info = await wallet.create_local_did() - self.did_doc_attach = AttachDecorator.from_indy_dict(self.did_doc().serialize()) + self.did_doc_attach = AttachDecorator.data_base64(self.did_doc().serialize()) await self.did_doc_attach.data.sign(self.did_info.verkey, wallet) self.request = DIDXResponse( diff --git a/aries_cloudagent/protocols/didexchange/v1_0/manager.py b/aries_cloudagent/protocols/didexchange/v1_0/manager.py index c6848d6b1b..3aa8192e32 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/manager.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/manager.py @@ -261,7 +261,7 @@ async def create_request( ), ) pthid = conn_rec.invitation_msg_id or f"did:sov:{conn_rec.their_public_did}" - attach = AttachDecorator.from_indy_dict(did_doc.serialize()) + attach = AttachDecorator.data_base64(did_doc.serialize()) await attach.data.sign(my_info.verkey, wallet) if not my_label: my_label = self._session.settings.get("default_label") @@ -566,7 +566,7 @@ async def create_response( filter(None, [base_mediation_record, mediation_record]) ), ) - attach = AttachDecorator.from_indy_dict(did_doc.serialize()) + attach = AttachDecorator.data_base64(did_doc.serialize()) await attach.data.sign(conn_rec.invitation_key, wallet) response = DIDXResponse(did=my_info.did, did_doc_attach=attach) # Assign thread information diff --git a/aries_cloudagent/protocols/didexchange/v1_0/messages/tests/test_request.py b/aries_cloudagent/protocols/didexchange/v1_0/messages/tests/test_request.py index 9722d3be3c..2527224f25 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/messages/tests/test_request.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/messages/tests/test_request.py @@ -58,7 +58,7 @@ async def setUp(self): self.wallet = InMemoryProfile.test_session().wallet self.did_info = await self.wallet.create_local_did() - did_doc_attach = AttachDecorator.from_indy_dict(self.make_did_doc().serialize()) + did_doc_attach = AttachDecorator.data_base64(self.make_did_doc().serialize()) await did_doc_attach.data.sign(self.did_info.verkey, self.wallet) self.request = DIDXRequest( @@ -112,7 +112,7 @@ async def setUp(self): self.wallet = InMemoryProfile.test_session().wallet self.did_info = await self.wallet.create_local_did() - did_doc_attach = AttachDecorator.from_indy_dict(self.make_did_doc().serialize()) + did_doc_attach = AttachDecorator.data_base64(self.make_did_doc().serialize()) await did_doc_attach.data.sign(self.did_info.verkey, self.wallet) self.request = DIDXRequest( diff --git a/aries_cloudagent/protocols/didexchange/v1_0/messages/tests/test_response.py b/aries_cloudagent/protocols/didexchange/v1_0/messages/tests/test_response.py index 8d0221a7bb..e9fb7e0c9b 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/messages/tests/test_response.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/messages/tests/test_response.py @@ -57,7 +57,7 @@ async def setUp(self): self.wallet = InMemoryProfile.test_session().wallet self.did_info = await self.wallet.create_local_did() - did_doc_attach = AttachDecorator.from_indy_dict(self.make_did_doc().serialize()) + did_doc_attach = AttachDecorator.data_base64(self.make_did_doc().serialize()) await did_doc_attach.data.sign(self.did_info.verkey, self.wallet) self.response = DIDXResponse( @@ -108,7 +108,7 @@ async def setUp(self): self.wallet = InMemoryProfile.test_session().wallet self.did_info = await self.wallet.create_local_did() - did_doc_attach = AttachDecorator.from_indy_dict(self.make_did_doc().serialize()) + did_doc_attach = AttachDecorator.data_base64(self.make_did_doc().serialize()) await did_doc_attach.data.sign(self.did_info.verkey, self.wallet) self.response = DIDXResponse( diff --git a/aries_cloudagent/protocols/didexchange/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/didexchange/v1_0/tests/test_manager.py index bcfc733351..00625ab4a4 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/tests/test_manager.py @@ -121,7 +121,7 @@ async def test_verify_diddoc(self): TestConfig.test_target_did, TestConfig.test_target_verkey, ) - did_doc_attach = AttachDecorator.from_indy_dict(did_doc.serialize()) + did_doc_attach = AttachDecorator.data_base64(did_doc.serialize()) with self.assertRaises(DIDXManagerError): await self.manager.verify_diddoc(self.session.wallet, did_doc_attach) @@ -155,7 +155,7 @@ async def test_receive_invitation(self): hs_protos=[HSProto.RFC23], ) invi_msg = InvitationMessage.deserialize(invi_rec.invitation) - mock_attach_deco.from_indy_dict = async_mock.MagicMock( + mock_attach_deco.data_base64 = async_mock.MagicMock( return_value=async_mock.MagicMock( data=async_mock.MagicMock(sign=async_mock.CoroutineMock()) ) @@ -275,7 +275,7 @@ async def test_create_request_multitenant(self): mock_wallet_create_local_did.return_value = DIDInfo( TestConfig.test_did, TestConfig.test_verkey, None ) - mock_attach_deco.from_indy_dict = async_mock.MagicMock( + mock_attach_deco.data_base64 = async_mock.MagicMock( return_value=async_mock.MagicMock( data=async_mock.MagicMock(sign=async_mock.CoroutineMock()) ) @@ -463,7 +463,7 @@ async def test_receive_request_explicit_public_did(self): mock_did_doc.from_json = async_mock.MagicMock( return_value=async_mock.MagicMock(did=TestConfig.test_did) ) - mock_attach_deco.from_indy_dict = async_mock.MagicMock( + mock_attach_deco.data_base64 = async_mock.MagicMock( return_value=async_mock.MagicMock( data=async_mock.MagicMock(sign=async_mock.CoroutineMock()) ) @@ -1019,7 +1019,7 @@ async def test_receive_request_peer_did(self): mock_did_doc.from_json = async_mock.MagicMock( return_value=async_mock.MagicMock(did=TestConfig.test_did) ) - mock_attach_deco.from_indy_dict = async_mock.MagicMock( + mock_attach_deco.data_base64 = async_mock.MagicMock( return_value=async_mock.MagicMock( data=async_mock.MagicMock(sign=async_mock.CoroutineMock()) ) @@ -1238,7 +1238,7 @@ async def test_create_response(self): mock_create_did_doc.return_value = async_mock.MagicMock( serialize=async_mock.MagicMock() ) - mock_attach_deco.from_indy_dict = async_mock.MagicMock( + mock_attach_deco.data_base64 = async_mock.MagicMock( return_value=async_mock.MagicMock( data=async_mock.MagicMock(sign=async_mock.CoroutineMock()) ) @@ -1287,7 +1287,7 @@ async def test_create_response_mediation_id(self): ), async_mock.patch.object( test_module, "AttachDecorator", autospec=True ) as mock_attach_deco: - mock_attach_deco.from_indy_dict = async_mock.MagicMock( + mock_attach_deco.data_base64 = async_mock.MagicMock( return_value=async_mock.MagicMock( data=async_mock.MagicMock(sign=async_mock.CoroutineMock()) ) @@ -1377,7 +1377,7 @@ async def test_create_response_multitenant(self): mock_create_did_doc.return_value = async_mock.MagicMock( serialize=async_mock.MagicMock() ) - mock_attach_deco.from_indy_dict = async_mock.MagicMock( + mock_attach_deco.data_base64 = async_mock.MagicMock( return_value=async_mock.MagicMock( data=async_mock.MagicMock(sign=async_mock.CoroutineMock()) ) @@ -1414,7 +1414,7 @@ async def test_create_response_conn_rec_my_did(self): mock_create_did_doc.return_value = async_mock.MagicMock( serialize=async_mock.MagicMock() ) - mock_attach_deco.from_indy_dict = async_mock.MagicMock( + mock_attach_deco.data_base64 = async_mock.MagicMock( return_value=async_mock.MagicMock( data=async_mock.MagicMock(sign=async_mock.CoroutineMock()) ) diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_issue.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_issue.py index 94338e53c0..2db7e29ba2 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_issue.py @@ -56,13 +56,13 @@ def indy_credential(self, index: int = 0): (typically, list has length 1) """ - return self.credentials_attach[index].indy_dict + return self.credentials_attach[index].base64_dict @classmethod def wrap_indy_credential(cls, indy_cred: dict) -> AttachDecorator: """Convert an indy credential offer to an attachment decorator.""" - return AttachDecorator.from_indy_dict( - indy_dict=indy_cred, ident=ATTACH_DECO_IDS[CREDENTIAL_ISSUE] + return AttachDecorator.data_base64( + mapping=indy_cred, ident=ATTACH_DECO_IDS[CREDENTIAL_ISSUE] ) diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_offer.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_offer.py index 4cd36dfe94..bd0f1df527 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_offer.py @@ -60,13 +60,13 @@ def indy_offer(self, index: int = 0) -> dict: (typically, list has length 1) """ - return self.offers_attach[index].indy_dict + return self.offers_attach[index].base64_dict @classmethod def wrap_indy_offer(cls, indy_offer: dict) -> AttachDecorator: """Convert an indy credential offer to an attachment decorator.""" - return AttachDecorator.from_indy_dict( - indy_dict=indy_offer, ident=ATTACH_DECO_IDS[CREDENTIAL_OFFER] + return AttachDecorator.data_base64( + mapping=indy_offer, ident=ATTACH_DECO_IDS[CREDENTIAL_OFFER] ) diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_request.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_request.py index 03d7849371..a7a58aa2f9 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_request.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_request.py @@ -57,13 +57,13 @@ def indy_cred_req(self, index: int = 0): (typically, list has length 1) """ - return self.requests_attach[index].indy_dict + return self.requests_attach[index].base64_dict @classmethod def wrap_indy_cred_req(cls, indy_cred_req: dict) -> AttachDecorator: """Convert an indy credential request to an attachment decorator.""" - return AttachDecorator.from_indy_dict( - indy_dict=indy_cred_req, ident=ATTACH_DECO_IDS[CREDENTIAL_REQUEST] + return AttachDecorator.data_base64( + mapping=indy_cred_req, ident=ATTACH_DECO_IDS[CREDENTIAL_REQUEST] ) diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_issue.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_issue.py index 8bc3c8e1f5..e75ddd25c2 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_issue.py @@ -70,8 +70,8 @@ class TestCredentialIssue(TestCase): cred_issue = CredentialIssue( comment="Test", credentials_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=indy_cred, + AttachDecorator.data_base64( + mapping=indy_cred, ident=ATTACH_DECO_IDS[CREDENTIAL_ISSUE], ) ], @@ -82,13 +82,13 @@ def test_init(self): credential_issue = CredentialIssue( comment="Test", credentials_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=self.indy_cred, + AttachDecorator.data_base64( + mapping=self.indy_cred, ident=ATTACH_DECO_IDS[CREDENTIAL_ISSUE], ) ], ) - assert credential_issue.credentials_attach[0].indy_dict == self.indy_cred + assert credential_issue.credentials_attach[0].base64_dict == self.indy_cred assert credential_issue.credentials_attach[0].ident # auto-generates UUID4 assert credential_issue.indy_credential(0) == self.indy_cred @@ -97,8 +97,8 @@ def test_type(self): credential_issue = CredentialIssue( comment="Test", credentials_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=self.indy_cred, + AttachDecorator.data_base64( + mapping=self.indy_cred, ident=ATTACH_DECO_IDS[CREDENTIAL_ISSUE], ) ], @@ -140,7 +140,7 @@ class TestCredentialIssueSchema(TestCase): credential_issue = CredentialIssue( comment="Test", - credentials_attach=[AttachDecorator.from_indy_dict({"hello": "world"})], + credentials_attach=[AttachDecorator.data_base64({"hello": "world"})], ) def test_make_model(self): diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_offer.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_offer.py index f87fc49525..cc17daba69 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_offer.py @@ -44,8 +44,8 @@ class TestCredentialOffer(TestCase): comment="shaken, not stirred", credential_preview=preview, offers_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=indy_offer, + AttachDecorator.data_base64( + mapping=indy_offer, ident=ATTACH_DECO_IDS[CREDENTIAL_OFFER], ) ], @@ -57,14 +57,14 @@ def test_init(self): comment="shaken, not stirred", credential_preview=self.preview, offers_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=self.indy_offer, + AttachDecorator.data_base64( + mapping=self.indy_offer, ident=ATTACH_DECO_IDS[CREDENTIAL_OFFER], ) ], ) assert credential_offer.credential_preview == self.preview - assert credential_offer.offers_attach[0].indy_dict == self.indy_offer + assert credential_offer.offers_attach[0].base64_dict == self.indy_offer assert credential_offer.indy_offer(0) == self.indy_offer def test_type(self): @@ -73,8 +73,8 @@ def test_type(self): comment="shaken, not stirred", credential_preview=self.preview, offers_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=self.indy_offer, + AttachDecorator.data_base64( + mapping=self.indy_offer, ident=ATTACH_DECO_IDS[CREDENTIAL_OFFER], ) ], @@ -107,8 +107,8 @@ def test_serialize(self, mock_credential_offer_schema_dump): comment="shaken, not stirred", credential_preview=self.preview, offers_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=self.indy_offer, + AttachDecorator.data_base64( + mapping=self.indy_offer, ident=ATTACH_DECO_IDS[CREDENTIAL_OFFER], ) ], @@ -126,7 +126,7 @@ class TestCredentialOfferSchema(TestCase): credential_offer = CredentialOffer( comment="shaken, not stirred", credential_preview=TestCredentialOffer.preview, - offers_attach=[AttachDecorator.from_indy_dict(TestCredentialOffer.indy_offer)], + offers_attach=[AttachDecorator.data_base64(TestCredentialOffer.indy_offer)], ) def test_make_model(self): diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_request.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_request.py index 5ecfa78dd0..0d5d1a54a0 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_request.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_request.py @@ -35,8 +35,8 @@ class TestCredentialRequest(TestCase): cred_req = CredentialRequest( comment="Test", requests_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=indy_cred_req, + AttachDecorator.data_base64( + mapping=indy_cred_req, ident=ATTACH_DECO_IDS[CREDENTIAL_REQUEST], ) ], @@ -47,13 +47,13 @@ def test_init(self): credential_request = CredentialRequest( comment="Test", requests_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=self.indy_cred_req, + AttachDecorator.data_base64( + mapping=self.indy_cred_req, ident=ATTACH_DECO_IDS[CREDENTIAL_REQUEST], ) ], ) - assert credential_request.requests_attach[0].indy_dict == self.indy_cred_req + assert credential_request.requests_attach[0].mapping == self.indy_cred_req assert credential_request.indy_cred_req(0) == self.indy_cred_req def test_type(self): @@ -61,8 +61,8 @@ def test_type(self): credential_request = CredentialRequest( comment="Test", requests_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=self.indy_cred_req, + AttachDecorator.data_base64( + mapping=self.indy_cred_req, ident=ATTACH_DECO_IDS[CREDENTIAL_REQUEST], ) ], @@ -98,8 +98,8 @@ def test_serialize(self, mock_credential_request_schema_dump): credential_request = CredentialRequest( comment="Test", requests_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=self.indy_cred_req, + AttachDecorator.data_base64( + mapping=self.indy_cred_req, ident=ATTACH_DECO_IDS[CREDENTIAL_REQUEST], ) ], @@ -119,7 +119,7 @@ class TestCredentialRequestSchema(TestCase): credential_request = CredentialRequest( comment="Test", requests_attach=[ - AttachDecorator.from_indy_dict(TestCredentialRequest.indy_cred_req) + AttachDecorator.data_base64(TestCredentialRequest.indy_cred_req) ], ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py b/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py index 112a82bae3..cb966aa436 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py @@ -59,7 +59,7 @@ async def test_called_auto_issue(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "cred_def_id": "LjgpST2rjsoxYegQDRm7EL:3:CL:12:tag1", }, @@ -107,10 +107,8 @@ async def test_called_auto_issue_no_preview(self): credential_preview=None, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( - { - "cred_def_id": "LjgpST2rjsoxYegQDRm7EL:3:CL:12:tag1", - }, + AttachDecorator.data_base64( + {"cred_def_id": "LjgpST2rjsoxYegQDRm7EL:3:CL:12:tag1"}, ident="0", ) ], diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py index cd937dfdd0..c5b189bf97 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py @@ -158,7 +158,7 @@ async def create_proposal( for ident, f in enumerate(fmt2filter.keys()) ], filters_attach=[ - AttachDecorator.from_indy_dict(f or {}, ident=str(ident)) + AttachDecorator.data_base64(f or {}, ident=str(ident)) for ident, f in enumerate(fmt2filter.values()) ], ) @@ -294,7 +294,7 @@ async def _create(cred_def_id): # may change for DIF comment=comment, credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(cred_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(cred_offer, ident="0")], ) cred_offer_message._thread = {"thid": cred_ex_record.thread_id} @@ -342,7 +342,7 @@ async def receive_offer( credential_preview=cred_offer_message.credential_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "schema_id": schema_id, "cred_def_id": cred_def_id, @@ -455,7 +455,7 @@ async def _create_indy(): comment=comment, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], requests_attach=[ - AttachDecorator.from_indy_dict(cred_req_result["request"], ident="0") + AttachDecorator.data_base64(cred_req_result["request"], ident="0") ], ) @@ -683,7 +683,7 @@ async def issue_credential( comment=comment, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], credentials_attach=[ - AttachDecorator.from_indy_dict(json.loads(cred_json), ident="0") + AttachDecorator.data_base64(json.loads(cred_json), ident="0") ], ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py index 70a98c4de2..db7178e896 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py @@ -93,7 +93,7 @@ def get_attachment_data( for atch in attachments: if atch.ident == attach_id: - return atch.indy_dict + return atch.base64_dict return None diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py index 151e2cbf7b..d5936d3aa8 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py @@ -122,4 +122,4 @@ def get_filter_attach_by_id(attach_id): for fmt in formats: filt_atch = get_filter_attach_by_id(fmt.attach_id) - V20CredFormat.Format.get(fmt.format).validate_filter(filt_atch.indy_dict) + V20CredFormat.Format.get(fmt.format).validate_filter(filt_atch.base64_dict) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py index 3cfce54adf..e8828125b8 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py @@ -46,7 +46,7 @@ def test_get_attachment_data(self): V20CredFormat(attach_id="abc", format_=V20CredFormat.Format.INDY) ], attachments=[ - AttachDecorator.from_indy_dict(TEST_INDY_FILTER, ident="abc") + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc") ], ) == TEST_INDY_FILTER @@ -58,7 +58,7 @@ def test_get_attachment_data(self): V20CredFormat(attach_id="abc", format_=V20CredFormat.Format.INDY) ], attachments=[ - AttachDecorator.from_indy_dict(TEST_INDY_FILTER, ident="xxx") + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="xxx") ], ) is None @@ -70,7 +70,7 @@ def test_get_attachment_data(self): V20CredFormat(attach_id="abc", format_=V20CredFormat.Format.INDY) ], attachments=[ - AttachDecorator.from_indy_dict(TEST_INDY_FILTER, ident="abc") + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc") ], ) is None diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py index 413144060d..099e6c8888 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py @@ -72,8 +72,8 @@ class TestV20CredIssue(AsyncTestCase): cred_issue = V20CredIssue( comment="Test", credentials_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=indy_cred, + AttachDecorator.data_base64( + mapping=indy_cred, ident="abc", ) ], @@ -91,13 +91,15 @@ async def test_init_type(self): ) ], credentials_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=TestV20CredIssue.indy_cred, + AttachDecorator.data_base64( + mapping=TestV20CredIssue.indy_cred, ident="abc", ) ], ) - assert cred_issue.credentials_attach[0].indy_dict == TestV20CredIssue.indy_cred + assert ( + cred_issue.credentials_attach[0].base64_dict == TestV20CredIssue.indy_cred + ) assert cred_issue.credentials_attach[0].ident # auto-generates UUID4 assert cred_issue.cred() == TestV20CredIssue.indy_cred assert cred_issue._type == DIDCommPrefix.qualify_current(CRED_20_ISSUE) @@ -134,7 +136,7 @@ async def test_make_model(self): """Test making model.""" cred_issue = V20CredIssue( comment="Test", - credentials_attach=[AttachDecorator.from_indy_dict({"hello": "world"})], + credentials_attach=[AttachDecorator.data_base64({"hello": "world"})], ) data = cred_issue.serialize() diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py index 8d0b0b408b..b06abea44f 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py @@ -53,8 +53,8 @@ class TestV20CredOffer(AsyncTestCase): ) ], offers_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=indy_offer, + AttachDecorator.data_base64( + mapping=indy_offer, ident="abc", ) ], @@ -72,14 +72,16 @@ async def test_init_type(self): ) ], offers_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=TestV20CredOffer.indy_offer, + AttachDecorator.data_base64( + mapping=TestV20CredOffer.indy_offer, ident="abc", ) ], ) assert cred_offer.credential_preview == TestV20CredOffer.preview - assert cred_offer.offers_attach[0].indy_dict == TestV20CredOffer.indy_offer + assert ( + cred_offer.offers_attach[0].base64_dict == TestV20CredOffer.indy_offer + ) assert cred_offer.offer() == TestV20CredOffer.indy_offer assert cred_offer._type == DIDCommPrefix.qualify_current(CRED_20_OFFER) @@ -109,8 +111,8 @@ def test_serialize(self): ) ], offers_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=TestV20CredOffer.indy_offer, + AttachDecorator.data_base64( + mapping=TestV20CredOffer.indy_offer, ident="abc", ) ], @@ -140,8 +142,8 @@ async def test_make_model(self): ) ], offers_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=TestV20CredOffer.indy_offer, + AttachDecorator.data_base64( + mapping=TestV20CredOffer.indy_offer, ident="abc", ) ], diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py index 14b5163e2e..2a453da868 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py @@ -40,7 +40,7 @@ async def test_init(self): ) ], filters_attach=[ - AttachDecorator.from_indy_dict(TEST_INDY_FILTER, ident="abc") + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc") ], ) assert cred_proposal.credential_preview == TEST_PREVIEW @@ -113,7 +113,7 @@ async def test_serialize(self): ) ], filters_attach=[ - AttachDecorator.from_indy_dict(TEST_INDY_FILTER, ident="abc") + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc") ], ) @@ -161,7 +161,7 @@ async def test_serialize_minimal(self): format_=V20CredFormat.Format.INDY.aries, ) ], - filters_attach=[AttachDecorator.from_indy_dict({}, ident="abc")], + filters_attach=[AttachDecorator.data_base64({}, ident="abc")], ) cred_proposal_dict = cred_proposal.serialize() @@ -199,7 +199,7 @@ async def test_make_model(self): ) ], filters_attach=[ - AttachDecorator.from_indy_dict(TEST_INDY_FILTER, ident="abc") + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc") ], ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py index 04b43f9d59..90ed1cf5a7 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py @@ -37,8 +37,8 @@ class TestV20CredRequest(AsyncTestCase): cred_req = V20CredRequest( comment="Test", requests_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=indy_cred_req, + AttachDecorator.data_base64( + mapping=indy_cred_req, ident="abc", ) ], @@ -55,14 +55,14 @@ async def test_init_type(self): ) ], requests_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=TestV20CredRequest.indy_cred_req, + AttachDecorator.data_base64( + mapping=TestV20CredRequest.indy_cred_req, ident="abc", ) ], ) assert ( - cred_request.requests_attach[0].indy_dict + cred_request.requests_attach[0].base64_dict == TestV20CredRequest.indy_cred_req ) assert cred_request.cred_request() == TestV20CredRequest.indy_cred_req @@ -91,8 +91,8 @@ async def test_serialize(self): ) ], requests_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=TestV20CredRequest.indy_cred_req, + AttachDecorator.data_base64( + mapping=TestV20CredRequest.indy_cred_req, ) ], ) @@ -120,7 +120,7 @@ async def test_make_model(self): ) ], requests_attach=[ - AttachDecorator.from_indy_dict(TestV20CredRequest.indy_cred_req) + AttachDecorator.data_base64(TestV20CredRequest.indy_cred_req) ], ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py index c9e20e0147..17d5a8cdf6 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py @@ -298,7 +298,7 @@ def _formats_filters(filt_spec: Mapping) -> Mapping: for fmt_aka in filt_spec.keys() ], "filters_attach": [ - AttachDecorator.from_indy_dict(filt_by_fmt, ident=fmt_aka) + AttachDecorator.data_base64(filt_by_fmt, ident=fmt_aka) for (fmt_aka, filt_by_fmt) in filt_spec.items() ], } diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py index 9f33bdbfe5..b2b8f9a2af 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py @@ -162,7 +162,7 @@ async def test_prepare_send(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( {"cred_def_id": CRED_DEF_ID, "schema_id": SCHEMA_ID}, ident="0" ) ], @@ -266,7 +266,7 @@ async def test_receive_proposal(self): V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY) ], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( {"cred_def_id": CRED_DEF_ID}, ident="0" ) ], @@ -304,7 +304,7 @@ async def test_create_free_offer(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict({"cred_def_id": CRED_DEF_ID}, ident="0") + AttachDecorator.data_base64({"cred_def_id": CRED_DEF_ID}, ident="0") ], ) cx_rec = V20CredExRecord( @@ -389,7 +389,7 @@ async def test_create_free_offer_attr_mismatch(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict({"cred_def_id": CRED_DEF_ID}, ident="0") + AttachDecorator.data_base64({"cred_def_id": CRED_DEF_ID}, ident="0") ], ) cx_rec = V20CredExRecord( @@ -454,7 +454,7 @@ async def test_create_bound_offer(self): cred_proposal = V20CredProposal( credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - filters_attach=[AttachDecorator.from_indy_dict({}, ident="0")], + filters_attach=[AttachDecorator.data_base64({}, ident="0")], ) cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", @@ -533,7 +533,7 @@ async def test_create_bound_offer_no_matching_sent_cred_def(self): cred_proposal = V20CredProposal( credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - filters_attach=[AttachDecorator.from_indy_dict({}, ident="0")], + filters_attach=[AttachDecorator.data_base64({}, ident="0")], ) cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", @@ -585,12 +585,12 @@ async def test_receive_offer_proposed(self): cred_proposal = V20CredProposal( credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - filters_attach=[AttachDecorator.from_indy_dict({}, ident="0")], + filters_attach=[AttachDecorator.data_base64({}, ident="0")], ) cred_offer = V20CredOffer( credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -649,7 +649,7 @@ async def test_receive_free_offer(self): cred_offer = V20CredOffer( credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -701,7 +701,7 @@ async def test_create_request(self): cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -777,7 +777,7 @@ async def test_create_request_no_cache(self): cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -832,7 +832,7 @@ async def test_create_request_bad_state(self): cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -858,7 +858,7 @@ async def test_create_request_no_offer_nonce(self): cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -892,7 +892,7 @@ async def test_receive_request(self): cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.from_indy_dict(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], ) with async_mock.patch.object( @@ -944,7 +944,7 @@ async def test_issue_credential(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -955,12 +955,12 @@ async def test_issue_credential(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.from_indy_dict(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1065,7 +1065,7 @@ async def test_issue_credential_non_revocable(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -1076,12 +1076,12 @@ async def test_issue_credential_non_revocable(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.from_indy_dict(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1164,7 +1164,7 @@ async def test_issue_credential_fills_rr(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -1175,12 +1175,12 @@ async def test_issue_credential_fills_rr(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.from_indy_dict(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1272,7 +1272,7 @@ async def test_issue_credential_request_bad_state(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -1326,7 +1326,7 @@ async def test_issue_credential_no_active_rr_no_retries(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -1337,12 +1337,12 @@ async def test_issue_credential_no_active_rr_no_retries(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.from_indy_dict(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1419,7 +1419,7 @@ async def test_issue_credential_no_active_rr_retry(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -1430,12 +1430,12 @@ async def test_issue_credential_no_active_rr_retry(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.from_indy_dict(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1516,7 +1516,7 @@ async def test_issue_credential_rr_full(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -1527,12 +1527,12 @@ async def test_issue_credential_rr_full(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.from_indy_dict(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1591,7 +1591,7 @@ async def test_receive_cred(self): cred_issue = V20CredIssue( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - credentials_attach=[AttachDecorator.from_indy_dict(indy_cred, ident="0")], + credentials_attach=[AttachDecorator.data_base64(indy_cred, ident="0")], ) with async_mock.patch.object( @@ -1645,7 +1645,7 @@ async def test_store_credential(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -1656,16 +1656,16 @@ async def test_store_credential(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.from_indy_dict(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], ) cred_issue = V20CredIssue( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - credentials_attach=[AttachDecorator.from_indy_dict(indy_cred, ident="0")], + credentials_attach=[AttachDecorator.data_base64(indy_cred, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1795,7 +1795,7 @@ async def test_store_credential_holder_store_indy_error(self): credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], filters_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -1806,16 +1806,16 @@ async def test_store_credential_holder_store_indy_error(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.from_indy_dict(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.from_indy_dict(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], ) cred_issue = V20CredIssue( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - credentials_attach=[AttachDecorator.from_indy_dict(indy_cred, ident="0")], + credentials_attach=[AttachDecorator.data_base64(indy_cred, ident="0")], ) stored_cx_rec = V20CredExRecord( diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py index e31804483e..b60dfbf580 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py @@ -141,7 +141,7 @@ def __init__( @classmethod def wrap_message(cls, message: dict) -> AttachDecorator: """Convert an aries message to an attachment decorator.""" - return AttachDecorator.from_aries_msg(message=message, ident="request-0") + return AttachDecorator.data_json(message=message, ident="request-0") def to_url(self, base_url: str = None) -> str: """ diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py index e9e03306ac..d7fa1e5998 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py @@ -156,8 +156,8 @@ class TestConfig: PRES_REQ = PresentationRequest( comment="Test", request_presentations_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=INDY_PROOF_REQ, + AttachDecorator.data_base64( + mapping=INDY_PROOF_REQ, ident=ATTACH_DECO_IDS[PRESENTATION_REQUEST], ) ], diff --git a/aries_cloudagent/protocols/present_proof/v1_0/manager.py b/aries_cloudagent/protocols/present_proof/v1_0/manager.py index a46b085b60..367f0dd33c 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/manager.py @@ -142,8 +142,8 @@ async def create_bound_request( presentation_request_message = PresentationRequest( comment=comment, request_presentations_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=indy_proof_request, + AttachDecorator.data_base64( + mapping=indy_proof_request, ident=ATTACH_DECO_IDS[PRESENTATION_REQUEST], ) ], @@ -411,8 +411,8 @@ async def create_presentation( presentation_message = Presentation( comment=comment, presentations_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=indy_proof, ident=ATTACH_DECO_IDS[PRESENTATION] + AttachDecorator.data_base64( + mapping=indy_proof, ident=ATTACH_DECO_IDS[PRESENTATION] ) ], ) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation.py index 03ea88e9e5..6ab68ccc84 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation.py @@ -56,7 +56,7 @@ def indy_proof(self, index: int = 0): (typically, list has length 1) """ - return self.presentations_attach[index].indy_dict + return self.presentations_attach[index].base64_dict class PresentationSchema(AgentMessageSchema): diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_request.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_request.py index ac87b9d04f..dc0251188e 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_request.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_request.py @@ -59,7 +59,7 @@ def indy_proof_request(self, index: int = 0): (typically, list has length 1) """ - return self.request_presentations_attach[index].indy_dict + return self.request_presentations_attach[index].base64_dict class PresentationRequestSchema(AgentMessageSchema): diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py index 4b15049826..055de62467 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py @@ -1662,8 +1662,8 @@ PRES = Presentation( comment="Test", presentations_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=INDY_PROOF, + AttachDecorator.data_base64( + mapping=INDY_PROOF, ident=ATTACH_DECO_IDS[PRESENTATION], ) ], @@ -1675,7 +1675,7 @@ class TestPresentation(TestCase): def test_init(self): """Test initializer.""" - assert PRES.presentations_attach[0].indy_dict == INDY_PROOF + assert PRES.presentations_attach[0].base64_dict == INDY_PROOF assert PRES.indy_proof(0) == INDY_PROOF def test_type(self): @@ -1689,8 +1689,8 @@ def test_deserialize(self): "@type": DIDCommPrefix.qualify_current(PRESENTATION), "comment": "Hello World", "presentations~attach": [ - AttachDecorator.from_indy_dict( - indy_dict=INDY_PROOF, + AttachDecorator.data_base64( + mapping=INDY_PROOF, ident=ATTACH_DECO_IDS[PRESENTATION], ).serialize() ], @@ -1708,8 +1708,8 @@ def test_serialize(self): assert pres_dict == { "@type": DIDCommPrefix.qualify_current(PRESENTATION), "presentations~attach": [ - AttachDecorator.from_indy_dict( - indy_dict=INDY_PROOF, + AttachDecorator.data_base64( + mapping=INDY_PROOF, ident=ATTACH_DECO_IDS[PRESENTATION], ).serialize() ], diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py index c3fd1ea6ca..0ebd8edc0d 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py @@ -68,8 +68,8 @@ PRES_REQ = PresentationRequest( comment="Test", request_presentations_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=INDY_PROOF_REQ, + AttachDecorator.data_base64( + mapping=INDY_PROOF_REQ, ident=ATTACH_DECO_IDS[PRESENTATION_REQUEST], ) ], @@ -81,7 +81,7 @@ class TestPresentationRequest(TestCase): def test_init(self): """Test initializer.""" - assert PRES_REQ.request_presentations_attach[0].indy_dict == INDY_PROOF_REQ + assert PRES_REQ.request_presentations_attach[0].base64_dict == INDY_PROOF_REQ assert PRES_REQ.indy_proof_request(0) == INDY_PROOF_REQ def test_type(self): @@ -95,8 +95,8 @@ def test_deserialize(self): "@type": DIDCommPrefix.qualify_current(PRESENTATION_REQUEST), "comment": "Hello World", "request_presentations~attach": [ - AttachDecorator.from_indy_dict( - indy_dict=INDY_PROOF_REQ, + AttachDecorator.data_base64( + mapping=INDY_PROOF_REQ, ident=ATTACH_DECO_IDS[PRESENTATION_REQUEST], ).serialize() ], @@ -114,8 +114,8 @@ def test_serialize(self): assert pres_req_dict == { "@type": DIDCommPrefix.qualify_current(PRESENTATION_REQUEST), "request_presentations~attach": [ - AttachDecorator.from_indy_dict( - indy_dict=INDY_PROOF_REQ, + AttachDecorator.data_base64( + mapping=INDY_PROOF_REQ, ident=ATTACH_DECO_IDS[PRESENTATION_REQUEST], ).serialize() ], diff --git a/aries_cloudagent/protocols/present_proof/v1_0/routes.py b/aries_cloudagent/protocols/present_proof/v1_0/routes.py index bdb3bea73c..4b49f16d83 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/routes.py @@ -730,8 +730,8 @@ async def presentation_exchange_create_request(request: web.BaseRequest): presentation_request_message = PresentationRequest( comment=comment, request_presentations_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=indy_proof_request, + AttachDecorator.data_base64( + mapping=indy_proof_request, ident=ATTACH_DECO_IDS[PRESENTATION_REQUEST], ) ], @@ -809,8 +809,8 @@ async def presentation_exchange_send_free_request(request: web.BaseRequest): presentation_request_message = PresentationRequest( comment=comment, request_presentations_attach=[ - AttachDecorator.from_indy_dict( - indy_dict=indy_proof_request, + AttachDecorator.data_base64( + mapping=indy_proof_request, ident=ATTACH_DECO_IDS[PRESENTATION_REQUEST], ) ], diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py index 75719eceac..e1d506aaaa 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py @@ -311,7 +311,7 @@ async def test_create_presentation(self): ) as mock_rr: mock_rr.from_definition = async_mock.MagicMock(return_value=more_magic_rr) - mock_attach_decorator.from_indy_dict = async_mock.MagicMock( + mock_attach_decorator.data_base64 = async_mock.MagicMock( return_value=mock_attach_decorator ) @@ -354,7 +354,7 @@ async def test_create_presentation_proof_req_non_revoc_interval_none(self): ) as mock_rr: mock_rr.from_definition = async_mock.MagicMock(return_value=more_magic_rr) - mock_attach_decorator.from_indy_dict = async_mock.MagicMock( + mock_attach_decorator.data_base64 = async_mock.MagicMock( return_value=mock_attach_decorator ) @@ -415,7 +415,7 @@ async def test_create_presentation_self_asserted(self): ) as mock_rr: mock_rr.from_definition = async_mock.MagicMock(return_value=more_magic_rr) - mock_attach_decorator.from_indy_dict = async_mock.MagicMock( + mock_attach_decorator.data_base64 = async_mock.MagicMock( return_value=mock_attach_decorator ) @@ -487,7 +487,7 @@ async def test_create_presentation_no_revocation(self): test_module, "AttachDecorator", autospec=True ) as mock_attach_decorator: - mock_attach_decorator.from_indy_dict = async_mock.MagicMock( + mock_attach_decorator.data_base64 = async_mock.MagicMock( return_value=mock_attach_decorator ) @@ -558,7 +558,7 @@ async def test_create_presentation_bad_revoc_state(self): ) as mock_rr: mock_rr.from_definition = async_mock.MagicMock(return_value=more_magic_rr) - mock_attach_decorator.from_indy_dict = async_mock.MagicMock( + mock_attach_decorator.data_base64 = async_mock.MagicMock( return_value=mock_attach_decorator ) @@ -645,7 +645,7 @@ async def test_create_presentation_multi_matching_proposal_creds_names(self): ) as mock_rr: mock_rr.from_definition = async_mock.MagicMock(return_value=more_magic_rr) - mock_attach_decorator.from_indy_dict = async_mock.MagicMock( + mock_attach_decorator.data_base64 = async_mock.MagicMock( return_value=mock_attach_decorator ) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py index f10c5f02b0..d39b110f75 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py @@ -464,7 +464,7 @@ async def test_presentation_exchange_create_request(self): mock_generate_nonce = async_mock.CoroutineMock() - mock_attach_decorator.from_indy_dict = async_mock.MagicMock( + mock_attach_decorator.data_base64 = async_mock.MagicMock( return_value=mock_attach_decorator ) mock_presentation_exchange.serialize = async_mock.MagicMock() @@ -576,7 +576,7 @@ async def test_presentation_exchange_send_free_request(self): mock_connection_record.retrieve_by_id = async_mock.CoroutineMock( return_value=mock_connection_record ) - mock_attach_decorator.from_indy_dict = async_mock.MagicMock( + mock_attach_decorator.data_base64 = async_mock.MagicMock( return_value=mock_attach_decorator ) mock_presentation_exchange.serialize = async_mock.MagicMock() @@ -680,7 +680,7 @@ async def test_presentation_exchange_send_free_request_x(self): mock_connection_record.retrieve_by_id = async_mock.CoroutineMock( return_value=mock_connection_record ) - mock_attach_decorator.from_indy_dict = async_mock.MagicMock( + mock_attach_decorator.data_base64 = async_mock.MagicMock( return_value=mock_attach_decorator ) mock_presentation_exchange.serialize = async_mock.MagicMock() From 974f019759d78eb49aca7185873ee26c023426dc Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Thu, 18 Feb 2021 11:20:39 -0800 Subject: [PATCH 052/243] Add parameterized data for schema, credential etc and check for credential receipt Signed-off-by: Ian Costanzo --- demo/bdd_support/agent_backchannel_client.py | 37 +++++++++++- demo/features/0036-issue-credential.feature | 19 +++--- .../data/cred_data_schema_driverslicense.json | 14 ++++- demo/features/data/schema_driverslicense.json | 1 + demo/features/steps/0036-issue-credential.py | 52 ++++++++-------- demo/runners/agent_container.py | 59 ++++++++++++------- 6 files changed, 117 insertions(+), 65 deletions(-) diff --git a/demo/bdd_support/agent_backchannel_client.py b/demo/bdd_support/agent_backchannel_client.py index 1629efb35a..6877ef480a 100644 --- a/demo/bdd_support/agent_backchannel_client.py +++ b/demo/bdd_support/agent_backchannel_client.py @@ -9,6 +9,7 @@ ) import json from time import sleep +import uuid from runners.agent_container import AgentContainer, create_agent_with_args from runners.support.agent import DemoAgent @@ -53,7 +54,7 @@ def run_coroutine_with_kwargs(coroutine, *args, **kwargs): ###################################################################### -# aries agent +# high level aries agent interface ###################################################################### def create_agent_container_with_args(in_args: list): return run_coroutine_with_args( @@ -112,7 +113,7 @@ def aries_container_create_schema_cred_def( def aries_container_issue_credential( the_container: AgentContainer, cred_def_id: str, - cred_attrs: dict, + cred_attrs: list, ): return run_coroutine_with_args( the_container.issue_credential, @@ -123,7 +124,7 @@ def aries_container_issue_credential( def aries_container_receive_credential( the_container: AgentContainer, cred_def_id: str, - cred_attrs: dict, + cred_attrs: list, ): return run_coroutine_with_args( the_container.receive_credential, @@ -132,6 +133,36 @@ def aries_container_receive_credential( ) +###################################################################### +# aries agent admin api interface +###################################################################### + + +###################################################################### +# general utilities +###################################################################### +def read_json_data(file_name: str): + with open("features/data/" + file_name) as data_file: + return json.load(data_file) + +def read_schema_data(schema_name: str): + return read_json_data("schema_" + schema_name + ".json") + +def read_credential_data(schema_name: str, cred_scenario_name: str): + schema_cred_data = read_json_data("cred_data_schema_" + schema_name + ".json") + cred_data = schema_cred_data[cred_scenario_name] + for attr in cred_data["attributes"]: + if attr["value"] == "@uuid": + attr["value"] = str(uuid.uuid4()) + return cred_data["attributes"] + +def read_proof_req_data(proof_req_name: str): + return read_json_data("proof_request_" + proof_req_name + ".json") + +def read_presentation_data(presentation_name: str): + return read_json_data("presentation_" + presentation_name + ".json") + + ###################################################################### # probably obsolete ... ###################################################################### diff --git a/demo/features/0036-issue-credential.feature b/demo/features/0036-issue-credential.feature index 27f2cd304d..fdf79de5b8 100644 --- a/demo/features/0036-issue-credential.feature +++ b/demo/features/0036-issue-credential.feature @@ -7,17 +7,14 @@ Feature: RFC 0036 Aries agent issue credential | Acme | issuer | | | Bob | holder | | And "Acme" and "Bob" have an existing connection - And "Acme" is ready to issue a credential - When "Acme" offers a credential - And "Bob" requests the credential - And "Acme" issues the credential - And "Bob" acknowledges the credential issue + And "Acme" is ready to issue a credential for + When "Acme" offers a credential with data Then "Bob" has the credential issued Examples: - | Acme_capabilities | Bob_capabilities | - | --public-did | | - | --public-did --did-exchange | --did-exchange | - | --public-did --mediation | --mediation | - | --public-did --multitenant | --multitenant | - | --public-did --mediation --multitenant | --mediation --multitenant | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | + | --public-did | | driverslicense | Data_DL_NormalizedValues | + | --public-did --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | + | --public-did --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | + | --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | + | --public-did --mediation --multitenant | --mediation --multitenant | driverslicense | Data_DL_NormalizedValues | diff --git a/demo/features/data/cred_data_schema_driverslicense.json b/demo/features/data/cred_data_schema_driverslicense.json index cc9dd605ca..a312e044dc 100644 --- a/demo/features/data/cred_data_schema_driverslicense.json +++ b/demo/features/data/cred_data_schema_driverslicense.json @@ -4,6 +4,10 @@ "schema_name":"Schema_DriversLicense", "schema_version":"1.0.1", "attributes":[ + { + "name":"id", + "value":"@uuid" + }, { "name":"address", "value":"947 this street, Kingston Ontario Canada, K9O 3R5" @@ -22,11 +26,15 @@ } ] }, - "Data_HealthID_NormalizedValues":{ + "Data_DL_NormalizedValues":{ "cred_name":"Data_HealthID_NormalizedValues", "schema_name":"Schema_DriversLicense", "schema_version":"1.0.1", "attributes":[ + { + "name":"id", + "value":"@uuid" + }, { "name":"address", "value":"947 this street, Kingston Ontario Canada, K9O 3R5" @@ -50,6 +58,10 @@ "schema_name":"Schema_DriversLicense", "schema_version":"1.0.1", "attributes":[ + { + "name":"id", + "value":"@uuid" + }, { "name":"address", "value":"9" diff --git a/demo/features/data/schema_driverslicense.json b/demo/features/data/schema_driverslicense.json index 4c2c548603..b9ad2d6306 100644 --- a/demo/features/data/schema_driverslicense.json +++ b/demo/features/data/schema_driverslicense.json @@ -3,6 +3,7 @@ "schema_name":"Schema_DriversLicense", "schema_version":"1.0.1", "attributes":[ + "id", "address", "DL_number", "expiry", diff --git a/demo/features/steps/0036-issue-credential.py b/demo/features/steps/0036-issue-credential.py index ed75680143..3e32ccfe7d 100644 --- a/demo/features/steps/0036-issue-credential.py +++ b/demo/features/steps/0036-issue-credential.py @@ -13,6 +13,10 @@ aries_container_create_schema_cred_def, aries_container_issue_credential, aries_container_receive_credential, + read_schema_data, + read_credential_data, + read_proof_req_data, + read_presentation_data, agent_backchannel_GET, agent_backchannel_POST, expected_agent_state @@ -43,29 +47,33 @@ } -@given('"{issuer}" is ready to issue a credential') -def step_impl(context, issuer): +@given('"{issuer}" is ready to issue a credential for {schema_name}') +def step_impl(context, issuer, schema_name): agent = context.active_agents[issuer] + schema_info = read_schema_data(schema_name) cred_def_id = aries_container_create_schema_cred_def( agent['agent'], - SCHEMA_TEMPLATE["schema_name"], - SCHEMA_TEMPLATE["attributes"], + schema_info["schema"]["schema_name"], + schema_info["schema"]["attributes"], ) + context.schema_name = schema_name context.cred_def_id = cred_def_id - context.cred_attrs = CREDENTIAL_ATTR_TEMPLATE -@when('"{issuer}" offers a credential') -def step_impl(context, issuer): +@when('"{issuer}" offers a credential with data {credential_data}') +def step_impl(context, issuer, credential_data): agent = context.active_agents[issuer] + cred_attrs = read_credential_data(context.schema_name, credential_data) aries_container_issue_credential( agent['agent'], context.cred_def_id, - context.cred_attrs, + cred_attrs, ) + + context.cred_attrs = cred_attrs # TODO Check the issuers State #assert resp_json["state"] == "offer-sent" @@ -74,28 +82,16 @@ def step_impl(context, issuer): #assert expected_agent_state(context.holder_url, "issue-credential", context.cred_thread_id, "offer-received") -@when('"{holder}" requests the credential') -def step_impl(context, holder): - # TODO - pass - - -@when('"{issuer}" issues the credential') -def step_impl(context, issuer): - # TODO - pass - - -@when('"{holder}" acknowledges the credential issue') -def step_impl(context, holder): - # TODO - pass - - @then('"{holder}" has the credential issued') def step_impl(context, holder): agent = context.active_agents[holder] - # TODO check the received credential status - sleep(5) + cred_def_id = context.cred_def_id + cred_attrs = context.cred_attrs + + # check the received credential status (up to 10 seconds) + for i in range(10): + if aries_container_receive_credential(agent['agent'], cred_def_id, cred_attrs): + return + assert False diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index c4e1519308..ad3ab5ff39 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -54,15 +54,18 @@ def __init__( prefix="Aries", extra_args=[] if no_auto - else ["--auto-accept-invites", "--auto-accept-requests"], + else [ + "--auto-accept-invites", + "--auto-accept-requests", + "--auto-store-credential", + ], **kwargs, ) self.connection_id = None self._connection_ready = None self.cred_state = {} - # TODO define a dict to hold credential attributes - # based on cred_def_id - self.cred_attrs = {} + # define a dict to hold credential attributes + self.last_credential_received = None async def detect_connection(self): await self._connection_ready @@ -108,6 +111,7 @@ async def handle_issue_credential_v2_0(self, message): self.cred_state[cred_ex_id] = state self.log(f"Credential: state = {state}, cred_ex_id = {cred_ex_id}") + print(f"Credential: state = {state}, cred_ex_id = {cred_ex_id}") if state == "request-received": log_status("#17 Issue credential to X") @@ -122,14 +126,17 @@ async def handle_issue_credential_v2_0(self, message): f"/issue-credential-2.0/records/{cred_ex_id}/send-request" ) elif state == "done": - cred_id = message["cred_id_stored"] - self.log(f"Stored credential {cred_id} in wallet") - log_status(f"#18.1 Stored credential {cred_id} in wallet") - cred = await self.admin_GET(f"/credential/{cred_id}") - log_json(cred, label="Credential details:") - self.log("credential_id", cred_id) - self.log("cred_def_id", cred["cred_def_id"]) - self.log("schema_id", cred["schema_id"]) + if "cred_id_stored" in message: + cred_id = message["cred_id_stored"] + self.log(f"Stored credential {cred_id} in wallet") + log_status(f"#18.1 Stored credential {cred_id} in wallet") + cred = await self.admin_GET(f"/credential/{cred_id}") + log_json(cred, label="Credential details:") + self.log("credential_id", cred_id) + self.log("cred_def_id", cred["cred_def_id"]) + self.log("schema_id", cred["schema_id"]) + # track last successfully received credential + self.last_credential_received = cred async def handle_issue_credential_v2_0_indy(self, message): rev_reg_id = message.get("rev_reg_id") @@ -329,19 +336,13 @@ async def create_schema_and_cred_def( async def issue_credential( self, cred_def_id: str, - cred_attrs: dict, + cred_attrs: list, ): log_status("#13 Issue credential offer to X") - # TODO define attributes to send for credential - self.agent.cred_attrs[cred_def_id] = cred_attrs - cred_preview = { "@type": CRED_PREVIEW_TYPE, - "attributes": [ - {"name": n, "value": v} - for (n, v) in self.agent.cred_attrs[cred_def_id].items() - ], + "attributes": cred_attrs, } offer_request = { "connection_id": self.agent.connection_id, @@ -360,9 +361,23 @@ async def issue_credential( async def receive_credential( self, cred_def_id: str, - cred_attrs: dict, + cred_attrs: list, ): - # TODO + await asyncio.sleep(1.0) + + # check if the requested credential matches out last received + if not self.agent.last_credential_received: + # no credential received + print("No credential received") + return False + + if cred_def_id != self.agent.last_credential_received["cred_def_id"]: + # wrong credential definition + print("Wrong credential definition id") + return False + + # TODO check if attribute values match those of issued credential + return True async def terminate(self): From b86cee8216d78720cc196f1d806417519806de45 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 18 Feb 2021 20:16:54 +0000 Subject: [PATCH 053/243] work in progress: rename attachment decorator data methods, properties Signed-off-by: sklump --- .../messaging/decorators/attach_decorator.py | 20 ++++--- .../decorators/tests/test_attach_decorator.py | 59 +++++++++++++------ .../v1_0/messages/credential_issue.py | 2 +- .../v1_0/messages/credential_offer.py | 2 +- .../v1_0/messages/credential_request.py | 2 +- .../messages/tests/test_credential_issue.py | 2 +- .../messages/tests/test_credential_offer.py | 2 +- .../messages/tests/test_credential_request.py | 2 +- .../v2_0/messages/cred_format.py | 2 +- .../v2_0/messages/cred_proposal.py | 2 +- .../v2_0/messages/tests/test_cred_issue.py | 2 +- .../v2_0/messages/tests/test_cred_offer.py | 2 +- .../v2_0/messages/tests/test_cred_request.py | 2 +- .../out_of_band/v1_0/messages/invitation.py | 2 +- .../v1_0/messages/presentation.py | 2 +- .../v1_0/messages/presentation_request.py | 2 +- .../v1_0/messages/tests/test_presentation.py | 2 +- .../tests/test_presentation_request.py | 2 +- 18 files changed, 70 insertions(+), 41 deletions(-) diff --git a/aries_cloudagent/messaging/decorators/attach_decorator.py b/aries_cloudagent/messaging/decorators/attach_decorator.py index bda5518f74..e0ecfcb62c 100644 --- a/aries_cloudagent/messaging/decorators/attach_decorator.py +++ b/aries_cloudagent/messaging/decorators/attach_decorator.py @@ -546,15 +546,19 @@ def __init__( self.data = data @property - def base64_dict(self): + def content(self): """ - Return data structure base64-encoded in attachment. + Return attachment content. - Returns: data attachment's base64-encoded dict, b64-decoded and json-loaded + Returns: data attachment's encoded dict, decoded if necessary and json-loaded """ - assert hasattr(self.data, "base64_") - return json.loads(b64_to_bytes(self.data.base64)) + if hasattr(self.data, "base64_"): + return json.loads(b64_to_bytes(self.data.base64)) + elif hasattr(self.data, "json_"): + return self.data.json + else: + raise ValueError("Not supported") @classmethod def data_base64( @@ -597,7 +601,7 @@ def data_base64( @classmethod def data_json( cls, - message: dict, + mapping: dict, *, ident: str = None, description: str = None, @@ -612,7 +616,7 @@ def data_json( it as data; mark `application/json` MIME type. Args: - message: aries message (dict) data structure + mapping: (dict) data structure; e.g., Aries message ident: optional attachment identifier (default random UUID4) description: optional attachment description filename: optional attachment filename @@ -627,7 +631,7 @@ def data_json( mime_type="application/json", lastmod_time=lastmod_time, byte_count=byte_count, - data=AttachDecoratorData(json_=message), + data=AttachDecoratorData(json_=mapping), ) diff --git a/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py b/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py index b0754f30e4..5ff305e3ce 100644 --- a/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py +++ b/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py @@ -305,28 +305,50 @@ def test_serialize_load_appended_links(self): assert decorator.description == DESCRIPTION assert decorator.data == DATA_LINKS - def test_base64_dict(self): - deco_indy = AttachDecorator.data_base64( + def test_content(self): + deco_b64 = AttachDecorator.data_base64( mapping=INDY_CRED, ident=IDENT, description=DESCRIPTION, ) - assert deco_indy.mime_type == "application/json" - assert hasattr(deco_indy.data, "base64_") - assert deco_indy.data.base64 is not None - assert deco_indy.data.json is None - assert deco_indy.data.links is None - assert deco_indy.data.sha256 is None - assert deco_indy.base64_dict == INDY_CRED - assert deco_indy.ident == IDENT - assert deco_indy.description == DESCRIPTION - - deco_indy_auto_id = AttachDecorator.data_base64(mapping=INDY_CRED) - assert deco_indy_auto_id.ident + assert deco_b64.mime_type == "application/json" + assert hasattr(deco_b64.data, "base64_") + assert deco_b64.data.base64 is not None + assert deco_b64.data.json is None + assert deco_b64.data.links is None + assert deco_b64.data.sha256 is None + assert deco_b64.content == INDY_CRED + assert deco_b64.ident == IDENT + assert deco_b64.description == DESCRIPTION + + deco_b64_auto_id = AttachDecorator.data_base64(mapping=INDY_CRED) + assert deco_b64_auto_id.ident # cover AttachDecoratorData equality operator plain_json = AttachDecoratorData(json_=json.dumps({"sample": "data"})) - assert deco_indy.data != plain_json + assert deco_b64.data != plain_json + + deco_json = AttachDecorator.data_json( + mapping=INDY_CRED, + ident=IDENT, + description=DESCRIPTION, + ) + assert deco_json.mime_type == "application/json" + assert hasattr(deco_json.data, "json_") + assert deco_json.data.base64 is None + assert deco_json.data.json is not None + assert deco_json.data.links is None + assert deco_json.data.sha256 is None + assert deco_json.content == INDY_CRED + assert deco_json.ident == IDENT + assert deco_json.description == DESCRIPTION + + deco_json_auto_id = AttachDecorator.data_json(mapping=INDY_CRED) + assert deco_json_auto_id.ident + + # cover AttachDecoratorData equality operator + plain_json = AttachDecoratorData(json_=json.dumps({"sample": "data"})) + assert deco_json.data == plain_json lynx_str = AttachDecoratorData(links_="https://en.wikipedia.org/wiki/Lynx") lynx_list = AttachDecoratorData(links_=["https://en.wikipedia.org/wiki/Lynx"]) @@ -336,9 +358,12 @@ def test_base64_dict(self): assert lynx_str != links assert links != DATA_LINKS # has sha256 + with pytest.raises(ValueError): + AttachDecorator(data=lynx_str).content + def test_data_json(self): deco_aries = AttachDecorator.data_json( - message=INDY_CRED, + mapping=INDY_CRED, ident=IDENT, description=DESCRIPTION, ) @@ -352,7 +377,7 @@ def test_data_json(self): assert deco_aries.ident == IDENT assert deco_aries.description == DESCRIPTION - deco_aries_auto_id = AttachDecorator.data_json(message=INDY_CRED) + deco_aries_auto_id = AttachDecorator.data_json(mapping=INDY_CRED) assert deco_aries_auto_id.ident diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_issue.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_issue.py index 2db7e29ba2..23b83a82a6 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_issue.py @@ -56,7 +56,7 @@ def indy_credential(self, index: int = 0): (typically, list has length 1) """ - return self.credentials_attach[index].base64_dict + return self.credentials_attach[index].content @classmethod def wrap_indy_credential(cls, indy_cred: dict) -> AttachDecorator: diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_offer.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_offer.py index bd0f1df527..84ec5d2f37 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_offer.py @@ -60,7 +60,7 @@ def indy_offer(self, index: int = 0) -> dict: (typically, list has length 1) """ - return self.offers_attach[index].base64_dict + return self.offers_attach[index].content @classmethod def wrap_indy_offer(cls, indy_offer: dict) -> AttachDecorator: diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_request.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_request.py index a7a58aa2f9..d15d1db551 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_request.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_request.py @@ -57,7 +57,7 @@ def indy_cred_req(self, index: int = 0): (typically, list has length 1) """ - return self.requests_attach[index].base64_dict + return self.requests_attach[index].content @classmethod def wrap_indy_cred_req(cls, indy_cred_req: dict) -> AttachDecorator: diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_issue.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_issue.py index e75ddd25c2..ff408a1458 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_issue.py @@ -88,7 +88,7 @@ def test_init(self): ) ], ) - assert credential_issue.credentials_attach[0].base64_dict == self.indy_cred + assert credential_issue.credentials_attach[0].content == self.indy_cred assert credential_issue.credentials_attach[0].ident # auto-generates UUID4 assert credential_issue.indy_credential(0) == self.indy_cred diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_offer.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_offer.py index cc17daba69..87a820c64c 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_offer.py @@ -64,7 +64,7 @@ def test_init(self): ], ) assert credential_offer.credential_preview == self.preview - assert credential_offer.offers_attach[0].base64_dict == self.indy_offer + assert credential_offer.offers_attach[0].content == self.indy_offer assert credential_offer.indy_offer(0) == self.indy_offer def test_type(self): diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_request.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_request.py index 0d5d1a54a0..d8ddce8f49 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_request.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/tests/test_credential_request.py @@ -53,7 +53,7 @@ def test_init(self): ) ], ) - assert credential_request.requests_attach[0].mapping == self.indy_cred_req + assert credential_request.requests_attach[0].content == self.indy_cred_req assert credential_request.indy_cred_req(0) == self.indy_cred_req def test_type(self): diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py index db7178e896..335ddf529e 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py @@ -93,7 +93,7 @@ def get_attachment_data( for atch in attachments: if atch.ident == attach_id: - return atch.base64_dict + return atch.content return None diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py index d5936d3aa8..e0ff332b76 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py @@ -122,4 +122,4 @@ def get_filter_attach_by_id(attach_id): for fmt in formats: filt_atch = get_filter_attach_by_id(fmt.attach_id) - V20CredFormat.Format.get(fmt.format).validate_filter(filt_atch.base64_dict) + V20CredFormat.Format.get(fmt.format).validate_filter(filt_atch.content) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py index 099e6c8888..ab4c11e20b 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py @@ -98,7 +98,7 @@ async def test_init_type(self): ], ) assert ( - cred_issue.credentials_attach[0].base64_dict == TestV20CredIssue.indy_cred + cred_issue.credentials_attach[0].content == TestV20CredIssue.indy_cred ) assert cred_issue.credentials_attach[0].ident # auto-generates UUID4 assert cred_issue.cred() == TestV20CredIssue.indy_cred diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py index b06abea44f..e513c11e7e 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py @@ -80,7 +80,7 @@ async def test_init_type(self): ) assert cred_offer.credential_preview == TestV20CredOffer.preview assert ( - cred_offer.offers_attach[0].base64_dict == TestV20CredOffer.indy_offer + cred_offer.offers_attach[0].content == TestV20CredOffer.indy_offer ) assert cred_offer.offer() == TestV20CredOffer.indy_offer assert cred_offer._type == DIDCommPrefix.qualify_current(CRED_20_OFFER) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py index 90ed1cf5a7..27e0fd66fe 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py @@ -62,7 +62,7 @@ async def test_init_type(self): ], ) assert ( - cred_request.requests_attach[0].base64_dict + cred_request.requests_attach[0].content == TestV20CredRequest.indy_cred_req ) assert cred_request.cred_request() == TestV20CredRequest.indy_cred_req diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py index b60dfbf580..d7e536b380 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py @@ -141,7 +141,7 @@ def __init__( @classmethod def wrap_message(cls, message: dict) -> AttachDecorator: """Convert an aries message to an attachment decorator.""" - return AttachDecorator.data_json(message=message, ident="request-0") + return AttachDecorator.data_json(mapping=message, ident="request-0") def to_url(self, base_url: str = None) -> str: """ diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation.py index 6ab68ccc84..b0cdea3bfd 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation.py @@ -56,7 +56,7 @@ def indy_proof(self, index: int = 0): (typically, list has length 1) """ - return self.presentations_attach[index].base64_dict + return self.presentations_attach[index].content class PresentationSchema(AgentMessageSchema): diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_request.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_request.py index dc0251188e..8f91bfe12a 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_request.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_request.py @@ -59,7 +59,7 @@ def indy_proof_request(self, index: int = 0): (typically, list has length 1) """ - return self.request_presentations_attach[index].base64_dict + return self.request_presentations_attach[index].content class PresentationRequestSchema(AgentMessageSchema): diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py index 055de62467..58dec88d4e 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py @@ -1675,7 +1675,7 @@ class TestPresentation(TestCase): def test_init(self): """Test initializer.""" - assert PRES.presentations_attach[0].base64_dict == INDY_PROOF + assert PRES.presentations_attach[0].content == INDY_PROOF assert PRES.indy_proof(0) == INDY_PROOF def test_type(self): diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py index 0ebd8edc0d..8e7f650033 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py @@ -81,7 +81,7 @@ class TestPresentationRequest(TestCase): def test_init(self): """Test initializer.""" - assert PRES_REQ.request_presentations_attach[0].base64_dict == INDY_PROOF_REQ + assert PRES_REQ.request_presentations_attach[0].content == INDY_PROOF_REQ assert PRES_REQ.indy_proof_request(0) == INDY_PROOF_REQ def test_type(self): From 49eaaa90d97882d1c1e19ece1817bd6acbf5e033 Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Thu, 18 Feb 2021 15:05:46 -0800 Subject: [PATCH 054/243] Add note about mediation and unit tests Signed-off-by: Stephen Curran --- CONTRIBUTING.md | 5 +++-- README.md | 29 +++++++++++------------------ 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b991cf48a5..0b6eed3018 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,8 +6,9 @@ For significant changes, please open an issue first to discuss the proposed chan (If you are new to GitHub, you might start with a [basic tutorial](https://help.github.com/articles/set-up-git) and check out a more detailed guide to [pull requests](https://help.github.com/articles/using-pull-requests/).) -Pull requests will be evaluated by the repository guardians on a schedule and if deemed beneficial will be committed to the `main` branch. Pull requests should have a descriptive name and include an summary of all changes made in the pull request description. +Pull requests will be evaluated by the repository guardians on a schedule and if deemed beneficial will be committed to the `main` branch. Pull requests should have a descriptive name, include an summary of all changes made in the pull request description, and include unit tests that provide good coverage of the feature or fix. A Continuous Integration (CI) pipeline is executed on all PRs before review and contributors are expected to address all CI issues identified. Where appropriate, PRs that impact the +end-user and developer demos in the repo should include updates or extensions to those demos to cover the new capabilities. If you would like to propose a significant change, please open an issue first to discuss the work with the community. -All contributors retain the original copyright to their stuff, but by contributing to this project, you grant a world-wide, royalty-free, perpetual, irrevocable, non-exclusive, transferable license to all users **under the terms of the license under which this project is distributed.** +All contributors retain the original copyright to their stuff, but by contributing to this project, you grant a world-wide, royalty-free, perpetual, irrevocable, non-exclusive, transferable license to all users **under the terms of the [license](./LICENSE) under which this project is distributed.** diff --git a/README.md b/README.md index 2e65e464c6..ea1a65b92a 100644 --- a/README.md +++ b/README.md @@ -12,29 +12,27 @@ Hyperledger Aries Cloud Agent Python (ACA-Py) is a foundation for building Verifiable Credential (VC) ecosystems. It operates in the second and third layers of the [Trust Over IP framework (PDF)](https://trustoverip.org/wp-content/uploads/sites/98/2020/05/toip_050520_primer.pdf) using [DIDComm messaging](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0005-didcomm) and [Hyperledger Aries](https://www.hyperledger.org/use/aries) protocols. The "cloud" in the name means that ACA-Py runs on servers (cloud, enterprise, IoT devices, and so forth), but is not designed to run on mobile devices. -ACA-Py is built on the Aries concepts and features that make up [Aries Interop Profile (AIP) 1.0](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0302-aries-interop-profile), as well as most of the protocols that will be in [AIP 2.0](https://github.com/hyperledger/aries-rfcs/pull/579). [ACA-Py’s supported Aries protocols](https://github.com/hyperledger/aries-cloudagent-python/blob/main/SupportedRFCs.md) include, most importantly, protocols for issuing, verifying, and holding VCs that work with a [Hyperledger Indy](https://github.com/hyperledger/indy-sdk) distributed ledger and the Indy "AnonCreds" credential format. Contributors are actively working on adding support for other ToIP Layer 1 DID Utilities, and for other VC formats. +ACA-Py is built on the Aries concepts and features that make up [Aries Interop Profile (AIP) 1.0](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0302-aries-interop-profile), as well as many of the protocols that will be in [AIP 2.0](https://github.com/hyperledger/aries-rfcs/pull/579). [ACA-Py’s supported Aries protocols](https://github.com/hyperledger/aries-cloudagent-python/blob/main/SupportedRFCs.md) include, most importantly, protocols for issuing, verifying, and holding VCs that work with a [Hyperledger Indy](https://github.com/hyperledger/indy-sdk) distributed ledger and the Indy "AnonCreds" credential format. Contributors are actively working on adding support for other ToIP Layer 1 DID Utilities, and for other VC formats. To use ACA-Py you create a business logic controller that "talks to" ACA-Py (sending HTTP requests and receiving webhook notifications), and ACA-Py handles the rest. That controller can be built in any language that supports making and receiving HTTP requests; knowledge of Python is not needed. Together, this means you can focus on building VC solutions using familiar web development technologies, instead of having to learn the nuts and bolts of low-level cryptography and Trust over IP-type protocols. -ACA-Py also supports "multi-tenant" scenarios. In these scenarios, one scalable instance of ACA-Py uses one scalable database, and is capable of managing separate secure storage (for private keys, DIDs, credentials, etc.) for many different actors. This enables "issuer-as-a-service", where an enterprise may have many VC issuers, each with different identifiers, using the same instance of ACA-Py to interact with VC holders as required. Likewise, an ACA-Py instance could be a "cloud wallet" for many holders (e.g. people or organizations) that, for whatever reason, cannot use a mobile device for a wallet. +ACA-Py supports "multi-tenant" scenarios. In these scenarios, one (scalable) instance of ACA-Py uses one database instance, and are together capable of managing separate secure storage (for private keys, DIDs, credentials, etc.) for many different actors. This enables (for example) an "issuer-as-a-service", where an enterprise may have many VC issuers, each with different identifiers, using the same instance of ACA-Py to interact with VC holders as required. Likewise, an ACA-Py instance could be a "cloud wallet" for many holders (e.g. people or organizations) that, for whatever reason, cannot use a mobile device for a wallet. Learn more about multi-tenant deployments [here](./Multitenancy.md). -ACA-Py supports deployment in scaled environments such as in Kubernetes environments where ACA-Py and its storage components can be horizontally scaled as needed to handle the load. +Startup options allow the use of an ACA-Py as an Aries [mediator](https://github.com/hyperledger/aries-rfcs/tree/master/concepts/0046-mediators-and-relays#summary) using core Aries protocols to coordinate its mediation role. Such an ACA-Py instance receives, stores and forwards messages to Aries agents that (for example) lack an addressable endpoint on the Internet such as a mobile wallet. A live instance of a public mediator based on ACA-Py is available [here](https://indicio-tech.github.io/mediator/) from Indicio Technologies. Learn more about deploying a mediator [here](./Mediation.md). +ACA-Py supports deployments in scaled environments such as in Kubernetes environments where ACA-Py and its storage components can be horizontally scaled as needed to handle the load. ## Example Uses The business logic you use with ACA-Py is limited only by your imagination. Possible applications include: - - -* An interface to a legacy system to issue verifiable credentials -* An authentication service based on the presentation of verifiable credential proofs -* An enterprise wallet to hold and present verifiable credentials about that enterprise -* A user interface for a person to use a wallet not stored on a mobile device -* An application embedded in an IoT device, capable of issuing verifiable credentials about collected data -* A persistent connection to other agents that enables secure messaging and notifications -* Custom code to implement a new service. - +* An interface to a legacy system to issue verifiable credentials +* An authentication service based on the presentation of verifiable credential proofs +* An enterprise wallet to hold and present verifiable credentials about that enterprise +* A user interface for a person to use a wallet not stored on a mobile device +* An application embedded in an IoT device, capable of issuing verifiable credentials about collected data +* A persistent connection to other agents that enables secure messaging and notifications +* Custom code to implement a new service. ## Understanding the Architecture @@ -42,7 +40,6 @@ There is an [architectural deep dive webinar](https://www.youtube.com/watch?v=FX ![drawing](./aca-py_architecture.png) - ## Installation and Usage An ["install and go" page for developers](https://github.com/hyperledger/aries-cloudagent-python/blob/main/DevReadMe.md) is available if you are comfortable with Trust over IP and Aries concepts. ACA-Py can be run with Docker without installation (highly recommended), or can be installed[ from PyPi](https://pypi.org/project/aries-cloudagent/). In the [/demo directory](https://github.com/hyperledger/aries-cloudagent-python/tree/main/demo) there is a full set of demos for developers to use in getting started, and the [demo read me](https://github.com/hyperledger/aries-cloudagent-python/blob/main/demo/README.md) is a great starting point for developers to use an "in-browser" approach to run a zero-install example. The[ Read the Docs](https://aries-cloud-agent-python.readthedocs.io/en/latest/) overview is also a way to reference the modules and APIs that make up an ACA-Py instance. @@ -51,7 +48,6 @@ For those new to SSI, Indy and Aries there is a[ Getting Started Guide](https:// Finally, if you’re not sure where your focus should be—building apps? Aries? Indy? Indy’s Blockchain? Ursa?—then the ["What should I work on?" document](https://github.com/hyperledger/aries-cloudagent-python/blob/main/docs/GettingStartedAriesDev/IndyAriesDevOptions.md) is a good starting point. It goes through the technical stack and shows how the projects fit together, so you can decide where you want to focus your efforts. - ## About The API The [overview of ACA-Py’s API](https://github.com/hyperledger/aries-cloudagent-python/blob/main/AdminAPI.md) is a great starting place for learning about the API. @@ -60,17 +56,14 @@ An ACA-Py instance puts together an OpenAPI-documented REST interface based on t Technical note: the administrative API exposed by the agent for the controller to use must be protected with an API key (using the --admin-api-key command line arg) or deliberately left unsecured using the --admin-insecure-mode command line arg. The latter should not be used other than in development if the API is not otherwise secured. - ## Credit The initial implementation of ACA-Py was developed by the Government of British Columbia’s Digital Trust Team in Canada. To learn more about what’s happening with decentralized identity and digital trust in British Columbia, a new website will be launching in March 2021 and the link will be made available here. - ## Contributing Pull requests are welcome! Please read our [contributions guide](https://github.com/hyperledger/aries-cloudagent-python/blob/main/CONTRIBUTING.md) and submit your PRs. We enforce [developer certificate of origin](https://developercertificate.org/) (DCO) commit signing — [guidance](https://github.com/apps/dco) on this is available. We also welcome issues submitted about problems you encounter in using ACA-Py. - ## License [Apache License Version 2.0](https://github.com/hyperledger/aries-cloudagent-python/blob/main/LICENSE) From 91348b2186cf0bac0724e059bac69acbac019f7f Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Thu, 18 Feb 2021 15:51:26 -0800 Subject: [PATCH 055/243] Add support for proof requests Signed-off-by: Ian Costanzo --- demo/bdd_support/agent_backchannel_client.py | 29 ++- demo/features/0037-present-proof.feature | 23 +++ demo/features/steps/0036-issue-credential.py | 35 +--- demo/features/steps/0037-present-proof.py | 47 +++++ demo/features/steps/0160-connection.py | 194 ------------------- demo/runners/agent_container.py | 147 ++++++++++++-- 6 files changed, 237 insertions(+), 238 deletions(-) create mode 100644 demo/features/0037-present-proof.feature create mode 100644 demo/features/steps/0037-present-proof.py diff --git a/demo/bdd_support/agent_backchannel_client.py b/demo/bdd_support/agent_backchannel_client.py index 6877ef480a..2a6e9f323e 100644 --- a/demo/bdd_support/agent_backchannel_client.py +++ b/demo/bdd_support/agent_backchannel_client.py @@ -101,13 +101,15 @@ def aries_container_detect_connection( def aries_container_create_schema_cred_def( the_container: AgentContainer, - schema_name: str, - schema_attrs: list, + schema_name: str, + schema_attrs: list, + version: str = None, ): - return run_coroutine_with_args( + return run_coroutine_with_kwargs( the_container.create_schema_and_cred_def, schema_name, schema_attrs, + version=version, ) def aries_container_issue_credential( @@ -132,6 +134,24 @@ def aries_container_receive_credential( cred_attrs, ) +def aries_container_request_proof( + the_container: AgentContainer, + proof_request: dict, +): + return run_coroutine_with_args( + the_container.request_proof, + proof_request, + ) + +def aries_container_verify_proof( + the_container: AgentContainer, + proof_request: dict, +): + return run_coroutine_with_args( + the_container.verify_proof, + proof_request, + ) + ###################################################################### # aries agent admin api interface @@ -157,7 +177,8 @@ def read_credential_data(schema_name: str, cred_scenario_name: str): return cred_data["attributes"] def read_proof_req_data(proof_req_name: str): - return read_json_data("proof_request_" + proof_req_name + ".json") + proof_request_info = read_json_data("proof_request_" + proof_req_name + ".json") + return proof_request_info["presentation_proposal"] def read_presentation_data(presentation_name: str): return read_json_data("presentation_" + presentation_name + ".json") diff --git a/demo/features/0037-present-proof.feature b/demo/features/0037-present-proof.feature new file mode 100644 index 0000000000..88774b456a --- /dev/null +++ b/demo/features/0037-present-proof.feature @@ -0,0 +1,23 @@ +Feature: RFC 0037 Aries agent present proof + + @T001-AIP10-RFC0037 @P1 @critical @AcceptanceTest @Indy @RFC0037 + Scenario Outline: Present Proof where the prover does not propose a presentation of the proof and is acknowledged + Given "3" agents + | name | role | capabilities | + | Acme | issuer | | + | Faber | verifier | | + | Bob | prover | | + And "" and "Bob" have an existing connection + And "Bob" has an issued credential from + And "Faber" and "Bob" have an existing connection + When "Faber" sends a request for proof presentation to "Bob" + Then "Faber" has the proof verified + + Examples: + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | + | Acme | --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Faber | --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Acme | --public-did --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Acme | --public-did --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Acme | --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Acme | --public-did --mediation --multitenant | --mediation --multitenant | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | diff --git a/demo/features/steps/0036-issue-credential.py b/demo/features/steps/0036-issue-credential.py index 3e32ccfe7d..3893295d5c 100644 --- a/demo/features/steps/0036-issue-credential.py +++ b/demo/features/steps/0036-issue-credential.py @@ -5,18 +5,11 @@ import time from bdd_support.agent_backchannel_client import ( - create_agent_container_with_args, - aries_container_initialize, - aries_container_generate_invitation, - aries_container_receive_invitation, - aries_container_detect_connection, aries_container_create_schema_cred_def, aries_container_issue_credential, aries_container_receive_credential, read_schema_data, read_credential_data, - read_proof_req_data, - read_presentation_data, agent_backchannel_GET, agent_backchannel_POST, expected_agent_state @@ -28,25 +21,6 @@ # Given "Acme" and "Bob" have an existing connection -SCHEMA_TEMPLATE = { - "schema_name": "test_schema", - "schema_version": "1.0.0", - "attributes": ["attr_1","attr_2","attr_3"], -} - -CRED_DEF_TEMPLATE = { - "support_revocation": False, - "schema_id": "", - "tag": "default" -} - -CREDENTIAL_ATTR_TEMPLATE = { - "attr_1": "value_1", - "attr_2": "value_2", - "attr_3": "value_3", -} - - @given('"{issuer}" is ready to issue a credential for {schema_name}') def step_impl(context, issuer, schema_name): agent = context.active_agents[issuer] @@ -56,6 +30,7 @@ def step_impl(context, issuer, schema_name): agent['agent'], schema_info["schema"]["schema_name"], schema_info["schema"]["attributes"], + version=schema_info["schema"]["schema_version"], ) context.schema_name = schema_name @@ -95,3 +70,11 @@ def step_impl(context, holder): return assert False + +@given('"{holder}" has an issued {schema_name} credential {credential_data} from {issuer}') +def step_impl(context, holder, schema_name, credential_data, issuer): + context.execute_steps(u''' + Given "''' + issuer + '''" is ready to issue a credential for ''' + schema_name + ''' + When "''' + issuer + '''" offers a credential with data ''' + credential_data + ''' + Then "''' + holder + '''" has the credential issued + ''') diff --git a/demo/features/steps/0037-present-proof.py b/demo/features/steps/0037-present-proof.py new file mode 100644 index 0000000000..306ebbd4c2 --- /dev/null +++ b/demo/features/steps/0037-present-proof.py @@ -0,0 +1,47 @@ + +from behave import given, when, then +import json +from time import sleep +import time + +from bdd_support.agent_backchannel_client import ( + read_proof_req_data, + read_presentation_data, + aries_container_request_proof, + aries_container_verify_proof, + agent_backchannel_GET, + agent_backchannel_POST, + expected_agent_state +) +from runners.agent_container import AgentContainer + + +# This step is defined in another feature file +# Given "Acme" and "Bob" have an existing connection +# And "Bob" has an issued credential from + +@when('"{verifier}" sends a request for proof presentation {request_for_proof} to "{prover}"') +def step_impl(context, verifier, request_for_proof, prover): + agent = context.active_agents[verifier] + + proof_request_info = read_proof_req_data(request_for_proof) + + aries_container_request_proof(agent['agent'], proof_request_info) + + context.proof_request = proof_request_info + + +@then('"{verifier}" has the proof verified') +def step_impl(context, verifier): + agent = context.active_agents[verifier] + + proof_request = context.proof_request + + # check the received credential status (up to 10 seconds) + for i in range(10): + verified = aries_container_verify_proof(agent['agent'], proof_request) + if verified is not None: + return verified + + assert False + diff --git a/demo/features/steps/0160-connection.py b/demo/features/steps/0160-connection.py index 6c67d67f9d..17ad63a0d1 100644 --- a/demo/features/steps/0160-connection.py +++ b/demo/features/steps/0160-connection.py @@ -94,197 +94,3 @@ def step_impl(context, sender, receiver): Then "''' + sender + '''" has an active connection And "''' + receiver + '''" has an active connection ''') - -@when(u'"{sender}" sends a trust ping') -def step_impl(context, sender): - sender_url = context.config.userdata.get(sender) - sender_connection_id = context.connection_id_dict[sender][context.inviter_name] - - # get connection and verify status - assert expected_agent_state(sender_url, "connection", sender_connection_id, "active") - - data = {"comment": "Hello from " + sender} - (resp_status, resp_text) = agent_backchannel_POST(sender_url + "/agent/command/", "connection", operation="send-ping", id=sender_connection_id, data=data) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - # get connection and verify status - assert expected_agent_state(sender_url, "connection", sender_connection_id, "complete") - -@then('"{receiver}" receives the trust ping') -def step_impl(context, receiver): - # TODO - pass - - -@given('"{invitee}" has sent a connection request to "{inviter}"') -def step_impl(context, invitee, inviter): - context.execute_steps(''' - When "''' + inviter + '''" generates a connection invitation - And "''' + invitee + '''" receives the connection invitation - And "''' + invitee + '''" sends a connection request - ''') - -@given('"{inviter}" has accepted the connection request by sending a connection response') -def step_impl(context, inviter): - context.execute_steps('''When "''' + inviter + '''" accepts the connection response''') - - -@given(u'"{invitee}" is in the state of complete') -def step_impl(context, invitee): - invitee_url = context.config.userdata.get(invitee) - invitee_connection_id = context.connection_id_dict[invitee][context.inviter_name] - - # get connection and verify status - assert expected_agent_state(invitee_url, "connection", invitee_connection_id, "complete") - - -@given(u'"{inviter}" is in the state of responded') -def step_impl(context, inviter): - inviter_url = context.config.userdata.get(inviter) - inviter_connection_id = context.connection_id_dict[inviter][context.invitee_name] - - # get connection and verify status - assert expected_agent_state(inviter_url, "connection", inviter_connection_id, "responded") - - -@when(u'"{sender}" sends acks to "{reciever}"') -def step_impl(context, sender, reciever): - sender_url = context.config.userdata.get(sender) - sender_connection_id = context.connection_id_dict[sender][context.inviter_name] - - data = {"comment": "acknowledgement from " + sender} - # TODO acks not implemented yet, this will fail. - (resp_status, resp_text) = agent_backchannel_POST(sender_url + "/agent/command/", "connection", operation="acks", id=sender_connection_id, data=data) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - -@when('"{sender}" sends trustping to "{receiver}"') -def step_impl(context, sender, receiver): - sender_url = context.config.userdata.get(sender) - sender_connection_id = context.connection_id_dict[sender][receiver] - - data = {"comment": "acknowledgement from " + sender} - (resp_status, resp_text) = agent_backchannel_POST(sender_url + "/agent/command/", "connection", operation="send-ping", id=sender_connection_id, data=data) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - -@then(u'"{inviter}" is in the state of complete') -def step_impl(context, inviter): - # get connection and verify status - assert expected_agent_state(context.config.userdata.get(inviter), "connection", context.connection_id_dict[inviter][context.invitee_name], "complete") - - -@given(u'"{inviter}" generated a single-use connection invitation') -def step_impl(context, inviter): - context.execute_steps(''' - When "''' + inviter + '''" generates a connection invitation - ''') - - -@given(u'"{invitee}" received the connection invitation') -def step_impl(context, invitee): - context.execute_steps(''' - When "''' + invitee + '''" receives the connection invitation - ''') - - -@given(u'"{invitee}" sent a connection request to "{inviter}"') -def step_impl(context, invitee, inviter): - context.execute_steps(''' - When "''' + invitee + '''" sends a connection request to "''' + inviter + '''" - ''') - - -@given(u'"{inviter}" and "{invitee}" have a connection') -def step_impl(context, inviter, invitee): - context.execute_steps(''' - When "''' + invitee + '''" sends trustping to "''' + inviter + '''" - Then "''' + inviter + '''" and "''' + invitee + '''" have a connection - ''') - - -@when(u'"{inviteinterceptor}" sends a connection request to "{inviter}" based on the connection invitation') -def step_impl(context, inviteinterceptor, inviter): - context.execute_steps(''' - When "''' + inviteinterceptor + '''" receives the connection invitation - ''') - inviteinterceptor_url = context.config.userdata.get(inviteinterceptor) - inviteinterceptor_connection_id = context.connection_id_dict[inviteinterceptor][inviter] - - # get connection and verify status before call - assert expected_agent_state(inviteinterceptor_url, "connection", inviteinterceptor_connection_id, "invited") - - (resp_status, resp_text) = agent_backchannel_POST(inviteinterceptor_url + "/agent/command/", "connection", operation="accept-invitation", id=inviteinterceptor_connection_id) - assert resp_status == 200, f'resp_status {resp_status} is not 200; {resp_text}' - - # get connection and verify status - assert expected_agent_state(inviteinterceptor_url, "connection", inviteinterceptor_connection_id, "requested") - -@then(u'"{inviter}" sends a request_not_accepted error') -def step_impl(context, inviter): - inviter_url = context.config.userdata.get(inviter) - inviter_connection_id = context.connection_id_dict[inviter][context.invitee_name] - - # TODO It is expected that accept-request should send a request not accepted error, not a 500 - (resp_status, resp_text) = agent_backchannel_POST(inviter_url + "/agent/command/", "connection", operation="accept-request", id=inviter_connection_id) - # TODO once bug 418 has been fixed change this assert to the proper response code. - # bug reference URL: https://app.zenhub.com/workspaces/von---verifiable-organization-network-5adf53987ccbaa70597dbec0/issues/hyperledger/aries-cloudagent-python/418 - assert resp_status == 406, f'resp_status {resp_status} is not 406; {resp_text}' - #assert resp_status == 500 - - # Invitee should still be active based on the inviter connection id. - #assert connection_status(inviter_url, inviter_connection_id, ["complete"]) - -@given(u'"{inviter}" generated a multi-use connection invitation') -def step_impl(context, inviter): - context.execute_steps(''' - When "''' + inviter + '''" generates a connection invitation - ''') - - -@when(u'"{sender}" and "{receiver}" complete the connection process') -def step_impl(context, sender, receiver): - context.execute_steps(u''' - When "''' + receiver + '''" receives the connection invitation - And "''' + receiver + '''" sends a connection request to "''' + sender + '''" - And "''' + sender + '''" receives the connection request - And "''' + sender + '''" sends a connection response to "''' + receiver + '''" - And "''' + receiver + '''" receives the connection response - And "''' + receiver + '''" sends trustping to "''' + sender + '''" - ''') - -@then('"{inviter}" and "{invitee}" are able to complete the connection') -def step_impl(context): - raise NotImplementedError('STEP: Then "Acme" and "Bob" are able to complete the connection') - - -@then(u'"{receiver}" and "{sender}" have another connection') -def step_impl(context, receiver, sender): - context.execute_steps(u''' - Then "''' + sender + '''" and "''' + receiver + '''" have a connection - ''') - - -@given(u'"Bob" has Invalid DID Method') -def step_impl(context): - raise NotImplementedError(u'STEP: Given "Bob" has Invalid DID Method') - - -@then(u'"Acme" sends an request not accepted error') -def step_impl(context): - raise NotImplementedError(u'STEP: Then "Acme" sends an request not accepted error') - - -@then(u'the state of "Acme" is reset to Null') -def step_impl(context): - raise NotImplementedError(u'STEP: Then the state of "Acme" is reset to Null') - - -@then(u'the state of "Bob" is reset to Null') -def step_impl(context): - raise NotImplementedError(u'STEP: Then the state of "Bob" is reset to Null') - - -@given(u'"Bob" has unknown endpoint protocols') -def step_impl(context): - raise NotImplementedError(u'STEP: Given "Bob" has unknown endpoint protocols') diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index ad3ab5ff39..22e37c317b 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -66,6 +66,7 @@ def __init__( self.cred_state = {} # define a dict to hold credential attributes self.last_credential_received = None + self.last_proof_received = None async def detect_connection(self): await self._connection_ready @@ -150,17 +151,88 @@ async def handle_issuer_cred_rev(self, message): async def handle_present_proof(self, message): state = message["state"] + presentation_exchange_id = message["presentation_exchange_id"] + self.log(f"Presentation: state = {state}, presentation_exchange_id = {presentation_exchange_id}") - pres_ex_id = message["presentation_exchange_id"] - self.log(f"Presentation: state = {state}, pres_ex_id = {pres_ex_id}") + if state == "request_received": + # prover role + log_status( + "#24 Query for credentials in the wallet that satisfy the proof request" + ) + + # include self-attested attributes (not included in credentials) + credentials_by_reft = {} + revealed = {} + self_attested = {} + predicates = {} + + try: + # select credentials to provide for the proof + presentation_request = message["presentation_request"] + credentials = await self.admin_GET( + f"/present-proof/records/{presentation_exchange_id}/credentials" + ) + if credentials: + if "timestamp" in credentials[0]["cred_info"]["attrs"]: + sorted_creds = sorted( + credentials, + key=lambda c: int(c["cred_info"]["attrs"]["timestamp"]), + reverse=True, + ) + else: + sorted_creds = credentials + for row in sorted_creds: + for referent in row["presentation_referents"]: + if referent not in credentials_by_reft: + credentials_by_reft[referent] = row + + for referent in presentation_request["requested_attributes"]: + if referent in credentials_by_reft: + revealed[referent] = { + "cred_id": credentials_by_reft[referent]["cred_info"][ + "referent" + ], + "revealed": True, + } + else: + self_attested[referent] = "my self-attested value" + + for referent in presentation_request["requested_predicates"]: + if referent in credentials_by_reft: + predicates[referent] = { + "cred_id": credentials_by_reft[referent]["cred_info"][ + "referent" + ] + } + + log_status("#25 Generate the proof") + request = { + "requested_predicates": predicates, + "requested_attributes": revealed, + "self_attested_attributes": self_attested, + } + + log_status("#26 Send the proof to X") + await self.admin_POST( + ( + "/present-proof/records/" + f"{presentation_exchange_id}/send-presentation" + ), + request, + ) + except ClientError: + pass - if state == "presentation_received": + elif state == "presentation_received": + # verifier role log_status("#27 Process the proof provided by X") log_status("#28 Check if proof is valid") proof = await self.admin_POST( - f"/present-proof/records/{pres_ex_id}/verify-presentation" + f"/present-proof/records/{presentation_exchange_id}/verify-presentation" ) self.log("Proof =", proof["verified"]) + self.last_proof_received = proof + async def handle_basicmessages(self, message): self.log("Received message:", message["content"]) @@ -198,17 +270,18 @@ async def input_invitation(self, invite_details: dict, wait: bool = False): log_msg("Waiting for connection...") await agent.detect_connection() - async def create_schema_and_cred_def(self, schema_name, schema_attrs, revocation): + async def create_schema_and_cred_def(self, schema_name, schema_attrs, revocation, version=None): with log_timer("Publish schema/cred def duration:"): log_status("#3/4 Create a new schema/cred def on the ledger") - version = format( - "%d.%d.%d" - % ( - random.randint(1, 101), - random.randint(1, 101), - random.randint(1, 101), + if not version: + version = format( + "%d.%d.%d" + % ( + random.randint(1, 101), + random.randint(1, 101), + random.randint(1, 101), + ) ) - ) (_, cred_def_id,) = await self.register_schema_and_creddef( # schema id schema_name, version, @@ -327,10 +400,11 @@ async def create_schema_and_cred_def( self, schema_name: str, schema_attrs: list, + version: str = None, ): if not self.public_did: raise Exception("Can't create a schema/cred def without a public DID :-(") - self.cred_def_id = await self.agent.create_schema_and_cred_def(schema_name, schema_attrs, self.revocation) + self.cred_def_id = await self.agent.create_schema_and_cred_def(schema_name, schema_attrs, self.revocation, version=version) return self.cred_def_id async def issue_credential( @@ -376,10 +450,55 @@ async def receive_credential( print("Wrong credential definition id") return False - # TODO check if attribute values match those of issued credential + # check if attribute values match those of issued credential + wallet_attrs = self.agent.last_credential_received["attrs"] + matched = True + for cred_attr in cred_attrs: + if cred_attr["name"] in wallet_attrs: + if wallet_attrs[cred_attr["name"]] != cred_attr["value"]: + print("Value doesn't match for:", cred_attr["name"]) + matched = False + else: + print("Attribute not found for:", cred_attr["name"]) + matched = False; + + return matched + + async def request_proof(self, proof_request, revocation: bool = False): + log_status("#20 Request proof of degree from alice") + + indy_proof_request = { + "name": proof_request["name"] if "name" in proof_request else "Proof of stuff", + "version": proof_request["version"] if "version" in proof_request else "1.0", + "requested_attributes": proof_request["requested_attributes"], + "requested_predicates": proof_request["requested_predicates"], + } + + if revocation and self.revocation: + indy_proof_request["non_revoked"] = {"to": int(time.time())} + proof_request_web_request = { + "connection_id": self.agent.connection_id, + "proof_request": indy_proof_request, + "trace": self.exchange_tracing, + } + await self.agent.admin_POST( + "/present-proof/send-request", proof_request_web_request + ) return True + async def verify_proof(self, proof_request): + await asyncio.sleep(1.0) + + # check if the requested credential matches out last received + if not self.agent.last_proof_received: + # no proof received + print("No proof received") + return None + + # return verified status + return self.agent.last_proof_received["verified"] + async def terminate(self): """Shut down any running agents.""" From f48026bf347ad810fc8d38329e665cfa18f6eac3 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Thu, 18 Feb 2021 16:13:02 -0800 Subject: [PATCH 056/243] avoid error during import if marshmallow library is mocked (for docs generation) Signed-off-by: Andrew Whitehead --- aries_cloudagent/messaging/credential_definitions/util.py | 4 +++- aries_cloudagent/messaging/schemas/util.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/aries_cloudagent/messaging/credential_definitions/util.py b/aries_cloudagent/messaging/credential_definitions/util.py index 0d0a374aa7..c722964d0c 100644 --- a/aries_cloudagent/messaging/credential_definitions/util.py +++ b/aries_cloudagent/messaging/credential_definitions/util.py @@ -47,4 +47,6 @@ class CredDefQueryStringSchema(OpenAPISchema): ) -CRED_DEF_TAGS = [tag for tag in vars(CredDefQueryStringSchema)["_declared_fields"]] +CRED_DEF_TAGS = [ + tag for tag in vars(CredDefQueryStringSchema).get("_declared_fields", []) +] diff --git a/aries_cloudagent/messaging/schemas/util.py b/aries_cloudagent/messaging/schemas/util.py index c75642f5e0..9ca67fab4e 100644 --- a/aries_cloudagent/messaging/schemas/util.py +++ b/aries_cloudagent/messaging/schemas/util.py @@ -29,5 +29,5 @@ class SchemaQueryStringSchema(OpenAPISchema): ) -SCHEMA_TAGS = [tag for tag in vars(SchemaQueryStringSchema)["_declared_fields"]] +SCHEMA_TAGS = [tag for tag in vars(SchemaQueryStringSchema).get("_declared_fields", [])] SCHEMA_SENT_RECORD_TYPE = "schema_sent" From 2a942e048f5e3311ce4d15801584985512c66388 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Fri, 19 Feb 2021 09:13:19 -0800 Subject: [PATCH 057/243] Added some docs and fixed black formatting Signed-off-by: Ian Costanzo --- demo/INTEGRATION-TESTS.md | 91 +++++++++++ demo/features/0160-connection.feature | 8 +- demo/features/0586-sign-transaction.feature | 0 demo/features/environment.py | 18 ++- demo/features/steps/0036-issue-credential.py | 44 +++-- demo/features/steps/0037-present-proof.py | 13 +- demo/features/steps/0160-connection.py | 68 +++++--- demo/features/steps/0586-sign-transaction.py | 0 demo/runners/agent_container.py | 162 +++++++++++-------- docker/Dockerfile.bdd | 2 +- 10 files changed, 284 insertions(+), 122 deletions(-) create mode 100644 demo/INTEGRATION-TESTS.md create mode 100644 demo/features/0586-sign-transaction.feature create mode 100644 demo/features/steps/0586-sign-transaction.py diff --git a/demo/INTEGRATION-TESTS.md b/demo/INTEGRATION-TESTS.md new file mode 100644 index 0000000000..61e3d25b37 --- /dev/null +++ b/demo/INTEGRATION-TESTS.md @@ -0,0 +1,91 @@ +# Integration Tests for Aca-py using Behave + +Integration tests for aca-py are implemented using Behave functional tests to drive aca-py agents based on the alice/faber demo framework. + +To run the aca-py Behave tests, open a bash shell run the following: + +```bash +git clone https://github.com/bcgov/von-network +cd von-network +./manage build +./manage start +cd .. +git clone https://github.com/bcgov/indy-tails-server.git +cd indy-tails-server/docker +./manage build +./manage start +cd ../.. +git clone https://github.com/hyperledger/aries-cloudagent-python +cd aries-cloudagent-python/demo +./run_bdd +``` + +Note that an Indy ledger and tails server are both required (these can also be specified using environment variables). + +## Aca-py Integration Tests vs Aries Agent Test Harness (AATH) + +Aca-py Behave tests are based on the interoperability tests that are implemented in the [Aries Agent Test Harness (AATH)](https://github.com/hyperledger/aries-agent-test-harness). Both use [Behave (Gherkin)](https://behave.readthedocs.io/en/stable/) to execute tests against a running aca-py agent (or in the case of AATH, against any compatible Aries agent), however the aca-py integration tests focus on aca-py specific features. + +AATH: + +- Main purpose is to test interoperability between Aries agents +- Implements detailed tests based on [Aries RFC's](https://github.com/hyperledger/aries-rfcs) +- Runs Aries agents using Docker images (agents run fot he duration of the tests) +- Uses a standard "backchannel" to support integration of any Aries agent + +Aca-py integration tests: + +- Main purpose is to test aca-py +- Implements tests based on Aries RFC's, but not to the level of detail as AATH (mostly happy path) +- Tests aca-py specific configurations and features +- Starts and stops agents for each tests to test different aca-py configurations +- Uses the same Python framework as used for the interactive Alice/Faber demo + +## Configuration-driven Tests + +Aca-py integration tests use the same configuration approach as AATH, documented [here](https://github.com/hyperledger/aries-agent-test-harness/blob/master/CONFIGURE-CRED-TYPES.md). + +In addition to support for external schemas, credential data etc, the aca-py integration tests support configuration of the aca-py agents that are used to run the test. For example: + +``` +Scenario Outline: Present Proof where the prover does not propose a presentation of the proof and is acknowledged + Given "3" agents + | name | role | capabilities | + | Acme | issuer | | + | Faber | verifier | | + | Bob | prover | | + And "" and "Bob" have an existing connection + And "Bob" has an issued credential from + ... + + Examples: + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | + | Acme | --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Faber | --public-did --mediator | --mediator | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | +``` + +In the above example, the test will run twice using the parameters specified in the "Examples" section. The Acme, Faber and Bob agents will be started for the test and then shut down when the test is completed. + +The agent's "capabilities" are specified using the same command-line parameters that are supported for the Alice/Faber demo agents. + +## Specifying Command-line Parameters when Running Integration Tests + +Aca-py integration tests support the following environment-driven configuration: + +TBD - describe genesis/ledger, tails server, postgres, ... + +- `LEDGER_URL` +- `TAILS_NETWORK` +- `PUBLIC_TAILS_URL` +- postgres configuration ... + +Behave tests are tagged using the same [standard tags as used in AATH](https://github.com/hyperledger/aries-agent-test-harness#test-tags). + +To run a specific set of Aca-py integration tests (or exclude specific tests): + +TBD the `-t` parameters need to be implemented ... + +```bash +./run_bdd -t tag1 -t ~tag2 +``` + diff --git a/demo/features/0160-connection.feature b/demo/features/0160-connection.feature index e470f3de0f..96f72b8a10 100644 --- a/demo/features/0160-connection.feature +++ b/demo/features/0160-connection.feature @@ -14,7 +14,7 @@ Feature: RFC 0160 Aries agent connection functions Examples: | Acme_capabilities | Bob_capabilities | | --public-did | | - | --public-did --did-exchange | --did-exchange | - | --public-did --mediation | --mediation | - | --public-did --multitenant | --multitenant | - | --public-did --mediation --multitenant | --mediation --multitenant | + # | --public-did --did-exchange | --did-exchange | + # | --public-did --mediation | --mediation | + # | --public-did --multitenant | --multitenant | + # | --public-did --mediation --multitenant | --mediation --multitenant | diff --git a/demo/features/0586-sign-transaction.feature b/demo/features/0586-sign-transaction.feature new file mode 100644 index 0000000000..e69de29bb2 diff --git a/demo/features/environment.py b/demo/features/environment.py index 8cfddd930e..abfe5be201 100644 --- a/demo/features/environment.py +++ b/demo/features/environment.py @@ -1,24 +1,29 @@ - from runners.agent_container import AgentContainer from bdd_support.agent_backchannel_client import ( aries_container_terminate, ) + def before_feature(context, feature): pass + def after_feature(context, feature): pass + def before_tag(context, tag): pass + def after_tag(context, tag): pass - + + def before_scenario(context, scenario): print(">>> before_scenario activated") + def after_scenario(context, step): print(">>> after_scenario activated") @@ -27,20 +32,23 @@ def after_scenario(context, step): print(">>> shutting down active agents ...") for agent_name in context.active_agents.keys(): print(" shutting down:", agent_name) - agent = context.active_agents[agent_name]['agent'] + agent = context.active_agents[agent_name]["agent"] if agent: terminated = aries_container_terminate(agent) print(" terminated:", terminated) + def before_step(context, step): pass + def after_step(context, step): pass + def before_all(context): pass - + + def after_all(context): pass - diff --git a/demo/features/steps/0036-issue-credential.py b/demo/features/steps/0036-issue-credential.py index 3893295d5c..cbc8307465 100644 --- a/demo/features/steps/0036-issue-credential.py +++ b/demo/features/steps/0036-issue-credential.py @@ -1,4 +1,3 @@ - from behave import given, when, then import json from time import sleep @@ -12,7 +11,7 @@ read_credential_data, agent_backchannel_GET, agent_backchannel_POST, - expected_agent_state + expected_agent_state, ) from runners.agent_container import AgentContainer @@ -27,7 +26,7 @@ def step_impl(context, issuer, schema_name): schema_info = read_schema_data(schema_name) cred_def_id = aries_container_create_schema_cred_def( - agent['agent'], + agent["agent"], schema_info["schema"]["schema_name"], schema_info["schema"]["attributes"], version=schema_info["schema"]["schema_version"], @@ -43,20 +42,20 @@ def step_impl(context, issuer, credential_data): cred_attrs = read_credential_data(context.schema_name, credential_data) aries_container_issue_credential( - agent['agent'], + agent["agent"], context.cred_def_id, cred_attrs, ) context.cred_attrs = cred_attrs - + # TODO Check the issuers State - #assert resp_json["state"] == "offer-sent" + # assert resp_json["state"] == "offer-sent" # TODO Check the state of the holder after issuers call of send-offer - #assert expected_agent_state(context.holder_url, "issue-credential", context.cred_thread_id, "offer-received") + # assert expected_agent_state(context.holder_url, "issue-credential", context.cred_thread_id, "offer-received") + - @then('"{holder}" has the credential issued') def step_impl(context, holder): agent = context.active_agents[holder] @@ -66,15 +65,30 @@ def step_impl(context, holder): # check the received credential status (up to 10 seconds) for i in range(10): - if aries_container_receive_credential(agent['agent'], cred_def_id, cred_attrs): + if aries_container_receive_credential(agent["agent"], cred_def_id, cred_attrs): return assert False -@given('"{holder}" has an issued {schema_name} credential {credential_data} from {issuer}') + +@given( + '"{holder}" has an issued {schema_name} credential {credential_data} from {issuer}' +) def step_impl(context, holder, schema_name, credential_data, issuer): - context.execute_steps(u''' - Given "''' + issuer + '''" is ready to issue a credential for ''' + schema_name + ''' - When "''' + issuer + '''" offers a credential with data ''' + credential_data + ''' - Then "''' + holder + '''" has the credential issued - ''') + context.execute_steps( + u''' + Given "''' + + issuer + + """" is ready to issue a credential for """ + + schema_name + + ''' + When "''' + + issuer + + """" offers a credential with data """ + + credential_data + + ''' + Then "''' + + holder + + """" has the credential issued + """ + ) diff --git a/demo/features/steps/0037-present-proof.py b/demo/features/steps/0037-present-proof.py index 306ebbd4c2..66c7594cfe 100644 --- a/demo/features/steps/0037-present-proof.py +++ b/demo/features/steps/0037-present-proof.py @@ -1,4 +1,3 @@ - from behave import given, when, then import json from time import sleep @@ -11,7 +10,7 @@ aries_container_verify_proof, agent_backchannel_GET, agent_backchannel_POST, - expected_agent_state + expected_agent_state, ) from runners.agent_container import AgentContainer @@ -20,13 +19,16 @@ # Given "Acme" and "Bob" have an existing connection # And "Bob" has an issued credential from -@when('"{verifier}" sends a request for proof presentation {request_for_proof} to "{prover}"') + +@when( + '"{verifier}" sends a request for proof presentation {request_for_proof} to "{prover}"' +) def step_impl(context, verifier, request_for_proof, prover): agent = context.active_agents[verifier] proof_request_info = read_proof_req_data(request_for_proof) - aries_container_request_proof(agent['agent'], proof_request_info) + aries_container_request_proof(agent["agent"], proof_request_info) context.proof_request = proof_request_info @@ -39,9 +41,8 @@ def step_impl(context, verifier): # check the received credential status (up to 10 seconds) for i in range(10): - verified = aries_container_verify_proof(agent['agent'], proof_request) + verified = aries_container_verify_proof(agent["agent"], proof_request) if verified is not None: return verified assert False - diff --git a/demo/features/steps/0160-connection.py b/demo/features/steps/0160-connection.py index 17ad63a0d1..754cc2d3c3 100644 --- a/demo/features/steps/0160-connection.py +++ b/demo/features/steps/0160-connection.py @@ -1,11 +1,11 @@ # ----------------------------------------------------------- # Behave Step Definitions for the Connection Protocol 0160 # used to establish connections between Aries Agents. -# 0160 connection-protocol RFC: +# 0160 connection-protocol RFC: # https://github.com/hyperledger/aries-rfcs/tree/9b0aaa39df7e8bd434126c4b33c097aae78d65bf/features/0160-connection-protocol#0160-connection-protocol # # Current AIP version level of test coverage: 1.0 -# +# # ----------------------------------------------------------- from behave import given, when, then @@ -19,31 +19,36 @@ aries_container_detect_connection, agent_backchannel_GET, agent_backchannel_POST, - expected_agent_state + expected_agent_state, ) from runners.agent_container import AgentContainer -@given('{n} agents') -@given(u'we have {n} agents') +@given("{n} agents") +@given(u"we have {n} agents") def step_impl(context, n): """Startup 'n' agents based on the options provided in the context table parameters.""" - + start_port = 8020 context.active_agents = {} for row in context.table: - agent_name = row['name'] - agent_role = row['role'] - agent_params = row['capabilities'] - in_args = ['--ident', agent_name, '--port', str(start_port),] + agent_name = row["name"] + agent_role = row["role"] + agent_params = row["capabilities"] + in_args = [ + "--ident", + agent_name, + "--port", + str(start_port), + ] if agent_params and 0 < len(agent_params): in_args.extend(agent_params.split(" ")) context.active_agents[agent_name] = { - 'name': agent_name, - 'role': agent_role, - 'agent': None, + "name": agent_name, + "role": agent_role, + "agent": None, } # startup an agent with the provided params @@ -51,7 +56,7 @@ def step_impl(context, n): agent = create_agent_container_with_args(in_args) # keep reference to the agent so we can shut it down later - context.active_agents[agent_name]['agent'] = agent + context.active_agents[agent_name]["agent"] = agent aries_container_initialize( agent, @@ -63,34 +68,47 @@ def step_impl(context, n): def step_impl(context, inviter): agent = context.active_agents[inviter] - invitation = aries_container_generate_invitation(agent['agent']) + invitation = aries_container_generate_invitation(agent["agent"]) context.inviter_invitation = invitation["invitation"] # get connection and verify status - #assert expected_agent_state(inviter_url, "connection", context.temp_connection_id_dict[inviter], "invited") + # assert expected_agent_state(inviter_url, "connection", context.temp_connection_id_dict[inviter], "invited") + @when('"{invitee}" receives the connection invitation') def step_impl(context, invitee): agent = context.active_agents[invitee] invite_data = context.inviter_invitation - connection = aries_container_receive_invitation(agent['agent'], invite_data) + connection = aries_container_receive_invitation(agent["agent"], invite_data) # get connection and verify status - #assert expected_agent_state(invitee_url, "connection", context.connection_id_dict[invitee][context.inviter_name], "invited") + # assert expected_agent_state(invitee_url, "connection", context.connection_id_dict[invitee][context.inviter_name], "invited") + @then('"{agent_name}" has an active connection') def step_impl(context, agent_name): agent = context.active_agents[agent_name] # throws an exception if the connection isn't established in time - aries_container_detect_connection(agent['agent']) + aries_container_detect_connection(agent["agent"]) + @given('"{sender}" and "{receiver}" have an existing connection') def step_impl(context, sender, receiver): - context.execute_steps(u''' - When "''' + sender + '''" generates a connection invitation - And "''' + receiver + '''" receives the connection invitation - Then "''' + sender + '''" has an active connection - And "''' + receiver + '''" has an active connection - ''') + context.execute_steps( + u''' + When "''' + + sender + + '''" generates a connection invitation + And "''' + + receiver + + '''" receives the connection invitation + Then "''' + + sender + + '''" has an active connection + And "''' + + receiver + + """" has an active connection + """ + ) diff --git a/demo/features/steps/0586-sign-transaction.py b/demo/features/steps/0586-sign-transaction.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index 22e37c317b..e13db86c8c 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -85,7 +85,7 @@ async def handle_connections(self, message): if not self._connection_ready: return conn_id = message["connection_id"] - + # inviter: if message["state"] == "invitation": self.connection_id = conn_id @@ -152,7 +152,9 @@ async def handle_issuer_cred_rev(self, message): async def handle_present_proof(self, message): state = message["state"] presentation_exchange_id = message["presentation_exchange_id"] - self.log(f"Presentation: state = {state}, presentation_exchange_id = {presentation_exchange_id}") + self.log( + f"Presentation: state = {state}, presentation_exchange_id = {presentation_exchange_id}" + ) if state == "request_received": # prover role @@ -233,15 +235,22 @@ async def handle_present_proof(self, message): self.log("Proof =", proof["verified"]) self.last_proof_received = proof - async def handle_basicmessages(self, message): self.log("Received message:", message["content"]) - async def generate_invitation(self, use_did_exchange: bool, auto_accept: bool = True, display_qr: bool = False, wait: bool = False): + async def generate_invitation( + self, + use_did_exchange: bool, + auto_accept: bool = True, + display_qr: bool = False, + wait: bool = False, + ): self._connection_ready = asyncio.Future() with log_timer("Generate invitation duration:"): # Generate an invitation - log_status("#7 Create a connection to alice and print out the invite details") + log_status( + "#7 Create a connection to alice and print out the invite details" + ) invi_rec = await self.get_invite(use_did_exchange, auto_accept) if display_qr: @@ -251,7 +260,9 @@ async def generate_invitation(self, use_did_exchange: bool, auto_accept: bool = "Use the following JSON to accept the invite from another demo agent." " Or use the QR code to connect from a mobile agent." ) - log_msg(json.dumps(invi_rec["invitation"]), label="Invitation Data:", color=None) + log_msg( + json.dumps(invi_rec["invitation"]), label="Invitation Data:", color=None + ) qr.print_ascii(invert=True) if wait: @@ -270,7 +281,9 @@ async def input_invitation(self, invite_details: dict, wait: bool = False): log_msg("Waiting for connection...") await agent.detect_connection() - async def create_schema_and_cred_def(self, schema_name, schema_attrs, revocation, version=None): + async def create_schema_and_cred_def( + self, schema_name, schema_attrs, revocation, version=None + ): with log_timer("Publish schema/cred def duration:"): log_status("#3/4 Create a new schema/cred def on the ledger") if not version: @@ -292,7 +305,7 @@ async def create_schema_and_cred_def(self, schema_name, schema_attrs, revocation return cred_def_id -class AgentContainer(): +class AgentContainer: def __init__( self, genesis_txns: str, @@ -347,15 +360,15 @@ async def initialize( self.ident, self.start_port, self.start_port + 1, - genesis_data = self.genesis_txns, - no_auto = self.no_auto, - tails_server_base_url = self.tails_server_base_url, - timing = self.show_timing, - revocation = self.revocation, - multitenant = self.multitenant, - mediation = self.mediation, - wallet_type = self.wallet_type, - seed = self.seed, + genesis_data=self.genesis_txns, + no_auto=self.no_auto, + tails_server_base_url=self.tails_server_base_url, + timing=self.show_timing, + revocation=self.revocation, + multitenant=self.multitenant, + mediation=self.mediation, + wallet_type=self.wallet_type, + seed=self.seed, ) else: self.agent = the_agent @@ -372,7 +385,9 @@ async def initialize( log_msg("Endpoint URL is at:", self.agent.endpoint) if self.mediation: - self.mediator_agent = await start_mediator_agent(self.start_port + 4, self.genesis_txns) + self.mediator_agent = await start_mediator_agent( + self.start_port + 4, self.genesis_txns + ) if not self.mediator_agent: raise Exception("Mediator agent returns None :-(") else: @@ -394,7 +409,9 @@ async def initialize( if schema_name and schema_attrs: # Create a schema/cred def - self.cred_def_id = await self.create_schema_and_cred_def(schema_name, schema_attrs, self.revocation) + self.cred_def_id = await self.create_schema_and_cred_def( + schema_name, schema_attrs, self.revocation + ) async def create_schema_and_cred_def( self, @@ -404,7 +421,9 @@ async def create_schema_and_cred_def( ): if not self.public_did: raise Exception("Can't create a schema/cred def without a public DID :-(") - self.cred_def_id = await self.agent.create_schema_and_cred_def(schema_name, schema_attrs, self.revocation, version=version) + self.cred_def_id = await self.agent.create_schema_and_cred_def( + schema_name, schema_attrs, self.revocation, version=version + ) return self.cred_def_id async def issue_credential( @@ -426,9 +445,7 @@ async def issue_credential( "filter": {"indy": {"cred_def_id": cred_def_id}}, "trace": self.exchange_tracing, } - await self.agent.admin_POST( - "/issue-credential-2.0/send-offer", offer_request - ) + await self.agent.admin_POST("/issue-credential-2.0/send-offer", offer_request) return True @@ -460,7 +477,7 @@ async def receive_credential( matched = False else: print("Attribute not found for:", cred_attr["name"]) - matched = False; + matched = False return matched @@ -468,8 +485,12 @@ async def request_proof(self, proof_request, revocation: bool = False): log_status("#20 Request proof of degree from alice") indy_proof_request = { - "name": proof_request["name"] if "name" in proof_request else "Proof of stuff", - "version": proof_request["version"] if "version" in proof_request else "1.0", + "name": proof_request["name"] + if "name" in proof_request + else "Proof of stuff", + "version": proof_request["version"] + if "version" in proof_request + else "1.0", "requested_attributes": proof_request["requested_attributes"], "requested_predicates": proof_request["requested_predicates"], } @@ -518,8 +539,12 @@ async def terminate(self): return terminated - async def generate_invitation(self, auto_accept: bool = True, display_qr: bool = False, wait: bool = False): - return await self.agent.generate_invitation(self.use_did_exchange, auto_accept, display_qr, wait) + async def generate_invitation( + self, auto_accept: bool = True, display_qr: bool = False, wait: bool = False + ): + return await self.agent.generate_invitation( + self.use_did_exchange, auto_accept, display_qr, wait + ) async def input_invitation(self, invite_details: dict, wait: bool = False): return await self.agent.input_invitation(invite_details, wait) @@ -610,20 +635,20 @@ async def create_agent_with_args(in_args: list): sys.exit(1) agent = AgentContainer( - genesis, - args.ident + ".agent", - args.port, - no_auto = args.no_auto, - revocation = args.revocation, - tails_server_base_url = tails_server_base_url, - show_timing = args.timing, - multitenant = args.multitenant, - mediation = args.mediation, - use_did_exchange = args.did_exchange, - wallet_type = args.wallet_type, - public_did = args.public_did, - seed = "random" if args.public_did else None, - ) + genesis, + args.ident + ".agent", + args.port, + no_auto=args.no_auto, + revocation=args.revocation, + tails_server_base_url=tails_server_base_url, + show_timing=args.timing, + multitenant=args.multitenant, + mediation=args.mediation, + use_did_exchange=args.did_exchange, + wallet_type=args.wallet_type, + public_did=args.public_did, + seed="random" if args.public_did else None, + ) return agent @@ -654,36 +679,41 @@ async def test_main( genesis, "Faber.agent", start_port, - no_auto = no_auto, - revocation = revocation, - tails_server_base_url = tails_server_base_url, - show_timing = show_timing, - multitenant = multitenant, - mediation = mediation, - use_did_exchange = use_did_exchange, - wallet_type = wallet_type, - public_did = True, - seed = "random", + no_auto=no_auto, + revocation=revocation, + tails_server_base_url=tails_server_base_url, + show_timing=show_timing, + multitenant=multitenant, + mediation=mediation, + use_did_exchange=use_did_exchange, + wallet_type=wallet_type, + public_did=True, + seed="random", ) alice_container = AgentContainer( genesis, "Alice.agent", - start_port+10, - no_auto = no_auto, - revocation = False, - show_timing = show_timing, - multitenant = multitenant, - mediation = mediation, - use_did_exchange = use_did_exchange, - wallet_type = wallet_type, - public_did = False, - seed = None, + start_port + 10, + no_auto=no_auto, + revocation=False, + show_timing=show_timing, + multitenant=multitenant, + mediation=mediation, + use_did_exchange=use_did_exchange, + wallet_type=wallet_type, + public_did=False, + seed=None, ) # start the agents - faber gets a public DID and schema/cred def await faber_container.initialize( - schema_name = "degree schema", - schema_attrs = ["name", "date", "degree", "grade",], + schema_name="degree schema", + schema_attrs=[ + "name", + "date", + "degree", + "grade", + ], ) await alice_container.initialize() @@ -705,8 +735,8 @@ async def test_main( await asyncio.sleep(3.0) except Exception as e: - LOGGER.exception("Error initializing agent:", e) - raise(e) + LOGGER.exception("Error initializing agent:", e) + raise (e) finally: terminated = True diff --git a/docker/Dockerfile.bdd b/docker/Dockerfile.bdd index eb4db18a53..e8a3ecd2b9 100644 --- a/docker/Dockerfile.bdd +++ b/docker/Dockerfile.bdd @@ -6,4 +6,4 @@ RUN pip3 install --no-cache-dir -r demo/requirements.behave.txt # ENTRYPOINT ["bash", "-c", "demo/ngrok-wait.sh \"$@\"", "--"] WORKDIR ./demo RUN chmod a+w . -ENTRYPOINT ["behave"] +ENTRYPOINT ["behave", "\"$@\""] From b5decd9678b6f37262902cba487024d69b4e9e36 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Fri, 19 Feb 2021 09:17:29 -0800 Subject: [PATCH 058/243] Black formatting fix Signed-off-by: Ian Costanzo --- demo/bdd_support/agent_backchannel_client.py | 72 ++++++++++++++------ demo/bdd_support/agent_test_utils.py | 30 ++++---- 2 files changed, 68 insertions(+), 34 deletions(-) diff --git a/demo/bdd_support/agent_backchannel_client.py b/demo/bdd_support/agent_backchannel_client.py index 2a6e9f323e..75662f9163 100644 --- a/demo/bdd_support/agent_backchannel_client.py +++ b/demo/bdd_support/agent_backchannel_client.py @@ -19,6 +19,7 @@ # coroutine utilities ###################################################################### + def run_coroutine(coroutine): loop = asyncio.get_event_loop() if not loop: @@ -28,7 +29,8 @@ def run_coroutine(coroutine): return loop.run_until_complete(coroutine()) finally: pass - #loop.close() + # loop.close() + def run_coroutine_with_args(coroutine, *args): loop = asyncio.get_event_loop() @@ -39,7 +41,8 @@ def run_coroutine_with_args(coroutine, *args): return loop.run_until_complete(coroutine(*args)) finally: pass - #loop.close() + # loop.close() + def run_coroutine_with_kwargs(coroutine, *args, **kwargs): loop = asyncio.get_event_loop() @@ -50,17 +53,15 @@ def run_coroutine_with_kwargs(coroutine, *args, **kwargs): return loop.run_until_complete(coroutine(*args, **kwargs)) finally: pass - #loop.close() + # loop.close() ###################################################################### # high level aries agent interface ###################################################################### def create_agent_container_with_args(in_args: list): - return run_coroutine_with_args( - create_agent_with_args, - in_args - ) + return run_coroutine_with_args(create_agent_with_args, in_args) + def aries_container_initialize( the_container: AgentContainer, @@ -69,15 +70,17 @@ def aries_container_initialize( ): run_coroutine_with_kwargs( the_container.initialize, - schema_name = schema_name, - schema_attrs = schema_attrs, + schema_name=schema_name, + schema_attrs=schema_attrs, ) + def aries_container_terminate( the_container: AgentContainer, ): return run_coroutine(the_container.terminate) + def aries_container_generate_invitation( the_container: AgentContainer, ): @@ -85,6 +88,7 @@ def aries_container_generate_invitation( the_container.generate_invitation, ) + def aries_container_receive_invitation( the_container: AgentContainer, invite_details: dict, @@ -94,11 +98,13 @@ def aries_container_receive_invitation( invite_details, ) + def aries_container_detect_connection( the_container: AgentContainer, ): run_coroutine(the_container.detect_connection) + def aries_container_create_schema_cred_def( the_container: AgentContainer, schema_name: str, @@ -112,6 +118,7 @@ def aries_container_create_schema_cred_def( version=version, ) + def aries_container_issue_credential( the_container: AgentContainer, cred_def_id: str, @@ -123,6 +130,7 @@ def aries_container_issue_credential( cred_attrs, ) + def aries_container_receive_credential( the_container: AgentContainer, cred_def_id: str, @@ -134,6 +142,7 @@ def aries_container_receive_credential( cred_attrs, ) + def aries_container_request_proof( the_container: AgentContainer, proof_request: dict, @@ -143,6 +152,7 @@ def aries_container_request_proof( proof_request, ) + def aries_container_verify_proof( the_container: AgentContainer, proof_request: dict, @@ -165,9 +175,11 @@ def read_json_data(file_name: str): with open("features/data/" + file_name) as data_file: return json.load(data_file) + def read_schema_data(schema_name: str): return read_json_data("schema_" + schema_name + ".json") + def read_credential_data(schema_name: str, cred_scenario_name: str): schema_cred_data = read_json_data("cred_data_schema_" + schema_name + ".json") cred_data = schema_cred_data[cred_scenario_name] @@ -176,10 +188,12 @@ def read_credential_data(schema_name: str, cred_scenario_name: str): attr["value"] = str(uuid.uuid4()) return cred_data["attributes"] + def read_proof_req_data(proof_req_name: str): proof_request_info = read_json_data("proof_request_" + proof_req_name + ".json") return proof_request_info["presentation_proposal"] + def read_presentation_data(presentation_name: str): return read_json_data("presentation_" + presentation_name + ".json") @@ -188,14 +202,13 @@ def read_presentation_data(presentation_name: str): # probably obsolete ... ###################################################################### + async def make_agent_backchannel_request( method, path, data=None, text=False, params=None ) -> (int, str): params = {k: v for (k, v) in (params or {}).items() if v is not None} client_session: ClientSession = ClientSession() - async with client_session.request( - method, path, json=data, params=params - ) as resp: + async with client_session.request(method, path, json=data, params=params) as resp: resp_status = resp.status resp_text = await resp.text() await client_session.close() @@ -208,11 +221,15 @@ def agent_backchannel_GET(url, topic, operation=None, id=None) -> (int, str): agent_url = agent_url + operation + "/" if id: agent_url = agent_url + id - (resp_status, resp_text) = run_coroutine_with_kwargs(make_agent_backchannel_request, "GET", agent_url) + (resp_status, resp_text) = run_coroutine_with_kwargs( + make_agent_backchannel_request, "GET", agent_url + ) return (resp_status, resp_text) -def agent_backchannel_POST(url, topic, operation=None, id=None, data=None) -> (int, str): +def agent_backchannel_POST( + url, topic, operation=None, id=None, data=None +) -> (int, str): agent_url = url + topic + "/" payload = {} if data: @@ -220,27 +237,35 @@ def agent_backchannel_POST(url, topic, operation=None, id=None, data=None) -> (i if operation: agent_url = agent_url + operation + "/" if id: - if topic == 'credential': + if topic == "credential": payload["cred_ex_id"] = id else: payload["id"] = id - (resp_status, resp_text) = run_coroutine_with_kwargs(make_agent_backchannel_request, "POST", agent_url, data=payload) + (resp_status, resp_text) = run_coroutine_with_kwargs( + make_agent_backchannel_request, "POST", agent_url, data=payload + ) return (resp_status, resp_text) + def agent_backchannel_DELETE(url, topic, id=None, data=None) -> (int, str): agent_url = url + topic + "/" if id: agent_url = agent_url + id - (resp_status, resp_text) = run_coroutine_with_kwargs(make_agent_backchannel_request, "DELETE", agent_url) + (resp_status, resp_text) = run_coroutine_with_kwargs( + make_agent_backchannel_request, "DELETE", agent_url + ) return (resp_status, resp_text) + def expected_agent_state(agent_url, protocol_txt, thread_id, status_txt): sleep(0.2) state = "None" if type(status_txt) != list: status_txt = [status_txt] for i in range(5): - (resp_status, resp_text) = agent_backchannel_GET(agent_url + "/agent/command/", protocol_txt, id=thread_id) + (resp_status, resp_text) = agent_backchannel_GET( + agent_url + "/agent/command/", protocol_txt, id=thread_id + ) if resp_status == 200: resp_json = json.loads(resp_text) state = resp_json["state"] @@ -248,5 +273,14 @@ def expected_agent_state(agent_url, protocol_txt, thread_id, status_txt): return True sleep(0.2) - print("From", agent_url, "Expected state", status_txt, "but received", state, ", with a response status of", resp_status) + print( + "From", + agent_url, + "Expected state", + status_txt, + "but received", + state, + ", with a response status of", + resp_status, + ) return False diff --git a/demo/bdd_support/agent_test_utils.py b/demo/bdd_support/agent_test_utils.py index 66a3ff7bb5..7224bcbd33 100644 --- a/demo/bdd_support/agent_test_utils.py +++ b/demo/bdd_support/agent_test_utils.py @@ -1,8 +1,9 @@ import time + def create_non_revoke_interval(timeframe): # timeframe containes two variables, the To and from of the non-revoked to and from parameters in the send presentation request message - # The to and from timeframe variables are always relative to now. + # The to and from timeframe variables are always relative to now. # The to and from time is represented as a total number of seconds from Unix Epoch # Deconstruct the timeframe and add it to the context to be used in the request later. # putting timefrom here where the revoke happens just in case it is needed. It may not and could be removed from here and added to the request step. @@ -18,34 +19,33 @@ def create_non_revoke_interval(timeframe): from_reference = timeframe_list[0] to_reference = timeframe_list[1] - if (from_reference == 'now') or (from_reference == ''): - if from_reference == 'now': from_interval = int(time.time()) - if from_reference == '': from_interval = None - #from_interval = from_reference + if (from_reference == "now") or (from_reference == ""): + if from_reference == "now": + from_interval = int(time.time()) + if from_reference == "": + from_interval = None + # from_interval = from_reference else: from_interval = int(from_reference) + int(time.time()) - if (to_reference == 'now') or (to_reference == ''): - if to_reference == 'now': to_reference = int(time.time()) + if (to_reference == "now") or (to_reference == ""): + if to_reference == "now": + to_reference = int(time.time()) to_interval = to_reference else: to_interval = int(to_reference) + int(time.time()) - return { - "non_revoked": { - "from": from_interval, - "to": to_interval - } - } + return {"non_revoked": {"from": from_interval, "to": to_interval}} + def get_relative_timestamp_to_epoch(timestamp): # timestamps are always relative to now. + or - is represented in seconds from Unix Epoch. - # Valid timestsamps are + # Valid timestsamps are # now # +###### ie +86400 # -###### ie -86400 - if (timestamp == 'now'): + if timestamp == "now": epoch_time = int(time.time()) else: epoch_time = int(timestamp) + int(time.time()) From 5a5b721f876b9f5cd5194b28c24f7da9f755fc10 Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Fri, 19 Feb 2021 09:53:50 -0800 Subject: [PATCH 059/243] Clean up autodoc errors in code; move GettingStarted and assets folders to root and out of docs Signed-off-by: Stephen Curran --- AdminAPI.md | 2 +- DevReadMe.md | 6 +++--- .../AgentConnections.md | 0 .../AriesAgentArchitecture.md | 2 +- .../AriesBasics.md | 0 .../AriesBigPicture.md | 0 .../AriesDeveloperDemos.md | 0 .../AriesMessaging.md | 0 .../AriesRoutingExample.md | 0 .../ConnectIndyNetwork.md | 0 .../CredentialRevocation.md | 0 .../DIDcommMsgs.md | 0 .../DecentralizedIdentityDemos.md | 0 .../IndyAriesDevOptions.md | 0 .../IndyBasics.md | 0 .../IssuingIndyCredentials.md | 0 .../PresentingIndyProofs.md | 0 .../README.md | 0 .../RoutingEncryption.md | 0 .../YourOwnAriesAgent.md | 0 Mediation.md | 2 +- Multitenancy.md | 4 ++-- README.md | 8 ++++---- .../protocols/coordinate_mediation/v1_0/manager.py | 2 +- aries_cloudagent/revocation/manager.py | 10 +++++----- aries_cloudagent/utils/tracing.py | 3 +-- {docs/assets => assets}/README.md | 0 {docs/assets => assets}/adminApi.png | Bin {docs/assets => assets}/adminApiAuthentication.png | Bin {docs/assets => assets}/deploymentModel-agent.png | Bin {docs/assets => assets}/deploymentModel-agent.puml | 0 .../deploymentModel-controller.png | Bin .../deploymentModel-controller.puml | 0 {docs/assets => assets}/deploymentModel-full.png | Bin {docs/assets => assets}/deploymentModel-full.puml | 0 {docs/assets => assets}/genPlantuml | 0 {docs/assets => assets}/mediation-message-flow.png | Bin {docs/assets => assets}/mediation-message-flow.puml | 0 {docs/assets => assets}/multitenancyDiagram.png | Bin docs/deploymentModel.md => deploymentModel.md | 6 +++--- docs/README.md | 5 ++--- docs/index.rst | 8 ++++---- 42 files changed, 28 insertions(+), 30 deletions(-) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/AgentConnections.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/AriesAgentArchitecture.md (95%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/AriesBasics.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/AriesBigPicture.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/AriesDeveloperDemos.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/AriesMessaging.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/AriesRoutingExample.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/ConnectIndyNetwork.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/CredentialRevocation.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/DIDcommMsgs.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/DecentralizedIdentityDemos.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/IndyAriesDevOptions.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/IndyBasics.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/IssuingIndyCredentials.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/PresentingIndyProofs.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/README.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/RoutingEncryption.md (100%) rename {docs/GettingStartedAriesDev => GettingStartedAriesDev}/YourOwnAriesAgent.md (100%) rename {docs/assets => assets}/README.md (100%) rename {docs/assets => assets}/adminApi.png (100%) rename {docs/assets => assets}/adminApiAuthentication.png (100%) rename {docs/assets => assets}/deploymentModel-agent.png (100%) rename {docs/assets => assets}/deploymentModel-agent.puml (100%) rename {docs/assets => assets}/deploymentModel-controller.png (100%) rename {docs/assets => assets}/deploymentModel-controller.puml (100%) rename {docs/assets => assets}/deploymentModel-full.png (100%) rename {docs/assets => assets}/deploymentModel-full.puml (100%) rename {docs/assets => assets}/genPlantuml (100%) rename {docs/assets => assets}/mediation-message-flow.png (100%) rename {docs/assets => assets}/mediation-message-flow.puml (100%) rename {docs/assets => assets}/multitenancyDiagram.png (100%) rename docs/deploymentModel.md => deploymentModel.md (97%) diff --git a/AdminAPI.md b/AdminAPI.md index 92e6683a17..3e7f788371 100644 --- a/AdminAPI.md +++ b/AdminAPI.md @@ -6,7 +6,7 @@ ACA-Py provides an OpenAPI-documented REST interface for administering the agent To see the specifics of the supported endpoints as well as the expected request and response formats it is recommended to run the `aca-py` agent with the `--admin {HOST} {PORT}` and `--admin-insecure-mode` command line parameters, which exposes the OpenAPI UI on the provided port for interaction via a web browser. Production deployments should run the agent with `--admin-api-key {KEY}` and add the `X-API-Key: {KEY}` header to all requests instead of running the agent with the `--admin-insecure-mode` parameter. -![Admin API Screenshot](/docs/assets/adminApi.png) +![Admin API Screenshot](/assets/adminApi.png) To invoke a specific method: diff --git a/DevReadMe.md b/DevReadMe.md index 45f1d67c10..9e20b9d63c 100644 --- a/DevReadMe.md +++ b/DevReadMe.md @@ -27,11 +27,11 @@ See the [README](README.md) for details about this repository and information ab Aries Cloud Agent Python (ACA-Py) is a configurable, extensible, non-mobile Aries agent that implements an easy way for developers to build decentralized identity services that use verifiable credentials. -The information on this page assumes you are developer with a background in decentralized identity, Indy, Aries and verifiable credentials. If you aren't familiar with those concepts and projects, please use our [Getting Started Guide](docs/GettingStartedAriesDev/README.md) to learn more. +The information on this page assumes you are developer with a background in decentralized identity, Indy, Aries and verifiable credentials. If you aren't familiar with those concepts and projects, please use our [Getting Started Guide](GettingStartedAriesDev/README.md) to learn more. ## Developer Demos -To put ACA-Py through its paces at the command line, checkout our [demos](docs/GettingStartedAriesDev/AriesDeveloperDemos.md) page. +To put ACA-Py through its paces at the command line, checkout our [demos](GettingStartedAriesDev/AriesDeveloperDemos.md) page. ## Running @@ -205,7 +205,7 @@ Please also refer to the [contributing guidelines](/CONTRIBUTING.md) and [code o ## Publishing Releases -The [publishing](https://github.com/hyperledger/aries-cloudagent-python/blob/master/PUBLISHING.md) document provides information on tagging a release and publishing the release artifacts to PyPi. +The [publishing](https://github.com/hyperledger/aries-cloudagent-python/blob/main/PUBLISHING.md) document provides information on tagging a release and publishing the release artifacts to PyPi. ## Dynamic Injection of Services diff --git a/docs/GettingStartedAriesDev/AgentConnections.md b/GettingStartedAriesDev/AgentConnections.md similarity index 100% rename from docs/GettingStartedAriesDev/AgentConnections.md rename to GettingStartedAriesDev/AgentConnections.md diff --git a/docs/GettingStartedAriesDev/AriesAgentArchitecture.md b/GettingStartedAriesDev/AriesAgentArchitecture.md similarity index 95% rename from docs/GettingStartedAriesDev/AriesAgentArchitecture.md rename to GettingStartedAriesDev/AriesAgentArchitecture.md index 618796fb44..3816f27cc7 100644 --- a/docs/GettingStartedAriesDev/AriesAgentArchitecture.md +++ b/GettingStartedAriesDev/AriesAgentArchitecture.md @@ -2,7 +2,7 @@ This section talks in particular about the architecture of this Aries cloud agent implementation. An instance of an Aries agent is actually made up of to two parts - the agent itself and a controller. -![ACA-Py Deployment Overview](../assets/deploymentModel-full.png "ACA-Py Deployment Overview") +![ACA-Py Deployment Overview](/assets/deploymentModel-full.png "ACA-Py Deployment Overview") The agent handles all of the core Aries functionality such as interacting with other agents, managing secure storage, sending event notifications to, and receiving directions from, the controller. The controller provides the business logic that defines how that particular agent instance behaves--how to respond to events in the agent, and when to trigger the agent to initiate events. The controller might be a web or native user interface for a person or it might be coded business rules driven by an enterprise system. diff --git a/docs/GettingStartedAriesDev/AriesBasics.md b/GettingStartedAriesDev/AriesBasics.md similarity index 100% rename from docs/GettingStartedAriesDev/AriesBasics.md rename to GettingStartedAriesDev/AriesBasics.md diff --git a/docs/GettingStartedAriesDev/AriesBigPicture.md b/GettingStartedAriesDev/AriesBigPicture.md similarity index 100% rename from docs/GettingStartedAriesDev/AriesBigPicture.md rename to GettingStartedAriesDev/AriesBigPicture.md diff --git a/docs/GettingStartedAriesDev/AriesDeveloperDemos.md b/GettingStartedAriesDev/AriesDeveloperDemos.md similarity index 100% rename from docs/GettingStartedAriesDev/AriesDeveloperDemos.md rename to GettingStartedAriesDev/AriesDeveloperDemos.md diff --git a/docs/GettingStartedAriesDev/AriesMessaging.md b/GettingStartedAriesDev/AriesMessaging.md similarity index 100% rename from docs/GettingStartedAriesDev/AriesMessaging.md rename to GettingStartedAriesDev/AriesMessaging.md diff --git a/docs/GettingStartedAriesDev/AriesRoutingExample.md b/GettingStartedAriesDev/AriesRoutingExample.md similarity index 100% rename from docs/GettingStartedAriesDev/AriesRoutingExample.md rename to GettingStartedAriesDev/AriesRoutingExample.md diff --git a/docs/GettingStartedAriesDev/ConnectIndyNetwork.md b/GettingStartedAriesDev/ConnectIndyNetwork.md similarity index 100% rename from docs/GettingStartedAriesDev/ConnectIndyNetwork.md rename to GettingStartedAriesDev/ConnectIndyNetwork.md diff --git a/docs/GettingStartedAriesDev/CredentialRevocation.md b/GettingStartedAriesDev/CredentialRevocation.md similarity index 100% rename from docs/GettingStartedAriesDev/CredentialRevocation.md rename to GettingStartedAriesDev/CredentialRevocation.md diff --git a/docs/GettingStartedAriesDev/DIDcommMsgs.md b/GettingStartedAriesDev/DIDcommMsgs.md similarity index 100% rename from docs/GettingStartedAriesDev/DIDcommMsgs.md rename to GettingStartedAriesDev/DIDcommMsgs.md diff --git a/docs/GettingStartedAriesDev/DecentralizedIdentityDemos.md b/GettingStartedAriesDev/DecentralizedIdentityDemos.md similarity index 100% rename from docs/GettingStartedAriesDev/DecentralizedIdentityDemos.md rename to GettingStartedAriesDev/DecentralizedIdentityDemos.md diff --git a/docs/GettingStartedAriesDev/IndyAriesDevOptions.md b/GettingStartedAriesDev/IndyAriesDevOptions.md similarity index 100% rename from docs/GettingStartedAriesDev/IndyAriesDevOptions.md rename to GettingStartedAriesDev/IndyAriesDevOptions.md diff --git a/docs/GettingStartedAriesDev/IndyBasics.md b/GettingStartedAriesDev/IndyBasics.md similarity index 100% rename from docs/GettingStartedAriesDev/IndyBasics.md rename to GettingStartedAriesDev/IndyBasics.md diff --git a/docs/GettingStartedAriesDev/IssuingIndyCredentials.md b/GettingStartedAriesDev/IssuingIndyCredentials.md similarity index 100% rename from docs/GettingStartedAriesDev/IssuingIndyCredentials.md rename to GettingStartedAriesDev/IssuingIndyCredentials.md diff --git a/docs/GettingStartedAriesDev/PresentingIndyProofs.md b/GettingStartedAriesDev/PresentingIndyProofs.md similarity index 100% rename from docs/GettingStartedAriesDev/PresentingIndyProofs.md rename to GettingStartedAriesDev/PresentingIndyProofs.md diff --git a/docs/GettingStartedAriesDev/README.md b/GettingStartedAriesDev/README.md similarity index 100% rename from docs/GettingStartedAriesDev/README.md rename to GettingStartedAriesDev/README.md diff --git a/docs/GettingStartedAriesDev/RoutingEncryption.md b/GettingStartedAriesDev/RoutingEncryption.md similarity index 100% rename from docs/GettingStartedAriesDev/RoutingEncryption.md rename to GettingStartedAriesDev/RoutingEncryption.md diff --git a/docs/GettingStartedAriesDev/YourOwnAriesAgent.md b/GettingStartedAriesDev/YourOwnAriesAgent.md similarity index 100% rename from docs/GettingStartedAriesDev/YourOwnAriesAgent.md rename to GettingStartedAriesDev/YourOwnAriesAgent.md diff --git a/Mediation.md b/Mediation.md index 66e90371bf..9e32fe4cea 100644 --- a/Mediation.md +++ b/Mediation.md @@ -67,7 +67,7 @@ See [Aries RFC 0211: Coordinate Mediation Protocol](https://github.com/hyperledg ## Mediator Message Flow Overview -![Mediator Message Flow](./docs/assets/mediation-message-flow.png) +![Mediator Message Flow](/assets/mediation-message-flow.png) ## Using a Mediator diff --git a/Multitenancy.md b/Multitenancy.md index dfa4bfab99..78055ccfaf 100644 --- a/Multitenancy.md +++ b/Multitenancy.md @@ -37,7 +37,7 @@ The wallets used by the different tenants are called **sub wallets**. A sub wall The **base wallet** however, takes on a different role and has limited functionality. Its main function is to manage the sub wallets, which can be done using the [Multi-tenant Admin API](#multi-tenant-admin-api). It stores all settings and information about the different sub wallets and will route incoming messages to the corresponding sub wallets. See [Message Routing](#message-routing) for more details. All other features are disabled for the base wallet. This means it cannot issue credentials, present proof, or do any of the other actions sub wallets can do. This is to keep a clear hierarchical difference between base and sub wallets -![Multi-tenancy Architecture](./docs/assets/multitenancyDiagram.png) +![Multi-tenancy Architecture](/assets/multitenancyDiagram.png) ### Usage @@ -223,4 +223,4 @@ For deterministic JWT creation and verification between restarts and multiple in When using the SwaggerUI you can click the :lock: icon next to each of the endpoints or the `Authorize` button at the top to set the correct authentication headers. Make sure to also include the `Bearer ` part in the input field. This won't be automatically added. -![](./docs/assets/adminApiAuthentication.png) +![](/assets/adminApiAuthentication.png) diff --git a/README.md b/README.md index 6feddc9186..800c48f205 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![CircleCI](https://circleci.com/gh/hyperledger/aries-cloudagent-python.svg?style=shield)](https://circleci.com/gh/hyperledger/aries-cloudagent-python) [![codecov](https://codecov.io/gh/hyperledger/aries-cloudagent-python/branch/main/graph/badge.svg)](https://codecov.io/gh/hyperledger/aries-cloudagent-python) - + > An easy to use Aries agent for building SSI services using any language that supports sending/receiving HTTP requests. @@ -42,11 +42,11 @@ There is an [architectural deep dive webinar](https://www.youtube.com/watch?v=FX ## Installation and Usage -An ["install and go" page for developers](https://github.com/hyperledger/aries-cloudagent-python/blob/main/DevReadMe.md) is available if you are comfortable with Trust over IP and Aries concepts. ACA-Py can be run with Docker without installation (highly recommended), or can be installed[ from PyPi](https://pypi.org/project/aries-cloudagent/). In the [/demo directory](https://github.com/hyperledger/aries-cloudagent-python/tree/main/demo) there is a full set of demos for developers to use in getting started, and the [demo read me](https://github.com/hyperledger/aries-cloudagent-python/blob/main/demo/README.md) is a great starting point for developers to use an "in-browser" approach to run a zero-install example. The[ Read the Docs](https://aries-cloud-agent-python.readthedocs.io/en/latest/) overview is also a way to reference the modules and APIs that make up an ACA-Py instance. +An ["install and go" page for developers](https://github.com/hyperledger/aries-cloudagent-python/blob/main/DevReadMe.md) is available if you are comfortable with Trust over IP and Aries concepts. ACA-Py can be run with Docker without installation (highly recommended), or can be installed [from PyPi](https://pypi.org/project/aries-cloudagent/). In the [/demo directory](https://github.com/hyperledger/aries-cloudagent-python/tree/main/demo) there is a full set of demos for developers to use in getting started, and the [demo read me](https://github.com/hyperledger/aries-cloudagent-python/blob/main/demo/README.md) is a great starting point for developers to use an "in-browser" approach to run a zero-install example. The [Read the Docs](https://aries-cloud-agent-python.readthedocs.io/en/latest/) overview is also a way to reference the modules and APIs that make up an ACA-Py instance. -For those new to SSI, Indy and Aries there is a[ Getting Started Guide](https://github.com/hyperledger/aries-cloudagent-python/blob/main/docs/GettingStartedAriesDev/README.md) that will take you from knowing next to nothing about decentralized identity to developing Aries-based business apps and services. You’ll run some Indy apps, ACA-Py apps and developer-oriented demos. The guide has a table of contents so you can skip the parts you already know. +For those new to SSI, Indy and Aries there is a [Getting Started Guide](https://github.com/hyperledger/aries-cloudagent-python/blob/main/GettingStartedAriesDev/README.md) that will take you from knowing next to nothing about decentralized identity to developing Aries-based business apps and services. You’ll run some Indy apps, ACA-Py apps and developer-oriented demos. The guide has a table of contents so you can skip the parts you already know. -Finally, if you’re not sure where your focus should be—building apps? Aries? Indy? Indy’s Blockchain? Ursa?—then the ["What should I work on?" document](https://github.com/hyperledger/aries-cloudagent-python/blob/main/docs/GettingStartedAriesDev/IndyAriesDevOptions.md) is a good starting point. It goes through the technical stack and shows how the projects fit together, so you can decide where you want to focus your efforts. +Finally, if you’re not sure where your focus should be—building apps? Aries? Indy? Indy’s Blockchain? Ursa?—then the ["What should I work on?" document](https://github.com/hyperledger/aries-cloudagent-python/blob/main/GettingStartedAriesDev/IndyAriesDevOptions.md) is a good starting point. It goes through the technical stack and shows how the projects fit together, so you can decide where you want to focus your efforts. ## About The API diff --git a/aries_cloudagent/protocols/coordinate_mediation/v1_0/manager.py b/aries_cloudagent/protocols/coordinate_mediation/v1_0/manager.py index 6d4140bbf4..fdd7e88b24 100644 --- a/aries_cloudagent/protocols/coordinate_mediation/v1_0/manager.py +++ b/aries_cloudagent/protocols/coordinate_mediation/v1_0/manager.py @@ -455,7 +455,7 @@ async def prepare_keylist_query( """Prepare keylist query message. Args: - filter_ (dict): filter_ for keylist query + filter_ (dict): filter for keylist query paginate_limit (int): paginate_limit paginate_offset (int): paginate_offset diff --git a/aries_cloudagent/revocation/manager.py b/aries_cloudagent/revocation/manager.py index 75f82d63cf..9380e5d384 100644 --- a/aries_cloudagent/revocation/manager.py +++ b/aries_cloudagent/revocation/manager.py @@ -119,12 +119,12 @@ async def publish_pending_revocations( registry identifier for all pending within the revocation registry; e.g., - :: - {} - publish all pending revocations from all revocation registries + { "R17v42T4pk...:4:R17v42T4pk...:3:CL:19:tag:CL_ACCUM:0": [], "R17v42T4pk...:4:R17v42T4pk...:3:CL:19:tag:CL_ACCUM:1": ["1", "2"] + } - publish: - all pending revocations from all revocation registry tagged 0 - pending ["1", "2"] from revocation registry tagged 1 @@ -176,13 +176,13 @@ async def clear_pending_revocations( registry identifier for all pending within the revocation registry; e.g., - :: - {} - clear all pending revocations from all revocation registries + { "R17v42T4pk...:4:R17v42T4pk...:3:CL:19:tag:CL_ACCUM:0": [], "R17v42T4pk...:4:R17v42T4pk...:3:CL:19:tag:CL_ACCUM:1": ["1", "2"] - } - clear: + + } - clear - all pending revocations from all revocation registry tagged 0 - pending ["1", "2"] from revocation registry tagged 1 - no pending revocations from any other revocation registries. diff --git a/aries_cloudagent/utils/tracing.py b/aries_cloudagent/utils/tracing.py index 07463a5d06..47d71585ed 100644 --- a/aries_cloudagent/utils/tracing.py +++ b/aries_cloudagent/utils/tracing.py @@ -123,8 +123,7 @@ def trace_event( Args: context: The application context, attributes of interest are: context["trace.enabled"]: True if we are logging events - context["trace.target"]: Trace target - ("log", "message" or an http endpoint) + context["trace.target"]: Trace target ("log", "message" or an http endpoint) context["trace.tag"]: Tag to be included in trace output message: the current message, can be an AgentMessage, InboundMessage, OutboundMessage or Exchange record diff --git a/docs/assets/README.md b/assets/README.md similarity index 100% rename from docs/assets/README.md rename to assets/README.md diff --git a/docs/assets/adminApi.png b/assets/adminApi.png similarity index 100% rename from docs/assets/adminApi.png rename to assets/adminApi.png diff --git a/docs/assets/adminApiAuthentication.png b/assets/adminApiAuthentication.png similarity index 100% rename from docs/assets/adminApiAuthentication.png rename to assets/adminApiAuthentication.png diff --git a/docs/assets/deploymentModel-agent.png b/assets/deploymentModel-agent.png similarity index 100% rename from docs/assets/deploymentModel-agent.png rename to assets/deploymentModel-agent.png diff --git a/docs/assets/deploymentModel-agent.puml b/assets/deploymentModel-agent.puml similarity index 100% rename from docs/assets/deploymentModel-agent.puml rename to assets/deploymentModel-agent.puml diff --git a/docs/assets/deploymentModel-controller.png b/assets/deploymentModel-controller.png similarity index 100% rename from docs/assets/deploymentModel-controller.png rename to assets/deploymentModel-controller.png diff --git a/docs/assets/deploymentModel-controller.puml b/assets/deploymentModel-controller.puml similarity index 100% rename from docs/assets/deploymentModel-controller.puml rename to assets/deploymentModel-controller.puml diff --git a/docs/assets/deploymentModel-full.png b/assets/deploymentModel-full.png similarity index 100% rename from docs/assets/deploymentModel-full.png rename to assets/deploymentModel-full.png diff --git a/docs/assets/deploymentModel-full.puml b/assets/deploymentModel-full.puml similarity index 100% rename from docs/assets/deploymentModel-full.puml rename to assets/deploymentModel-full.puml diff --git a/docs/assets/genPlantuml b/assets/genPlantuml similarity index 100% rename from docs/assets/genPlantuml rename to assets/genPlantuml diff --git a/docs/assets/mediation-message-flow.png b/assets/mediation-message-flow.png similarity index 100% rename from docs/assets/mediation-message-flow.png rename to assets/mediation-message-flow.png diff --git a/docs/assets/mediation-message-flow.puml b/assets/mediation-message-flow.puml similarity index 100% rename from docs/assets/mediation-message-flow.puml rename to assets/mediation-message-flow.puml diff --git a/docs/assets/multitenancyDiagram.png b/assets/multitenancyDiagram.png similarity index 100% rename from docs/assets/multitenancyDiagram.png rename to assets/multitenancyDiagram.png diff --git a/docs/deploymentModel.md b/deploymentModel.md similarity index 97% rename from docs/deploymentModel.md rename to deploymentModel.md index ed6c7af8bb..0b57eba44a 100644 --- a/docs/deploymentModel.md +++ b/deploymentModel.md @@ -7,7 +7,7 @@ This document is a "concept of operations" for an instance of an Aries cloud agent deployed from the primary artifact (a PyPi package) produced by this repo. In such a deployment there are **always** two components - a configured agent itself, and a controller that injects into that agent the business rules for the particular agent instance (see diagram). -![ACA-Py Deployment Overview](assets/deploymentModel-full.png "ACA-Py Deployment Overview") +![ACA-Py Deployment Overview](/assets/deploymentModel-full.png "ACA-Py Deployment Overview") The deployed agent messages with other agents via DIDComm protocols, and as events associated with those messages occur, sends webhook HTTP notifications to the controller. The agent also exposes for the controller's exclusive use an HTTP API covering all of the administrative handlers for those events. The controller receives the notifications from the agent, decides (with business rules - possible by asking a person using a UI) how to respond to the event and calls back to the agent via the HTTP API. Of course, the controller may also initiate events (e.g. messaging another agent) by calling that same API. @@ -23,7 +23,7 @@ The sections below detail the internals of the ACA-Py and it's configurable elem **Aries cloud agent** implement services to manage the execution of DIDComm messaging protocols for interacting with other DIDComm agents, and exposes an administrative HTTP API that supports a controller to direct how the agent should respond to messaging events. The agent relies on the controller to provide the business rules for handling the messaging events, and to initiate the execution of new DIDComm protocol instances. The internals of an ACA-Py instance is diagramed below. -![ACA-Py Agent Internals](assets/deploymentModel-agent.png "ACA-Py Agent Internals") +![ACA-Py Agent Internals](/assets/deploymentModel-agent.png "ACA-Py Agent Internals") Instances of the Aries cloud agents are configured with the following sub-components: @@ -41,7 +41,7 @@ Instances of the Aries cloud agents are configured with the following sub-compon A controller provides the personality of Aries cloud agent instance - the business logic (human, machine or rules driven) that drive the behaviour of the agent. The controller’s “Business Logic” in a cloud agent could be built into the controller app, could be an integration back to an enterprise system, or even a user interface for an individual. In all cases, the business logic provide responses to agent events or initiates agent actions. A deployed controller talks to a single Aries cloud agent deployment and manages the configuration of that agent. Both can be configured and deployed to support horizontal scaling. -![Controller Internals](assets/deploymentModel-controller.png "Controller Internals") +![Controller Internals](/assets/deploymentModel-controller.png "Controller Internals") Generically, a controller is a web app invoked by HTTP webhook calls from its corresponding Aries cloud agent and invoking the DIDComm administration capabilities of the Aries cloud agent by calling the REST API exposed by that cloud agent. As well as responding to Aries cloud agent events, the controller initiates DIDComm protocol instances using the same REST API. diff --git a/docs/README.md b/docs/README.md index 9b329f179f..9ba9be2f96 100644 --- a/docs/README.md +++ b/docs/README.md @@ -54,7 +54,7 @@ Once generated, go into the `_build` folder and open `index.html` in a browser. This is the hard part; looking for errors in docstrings added by devs. Some tips: - Ignore any errors in .md files -- Ignore the set of errors that indicate that "GettingStarted..." markdown files are included +- Ignore the warnings about including `docs/README.md` - Ignore an dist-package errors Other than that, please investigate and fix things that you find. If there are fixes, it's usually @@ -67,8 +67,7 @@ in the source code, starting from the root `../aries_cloudagent` folder. However are not picked up automatically from the root and have to be manually added to `index.rst`. To do that: * Get a list of all generated modules by running: `ls generated | grep "aries_cloudagent.[a-z]*.rst"` -* Compare that list with the modules listed in the "Subpackages" section of the left side menu in your browser, -including any listed below the "Submodules". +* Compare that list with the modules listed in the "Subpackages" section of the left side menu in your browser, including any listed below the "Submodules". If any are missing, you likely need to add them to the `index.rst` file in the `toctree` section of the file. You will see there are already several instances of that, notably "connections" and "protocols". diff --git a/docs/index.rst b/docs/index.rst index b6ec1f06cf..735ffae8c7 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -19,10 +19,10 @@ GitHub Repo. If you are getting started with verifiable credentials or Aries, we recommend that you start with this `verifiable credentials and agents getting started guide -`_. +`_. Want to quick overview of the deployment model for ACA-Py? See -`this document `_. +`this document `_. To investigate the code, use search or click the package links in the left menu to drill into the modules, subpackages and submodules that make up ACA-Py. @@ -42,14 +42,14 @@ at the `issuer `_, `verifier `_ packages. Please see the `ACA-Py Contribution guidelines -`_ +`_ for how to contribute to ACA-Py, including for how to submit issues about ACA-Py. .. toctree:: :maxdepth: 3 :caption: Aries Cloud Agent Python - Modules - generated/aries_cloudagent + generated/modules Indices and tables ================== From bad0c8835035c4a8b83e6d4841d01f1bcd1679c8 Mon Sep 17 00:00:00 2001 From: sklump Date: Fri, 19 Feb 2021 18:50:41 +0000 Subject: [PATCH 060/243] support json, links/sha256 encoding for attachment deco Signed-off-by: sklump --- .../messaging/decorators/attach_decorator.py | 52 ++++++++++++-- .../decorators/tests/test_attach_decorator.py | 31 +++++++- .../v2_0/messages/tests/test_cred_issue.py | 4 +- .../v2_0/messages/tests/test_cred_offer.py | 20 +----- .../v2_0/messages/tests/test_cred_proposal.py | 12 +--- .../v2_0/messages/tests/test_cred_request.py | 71 +++++++++++++++---- .../v2_0/tests/test_manager.py | 4 +- .../storage/tests/test_indy_storage.py | 27 +++++++ 8 files changed, 166 insertions(+), 55 deletions(-) diff --git a/aries_cloudagent/messaging/decorators/attach_decorator.py b/aries_cloudagent/messaging/decorators/attach_decorator.py index e0ecfcb62c..273f7ef201 100644 --- a/aries_cloudagent/messaging/decorators/attach_decorator.py +++ b/aries_cloudagent/messaging/decorators/attach_decorator.py @@ -228,7 +228,7 @@ def __init__( *, jws_: AttachDecoratorDataJWS = None, sha256_: str = None, - links_: Union[list, str] = None, + links_: Union[Sequence[str], str] = None, base64_: str = None, json_: dict = None, ): @@ -244,7 +244,7 @@ def __init__( Args: jws_: detached JSON Web Signature over base64 or linked attachment content sha256_: optional sha-256 hash for content - links_: list or single URL of hyperlinks + links_: URL or list of URLs base64_: base64 encoded content for inclusion json_: dict content for inclusion as json @@ -258,7 +258,7 @@ def __init__( elif json_: self.json_ = json_ else: - assert isinstance(links_, (str, list)) + assert isinstance(links_, (str, Sequence)) self.links_ = [links_] if isinstance(links_, str) else list(links_) if sha256_: self.sha256_ = sha256_ @@ -550,15 +550,17 @@ def content(self): """ Return attachment content. - Returns: data attachment's encoded dict, decoded if necessary and json-loaded + Returns: data attachment, decoded if necessary and json-loaded, or data links """ if hasattr(self.data, "base64_"): return json.loads(b64_to_bytes(self.data.base64)) elif hasattr(self.data, "json_"): return self.data.json + elif hasattr(self.data, "links_"): + return self.data.links # fetching would be async; we want a property here else: - raise ValueError("Not supported") + return None @classmethod def data_base64( @@ -634,6 +636,46 @@ def data_json( data=AttachDecoratorData(json_=mapping), ) + @classmethod + def data_links( + cls, + links: Union[str, Sequence[str]], + sha256: str = None, + *, + ident: str = None, + mime_type: str = None, + description: str = None, + filename: str = None, + lastmod_time: str = None, + byte_count: int = None, + ): + """ + Create `AttachDecorator` instance on json-encoded data from input mapping. + + Given message object (dict), JSON dump, and embed + it as data; mark `application/json` MIME type. + + Args: + links: URL or list of URLs + sha256: optional sha-256 hash for content + ident: optional attachment identifier (default random UUID4) + mime_type: optional MIME type + description: optional attachment description + filename: optional attachment filename + lastmod_time: optional attachment last modification time + byte_count: optional attachment byte count + + """ + return AttachDecorator( + ident=ident or str(uuid.uuid4()), + description=description, + filename=filename, + mime_type=mime_type or "application/json", + lastmod_time=lastmod_time, + byte_count=byte_count, + data=AttachDecoratorData(sha256_=sha256, links_=links), + ) + class AttachDecoratorSchema(BaseModelSchema): """Attach decorator schema used in serialization/deserialization.""" diff --git a/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py b/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py index 5ff305e3ce..cd9b5fb001 100644 --- a/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py +++ b/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py @@ -306,6 +306,7 @@ def test_serialize_load_appended_links(self): assert decorator.data == DATA_LINKS def test_content(self): + # data.base64 deco_b64 = AttachDecorator.data_base64( mapping=INDY_CRED, ident=IDENT, @@ -328,6 +329,7 @@ def test_content(self): plain_json = AttachDecoratorData(json_=json.dumps({"sample": "data"})) assert deco_b64.data != plain_json + # data.json deco_json = AttachDecorator.data_json( mapping=INDY_CRED, ident=IDENT, @@ -350,6 +352,30 @@ def test_content(self): plain_json = AttachDecoratorData(json_=json.dumps({"sample": "data"})) assert deco_json.data == plain_json + # data.links + deco_links = AttachDecorator.data_links( + links="http://localhost/x.json", + ident=IDENT, + description=DESCRIPTION, + ) + assert deco_links.mime_type == "application/json" + assert hasattr(deco_links.data, "links_") + assert deco_links.data.base64 is None + assert deco_links.data.json is None + assert deco_links.data.links is not None + assert deco_links.data.sha256 is None + assert deco_links.content == ["http://localhost/x.json"] + assert deco_links.ident == IDENT + assert deco_links.description == DESCRIPTION + + deco_links_auto_id = AttachDecorator.data_links(links="http://localhost/x.json") + assert deco_links_auto_id.ident + + # cover AttachDecoratorData equality operator + plain_json = AttachDecoratorData(json_=json.dumps({"sample": "data"})) + assert deco_links.data != plain_json + + # links coverage lynx_str = AttachDecoratorData(links_="https://en.wikipedia.org/wiki/Lynx") lynx_list = AttachDecoratorData(links_=["https://en.wikipedia.org/wiki/Lynx"]) links = AttachDecoratorData(links_="https://en.wikipedia.org/wiki/Chain") @@ -358,8 +384,9 @@ def test_content(self): assert lynx_str != links assert links != DATA_LINKS # has sha256 - with pytest.raises(ValueError): - AttachDecorator(data=lynx_str).content + # formalism for no data + no_data = AttachDecorator(data=None) + assert no_data.content is None def test_data_json(self): deco_aries = AttachDecorator.data_json( diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py index ab4c11e20b..fc13501916 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py @@ -97,9 +97,7 @@ async def test_init_type(self): ) ], ) - assert ( - cred_issue.credentials_attach[0].content == TestV20CredIssue.indy_cred - ) + assert cred_issue.credentials_attach[0].content == TestV20CredIssue.indy_cred assert cred_issue.credentials_attach[0].ident # auto-generates UUID4 assert cred_issue.cred() == TestV20CredIssue.indy_cred assert cred_issue._type == DIDCommPrefix.qualify_current(CRED_20_ISSUE) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py index e513c11e7e..d45e409998 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py @@ -43,22 +43,6 @@ class TestV20CredOffer(AsyncTestCase): {"member": "James Bond", "favourite": "martini"} ) ) - offer = V20CredOffer( - comment="shaken, not stirred", - credential_preview=preview, - formats=[ - V20CredFormat( - attach_id="abc", - format_=V20CredFormat.Format.INDY, - ) - ], - offers_attach=[ - AttachDecorator.data_base64( - mapping=indy_offer, - ident="abc", - ) - ], - ) async def test_init_type(self): """Test initializer and type.""" @@ -79,9 +63,7 @@ async def test_init_type(self): ], ) assert cred_offer.credential_preview == TestV20CredOffer.preview - assert ( - cred_offer.offers_attach[0].content == TestV20CredOffer.indy_offer - ) + assert cred_offer.offers_attach[0].content == TestV20CredOffer.indy_offer assert cred_offer.offer() == TestV20CredOffer.indy_offer assert cred_offer._type == DIDCommPrefix.qualify_current(CRED_20_OFFER) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py index 2a453da868..0a9d1de0c1 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py @@ -39,9 +39,7 @@ async def test_init(self): format_=V20CredFormat.Format.INDY.aries, ) ], - filters_attach=[ - AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc") - ], + filters_attach=[AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc")], ) assert cred_proposal.credential_preview == TEST_PREVIEW assert cred_proposal.filter() == TEST_INDY_FILTER @@ -112,9 +110,7 @@ async def test_serialize(self): format_=V20CredFormat.Format.INDY.aries, ) ], - filters_attach=[ - AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc") - ], + filters_attach=[AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc")], ) cred_proposal_dict = cred_proposal.serialize() @@ -198,9 +194,7 @@ async def test_make_model(self): format_=V20CredFormat.Format.INDY.aries, ) ], - filters_attach=[ - AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc") - ], + filters_attach=[AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc")], ) data = cred_proposal.serialize() diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py index 27e0fd66fe..0430fd783f 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py @@ -34,15 +34,15 @@ class TestV20CredRequest(AsyncTestCase): }, } - cred_req = V20CredRequest( - comment="Test", - requests_attach=[ - AttachDecorator.data_base64( - mapping=indy_cred_req, - ident="abc", - ) - ], - ) + dif_cred_req = { + "credential-manifest": { + "issuer": "did:example:123", + "credential": { + "name": "Banana sticker", + "schema": "...", + }, + } + } async def test_init_type(self): """Test initializer and type.""" @@ -62,8 +62,7 @@ async def test_init_type(self): ], ) assert ( - cred_request.requests_attach[0].content - == TestV20CredRequest.indy_cred_req + cred_request.requests_attach[0].content == TestV20CredRequest.indy_cred_req ) assert cred_request.cred_request() == TestV20CredRequest.indy_cred_req assert cred_request._type == DIDCommPrefix.qualify_current(CRED_20_REQUEST) @@ -92,6 +91,7 @@ async def test_serialize(self): ], requests_attach=[ AttachDecorator.data_base64( + ident="abc", mapping=TestV20CredRequest.indy_cred_req, ) ], @@ -115,15 +115,58 @@ async def test_make_model(self): comment="Test", formats=[ V20CredFormat( - attach_id="abc", + attach_id="indy", format_=V20CredFormat.Format.INDY, - ) + ), + V20CredFormat( + attach_id="dif-json", + format_=V20CredFormat.Format.DIF, + ), ], requests_attach=[ - AttachDecorator.data_base64(TestV20CredRequest.indy_cred_req) + AttachDecorator.data_base64( + ident="indy", mapping=TestV20CredRequest.indy_cred_req + ), + AttachDecorator.data_json( + ident="dif-json", mapping=TestV20CredRequest.dif_cred_req + ), ], ) + assert ( + cred_request.cred_request(V20CredFormat.Format.INDY) + == TestV20CredRequest.indy_cred_req + ) + assert ( + cred_request.cred_request(V20CredFormat.Format.DIF) + == TestV20CredRequest.dif_cred_req + ) data = cred_request.serialize() model_instance = V20CredRequest.deserialize(data) assert isinstance(model_instance, V20CredRequest) + + cred_request = V20CredRequest( + comment="Test", + formats=[ + V20CredFormat( + attach_id="indy", + format_=V20CredFormat.Format.INDY, + ), + V20CredFormat( + attach_id="dif-links", + format_=V20CredFormat.Format.DIF, + ), + ], + requests_attach=[ + AttachDecorator.data_base64( + ident="indy", mapping=TestV20CredRequest.indy_cred_req + ), + AttachDecorator.data_links( + ident="dif-links", + links="http://10.20.30.40/cred-req.json", + ), + ], + ) + assert cred_request.cred_request(V20CredFormat.Format.DIF) == [ + "http://10.20.30.40/cred-req.json" + ] diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py index b2b8f9a2af..8c2c6a7441 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py @@ -266,9 +266,7 @@ async def test_receive_proposal(self): V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY) ], filters_attach=[ - AttachDecorator.data_base64( - {"cred_def_id": CRED_DEF_ID}, ident="0" - ) + AttachDecorator.data_base64({"cred_def_id": CRED_DEF_ID}, ident="0") ], ) diff --git a/aries_cloudagent/storage/tests/test_indy_storage.py b/aries_cloudagent/storage/tests/test_indy_storage.py index 57ca1ec87a..80cb15c513 100644 --- a/aries_cloudagent/storage/tests/test_indy_storage.py +++ b/aries_cloudagent/storage/tests/test_indy_storage.py @@ -394,6 +394,33 @@ async def test_storage_del_close(self): for coro in coros: await coro + with async_mock.patch.object( # run on event loop until complete + indy.non_secrets, "open_wallet_search", async_mock.CoroutineMock() + ) as mock_indy_open_search, async_mock.patch.object( + indy.non_secrets, "close_wallet_search", async_mock.CoroutineMock() + ) as mock_indy_close_search, async_mock.patch.object( + asyncio, "get_event_loop", async_mock.MagicMock() + ) as mock_get_event_loop: + coros = [] + mock_get_event_loop.return_value = async_mock.MagicMock( + create_task=lambda c: coros.append(c), + is_running=async_mock.MagicMock(return_value=False), + run_until_complete=async_mock.MagicMock(), + ) + mock_indy_open_search.return_value = 1 + mock_indy_close_search.side_effect = ValueError("Dave's not here") + search = storage.search_records("connection") + await search._open() + del search + assert ( + coros + and len(coros) + == mock_get_event_loop.return_value.run_until_complete.call_count + ) + # now run the cleanup task + for coro in coros: + await coro + # TODO get these to run in docker ci/cd @pytest.mark.asyncio @pytest.mark.postgres From e0408ad9654e0a78a39f65e027d8f9645af99dbf Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Fri, 19 Feb 2021 11:06:17 -0800 Subject: [PATCH 061/243] Fix docker entrypoint to support behave tags Signed-off-by: Ian Costanzo --- demo/features/0160-connection.feature | 8 ++++---- demo/run_bdd | 2 +- docker/Dockerfile.bdd | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/demo/features/0160-connection.feature b/demo/features/0160-connection.feature index 96f72b8a10..e470f3de0f 100644 --- a/demo/features/0160-connection.feature +++ b/demo/features/0160-connection.feature @@ -14,7 +14,7 @@ Feature: RFC 0160 Aries agent connection functions Examples: | Acme_capabilities | Bob_capabilities | | --public-did | | - # | --public-did --did-exchange | --did-exchange | - # | --public-did --mediation | --mediation | - # | --public-did --multitenant | --multitenant | - # | --public-did --mediation --multitenant | --mediation --multitenant | + | --public-did --did-exchange | --did-exchange | + | --public-did --mediation | --mediation | + | --public-did --multitenant | --multitenant | + | --public-did --mediation --multitenant | --mediation --multitenant | diff --git a/demo/run_bdd b/demo/run_bdd index 93b64157c9..0fd0f4c339 100755 --- a/demo/run_bdd +++ b/demo/run_bdd @@ -227,4 +227,4 @@ $DOCKER run --name $AGENT --rm -it ${DOCKER_OPTS} \ -p 0.0.0.0:$AGENT_PORT_RANGE:$AGENT_PORT_RANGE \ -v "/$(pwd)/../logs:/home/indy/logs" \ $DOCKER_ENV \ - aries-bdd-image + aries-bdd-image $ARGS diff --git a/docker/Dockerfile.bdd b/docker/Dockerfile.bdd index e8a3ecd2b9..eb4db18a53 100644 --- a/docker/Dockerfile.bdd +++ b/docker/Dockerfile.bdd @@ -6,4 +6,4 @@ RUN pip3 install --no-cache-dir -r demo/requirements.behave.txt # ENTRYPOINT ["bash", "-c", "demo/ngrok-wait.sh \"$@\"", "--"] WORKDIR ./demo RUN chmod a+w . -ENTRYPOINT ["behave", "\"$@\""] +ENTRYPOINT ["behave"] From 634748ad24f42444611b5bb2d9ac948cdfa3ff6d Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Fri, 19 Feb 2021 11:31:02 -0800 Subject: [PATCH 062/243] Moved back GettingStartedAriesDev and assets folder and eliminated all RTD warnings by excluing folders Signed-off-by: Stephen Curran --- AdminAPI.md | 2 +- DevReadMe.md | 4 ++-- Mediation.md | 2 +- Multitenancy.md | 2 +- README.md | 8 ++++---- deploymentModel.md | 6 +++--- .../GettingStartedAriesDev}/AgentConnections.md | 0 .../AriesAgentArchitecture.md | 2 +- .../GettingStartedAriesDev}/AriesBasics.md | 0 .../GettingStartedAriesDev}/AriesBigPicture.md | 0 .../GettingStartedAriesDev}/AriesDeveloperDemos.md | 0 .../GettingStartedAriesDev}/AriesMessaging.md | 0 .../GettingStartedAriesDev}/AriesRoutingExample.md | 0 .../GettingStartedAriesDev}/ConnectIndyNetwork.md | 0 .../GettingStartedAriesDev}/CredentialRevocation.md | 0 .../GettingStartedAriesDev}/DIDcommMsgs.md | 0 .../DecentralizedIdentityDemos.md | 0 .../GettingStartedAriesDev}/IndyAriesDevOptions.md | 0 .../GettingStartedAriesDev}/IndyBasics.md | 0 .../IssuingIndyCredentials.md | 0 .../GettingStartedAriesDev}/PresentingIndyProofs.md | 0 .../GettingStartedAriesDev}/README.md | 0 .../GettingStartedAriesDev}/RoutingEncryption.md | 0 .../GettingStartedAriesDev}/YourOwnAriesAgent.md | 0 docs/README.md | 2 +- {assets => docs/assets}/README.md | 2 +- {assets => docs/assets}/adminApi.png | Bin {assets => docs/assets}/adminApiAuthentication.png | Bin {assets => docs/assets}/deploymentModel-agent.png | Bin {assets => docs/assets}/deploymentModel-agent.puml | 0 .../assets}/deploymentModel-controller.png | Bin .../assets}/deploymentModel-controller.puml | 0 {assets => docs/assets}/deploymentModel-full.png | Bin {assets => docs/assets}/deploymentModel-full.puml | 0 {assets => docs/assets}/genPlantuml | 0 {assets => docs/assets}/mediation-message-flow.png | Bin {assets => docs/assets}/mediation-message-flow.puml | 0 {assets => docs/assets}/multitenancyDiagram.png | Bin docs/conf.py | 7 ++++--- docs/index.rst | 2 +- 40 files changed, 20 insertions(+), 19 deletions(-) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/AgentConnections.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/AriesAgentArchitecture.md (95%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/AriesBasics.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/AriesBigPicture.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/AriesDeveloperDemos.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/AriesMessaging.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/AriesRoutingExample.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/ConnectIndyNetwork.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/CredentialRevocation.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/DIDcommMsgs.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/DecentralizedIdentityDemos.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/IndyAriesDevOptions.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/IndyBasics.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/IssuingIndyCredentials.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/PresentingIndyProofs.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/README.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/RoutingEncryption.md (100%) rename {GettingStartedAriesDev => docs/GettingStartedAriesDev}/YourOwnAriesAgent.md (100%) rename {assets => docs/assets}/README.md (86%) rename {assets => docs/assets}/adminApi.png (100%) rename {assets => docs/assets}/adminApiAuthentication.png (100%) rename {assets => docs/assets}/deploymentModel-agent.png (100%) rename {assets => docs/assets}/deploymentModel-agent.puml (100%) rename {assets => docs/assets}/deploymentModel-controller.png (100%) rename {assets => docs/assets}/deploymentModel-controller.puml (100%) rename {assets => docs/assets}/deploymentModel-full.png (100%) rename {assets => docs/assets}/deploymentModel-full.puml (100%) rename {assets => docs/assets}/genPlantuml (100%) rename {assets => docs/assets}/mediation-message-flow.png (100%) rename {assets => docs/assets}/mediation-message-flow.puml (100%) rename {assets => docs/assets}/multitenancyDiagram.png (100%) diff --git a/AdminAPI.md b/AdminAPI.md index 3e7f788371..bd43acdf62 100644 --- a/AdminAPI.md +++ b/AdminAPI.md @@ -6,7 +6,7 @@ ACA-Py provides an OpenAPI-documented REST interface for administering the agent To see the specifics of the supported endpoints as well as the expected request and response formats it is recommended to run the `aca-py` agent with the `--admin {HOST} {PORT}` and `--admin-insecure-mode` command line parameters, which exposes the OpenAPI UI on the provided port for interaction via a web browser. Production deployments should run the agent with `--admin-api-key {KEY}` and add the `X-API-Key: {KEY}` header to all requests instead of running the agent with the `--admin-insecure-mode` parameter. -![Admin API Screenshot](/assets/adminApi.png) +![Admin API Screenshot](/doc/assets/adminApi.png) To invoke a specific method: diff --git a/DevReadMe.md b/DevReadMe.md index 9e20b9d63c..dda256874c 100644 --- a/DevReadMe.md +++ b/DevReadMe.md @@ -27,11 +27,11 @@ See the [README](README.md) for details about this repository and information ab Aries Cloud Agent Python (ACA-Py) is a configurable, extensible, non-mobile Aries agent that implements an easy way for developers to build decentralized identity services that use verifiable credentials. -The information on this page assumes you are developer with a background in decentralized identity, Indy, Aries and verifiable credentials. If you aren't familiar with those concepts and projects, please use our [Getting Started Guide](GettingStartedAriesDev/README.md) to learn more. +The information on this page assumes you are developer with a background in decentralized identity, Indy, Aries and verifiable credentials. If you aren't familiar with those concepts and projects, please use our [Getting Started Guide](/docs/GettingStartedAriesDev/README.md) to learn more. ## Developer Demos -To put ACA-Py through its paces at the command line, checkout our [demos](GettingStartedAriesDev/AriesDeveloperDemos.md) page. +To put ACA-Py through its paces at the command line, checkout our [demos](/docs/GettingStartedAriesDev/AriesDeveloperDemos.md) page. ## Running diff --git a/Mediation.md b/Mediation.md index 9e32fe4cea..2c9c9a5e98 100644 --- a/Mediation.md +++ b/Mediation.md @@ -67,7 +67,7 @@ See [Aries RFC 0211: Coordinate Mediation Protocol](https://github.com/hyperledg ## Mediator Message Flow Overview -![Mediator Message Flow](/assets/mediation-message-flow.png) +![Mediator Message Flow](/doc/assets/mediation-message-flow.png) ## Using a Mediator diff --git a/Multitenancy.md b/Multitenancy.md index 78055ccfaf..756545f7b8 100644 --- a/Multitenancy.md +++ b/Multitenancy.md @@ -37,7 +37,7 @@ The wallets used by the different tenants are called **sub wallets**. A sub wall The **base wallet** however, takes on a different role and has limited functionality. Its main function is to manage the sub wallets, which can be done using the [Multi-tenant Admin API](#multi-tenant-admin-api). It stores all settings and information about the different sub wallets and will route incoming messages to the corresponding sub wallets. See [Message Routing](#message-routing) for more details. All other features are disabled for the base wallet. This means it cannot issue credentials, present proof, or do any of the other actions sub wallets can do. This is to keep a clear hierarchical difference between base and sub wallets -![Multi-tenancy Architecture](/assets/multitenancyDiagram.png) +![Multi-tenancy Architecture](/doc/assets/multitenancyDiagram.png) ### Usage diff --git a/README.md b/README.md index 800c48f205..e4129febf1 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![CircleCI](https://circleci.com/gh/hyperledger/aries-cloudagent-python.svg?style=shield)](https://circleci.com/gh/hyperledger/aries-cloudagent-python) [![codecov](https://codecov.io/gh/hyperledger/aries-cloudagent-python/branch/main/graph/badge.svg)](https://codecov.io/gh/hyperledger/aries-cloudagent-python) - + > An easy to use Aries agent for building SSI services using any language that supports sending/receiving HTTP requests. @@ -42,11 +42,11 @@ There is an [architectural deep dive webinar](https://www.youtube.com/watch?v=FX ## Installation and Usage -An ["install and go" page for developers](https://github.com/hyperledger/aries-cloudagent-python/blob/main/DevReadMe.md) is available if you are comfortable with Trust over IP and Aries concepts. ACA-Py can be run with Docker without installation (highly recommended), or can be installed [from PyPi](https://pypi.org/project/aries-cloudagent/). In the [/demo directory](https://github.com/hyperledger/aries-cloudagent-python/tree/main/demo) there is a full set of demos for developers to use in getting started, and the [demo read me](https://github.com/hyperledger/aries-cloudagent-python/blob/main/demo/README.md) is a great starting point for developers to use an "in-browser" approach to run a zero-install example. The [Read the Docs](https://aries-cloud-agent-python.readthedocs.io/en/latest/) overview is also a way to reference the modules and APIs that make up an ACA-Py instance. +An ["install and go" page for developers](https://github.com/hyperledger/aries-cloudagent-python/blob/main/DevReadMe.md) is available if you are comfortable with Trust over IP and Aries concepts. ACA-Py can be run with Docker without installation (highly recommended), or can be installed [from PyPi](https://pypi.org/project/aries-cloudagent/). In the [/demo directory](/demo) there is a full set of demos for developers to use in getting started, and the [demo read me](/demo/README.md) is a great starting point for developers to use an "in-browser" approach to run a zero-install example. The [Read the Docs](https://aries-cloud-agent-python.readthedocs.io/en/latest/) overview is also a way to reference the modules and APIs that make up an ACA-Py instance. -For those new to SSI, Indy and Aries there is a [Getting Started Guide](https://github.com/hyperledger/aries-cloudagent-python/blob/main/GettingStartedAriesDev/README.md) that will take you from knowing next to nothing about decentralized identity to developing Aries-based business apps and services. You’ll run some Indy apps, ACA-Py apps and developer-oriented demos. The guide has a table of contents so you can skip the parts you already know. +For those new to SSI, Indy and Aries there is a [Getting Started Guide](/docs/GettingStartedAriesDev/README.md) that will take you from knowing next to nothing about decentralized identity to developing Aries-based business apps and services. You’ll run some Indy apps, ACA-Py apps and developer-oriented demos. The guide has a table of contents so you can skip the parts you already know. -Finally, if you’re not sure where your focus should be—building apps? Aries? Indy? Indy’s Blockchain? Ursa?—then the ["What should I work on?" document](https://github.com/hyperledger/aries-cloudagent-python/blob/main/GettingStartedAriesDev/IndyAriesDevOptions.md) is a good starting point. It goes through the technical stack and shows how the projects fit together, so you can decide where you want to focus your efforts. +Finally, if you’re not sure where your focus should be—building apps? Aries? Indy? Indy’s Blockchain? Ursa?—then the ["What should I work on?" document](/docs/GettingStartedAriesDev/IndyAriesDevOptions.md) is a good starting point. It goes through the technical stack and shows how the projects fit together, so you can decide where you want to focus your efforts. ## About The API diff --git a/deploymentModel.md b/deploymentModel.md index 0b57eba44a..16c0bdaad6 100644 --- a/deploymentModel.md +++ b/deploymentModel.md @@ -7,7 +7,7 @@ This document is a "concept of operations" for an instance of an Aries cloud agent deployed from the primary artifact (a PyPi package) produced by this repo. In such a deployment there are **always** two components - a configured agent itself, and a controller that injects into that agent the business rules for the particular agent instance (see diagram). -![ACA-Py Deployment Overview](/assets/deploymentModel-full.png "ACA-Py Deployment Overview") +![ACA-Py Deployment Overview](/doc/assets/deploymentModel-full.png "ACA-Py Deployment Overview") The deployed agent messages with other agents via DIDComm protocols, and as events associated with those messages occur, sends webhook HTTP notifications to the controller. The agent also exposes for the controller's exclusive use an HTTP API covering all of the administrative handlers for those events. The controller receives the notifications from the agent, decides (with business rules - possible by asking a person using a UI) how to respond to the event and calls back to the agent via the HTTP API. Of course, the controller may also initiate events (e.g. messaging another agent) by calling that same API. @@ -23,7 +23,7 @@ The sections below detail the internals of the ACA-Py and it's configurable elem **Aries cloud agent** implement services to manage the execution of DIDComm messaging protocols for interacting with other DIDComm agents, and exposes an administrative HTTP API that supports a controller to direct how the agent should respond to messaging events. The agent relies on the controller to provide the business rules for handling the messaging events, and to initiate the execution of new DIDComm protocol instances. The internals of an ACA-Py instance is diagramed below. -![ACA-Py Agent Internals](/assets/deploymentModel-agent.png "ACA-Py Agent Internals") +![ACA-Py Agent Internals](/doc/assets/deploymentModel-agent.png "ACA-Py Agent Internals") Instances of the Aries cloud agents are configured with the following sub-components: @@ -41,7 +41,7 @@ Instances of the Aries cloud agents are configured with the following sub-compon A controller provides the personality of Aries cloud agent instance - the business logic (human, machine or rules driven) that drive the behaviour of the agent. The controller’s “Business Logic” in a cloud agent could be built into the controller app, could be an integration back to an enterprise system, or even a user interface for an individual. In all cases, the business logic provide responses to agent events or initiates agent actions. A deployed controller talks to a single Aries cloud agent deployment and manages the configuration of that agent. Both can be configured and deployed to support horizontal scaling. -![Controller Internals](/assets/deploymentModel-controller.png "Controller Internals") +![Controller Internals](/doc/assets/deploymentModel-controller.png "Controller Internals") Generically, a controller is a web app invoked by HTTP webhook calls from its corresponding Aries cloud agent and invoking the DIDComm administration capabilities of the Aries cloud agent by calling the REST API exposed by that cloud agent. As well as responding to Aries cloud agent events, the controller initiates DIDComm protocol instances using the same REST API. diff --git a/GettingStartedAriesDev/AgentConnections.md b/docs/GettingStartedAriesDev/AgentConnections.md similarity index 100% rename from GettingStartedAriesDev/AgentConnections.md rename to docs/GettingStartedAriesDev/AgentConnections.md diff --git a/GettingStartedAriesDev/AriesAgentArchitecture.md b/docs/GettingStartedAriesDev/AriesAgentArchitecture.md similarity index 95% rename from GettingStartedAriesDev/AriesAgentArchitecture.md rename to docs/GettingStartedAriesDev/AriesAgentArchitecture.md index 3816f27cc7..b99e827b43 100644 --- a/GettingStartedAriesDev/AriesAgentArchitecture.md +++ b/docs/GettingStartedAriesDev/AriesAgentArchitecture.md @@ -2,7 +2,7 @@ This section talks in particular about the architecture of this Aries cloud agent implementation. An instance of an Aries agent is actually made up of to two parts - the agent itself and a controller. -![ACA-Py Deployment Overview](/assets/deploymentModel-full.png "ACA-Py Deployment Overview") +![ACA-Py Deployment Overview](/doc/assets/deploymentModel-full.png "ACA-Py Deployment Overview") The agent handles all of the core Aries functionality such as interacting with other agents, managing secure storage, sending event notifications to, and receiving directions from, the controller. The controller provides the business logic that defines how that particular agent instance behaves--how to respond to events in the agent, and when to trigger the agent to initiate events. The controller might be a web or native user interface for a person or it might be coded business rules driven by an enterprise system. diff --git a/GettingStartedAriesDev/AriesBasics.md b/docs/GettingStartedAriesDev/AriesBasics.md similarity index 100% rename from GettingStartedAriesDev/AriesBasics.md rename to docs/GettingStartedAriesDev/AriesBasics.md diff --git a/GettingStartedAriesDev/AriesBigPicture.md b/docs/GettingStartedAriesDev/AriesBigPicture.md similarity index 100% rename from GettingStartedAriesDev/AriesBigPicture.md rename to docs/GettingStartedAriesDev/AriesBigPicture.md diff --git a/GettingStartedAriesDev/AriesDeveloperDemos.md b/docs/GettingStartedAriesDev/AriesDeveloperDemos.md similarity index 100% rename from GettingStartedAriesDev/AriesDeveloperDemos.md rename to docs/GettingStartedAriesDev/AriesDeveloperDemos.md diff --git a/GettingStartedAriesDev/AriesMessaging.md b/docs/GettingStartedAriesDev/AriesMessaging.md similarity index 100% rename from GettingStartedAriesDev/AriesMessaging.md rename to docs/GettingStartedAriesDev/AriesMessaging.md diff --git a/GettingStartedAriesDev/AriesRoutingExample.md b/docs/GettingStartedAriesDev/AriesRoutingExample.md similarity index 100% rename from GettingStartedAriesDev/AriesRoutingExample.md rename to docs/GettingStartedAriesDev/AriesRoutingExample.md diff --git a/GettingStartedAriesDev/ConnectIndyNetwork.md b/docs/GettingStartedAriesDev/ConnectIndyNetwork.md similarity index 100% rename from GettingStartedAriesDev/ConnectIndyNetwork.md rename to docs/GettingStartedAriesDev/ConnectIndyNetwork.md diff --git a/GettingStartedAriesDev/CredentialRevocation.md b/docs/GettingStartedAriesDev/CredentialRevocation.md similarity index 100% rename from GettingStartedAriesDev/CredentialRevocation.md rename to docs/GettingStartedAriesDev/CredentialRevocation.md diff --git a/GettingStartedAriesDev/DIDcommMsgs.md b/docs/GettingStartedAriesDev/DIDcommMsgs.md similarity index 100% rename from GettingStartedAriesDev/DIDcommMsgs.md rename to docs/GettingStartedAriesDev/DIDcommMsgs.md diff --git a/GettingStartedAriesDev/DecentralizedIdentityDemos.md b/docs/GettingStartedAriesDev/DecentralizedIdentityDemos.md similarity index 100% rename from GettingStartedAriesDev/DecentralizedIdentityDemos.md rename to docs/GettingStartedAriesDev/DecentralizedIdentityDemos.md diff --git a/GettingStartedAriesDev/IndyAriesDevOptions.md b/docs/GettingStartedAriesDev/IndyAriesDevOptions.md similarity index 100% rename from GettingStartedAriesDev/IndyAriesDevOptions.md rename to docs/GettingStartedAriesDev/IndyAriesDevOptions.md diff --git a/GettingStartedAriesDev/IndyBasics.md b/docs/GettingStartedAriesDev/IndyBasics.md similarity index 100% rename from GettingStartedAriesDev/IndyBasics.md rename to docs/GettingStartedAriesDev/IndyBasics.md diff --git a/GettingStartedAriesDev/IssuingIndyCredentials.md b/docs/GettingStartedAriesDev/IssuingIndyCredentials.md similarity index 100% rename from GettingStartedAriesDev/IssuingIndyCredentials.md rename to docs/GettingStartedAriesDev/IssuingIndyCredentials.md diff --git a/GettingStartedAriesDev/PresentingIndyProofs.md b/docs/GettingStartedAriesDev/PresentingIndyProofs.md similarity index 100% rename from GettingStartedAriesDev/PresentingIndyProofs.md rename to docs/GettingStartedAriesDev/PresentingIndyProofs.md diff --git a/GettingStartedAriesDev/README.md b/docs/GettingStartedAriesDev/README.md similarity index 100% rename from GettingStartedAriesDev/README.md rename to docs/GettingStartedAriesDev/README.md diff --git a/GettingStartedAriesDev/RoutingEncryption.md b/docs/GettingStartedAriesDev/RoutingEncryption.md similarity index 100% rename from GettingStartedAriesDev/RoutingEncryption.md rename to docs/GettingStartedAriesDev/RoutingEncryption.md diff --git a/GettingStartedAriesDev/YourOwnAriesAgent.md b/docs/GettingStartedAriesDev/YourOwnAriesAgent.md similarity index 100% rename from GettingStartedAriesDev/YourOwnAriesAgent.md rename to docs/GettingStartedAriesDev/YourOwnAriesAgent.md diff --git a/docs/README.md b/docs/README.md index 9ba9be2f96..628db74f00 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,7 +3,7 @@ This `docs` folder has several kinds of documentation about Aries Cloud Agent - Python (ACA-Py). If you are interested in becoming an Aries Developer and want to use ACA-Py to get started, you -can start by looking at this [Getting Started](GettingStartedAriesDev/README.md) guide. It covers +can start by looking at this [Getting Started](/docs/GettingStartedAriesDev/README.md) guide. It covers a range of topics necessary to understanding how Aries agents work, particularly ACA-Py. The recommended developer reference documentation is generated from this folder and hosted diff --git a/assets/README.md b/docs/assets/README.md similarity index 86% rename from assets/README.md rename to docs/assets/README.md index d3501ddd75..bfc6315622 100644 --- a/assets/README.md +++ b/docs/assets/README.md @@ -1,6 +1,6 @@ # Assets Folder for Documentation -Put an assets (images, source for images, videos, etc.) in this folder to be referenced in the various documents for this repo. +Put any assets (images, source for images, videos, etc.) in this folder to be referenced in the various documents for this repo. ## Plantuml Source and Images diff --git a/assets/adminApi.png b/docs/assets/adminApi.png similarity index 100% rename from assets/adminApi.png rename to docs/assets/adminApi.png diff --git a/assets/adminApiAuthentication.png b/docs/assets/adminApiAuthentication.png similarity index 100% rename from assets/adminApiAuthentication.png rename to docs/assets/adminApiAuthentication.png diff --git a/assets/deploymentModel-agent.png b/docs/assets/deploymentModel-agent.png similarity index 100% rename from assets/deploymentModel-agent.png rename to docs/assets/deploymentModel-agent.png diff --git a/assets/deploymentModel-agent.puml b/docs/assets/deploymentModel-agent.puml similarity index 100% rename from assets/deploymentModel-agent.puml rename to docs/assets/deploymentModel-agent.puml diff --git a/assets/deploymentModel-controller.png b/docs/assets/deploymentModel-controller.png similarity index 100% rename from assets/deploymentModel-controller.png rename to docs/assets/deploymentModel-controller.png diff --git a/assets/deploymentModel-controller.puml b/docs/assets/deploymentModel-controller.puml similarity index 100% rename from assets/deploymentModel-controller.puml rename to docs/assets/deploymentModel-controller.puml diff --git a/assets/deploymentModel-full.png b/docs/assets/deploymentModel-full.png similarity index 100% rename from assets/deploymentModel-full.png rename to docs/assets/deploymentModel-full.png diff --git a/assets/deploymentModel-full.puml b/docs/assets/deploymentModel-full.puml similarity index 100% rename from assets/deploymentModel-full.puml rename to docs/assets/deploymentModel-full.puml diff --git a/assets/genPlantuml b/docs/assets/genPlantuml similarity index 100% rename from assets/genPlantuml rename to docs/assets/genPlantuml diff --git a/assets/mediation-message-flow.png b/docs/assets/mediation-message-flow.png similarity index 100% rename from assets/mediation-message-flow.png rename to docs/assets/mediation-message-flow.png diff --git a/assets/mediation-message-flow.puml b/docs/assets/mediation-message-flow.puml similarity index 100% rename from assets/mediation-message-flow.puml rename to docs/assets/mediation-message-flow.puml diff --git a/assets/multitenancyDiagram.png b/docs/assets/multitenancyDiagram.png similarity index 100% rename from assets/multitenancyDiagram.png rename to docs/assets/multitenancyDiagram.png diff --git a/docs/conf.py b/docs/conf.py index 99fae6a9f7..9040c6e54e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -94,7 +94,8 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "README.md", + "GettingStartedAriesDev/*", "assets/*"] # The name of the Pygments (syntax highlighting) style to use. pygments_style = None @@ -110,7 +111,7 @@ # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] +html_static_path = [] # Custom sidebar templates, must be a dictionary that maps document names # to template names. @@ -214,7 +215,7 @@ # epub_uid = '' # A list of files that should not be packed into the epub file. -epub_exclude_files = ["search.html"] +epub_exclude_files = ["search.html", "README.md"] # -- Extension configuration ------------------------------------------------- diff --git a/docs/index.rst b/docs/index.rst index 735ffae8c7..bb997d2876 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -19,7 +19,7 @@ GitHub Repo. If you are getting started with verifiable credentials or Aries, we recommend that you start with this `verifiable credentials and agents getting started guide -`_. +`_. Want to quick overview of the deployment model for ACA-Py? See `this document `_. From ce91d85d9bc41619813334161845cbf798595f9d Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Fri, 19 Feb 2021 11:40:06 -0800 Subject: [PATCH 063/243] Correct doc to docs for assets. Doh! Signed-off-by: Stephen Curran --- AdminAPI.md | 2 +- Mediation.md | 2 +- Multitenancy.md | 4 ++-- deploymentModel.md | 6 +++--- docs/GettingStartedAriesDev/AriesAgentArchitecture.md | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/AdminAPI.md b/AdminAPI.md index bd43acdf62..92e6683a17 100644 --- a/AdminAPI.md +++ b/AdminAPI.md @@ -6,7 +6,7 @@ ACA-Py provides an OpenAPI-documented REST interface for administering the agent To see the specifics of the supported endpoints as well as the expected request and response formats it is recommended to run the `aca-py` agent with the `--admin {HOST} {PORT}` and `--admin-insecure-mode` command line parameters, which exposes the OpenAPI UI on the provided port for interaction via a web browser. Production deployments should run the agent with `--admin-api-key {KEY}` and add the `X-API-Key: {KEY}` header to all requests instead of running the agent with the `--admin-insecure-mode` parameter. -![Admin API Screenshot](/doc/assets/adminApi.png) +![Admin API Screenshot](/docs/assets/adminApi.png) To invoke a specific method: diff --git a/Mediation.md b/Mediation.md index 2c9c9a5e98..425996e16e 100644 --- a/Mediation.md +++ b/Mediation.md @@ -67,7 +67,7 @@ See [Aries RFC 0211: Coordinate Mediation Protocol](https://github.com/hyperledg ## Mediator Message Flow Overview -![Mediator Message Flow](/doc/assets/mediation-message-flow.png) +![Mediator Message Flow](/docs/assets/mediation-message-flow.png) ## Using a Mediator diff --git a/Multitenancy.md b/Multitenancy.md index 756545f7b8..fbec89481c 100644 --- a/Multitenancy.md +++ b/Multitenancy.md @@ -37,7 +37,7 @@ The wallets used by the different tenants are called **sub wallets**. A sub wall The **base wallet** however, takes on a different role and has limited functionality. Its main function is to manage the sub wallets, which can be done using the [Multi-tenant Admin API](#multi-tenant-admin-api). It stores all settings and information about the different sub wallets and will route incoming messages to the corresponding sub wallets. See [Message Routing](#message-routing) for more details. All other features are disabled for the base wallet. This means it cannot issue credentials, present proof, or do any of the other actions sub wallets can do. This is to keep a clear hierarchical difference between base and sub wallets -![Multi-tenancy Architecture](/doc/assets/multitenancyDiagram.png) +![Multi-tenancy Architecture](/docs/assets/multitenancyDiagram.png) ### Usage @@ -223,4 +223,4 @@ For deterministic JWT creation and verification between restarts and multiple in When using the SwaggerUI you can click the :lock: icon next to each of the endpoints or the `Authorize` button at the top to set the correct authentication headers. Make sure to also include the `Bearer ` part in the input field. This won't be automatically added. -![](/assets/adminApiAuthentication.png) +![](/docs/assets/adminApiAuthentication.png) diff --git a/deploymentModel.md b/deploymentModel.md index 16c0bdaad6..ecc37d7575 100644 --- a/deploymentModel.md +++ b/deploymentModel.md @@ -7,7 +7,7 @@ This document is a "concept of operations" for an instance of an Aries cloud agent deployed from the primary artifact (a PyPi package) produced by this repo. In such a deployment there are **always** two components - a configured agent itself, and a controller that injects into that agent the business rules for the particular agent instance (see diagram). -![ACA-Py Deployment Overview](/doc/assets/deploymentModel-full.png "ACA-Py Deployment Overview") +![ACA-Py Deployment Overview](/docs/assets/deploymentModel-full.png "ACA-Py Deployment Overview") The deployed agent messages with other agents via DIDComm protocols, and as events associated with those messages occur, sends webhook HTTP notifications to the controller. The agent also exposes for the controller's exclusive use an HTTP API covering all of the administrative handlers for those events. The controller receives the notifications from the agent, decides (with business rules - possible by asking a person using a UI) how to respond to the event and calls back to the agent via the HTTP API. Of course, the controller may also initiate events (e.g. messaging another agent) by calling that same API. @@ -23,7 +23,7 @@ The sections below detail the internals of the ACA-Py and it's configurable elem **Aries cloud agent** implement services to manage the execution of DIDComm messaging protocols for interacting with other DIDComm agents, and exposes an administrative HTTP API that supports a controller to direct how the agent should respond to messaging events. The agent relies on the controller to provide the business rules for handling the messaging events, and to initiate the execution of new DIDComm protocol instances. The internals of an ACA-Py instance is diagramed below. -![ACA-Py Agent Internals](/doc/assets/deploymentModel-agent.png "ACA-Py Agent Internals") +![ACA-Py Agent Internals](/docs/assets/deploymentModel-agent.png "ACA-Py Agent Internals") Instances of the Aries cloud agents are configured with the following sub-components: @@ -41,7 +41,7 @@ Instances of the Aries cloud agents are configured with the following sub-compon A controller provides the personality of Aries cloud agent instance - the business logic (human, machine or rules driven) that drive the behaviour of the agent. The controller’s “Business Logic” in a cloud agent could be built into the controller app, could be an integration back to an enterprise system, or even a user interface for an individual. In all cases, the business logic provide responses to agent events or initiates agent actions. A deployed controller talks to a single Aries cloud agent deployment and manages the configuration of that agent. Both can be configured and deployed to support horizontal scaling. -![Controller Internals](/doc/assets/deploymentModel-controller.png "Controller Internals") +![Controller Internals](/docs/assets/deploymentModel-controller.png "Controller Internals") Generically, a controller is a web app invoked by HTTP webhook calls from its corresponding Aries cloud agent and invoking the DIDComm administration capabilities of the Aries cloud agent by calling the REST API exposed by that cloud agent. As well as responding to Aries cloud agent events, the controller initiates DIDComm protocol instances using the same REST API. diff --git a/docs/GettingStartedAriesDev/AriesAgentArchitecture.md b/docs/GettingStartedAriesDev/AriesAgentArchitecture.md index b99e827b43..ecb6a6dcee 100644 --- a/docs/GettingStartedAriesDev/AriesAgentArchitecture.md +++ b/docs/GettingStartedAriesDev/AriesAgentArchitecture.md @@ -2,7 +2,7 @@ This section talks in particular about the architecture of this Aries cloud agent implementation. An instance of an Aries agent is actually made up of to two parts - the agent itself and a controller. -![ACA-Py Deployment Overview](/doc/assets/deploymentModel-full.png "ACA-Py Deployment Overview") +![ACA-Py Deployment Overview](/docs/assets/deploymentModel-full.png "ACA-Py Deployment Overview") The agent handles all of the core Aries functionality such as interacting with other agents, managing secure storage, sending event notifications to, and receiving directions from, the controller. The controller provides the business logic that defines how that particular agent instance behaves--how to respond to events in the agent, and when to trigger the agent to initiate events. The controller might be a web or native user interface for a person or it might be coded business rules driven by an enterprise system. From 0722b22e459a461f42f5fd56f6e643b506a9b9c7 Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Fri, 19 Feb 2021 11:43:12 -0800 Subject: [PATCH 064/243] Black fix to sphinx conf.py Signed-off-by: Stephen Curran --- docs/conf.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 9040c6e54e..db70e39049 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -94,8 +94,15 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "README.md", - "GettingStartedAriesDev/*", "assets/*"] +exclude_patterns = [ + "_build", + "Thumbs.db", + ".DS_Store", + "README.md", + "GettingStartedAriesDev/*", + "assets/*", +] + # The name of the Pygments (syntax highlighting) style to use. pygments_style = None From 22d631b0850e46d5d67e5c3d92e8801fc94d2f34 Mon Sep 17 00:00:00 2001 From: Stephen Curran Date: Fri, 19 Feb 2021 11:53:22 -0800 Subject: [PATCH 065/243] Another try at fixing Black Signed-off-by: Stephen Curran --- docs/conf.py | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index db70e39049..4e19b7d0fc 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -102,7 +102,6 @@ "GettingStartedAriesDev/*", "assets/*", ] - # The name of the Pygments (syntax highlighting) style to use. pygments_style = None From a1f1db68f105574236fe6ba29f63d1ab83f7b2ce Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Fri, 19 Feb 2021 16:22:16 -0800 Subject: [PATCH 066/243] Start of endorser tests (start agents with appropriate DIDs) Signed-off-by: Ian Costanzo --- demo/bdd_support/agent_backchannel_client.py | 116 +++++++------------ demo/features/0586-sign-transaction.feature | 17 +++ demo/features/steps/0036-issue-credential.py | 5 +- demo/features/steps/0037-present-proof.py | 5 +- demo/features/steps/0160-connection.py | 5 +- demo/features/steps/0586-sign-transaction.py | 54 +++++++++ demo/runners/agent_container.py | 56 +++++++++ demo/runners/support/agent.py | 3 +- 8 files changed, 174 insertions(+), 87 deletions(-) diff --git a/demo/bdd_support/agent_backchannel_client.py b/demo/bdd_support/agent_backchannel_client.py index 75662f9163..d36a896353 100644 --- a/demo/bdd_support/agent_backchannel_client.py +++ b/demo/bdd_support/agent_backchannel_client.py @@ -8,6 +8,7 @@ ClientTimeout, ) import json +import os from time import sleep import uuid @@ -75,6 +76,19 @@ def aries_container_initialize( ) +def agent_container_register_did( + the_container: AgentContainer, + did: str, + verkey: str, + role: str, +): + run_coroutine_with_args( + the_container.register_did, + did, + verkey, + role, + ) + def aries_container_terminate( the_container: AgentContainer, ): @@ -203,84 +217,32 @@ def read_presentation_data(presentation_name: str): ###################################################################### -async def make_agent_backchannel_request( - method, path, data=None, text=False, params=None -) -> (int, str): - params = {k: v for (k, v) in (params or {}).items() if v is not None} - client_session: ClientSession = ClientSession() - async with client_session.request(method, path, json=data, params=params) as resp: - resp_status = resp.status - resp_text = await resp.text() - await client_session.close() - return (resp_status, resp_text) - - -def agent_backchannel_GET(url, topic, operation=None, id=None) -> (int, str): - agent_url = url + topic + "/" - if operation: - agent_url = agent_url + operation + "/" - if id: - agent_url = agent_url + id - (resp_status, resp_text) = run_coroutine_with_kwargs( - make_agent_backchannel_request, "GET", agent_url - ) - return (resp_status, resp_text) - - -def agent_backchannel_POST( - url, topic, operation=None, id=None, data=None -) -> (int, str): - agent_url = url + topic + "/" - payload = {} - if data: - payload["data"] = data - if operation: - agent_url = agent_url + operation + "/" - if id: - if topic == "credential": - payload["cred_ex_id"] = id - else: - payload["id"] = id - (resp_status, resp_text) = run_coroutine_with_kwargs( - make_agent_backchannel_request, "POST", agent_url, data=payload +def agent_container_GET( + the_container: AgentContainer, + path: str, + text: bool=False, + params: dict=None, +) -> dict: + return run_coroutine_with_kwargs( + the_container.admin_GET, + path, + text=text, + params=params, ) - return (resp_status, resp_text) -def agent_backchannel_DELETE(url, topic, id=None, data=None) -> (int, str): - agent_url = url + topic + "/" - if id: - agent_url = agent_url + id - (resp_status, resp_text) = run_coroutine_with_kwargs( - make_agent_backchannel_request, "DELETE", agent_url - ) - return (resp_status, resp_text) - - -def expected_agent_state(agent_url, protocol_txt, thread_id, status_txt): - sleep(0.2) - state = "None" - if type(status_txt) != list: - status_txt = [status_txt] - for i in range(5): - (resp_status, resp_text) = agent_backchannel_GET( - agent_url + "/agent/command/", protocol_txt, id=thread_id - ) - if resp_status == 200: - resp_json = json.loads(resp_text) - state = resp_json["state"] - if state in status_txt: - return True - sleep(0.2) - - print( - "From", - agent_url, - "Expected state", - status_txt, - "but received", - state, - ", with a response status of", - resp_status, +def agent_container_POST( + the_container: AgentContainer, + path: str, + data: dict=None, + text: bool=False, + params: dict=None, +) -> dict: + return run_coroutine_with_kwargs( + the_container.admin_POST, + path, + data=data, + text=text, + params=params, ) - return False + diff --git a/demo/features/0586-sign-transaction.feature b/demo/features/0586-sign-transaction.feature index e69de29bb2..1e86d50803 100644 --- a/demo/features/0586-sign-transaction.feature +++ b/demo/features/0586-sign-transaction.feature @@ -0,0 +1,17 @@ +Feature: RFC 0586 Aries sign (endorse) transactions functions + + @T001-RFC0586 @P1 @critical @AcceptanceTest @RFC0586 + Scenario Outline: endorse a transaction and write to the ledger + Given we have "2" agents + | name | role | capabilities | + | Acme | endorser | | + | Bob | author | | + And "Acme" and "Bob" have an existing connection + When "Acme" has a DID with role "ENDORSER" + And "Bob" has a DID with role "AUTHOR" + And "Acme" connection has job role "TXN_ENDORSER" + And "Bob" connection has job role "TXN_AUTHOR" + + Examples: + | Acme_capabilities | Bob_capabilities | + | | | diff --git a/demo/features/steps/0036-issue-credential.py b/demo/features/steps/0036-issue-credential.py index cbc8307465..9fbcbc2ccd 100644 --- a/demo/features/steps/0036-issue-credential.py +++ b/demo/features/steps/0036-issue-credential.py @@ -9,9 +9,8 @@ aries_container_receive_credential, read_schema_data, read_credential_data, - agent_backchannel_GET, - agent_backchannel_POST, - expected_agent_state, + agent_container_GET, + agent_container_POST, ) from runners.agent_container import AgentContainer diff --git a/demo/features/steps/0037-present-proof.py b/demo/features/steps/0037-present-proof.py index 66c7594cfe..1dc093cd1c 100644 --- a/demo/features/steps/0037-present-proof.py +++ b/demo/features/steps/0037-present-proof.py @@ -8,9 +8,8 @@ read_presentation_data, aries_container_request_proof, aries_container_verify_proof, - agent_backchannel_GET, - agent_backchannel_POST, - expected_agent_state, + agent_container_GET, + agent_container_POST, ) from runners.agent_container import AgentContainer diff --git a/demo/features/steps/0160-connection.py b/demo/features/steps/0160-connection.py index 754cc2d3c3..eb8954d5b2 100644 --- a/demo/features/steps/0160-connection.py +++ b/demo/features/steps/0160-connection.py @@ -17,9 +17,8 @@ aries_container_generate_invitation, aries_container_receive_invitation, aries_container_detect_connection, - agent_backchannel_GET, - agent_backchannel_POST, - expected_agent_state, + agent_container_GET, + agent_container_POST, ) from runners.agent_container import AgentContainer diff --git a/demo/features/steps/0586-sign-transaction.py b/demo/features/steps/0586-sign-transaction.py index e69de29bb2..571f49e8f5 100644 --- a/demo/features/steps/0586-sign-transaction.py +++ b/demo/features/steps/0586-sign-transaction.py @@ -0,0 +1,54 @@ +from behave import given, when, then +import json +from time import sleep +import time + +from bdd_support.agent_backchannel_client import ( + agent_container_register_did, + agent_container_GET, + agent_container_POST, +) +from runners.agent_container import AgentContainer + + +# This step is defined in another feature file +# Given "Acme" and "Bob" have an existing connection + + +@when('"{agent_name}" has a DID with role "{did_role}"') +def step_impl(context, agent_name, did_role): + agent = context.active_agents[agent_name] + + # create a new DID in the current wallet + created_did = agent_container_POST(agent['agent'], "/wallet/did/create") + + # publish to the ledger with did_role + registered_did = agent_container_register_did( + agent['agent'], + created_did["result"]["did"], + created_did["result"]["verkey"], + "ENDORSER" if did_role == "ENDORSER" else "", + ) + + # make the new did the wallet's public did + created_did = agent_container_POST(agent['agent'], "/wallet/did/public", params={"did": created_did["result"]["did"]}) + + if not "public_dids" in context: + context.public_dids = {} + context.public_dids[did_role] = created_did["result"]["did"] + + +@when('"{agent_name}" connection has job role "{connection_job_role}"') +def step_impl(context, agent_name, connection_job_role): + agent = context.active_agents[agent_name] + + # current connection_id for the selected agent + connection_id = agent['agent'].agent.connection_id + + # set role for agent's connection + #updated_connection = agent_container_POST( + # agent['agent'], + # "/transaction/set-job", + # params={"connection": connection_id, "my_job": connection_job_role} + #) + pass diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index e13db86c8c..b4331a2a50 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -552,6 +552,62 @@ async def input_invitation(self, invite_details: dict, wait: bool = False): async def detect_connection(self): await self.agent.detect_connection() + async def register_did(self, did, verkey, role): + return await self.agent.register_did( + did=did, + verkey=verkey, + role=role, + ) + + async def admin_GET( + self, path, text=False, params=None + ) -> dict: + """ + Execute an admin GET request in the context of the current wallet. + + path = /path/of/request + text = True if the expected response is text, False if json data + params = any additional parameters to pass with the request + """ + return await self.agent.admin_GET(path, text=text, params=params) + + async def admin_POST( + self, path, data=None, text=False, params=None + ) -> dict: + """ + Execute an admin POST request in the context of the current wallet. + + path = /path/of/request + data = payload to post with the request + text = True if the expected response is text, False if json data + params = any additional parameters to pass with the request + """ + return await self.agent.admin_POST(path, data=data, text=text, params=params) + + async def agency_admin_GET( + self, path, text=False, params=None + ) -> dict: + """ + Execute an agency GET request in the context of the base wallet (multitenant only). + + path = /path/of/request + text = True if the expected response is text, False if json data + params = any additional parameters to pass with the request + """ + return await self.agent.agency_admin_GET(path, text=text, params=params) + + async def agency_admin_POST( + self, path, data=None, text=False, params=None + ) -> dict: + """ + Execute an agency POST request in the context of the base wallet (multitenant only). + + path = /path/of/request + data = payload to post with the request + text = True if the expected response is text, False if json data + params = any additional parameters to pass with the request + """ + return await self.agent.agency_admin_POST(path, data=data, text=text, params=params) def arg_parser(): parser = argparse.ArgumentParser(description="Runs an Aries demo agent.") diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index 02b19f86f6..6d2502eb00 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -342,13 +342,14 @@ async def register_did( alias: str = None, did: str = None, verkey: str = None, + role: str = "TRUST_ANCHOR", ): self.log(f"Registering {self.ident} ...") if not ledger_url: ledger_url = LEDGER_URL if not ledger_url: ledger_url = f"http://{self.external_host}:9000" - data = {"alias": alias or self.ident, "role": "TRUST_ANCHOR"} + data = {"alias": alias or self.ident, "role": role} if did and verkey: data["did"] = did data["verkey"] = verkey From e72dd2a02fcfbfaf255cc1f9cc4aa04a391120ef Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Fri, 19 Feb 2021 09:35:46 -0800 Subject: [PATCH 067/243] rename transport/MessageParseError, MessageEncodeError to WireFormatParseError, WireFormatEncodeError to remove ambiguity. catch both parse errors in http, websocket inbound transports Signed-off-by: Andrew Whitehead --- .../core/tests/test_protocol_registry.py | 1 - aries_cloudagent/transport/error.py | 8 ++--- aries_cloudagent/transport/inbound/http.py | 3 +- .../inbound/tests/test_http_transport.py | 3 +- aries_cloudagent/transport/inbound/ws.py | 4 ++- aries_cloudagent/transport/pack_format.py | 30 +++++++++---------- .../transport/tests/test_pack_format.py | 18 +++++------ aries_cloudagent/transport/wire_format.py | 12 ++++---- 8 files changed, 41 insertions(+), 38 deletions(-) diff --git a/aries_cloudagent/core/tests/test_protocol_registry.py b/aries_cloudagent/core/tests/test_protocol_registry.py index d633de52df..5c43668d8b 100644 --- a/aries_cloudagent/core/tests/test_protocol_registry.py +++ b/aries_cloudagent/core/tests/test_protocol_registry.py @@ -1,7 +1,6 @@ from asynctest import TestCase as AsyncTestCase, mock as async_mock from ...config.injection_context import InjectionContext -from ...messaging.error import MessageParseError from ...utils.classloader import ClassLoader from ..protocol_registry import ProtocolRegistry diff --git a/aries_cloudagent/transport/error.py b/aries_cloudagent/transport/error.py index 4cb94a5cbf..cfda4b97d4 100644 --- a/aries_cloudagent/transport/error.py +++ b/aries_cloudagent/transport/error.py @@ -11,14 +11,14 @@ class WireFormatError(TransportError): """Base class for wire-format errors.""" -class MessageParseError(WireFormatError): - """Message parse error.""" +class WireFormatParseError(WireFormatError): + """Parse error when unpacking the wire format.""" error_code = "message_parse_error" -class MessageEncodeError(WireFormatError): - """Message encoding error.""" +class WireFormatEncodeError(WireFormatError): + """Encoding error when packing the wire format.""" error_code = "message_encode_error" diff --git a/aries_cloudagent/transport/inbound/http.py b/aries_cloudagent/transport/inbound/http.py index 53788de7fb..ea81f7089b 100644 --- a/aries_cloudagent/transport/inbound/http.py +++ b/aries_cloudagent/transport/inbound/http.py @@ -6,6 +6,7 @@ from ...messaging.error import MessageParseError +from ..error import WireFormatParseError from ..wire_format import DIDCOMM_V0_MIME_TYPE, DIDCOMM_V1_MIME_TYPE from .base import BaseInboundTransport, InboundTransportSetupError @@ -93,7 +94,7 @@ async def inbound_message_handler(self, request: web.BaseRequest): async with session: try: inbound = await session.receive(body) - except MessageParseError: + except (MessageParseError, WireFormatParseError): raise web.HTTPBadRequest() if inbound.receipt.direct_response_requested: diff --git a/aries_cloudagent/transport/inbound/tests/test_http_transport.py b/aries_cloudagent/transport/inbound/tests/test_http_transport.py index 8b21fffb79..4a594f526d 100644 --- a/aries_cloudagent/transport/inbound/tests/test_http_transport.py +++ b/aries_cloudagent/transport/inbound/tests/test_http_transport.py @@ -8,6 +8,7 @@ from ....core.in_memory import InMemoryProfile from ....core.profile import Profile +from ...error import WireFormatParseError from ...outbound.message import OutboundMessage from ...wire_format import JsonWireFormat @@ -136,7 +137,7 @@ async def test_send_message_outliers(self): mock_session.return_value = async_mock.MagicMock( receive=async_mock.CoroutineMock( - side_effect=test_module.MessageParseError() + side_effect=test_module.WireFormatParseError() ), profile=InMemoryProfile.test_profile(), ) diff --git a/aries_cloudagent/transport/inbound/ws.py b/aries_cloudagent/transport/inbound/ws.py index 13de94f6c0..45589b19c8 100644 --- a/aries_cloudagent/transport/inbound/ws.py +++ b/aries_cloudagent/transport/inbound/ws.py @@ -7,6 +7,8 @@ from ...messaging.error import MessageParseError +from ..error import WireFormatParseError + from .base import BaseInboundTransport, InboundTransportSetupError LOGGER = logging.getLogger(__name__) @@ -106,7 +108,7 @@ async def inbound_message_handler(self, request): if msg.type in (WSMsgType.TEXT, WSMsgType.BINARY): try: await session.receive(msg.data) - except MessageParseError: + except (MessageParseError, WireFormatParseError): await ws.close(1003) # unsupported data error elif msg.type == WSMsgType.ERROR: LOGGER.error( diff --git a/aries_cloudagent/transport/pack_format.py b/aries_cloudagent/transport/pack_format.py index 44f9970049..355bcae23b 100644 --- a/aries_cloudagent/transport/pack_format.py +++ b/aries_cloudagent/transport/pack_format.py @@ -14,7 +14,7 @@ from ..wallet.base import BaseWallet from ..wallet.error import WalletError -from .error import MessageParseError, MessageEncodeError, RecipientKeysError +from .error import WireFormatParseError, WireFormatEncodeError, RecipientKeysError from .inbound.receipt import MessageReceipt from .wire_format import BaseWireFormat @@ -45,8 +45,8 @@ async def parse_message( A tuple of the parsed message and a message receipt instance Raises: - MessageParseError: If the JSON parsing failed - MessageParseError: If a wallet is required but can't be located + WireFormatParseError: If the JSON parsing failed + WireFormatParseError: If a wallet is required but can't be located """ @@ -58,14 +58,14 @@ async def parse_message( message_json = message_body if not message_json: - raise MessageParseError("Message body is empty") + raise WireFormatParseError("Message body is empty") try: message_dict = json.loads(message_json) except ValueError: - raise MessageParseError("Message JSON parsing failed") + raise WireFormatParseError("Message JSON parsing failed") if not isinstance(message_dict, dict): - raise MessageParseError("Message JSON result is not an object") + raise WireFormatParseError("Message JSON result is not an object") # packed messages are detected by the absence of @type if "@type" not in message_dict: @@ -75,16 +75,16 @@ async def parse_message( message_json = await ( self.task_queue and self.task_queue.run(unpack) or unpack ) - except MessageParseError: + except WireFormatParseError: LOGGER.debug("Message unpack failed, falling back to JSON") else: receipt.raw_message = message_json try: message_dict = json.loads(message_json) except ValueError: - raise MessageParseError("Message JSON parsing failed") + raise WireFormatParseError("Message JSON parsing failed") if not isinstance(message_dict, dict): - raise MessageParseError("Message JSON result is not an object") + raise WireFormatParseError("Message JSON result is not an object") # parse thread ID thread_dec = message_dict.get("~thread") @@ -110,7 +110,7 @@ async def unpack( """Look up the wallet instance and perform the message unpack.""" wallet = session.inject(BaseWallet, required=False) if not wallet: - raise MessageParseError("Wallet not defined in profile session") + raise WireFormatParseError("Wallet not defined in profile session") try: unpacked = await wallet.unpack_message(message_body) @@ -121,7 +121,7 @@ async def unpack( ) = unpacked return message_json except WalletError as e: - raise MessageParseError("Message unpack failed") from e + raise WireFormatParseError("Message unpack failed") from e async def encode_message( self, @@ -168,18 +168,18 @@ async def pack( ): """Look up the wallet instance and perform the message pack.""" if not sender_key or not recipient_keys: - raise MessageEncodeError("Cannot pack message without associated keys") + raise WireFormatEncodeError("Cannot pack message without associated keys") wallet = session.inject(BaseWallet, required=False) if not wallet: - raise MessageEncodeError("No wallet instance") + raise WireFormatEncodeError("No wallet instance") try: message = await wallet.pack_message( message_json, recipient_keys, sender_key ) except WalletError as e: - raise MessageEncodeError("Message pack failed") from e + raise WireFormatEncodeError("Message pack failed") from e if routing_keys: recip_keys = recipient_keys @@ -191,7 +191,7 @@ async def pack( try: message = await wallet.pack_message(fwd_msg.to_json(), recip_keys) except WalletError as e: - raise MessageEncodeError("Forward message pack failed") from e + raise WireFormatEncodeError("Forward message pack failed") from e return message def get_recipient_keys(self, message_body: Union[str, bytes]) -> List[str]: diff --git a/aries_cloudagent/transport/tests/test_pack_format.py b/aries_cloudagent/transport/tests/test_pack_format.py index f2b42f28a1..1f92f073bb 100644 --- a/aries_cloudagent/transport/tests/test_pack_format.py +++ b/aries_cloudagent/transport/tests/test_pack_format.py @@ -9,7 +9,7 @@ from ...wallet.base import BaseWallet from ...wallet.error import WalletError -from ..error import MessageEncodeError, MessageParseError, RecipientKeysError +from ..error import WireFormatEncodeError, WireFormatParseError, RecipientKeysError from ..pack_format import PackWireFormat from .. import pack_format as test_module @@ -38,7 +38,7 @@ async def test_errors(self): bad_values = [None, "", "1", "[]", "{..."] for message_json in bad_values: - with self.assertRaises(MessageParseError): + with self.assertRaises(WireFormatParseError): message_dict, delivery = await serializer.parse_message( self.session, message_json ) @@ -55,7 +55,7 @@ async def test_errors(self): serializer, "unpack", async_mock.CoroutineMock() ) as mock_unpack: mock_unpack.return_value = "{missing-brace" - with self.assertRaises(MessageParseError) as context: + with self.assertRaises(WireFormatParseError) as context: await serializer.parse_message(self.session, json.dumps(x_message)) assert "Message JSON parsing failed" in str(context.exception) @@ -65,11 +65,11 @@ async def test_errors(self): serializer, "unpack", async_mock.CoroutineMock() ) as mock_unpack: mock_unpack.return_value = json.dumps([1, 2, 3]) - with self.assertRaises(MessageParseError) as context: + with self.assertRaises(WireFormatParseError) as context: await serializer.parse_message(self.session, json.dumps(x_message)) assert "Message JSON result is not an object" in str(context.exception) - with self.assertRaises(MessageParseError): + with self.assertRaises(WireFormatParseError): await serializer.unpack( InMemoryProfile.test_session(bind={BaseWallet: None}), "...", None ) @@ -77,10 +77,10 @@ async def test_errors(self): async def test_pack_x(self): serializer = PackWireFormat() - with self.assertRaises(MessageEncodeError): + with self.assertRaises(WireFormatEncodeError): await serializer.pack(self.session, None, None, None, None) - with self.assertRaises(MessageEncodeError): + with self.assertRaises(WireFormatEncodeError): await serializer.pack( InMemoryProfile.test_session(bind={BaseWallet: None}), None, @@ -93,7 +93,7 @@ async def test_pack_x(self): pack_message=async_mock.CoroutineMock(side_effect=WalletError()) ) session = InMemoryProfile.test_session(bind={BaseWallet: mock_wallet}) - with self.assertRaises(MessageEncodeError): + with self.assertRaises(WireFormatEncodeError): await serializer.pack(session, None, ["key"], None, ["key"]) mock_wallet = async_mock.MagicMock( @@ -108,7 +108,7 @@ async def test_pack_x(self): mock_forward.return_value = async_mock.MagicMock( to_json=async_mock.MagicMock() ) - with self.assertRaises(MessageEncodeError): + with self.assertRaises(WireFormatEncodeError): await serializer.pack(session, None, ["key"], ["key"], ["key"]) async def test_unpacked(self): diff --git a/aries_cloudagent/transport/wire_format.py b/aries_cloudagent/transport/wire_format.py index ca64488cf1..d03a8eb40a 100644 --- a/aries_cloudagent/transport/wire_format.py +++ b/aries_cloudagent/transport/wire_format.py @@ -10,7 +10,7 @@ from ..messaging.util import time_now from .inbound.receipt import MessageReceipt -from .error import MessageParseError +from .error import WireFormatParseError LOGGER = logging.getLogger(__name__) @@ -41,7 +41,7 @@ async def parse_message( A tuple of the parsed message and a message receipt instance Raises: - MessageParseError: If the message can't be parsed + WireFormatParseError: If the message can't be parsed """ @@ -109,7 +109,7 @@ async def parse_message( A tuple of the parsed message and a message receipt instance Raises: - MessageParseError: If the JSON parsing failed + WireFormatParseError: If the JSON parsing failed """ receipt = MessageReceipt() @@ -120,14 +120,14 @@ async def parse_message( message_json = message_body if not message_json: - raise MessageParseError("Message body is empty") + raise WireFormatParseError("Message body is empty") try: message_dict = json.loads(message_json) except ValueError: - raise MessageParseError("Message JSON parsing failed") + raise WireFormatParseError("Message JSON parsing failed") if not isinstance(message_dict, dict): - raise MessageParseError("Message JSON result is not an object") + raise WireFormatParseError("Message JSON result is not an object") # parse thread ID thread_dec = message_dict.get("~thread") From 4fa141275c4923119d6f65c09ffffbdde0e79a28 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Fri, 19 Feb 2021 09:39:06 -0800 Subject: [PATCH 068/243] add trust_env to ClientSession constructor to inherit env proxy settings Signed-off-by: Andrew Whitehead --- aries_cloudagent/transport/outbound/http.py | 8 +++++--- aries_cloudagent/transport/outbound/ws.py | 2 +- aries_cloudagent/utils/http.py | 12 +++++++++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/aries_cloudagent/transport/outbound/http.py b/aries_cloudagent/transport/outbound/http.py index fedaadbfa0..5bd2069c28 100644 --- a/aries_cloudagent/transport/outbound/http.py +++ b/aries_cloudagent/transport/outbound/http.py @@ -27,14 +27,16 @@ def __init__(self) -> None: async def start(self): """Start the transport.""" - session_args = {} self.connector = TCPConnector(limit=200, limit_per_host=50) + session_args = { + "cookie_jar": DummyCookieJar(), + "connector": self.connector, + "trust_env": True, + } if self.collector: session_args["trace_configs"] = [ StatsTracer(self.collector, "outbound-http:") ] - session_args["cookie_jar"] = DummyCookieJar() - session_args["connector"] = self.connector self.client_session = ClientSession(**session_args) return self diff --git a/aries_cloudagent/transport/outbound/ws.py b/aries_cloudagent/transport/outbound/ws.py index cee92ce503..bd32a70989 100644 --- a/aries_cloudagent/transport/outbound/ws.py +++ b/aries_cloudagent/transport/outbound/ws.py @@ -22,7 +22,7 @@ def __init__(self) -> None: async def start(self): """Start the outbound transport.""" - self.client_session = ClientSession(cookie_jar=DummyCookieJar()) + self.client_session = ClientSession(cookie_jar=DummyCookieJar(), trust_env=True) return self async def stop(self): diff --git a/aries_cloudagent/utils/http.py b/aries_cloudagent/utils/http.py index 62b915dff4..71fa0b5d61 100644 --- a/aries_cloudagent/utils/http.py +++ b/aries_cloudagent/utils/http.py @@ -47,7 +47,9 @@ async def fetch_stream( """ limit = max_attempts if retry else 1 if not session: - session = ClientSession(connector=connector, connector_owner=(not connector)) + session = ClientSession( + connector=connector, connector_owner=(not connector), trust_env=True + ) async with session: async for attempt in RepeatSequence(limit, interval, backoff): try: @@ -94,7 +96,9 @@ async def fetch( """ limit = max_attempts if retry else 1 if not session: - session = ClientSession(connector=connector, connector_owner=(not connector)) + session = ClientSession( + connector=connector, connector_owner=(not connector), trust_env=True + ) async with session: async for attempt in RepeatSequence(limit, interval, backoff): try: @@ -147,7 +151,9 @@ async def put( limit = max_attempts if retry else 1 if not session: - session = ClientSession(connector=connector, connector_owner=(not connector)) + session = ClientSession( + connector=connector, connector_owner=(not connector), trust_env=True + ) async with session: async for attempt in RepeatSequence(limit, interval, backoff): try: From 471cf820d9bc08a6e4931761d159992d54684a2b Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Fri, 19 Feb 2021 10:35:40 -0800 Subject: [PATCH 069/243] rename put to put_file; use mock_open to mock file Signed-off-by: Andrew Whitehead --- aries_cloudagent/tails/indy_tails_server.py | 8 +++++--- aries_cloudagent/utils/http.py | 2 +- aries_cloudagent/utils/tests/test_http.py | 22 ++++++++++----------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/aries_cloudagent/tails/indy_tails_server.py b/aries_cloudagent/tails/indy_tails_server.py index 8d56763d49..8646a83ce7 100644 --- a/aries_cloudagent/tails/indy_tails_server.py +++ b/aries_cloudagent/tails/indy_tails_server.py @@ -1,6 +1,8 @@ """Indy tails server interface class.""" -from ..utils.http import put, PutError +from typing import Tuple + +from ..utils.http import put_file, PutError from .base import BaseTailsServer from .error import TailsServerNotConfiguredError @@ -17,7 +19,7 @@ async def upload_tails_file( interval: float = 1.0, backoff: float = 0.25, max_attempts: int = 5, - ) -> (bool, str): + ) -> Tuple[bool, str]: """Upload tails file to tails server. Args: @@ -40,7 +42,7 @@ async def upload_tails_file( try: return ( True, - await put( + await put_file( f"{tails_server_upload_url}/{rev_reg_id}", {"tails": tails_file_path}, {"genesis": genesis_transactions}, diff --git a/aries_cloudagent/utils/http.py b/aries_cloudagent/utils/http.py index 71fa0b5d61..8e780338c3 100644 --- a/aries_cloudagent/utils/http.py +++ b/aries_cloudagent/utils/http.py @@ -115,7 +115,7 @@ async def fetch( raise FetchError("Exceeded maximum fetch attempts") from e -async def put( +async def put_file( url: str, file_data: dict, extra_data: dict, diff --git a/aries_cloudagent/utils/tests/test_http.py b/aries_cloudagent/utils/tests/test_http.py index 5a68096095..5a2886723b 100644 --- a/aries_cloudagent/utils/tests/test_http.py +++ b/aries_cloudagent/utils/tests/test_http.py @@ -1,8 +1,8 @@ from aiohttp import web from aiohttp.test_utils import AioHTTPTestCase, unittest_run_loop -from asynctest import mock as async_mock +from asynctest import mock as async_mock, mock_open -from ..http import fetch, fetch_stream, FetchError, put, PutError +from ..http import fetch, fetch_stream, FetchError, put_file, PutError class TestTransportUtils(AioHTTPTestCase): @@ -90,10 +90,10 @@ async def test_fetch_fail(self): assert self.fail_calls == 2 @unittest_run_loop - async def test_put(self): + async def test_put_file(self): server_addr = f"http://localhost:{self.server.port}" - with async_mock.patch("builtins.open", async_mock.MagicMock()) as mock_open: - result = await put( + with async_mock.patch("builtins.open", mock_open(read_data="data")): + result = await put_file( f"{server_addr}/succeed", {"tails": "/tmp/dummy/path"}, {"genesis": "..."}, @@ -104,10 +104,10 @@ async def test_put(self): assert self.succeed_calls == 1 @unittest_run_loop - async def test_put_default_client(self): + async def test_put_file_default_client(self): server_addr = f"http://localhost:{self.server.port}" - with async_mock.patch("builtins.open", async_mock.MagicMock()) as mock_open: - result = await put( + with async_mock.patch("builtins.open", mock_open(read_data="data")): + result = await put_file( f"{server_addr}/succeed", {"tails": "/tmp/dummy/path"}, {"genesis": "..."}, @@ -117,11 +117,11 @@ async def test_put_default_client(self): assert self.succeed_calls == 1 @unittest_run_loop - async def test_put_fail(self): + async def test_put_file_fail(self): server_addr = f"http://localhost:{self.server.port}" - with async_mock.patch("builtins.open", async_mock.MagicMock()) as mock_open: + with async_mock.patch("builtins.open", mock_open(read_data="data")): with self.assertRaises(PutError): - result = await put( + result = await put_file( f"{server_addr}/fail", {"tails": "/tmp/dummy/path"}, {"genesis": "..."}, From 8486a9d353f3ae5906f48591ac8ebf18697bfdcc Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Fri, 19 Feb 2021 10:44:49 -0800 Subject: [PATCH 070/243] fix mocks of put_file Signed-off-by: Andrew Whitehead --- aries_cloudagent/tails/tests/test_indy.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aries_cloudagent/tails/tests/test_indy.py b/aries_cloudagent/tails/tests/test_indy.py index c140880054..516194320c 100644 --- a/aries_cloudagent/tails/tests/test_indy.py +++ b/aries_cloudagent/tails/tests/test_indy.py @@ -28,7 +28,7 @@ async def test_upload(self): indy_tails = test_module.IndyTailsServer() with async_mock.patch.object( - test_module, "put", async_mock.CoroutineMock() + test_module, "put_file", async_mock.CoroutineMock() ) as mock_put: mock_put.return_value = "tails-hash" (ok, text) = await indy_tails.upload_tails_file( @@ -49,7 +49,7 @@ async def test_upload_x(self): indy_tails = test_module.IndyTailsServer() with async_mock.patch.object( - test_module, "put", async_mock.CoroutineMock() + test_module, "put_file", async_mock.CoroutineMock() ) as mock_put: mock_put.side_effect = test_module.PutError("Server down for maintenance") From 8a5d020df86e65e177f2ae549b8d10792055ce84 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Sat, 20 Feb 2021 13:31:47 -0800 Subject: [PATCH 071/243] Support for revocation Signed-off-by: Ian Costanzo --- demo/features/0036-issue-credential.feature | 21 ++++++++++++- demo/features/0037-present-proof.feature | 2 +- demo/features/steps/0036-issue-credential.py | 31 ++++++++++++++++++-- demo/features/steps/0037-present-proof.py | 3 +- demo/runners/agent_container.py | 18 ++++++++---- 5 files changed, 64 insertions(+), 11 deletions(-) diff --git a/demo/features/0036-issue-credential.feature b/demo/features/0036-issue-credential.feature index fdf79de5b8..d26f71d322 100644 --- a/demo/features/0036-issue-credential.feature +++ b/demo/features/0036-issue-credential.feature @@ -1,6 +1,6 @@ Feature: RFC 0036 Aries agent issue credential - @T003-AIP10-RFC0036 @AcceptanceTest @P1 @critical @Indy @RFC0036 + @T003-RFC0036 @AcceptanceTest @P1 @critical @Indy @RFC0036 Scenario Outline: Issue a credential with the Issuer beginning with an offer Given we have "2" agents | name | role | capabilities | @@ -18,3 +18,22 @@ Feature: RFC 0036 Aries agent issue credential | --public-did --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | | --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | | --public-did --mediation --multitenant | --mediation --multitenant | driverslicense | Data_DL_NormalizedValues | + + + @T004-RFC0036 @AcceptanceTest @P1 @critical @Indy @RFC0036 + Scenario Outline: Issue a credential with revocation, with the Issuer beginning with an offer, and then revoking the credential + Given we have "2" agents + | name | role | capabilities | + | Acme | issuer | | + | Bob | holder | | + And "Acme" and "Bob" have an existing connection + And "Bob" has an issued credential from "Acme" + Then "Acme" revokes the credential + Then "Bob" has the credential issued + + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | + | --revocation --public-did | | driverslicense | Data_DL_NormalizedValues | + | --revocation --public-did --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | + | --revocation --public-did --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | + | --revocation --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | diff --git a/demo/features/0037-present-proof.feature b/demo/features/0037-present-proof.feature index 88774b456a..9f4f54e1c1 100644 --- a/demo/features/0037-present-proof.feature +++ b/demo/features/0037-present-proof.feature @@ -8,7 +8,7 @@ Feature: RFC 0037 Aries agent present proof | Faber | verifier | | | Bob | prover | | And "" and "Bob" have an existing connection - And "Bob" has an issued credential from + And "Bob" has an issued credential from "" And "Faber" and "Bob" have an existing connection When "Faber" sends a request for proof presentation to "Bob" Then "Faber" has the proof verified diff --git a/demo/features/steps/0036-issue-credential.py b/demo/features/steps/0036-issue-credential.py index 9fbcbc2ccd..b1199c2cb8 100644 --- a/demo/features/steps/0036-issue-credential.py +++ b/demo/features/steps/0036-issue-credential.py @@ -40,13 +40,14 @@ def step_impl(context, issuer, credential_data): agent = context.active_agents[issuer] cred_attrs = read_credential_data(context.schema_name, credential_data) - aries_container_issue_credential( + cred_exchange = aries_container_issue_credential( agent["agent"], context.cred_def_id, cred_attrs, ) context.cred_attrs = cred_attrs + context.cred_exchange = cred_exchange # TODO Check the issuers State # assert resp_json["state"] == "offer-sent" @@ -55,6 +56,32 @@ def step_impl(context, issuer, credential_data): # assert expected_agent_state(context.holder_url, "issue-credential", context.cred_thread_id, "offer-received") +@when('"{holder}" revokes the credential') +@then('"{holder}" revokes the credential') +def step_impl(context, holder): + agent = context.active_agents[holder] + + # get the required revocation info from the last credential exchange + cred_exchange = context.cred_exchange + + cred_exchange = agent_container_GET(agent['agent'], "/issue-credential-2.0/records/" + cred_exchange["cred_ex_id"]) + context.cred_exchange = cred_exchange + print("rev_reg_id:", cred_exchange["indy"]["rev_reg_id"]) + print("cred_rev_id:", cred_exchange["indy"]["cred_rev_id"]) + + # revoke the credential + revoke_status = agent_container_POST( + agent['agent'], + "/revocation/revoke", + data={ + "rev_reg_id": cred_exchange["indy"]["rev_reg_id"], + "cred_rev_id": cred_exchange["indy"]["cred_rev_id"], + "publish": "Y" + } + ) + + +@when('"{holder}" has the credential issued') @then('"{holder}" has the credential issued') def step_impl(context, holder): agent = context.active_agents[holder] @@ -71,7 +98,7 @@ def step_impl(context, holder): @given( - '"{holder}" has an issued {schema_name} credential {credential_data} from {issuer}' + '"{holder}" has an issued {schema_name} credential {credential_data} from "{issuer}"' ) def step_impl(context, holder, schema_name, credential_data, issuer): context.execute_steps( diff --git a/demo/features/steps/0037-present-proof.py b/demo/features/steps/0037-present-proof.py index 1dc093cd1c..7fee2e36ba 100644 --- a/demo/features/steps/0037-present-proof.py +++ b/demo/features/steps/0037-present-proof.py @@ -27,9 +27,10 @@ def step_impl(context, verifier, request_for_proof, prover): proof_request_info = read_proof_req_data(request_for_proof) - aries_container_request_proof(agent["agent"], proof_request_info) + proof_exchange = aries_container_request_proof(agent["agent"], proof_request_info) context.proof_request = proof_request_info + context.proof_exchange = proof_exchange @then('"{verifier}" has the proof verified') diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index b4331a2a50..3edfd8a574 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -410,7 +410,7 @@ async def initialize( if schema_name and schema_attrs: # Create a schema/cred def self.cred_def_id = await self.create_schema_and_cred_def( - schema_name, schema_attrs, self.revocation + schema_name, schema_attrs ) async def create_schema_and_cred_def( @@ -445,9 +445,9 @@ async def issue_credential( "filter": {"indy": {"cred_def_id": cred_def_id}}, "trace": self.exchange_tracing, } - await self.agent.admin_POST("/issue-credential-2.0/send-offer", offer_request) + cred_exchange = await self.agent.admin_POST("/issue-credential-2.0/send-offer", offer_request) - return True + return cred_exchange async def receive_credential( self, @@ -502,11 +502,11 @@ async def request_proof(self, proof_request, revocation: bool = False): "proof_request": indy_proof_request, "trace": self.exchange_tracing, } - await self.agent.admin_POST( + proof_exchange = await self.agent.admin_POST( "/present-proof/send-request", proof_request_web_request ) - return True + return proof_exchange async def verify_proof(self, proof_request): await asyncio.sleep(1.0) @@ -550,6 +550,7 @@ async def input_invitation(self, invite_details: dict, wait: bool = False): return await self.agent.input_invitation(invite_details, wait) async def detect_connection(self): + # no return value, throws an exception if the connection times out await self.agent.detect_connection() async def register_did(self, did, verkey, role): @@ -609,7 +610,12 @@ async def agency_admin_POST( """ return await self.agent.agency_admin_POST(path, data=data, text=text, params=params) -def arg_parser(): +def arg_parser(ident: str = None): + """ + Standard command-line arguements. + + "ident", if specified, refers to one of the standard demo personas - alice, faber, acme or performance. + """ parser = argparse.ArgumentParser(description="Runs an Aries demo agent.") parser.add_argument( "--ident", From 6f39d3cd73c8e08d43a86ced7da7cec0f8f94b1f Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Sat, 20 Feb 2021 16:39:25 -0800 Subject: [PATCH 072/243] Add global params, update revocation tests Signed-off-by: Ian Costanzo --- demo/INTEGRATION-TESTS.md | 22 ++++++--- demo/bdd_support/agent_backchannel_client.py | 16 ++++--- demo/features/0037-present-proof.feature | 23 +++++++++ demo/features/steps/0036-issue-credential.py | 5 ++ demo/features/steps/0037-present-proof.py | 19 +++++++- demo/postgres-indy-args.yml | 8 ++++ demo/run_bdd | 3 ++ demo/runners/agent_container.py | 50 +++++++++++++------- demo/runners/support/agent.py | 10 ++++ 9 files changed, 127 insertions(+), 29 deletions(-) create mode 100644 demo/postgres-indy-args.yml diff --git a/demo/INTEGRATION-TESTS.md b/demo/INTEGRATION-TESTS.md index 61e3d25b37..f845d714d9 100644 --- a/demo/INTEGRATION-TESTS.md +++ b/demo/INTEGRATION-TESTS.md @@ -68,16 +68,26 @@ In the above example, the test will run twice using the parameters specified in The agent's "capabilities" are specified using the same command-line parameters that are supported for the Alice/Faber demo agents. +## Global Configuration for All Aca-py Agents Under Test + +You can specify parameters that are applied to all aca-py agents using the `ACAPY_ARG_FILE` environment variable: + +```bash +ACAPY_ARG_FILE=postgres-indy-args.yml ./run_bdd +``` + +... will apply the parameters in the `postgres-indy-args.yml` file (which just happens to configure a postgres wallet) to *all* agents under test. + +Any aca-py arguement can be included in the yml file, and order-of-precidence applies (see [https://pypi.org/project/ConfigArgParse/](https://pypi.org/project/ConfigArgParse/)). + ## Specifying Command-line Parameters when Running Integration Tests Aca-py integration tests support the following environment-driven configuration: -TBD - describe genesis/ledger, tails server, postgres, ... - -- `LEDGER_URL` -- `TAILS_NETWORK` -- `PUBLIC_TAILS_URL` -- postgres configuration ... +- `LEDGER_URL` - specify the ledger url +- `TAILS_NETWORK` - specify the docker network the tailer server is running on +- `PUBLIC_TAILS_URL` - specify the public url of the tails server +- `ACAPY_ARG_FILE` - specify global aca-py parameters (see above) Behave tests are tagged using the same [standard tags as used in AATH](https://github.com/hyperledger/aries-agent-test-harness#test-tags). diff --git a/demo/bdd_support/agent_backchannel_client.py b/demo/bdd_support/agent_backchannel_client.py index d36a896353..04426938c4 100644 --- a/demo/bdd_support/agent_backchannel_client.py +++ b/demo/bdd_support/agent_backchannel_client.py @@ -57,6 +57,10 @@ def run_coroutine_with_kwargs(coroutine, *args, **kwargs): # loop.close() +def async_sleep(delay): + run_coroutine_with_args(asyncio.sleep, delay) + + ###################################################################### # high level aries agent interface ###################################################################### @@ -89,6 +93,7 @@ def agent_container_register_did( role, ) + def aries_container_terminate( the_container: AgentContainer, ): @@ -220,8 +225,8 @@ def read_presentation_data(presentation_name: str): def agent_container_GET( the_container: AgentContainer, path: str, - text: bool=False, - params: dict=None, + text: bool = False, + params: dict = None, ) -> dict: return run_coroutine_with_kwargs( the_container.admin_GET, @@ -234,9 +239,9 @@ def agent_container_GET( def agent_container_POST( the_container: AgentContainer, path: str, - data: dict=None, - text: bool=False, - params: dict=None, + data: dict = None, + text: bool = False, + params: dict = None, ) -> dict: return run_coroutine_with_kwargs( the_container.admin_POST, @@ -245,4 +250,3 @@ def agent_container_POST( text=text, params=params, ) - diff --git a/demo/features/0037-present-proof.feature b/demo/features/0037-present-proof.feature index 9f4f54e1c1..2787663ed0 100644 --- a/demo/features/0037-present-proof.feature +++ b/demo/features/0037-present-proof.feature @@ -21,3 +21,26 @@ Feature: RFC 0037 Aries agent present proof | Acme | --public-did --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | | Acme | --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | | Acme | --public-did --mediation --multitenant | --mediation --multitenant | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + + + @T002-AIP10-RFC0037 @P1 @critical @AcceptanceTest @Indy @RFC0037 + Scenario Outline: Present Proof where the issuer revokes the credential and the proof fails + Given "3" agents + | name | role | capabilities | + | Acme | issuer | | + | Faber | verifier | | + | Bob | prover | | + And "" and "Bob" have an existing connection + And "Bob" has an issued credential from "" + And "" revokes the credential + And "Faber" and "Bob" have an existing connection + When "Faber" sends a request for proof presentation to "Bob" + Then "Faber" has the proof verification fail + + Examples: + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | + | Acme | --revocation --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Faber | --revocation --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Acme | --revocation --public-did --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Acme | --revocation --public-did --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Acme | --revocation --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | diff --git a/demo/features/steps/0036-issue-credential.py b/demo/features/steps/0036-issue-credential.py index b1199c2cb8..7111552d61 100644 --- a/demo/features/steps/0036-issue-credential.py +++ b/demo/features/steps/0036-issue-credential.py @@ -11,6 +11,7 @@ read_credential_data, agent_container_GET, agent_container_POST, + async_sleep, ) from runners.agent_container import AgentContainer @@ -56,6 +57,7 @@ def step_impl(context, issuer, credential_data): # assert expected_agent_state(context.holder_url, "issue-credential", context.cred_thread_id, "offer-received") +@given('"{holder}" revokes the credential') @when('"{holder}" revokes the credential') @then('"{holder}" revokes the credential') def step_impl(context, holder): @@ -80,6 +82,9 @@ def step_impl(context, holder): } ) + # pause for a few seconds + async_sleep(3.0) + @when('"{holder}" has the credential issued') @then('"{holder}" has the credential issued') diff --git a/demo/features/steps/0037-present-proof.py b/demo/features/steps/0037-present-proof.py index 7fee2e36ba..7481bfd2e7 100644 --- a/demo/features/steps/0037-present-proof.py +++ b/demo/features/steps/0037-present-proof.py @@ -43,6 +43,23 @@ def step_impl(context, verifier): for i in range(10): verified = aries_container_verify_proof(agent["agent"], proof_request) if verified is not None: - return verified + assert verified == "true" + return + + assert False + + +@then('"{verifier}" has the proof verification fail') +def step_impl(context, verifier): + agent = context.active_agents[verifier] + + proof_request = context.proof_request + + # check the received credential status (up to 10 seconds) + for i in range(10): + verified = aries_container_verify_proof(agent["agent"], proof_request) + if verified is not None: + assert verified == "false" + return assert False diff --git a/demo/postgres-indy-args.yml b/demo/postgres-indy-args.yml new file mode 100644 index 0000000000..7c747f3dda --- /dev/null +++ b/demo/postgres-indy-args.yml @@ -0,0 +1,8 @@ +# see: https://pypi.org/project/ConfigArgParse/ for file format overview +# before running aca-py, run a local postgres (docker) like: +# docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres:10 +wallet-storage-type: postgres_storage +# could be sent using env var ACAPY_WALLET_STORAGE_CONFIG +wallet-storage-config: '{"url":"host.docker.internal:5432","max_connections":5}' +# could be sent using env var ACAPY_WALLET_STORAGE_CREDS +wallet-storage-creds: '{"account":"postgres","password":"mysecretpassword","admin_account":"postgres","admin_password":"mysecretpassword"}' diff --git a/demo/run_bdd b/demo/run_bdd index 0fd0f4c339..9bac002496 100755 --- a/demo/run_bdd +++ b/demo/run_bdd @@ -211,6 +211,9 @@ fi if ! [ -z "$TAILS_FILE_COUNT" ]; then DOCKER_ENV="${DOCKER_ENV} -e TAILS_FILE_COUNT=${TAILS_FILE_COUNT}" fi +if ! [ -z "$ACAPY_ARG_FILE" ]; then + DOCKER_ENV="${DOCKER_ENV} -e ACAPY_ARG_FILE=${ACAPY_ARG_FILE}" +fi if ! [ -z "${ENABLE_PYDEVD_PYCHARM}" ]; then DOCKER_ENV="${DOCKER_ENV} -e ENABLE_PYDEVD_PYCHARM=${ENABLE_PYDEVD_PYCHARM} -e PYDEVD_PYCHARM_CONTROLLER_PORT=${PYDEVD_PYCHARM_CONTROLLER_PORT} -e PYDEVD_PYCHARM_AGENT_PORT=${PYDEVD_PYCHARM_AGENT_PORT}" diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index 3edfd8a574..a0d8e559b0 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -321,6 +321,7 @@ def __init__( wallet_type: str = None, public_did: bool = True, seed: str = "random", + arg_file: str = None, ): # configuration parameters self.genesis_txns = genesis_txns @@ -336,6 +337,7 @@ def __init__( self.wallet_type = wallet_type self.public_did = public_did self.seed = seed + self.arg_file = arg_file self.exchange_tracing = False @@ -369,6 +371,7 @@ async def initialize( mediation=self.mediation, wallet_type=self.wallet_type, seed=self.seed, + arg_file=self.arg_file, ) else: self.agent = the_agent @@ -445,7 +448,9 @@ async def issue_credential( "filter": {"indy": {"cred_def_id": cred_def_id}}, "trace": self.exchange_tracing, } - cred_exchange = await self.agent.admin_POST("/issue-credential-2.0/send-offer", offer_request) + cred_exchange = await self.agent.admin_POST( + "/issue-credential-2.0/send-offer", offer_request + ) return cred_exchange @@ -479,9 +484,10 @@ async def receive_credential( print("Attribute not found for:", cred_attr["name"]) matched = False + print("Matching credential received") return matched - async def request_proof(self, proof_request, revocation: bool = False): + async def request_proof(self, proof_request): log_status("#20 Request proof of degree from alice") indy_proof_request = { @@ -495,7 +501,7 @@ async def request_proof(self, proof_request, revocation: bool = False): "requested_predicates": proof_request["requested_predicates"], } - if revocation and self.revocation: + if self.revocation: indy_proof_request["non_revoked"] = {"to": int(time.time())} proof_request_web_request = { "connection_id": self.agent.connection_id, @@ -518,6 +524,7 @@ async def verify_proof(self, proof_request): return None # return verified status + print("Received proof:", self.agent.last_proof_received["verified"]) return self.agent.last_proof_received["verified"] async def terminate(self): @@ -560,9 +567,7 @@ async def register_did(self, did, verkey, role): role=role, ) - async def admin_GET( - self, path, text=False, params=None - ) -> dict: + async def admin_GET(self, path, text=False, params=None) -> dict: """ Execute an admin GET request in the context of the current wallet. @@ -572,9 +577,7 @@ async def admin_GET( """ return await self.agent.admin_GET(path, text=text, params=params) - async def admin_POST( - self, path, data=None, text=False, params=None - ) -> dict: + async def admin_POST(self, path, data=None, text=False, params=None) -> dict: """ Execute an admin POST request in the context of the current wallet. @@ -585,9 +588,7 @@ async def admin_POST( """ return await self.agent.admin_POST(path, data=data, text=text, params=params) - async def agency_admin_GET( - self, path, text=False, params=None - ) -> dict: + async def agency_admin_GET(self, path, text=False, params=None) -> dict: """ Execute an agency GET request in the context of the base wallet (multitenant only). @@ -597,9 +598,7 @@ async def agency_admin_GET( """ return await self.agent.agency_admin_GET(path, text=text, params=params) - async def agency_admin_POST( - self, path, data=None, text=False, params=None - ) -> dict: + async def agency_admin_POST(self, path, data=None, text=False, params=None) -> dict: """ Execute an agency POST request in the context of the base wallet (multitenant only). @@ -608,7 +607,10 @@ async def agency_admin_POST( text = True if the expected response is text, False if json data params = any additional parameters to pass with the request """ - return await self.agent.agency_admin_POST(path, data=data, text=text, params=params) + return await self.agent.agency_admin_POST( + path, data=data, text=text, params=params + ) + def arg_parser(ident: str = None): """ @@ -670,6 +672,12 @@ def arg_parser(ident: str = None): metavar="", help="Set the agent wallet type", ) + parser.add_argument( + "--arg-file", + type=str, + metavar="", + help="Specify a file containing additional aca-py parameters", + ) return parser @@ -686,6 +694,15 @@ async def create_agent_with_args(in_args: list): tails_server_base_url = args.tails_server_base_url or os.getenv("PUBLIC_TAILS_URL") + arg_file = args.arg_file or os.getenv("ACAPY_ARG_FILE") + + # if we don't have a tails server url then guess it + if args.revocation and not tails_server_base_url: + # assume we're running in docker + tails_server_base_url = ( + "http://" + (os.getenv("DOCKERHOST") or "host.docker.internal") + ":6543" + ) + if args.revocation and not tails_server_base_url: raise Exception( "If revocation is enabled, --tails-server-base-url must be provided" @@ -710,6 +727,7 @@ async def create_agent_with_args(in_args: list): wallet_type=args.wallet_type, public_did=args.public_did, seed="random" if args.public_did else None, + arg_file=arg_file, ) return agent diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index 6d2502eb00..7b4717da7a 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -121,6 +121,7 @@ def __init__( revocation: bool = False, multitenant: bool = False, mediation: bool = False, + arg_file: str = None, extra_args=None, **params, ): @@ -146,6 +147,7 @@ def __init__( self.mediation = mediation self.mediator_connection_id = None self.mediator_request_id = None + self.arg_file = arg_file self.admin_url = f"http://{self.internal_host}:{admin_port}" if AGENT_ENDPOINT: @@ -326,6 +328,14 @@ def get_agent_args(self): ] ) + if self.arg_file: + result.extend( + ( + "--arg-file", + self.arg_file, + ) + ) + if self.extra_args: result.extend(self.extra_args) From 420bdab5d97ffa6b73223a0cc314cd70484482e5 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Sun, 21 Feb 2021 17:10:52 +0530 Subject: [PATCH 073/243] Updated test cases for manager in endorse_transaction folder Signed-off-by: Harsh Multani --- .../v1_0/tests/test_manager.py | 594 ++++++++++++++++++ 1 file changed, 594 insertions(+) create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py new file mode 100644 index 0000000000..53e56dd158 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py @@ -0,0 +1,594 @@ +from asynctest import TestCase as AsyncTestCase +from asynctest import mock as async_mock +from .....core.in_memory import InMemoryProfile +from .....wallet.in_memory import InMemoryWallet + +from ..manager import TransactionManager, TransactionManagerError +from ..models.transaction_record import TransactionRecord +from .....connections.models.conn_record import ConnRecord +from ..messages.messages_attach import MessagesAttach + +from ..messages.transaction_request import TransactionRequest +import uuid + + +class TestTransactionManager(AsyncTestCase): + async def setUp(self): + + self.session = InMemoryProfile.test_session() + + self.test_messages_attach = """{ + "endorser": "DJGEjaMunDtFtBVrn1qJMT", + "identifier": "C3nJhruVc7feyB6ckJwhi2", + "operation": { + "data": { + "attr_names": ["score"], + "name": "prefs", + "version": "1.0" + }, + "type": "101" + }, + "protocolVersion": 2, + "reqId": 1613463373859595201, + "signatures": { + "C3nJhruVc7feyB6ckJwhi2": "2iNTeFy44WK9zpsPfcwfu489aHWroYh3v8mme9tPyNKncrk1tVbWKNU4zFvLAbSBwHWxShQSJrhRgoxwaehCaz2j" + } + }""" + + self.test_expires_time = "1597708800" + self.test_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + self.test_receivers_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa7" + self.test_author_transaction_id = "3fa85f64-5717-4562-b3fc-2c963f66afa7" + self.test_endorser_transaction_id = "3fa85f64-5717-4562-b3fc-2c963f66afa8" + + self.test_endorsed_message = """{ + "endorser": "DJGEjaMunDtFtBVrn1qJMT", + "identifier": "C3nJhruVc7feyB6ckJwhi2", + "operation": { + "data": { + "attr_names": ["score"], + "name": "prefs", + "version": "1.0" + }, + "type": "101" + }, + "protocolVersion": 2, + "reqId": 1613463373859595201, + "signatures": { + "C3nJhruVc7feyB6ckJwhi2": "2iNTeFy44WK9zpsPfcwfu489aHWroYh3v8mme9tPyNKncrk1tVbWKNU4zFvLAbSBwHWxShQSJrhRgoxwaehCaz2j", + "DJGEjaMunDtFtBVrn1qJMT": "3hPr2WgAixcXQRQfCZKnmpY7SkQyQW4cegX7QZMPv6FvsNRFV7yW21VaFC5CA3Aze264dkHjX4iZ1495am8fe1qZ" + } + }""" + + self.test_signature = """{ + "endorser": "DJGEjaMunDtFtBVrn1qJMT", + "identifier": "C3nJhruVc7feyB6ckJwhi2", + "operation": { + "data": { + "attr_names": ["score"], + "name": "prefs", + "version": "1.0" + }, + "type": "101" + }, + "protocolVersion": 2, + "reqId": 1613463373859595201, + "signatures": { + "C3nJhruVc7feyB6ckJwhi2": "2iNTeFy44WK9zpsPfcwfu489aHWroYh3v8mme9tPyNKncrk1tVbWKNU4zFvLAbSBwHWxShQSJrhRgoxwaehCaz2j", + "DJGEjaMunDtFtBVrn1qJMT": "3hPr2WgAixcXQRQfCZKnmpY7SkQyQW4cegX7QZMPv6FvsNRFV7yW21VaFC5CA3Aze264dkHjX4iZ1495am8fe1qZ" + } + }""" + self.test_endorser_did = "DJGEjaMunDtFtBVrn1qJMT" + self.test_endorser_verkey = "3Dn1SJNPaCXcvvJvSbsFWP2xaCjMom3can8CQNhWrTRx" + self.test_refuser_did = "AGDEjaMunDtFtBVrn1qPKQ" + + + + + #self.profile = self.session.profile + + + + + #self.session.connection_record = ConnRecord( + # connection_id=self.test_receivers_connection_id + #) + + #self.test_author_did = "55GkHamhTU1ZbTbV2ab9DE" + #self.test_author_verkey = "3Dn1SJNPaCXcvvJvSbsFWP2xaCjMom3can8CQNhWrTRx" + #self.test_endorser_did = "GbuDUYXaUZRfHD2jeDuQuP" + #self.test_endorser_verkey = "9WCgWKUaAJj3VWxxtzvvMQN3AoFxoBtBDo9ntwJnVVCC" + #self.test_refuser_did = "GbuDUYXaUZRfHD2jeDuQuP" + #self.test_transaction_message = { + # "attributes": ["score"], + # "schema_name": "prefs", + # "schema_version": "1.0", + #} + #self.test_mechanism = "manual" + #self.test_taaDigest = ( + # "f50feca75664270842bd4202c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62" + #) + #self.test_time = 1597708800 + #self.test_expires_time = "2020-12-13T17:29:06+0000" + #self.test_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + + #self.test_request_type = ( + # "http://didcomm.org/sign-attachment/%VER/signature-request" + #) + #self.test_response_type = ( + # "http://didcomm.org/sign-attachment/%VER/signature-response" + #) + + #self.test_signature_request = { + # "context": TransactionRecord.SIGNATURE_CONTEXT, + # "method": TransactionRecord.ADD_SIGNATURE, + # "signature_type": TransactionRecord.SIGNATURE_TYPE, + # "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + # "author_goal_code": TransactionRecord.WRITE_TRANSACTION, + #} + + #self.test_format = TransactionRecord.FORMAT_VERSION + + self.manager = TransactionManager(self.session) + + assert self.manager.session + + + async def test_create_record(self): + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + save_record.assert_called_once() + + assert transaction_record.timing["expires_time"] == self.test_expires_time + assert transaction_record.formats[0]["attach_id"] == transaction_record.messages_attach[0]["@id"] + assert transaction_record.formats[0]["format"] == TransactionRecord.FORMAT_VERSION + assert transaction_record.messages_attach[0]["data"]["json"] == self.test_messages_attach + assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_CREATED + + async def test_create_request_bad_state(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + transaction_record.state = TransactionRecord.STATE_TRANSACTION_ENDORSED + + with self.assertRaises(TransactionManagerError): + await self.manager.create_request( + transaction=transaction_record, + connection_id=self.test_connection_id + ) + + + async def test_create_request(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + ( + transaction_record, + transaction_request, + ) = await self.manager.create_request( + transaction_record, self.test_connection_id + ) + save_record.assert_called_once() + + assert transaction_record._type == TransactionRecord.SIGNATURE_REQUEST + assert transaction_record.signature_request[0] == { + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "author_goal_code": TransactionRecord.WRITE_TRANSACTION, + } + assert transaction_record.state == TransactionRecord.STATE_REQUEST_SENT + assert transaction_record.connection_id == self.test_connection_id + + assert transaction_request.transaction_id == transaction_record._id + assert ( + transaction_request.signature_request + == transaction_record.signature_request[0] + ) + assert transaction_request.timing == transaction_record.timing + assert ( + transaction_request.messages_attach == transaction_record.messages_attach[0] + ) + + async def test_recieve_request(self): + + mock_request = async_mock.MagicMock() + mock_request.transaction_id = self.test_author_transaction_id + mock_request.signature_request = { + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "author_goal_code": TransactionRecord.WRITE_TRANSACTION, + } + mock_request.messages_attach = { + "@id": str(uuid.uuid4()), + "mime-type": "application/json", + "data": {"json": self.test_messages_attach} + } + mock_request.timing = { + "expires_time" : self.test_expires_time + } + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_record = await self.manager.receive_request(mock_request, self.test_receivers_connection_id) + save_record.assert_called_once() + + assert transaction_record._type == TransactionRecord.SIGNATURE_REQUEST + assert transaction_record.signature_request[0] == mock_request.signature_request + assert transaction_record.timing == mock_request.timing + assert transaction_record.formats[0] == { + "attach_id": mock_request.messages_attach["@id"], + "format": TransactionRecord.FORMAT_VERSION, + } + assert transaction_record.messages_attach[0] == mock_request.messages_attach + assert transaction_record.thread_id == self.test_author_transaction_id + assert transaction_record.connection_id == self.test_receivers_connection_id + assert transaction_record.state == TransactionRecord.STATE_REQUEST_RECEIVED + + async def test_create_endorse_response_bad_state(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + transaction_record.state = TransactionRecord.STATE_TRANSACTION_ENDORSED + + with self.assertRaises(TransactionManagerError): + await self.manager.create_endorse_response( + transaction=transaction_record, + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + endorser_did=self.test_endorser_did, + endorser_verkey=self.test_endorser_verkey, + endorsed_msg=self.test_endorsed_message, + signature=self.test_signature + ) + + async def test_create_endorse_response(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + transaction_record.state = TransactionRecord.STATE_REQUEST_RECEIVED + transaction_record.thread_id = self.test_author_transaction_id + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + ( + transaction_record, + endorsed_transaction_response, + ) = await self.manager.create_endorse_response( + transaction_record, + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + endorser_did=self.test_endorser_did, + endorser_verkey=self.test_endorser_verkey, + endorsed_msg=self.test_endorsed_message, + signature=self.test_signature + ) + save_record.assert_called_once() + + + assert transaction_record._type == TransactionRecord.SIGNATURE_RESPONSE + assert transaction_record.messages_attach[0]["data"]["json"] == self.test_endorsed_message + assert transaction_record.signature_response[0] == { + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {self.test_endorser_did: self.test_signature}, + } + assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_ENDORSED + + assert endorsed_transaction_response.transaction_id == self.test_author_transaction_id + assert endorsed_transaction_response.thread_id == transaction_record._id + assert endorsed_transaction_response.signature_response == { + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {self.test_endorser_did : self.test_signature}, + } + + assert endorsed_transaction_response.state == TransactionRecord.STATE_TRANSACTION_ENDORSED + assert endorsed_transaction_response.endorser_did == self.test_endorser_did + + async def test_receive_endorse_response(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + self.test_author_transaction_id = transaction_record._id + + mock_response = async_mock.MagicMock() + mock_response.transaction_id = self.test_author_transaction_id + mock_response.thread_id = self.test_endorser_transaction_id + mock_response.signature_response = { + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {self.test_endorser_did: self.test_signature}, + } + mock_response.state = TransactionRecord.STATE_TRANSACTION_ENDORSED + mock_response.endorser_did = self.test_endorser_did + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_record = await self.manager.receive_endorse_response(mock_response) + save_record.assert_called_once() + + assert transaction_record._type == TransactionRecord.SIGNATURE_RESPONSE + assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_ENDORSED + assert transaction_record.signature_response[0] == { + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {self.test_endorser_did: self.test_signature}, + } + assert transaction_record.thread_id == self.test_endorser_transaction_id + assert transaction_record.messages_attach[0]["data"]["json"] == self.test_signature + + async def test_create_refuse_response_bad_state(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + transaction_record.state = TransactionRecord.STATE_TRANSACTION_ENDORSED + + with self.assertRaises(TransactionManagerError): + await self.manager.create_refuse_response( + transaction=transaction_record, + state=TransactionRecord.STATE_TRANSACTION_REFUSED, + refuser_did=self.test_refuser_did, + ) + + async def test_create_refuse_response(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + transaction_record.state = TransactionRecord.STATE_REQUEST_RECEIVED + transaction_record.thread_id = self.test_author_transaction_id + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + ( + transaction_record, + refused_transaction_response, + ) = await self.manager.create_refuse_response( + transaction_record, + state=TransactionRecord.STATE_TRANSACTION_REFUSED, + refuser_did=self.test_refuser_did, + ) + save_record.assert_called_once() + + + assert transaction_record._type == TransactionRecord.SIGNATURE_RESPONSE + assert transaction_record.signature_response[0] == { + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, + } + assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_REFUSED + + assert refused_transaction_response.transaction_id == self.test_author_transaction_id + assert refused_transaction_response.thread_id == transaction_record._id + assert refused_transaction_response.signature_response == { + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION + } + + assert refused_transaction_response.state == TransactionRecord.STATE_TRANSACTION_REFUSED + assert refused_transaction_response.endorser_did == self.test_refuser_did + + async def test_receive_refuse_response(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + self.test_author_transaction_id = transaction_record._id + + mock_response = async_mock.MagicMock() + mock_response.transaction_id = self.test_author_transaction_id + mock_response.thread_id = self.test_endorser_transaction_id + mock_response.signature_response = { + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION + } + mock_response.state = TransactionRecord.STATE_TRANSACTION_REFUSED + mock_response.endorser_did = self.test_refuser_did + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_record = await self.manager.receive_refuse_response(mock_response) + save_record.assert_called_once() + + assert transaction_record._type == TransactionRecord.SIGNATURE_RESPONSE + assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_REFUSED + assert transaction_record.signature_response[0] == { + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION + } + assert transaction_record.thread_id == self.test_endorser_transaction_id + + async def test_cancel_transaction_bad_state(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + transaction_record.state = TransactionRecord.STATE_TRANSACTION_ENDORSED + + with self.assertRaises(TransactionManagerError): + await self.manager.cancel_transaction( + transaction=transaction_record, + state=TransactionRecord.STATE_TRANSACTION_CANCELLED + ) + + async def test_cancel_transaction(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + transaction_record.state = TransactionRecord.STATE_REQUEST_SENT + transaction_record.thread_id = self.test_endorser_transaction_id + transaction_record._id = self.test_author_transaction_id + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + ( + transaction_record, + cancelled_transaction_response, + ) = await self.manager.cancel_transaction( + transaction_record, + state=TransactionRecord.STATE_TRANSACTION_CANCELLED + ) + save_record.assert_called_once() + + assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_CANCELLED + + assert cancelled_transaction_response.thread_id == self.test_author_transaction_id + assert cancelled_transaction_response.state == TransactionRecord.STATE_TRANSACTION_CANCELLED + + async def test_receive_cancel_transaction(self): + + author_transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + ( + author_transaction_record, + author_transaction_request, + ) = await self.manager.create_request( + author_transaction_record, self.test_connection_id + ) + + endorser_transaction_record = await self.manager.receive_request( + author_transaction_request, self.test_receivers_connection_id + ) + + mock_response = async_mock.MagicMock() + mock_response.state = TransactionRecord.STATE_TRANSACTION_CANCELLED + mock_response.thread_id = author_transaction_record._id + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + endorser_transaction_record = await self.manager.receive_cancel_transaction( + mock_response, self.test_receivers_connection_id + ) + save_record.assert_called_once() + + assert endorser_transaction_record.state == TransactionRecord.STATE_TRANSACTION_CANCELLED + + async def test_transaction_resend_bad_state(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + transaction_record.state = TransactionRecord.STATE_TRANSACTION_ENDORSED + + with self.assertRaises(TransactionManagerError): + await self.manager.transaction_resend( + transaction=transaction_record, + state=TransactionRecord.STATE_TRANSACTION_RESENT + ) + + async def test_transaction_resend(self): + + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + transaction_record.state = TransactionRecord.STATE_TRANSACTION_REFUSED + transaction_record.thread_id = self.test_endorser_transaction_id + transaction_record._id = self.test_author_transaction_id + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + ( + transaction_record, + resend_transaction_response, + ) = await self.manager.transaction_resend( + transaction_record, + state=TransactionRecord.STATE_TRANSACTION_RESENT + ) + save_record.assert_called_once() + + assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_RESENT + + assert resend_transaction_response.thread_id == self.test_author_transaction_id + assert resend_transaction_response.state == TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED + + async def test_receive_transaction_resend(self): + + author_transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time + ) + ( + author_transaction_record, + author_transaction_request, + ) = await self.manager.create_request( + author_transaction_record, self.test_connection_id + ) + + endorser_transaction_record = await self.manager.receive_request( + author_transaction_request, self.test_receivers_connection_id + ) + + mock_response = async_mock.MagicMock() + mock_response.state = TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED + mock_response.thread_id = author_transaction_record._id + + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + endorser_transaction_record = await self.manager.receive_transaction_resend( + mock_response, self.test_receivers_connection_id + ) + save_record.assert_called_once() + + assert endorser_transaction_record.state == TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED From 9ce8f6bd6cce5dfa39a7425b81afc99400cad153 Mon Sep 17 00:00:00 2001 From: Harsh Multani Date: Sun, 21 Feb 2021 17:19:47 +0530 Subject: [PATCH 074/243] Rectified Black formatting issues Signed-off-by: Harsh Multani --- .../v1_0/tests/test_manager.py | 378 +++++++++--------- 1 file changed, 185 insertions(+), 193 deletions(-) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py index 53e56dd158..16f8e3a5a8 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py @@ -37,7 +37,7 @@ async def setUp(self): self.test_expires_time = "1597708800" self.test_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" - self.test_receivers_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa7" + self.test_receivers_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa7" self.test_author_transaction_id = "3fa85f64-5717-4562-b3fc-2c963f66afa7" self.test_endorser_transaction_id = "3fa85f64-5717-4562-b3fc-2c963f66afa8" @@ -58,7 +58,7 @@ async def setUp(self): "C3nJhruVc7feyB6ckJwhi2": "2iNTeFy44WK9zpsPfcwfu489aHWroYh3v8mme9tPyNKncrk1tVbWKNU4zFvLAbSBwHWxShQSJrhRgoxwaehCaz2j", "DJGEjaMunDtFtBVrn1qJMT": "3hPr2WgAixcXQRQfCZKnmpY7SkQyQW4cegX7QZMPv6FvsNRFV7yW21VaFC5CA3Aze264dkHjX4iZ1495am8fe1qZ" } - }""" + }""" self.test_signature = """{ "endorser": "DJGEjaMunDtFtBVrn1qJMT", @@ -82,58 +82,10 @@ async def setUp(self): self.test_endorser_verkey = "3Dn1SJNPaCXcvvJvSbsFWP2xaCjMom3can8CQNhWrTRx" self.test_refuser_did = "AGDEjaMunDtFtBVrn1qPKQ" - - - - #self.profile = self.session.profile - - - - - #self.session.connection_record = ConnRecord( - # connection_id=self.test_receivers_connection_id - #) - - #self.test_author_did = "55GkHamhTU1ZbTbV2ab9DE" - #self.test_author_verkey = "3Dn1SJNPaCXcvvJvSbsFWP2xaCjMom3can8CQNhWrTRx" - #self.test_endorser_did = "GbuDUYXaUZRfHD2jeDuQuP" - #self.test_endorser_verkey = "9WCgWKUaAJj3VWxxtzvvMQN3AoFxoBtBDo9ntwJnVVCC" - #self.test_refuser_did = "GbuDUYXaUZRfHD2jeDuQuP" - #self.test_transaction_message = { - # "attributes": ["score"], - # "schema_name": "prefs", - # "schema_version": "1.0", - #} - #self.test_mechanism = "manual" - #self.test_taaDigest = ( - # "f50feca75664270842bd4202c2ab977006761d36bd6f23e4c6a7e0fc2feb9f62" - #) - #self.test_time = 1597708800 - #self.test_expires_time = "2020-12-13T17:29:06+0000" - #self.test_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" - - #self.test_request_type = ( - # "http://didcomm.org/sign-attachment/%VER/signature-request" - #) - #self.test_response_type = ( - # "http://didcomm.org/sign-attachment/%VER/signature-response" - #) - - #self.test_signature_request = { - # "context": TransactionRecord.SIGNATURE_CONTEXT, - # "method": TransactionRecord.ADD_SIGNATURE, - # "signature_type": TransactionRecord.SIGNATURE_TYPE, - # "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - # "author_goal_code": TransactionRecord.WRITE_TRANSACTION, - #} - - #self.test_format = TransactionRecord.FORMAT_VERSION - self.manager = TransactionManager(self.session) assert self.manager.session - async def test_create_record(self): with async_mock.patch.object( @@ -141,38 +93,47 @@ async def test_create_record(self): ) as save_record: transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) save_record.assert_called_once() assert transaction_record.timing["expires_time"] == self.test_expires_time - assert transaction_record.formats[0]["attach_id"] == transaction_record.messages_attach[0]["@id"] - assert transaction_record.formats[0]["format"] == TransactionRecord.FORMAT_VERSION - assert transaction_record.messages_attach[0]["data"]["json"] == self.test_messages_attach - assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_CREATED + assert ( + transaction_record.formats[0]["attach_id"] + == transaction_record.messages_attach[0]["@id"] + ) + assert ( + transaction_record.formats[0]["format"] + == TransactionRecord.FORMAT_VERSION + ) + assert ( + transaction_record.messages_attach[0]["data"]["json"] + == self.test_messages_attach + ) + assert ( + transaction_record.state == TransactionRecord.STATE_TRANSACTION_CREATED + ) async def test_create_request_bad_state(self): transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_record.state = TransactionRecord.STATE_TRANSACTION_ENDORSED with self.assertRaises(TransactionManagerError): await self.manager.create_request( - transaction=transaction_record, - connection_id=self.test_connection_id + transaction=transaction_record, connection_id=self.test_connection_id ) - async def test_create_request(self): transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) - + with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: @@ -183,15 +144,15 @@ async def test_create_request(self): transaction_record, self.test_connection_id ) save_record.assert_called_once() - + assert transaction_record._type == TransactionRecord.SIGNATURE_REQUEST assert transaction_record.signature_request[0] == { - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "author_goal_code": TransactionRecord.WRITE_TRANSACTION, - } + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "author_goal_code": TransactionRecord.WRITE_TRANSACTION, + } assert transaction_record.state == TransactionRecord.STATE_REQUEST_SENT assert transaction_record.connection_id == self.test_connection_id @@ -206,48 +167,48 @@ async def test_create_request(self): ) async def test_recieve_request(self): - + mock_request = async_mock.MagicMock() mock_request.transaction_id = self.test_author_transaction_id mock_request.signature_request = { - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "author_goal_code": TransactionRecord.WRITE_TRANSACTION, - } + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "author_goal_code": TransactionRecord.WRITE_TRANSACTION, + } mock_request.messages_attach = { - "@id": str(uuid.uuid4()), - "mime-type": "application/json", - "data": {"json": self.test_messages_attach} - } - mock_request.timing = { - "expires_time" : self.test_expires_time - } + "@id": str(uuid.uuid4()), + "mime-type": "application/json", + "data": {"json": self.test_messages_attach}, + } + mock_request.timing = {"expires_time": self.test_expires_time} with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: - transaction_record = await self.manager.receive_request(mock_request, self.test_receivers_connection_id) + transaction_record = await self.manager.receive_request( + mock_request, self.test_receivers_connection_id + ) save_record.assert_called_once() assert transaction_record._type == TransactionRecord.SIGNATURE_REQUEST assert transaction_record.signature_request[0] == mock_request.signature_request assert transaction_record.timing == mock_request.timing assert transaction_record.formats[0] == { - "attach_id": mock_request.messages_attach["@id"], - "format": TransactionRecord.FORMAT_VERSION, - } + "attach_id": mock_request.messages_attach["@id"], + "format": TransactionRecord.FORMAT_VERSION, + } assert transaction_record.messages_attach[0] == mock_request.messages_attach assert transaction_record.thread_id == self.test_author_transaction_id assert transaction_record.connection_id == self.test_receivers_connection_id assert transaction_record.state == TransactionRecord.STATE_REQUEST_RECEIVED async def test_create_endorse_response_bad_state(self): - + transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_record.state = TransactionRecord.STATE_TRANSACTION_ENDORSED @@ -258,18 +219,18 @@ async def test_create_endorse_response_bad_state(self): endorser_did=self.test_endorser_did, endorser_verkey=self.test_endorser_verkey, endorsed_msg=self.test_endorsed_message, - signature=self.test_signature + signature=self.test_signature, ) async def test_create_endorse_response(self): transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_record.state = TransactionRecord.STATE_REQUEST_RECEIVED transaction_record.thread_id = self.test_author_transaction_id - + with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: @@ -277,47 +238,55 @@ async def test_create_endorse_response(self): transaction_record, endorsed_transaction_response, ) = await self.manager.create_endorse_response( - transaction_record, + transaction_record, state=TransactionRecord.STATE_TRANSACTION_ENDORSED, endorser_did=self.test_endorser_did, endorser_verkey=self.test_endorser_verkey, endorsed_msg=self.test_endorsed_message, - signature=self.test_signature + signature=self.test_signature, ) save_record.assert_called_once() - - + assert transaction_record._type == TransactionRecord.SIGNATURE_RESPONSE - assert transaction_record.messages_attach[0]["data"]["json"] == self.test_endorsed_message + assert ( + transaction_record.messages_attach[0]["data"]["json"] + == self.test_endorsed_message + ) assert transaction_record.signature_response[0] == { - "message_id": transaction_record.messages_attach[0]["@id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signature": {self.test_endorser_did: self.test_signature}, - } + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {self.test_endorser_did: self.test_signature}, + } assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_ENDORSED - assert endorsed_transaction_response.transaction_id == self.test_author_transaction_id + assert ( + endorsed_transaction_response.transaction_id + == self.test_author_transaction_id + ) assert endorsed_transaction_response.thread_id == transaction_record._id assert endorsed_transaction_response.signature_response == { - "message_id": transaction_record.messages_attach[0]["@id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signature": {self.test_endorser_did : self.test_signature}, - } - - assert endorsed_transaction_response.state == TransactionRecord.STATE_TRANSACTION_ENDORSED + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {self.test_endorser_did: self.test_signature}, + } + + assert ( + endorsed_transaction_response.state + == TransactionRecord.STATE_TRANSACTION_ENDORSED + ) assert endorsed_transaction_response.endorser_did == self.test_endorser_did async def test_receive_endorse_response(self): transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) self.test_author_transaction_id = transaction_record._id @@ -325,40 +294,44 @@ async def test_receive_endorse_response(self): mock_response.transaction_id = self.test_author_transaction_id mock_response.thread_id = self.test_endorser_transaction_id mock_response.signature_response = { - "message_id": transaction_record.messages_attach[0]["@id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signature": {self.test_endorser_did: self.test_signature}, - } + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {self.test_endorser_did: self.test_signature}, + } mock_response.state = TransactionRecord.STATE_TRANSACTION_ENDORSED mock_response.endorser_did = self.test_endorser_did with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: - transaction_record = await self.manager.receive_endorse_response(mock_response) + transaction_record = await self.manager.receive_endorse_response( + mock_response + ) save_record.assert_called_once() - + assert transaction_record._type == TransactionRecord.SIGNATURE_RESPONSE assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_ENDORSED assert transaction_record.signature_response[0] == { - "message_id": transaction_record.messages_attach[0]["@id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signature": {self.test_endorser_did: self.test_signature}, - } + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {self.test_endorser_did: self.test_signature}, + } assert transaction_record.thread_id == self.test_endorser_transaction_id - assert transaction_record.messages_attach[0]["data"]["json"] == self.test_signature + assert ( + transaction_record.messages_attach[0]["data"]["json"] == self.test_signature + ) async def test_create_refuse_response_bad_state(self): - + transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_record.state = TransactionRecord.STATE_TRANSACTION_ENDORSED @@ -373,11 +346,11 @@ async def test_create_refuse_response(self): transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_record.state = TransactionRecord.STATE_REQUEST_RECEIVED transaction_record.thread_id = self.test_author_transaction_id - + with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: @@ -385,39 +358,44 @@ async def test_create_refuse_response(self): transaction_record, refused_transaction_response, ) = await self.manager.create_refuse_response( - transaction_record, + transaction_record, state=TransactionRecord.STATE_TRANSACTION_REFUSED, refuser_did=self.test_refuser_did, ) save_record.assert_called_once() - - + assert transaction_record._type == TransactionRecord.SIGNATURE_RESPONSE assert transaction_record.signature_response[0] == { - "message_id": transaction_record.messages_attach[0]["@id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, - } + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, + } assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_REFUSED - assert refused_transaction_response.transaction_id == self.test_author_transaction_id + assert ( + refused_transaction_response.transaction_id + == self.test_author_transaction_id + ) assert refused_transaction_response.thread_id == transaction_record._id assert refused_transaction_response.signature_response == { - "message_id": transaction_record.messages_attach[0]["@id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION - } - - assert refused_transaction_response.state == TransactionRecord.STATE_TRANSACTION_REFUSED + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, + } + + assert ( + refused_transaction_response.state + == TransactionRecord.STATE_TRANSACTION_REFUSED + ) assert refused_transaction_response.endorser_did == self.test_refuser_did async def test_receive_refuse_response(self): transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) self.test_author_transaction_id = transaction_record._id @@ -425,54 +403,56 @@ async def test_receive_refuse_response(self): mock_response.transaction_id = self.test_author_transaction_id mock_response.thread_id = self.test_endorser_transaction_id mock_response.signature_response = { - "message_id": transaction_record.messages_attach[0]["@id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION - } + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, + } mock_response.state = TransactionRecord.STATE_TRANSACTION_REFUSED mock_response.endorser_did = self.test_refuser_did with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: - transaction_record = await self.manager.receive_refuse_response(mock_response) + transaction_record = await self.manager.receive_refuse_response( + mock_response + ) save_record.assert_called_once() - + assert transaction_record._type == TransactionRecord.SIGNATURE_RESPONSE assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_REFUSED assert transaction_record.signature_response[0] == { - "message_id": transaction_record.messages_attach[0]["@id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION - } + "message_id": transaction_record.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.REFUSE_TRANSACTION, + } assert transaction_record.thread_id == self.test_endorser_transaction_id async def test_cancel_transaction_bad_state(self): - + transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_record.state = TransactionRecord.STATE_TRANSACTION_ENDORSED with self.assertRaises(TransactionManagerError): await self.manager.cancel_transaction( transaction=transaction_record, - state=TransactionRecord.STATE_TRANSACTION_CANCELLED + state=TransactionRecord.STATE_TRANSACTION_CANCELLED, ) async def test_cancel_transaction(self): transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_record.state = TransactionRecord.STATE_REQUEST_SENT transaction_record.thread_id = self.test_endorser_transaction_id transaction_record._id = self.test_author_transaction_id - + with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: @@ -480,27 +460,31 @@ async def test_cancel_transaction(self): transaction_record, cancelled_transaction_response, ) = await self.manager.cancel_transaction( - transaction_record, - state=TransactionRecord.STATE_TRANSACTION_CANCELLED + transaction_record, state=TransactionRecord.STATE_TRANSACTION_CANCELLED ) save_record.assert_called_once() - + assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_CANCELLED - assert cancelled_transaction_response.thread_id == self.test_author_transaction_id - assert cancelled_transaction_response.state == TransactionRecord.STATE_TRANSACTION_CANCELLED + assert ( + cancelled_transaction_response.thread_id == self.test_author_transaction_id + ) + assert ( + cancelled_transaction_response.state + == TransactionRecord.STATE_TRANSACTION_CANCELLED + ) async def test_receive_cancel_transaction(self): author_transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) ( - author_transaction_record, - author_transaction_request, + author_transaction_record, + author_transaction_request, ) = await self.manager.create_request( - author_transaction_record, self.test_connection_id + author_transaction_record, self.test_connection_id ) endorser_transaction_record = await self.manager.receive_request( @@ -519,32 +503,35 @@ async def test_receive_cancel_transaction(self): ) save_record.assert_called_once() - assert endorser_transaction_record.state == TransactionRecord.STATE_TRANSACTION_CANCELLED + assert ( + endorser_transaction_record.state + == TransactionRecord.STATE_TRANSACTION_CANCELLED + ) async def test_transaction_resend_bad_state(self): - + transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_record.state = TransactionRecord.STATE_TRANSACTION_ENDORSED with self.assertRaises(TransactionManagerError): await self.manager.transaction_resend( transaction=transaction_record, - state=TransactionRecord.STATE_TRANSACTION_RESENT + state=TransactionRecord.STATE_TRANSACTION_RESENT, ) async def test_transaction_resend(self): transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) transaction_record.state = TransactionRecord.STATE_TRANSACTION_REFUSED transaction_record.thread_id = self.test_endorser_transaction_id transaction_record._id = self.test_author_transaction_id - + with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: @@ -552,27 +539,29 @@ async def test_transaction_resend(self): transaction_record, resend_transaction_response, ) = await self.manager.transaction_resend( - transaction_record, - state=TransactionRecord.STATE_TRANSACTION_RESENT + transaction_record, state=TransactionRecord.STATE_TRANSACTION_RESENT ) save_record.assert_called_once() - + assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_RESENT assert resend_transaction_response.thread_id == self.test_author_transaction_id - assert resend_transaction_response.state == TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED + assert ( + resend_transaction_response.state + == TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED + ) async def test_receive_transaction_resend(self): author_transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, - expires_time=self.test_expires_time + expires_time=self.test_expires_time, ) ( - author_transaction_record, - author_transaction_request, + author_transaction_record, + author_transaction_request, ) = await self.manager.create_request( - author_transaction_record, self.test_connection_id + author_transaction_record, self.test_connection_id ) endorser_transaction_record = await self.manager.receive_request( @@ -591,4 +580,7 @@ async def test_receive_transaction_resend(self): ) save_record.assert_called_once() - assert endorser_transaction_record.state == TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED + assert ( + endorser_transaction_record.state + == TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED + ) From ebeee5476d7801af1e59a85df81fb5eea2401ec0 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Sun, 21 Feb 2021 08:53:14 -0800 Subject: [PATCH 075/243] Updated docs and fix black formatting Signed-off-by: Ian Costanzo --- demo/INTEGRATION-TESTS.md | 30 +++++++++++++++----- demo/features/steps/0036-issue-credential.py | 10 ++++--- demo/features/steps/0586-sign-transaction.py | 16 +++++++---- 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/demo/INTEGRATION-TESTS.md b/demo/INTEGRATION-TESTS.md index f845d714d9..b012fd4422 100644 --- a/demo/INTEGRATION-TESTS.md +++ b/demo/INTEGRATION-TESTS.md @@ -22,6 +22,20 @@ cd aries-cloudagent-python/demo Note that an Indy ledger and tails server are both required (these can also be specified using environment variables). +By default the test suite runs using a default (SQLite) wallet, to run the tests using postgres run the following: + +```bash +# run the above commands, up to cd aries-cloudagent-python/demo +docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres:10 +ACAPY_ARG_FILE=postgres-indy-args.yml ./run_bdd +``` + +You can run individual tests by specifying the tag(s): + +```bash +./run_bdd -t @T001-AIP10-RFC0037 +``` + ## Aca-py Integration Tests vs Aries Agent Test Harness (AATH) Aca-py Behave tests are based on the interoperability tests that are implemented in the [Aries Agent Test Harness (AATH)](https://github.com/hyperledger/aries-agent-test-harness). Both use [Behave (Gherkin)](https://behave.readthedocs.io/en/stable/) to execute tests against a running aca-py agent (or in the case of AATH, against any compatible Aries agent), however the aca-py integration tests focus on aca-py specific features. @@ -29,14 +43,14 @@ Aca-py Behave tests are based on the interoperability tests that are implemented AATH: - Main purpose is to test interoperability between Aries agents -- Implements detailed tests based on [Aries RFC's](https://github.com/hyperledger/aries-rfcs) -- Runs Aries agents using Docker images (agents run fot he duration of the tests) +- Implements detailed tests based on [Aries RFC's](https://github.com/hyperledger/aries-rfcs) (runs different scenarios, tests exception paths, etc.) +- Runs Aries agents using Docker images (agents run for the duration of the tests) - Uses a standard "backchannel" to support integration of any Aries agent Aca-py integration tests: - Main purpose is to test aca-py -- Implements tests based on Aries RFC's, but not to the level of detail as AATH (mostly happy path) +- Implements tests based on Aries RFC's, but not to the level of detail as AATH (runs (mostly) happy path scenarios against multiple agent configurations) - Tests aca-py specific configurations and features - Starts and stops agents for each tests to test different aca-py configurations - Uses the same Python framework as used for the interactive Alice/Faber demo @@ -70,7 +84,7 @@ The agent's "capabilities" are specified using the same command-line parameters ## Global Configuration for All Aca-py Agents Under Test -You can specify parameters that are applied to all aca-py agents using the `ACAPY_ARG_FILE` environment variable: +You can specify parameters that are applied to all aca-py agents using the `ACAPY_ARG_FILE` environment variable, for example: ```bash ACAPY_ARG_FILE=postgres-indy-args.yml ./run_bdd @@ -80,7 +94,7 @@ ACAPY_ARG_FILE=postgres-indy-args.yml ./run_bdd Any aca-py arguement can be included in the yml file, and order-of-precidence applies (see [https://pypi.org/project/ConfigArgParse/](https://pypi.org/project/ConfigArgParse/)). -## Specifying Command-line Parameters when Running Integration Tests +## Specifying Environment Parameters when Running Integration Tests Aca-py integration tests support the following environment-driven configuration: @@ -89,13 +103,15 @@ Aca-py integration tests support the following environment-driven configuration: - `PUBLIC_TAILS_URL` - specify the public url of the tails server - `ACAPY_ARG_FILE` - specify global aca-py parameters (see above) +## Running specific test scenarios + Behave tests are tagged using the same [standard tags as used in AATH](https://github.com/hyperledger/aries-agent-test-harness#test-tags). To run a specific set of Aca-py integration tests (or exclude specific tests): -TBD the `-t` parameters need to be implemented ... - ```bash ./run_bdd -t tag1 -t ~tag2 ``` +(All command line parameters are passed to the `behave` command, so [all parameters supported by behave](https://behave.readthedocs.io/en/stable/behave.html) can be used.) + diff --git a/demo/features/steps/0036-issue-credential.py b/demo/features/steps/0036-issue-credential.py index 7111552d61..6a606f874c 100644 --- a/demo/features/steps/0036-issue-credential.py +++ b/demo/features/steps/0036-issue-credential.py @@ -66,20 +66,22 @@ def step_impl(context, holder): # get the required revocation info from the last credential exchange cred_exchange = context.cred_exchange - cred_exchange = agent_container_GET(agent['agent'], "/issue-credential-2.0/records/" + cred_exchange["cred_ex_id"]) + cred_exchange = agent_container_GET( + agent["agent"], "/issue-credential-2.0/records/" + cred_exchange["cred_ex_id"] + ) context.cred_exchange = cred_exchange print("rev_reg_id:", cred_exchange["indy"]["rev_reg_id"]) print("cred_rev_id:", cred_exchange["indy"]["cred_rev_id"]) # revoke the credential revoke_status = agent_container_POST( - agent['agent'], + agent["agent"], "/revocation/revoke", data={ "rev_reg_id": cred_exchange["indy"]["rev_reg_id"], "cred_rev_id": cred_exchange["indy"]["cred_rev_id"], - "publish": "Y" - } + "publish": "Y", + }, ) # pause for a few seconds diff --git a/demo/features/steps/0586-sign-transaction.py b/demo/features/steps/0586-sign-transaction.py index 571f49e8f5..3012b5cee6 100644 --- a/demo/features/steps/0586-sign-transaction.py +++ b/demo/features/steps/0586-sign-transaction.py @@ -20,18 +20,22 @@ def step_impl(context, agent_name, did_role): agent = context.active_agents[agent_name] # create a new DID in the current wallet - created_did = agent_container_POST(agent['agent'], "/wallet/did/create") + created_did = agent_container_POST(agent["agent"], "/wallet/did/create") # publish to the ledger with did_role registered_did = agent_container_register_did( - agent['agent'], + agent["agent"], created_did["result"]["did"], created_did["result"]["verkey"], "ENDORSER" if did_role == "ENDORSER" else "", ) # make the new did the wallet's public did - created_did = agent_container_POST(agent['agent'], "/wallet/did/public", params={"did": created_did["result"]["did"]}) + created_did = agent_container_POST( + agent["agent"], + "/wallet/did/public", + params={"did": created_did["result"]["did"]}, + ) if not "public_dids" in context: context.public_dids = {} @@ -43,12 +47,12 @@ def step_impl(context, agent_name, connection_job_role): agent = context.active_agents[agent_name] # current connection_id for the selected agent - connection_id = agent['agent'].agent.connection_id + connection_id = agent["agent"].agent.connection_id # set role for agent's connection - #updated_connection = agent_container_POST( + # updated_connection = agent_container_POST( # agent['agent'], # "/transaction/set-job", # params={"connection": connection_id, "my_job": connection_job_role} - #) + # ) pass From 29c877293066b4884c5d214ac0e4d2f158132d59 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Sun, 21 Feb 2021 16:40:38 -0800 Subject: [PATCH 076/243] bdd integration test for schema endorser scenario Signed-off-by: Ian Costanzo --- demo/features/0586-sign-transaction.feature | 16 ++- demo/features/steps/0586-sign-transaction.py | 106 +++++++++++++++++-- demo/runners/agent_container.py | 3 + 3 files changed, 115 insertions(+), 10 deletions(-) diff --git a/demo/features/0586-sign-transaction.feature b/demo/features/0586-sign-transaction.feature index 1e86d50803..2f06edcdb6 100644 --- a/demo/features/0586-sign-transaction.feature +++ b/demo/features/0586-sign-transaction.feature @@ -9,9 +9,17 @@ Feature: RFC 0586 Aries sign (endorse) transactions functions And "Acme" and "Bob" have an existing connection When "Acme" has a DID with role "ENDORSER" And "Bob" has a DID with role "AUTHOR" - And "Acme" connection has job role "TXN_ENDORSER" - And "Bob" connection has job role "TXN_AUTHOR" + And "Acme" connection has job role "TRANSACTION_ENDORSER" + And "Bob" connection has job role "TRANSACTION_AUTHOR" + And "Bob" authors a schema transaction with + And "Bob" requests endorsement for the transaction + And "Acme" endorses the transaction + Then "Bob" can write the transaction to the ledger + And "Bob" has written the schema to the ledger Examples: - | Acme_capabilities | Bob_capabilities | - | | | + | Acme_capabilities | Bob_capabilities | Schema_name | + | | | driverslicense | + | --did-exchange | --did-exchange | driverslicense | + | --mediation | --mediation | driverslicense | + | --multitenant | --multitenant | driverslicense | diff --git a/demo/features/steps/0586-sign-transaction.py b/demo/features/steps/0586-sign-transaction.py index 3012b5cee6..b30c0ce5b0 100644 --- a/demo/features/steps/0586-sign-transaction.py +++ b/demo/features/steps/0586-sign-transaction.py @@ -7,6 +7,8 @@ agent_container_register_did, agent_container_GET, agent_container_POST, + read_schema_data, + async_sleep, ) from runners.agent_container import AgentContainer @@ -50,9 +52,101 @@ def step_impl(context, agent_name, connection_job_role): connection_id = agent["agent"].agent.connection_id # set role for agent's connection - # updated_connection = agent_container_POST( - # agent['agent'], - # "/transaction/set-job", - # params={"connection": connection_id, "my_job": connection_job_role} - # ) - pass + print("Updating role for connection:", connection_id, connection_job_role) + updated_connection = agent_container_POST( + agent['agent'], + "/transactions/" + connection_id + "/set-transaction-jobs", + params={"transaction_my_job": connection_job_role} + ) + + # assert goodness + assert updated_connection["transaction_my_job"] == connection_job_role + async_sleep(1.0) + + +@when('"{agent_name}" authors a schema transaction with {schema_name}') +def step_impl(context, agent_name, schema_name): + agent = context.active_agents[agent_name + ] + + schema_info = read_schema_data(schema_name) + endorser_did = context.public_dids["ENDORSER"] + created_txn = agent_container_POST( + agent["agent"], + "/schemas", + data=schema_info["schema"], + params={"auto_endorse": "false", "endorser_did": endorser_did}, + ) + + # assert goodness + assert created_txn["state"] == "transaction_created" + if not "txn_ids" in context: + context.txn_ids = {} + context.txn_ids["AUTHOR"] = created_txn["_id"] + + +@when('"{agent_name}" requests endorsement for the transaction') +def step_impl(context, agent_name): + agent = context.active_agents[agent_name] + + async_sleep(1.0) + txn_id = context.txn_ids["AUTHOR"] + connection_id = agent["agent"].agent.connection_id + print("Requesting endorsement for connection:", connection_id) + requested_txn = agent_container_POST( + agent["agent"], + "/transactions/create-request", + params={"conn_id": connection_id, "tran_id": txn_id}, + ) + + # assert goodness + assert requested_txn["state"] == "request_sent" + + +@when('"{agent_name}" endorses the transaction') +def step_impl(context, agent_name): + agent = context.active_agents[agent_name] + + txns = {"results": []} + i = 5 + while 0 == len(txns["results"]) and i > 0: + async_sleep(1.0) + txns = agent_container_GET(agent["agent"], "/transactions") + i = i - 1 + requested_txn = txns["results"][0] + assert requested_txn["state"] == "request_received" + txn_id = requested_txn["_id"] + + endorsed_txn = agent_container_POST(agent["agent"], "/transactions/" + txn_id + "/endorse") + + assert endorsed_txn["state"] == "transaction_endorsed" + + +@then('"{agent_name}" can write the transaction to the ledger') +def step_impl(context, agent_name): + agent = context.active_agents[agent_name] + + async_sleep(1.0) + txns = agent_container_GET(agent["agent"], "/transactions") + requested_txn = txns["results"][0] + assert requested_txn["state"] == "transaction_endorsed" + txn_id = requested_txn["_id"] + + written_txn = agent_container_POST(agent["agent"], "/transactions/" + txn_id + "/write") + + assert written_txn["state"] == "transaction_completed" + + +@then('"{agent_name}" has written the schema {schema_name} to the ledger') +def step_impl(context, agent_name, schema_name): + agent = context.active_agents[agent_name] + + schema_info = read_schema_data(schema_name) + + schemas = agent_container_GET(agent["agent"], "/schemas/created") + assert len(schemas["schema_ids"]) == 1 + + schema_id = schemas["schema_ids"][0] + schema = agent_container_GET(agent["agent"], "/schemas/" + schema_id) + + # TODO assert goodness diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index a0d8e559b0..fdc71d48c5 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -238,6 +238,9 @@ async def handle_present_proof(self, message): async def handle_basicmessages(self, message): self.log("Received message:", message["content"]) + async def handle_endorse_transaction(self, message): + self.log("Received transaction message:", message["state"]) + async def generate_invitation( self, use_did_exchange: bool, From 7fe1ee6a5c7a7b84f898c96c8daf59b177ee4dc7 Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 22 Feb 2021 19:57:02 +0000 Subject: [PATCH 077/243] work in progress: models, handlers code complete; include sha256 in attach-deco content Signed-off-by: sklump --- .../messaging/decorators/attach_decorator.py | 13 +- .../decorators/tests/test_attach_decorator.py | 26 ++- .../issue_credential/v2_0/manager.py | 10 +- .../v2_0/messages/cred_issue.py | 14 +- .../v2_0/messages/cred_offer.py | 14 +- .../v2_0/messages/cred_proposal.py | 14 +- .../v2_0/messages/cred_request.py | 14 +- .../v2_0/messages/tests/test_cred_issue.py | 2 +- .../v2_0/messages/tests/test_cred_offer.py | 2 +- .../v2_0/messages/tests/test_cred_proposal.py | 2 +- .../v2_0/messages/tests/test_cred_request.py | 14 +- .../v2_0/tests/test_manager.py | 51 +++-- .../v1_0/models/tests/test_record.py | 4 +- .../present_proof/v2_0/handlers/__init__.py | 0 .../v2_0/handlers/pres_ack_handler.py | 49 +++++ .../v2_0/handlers/pres_handler.py | 57 ++++++ .../v2_0/handlers/pres_proposal_handler.py | 73 +++++++ .../v2_0/handlers/pres_request_handler.py | 119 +++++++++++ .../v2_0/handlers/tests/__init__.py | 0 .../handlers/tests/test_pres_ack_handler.py | 52 +++++ .../v2_0/handlers/tests/test_pres_handler.py | 58 ++++++ .../tests/test_pres_proposal_handler.py | 90 +++++++++ .../present_proof/v2_0/messages/pres.py | 4 +- .../v2_0/messages/pres_format.py | 2 +- .../v2_0/messages/pres_proposal.py | 4 +- .../v2_0/messages/pres_request.py | 4 +- .../v2_0/messages/tests/test_pres.py | 8 +- .../v2_0/messages/tests/test_pres_format.py | 6 +- .../v2_0/messages/tests/test_pres_proposal.py | 4 +- .../v2_0/messages/tests/test_pres_request.py | 8 +- .../present_proof/v2_0/models/__init__.py | 0 .../v2_0/models/pres_exchange.py | 186 ++++++++++++++++++ .../v2_0/models/tests/__init__.py | 0 .../v2_0/models/tests/test_record.py | 55 ++++++ 34 files changed, 870 insertions(+), 89 deletions(-) create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/handlers/__init__.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_ack_handler.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_handler.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_proposal_handler.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/__init__.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_ack_handler.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_handler.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_proposal_handler.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/models/__init__.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/models/tests/__init__.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py diff --git a/aries_cloudagent/messaging/decorators/attach_decorator.py b/aries_cloudagent/messaging/decorators/attach_decorator.py index 273f7ef201..205cb1b792 100644 --- a/aries_cloudagent/messaging/decorators/attach_decorator.py +++ b/aries_cloudagent/messaging/decorators/attach_decorator.py @@ -8,7 +8,7 @@ import json import uuid -from typing import Any, Mapping, Sequence, Union +from typing import Any, Mapping, Sequence, Tuple, Union from marshmallow import EXCLUDE, fields, pre_load @@ -546,11 +546,13 @@ def __init__( self.data = data @property - def content(self): + def content(self) -> Union[Mapping, Tuple[Sequence[str], str]]: """ Return attachment content. - Returns: data attachment, decoded if necessary and json-loaded, or data links + Returns: + data attachment, decoded if necessary and json-loaded, or data links + and sha-256 hash. """ if hasattr(self.data, "base64_"): @@ -558,7 +560,10 @@ def content(self): elif hasattr(self.data, "json_"): return self.data.json elif hasattr(self.data, "links_"): - return self.data.links # fetching would be async; we want a property here + return ( # fetching would be async; we want a property here + self.data.links, + self.data.sha256, + ) else: return None diff --git a/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py b/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py index cd9b5fb001..d0e77ddbb2 100644 --- a/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py +++ b/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py @@ -69,9 +69,11 @@ DATA_JSON = AttachDecoratorData( json_=json.dumps({"preference": "hasselback", "variety": "russet"}) ) +LINK_1X1 = "https://upload.wikimedia.org/wikipedia/commons/c/ca/1x1.png" +SHA256_1X1 = "3eb10792d1f0c7e07e7248273540f1952d9a5a2996f4b5df70ab026cd9f05517" DATA_LINKS = AttachDecoratorData( - links_="https://upload.wikimedia.org/wikipedia/commons/c/ca/1x1.png", - sha256_="3eb10792d1f0c7e07e7248273540f1952d9a5a2996f4b5df70ab026cd9f05517", + links_=LINK_1X1, + sha256_=SHA256_1X1, ) @@ -325,10 +327,6 @@ def test_content(self): deco_b64_auto_id = AttachDecorator.data_base64(mapping=INDY_CRED) assert deco_b64_auto_id.ident - # cover AttachDecoratorData equality operator - plain_json = AttachDecoratorData(json_=json.dumps({"sample": "data"})) - assert deco_b64.data != plain_json - # data.json deco_json = AttachDecorator.data_json( mapping=INDY_CRED, @@ -354,35 +352,33 @@ def test_content(self): # data.links deco_links = AttachDecorator.data_links( - links="http://localhost/x.json", + links=LINK_1X1, + sha256=SHA256_1X1, ident=IDENT, description=DESCRIPTION, ) assert deco_links.mime_type == "application/json" assert hasattr(deco_links.data, "links_") + assert hasattr(deco_links.data, "sha256_") assert deco_links.data.base64 is None assert deco_links.data.json is None assert deco_links.data.links is not None - assert deco_links.data.sha256 is None - assert deco_links.content == ["http://localhost/x.json"] + assert deco_links.data.sha256 is not None + assert deco_links.content == ([LINK_1X1,], SHA256_1X1) assert deco_links.ident == IDENT assert deco_links.description == DESCRIPTION deco_links_auto_id = AttachDecorator.data_links(links="http://localhost/x.json") assert deco_links_auto_id.ident - # cover AttachDecoratorData equality operator - plain_json = AttachDecoratorData(json_=json.dumps({"sample": "data"})) - assert deco_links.data != plain_json - - # links coverage + # links equality operator coverage lynx_str = AttachDecoratorData(links_="https://en.wikipedia.org/wiki/Lynx") lynx_list = AttachDecoratorData(links_=["https://en.wikipedia.org/wiki/Lynx"]) links = AttachDecoratorData(links_="https://en.wikipedia.org/wiki/Chain") assert lynx_str == lynx_list assert lynx_str != links - assert links != DATA_LINKS # has sha256 + assert links != DATA_LINKS # formalism for no data no_data = AttachDecorator(data=None) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py index c5b189bf97..6a876b9e58 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py @@ -331,7 +331,7 @@ async def receive_offer( V20CredFormat.Format.get(p.format) for p in cred_offer_message.formats ] # until DIF support - offer = cred_offer_message.offer( + offer = cred_offer_message.attachment( V20CredFormat.Format.INDY ) # may change for DIF schema_id = offer["schema_id"] @@ -405,7 +405,7 @@ async def create_request( ) cred_offer_message = V20CredOffer.deserialize(cred_ex_record.cred_offer) - cred_offer = cred_offer_message.offer( + cred_offer = cred_offer_message.attachment( V20CredFormat.Format.INDY ) # will change for DIF cred_def_id = cred_offer["cred_def_id"] @@ -528,13 +528,13 @@ async def issue_credential( cred_offer_message = V20CredOffer.deserialize(cred_ex_record.cred_offer) replacement_id = cred_offer_message.replacement_id - cred_offer = cred_offer_message.offer(V20CredFormat.Format.INDY) + cred_offer = cred_offer_message.attachment(V20CredFormat.Format.INDY) schema_id = cred_offer["schema_id"] cred_def_id = cred_offer["cred_def_id"] cred_request = V20CredRequest.deserialize( cred_ex_record.cred_request - ).cred_request( + ).attachment( V20CredFormat.Format.INDY ) # will change for DIF @@ -752,7 +752,7 @@ async def store_credential( f"(must be {V20CredExRecord.STATE_CREDENTIAL_RECEIVED})" ) - cred = V20CredIssue.deserialize(cred_ex_record.cred_issue).cred( + cred = V20CredIssue.deserialize(cred_ex_record.cred_issue).attachment( V20CredFormat.Format.INDY ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py index 8f4290243a..f40ea1f22f 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py @@ -54,7 +54,7 @@ def __init__( self.formats = list(formats) if formats else [] self.credentials_attach = list(credentials_attach) if credentials_attach else [] - def cred(self, fmt: V20CredFormat.Format = None) -> dict: + def attachment(self, fmt: V20CredFormat.Format = None) -> dict: """ Return attached credential. @@ -62,9 +62,15 @@ def cred(self, fmt: V20CredFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20CredFormat.Format.INDY).get_attachment_data( - self.formats, - self.credentials_attach, + return ( + ( + fmt or V20CredFormat.Format.get(self.formats[0].format) + ).get_attachment_data( + self.formats, + self.credentials_attach, + ) + if self.formats + else None ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py index 0801483f82..c4895e1206 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py @@ -58,7 +58,7 @@ def __init__( self.formats = list(formats) if formats else [] self.offers_attach = list(offers_attach) if offers_attach else [] - def offer(self, fmt: V20CredFormat.Format = None) -> dict: + def attachment(self, fmt: V20CredFormat.Format = None) -> dict: """ Return attached offer. @@ -66,9 +66,15 @@ def offer(self, fmt: V20CredFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20CredFormat.Format.INDY).get_attachment_data( - self.formats, - self.offers_attach, + return ( + ( + fmt or V20CredFormat.Format.get(self.formats[0].format) + ).get_attachment_data( + self.formats, + self.offers_attach, + ) + if self.formats + else None ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py index 476945f02d..a2f2e23657 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py @@ -56,7 +56,7 @@ def __init__( self.formats = list(formats) if formats else [] self.filters_attach = list(filters_attach) if filters_attach else [] - def filter(self, fmt: V20CredFormat.Format = None) -> dict: + def attachment(self, fmt: V20CredFormat.Format = None) -> dict: """ Return attached filter. @@ -64,9 +64,15 @@ def filter(self, fmt: V20CredFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20CredFormat.Format.INDY).get_attachment_data( - self.formats, - self.filters_attach, + return ( + ( + fmt or V20CredFormat.Format.get(self.formats[0].format) + ).get_attachment_data( + self.formats, + self.filters_attach, + ) + if self.formats + else None ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py index 7f43e56cb0..5b4e0678ae 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py @@ -53,7 +53,7 @@ def __init__( self.formats = list(formats) if formats else [] self.requests_attach = list(requests_attach) if requests_attach else [] - def cred_request(self, fmt: V20CredFormat.Format = None) -> dict: + def attachment(self, fmt: V20CredFormat.Format = None) -> dict: """ Return attached credential request. @@ -61,9 +61,15 @@ def cred_request(self, fmt: V20CredFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20CredFormat.Format.INDY).get_attachment_data( - self.formats, - self.requests_attach, + return ( + ( + fmt or V20CredFormat.Format.get(self.formats[0].format) + ).get_attachment_data( + self.formats, + self.requests_attach, + ) + if self.formats + else None ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py index fc13501916..566782ecf4 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py @@ -99,7 +99,7 @@ async def test_init_type(self): ) assert cred_issue.credentials_attach[0].content == TestV20CredIssue.indy_cred assert cred_issue.credentials_attach[0].ident # auto-generates UUID4 - assert cred_issue.cred() == TestV20CredIssue.indy_cred + assert cred_issue.attachment() == TestV20CredIssue.indy_cred assert cred_issue._type == DIDCommPrefix.qualify_current(CRED_20_ISSUE) async def test_deserialize(self): diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py index d45e409998..036182ff83 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py @@ -64,7 +64,7 @@ async def test_init_type(self): ) assert cred_offer.credential_preview == TestV20CredOffer.preview assert cred_offer.offers_attach[0].content == TestV20CredOffer.indy_offer - assert cred_offer.offer() == TestV20CredOffer.indy_offer + assert cred_offer.attachment() == TestV20CredOffer.indy_offer assert cred_offer._type == DIDCommPrefix.qualify_current(CRED_20_OFFER) async def test_deserialize(self): diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py index 0a9d1de0c1..62543cb408 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py @@ -42,7 +42,7 @@ async def test_init(self): filters_attach=[AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc")], ) assert cred_proposal.credential_preview == TEST_PREVIEW - assert cred_proposal.filter() == TEST_INDY_FILTER + assert cred_proposal.attachment() == TEST_INDY_FILTER assert cred_proposal._type == DIDCommPrefix.qualify_current(CRED_20_PROPOSAL) async def test_deserialize(self): diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py index 0430fd783f..4ad556e50d 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py @@ -64,7 +64,7 @@ async def test_init_type(self): assert ( cred_request.requests_attach[0].content == TestV20CredRequest.indy_cred_req ) - assert cred_request.cred_request() == TestV20CredRequest.indy_cred_req + assert cred_request.attachment() == TestV20CredRequest.indy_cred_req assert cred_request._type == DIDCommPrefix.qualify_current(CRED_20_REQUEST) async def test_deserialize(self): @@ -134,11 +134,11 @@ async def test_make_model(self): ) assert ( - cred_request.cred_request(V20CredFormat.Format.INDY) + cred_request.attachment(V20CredFormat.Format.INDY) == TestV20CredRequest.indy_cred_req ) assert ( - cred_request.cred_request(V20CredFormat.Format.DIF) + cred_request.attachment(V20CredFormat.Format.DIF) == TestV20CredRequest.dif_cred_req ) data = cred_request.serialize() @@ -164,9 +164,11 @@ async def test_make_model(self): AttachDecorator.data_links( ident="dif-links", links="http://10.20.30.40/cred-req.json", + sha256="00000000000000000000000000000000", ), ], ) - assert cred_request.cred_request(V20CredFormat.Format.DIF) == [ - "http://10.20.30.40/cred-req.json" - ] + assert cred_request.attachment(V20CredFormat.Format.DIF) == ( + ["http://10.20.30.40/cred-req.json"], + "00000000000000000000000000000000", + ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py index 8c2c6a7441..3bfc9aa8bf 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py @@ -209,7 +209,7 @@ async def test_create_proposal(self): mock_save.assert_called_once() cred_proposal = V20CredProposal.deserialize(cx_rec.cred_proposal) - assert not cred_proposal.filter( + assert not cred_proposal.attachment( V20CredFormat.Format.INDY ).keys() # leave underspecified until offer receipt assert cx_rec.conn_id == conn_id @@ -238,7 +238,7 @@ async def test_create_proposal_no_preview(self): mock_save.assert_called_once() cred_proposal = V20CredProposal.deserialize(cx_rec.cred_proposal) - assert cred_proposal.filter(V20CredFormat.Format.INDY) == { + assert cred_proposal.attachment(V20CredFormat.Format.INDY) == { "cred_def_id": CRED_DEF_ID } assert cx_rec.conn_id == conn_id @@ -275,7 +275,7 @@ async def test_receive_proposal(self): ret_cred_proposal = V20CredProposal.deserialize(cx_rec.cred_proposal) - assert ret_cred_proposal.filter(V20CredFormat.Format.INDY) == { + assert ret_cred_proposal.attachment(V20CredFormat.Format.INDY) == { "cred_def_id": CRED_DEF_ID } assert ( @@ -360,7 +360,7 @@ async def test_create_free_offer(self): assert cx_rec.role == V20CredExRecord.ROLE_ISSUER assert cx_rec.state == V20CredExRecord.STATE_OFFER_SENT assert ( - V20CredOffer.deserialize(cx_rec.cred_offer).offer( + V20CredOffer.deserialize(cx_rec.cred_offer).attachment( V20CredFormat.Format.INDY ) == indy_offer @@ -509,7 +509,7 @@ async def test_create_bound_offer(self): assert cx_rec.role == V20CredExRecord.ROLE_ISSUER assert cx_rec.state == V20CredExRecord.STATE_OFFER_SENT assert ( - V20CredOffer.deserialize(cx_rec.cred_offer).offer( + V20CredOffer.deserialize(cx_rec.cred_offer).attachment( V20CredFormat.Format.INDY ) == indy_offer @@ -615,7 +615,7 @@ async def test_receive_offer_proposed(self): assert cx_rec.role == V20CredExRecord.ROLE_HOLDER assert cx_rec.state == V20CredExRecord.STATE_OFFER_RECEIVED assert ( - V20CredOffer.deserialize(cx_rec.cred_offer).offer( + V20CredOffer.deserialize(cx_rec.cred_offer).attachment( V20CredFormat.Format.INDY ) == indy_offer @@ -668,7 +668,7 @@ async def test_receive_free_offer(self): assert cx_rec.role == V20CredExRecord.ROLE_HOLDER assert cx_rec.state == V20CredExRecord.STATE_OFFER_RECEIVED assert ( - V20CredOffer.deserialize(cx_rec.cred_offer).offer( + V20CredOffer.deserialize(cx_rec.cred_offer).attachment( V20CredFormat.Format.INDY ) == indy_offer @@ -739,7 +739,7 @@ async def test_create_request(self): indy_offer, cred_def, holder_did ) - assert ret_cred_req.cred_request() == indy_cred_req + assert ret_cred_req.attachment() == indy_cred_req assert ret_cred_req._thread_id == thread_id assert ret_cx_rec.state == V20CredExRecord.STATE_REQUEST_SENT @@ -812,7 +812,7 @@ async def test_create_request_no_cache(self): indy_offer, cred_def, holder_did ) - assert ret_cred_request.cred_request() == indy_cred_req + assert ret_cred_request.attachment() == indy_cred_req assert ret_cred_request._thread_id == thread_id assert ret_cx_rec.state == V20CredExRecord.STATE_REQUEST_SENT @@ -908,7 +908,7 @@ async def test_receive_request(self): assert cx_rec.state == V20CredExRecord.STATE_REQUEST_RECEIVED assert ( - V20CredRequest.deserialize(cx_rec.cred_request).cred_request() + V20CredRequest.deserialize(cx_rec.cred_request).attachment() == indy_cred_req ) @@ -1019,8 +1019,11 @@ async def test_issue_credential(self): "dummy-path", ) - assert V20CredIssue.deserialize(ret_cx_rec.cred_issue).cred() == indy_cred - assert ret_cred_issue.cred() == indy_cred + assert ( + V20CredIssue.deserialize(ret_cx_rec.cred_issue).attachment() + == indy_cred + ) + assert ret_cred_issue.attachment() == indy_cred assert ret_cx_rec.state == V20CredExRecord.STATE_ISSUED assert ret_cred_issue._thread_id == thread_id @@ -1130,8 +1133,11 @@ async def test_issue_credential_non_revocable(self): None, ) - assert V20CredIssue.deserialize(ret_cx_rec.cred_issue).cred() == indy_cred - assert ret_cred_issue.cred() == indy_cred + assert ( + V20CredIssue.deserialize(ret_cx_rec.cred_issue).attachment() + == indy_cred + ) + assert ret_cred_issue.attachment() == indy_cred assert ret_cx_rec.state == V20CredExRecord.STATE_ISSUED assert ret_cred_issue._thread_id == thread_id @@ -1247,8 +1253,11 @@ async def test_issue_credential_fills_rr(self): "dummy-path", ) - assert V20CredIssue.deserialize(ret_cx_rec.cred_issue).cred() == indy_cred - assert ret_cred_issue.cred() == indy_cred + assert ( + V20CredIssue.deserialize(ret_cx_rec.cred_issue).attachment() + == indy_cred + ) + assert ret_cred_issue.attachment() == indy_cred assert ret_cx_rec.state == V20CredExRecord.STATE_ISSUED assert ret_cred_issue._thread_id == thread_id @@ -1607,7 +1616,10 @@ async def test_receive_cred(self): ) mock_save.assert_called_once() - assert V20CredIssue.deserialize(ret_cx_rec.cred_issue).cred() == indy_cred + assert ( + V20CredIssue.deserialize(ret_cx_rec.cred_issue).attachment() + == indy_cred + ) assert ret_cx_rec.state == V20CredExRecord.STATE_CREDENTIAL_RECEIVED async def test_store_credential(self): @@ -1742,7 +1754,10 @@ async def test_store_credential(self): rev_reg_def=REV_REG_DEF, ) - assert V20CredIssue.deserialize(ret_cx_rec.cred_issue).cred() == indy_cred + assert ( + V20CredIssue.deserialize(ret_cx_rec.cred_issue).attachment() + == indy_cred + ) assert ret_cx_rec.state == V20CredExRecord.STATE_DONE assert ret_cred_ack._thread_id == thread_id diff --git a/aries_cloudagent/protocols/present_proof/v1_0/models/tests/test_record.py b/aries_cloudagent/protocols/present_proof/v1_0/models/tests/test_record.py index 51e7c330e3..53f1034954 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/models/tests/test_record.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/models/tests/test_record.py @@ -30,7 +30,7 @@ def test_record(self): presentation_request={"pres": "req"}, presentation_request_dict={"pres", "dict"}, presentation={"pres": "indy"}, - verified=False, + verified="false", auto_present=True, error_msg="error", ) @@ -48,7 +48,7 @@ def test_record(self): "state": "state", "auto_present": True, "error_msg": "error", - "verified": False, + "verified": "false", "trace": False, } diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_ack_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_ack_handler.py new file mode 100644 index 0000000000..0a1d77c515 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_ack_handler.py @@ -0,0 +1,49 @@ +"""Presentation ack message handler.""" + +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + HandlerException, + RequestContext, +) + +from ..manager import V20PresManager +from ..messages.pres_ack import V20PresAck + +from .....utils.tracing import trace_event, get_timer + + +class V20PresAckHandler(BaseHandler): + """Message handler class for presentation acks.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Message handler logic for presentation acks. + + Args: + context: request context + responder: responder callback + """ + r_time = get_timer() + + self._logger.debug("V20PresAckHandler called with context %s", context) + assert isinstance(context.message, V20PresAck) + self._logger.info( + "Received v2.0 presentation ack message: %s", + context.message.serialize(as_string=True), + ) + + if not context.connection_ready: + raise HandlerException("No connection established for presentation ack") + + pres_manager = V20PresManager(context.profile) + await pres_manager.receive_pres_ack( + context.message, context.connection_record + ) + + trace_event( + context.settings, + context.message, + outcome="V20PresAckHandler.handle.END", + perf_counter=r_time, + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_handler.py new file mode 100644 index 0000000000..7c45622847 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_handler.py @@ -0,0 +1,57 @@ +"""Presentation message handler.""" + +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + RequestContext, +) + +from ..manager import V20PresManager +from ..messages.pres import V20Pres + +from .....utils.tracing import trace_event, get_timer + + +class V20PresHandler(BaseHandler): + """Message handler class for presentations.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Message handler logic for presentations. + + Args: + context: request context + responder: responder callback + + """ + r_time = get_timer() + + self._logger.debug("V20PresHandler called with context %s", context) + assert isinstance(context.message, V20Pres) + self._logger.info( + "Received presentation message: %s", + context.message.serialize(as_string=True), + ) + + pres_manager = V20PresManager(context.profile) + + pres_ex_record = await pres_manager.receive_pres( + context.message, context.connection_record + ) + + r_time = trace_event( + context.settings, + context.message, + outcome="V20PresHandler.handle.END", + perf_counter=r_time, + ) + + if context.settings.get("debug.auto_verify_presentation"): + await pres_manager.verify_presentation(pres_ex_record) + + trace_event( + context.settings, + pres_ex_record, + outcome="V20PresHandler.handle.VERIFY", + perf_counter=r_time, + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_proposal_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_proposal_handler.py new file mode 100644 index 0000000000..21ab14e321 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_proposal_handler.py @@ -0,0 +1,73 @@ +"""Presentation proposal message handler.""" + +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + HandlerException, + RequestContext, +) + +from ..manager import V20PresManager +from ..messages.pres_proposal import V20PresProposal + +from .....utils.tracing import trace_event, get_timer + + +class V20PresProposalHandler(BaseHandler): + """Message handler class for presentation proposals.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Message handler logic for presentation proposals. + + Args: + context: proposal context + responder: responder callback + + """ + r_time = get_timer() + + self._logger.debug( + "V20PresProposalHandler called with context %s", context + ) + assert isinstance(context.message, V20PresProposal) + self._logger.info( + "Received v2.0 presentation proposal message: %s", + context.message.serialize(as_string=True), + ) + + if not context.connection_ready: + raise HandlerException( + "No connection established for presentation proposal" + ) + + pres_manager = V20PresManager(context.profile) + pres_ex_record = await pres_manager.receive_proposal( + context.message, context.connection_record + ) + + r_time = trace_event( + context.settings, + context.message, + outcome="V20PresProposalHandler.handle.END", + perf_counter=r_time, + ) + + # If auto_respond_presentation_proposal is set, reply with proof req + if context.settings.get("debug.auto_respond_presentation_proposal"): + ( + pres_ex_record, + pres_request_message, + ) = await pres_manager.create_bound_request( + pres_ex_record=pres_ex_record, + comment=context.message.comment, + ) + + await responder.send_reply(pres_request_message) + + trace_event( + context.settings, + pres_request_message, + outcome="V20PresProposalHandler.handle.PRESENT", + perf_counter=r_time, + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py new file mode 100644 index 0000000000..66a58ab038 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py @@ -0,0 +1,119 @@ +"""Presentation request message handler.""" + +from .....indy.holder import IndyHolder +from .....messaging.base_handler import ( + BaseHandler, + BaseResponder, + HandlerException, + RequestContext, +) +from .....storage.error import StorageNotFoundError +from .....utils.tracing import trace_event, get_timer + +from ...util.indy import indy_proof_req_preview2indy_requested_creds + +from ..manager import V20PresManager +from ..messages.pres_proposal import V20PresProposal +from ..messages.pres_request import V20PresRequest +from ..models.pres_exchange import V20PresExchange + + +class V20PresRequestHandler(BaseHandler): + """Message handler class for v2.0 presentation requests.""" + + async def handle(self, context: RequestContext, responder: BaseResponder): + """ + Message handler logic for v2.0 presentation requests. + + Args: + context: request context + responder: responder callback + + """ + r_time = get_timer() + + self._logger.debug("V20PresRequestHandler called with context %s", context) + assert isinstance(context.message, V20PresRequest) + self._logger.info( + "Received v2.0 presentation request message: %s", + context.message.serialize(as_string=True), + ) + + if not context.connection_ready: + raise HandlerException("No connection established for presentation request") + + pres_manager = V20PresManager(context.profile) + + indy_proof_request = context.message.indy_proof_request(0) + + # Get pres ex record (holder initiated via proposal) + # or create it (verifier sent request first) + try: + async with context.session() as session: + pres_exchange_record = await V20PresExchange.retrieve_by_tag_filter( + session, + {"thread_id": context.message._thread_id}, + {"connection_id": context.connection_record.connection_id}, + ) # holder initiated via proposal + except StorageNotFoundError: # verifier sent this request free of any proposal + pres_ex_record = V20PresExchange( + conn_id=context.connection_record.connection_id, + thread_id=context.message._thread_id, + initiator=V20PresExchange.INITIATOR_EXTERNAL, + role=V20PresExchange.ROLE_PROVER, + pres_request=context.message.serialize(), + auto_present=context.settings.get( + "debug.auto_respond_presentation_request" + ), + trace=(context.message._trace is not None), + ) + + pres_ex_record.pres_request = indy_proof_request + pres_ex_record = await pres_manager.receive_request(pres_ex_record) + + r_time = trace_event( + context.settings, + context.message, + outcome="V20PresRequestHandler.handle.END", + perf_counter=r_time, + ) + + # If auto_present is enabled, respond immediately with presentation + if pres_ex_record.auto_present: + pres_preview = None + if pres_ex_record.pres_proposal: + exchange_pres_proposal = V20PresProposal.deserialize( + pres_ex_record.pres_proposal + ) + # TODO - revisit default attachment format and make it #0 not hl-indy + pres_preview = exchange_pres_proposal.attachment() + + try: + req_creds = await indy_proof_req_preview2indy_requested_creds( + indy_proof_request, + pres_preview, + holder=context.inject(IndyHolder), + ) + except ValueError as err: + self._logger.warning(f"{err}") + return + + ( + pres_ex_record, + pres_message, + ) = await pres_manager.create_pres( + pres_ex_record=pres_ex_record, + requested_credentials=req_creds, + comment="auto-presented for proof request nonce={}".format( + indy_proof_request["nonce"] + ), + ) + + await responder.send_reply(pres_message) + + trace_event( + context.settings, + pres_message, + outcome="V20PresRequestHandler.handle.PRESENT", + perf_counter=r_time, + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_ack_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_ack_handler.py new file mode 100644 index 0000000000..aad298cf9d --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_ack_handler.py @@ -0,0 +1,52 @@ +from asynctest import mock as async_mock, TestCase as AsyncTestCase + +from ......messaging.request_context import RequestContext +from ......messaging.responder import MockResponder +from ......transport.inbound.receipt import MessageReceipt + +from ...messages.pres_ack import V20PresAck + +from .. import pres_ack_handler as test_module + + +class TestV20PresAckHandler(AsyncTestCase): + async def test_called(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + session = request_context.session() + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr: + mock_pres_mgr.return_value.receive_pres_ack = async_mock.CoroutineMock() + request_context.message = V20PresAck() + request_context.connection_ready = True + request_context.connection_record = async_mock.MagicMock() + handler = test_module.V20PresAckHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_pres_mgr.assert_called_once_with(request_context.profile) + mock_pres_mgr.return_value.receive_pres_ack.assert_called_once_with( + request_context.message, request_context.connection_record + ) + assert not responder.messages + + async def test_called_not_ready(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr: + mock_pres_mgr.return_value.receive_pres_ack = ( + async_mock.CoroutineMock() + ) + request_context.message = V20PresAck() + request_context.connection_ready = False + handler = test_module.V20PresAckHandler() + responder = MockResponder() + with self.assertRaises(test_module.HandlerException): + await handler.handle(request_context, responder) + + assert not responder.messages diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_handler.py new file mode 100644 index 0000000000..a4d435b04a --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_handler.py @@ -0,0 +1,58 @@ +import pytest + +from asynctest import mock as async_mock, TestCase as AsyncTestCase + +from ......messaging.request_context import RequestContext +from ......messaging.responder import MockResponder +from ......transport.inbound.receipt import MessageReceipt + +from ...messages.pres import V20Pres + +from .. import pres_handler as test_module + + +class TestV20PresHandler(AsyncTestCase): + async def test_called(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.settings["debug.auto_verify_presentation"] = False + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr: + mock_pres_mgr.return_value.receive_pres = async_mock.CoroutineMock() + request_context.message = V20Pres() + request_context.connection_ready = True + request_context.connection_record = async_mock.MagicMock() + handler = test_module.V20PresHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_pres_mgr.assert_called_once_with(request_context.profile) + mock_pres_mgr.return_value.receive_pres.assert_called_once_with( + request_context.message, request_context.connection_record + ) + assert not responder.messages + + async def test_called_auto_verify(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.settings["debug.auto_verify_presentation"] = True + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr: + mock_pres_mgr.return_value.receive_pres = async_mock.CoroutineMock() + mock_pres_mgr.return_value.verify_pres = async_mock.CoroutineMock() + request_context.message = V20Pres() + request_context.connection_ready = True + request_context.connection_record = async_mock.MagicMock() + handler = test_module.V20PresHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_pres_mgr.assert_called_once_with(request_context.profile) + mock_pres_mgr.return_value.receive_pres.assert_called_once_with( + request_context.message, request_context.connection_record + ) + assert not responder.messages diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_proposal_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_proposal_handler.py new file mode 100644 index 0000000000..9329011951 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_proposal_handler.py @@ -0,0 +1,90 @@ +import pytest +from asynctest import mock as async_mock, TestCase as AsyncTestCase + +from ......messaging.request_context import RequestContext +from ......messaging.responder import MockResponder +from ......transport.inbound.receipt import MessageReceipt + +from ...messages.pres_proposal import V20PresProposal +from .. import pres_proposal_handler as test_module + + +class TestV20PresProposalHandler(AsyncTestCase): + async def test_called(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.settings["debug.auto_respond_presentation_proposal"] = False + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr: + mock_pres_mgr.return_value.receive_pres_proposal = async_mock.CoroutineMock( + return_value=async_mock.MagicMock() + ) + request_context.message = V20PresProposal() + request_context.connection_ready = True + request_context.connection_record = async_mock.MagicMock() + handler = test_module.V20PresProposalHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_pres_mgr.assert_called_once_with(request_context.profile) + mock_pres_mgr.return_value.receive_pres_proposal.assert_called_once_with( + request_context.message, request_context.connection_record + ) + assert not responder.messages + + async def test_called_auto_request(self): + request_context = RequestContext.test_context() + request_context.message = async_mock.MagicMock() + request_context.message.comment = "hello world" + request_context.message_receipt = MessageReceipt() + request_context.settings["debug.auto_respond_presentation_proposal"] = True + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr: + mock_pres_mgr.return_value.receive_pres_proposal = async_mock.CoroutineMock( + return_value="presentation_exchange_record" + ) + mock_pres_mgr.return_value.create_bound_request = async_mock.CoroutineMock( + return_value=( + mock_pres_mgr.return_value.receive_pres_proposal.return_value, + "presentation_request_message", + ) + ) + request_context.message = V20PresProposal() + request_context.connection_ready = True + handler = test_module.V20PresProposalHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_pres_mgr.assert_called_once_with(request_context.profile) + mock_pres_mgr.return_value.create_bound_request.assert_called_once_with( + pres_ex_record=( + mock_pres_mgr.return_value.receive_pres_proposal.return_value + ), + comment=request_context.message.comment, + ) + messages = responder.messages + assert len(messages) == 1 + (result, target) = messages[0] + assert result == "presentation_request_message" + assert target == {} + + async def test_called_not_ready(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr: + mock_pres_mgr.return_value.receive_pres_proposal = async_mock.CoroutineMock() + request_context.message = V20PresProposal() + request_context.connection_ready = False + handler = test_module.V20PresProposalHandler() + responder = MockResponder() + with self.assertRaises(test_module.HandlerException): + await handler.handle(request_context, responder) + + assert not responder.messages diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py index 2dec15660e..85d13f9aa0 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py @@ -59,10 +59,10 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20PresFormat.Format.INDY).get_attachment_data( + return (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( self.formats, self.presentations_attach, - ) + ) if self.formats else None class V20PresSchema(AgentMessageSchema): diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py index c77ad93c8e..35c9a5c909 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -88,7 +88,7 @@ def get_attachment_data( for atch in attachments: if atch.ident == attach_id: - return atch.indy_dict + return atch.content return None diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py index b38c0a1019..0804450131 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -59,10 +59,10 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20PresFormat.Format.INDY).get_attachment_data( + return (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( self.formats, self.proposal_attach, - ) + ) if self.formats else None class V20PresProposalSchema(AgentMessageSchema): diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py index 7b7110531f..4efecc829d 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py @@ -63,10 +63,10 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20PresFormat.Format.INDY).get_attachment_data( + return (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( self.formats, self.request_presentations_attach, - ) + ) if self.formats else None class V20PresRequestSchema(AgentMessageSchema): diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py index 927c8da7db..2f0aab1269 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py @@ -1674,7 +1674,7 @@ ) ], presentations_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( indy_dict=INDY_PROOF, ident="abc", ) @@ -1705,7 +1705,7 @@ def test_deserialize(self): } ], "presentations~attach": [ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( indy_dict=INDY_PROOF, ident="abc", ).serialize() @@ -1745,7 +1745,7 @@ def test_deserialize_x(self): } ], "presentations~attach": [ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( indy_dict=INDY_PROOF, ident="def", ).serialize() @@ -1769,7 +1769,7 @@ def test_serialize(self): } ], "presentations~attach": [ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( indy_dict=INDY_PROOF, ident="abc", ).serialize() diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py index 8cb17238c4..da47d52bfd 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py @@ -61,7 +61,7 @@ def test_get_attachment_data(self): V20PresFormat(attach_id="abc", format_=V20PresFormat.Format.INDY) ], attachments=[ - AttachDecorator.from_indy_dict( + AttachDecorator.from_data_base64( PRES_PREVIEW.serialize(), ident="abc", ) @@ -76,7 +76,7 @@ def test_get_attachment_data(self): V20PresFormat(attach_id="abc", format_=V20PresFormat.Format.INDY) ], attachments=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( PRES_PREVIEW.serialize(), ident="xxx", ) @@ -91,7 +91,7 @@ def test_get_attachment_data(self): V20PresFormat(attach_id="abc", format_=V20PresFormat.Format.INDY) ], attachments=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( PRES_PREVIEW.serialize(), ident="abc", ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py index bd82c09045..bd5b5dc1b0 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py @@ -54,7 +54,7 @@ def test_init_type_attachment(self): ) ], proposal_attach=[ - AttachDecorator.from_indy_dict(PRES_PREVIEW.serialize(), ident="abc") + AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="abc") ], ) assert pres_proposal._type == DIDCommPrefix.qualify_current(PRES_20_PROPOSAL) @@ -74,7 +74,7 @@ def test_serde(self): ) ], proposal_attach=[ - AttachDecorator.from_indy_dict(PRES_PREVIEW.serialize(), ident="abc") + AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="abc") ], ) pres_proposal_ser = pres_proposal.serialize() diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py index 525bd3834e..9b4a5f1cf5 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py @@ -81,7 +81,7 @@ ) ], request_presentations_attach=[ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( indy_dict=INDY_PROOF_REQ, ident="abc", ) @@ -114,7 +114,7 @@ def test_deserialize(self): } ], "request_presentations~attach": [ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( indy_dict=INDY_PROOF_REQ, ident="abc", ).serialize() @@ -156,7 +156,7 @@ def test_deserialize_x(self): } ], "request_presentations~attach": [ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( indy_dict=INDY_PROOF_REQ, ident="def", ).serialize() @@ -181,7 +181,7 @@ def test_serialize(self): } ], "request_presentations~attach": [ - AttachDecorator.from_indy_dict( + AttachDecorator.data_base64( indy_dict=INDY_PROOF_REQ, ident="abc", ).serialize() diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/models/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py new file mode 100644 index 0000000000..690012340d --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py @@ -0,0 +1,186 @@ +"""Presentation exchange record.""" + +from os import environ +from typing import Any + +from marshmallow import fields, validate + +from .....messaging.models.base_record import BaseExchangeRecord, BaseExchangeSchema +from .....messaging.valid import UUIDFour + +unencrypted_tags = environ.get("EXCH_UNENCRYPTED_TAGS", "False").upper() == "TRUE" + + +class V20PresExRecord(BaseExchangeRecord): + """Represents a v2.0 presentation exchange.""" + + class Meta: + """V20PresExRecord metadata.""" + + schema_class = "V20PresExRecordSchema" + + RECORD_TYPE = "pres_ex_v20" + RECORD_ID_NAME = "pres_ex_id" + WEBHOOK_TOPIC = "present_proof_v2_0" + TAG_NAMES = {"~thread_id"} if unencrypted_tags else {"thread_id"} + + INITIATOR_SELF = "self" + INITIATOR_EXTERNAL = "external" + + ROLE_PROVER = "prover" + ROLE_VERIFIER = "verifier" + + STATE_PROPOSAL_SENT = "proposal-sent" + STATE_PROPOSAL_RECEIVED = "proposal-received" + STATE_REQUEST_SENT = "request-sent" + STATE_REQUEST_RECEIVED = "request-received" + STATE_PRESENTATION_SENT = "presentation-sent" + STATE_PRESENTATION_RECEIVED = "presentation-received" + STATE_VERIFIED = "done" + STATE_ABANDONED = "abandoned" + + def __init__( + self, + *, + pres_ex_id: str = None, + conn_id: str = None, + thread_id: str = None, + initiator: str = None, + role: str = None, + state: str = None, + pres_proposal: Mapping = None, # serialized pres proposal message + pres_request: Mapping = None, #serialized pres proposal message + pres: Mapping = None, # serialized pres message + verified: str = None, + auto_present: bool = False, + error_msg: str = None, + trace: bool = False, + **kwargs + ): + """Initialize a new PresExRecord.""" + super().__init__(pres_ex_id, state, trace=trace, **kwargs) + self.conn_id = conn_id + self.thread_id = thread_id + self.initiator = initiator + self.role = role + self.state = state + self.presentation_proposal_dict = presentation_proposal_dict + self.presentation_request = presentation_request # indy proof req + self.presentation_request_dict = presentation_request_dict + self.presentation = presentation # indy proof + self.verified = verified + self.auto_present = auto_present + self.error_msg = error_msg + self.trace = trace + + @property + def pres_ex_id(self) -> str: + """Accessor for the ID associated with this exchange record.""" + return self._id + + @property + def record_value(self) -> dict: + """Accessor for JSON record value generated for this pres ex record.""" + return { + prop: getattr(self, prop) + for prop in ( + "conn_id", + "initiator", + "role", + "state", + "pres_proposal", + "pres_request", + "pres", + "verified", + "auto_present", + "error_msg", + "trace", + ) + } + + def __eq__(self, other: Any) -> bool: + """Comparison between records.""" + return super().__eq__(other) + + +class V20PresExSchema(BaseExchangeSchema): + """Schema for de/serialization of v2.0 presentation exchange records.""" + + class Meta: + """V20PresExRecordSchema metadata.""" + + model_class = V10PresentationExchange + + pres_ex_id = fields.Str( + required=False, + description="Presentation exchange identifier", + example=UUIDFour.EXAMPLE, # typically a UUID4 but not necessarily + ) + conn_id = fields.Str( + required=False, + description="Connection identifier", + example=UUIDFour.EXAMPLE, # typically a UUID4 but not necessarily + ) + thread_id = fields.Str( + required=False, + description="Thread identifier", + example=UUIDFour.EXAMPLE, # typically a UUID4 but not necessarily + ) + initiator = fields.Str( + required=False, + description="Present-proof exchange initiator: self or external", + example=V10PresentationExchange.INITIATOR_SELF, + validate=validate.OneOf( + [ + getattr(V20PresExRecord, m) + for m in vars(V20PresExRecord) + if m.startswith("INITIATOR_") + ] + ), + ) + role = fields.Str( + required=False, + description="Present-proof exchange role: prover or verifier", + example=V10PresentationExchange.ROLE_PROVER, + validate=validate.OneOf( + [ + getattr(V20PresExRecord, m) + for m in vars(V20PresExRecord) + if m.startswith("ROLE_") + ] + ), + ) + state = fields.Str( + required=False, + description="Present-proof exchange state", + validate=validate.OneOf( + [ + getattr(V20PresExRecord, m) + for m in vars(V20PresExRecord) + if m.startswith("STATE_") + ] + ), + ) + pres_proposal = fields.Dict( + required=False, description="Serialized presentation proposal message" + ) + pres_request = fields.Dict( + required=False, description="Serialized presentation request message" + ) + pres = fields.Dict( + required=False, description="Serialized presentation message", + ) + verified = fields.Str( # tag: must be a string + required=False, + description="Whether presentation is verified: 'true' or 'false'", + example="true", + validate=validate.OneOf(["true", "false"]), + ) + auto_present = fields.Bool( + required=False, + description="Prover choice to auto-present proof as verifier requests", + example=False, + ) + error_msg = fields.Str( + required=False, description="Error message", example="Invalid structure" + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/tests/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/models/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py b/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py new file mode 100644 index 0000000000..2253e9c8ad --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py @@ -0,0 +1,55 @@ +from unittest import TestCase as UnitTestCase + +from ......messaging.models.base_record import BaseExchangeRecord, BaseExchangeSchema + +from ..pres_exchange import V20PresExRecord + + +class BasexRecordImpl(BaseExchangeRecord): + class Meta: + schema_class = "BasexRecordImplSchema" + + RECORD_TYPE = "record" + + +class BasexRecordImplSchema(BaseExchangeSchema): + class Meta: + model_class = BasexRecordImpl + + +class TestRecord(UnitTestCase): + def test_record(self): + record = V20PresentationExchange( + pres_ex_id="pxid", + conn_id="connid", + thread_id="thid", + initiator="init", + role="role", + state="state", + pres_proposal={"prop": "dict"}, + pres_request={"pres": "req"}, + pres={"pres": "indy"}, + verified="false", + auto_present=True, + error_msg="error", + ) + + assert record.pres_ex_id == "pxid" + + assert record.record_value == { + "connection_id": "connid", + "initiator": "init", + "presentation_proposal_dict": {"prop": "dict"}, + "presentation_request": {"pres": "req"}, + "presentation_request_dict": {"pres", "dict"}, + "presentation": {"pres": "indy"}, + "role": "role", + "state": "state", + "auto_present": True, + "error_msg": "error", + "verified": "false", + "trace": False, + } + + bx_record = BasexRecordImpl() + assert record != bx_record From 25833d495aac9a6bee03b16985fec991e963b784 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Mon, 22 Feb 2021 12:16:20 -0800 Subject: [PATCH 078/243] update version to 0.6.0-rc1 Signed-off-by: Andrew Whitehead --- aries_cloudagent/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aries_cloudagent/version.py b/aries_cloudagent/version.py index 0258c967e1..fc16ad46e6 100644 --- a/aries_cloudagent/version.py +++ b/aries_cloudagent/version.py @@ -1,3 +1,3 @@ """Library version information.""" -__version__ = "0.6.0-rc0" +__version__ = "0.6.0-rc1" From a2d3b59fafd86c3b720ee60493dfe1f954d2a195 Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 23 Feb 2021 16:01:05 +0000 Subject: [PATCH 079/243] stake in the ground: ported tests pass Signed-off-by: sklump --- aries_cloudagent/indy/sdk/verifier.py | 2 +- .../present_proof/indy/presentation.py | 4 +- .../protocols/present_proof/indy/xform.py | 9 +- .../handlers/presentation_request_handler.py | 2 +- .../protocols/present_proof/v1_0/manager.py | 2 +- .../v1_0/messages/presentation_proposal.py | 9 +- .../protocols/present_proof/v1_0/routes.py | 9 +- .../present_proof/v1_0/tests/test_routes.py | 61 +- .../v2_0/handlers/pres_ack_handler.py | 4 +- .../v2_0/handlers/pres_handler.py | 2 +- .../v2_0/handlers/pres_proposal_handler.py | 6 +- .../v2_0/handlers/pres_request_handler.py | 16 +- .../handlers/tests/test_pres_ack_handler.py | 6 +- .../tests/test_pres_proposal_handler.py | 4 +- .../protocols/present_proof/v2_0/manager.py | 667 ++++++++++++++++++ .../present_proof/v2_0/messages/pres.py | 16 +- .../v2_0/messages/pres_proposal.py | 22 +- .../v2_0/messages/pres_request.py | 18 +- .../v2_0/messages/tests/test_pres.py | 10 +- .../v2_0/messages/tests/test_pres_format.py | 4 +- .../v2_0/messages/tests/test_pres_request.py | 10 +- .../v2_0/models/pres_exchange.py | 22 +- .../v2_0/models/tests/test_record.py | 19 +- 23 files changed, 802 insertions(+), 122 deletions(-) create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/manager.py diff --git a/aries_cloudagent/indy/sdk/verifier.py b/aries_cloudagent/indy/sdk/verifier.py index 7990257748..4437776348 100644 --- a/aries_cloudagent/indy/sdk/verifier.py +++ b/aries_cloudagent/indy/sdk/verifier.py @@ -11,7 +11,7 @@ from ...ledger.indy import IndySdkLedger from ...messaging.util import canon, encode -from ...protocols.present_proof.util.indy import indy_proof_req2non_revoc_intervals +from ...protocols.present_proof.indy.xform import indy_proof_req2non_revoc_intervals from ..verifier import IndyVerifier diff --git a/aries_cloudagent/protocols/present_proof/indy/presentation.py b/aries_cloudagent/protocols/present_proof/indy/presentation.py index 473518f4de..55d628353e 100644 --- a/aries_cloudagent/protocols/present_proof/indy/presentation.py +++ b/aries_cloudagent/protocols/present_proof/indy/presentation.py @@ -1,12 +1,14 @@ """Utilities to deal with indy.""" -from marshmallow import fields, validate, validates_schema +from marshmallow import fields, validate, validates_schema, ValidationError from ....indy.holder import IndyHolder from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import ( INDY_CRED_DEF_ID, + INDY_DID, INDY_PREDICATE, + INDY_SCHEMA_ID, INDY_VERSION, INT_EPOCH, ) diff --git a/aries_cloudagent/protocols/present_proof/indy/xform.py b/aries_cloudagent/protocols/present_proof/indy/xform.py index a81c451a5b..8956eafcc0 100644 --- a/aries_cloudagent/protocols/present_proof/indy/xform.py +++ b/aries_cloudagent/protocols/present_proof/indy/xform.py @@ -1,10 +1,15 @@ """Utilities to deal with indy.""" -from .presentation_preview import PresentationPreview +from ....indy.holder import IndyHolder + +from .presentation_preview import IndyPresentationPreview async def indy_proof_req_preview2indy_requested_creds( - indy_proof_req: dict, preview: PresentationPreview = None, *, holder: IndyHolder + indy_proof_req: dict, + preview: IndyPresentationPreview = None, + *, + holder: IndyHolder, ): """ Build indy requested-credentials structure. diff --git a/aries_cloudagent/protocols/present_proof/v1_0/handlers/presentation_request_handler.py b/aries_cloudagent/protocols/present_proof/v1_0/handlers/presentation_request_handler.py index 0c7efdafd3..93644ef2bd 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/handlers/presentation_request_handler.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/handlers/presentation_request_handler.py @@ -10,7 +10,7 @@ from .....storage.error import StorageNotFoundError from .....utils.tracing import trace_event, get_timer -from ...util.indy import indy_proof_req_preview2indy_requested_creds +from ...indy.xform import indy_proof_req_preview2indy_requested_creds from ..manager import PresentationManager from ..messages.presentation_proposal import PresentationProposal diff --git a/aries_cloudagent/protocols/present_proof/v1_0/manager.py b/aries_cloudagent/protocols/present_proof/v1_0/manager.py index dc696f9d5b..b70773da67 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/manager.py @@ -15,7 +15,7 @@ from ....revocation.models.revocation_registry import RevocationRegistry from ....storage.error import StorageNotFoundError -from ..util.indy import indy_proof_req2non_revoc_intervals +from ..indy.xform import indy_proof_req2non_revoc_intervals from .models.presentation_exchange import V10PresentationExchange from .messages.presentation_ack import PresentationAck diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py index a177634856..24a7367291 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py @@ -6,7 +6,10 @@ from ..message_types import PRESENTATION_PROPOSAL, PROTOCOL_PACKAGE -from ...util.presentation_preview import PresentationPreview, PresentationPreviewSchema +from ...indy.presentation_preview import ( + IndyPresentationPreview, + IndyPresentationPreviewSchema, +) HANDLER_CLASS = ( f"{PROTOCOL_PACKAGE}.handlers." @@ -29,7 +32,7 @@ def __init__( _id: str = None, *, comment: str = None, - presentation_proposal: PresentationPreview = None, + presentation_proposal: IndyPresentationPreview = None, **kwargs, ): """ @@ -56,4 +59,4 @@ class Meta: comment = fields.Str( description="Human-readable comment", required=False, allow_none=True ) - presentation_proposal = fields.Nested(PresentationPreviewSchema, required=True) + presentation_proposal = fields.Nested(IndyPresentationPreviewSchema, required=True) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/routes.py b/aries_cloudagent/protocols/present_proof/v1_0/routes.py index 57322983b0..792bfaaf33 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/routes.py @@ -10,8 +10,7 @@ request_schema, response_schema, ) -from marshmallow import fields, validate, validates_schema -from marshmallow.exceptions import ValidationError +from marshmallow import fields, validate from ....admin.request_context import AdminRequestContext from ....connections.models.conn_record import ConnRecord @@ -24,12 +23,9 @@ from ....messaging.valid import ( INDY_CRED_DEF_ID, INDY_CRED_REV_ID, - INDY_DID, INDY_EXTRA_WQL, - INDY_PREDICATE, INDY_SCHEMA_ID, INDY_REV_REG_ID, - INDY_VERSION, INT_EPOCH, NUM_STR_NATURAL, NUM_STR_WHOLE, @@ -43,11 +39,12 @@ from ...problem_report.v1_0 import internal_error from ...problem_report.v1_0.message import ProblemReport +from ..indy.presentation import IndyProofReqNonRevokedSchema from ..indy.presentation_preview import ( IndyPresentationPreview, IndyPresentationPreviewSchema, ) -from ..indy.presentation_request import IndyProofRequestSchema +from ..indy.proof_request import IndyProofRequestSchema from .manager import PresentationManager from .message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST, SPEC_URI diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py index d39b110f75..05a99a5b78 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py @@ -2,6 +2,7 @@ from asynctest import TestCase as AsyncTestCase from asynctest import mock as async_mock +from marshmallow import ValidationError from .....admin.request_context import AdminRequestContext from .....indy.holder import IndyHolder @@ -9,6 +10,8 @@ from .....ledger.base import BaseLedger from .....storage.error import StorageNotFoundError +from ...indy.presentation import IndyProofReqAttrSpecSchema + from .. import routes as test_module @@ -28,7 +31,7 @@ def setUp(self): ) async def test_validate_proof_req_attr_spec(self): - aspec = test_module.IndyProofReqAttrSpecSchema() + aspec = IndyProofReqAttrSpecSchema() aspec.validate_fields({"name": "attr0"}) aspec.validate_fields( { @@ -39,15 +42,15 @@ async def test_validate_proof_req_attr_spec(self): aspec.validate_fields( {"name": "attr0", "restrictions": [{"schema_name": "preferences"}]} ) - with self.assertRaises(test_module.ValidationError): + with self.assertRaises(ValidationError): aspec.validate_fields({}) - with self.assertRaises(test_module.ValidationError): + with self.assertRaises(ValidationError): aspec.validate_fields({"name": "attr0", "names": ["attr1", "attr2"]}) - with self.assertRaises(test_module.ValidationError): + with self.assertRaises(ValidationError): aspec.validate_fields({"names": ["attr1", "attr2"]}) - with self.assertRaises(test_module.ValidationError): + with self.assertRaises(ValidationError): aspec.validate_fields({"names": ["attr0", "attr1"], "restrictions": []}) - with self.assertRaises(test_module.ValidationError): + with self.assertRaises(ValidationError): aspec.validate_fields({"names": ["attr0", "attr1"], "restrictions": [{}]}) async def test_presentation_exchange_list(self): @@ -329,8 +332,8 @@ async def test_presentation_exchange_send_proposal(self): autospec=True, ) as mock_presentation_manager, async_mock.patch( ( - "aries_cloudagent.protocols.present_proof.v1_0." - "messages.inner.presentation_preview.PresentationPreview" + "aries_cloudagent.protocols.present_proof.indy." + "presentation_preview.IndyPresentationPreview" ), autospec=True, ) as mock_preview: @@ -380,8 +383,8 @@ async def test_presentation_exchange_send_proposal_not_ready(self): autospec=True, ) as mock_connection_record, async_mock.patch( ( - "aries_cloudagent.protocols.present_proof.v1_0." - "messages.inner.presentation_preview.PresentationPreview" + "aries_cloudagent.protocols.present_proof.indy." + "presentation_preview.IndyPresentationPreview" ), autospec=True, ) as mock_preview, async_mock.patch( @@ -412,8 +415,8 @@ async def test_presentation_exchange_send_proposal_x(self): autospec=True, ) as mock_presentation_manager, async_mock.patch( ( - "aries_cloudagent.protocols.present_proof.v1_0." - "messages.inner.presentation_preview.PresentationPreview" + "aries_cloudagent.protocols.present_proof.indy." + "presentation_preview.IndyPresentationPreview" ), autospec=True, ) as mock_preview: @@ -439,8 +442,8 @@ async def test_presentation_exchange_create_request(self): autospec=True, ) as mock_presentation_manager, async_mock.patch( ( - "aries_cloudagent.protocols.present_proof.v1_0." - "messages.inner.presentation_preview.PresentationPreview" + "aries_cloudagent.protocols.present_proof.indy." + "presentation_preview.IndyPresentationPreview" ), autospec=True, ) as mock_preview, async_mock.patch.object( @@ -496,8 +499,8 @@ async def test_presentation_exchange_create_request_x(self): autospec=True, ) as mock_presentation_manager, async_mock.patch( ( - "aries_cloudagent.protocols.present_proof.v1_0." - "messages.inner.presentation_preview.PresentationPreview" + "aries_cloudagent.protocols.present_proof.indy." + "presentation_preview.IndyPresentationPreview" ), autospec=True, ) as mock_preview, async_mock.patch.object( @@ -553,8 +556,8 @@ async def test_presentation_exchange_send_free_request(self): autospec=True, ) as mock_generate_nonce, async_mock.patch( ( - "aries_cloudagent.protocols.present_proof.v1_0." - "messages.inner.presentation_preview.PresentationPreview" + "aries_cloudagent.protocols.present_proof.indy." + "presentation_preview.IndyPresentationPreview" ), autospec=True, ) as mock_preview, async_mock.patch.object( @@ -658,7 +661,7 @@ async def test_presentation_exchange_send_free_request_x(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "PresentationPreview", autospec=True + test_module, "IndyPresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -726,7 +729,7 @@ async def test_presentation_exchange_send_bound_request(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "PresentationPreview", autospec=True + test_module, "IndyPresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -786,7 +789,7 @@ async def test_presentation_exchange_send_bound_request_not_found(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "PresentationPreview", autospec=True + test_module, "IndyPresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -831,7 +834,7 @@ async def test_presentation_exchange_send_bound_request_not_ready(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "PresentationPreview", autospec=True + test_module, "IndyPresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -916,7 +919,7 @@ async def test_presentation_exchange_send_bound_request_x(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "PresentationPreview", autospec=True + test_module, "IndyPresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -991,7 +994,7 @@ async def test_presentation_exchange_send_presentation(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch.object( - test_module, "PresentationPreview", autospec=True + test_module, "IndyPresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch( ( "aries_cloudagent.protocols.present_proof.v1_0." @@ -1062,7 +1065,7 @@ async def test_presentation_exchange_send_presentation_not_found(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "PresentationPreview", autospec=True + test_module, "IndyPresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -1107,7 +1110,7 @@ async def test_presentation_exchange_send_presentation_not_ready(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "PresentationPreview", autospec=True + test_module, "IndyPresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -1183,7 +1186,7 @@ async def test_presentation_exchange_send_presentation_x(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "PresentationPreview", autospec=True + test_module, "IndyPresentationPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -1240,8 +1243,8 @@ async def test_presentation_exchange_verify_presentation(self): autospec=True, ) as mock_generate_nonce, async_mock.patch( ( - "aries_cloudagent.protocols.present_proof.v1_0." - "messages.inner.presentation_preview.PresentationPreview" + "aries_cloudagent.protocols.present_proof.indy." + "presentation_preview.IndyPresentationPreview" ), autospec=True, ) as mock_preview, async_mock.patch.object( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_ack_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_ack_handler.py index 0a1d77c515..35eb7dfbff 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_ack_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_ack_handler.py @@ -37,9 +37,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder): raise HandlerException("No connection established for presentation ack") pres_manager = V20PresManager(context.profile) - await pres_manager.receive_pres_ack( - context.message, context.connection_record - ) + await pres_manager.receive_pres_ack(context.message, context.connection_record) trace_event( context.settings, diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_handler.py index 7c45622847..ae76874ab0 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_handler.py @@ -47,7 +47,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder): ) if context.settings.get("debug.auto_verify_presentation"): - await pres_manager.verify_presentation(pres_ex_record) + await pres_manager.verify_pres(pres_ex_record) trace_event( context.settings, diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_proposal_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_proposal_handler.py index 21ab14e321..6cf0ee1e8a 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_proposal_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_proposal_handler.py @@ -27,9 +27,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder): """ r_time = get_timer() - self._logger.debug( - "V20PresProposalHandler called with context %s", context - ) + self._logger.debug("V20PresProposalHandler called with context %s", context) assert isinstance(context.message, V20PresProposal) self._logger.info( "Received v2.0 presentation proposal message: %s", @@ -42,7 +40,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder): ) pres_manager = V20PresManager(context.profile) - pres_ex_record = await pres_manager.receive_proposal( + pres_ex_record = await pres_manager.receive_pres_proposal( context.message, context.connection_record ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py index 66a58ab038..f91995a3be 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py @@ -15,7 +15,7 @@ from ..manager import V20PresManager from ..messages.pres_proposal import V20PresProposal from ..messages.pres_request import V20PresRequest -from ..models.pres_exchange import V20PresExchange +from ..models.pres_exchange import V20PresExRecord class V20PresRequestHandler(BaseHandler): @@ -50,17 +50,17 @@ async def handle(self, context: RequestContext, responder: BaseResponder): # or create it (verifier sent request first) try: async with context.session() as session: - pres_exchange_record = await V20PresExchange.retrieve_by_tag_filter( + pres_ex_record = await V20PresExRecord.retrieve_by_tag_filter( session, {"thread_id": context.message._thread_id}, {"connection_id": context.connection_record.connection_id}, ) # holder initiated via proposal except StorageNotFoundError: # verifier sent this request free of any proposal - pres_ex_record = V20PresExchange( + pres_ex_record = V20PresExRecord( conn_id=context.connection_record.connection_id, thread_id=context.message._thread_id, - initiator=V20PresExchange.INITIATOR_EXTERNAL, - role=V20PresExchange.ROLE_PROVER, + initiator=V20PresExRecord.INITIATOR_EXTERNAL, + role=V20PresExRecord.ROLE_PROVER, pres_request=context.message.serialize(), auto_present=context.settings.get( "debug.auto_respond_presentation_request" @@ -85,7 +85,6 @@ async def handle(self, context: RequestContext, responder: BaseResponder): exchange_pres_proposal = V20PresProposal.deserialize( pres_ex_record.pres_proposal ) - # TODO - revisit default attachment format and make it #0 not hl-indy pres_preview = exchange_pres_proposal.attachment() try: @@ -98,10 +97,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder): self._logger.warning(f"{err}") return - ( - pres_ex_record, - pres_message, - ) = await pres_manager.create_pres( + (pres_ex_record, pres_message,) = await pres_manager.create_pres( pres_ex_record=pres_ex_record, requested_credentials=req_creds, comment="auto-presented for proof request nonce={}".format( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_ack_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_ack_handler.py index aad298cf9d..90ea997150 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_ack_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_ack_handler.py @@ -18,7 +18,7 @@ async def test_called(self): with async_mock.patch.object( test_module, "V20PresManager", autospec=True ) as mock_pres_mgr: - mock_pres_mgr.return_value.receive_pres_ack = async_mock.CoroutineMock() + mock_pres_mgr.return_value.receive_pres_ack = async_mock.CoroutineMock() request_context.message = V20PresAck() request_context.connection_ready = True request_context.connection_record = async_mock.MagicMock() @@ -39,9 +39,7 @@ async def test_called_not_ready(self): with async_mock.patch.object( test_module, "V20PresManager", autospec=True ) as mock_pres_mgr: - mock_pres_mgr.return_value.receive_pres_ack = ( - async_mock.CoroutineMock() - ) + mock_pres_mgr.return_value.receive_pres_ack = async_mock.CoroutineMock() request_context.message = V20PresAck() request_context.connection_ready = False handler = test_module.V20PresAckHandler() diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_proposal_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_proposal_handler.py index 9329011951..e1aa5d39c0 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_proposal_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_proposal_handler.py @@ -79,7 +79,9 @@ async def test_called_not_ready(self): with async_mock.patch.object( test_module, "V20PresManager", autospec=True ) as mock_pres_mgr: - mock_pres_mgr.return_value.receive_pres_proposal = async_mock.CoroutineMock() + mock_pres_mgr.return_value.receive_pres_proposal = ( + async_mock.CoroutineMock() + ) request_context.message = V20PresProposal() request_context.connection_ready = False handler = test_module.V20PresProposalHandler() diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py new file mode 100644 index 0000000000..822e0c58eb --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -0,0 +1,667 @@ +"""Classes to manage presentations.""" + +import json +import logging +import time + +from ....connections.models.conn_record import ConnRecord +from ....core.error import BaseError +from ....core.profile import Profile +from ....indy.holder import IndyHolder, IndyHolderError +from ....indy.verifier import IndyVerifier +from ....ledger.base import BaseLedger +from ....messaging.decorators.attach_decorator import AttachDecorator +from ....messaging.responder import BaseResponder +from ....revocation.models.revocation_registry import RevocationRegistry +from ....storage.error import StorageNotFoundError + +from ..indy.presentation_preview import IndyPresentationPreview +from ..indy.xform import indy_proof_req2non_revoc_intervals + +from .models.pres_exchange import V20PresExRecord +from .messages.pres_ack import V20PresAck +from .messages.pres_format import V20PresFormat +from .messages.pres_proposal import V20PresProposal +from .messages.pres_request import V20PresRequest +from .messages.pres import V20Pres +from .message_types import PRES_20, PRES_20_REQUEST + +LOGGER = logging.getLogger(__name__) + + +class V20PresManagerError(BaseError): + """Presentation error.""" + + +class V20PresManager: + """Class for managing presentations.""" + + def __init__(self, profile: Profile): + """ + Initialize a V20PresManager. + + Args: + profile: The profile instance for this presentation manager + """ + + self._profile = profile + + async def create_exchange_for_proposal( + self, + conn_id: str, + pres_proposal_message: V20PresProposal, + auto_present: bool = None, + ): + """ + Create a presentation exchange record for input presentation proposal. + + Args: + conn_id: connection identifier + pres_proposal_message: presentation proposal to serialize + to exchange record + auto_present: whether to present proof upon receiving proof request + (default to configuration setting) + + Returns: + Presentation exchange record, created + + """ + pres_ex_record = V20PresExRecord( + conn_id=conn_id, + thread_id=pres_proposal_message._thread_id, + initiator=V20PresExRecord.INITIATOR_SELF, + role=V20PresExRecord.ROLE_PROVER, + state=V20PresExRecord.STATE_PROPOSAL_SENT, + pres_proposal=pres_proposal_message.serialize(), + auto_present=auto_present, + trace=(pres_proposal_message._trace is not None), + ) + async with self._profile.session() as session: + await pres_ex_record.save( + session, reason="create v2.0 presentation proposal" + ) + + return pres_ex_record + + async def receive_pres_proposal( + self, message: V20PresProposal, conn_record: ConnRecord + ): + """ + Receive a presentation proposal from message in context on manager creation. + + Returns: + Presentation exchange record, created + + """ + pres_ex_record = V20PresExRecord( + conn_id=conn_record.connection_id, + thread_id=message._thread_id, + initiator=V20PresExRecord.INITIATOR_EXTERNAL, + role=V20PresExRecord.ROLE_VERIFIER, + state=V20PresExRecord.STATE_PROPOSAL_RECEIVED, + pres_proposal=message.serialize(), + trace=(message._trace is not None), + ) + async with self._profile.session() as session: + await pres_ex_record.save( + session, reason="receive v2.0 presentation request" + ) + + return pres_ex_record + + async def create_bound_request( + self, + pres_ex_record: V20PresExRecord, + name: str = None, + version: str = None, + nonce: str = None, + comment: str = None, + ): + """ + Create a presentation request bound to a proposal. + + Args: + pres_ex_record: Presentation exchange record for which + to create presentation request + name: name to use in presentation request (None for default) + version: version to use in presentation request (None for default) + nonce: nonce to use in presentation request (None to generate) + comment: Optional human-readable comment pertaining to request creation + + Returns: + A tuple (updated presentation exchange record, presentation request message) + + """ + # TODO format finesse; take #0, assert hl-indy, and run with it? + pres_preview = IndyPresentationPreview.deserialize( + V20PresProposal.deserialize(pres_ex_record.pres_proposal).attachment() + ) + + indy_proof_request = await pres_preview.indy_proof_request( + name=name, + version=version, + nonce=nonce, + ledger=self._profile.inject(BaseLedger), + ) + pres_request_message = V20PresRequest( + comment=comment, + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64( + mapping=indy_proof_request, + ident="indy", + ) + ], + ) + pres_request_message._thread = { + "thid": pres_ex_record.thread_id + } + pres_request_message.assign_trace_decorator( + self._profile.settings, pres_ex_record.trace + ) + + pres_ex_record.thread_id = pres_request_message._thread_id + pres_ex_record.state = V20PresExRecord.STATE_REQUEST_SENT + pres_ex_record.pres_request = pres_request_message.serialize() + async with self._profile.session() as session: + await pres_ex_record.save( + session, reason="create (bound) v2.0 presentation request" + ) + + return pres_ex_record, pres_request_message + + async def create_exchange_for_request( + self, conn_id: str, pres_request_message: V20PresRequest + ): + """ + Create a presentation exchange record for input presentation request. + + Args: + conn_id: connection identifier + pres_request_message: presentation request to use in creating + exchange record, extracting indy proof request and thread id + + Returns: + Presentation exchange record, updated + + """ + pres_ex_record = V20PresExRecord( + conn_id=conn_id, + thread_id=pres_request_message._thread_id, + initiator=V20PresExRecord.INITIATOR_SELF, + role=V20PresExRecord.ROLE_VERIFIER, + state=V20PresExRecord.STATE_REQUEST_SENT, + pres_request=pres_request_message.serialize(), + trace=(pres_request_message._trace is not None), + ) + async with self._profile.session() as session: + await pres_ex_record.save( + session, reason="create (free) v2.0 presentation request" + ) + + return pres_ex_record + + async def receive_request( + self, pres_ex_record: V20PresExRecord + ): + """ + Receive a presentation request. + + Args: + pres_ex_record: presentation exchange record with request to receive + + Returns: + The presentation exchange record, updated + + """ + pres_ex_record.state = ( + V20PresExRecord.STATE_REQUEST_RECEIVED + ) + async with self._profile.session() as session: + await pres_ex_record.save( + session, reason="receive v2.0 presentation request" + ) + + return pres_ex_record + + async def create_pres( + self, + pres_ex_record: V20PresExRecord, + requested_credentials: dict, + comment: str = None, + ): + """ + Create a presentation. + + Args: + pres_ex_record: record to update + requested_credentials: indy formatted requested_credentials + comment: optional human-readable comment + + + Example `requested_credentials` format, mapping proof request referents (uuid) + to wallet referents (cred id): + + :: + + { + "self_attested_attributes": { + "j233ffbc-bd35-49b1-934f-51e083106f6d": "value" + }, + "requested_attributes": { + "6253ffbb-bd35-49b3-934f-46e083106f6c": { + "cred_id": "5bfa40b7-062b-4ae0-a251-a86c87922c0e", + "revealed": true + } + }, + "requested_predicates": { + "bfc8a97d-60d3-4f21-b998-85eeabe5c8c0": { + "cred_id": "5bfa40b7-062b-4ae0-a251-a86c87922c0e" + } + } + } + + Returns: + A tuple (updated presentation exchange record, presentation message) + + """ + + # Get all credentials for this presentation + holder = self._profile.inject(IndyHolder) + credentials = {} + + # extract credential ids and non_revoked + requested_referents = {} + pres_request = V20PresRequest.deserialize( + pres_ex_record.pres_request + ).attachment() # TODO format finesse + non_revoc_intervals = indy_proof_req2non_revoc_intervals(pres_request) + attr_creds = requested_credentials.get("requested_attributes", {}) + req_attrs = pres_request.get("requested_attributes", {}) + for reft in attr_creds: + requested_referents[reft] = {"cred_id": attr_creds[reft]["cred_id"]} + if reft in req_attrs and reft in non_revoc_intervals: + requested_referents[reft]["non_revoked"] = non_revoc_intervals[reft] + + preds_creds = requested_credentials.get("requested_predicates", {}) + req_preds = pres_request.get("requested_predicates", {}) + for reft in preds_creds: + requested_referents[reft] = {"cred_id": preds_creds[reft]["cred_id"]} + if reft in req_preds and reft in non_revoc_intervals: + requested_referents[reft]["non_revoked"] = non_revoc_intervals[reft] + + # extract mapping of presentation referents to credential ids + for reft in requested_referents: + credential_id = requested_referents[reft]["cred_id"] + if credential_id not in credentials: + credentials[credential_id] = json.loads( + await holder.get_credential(credential_id) + ) + + # Get all schemas, credential definitions, and revocation registries in use + ledger = self._profile.inject(BaseLedger) + schemas = {} + cred_defs = {} + revocation_registries = {} + + async with ledger: + for credential in credentials.values(): + schema_id = credential["schema_id"] + if schema_id not in schemas: + schemas[schema_id] = await ledger.get_schema(schema_id) + + cred_def_id = credential["cred_def_id"] + if cred_def_id not in cred_defs: + cred_defs[cred_def_id] = await ledger.get_credential_definition( + cred_def_id + ) + + if credential.get("rev_reg_id"): + revocation_registry_id = credential["rev_reg_id"] + if revocation_registry_id not in revocation_registries: + revocation_registries[ + revocation_registry_id + ] = RevocationRegistry.from_definition( + await ledger.get_revoc_reg_def(revocation_registry_id), True + ) + + # Get delta with non-revocation interval defined in "non_revoked" + # of the presentation request or attributes + epoch_now = int(time.time()) + + revoc_reg_deltas = {} + async with ledger: + for precis in requested_referents.values(): # cred_id, non-revoc interval + credential_id = precis["cred_id"] + if not credentials[credential_id].get("rev_reg_id"): + continue + if "timestamp" in precis: + continue + rev_reg_id = credentials[credential_id]["rev_reg_id"] + reft_non_revoc_interval = precis.get("non_revoked") + if reft_non_revoc_interval: + key = ( + f"{rev_reg_id}_" + f"{reft_non_revoc_interval.get('from', 0)}_" + f"{reft_non_revoc_interval.get('to', epoch_now)}" + ) + if key not in revoc_reg_deltas: + (delta, delta_timestamp) = await ledger.get_revoc_reg_delta( + rev_reg_id, + reft_non_revoc_interval.get("from", 0), + reft_non_revoc_interval.get("to", epoch_now), + ) + revoc_reg_deltas[key] = ( + rev_reg_id, + credential_id, + delta, + delta_timestamp, + ) + for stamp_me in requested_referents.values(): + # often one cred satisfies many requested attrs/preds + if stamp_me["cred_id"] == credential_id: + stamp_me["timestamp"] = revoc_reg_deltas[key][3] + + # Get revocation states to prove non-revoked + revocation_states = {} + for ( + rev_reg_id, + credential_id, + delta, + delta_timestamp, + ) in revoc_reg_deltas.values(): + if rev_reg_id not in revocation_states: + revocation_states[rev_reg_id] = {} + + rev_reg = revocation_registries[rev_reg_id] + tails_local_path = await rev_reg.get_or_fetch_local_tails_path() + + try: + revocation_states[rev_reg_id][delta_timestamp] = json.loads( + await holder.create_revocation_state( + credentials[credential_id]["cred_rev_id"], + rev_reg.reg_def, + delta, + delta_timestamp, + tails_local_path, + ) + ) + except IndyHolderError as e: + LOGGER.error( + f"Failed to create revocation state: {e.error_code}, {e.message}" + ) + raise e + + for (referent, precis) in requested_referents.items(): + if "timestamp" not in precis: + continue + if referent in requested_credentials["requested_attributes"]: + requested_credentials["requested_attributes"][referent][ + "timestamp" + ] = precis["timestamp"] + if referent in requested_credentials["requested_predicates"]: + requested_credentials["requested_predicates"][referent][ + "timestamp" + ] = precis["timestamp"] + + indy_proof_json = await holder.create_pres( + pres_request, + requested_credentials, + schemas, + cred_defs, + revocation_states, + ) + indy_proof = json.loads(indy_proof_json) + + pres_message = V20Pres( + comment=comment, + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(mapping=indy_proof, ident="indy") + ], + ) + + pres_message._thread = {"thid": pres_ex_record.thread_id} + pres_message.assign_trace_decorator( + self._profile.settings, pres_ex_record.trace + ) + + # save presentation exchange state + pres_ex_record.state = ( + V20PresExRecord.STATE_PRESENTATION_SENT + ) + pres_ex_record.pres = indy_proof + async with self._profile.session() as session: + await pres_ex_record.save( + session, reason="create v2.0 presentation" + ) + + return pres_ex_record, pres_message + + async def receive_pres( + self, message: V20Pres, conn_record: ConnRecord + ): + """ + Receive a presentation, from message in context on manager creation. + + Returns: + presentation exchange record, retrieved and updated + + """ + pres = message.indy_proof() + + thread_id = message._thread_id + conn_id_filter = ( + None + if conn_record is None + else {"connection_id": conn_record.connection_id} + ) + async with self._profile.session() as session: + try: + pres_ex_record = await V20PresExRecord.retrieve_by_tag_filter( + session, {"thread_id": thread_id}, conn_id_filter + ) + except StorageNotFoundError: + # Proof req not bound to any connection: request_attach in OOB message + pres_ex_record = await V20PresExRecord.retrieve_by_tag_filter( + session, {"thread_id": thread_id}, None + ) + + # Check for bait-and-switch in presented attribute values vs. proposal + if pres_ex_record.pres_proposal: + pres_preview = IndyPresentationPreview.deserialize( + V20PresProposal.deserialize( + pres_ex_record.pres_proposal + ).attachment() # TODO format finesse + ) + proof_req = V20PresRequest.deserialize( + pres_ex_record.pres_request + ).attachment() + + for (reft, attr_spec) in pres["requested_proof"][ + "revealed_attrs" + ].items(): + name = proof_req["requested_attributes"][reft]["name"] + value = attr_spec["raw"] + if not pres_preview.has_attr_spec( + cred_def_id=pres["identifiers"][ + attr_spec["sub_proof_index"] + ]["cred_def_id"], + name=name, + value=value, + ): + raise V20PresManagerError( + f"Presentation {name}={value} mismatches proposal value" + ) + + pres_ex_record.pres = pres + pres_ex_record.state = ( + V20PresExRecord.STATE_PRESENTATION_RECEIVED + ) + + async with self._profile.session() as session: + await pres_ex_record.save( + session, reason="receive v2.0 presentation" + ) + + return pres_ex_record + + async def verify_pres( + self, pres_ex_record: V20PresExRecord + ): + """ + Verify a presentation. + + Args: + pres_ex_record: presentation exchange record + with presentation request and presentation to verify + + Returns: + presentation exchange record, updated + + """ + # TODO: format finesse + indy_proof_request = V20PresRequest.deserialize( + pres_ex_record.pres_request + ).attachment() + indy_proof = V20Pres.deserialize(pres_ex_record.pres).attachment() + + schema_ids = [] + cred_def_ids = [] + + schemas = {} + cred_defs = {} + rev_reg_defs = {} + rev_reg_entries = {} + + identifiers = indy_proof["identifiers"] + ledger = self._profile.inject(BaseLedger) + async with ledger: + for identifier in identifiers: + schema_ids.append(identifier["schema_id"]) + cred_def_ids.append(identifier["cred_def_id"]) + + # Build schemas for anoncreds + if identifier["schema_id"] not in schemas: + schemas[identifier["schema_id"]] = await ledger.get_schema( + identifier["schema_id"] + ) + + if identifier["cred_def_id"] not in cred_defs: + cred_defs[identifier["cred_def_id"]] = ( + await ledger.get_credential_definition( + identifier["cred_def_id"] + ) + ) + + if identifier.get("rev_reg_id"): + if identifier["rev_reg_id"] not in rev_reg_defs: + rev_reg_defs[ + identifier["rev_reg_id"] + ] = await ledger.get_revoc_reg_def(identifier["rev_reg_id"]) + + if identifier.get("timestamp"): + rev_reg_entries.setdefault(identifier["rev_reg_id"], {}) + + if ( + identifier["timestamp"] + not in rev_reg_entries[identifier["rev_reg_id"]] + ): + ( + found_rev_reg_entry, + _found_timestamp, + ) = await ledger.get_revoc_reg_entry( + identifier["rev_reg_id"], identifier["timestamp"] + ) + rev_reg_entries[identifier["rev_reg_id"]][ + identifier["timestamp"] + ] = found_rev_reg_entry + + verifier = self._profile.inject(IndyVerifier) + pres_ex_record.verified = json.dumps( # tag: needs string value + await verifier.verify_presentation( + indy_proof_request, + indy_proof, + schemas, + cred_defs, + rev_reg_defs, + rev_reg_entries, + ) + ) + pres_ex_record.state = V20PresExRecord.STATE_VERIFIED + + async with self._profile.session() as session: + await pres_ex_record.save( + session, reason="verify v2.0 presentation" + ) + + await self.send_pres_ack(pres_ex_record) + return pres_ex_record + + async def send_pres_ack( + self, pres_ex_record: V20PresExRecord + ): + """ + Send acknowledgement of presentation receipt. + + Args: + pres_ex_record: presentation exchange record with thread id + + """ + responder = self._profile.inject(BaseResponder, required=False) + + if responder: + pres_ack_message = V20PresAck() + pres_ack_message._thread = { + "thid": pres_ex_record.thread_id + } + pres_ack_message.assign_trace_decorator( + self._profile.settings, pres_ex_record.trace + ) + + await responder.send_reply( + pres_ack_message, + connection_id=pres_ex_record.conn_id, + ) + else: + LOGGER.warning( + "Configuration has no BaseResponder: cannot ack presentation on %s", + pres_ex_record.thread_id, + ) + + async def receive_pres_ack( + self, message: V20PresAck, conn_record: ConnRecord + ): + """ + Receive a presentation ack, from message in context on manager creation. + + Returns: + presentation exchange record, retrieved and updated + + """ + async with self._profile.session() as session: + pres_ex_record = await V20PresExRecord.retrieve_by_tag_filter( + session, + {"thread_id": message._thread_id}, + {"connection_id": conn_record.connection_id}, + ) + + pres_ex_record.state = ( + V20PresExRecord.STATE_PRESENTATION_ACKED + ) + + await pres_ex_record.save( + session, reason="receive v2.0 presentation ack" + ) + + return pres_ex_record diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py index 85d13f9aa0..b9e09983e2 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py @@ -32,7 +32,7 @@ def __init__( _id: str = None, *, comment: str = None, - formats: Sequence[V20PresFormat], + formats: Sequence[V20PresFormat] = None, presentations_attach: Sequence[AttachDecorator] = None, **kwargs, ): @@ -46,7 +46,7 @@ def __init__( """ super().__init__(_id=_id, **kwargs) self.comment = comment - self.formats = formats + self.formats = formats if formats else [] self.presentations_attach = ( list(presentations_attach) if presentations_attach else [] ) @@ -59,10 +59,14 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( - self.formats, - self.presentations_attach, - ) if self.formats else None + return ( + (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( + self.formats, + self.presentations_attach, + ) + if self.formats + else None + ) class V20PresSchema(AgentMessageSchema): diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py index 0804450131..639f3a4df4 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -34,8 +34,8 @@ def __init__( _id: str = None, *, comment: str = None, - formats: Sequence[V20PresFormat], - proposal_attach: Sequence[AttachDecorator], + formats: Sequence[V20PresFormat] = None, + proposal_attach: Sequence[AttachDecorator] = None, **kwargs, ): """ @@ -48,8 +48,8 @@ def __init__( """ super().__init__(_id, **kwargs) self.comment = comment - self.formats = formats - self.proposal_attach = proposal_attach or [] + self.formats = list(formats) if formats else [] + self.proposal_attach = list(proposal_attach) if proposal_attach else [] def attachment(self, fmt: V20PresFormat.Format = None) -> dict: """ @@ -59,10 +59,14 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( - self.formats, - self.proposal_attach, - ) if self.formats else None + return ( + (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( + self.formats, + self.proposal_attach, + ) + if self.formats + else None + ) class V20PresProposalSchema(AgentMessageSchema): @@ -110,5 +114,5 @@ def get_attach_by_id(attach_id): for fmt in formats: proposal_atch = get_attach_by_id(fmt.attach_id) V20PresFormat.Format.get(fmt.format).validate_proposal_attach( - proposal_atch.indy_dict + proposal_atch.content ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py index 4efecc829d..460ec1d196 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py @@ -35,7 +35,7 @@ def __init__( *, comment: str = None, will_confirm: bool = None, - formats: Sequence[V20PresFormat], + formats: Sequence[V20PresFormat] = None, request_presentations_attach: Sequence[AttachDecorator] = None, **kwargs, ): @@ -50,7 +50,7 @@ def __init__( super().__init__(_id=_id, **kwargs) self.comment = comment self.will_confirm = will_confirm or False - self.formats = formats + self.formats = list(formats) if formats else [] self.request_presentations_attach = ( list(request_presentations_attach) if request_presentations_attach else [] ) @@ -63,10 +63,14 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: fmt: format of attachment in list to decode and return """ - return (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( - self.formats, - self.request_presentations_attach, - ) if self.formats else None + return ( + (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( + self.formats, + self.request_presentations_attach, + ) + if self.formats + else None + ) class V20PresRequestSchema(AgentMessageSchema): @@ -117,5 +121,5 @@ def get_attach_by_id(attach_id): for fmt in formats: request_atch = get_attach_by_id(fmt.attach_id) V20PresFormat.Format.get(fmt.format).validate_request_attach( - request_atch.indy_dict + request_atch.content ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py index 2f0aab1269..a7c9fb2a53 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py @@ -1675,7 +1675,7 @@ ], presentations_attach=[ AttachDecorator.data_base64( - indy_dict=INDY_PROOF, + mapping=INDY_PROOF, ident="abc", ) ], @@ -1687,7 +1687,7 @@ class TestPresentation(TestCase): def test_init_type(self): """Test initializer, type.""" - assert PRES.presentations_attach[0].indy_dict == INDY_PROOF + assert PRES.presentations_attach[0].content == INDY_PROOF assert len(PRES.formats) == len(PRES.presentations_attach) assert PRES.attachment(V20PresFormat.Format.INDY) == INDY_PROOF assert PRES._type == DIDCommPrefix.qualify_current(PRES_20) @@ -1706,7 +1706,7 @@ def test_deserialize(self): ], "presentations~attach": [ AttachDecorator.data_base64( - indy_dict=INDY_PROOF, + mapping=INDY_PROOF, ident="abc", ).serialize() ], @@ -1746,7 +1746,7 @@ def test_deserialize_x(self): ], "presentations~attach": [ AttachDecorator.data_base64( - indy_dict=INDY_PROOF, + mapping=INDY_PROOF, ident="def", ).serialize() ], @@ -1770,7 +1770,7 @@ def test_serialize(self): ], "presentations~attach": [ AttachDecorator.data_base64( - indy_dict=INDY_PROOF, + mapping=INDY_PROOF, ident="abc", ).serialize() ], diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py index da47d52bfd..1b619cc095 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py @@ -61,8 +61,8 @@ def test_get_attachment_data(self): V20PresFormat(attach_id="abc", format_=V20PresFormat.Format.INDY) ], attachments=[ - AttachDecorator.from_data_base64( - PRES_PREVIEW.serialize(), + AttachDecorator.data_base64( + mapping=PRES_PREVIEW.serialize(), ident="abc", ) ], diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py index 9b4a5f1cf5..27c5e0c906 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py @@ -82,7 +82,7 @@ ], request_presentations_attach=[ AttachDecorator.data_base64( - indy_dict=INDY_PROOF_REQ, + mapping=INDY_PROOF_REQ, ident="abc", ) ], @@ -96,7 +96,7 @@ def test_init_type(self): """Test initializer, type.""" assert PRES_REQ.will_confirm assert len(PRES_REQ.formats) == len(PRES_REQ.request_presentations_attach) - assert PRES_REQ.request_presentations_attach[0].indy_dict == INDY_PROOF_REQ + assert PRES_REQ.request_presentations_attach[0].content == INDY_PROOF_REQ assert PRES_REQ.attachment(V20PresFormat.Format.INDY) == INDY_PROOF_REQ assert PRES_REQ._type == DIDCommPrefix.qualify_current(PRES_20_REQUEST) @@ -115,7 +115,7 @@ def test_deserialize(self): ], "request_presentations~attach": [ AttachDecorator.data_base64( - indy_dict=INDY_PROOF_REQ, + mapping=INDY_PROOF_REQ, ident="abc", ).serialize() ], @@ -157,7 +157,7 @@ def test_deserialize_x(self): ], "request_presentations~attach": [ AttachDecorator.data_base64( - indy_dict=INDY_PROOF_REQ, + mapping=INDY_PROOF_REQ, ident="def", ).serialize() ], @@ -182,7 +182,7 @@ def test_serialize(self): ], "request_presentations~attach": [ AttachDecorator.data_base64( - indy_dict=INDY_PROOF_REQ, + mapping=INDY_PROOF_REQ, ident="abc", ).serialize() ], diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py index 690012340d..5cc99aff41 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py @@ -1,7 +1,7 @@ """Presentation exchange record.""" from os import environ -from typing import Any +from typing import Any, Mapping from marshmallow import fields, validate @@ -49,7 +49,7 @@ def __init__( role: str = None, state: str = None, pres_proposal: Mapping = None, # serialized pres proposal message - pres_request: Mapping = None, #serialized pres proposal message + pres_request: Mapping = None, # serialized pres proposal message pres: Mapping = None, # serialized pres message verified: str = None, auto_present: bool = False, @@ -64,10 +64,9 @@ def __init__( self.initiator = initiator self.role = role self.state = state - self.presentation_proposal_dict = presentation_proposal_dict - self.presentation_request = presentation_request # indy proof req - self.presentation_request_dict = presentation_request_dict - self.presentation = presentation # indy proof + self.pres_proposal = pres_proposal + self.pres_request = pres_request + self.pres = pres self.verified = verified self.auto_present = auto_present self.error_msg = error_msg @@ -103,13 +102,13 @@ def __eq__(self, other: Any) -> bool: return super().__eq__(other) -class V20PresExSchema(BaseExchangeSchema): +class V20PresExRecordSchema(BaseExchangeSchema): """Schema for de/serialization of v2.0 presentation exchange records.""" class Meta: """V20PresExRecordSchema metadata.""" - model_class = V10PresentationExchange + model_class = V20PresExRecord pres_ex_id = fields.Str( required=False, @@ -129,7 +128,7 @@ class Meta: initiator = fields.Str( required=False, description="Present-proof exchange initiator: self or external", - example=V10PresentationExchange.INITIATOR_SELF, + example=V20PresExRecord.INITIATOR_SELF, validate=validate.OneOf( [ getattr(V20PresExRecord, m) @@ -141,7 +140,7 @@ class Meta: role = fields.Str( required=False, description="Present-proof exchange role: prover or verifier", - example=V10PresentationExchange.ROLE_PROVER, + example=V20PresExRecord.ROLE_PROVER, validate=validate.OneOf( [ getattr(V20PresExRecord, m) @@ -168,7 +167,8 @@ class Meta: required=False, description="Serialized presentation request message" ) pres = fields.Dict( - required=False, description="Serialized presentation message", + required=False, + description="Serialized presentation message", ) verified = fields.Str( # tag: must be a string required=False, diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py b/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py index 2253e9c8ad..9d1fd84e74 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py @@ -19,16 +19,16 @@ class Meta: class TestRecord(UnitTestCase): def test_record(self): - record = V20PresentationExchange( + record = V20PresExRecord( pres_ex_id="pxid", - conn_id="connid", thread_id="thid", + conn_id="connid", initiator="init", role="role", state="state", - pres_proposal={"prop": "dict"}, + pres_proposal={"pres": "prop"}, pres_request={"pres": "req"}, - pres={"pres": "indy"}, + pres={"pres": "pres"}, verified="false", auto_present=True, error_msg="error", @@ -37,17 +37,16 @@ def test_record(self): assert record.pres_ex_id == "pxid" assert record.record_value == { - "connection_id": "connid", + "conn_id": "connid", "initiator": "init", - "presentation_proposal_dict": {"prop": "dict"}, - "presentation_request": {"pres": "req"}, - "presentation_request_dict": {"pres", "dict"}, - "presentation": {"pres": "indy"}, "role": "role", "state": "state", + "pres_proposal": {"pres": "prop"}, + "pres_request": {"pres": "req"}, + "pres": {"pres": "pres"}, + "verified": "false", "auto_present": True, "error_msg": "error", - "verified": "false", "trace": False, } From 27bd8fa8d629700292c083e136a45322439cce37 Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 23 Feb 2021 16:02:02 +0000 Subject: [PATCH 080/243] black tweaks Signed-off-by: sklump --- .../decorators/tests/test_attach_decorator.py | 7 +- .../protocols/present_proof/v2_0/manager.py | 78 ++++++------------- 2 files changed, 29 insertions(+), 56 deletions(-) diff --git a/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py b/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py index d0e77ddbb2..bff4ba7c0f 100644 --- a/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py +++ b/aries_cloudagent/messaging/decorators/tests/test_attach_decorator.py @@ -364,7 +364,12 @@ def test_content(self): assert deco_links.data.json is None assert deco_links.data.links is not None assert deco_links.data.sha256 is not None - assert deco_links.content == ([LINK_1X1,], SHA256_1X1) + assert deco_links.content == ( + [ + LINK_1X1, + ], + SHA256_1X1, + ) assert deco_links.ident == IDENT assert deco_links.description == DESCRIPTION diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index 822e0c58eb..30d3e2e175 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -158,9 +158,7 @@ async def create_bound_request( ) ], ) - pres_request_message._thread = { - "thid": pres_ex_record.thread_id - } + pres_request_message._thread = {"thid": pres_ex_record.thread_id} pres_request_message.assign_trace_decorator( self._profile.settings, pres_ex_record.trace ) @@ -206,9 +204,7 @@ async def create_exchange_for_request( return pres_ex_record - async def receive_request( - self, pres_ex_record: V20PresExRecord - ): + async def receive_request(self, pres_ex_record: V20PresExRecord): """ Receive a presentation request. @@ -219,9 +215,7 @@ async def receive_request( The presentation exchange record, updated """ - pres_ex_record.state = ( - V20PresExRecord.STATE_REQUEST_RECEIVED - ) + pres_ex_record.state = V20PresExRecord.STATE_REQUEST_RECEIVED async with self._profile.session() as session: await pres_ex_record.save( session, reason="receive v2.0 presentation request" @@ -437,20 +431,14 @@ async def create_pres( ) # save presentation exchange state - pres_ex_record.state = ( - V20PresExRecord.STATE_PRESENTATION_SENT - ) + pres_ex_record.state = V20PresExRecord.STATE_PRESENTATION_SENT pres_ex_record.pres = indy_proof async with self._profile.session() as session: - await pres_ex_record.save( - session, reason="create v2.0 presentation" - ) + await pres_ex_record.save(session, reason="create v2.0 presentation") return pres_ex_record, pres_message - async def receive_pres( - self, message: V20Pres, conn_record: ConnRecord - ): + async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): """ Receive a presentation, from message in context on manager creation. @@ -488,15 +476,13 @@ async def receive_pres( pres_ex_record.pres_request ).attachment() - for (reft, attr_spec) in pres["requested_proof"][ - "revealed_attrs" - ].items(): + for (reft, attr_spec) in pres["requested_proof"]["revealed_attrs"].items(): name = proof_req["requested_attributes"][reft]["name"] value = attr_spec["raw"] if not pres_preview.has_attr_spec( - cred_def_id=pres["identifiers"][ - attr_spec["sub_proof_index"] - ]["cred_def_id"], + cred_def_id=pres["identifiers"][attr_spec["sub_proof_index"]][ + "cred_def_id" + ], name=name, value=value, ): @@ -505,20 +491,14 @@ async def receive_pres( ) pres_ex_record.pres = pres - pres_ex_record.state = ( - V20PresExRecord.STATE_PRESENTATION_RECEIVED - ) + pres_ex_record.state = V20PresExRecord.STATE_PRESENTATION_RECEIVED async with self._profile.session() as session: - await pres_ex_record.save( - session, reason="receive v2.0 presentation" - ) + await pres_ex_record.save(session, reason="receive v2.0 presentation") return pres_ex_record - async def verify_pres( - self, pres_ex_record: V20PresExRecord - ): + async def verify_pres(self, pres_ex_record: V20PresExRecord): """ Verify a presentation. @@ -558,10 +538,10 @@ async def verify_pres( ) if identifier["cred_def_id"] not in cred_defs: - cred_defs[identifier["cred_def_id"]] = ( - await ledger.get_credential_definition( - identifier["cred_def_id"] - ) + cred_defs[ + identifier["cred_def_id"] + ] = await ledger.get_credential_definition( + identifier["cred_def_id"] ) if identifier.get("rev_reg_id"): @@ -601,16 +581,12 @@ async def verify_pres( pres_ex_record.state = V20PresExRecord.STATE_VERIFIED async with self._profile.session() as session: - await pres_ex_record.save( - session, reason="verify v2.0 presentation" - ) + await pres_ex_record.save(session, reason="verify v2.0 presentation") await self.send_pres_ack(pres_ex_record) return pres_ex_record - async def send_pres_ack( - self, pres_ex_record: V20PresExRecord - ): + async def send_pres_ack(self, pres_ex_record: V20PresExRecord): """ Send acknowledgement of presentation receipt. @@ -622,9 +598,7 @@ async def send_pres_ack( if responder: pres_ack_message = V20PresAck() - pres_ack_message._thread = { - "thid": pres_ex_record.thread_id - } + pres_ack_message._thread = {"thid": pres_ex_record.thread_id} pres_ack_message.assign_trace_decorator( self._profile.settings, pres_ex_record.trace ) @@ -639,9 +613,7 @@ async def send_pres_ack( pres_ex_record.thread_id, ) - async def receive_pres_ack( - self, message: V20PresAck, conn_record: ConnRecord - ): + async def receive_pres_ack(self, message: V20PresAck, conn_record: ConnRecord): """ Receive a presentation ack, from message in context on manager creation. @@ -656,12 +628,8 @@ async def receive_pres_ack( {"connection_id": conn_record.connection_id}, ) - pres_ex_record.state = ( - V20PresExRecord.STATE_PRESENTATION_ACKED - ) + pres_ex_record.state = V20PresExRecord.STATE_PRESENTATION_ACKED - await pres_ex_record.save( - session, reason="receive v2.0 presentation ack" - ) + await pres_ex_record.save(session, reason="receive v2.0 presentation ack") return pres_ex_record From 06b7b4ae01e11f04b18978af3120020abaddde30 Mon Sep 17 00:00:00 2001 From: Boran Car Date: Tue, 23 Feb 2021 02:42:55 +0100 Subject: [PATCH 081/243] Fix start cmd for Python versions > 3.6 asyncio.Task.all_tasks() was moved to asyncio.all_tasks() Signed-off-by: Boran Car --- aries_cloudagent/commands/start.py | 15 ++++++++----- aries_cloudagent/commands/tests/test_start.py | 22 +++++++++++++++---- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/aries_cloudagent/commands/start.py b/aries_cloudagent/commands/start.py index bf8f310dc7..d9497c04b3 100644 --- a/aries_cloudagent/commands/start.py +++ b/aries_cloudagent/commands/start.py @@ -4,6 +4,7 @@ import functools import logging import signal +import sys from configargparse import ArgumentParser from typing import Coroutine, Sequence @@ -76,11 +77,15 @@ async def init(cleanup): async def done(): """Run shutdown and clean up any outstanding tasks.""" await shutdown - tasks = [ - task - for task in asyncio.Task.all_tasks() - if task is not asyncio.Task.current_task() - ] + + if sys.version_info.major == 3 and sys.version_info.minor > 6: + all_tasks = asyncio.all_tasks() + current_task = asyncio.current_task() + else: + all_tasks = asyncio.Task.all_tasks() + current_task = asyncio.Task.current_task() + + tasks = [task for task in all_tasks if task is not current_task] for task in tasks: task.cancel() if tasks: diff --git a/aries_cloudagent/commands/tests/test_start.py b/aries_cloudagent/commands/tests/test_start.py index 1dadfe393d..4c34cb8561 100644 --- a/aries_cloudagent/commands/tests/test_start.py +++ b/aries_cloudagent/commands/tests/test_start.py @@ -1,3 +1,5 @@ +import sys + from asynctest import TestCase as AsyncTestCase from asynctest import mock as async_mock @@ -79,8 +81,14 @@ async def test_run_loop(self): async_mock.MagicMock(cancel=async_mock.MagicMock()), ] mock_asyncio.gather = async_mock.CoroutineMock() - mock_asyncio.Task.all_tasks.return_value = tasks - mock_asyncio.Task.current_task.return_value = tasks[0] + + if sys.version_info.major == 3 and sys.version_info.minor > 6: + mock_asyncio.all_tasks.return_value = tasks + mock_asyncio.current_task.return_value = tasks[0] + else: + mock_asyncio.Task.all_tasks.return_value = tasks + mock_asyncio.Task.current_task.return_value = tasks[0] + await done_coro shutdown.assert_awaited_once() @@ -109,8 +117,14 @@ async def test_run_loop_init_x(self): done_coro = mock_asyncio.ensure_future.call_args[0][0] task = async_mock.MagicMock() mock_asyncio.gather = async_mock.CoroutineMock() - mock_asyncio.Task.all_tasks.return_value = [task] - mock_asyncio.Task.current_task.return_value = task + + if sys.version_info.major == 3 and sys.version_info.minor > 6: + mock_asyncio.all_tasks.return_value = [task] + mock_asyncio.current_task.return_value = task + else: + mock_asyncio.Task.all_tasks.return_value = [task] + mock_asyncio.Task.current_task.return_value = task + await done_coro shutdown.assert_awaited_once() mock_logger.exception.assert_called_once() From 254130dfe0fc9f8becbd95cf076dd94e3e27c1dc Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 23 Feb 2021 17:00:00 +0000 Subject: [PATCH 082/243] must have responder DID to create request on implicit invitation Signed-off-by: sklump --- aries_cloudagent/protocols/didexchange/v1_0/routes.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/aries_cloudagent/protocols/didexchange/v1_0/routes.py b/aries_cloudagent/protocols/didexchange/v1_0/routes.py index a3007b3178..9ee97a302c 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/routes.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/routes.py @@ -39,6 +39,8 @@ class DIDXCreateRequestImplicitQueryStringSchema(OpenAPISchema): """Parameters and validators for create-request-implicit request query string.""" their_public_did = fields.Str( + required=True, + allow_none=False, description="Public DID to which to request connection", **INDY_DID, ) From 702527a65940bcd2cd02f07c5b321ff640219a54 Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 23 Feb 2021 17:39:24 +0000 Subject: [PATCH 083/243] finesse error message for double-tap to receive request Signed-off-by: sklump --- aries_cloudagent/protocols/connections/v1_0/manager.py | 3 ++- aries_cloudagent/protocols/didexchange/v1_0/manager.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/aries_cloudagent/protocols/connections/v1_0/manager.py b/aries_cloudagent/protocols/connections/v1_0/manager.py index d33954e5cc..a5a8cadf89 100644 --- a/aries_cloudagent/protocols/connections/v1_0/manager.py +++ b/aries_cloudagent/protocols/connections/v1_0/manager.py @@ -480,7 +480,8 @@ async def receive_request( ) except StorageNotFoundError: raise ConnectionManagerError( - "No invitation found for pairwise connection" + "No invitation found for pairwise connection " + f"in state {ConnRecord.State.INVITATION.rfc160}" ) invitation = None diff --git a/aries_cloudagent/protocols/didexchange/v1_0/manager.py b/aries_cloudagent/protocols/didexchange/v1_0/manager.py index 3aa8192e32..2d1e1c0afc 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/manager.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/manager.py @@ -353,7 +353,8 @@ async def receive_request( except StorageNotFoundError: if recipient_verkey: raise DIDXManagerError( - "No explicit invitation found for pairwise connection" + "No explicit invitation found for pairwise connection " + f"in state {ConnRecord.State.INVITATION.rfc23}" ) if conn_rec: # invitation was explicit From 95004de671f1f4f5a1479f17d09a834ee6aa0d7b Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 25 Feb 2021 11:28:36 +0000 Subject: [PATCH 084/243] prepare main merge Signed-off-by: sklump --- .../protocols/out_of_band/v1_0/manager.py | 2 +- .../out_of_band/v1_0/tests/test_manager.py | 16 +- ...resentation_preview.py => pres_preview.py} | 10 +- .../present_proof/indy/presentation.py | 162 --- .../present_proof/indy/proof_request.py | 21 +- ...tation_preview.py => test_pres_preview.py} | 110 +- .../protocols/present_proof/indy/xform.py | 4 +- .../v1_0/messages/presentation_proposal.py | 11 +- .../v1_0/messages/tests/test_presentation.py | 2 +- .../tests/test_presentation_proposal.py | 6 +- .../tests/test_presentation_request.py | 2 +- .../protocols/present_proof/v1_0/routes.py | 12 +- .../present_proof/v1_0/tests/test_manager.py | 12 +- .../present_proof/v1_0/tests/test_routes.py | 34 +- .../v2_0/handlers/pres_request_handler.py | 21 +- .../tests/test_pres_request_handler.py | 651 ++++++++++ .../protocols/present_proof/v2_0/manager.py | 27 +- .../present_proof/v2_0/messages/pres.py | 7 +- .../v2_0/messages/pres_format.py | 4 +- .../v2_0/messages/pres_proposal.py | 7 +- .../v2_0/messages/pres_request.py | 7 +- .../v2_0/messages/tests/test_pres.py | 2 +- .../v2_0/messages/tests/test_pres_format.py | 8 +- .../v2_0/messages/tests/test_pres_proposal.py | 6 +- .../v2_0/messages/tests/test_pres_request.py | 2 +- .../v2_0/models/pres_exchange.py | 2 +- .../present_proof/v2_0/tests/__init__.py | 0 .../present_proof/v2_0/tests/test_manager.py | 1097 +++++++++++++++++ 28 files changed, 1913 insertions(+), 332 deletions(-) rename aries_cloudagent/protocols/present_proof/indy/{presentation_preview.py => pres_preview.py} (98%) delete mode 100644 aries_cloudagent/protocols/present_proof/indy/presentation.py rename aries_cloudagent/protocols/present_proof/indy/tests/{test_presentation_preview.py => test_pres_preview.py} (86%) create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/tests/__init__.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py index 102461132b..6be861046b 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py @@ -33,7 +33,7 @@ from ...issue_credential.v1_0.models.credential_exchange import V10CredentialExchange from ...issue_credential.v2_0.messages.cred_offer import V20CredOffer from ...issue_credential.v2_0.models.cred_ex_record import V20CredExRecord -from ...present_proof.util.indy import indy_proof_req_preview2indy_requested_creds +from ...present_proof.indy.xform import indy_proof_req_preview2indy_requested_creds from ...present_proof.v1_0.manager import PresentationManager from ...present_proof.v1_0.message_types import PRESENTATION_REQUEST from ...present_proof.v1_0.messages.presentation_proposal import PresentationProposal diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py index 64e95181dd..48da4508fc 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py @@ -27,10 +27,10 @@ from .....protocols.issue_credential.v1_0.message_types import ( CREDENTIAL_OFFER, ) -from .....protocols.present_proof.util.presentation_preview import ( - PresAttrSpec, - PresentationPreview, - PresPredSpec, +from .....protocols.present_proof.indy.pres_preview import ( + IndyPresAttrSpec, + IndyPresPredSpec, + IndyPresPreview, ) from .....protocols.present_proof.v1_0.manager import PresentationManager from .....protocols.present_proof.v1_0.message_types import ( @@ -132,10 +132,10 @@ class TestConfig: }}""" ) - PRES_PREVIEW = PresentationPreview( + PRES_PREVIEW = IndyPresPreview( attributes=[ - PresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), - PresAttrSpec( + IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), + IndyPresAttrSpec( name="screenCapture", cred_def_id=CD_ID, mime_type="image/png", @@ -143,7 +143,7 @@ class TestConfig: ), ], predicates=[ - PresPredSpec( + IndyPresPredSpec( name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 ) ], diff --git a/aries_cloudagent/protocols/present_proof/indy/presentation_preview.py b/aries_cloudagent/protocols/present_proof/indy/pres_preview.py similarity index 98% rename from aries_cloudagent/protocols/present_proof/indy/presentation_preview.py rename to aries_cloudagent/protocols/present_proof/indy/pres_preview.py index 1ee7c7d9e1..21bd5216b0 100644 --- a/aries_cloudagent/protocols/present_proof/indy/presentation_preview.py +++ b/aries_cloudagent/protocols/present_proof/indy/pres_preview.py @@ -230,13 +230,13 @@ class Meta: ) -class IndyPresentationPreview(BaseModel): +class IndyPresPreview(BaseModel): """Class representing presentation preview.""" class Meta: """Presentation preview metadata.""" - schema_class = "IndyPresentationPreviewSchema" + schema_class = "IndyPresPreviewSchema" message_type = PRESENTATION_PREVIEW def __init__( @@ -264,7 +264,7 @@ def __init__( def _type(self): """Accessor for message type.""" - return DIDCommPrefix.qualify_current(IndyPresentationPreview.Meta.message_type) + return DIDCommPrefix.qualify_current(IndyPresPreview.Meta.message_type) def has_attr_spec(self, cred_def_id: str, name: str, value: str) -> bool: """ @@ -427,13 +427,13 @@ def __eq__(self, other): return True -class IndyPresentationPreviewSchema(BaseModelSchema): +class IndyPresPreviewSchema(BaseModelSchema): """Presentation preview schema.""" class Meta: """Presentation preview schema metadata.""" - model_class = IndyPresentationPreview + model_class = IndyPresPreview _type = fields.Str( description="Message type identifier", diff --git a/aries_cloudagent/protocols/present_proof/indy/presentation.py b/aries_cloudagent/protocols/present_proof/indy/presentation.py deleted file mode 100644 index 55d628353e..0000000000 --- a/aries_cloudagent/protocols/present_proof/indy/presentation.py +++ /dev/null @@ -1,162 +0,0 @@ -"""Utilities to deal with indy.""" - -from marshmallow import fields, validate, validates_schema, ValidationError - -from ....indy.holder import IndyHolder -from ....messaging.models.openapi import OpenAPISchema -from ....messaging.valid import ( - INDY_CRED_DEF_ID, - INDY_DID, - INDY_PREDICATE, - INDY_SCHEMA_ID, - INDY_VERSION, - INT_EPOCH, -) - - -class IndyProofReqPredSpecRestrictionsSchema(OpenAPISchema): - """Schema for restrictions in attr or pred specifier indy proof request.""" - - schema_id = fields.String( - description="Schema identifier", required=False, **INDY_SCHEMA_ID - ) - schema_issuer_did = fields.String( - description="Schema issuer (origin) DID", required=False, **INDY_DID - ) - schema_name = fields.String( - example="transcript", description="Schema name", required=False - ) - schema_version = fields.String( - description="Schema version", required=False, **INDY_VERSION - ) - issuer_did = fields.String( - description="Credential issuer DID", required=False, **INDY_DID - ) - cred_def_id = fields.String( - description="Credential definition identifier", - required=False, - **INDY_CRED_DEF_ID, - ) - - -class IndyProofReqNonRevokedSchema(OpenAPISchema): - """Non-revocation times specification in indy proof request.""" - - to = fields.Int( - description="Timestamp of interest for non-revocation proof", - required=True, - strict=True, - **INT_EPOCH, - ) - - -class IndyProofReqAttrSpecSchema(OpenAPISchema): - """Schema for attribute specification in indy proof request.""" - - name = fields.String( - example="favouriteDrink", description="Attribute name", required=False - ) - names = fields.List( - fields.String(example="age"), - description="Attribute name group", - required=False, - ) - restrictions = fields.List( - fields.Dict( - keys=fields.Str( - validate=validate.Regexp( - "^schema_id|" - "schema_issuer_did|" - "schema_name|" - "schema_version|" - "issuer_did|" - "cred_def_id|" - "attr::.+::value$" # indy does not support attr::...::marker here - ), - example="cred_def_id", # marshmallow/apispec v3.0 ignores - ), - values=fields.Str(example=INDY_CRED_DEF_ID["example"]), - ), - description=( - "If present, credential must satisfy one of given restrictions: specify " - "schema_id, schema_issuer_did, schema_name, schema_version, " - "issuer_did, cred_def_id, and/or attr::::value " - "where represents a credential attribute name" - ), - required=False, - ) - non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) - - @validates_schema - def validate_fields(self, data, **kwargs): - """ - Validate schema fields. - - Data must have exactly one of name or names; if names then restrictions are - mandatory. - - Args: - data: The data to validate - - Raises: - ValidationError: if data has both or neither of name and names - - """ - if ("name" in data) == ("names" in data): - raise ValidationError( - "Attribute specification must have either name or names but not both" - ) - restrictions = data.get("restrictions") - if ("names" in data) and (not restrictions or all(not r for r in restrictions)): - raise ValidationError( - "Attribute specification on 'names' must have non-empty restrictions" - ) - - -class IndyProofReqPredSpecSchema(OpenAPISchema): - """Schema for predicate specification in indy proof request.""" - - name = fields.String(example="index", description="Attribute name", required=True) - p_type = fields.String( - description="Predicate type ('<', '<=', '>=', or '>')", - required=True, - **INDY_PREDICATE, - ) - p_value = fields.Int(description="Threshold value", required=True, strict=True) - restrictions = fields.List( - fields.Nested(IndyProofReqPredSpecRestrictionsSchema()), - description="If present, credential must satisfy one of given restrictions", - required=False, - ) - non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) - - -class IndyProofRequestSchema(OpenAPISchema): - """Schema for indy proof request.""" - - nonce = fields.String(description="Nonce", required=False, example="1234567890") - name = fields.String( - description="Proof request name", - required=False, - example="Proof request", - default="Proof request", - ) - version = fields.String( - description="Proof request version", - required=False, - default="1.0", - **INDY_VERSION, - ) - requested_attributes = fields.Dict( - description="Requested attribute specifications of proof request", - required=True, - keys=fields.Str(example="0_attr_uuid"), # marshmallow/apispec v3.0 ignores - values=fields.Nested(IndyProofReqAttrSpecSchema()), - ) - requested_predicates = fields.Dict( - description="Requested predicate specifications of proof request", - required=True, - keys=fields.Str(example="0_age_GE_uuid"), # marshmallow/apispec v3.0 ignores - values=fields.Nested(IndyProofReqPredSpecSchema()), - ) - non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) diff --git a/aries_cloudagent/protocols/present_proof/indy/proof_request.py b/aries_cloudagent/protocols/present_proof/indy/proof_request.py index 5fb1137a15..743b1bd246 100644 --- a/aries_cloudagent/protocols/present_proof/indy/proof_request.py +++ b/aries_cloudagent/protocols/present_proof/indy/proof_request.py @@ -1,8 +1,7 @@ """Utilities to deal with indy.""" -from marshmallow import fields, validate, validates_schema +from marshmallow import fields, validate, validates_schema, ValidationError -from ....indy.holder import IndyHolder from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import ( INDY_CRED_DEF_ID, @@ -85,7 +84,11 @@ class IndyProofReqAttrSpecSchema(OpenAPISchema): ), required=False, ) - non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) + non_revoked = fields.Nested( + IndyProofReqNonRevokedSchema(), + required=False, + allow_none=True, # accommodate libvcx + ) @validates_schema def validate_fields(self, data, **kwargs): @@ -128,7 +131,11 @@ class IndyProofReqPredSpecSchema(OpenAPISchema): description="If present, credential must satisfy one of given restrictions", required=False, ) - non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) + non_revoked = fields.Nested( + IndyProofReqNonRevokedSchema(), + required=False, + allow_none=True, # accommodate libvcx + ) class IndyProofRequestSchema(OpenAPISchema): @@ -159,4 +166,8 @@ class IndyProofRequestSchema(OpenAPISchema): keys=fields.Str(example="0_age_GE_uuid"), # marshmallow/apispec v3.0 ignores values=fields.Nested(IndyProofReqPredSpecSchema()), ) - non_revoked = fields.Nested(IndyProofReqNonRevokedSchema(), required=False) + non_revoked = fields.Nested( + IndyProofReqNonRevokedSchema(), + required=False, + allow_none=True, # accommodate libvcx + ) diff --git a/aries_cloudagent/protocols/present_proof/indy/tests/test_presentation_preview.py b/aries_cloudagent/protocols/present_proof/indy/tests/test_pres_preview.py similarity index 86% rename from aries_cloudagent/protocols/present_proof/indy/tests/test_presentation_preview.py rename to aries_cloudagent/protocols/present_proof/indy/tests/test_pres_preview.py index bf6dd321e4..d81a79e3bc 100644 --- a/aries_cloudagent/protocols/present_proof/indy/tests/test_presentation_preview.py +++ b/aries_cloudagent/protocols/present_proof/indy/tests/test_pres_preview.py @@ -14,11 +14,11 @@ from ....didcomm_prefix import DIDCommPrefix from ..predicate import Predicate -from ..presentation_preview import ( - PresAttrSpec, - PresPredSpec, +from ..pres_preview import ( + IndyPresAttrSpec, + IndyPresPredSpec, + IndyPresPreview, PRESENTATION_PREVIEW, - PresentationPreview, ) S_ID = { @@ -26,12 +26,12 @@ "membership": "NcYxiDXkpYi6ov5FcYDi1e:2:membership:1.0", } CD_ID = {name: f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID[name]}:tag1" for name in S_ID} -PRES_PREVIEW = PresentationPreview( +PRES_PREVIEW = IndyPresPreview( attributes=[ - PresAttrSpec( + IndyPresAttrSpec( name="player", cred_def_id=CD_ID["score"], value="Richie Knucklez" ), - PresAttrSpec( + IndyPresAttrSpec( name="screenCapture", cred_def_id=CD_ID["score"], mime_type="image/png", @@ -39,7 +39,7 @@ ), ], predicates=[ - PresPredSpec( + IndyPresPredSpec( name="highScore", cred_def_id=CD_ID["score"], predicate=">=", @@ -47,28 +47,28 @@ ) ], ) -PRES_PREVIEW_ATTR_NAMES = PresentationPreview( +PRES_PREVIEW_ATTR_NAMES = IndyPresPreview( attributes=[ - PresAttrSpec( + IndyPresAttrSpec( name="player", cred_def_id=CD_ID["score"], value="Richie Knucklez", referent="reft-0", ), - PresAttrSpec( + IndyPresAttrSpec( name="screenCapture", cred_def_id=CD_ID["score"], mime_type="image/png", value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", referent="reft-0", ), - PresAttrSpec( + IndyPresAttrSpec( name="member", cred_def_id=CD_ID["membership"], value="Richard Hand", referent="reft-1", ), - PresAttrSpec( + IndyPresAttrSpec( name="since", cred_def_id=CD_ID["membership"], value="2020-01-01", @@ -141,32 +141,32 @@ ) -class TestPresAttrSpec(TestCase): +class TestIndyPresAttrSpec(TestCase): """Presentation-preview attribute specification tests""" def test_posture(self): - self_attested = PresAttrSpec(name="ident", cred_def_id=None, value="655321") - assert self_attested.posture == PresAttrSpec.Posture.SELF_ATTESTED + self_attested = IndyPresAttrSpec(name="ident", cred_def_id=None, value="655321") + assert self_attested.posture == IndyPresAttrSpec.Posture.SELF_ATTESTED - revealed = PresAttrSpec( + revealed = IndyPresAttrSpec( name="ident", cred_def_id=CD_ID["score"], value="655321" ) - assert revealed.posture == PresAttrSpec.Posture.REVEALED_CLAIM + assert revealed.posture == IndyPresAttrSpec.Posture.REVEALED_CLAIM - unrevealed = PresAttrSpec(name="ident", cred_def_id=CD_ID["score"]) - assert unrevealed.posture == PresAttrSpec.Posture.UNREVEALED_CLAIM + unrevealed = IndyPresAttrSpec(name="ident", cred_def_id=CD_ID["score"]) + assert unrevealed.posture == IndyPresAttrSpec.Posture.UNREVEALED_CLAIM - no_posture = PresAttrSpec(name="no_spec") + no_posture = IndyPresAttrSpec(name="no_spec") assert no_posture.posture is None def test_list_plain(self): - by_list = PresAttrSpec.list_plain( + by_list = IndyPresAttrSpec.list_plain( plain={"ident": "655321", " Given Name ": "Alexander DeLarge"}, cred_def_id=CD_ID["score"], ) explicit = [ - PresAttrSpec(name="ident", cred_def_id=CD_ID["score"], value="655321"), - PresAttrSpec( + IndyPresAttrSpec(name="ident", cred_def_id=CD_ID["score"], value="655321"), + IndyPresAttrSpec( name="givenname", cred_def_id=CD_ID["score"], value="Alexander DeLarge" ), ] @@ -177,19 +177,19 @@ def test_list_plain(self): assert len(explicit) == len(by_list) def test_list_plain_share_referent(self): - by_list = PresAttrSpec.list_plain( + by_list = IndyPresAttrSpec.list_plain( plain={"ident": "655321", " Given Name ": "Alexander DeLarge"}, cred_def_id=CD_ID["score"], referent="dummy", ) explicit = [ - PresAttrSpec( + IndyPresAttrSpec( name="ident", cred_def_id=CD_ID["score"], value="655321", referent="dummy", ), - PresAttrSpec( + IndyPresAttrSpec( name="givenname", cred_def_id=CD_ID["score"], value="Alexander DeLarge", @@ -204,21 +204,21 @@ def test_list_plain_share_referent(self): def test_eq(self): attr_specs_none_plain = [ - PresAttrSpec(name="name", value="value"), - PresAttrSpec(name="name", value="value", mime_type=None), - PresAttrSpec(name=" NAME ", value="value"), + IndyPresAttrSpec(name="name", value="value"), + IndyPresAttrSpec(name="name", value="value", mime_type=None), + IndyPresAttrSpec(name=" NAME ", value="value"), ] attr_specs_different = [ - PresAttrSpec(name="name", value="dmFsdWU=", mime_type="image/png"), - PresAttrSpec(name="name", value="value", cred_def_id="cred_def_id"), - PresAttrSpec(name="name", value="distinct value", mime_type=None), - PresAttrSpec(name="distinct name", value="value", mime_type=None), - PresAttrSpec(name="name", value="dmFsdWU=", mime_type=None), - PresAttrSpec(name="name"), - PresAttrSpec( + IndyPresAttrSpec(name="name", value="dmFsdWU=", mime_type="image/png"), + IndyPresAttrSpec(name="name", value="value", cred_def_id="cred_def_id"), + IndyPresAttrSpec(name="name", value="distinct value", mime_type=None), + IndyPresAttrSpec(name="distinct name", value="value", mime_type=None), + IndyPresAttrSpec(name="name", value="dmFsdWU=", mime_type=None), + IndyPresAttrSpec(name="name"), + IndyPresAttrSpec( name="name", value="value", cred_def_id="cred_def_id", referent="reft-0" ), - PresAttrSpec( + IndyPresAttrSpec( name="name", value="value", cred_def_id="cred_def_id", referent="reft-1" ), ] @@ -245,8 +245,8 @@ def test_deserialize(self): } ) - attr_spec = PresAttrSpec.deserialize(dump) - assert type(attr_spec) == PresAttrSpec + attr_spec = IndyPresAttrSpec.deserialize(dump) + assert type(attr_spec) == IndyPresAttrSpec assert canon(attr_spec.name) == "player" dump = json.dumps( @@ -258,8 +258,8 @@ def test_deserialize(self): } ) - attr_spec = PresAttrSpec.deserialize(dump) - assert type(attr_spec) == PresAttrSpec + attr_spec = IndyPresAttrSpec.deserialize(dump) + assert type(attr_spec) == IndyPresAttrSpec assert canon(attr_spec.name) == "player" def test_serialize(self): @@ -323,7 +323,7 @@ def test_cmp(self): assert Predicate.get("GT").value.no("0", "0") -class TestPresPredSpec(TestCase): +class TestIndyPresPredSpec(TestCase): """Presentation predicate specification tests""" def test_deserialize(self): @@ -337,8 +337,8 @@ def test_deserialize(self): } ) - pred_spec = PresPredSpec.deserialize(dump) - assert type(pred_spec) == PresPredSpec + pred_spec = IndyPresPredSpec.deserialize(dump) + assert type(pred_spec) == IndyPresPredSpec assert canon(pred_spec.name) == "highscore" def test_serialize(self): @@ -355,13 +355,13 @@ def test_serialize(self): def test_eq(self): """Test equality operator.""" - pred_spec_a = PresPredSpec( + pred_spec_a = IndyPresPredSpec( name="a", cred_def_id=CD_ID["score"], predicate=Predicate.GE.value.math, threshold=0, ) - pred_spec_b = PresPredSpec( + pred_spec_b = IndyPresPredSpec( name="b", cred_def_id=CD_ID["score"], predicate=Predicate.GE.value.math, @@ -387,7 +387,7 @@ def test_eq(self): @pytest.mark.indy -class TestPresentationPreviewAsync(AsyncTestCase): +class TestIndyPresPreviewAsync(AsyncTestCase): """Presentation preview tests""" @pytest.mark.asyncio @@ -497,25 +497,25 @@ async def test_to_indy_proof_request_revo(self): async def test_satisfaction(self): """Test presentation preview predicate satisfaction.""" - pred_spec = PresPredSpec( + pred_spec = IndyPresPredSpec( name="highScore", cred_def_id=CD_ID["score"], predicate=Predicate.GE.value.math, threshold=1000000, ) - attr_spec = PresAttrSpec( + attr_spec = IndyPresAttrSpec( name="HIGHSCORE", cred_def_id=CD_ID["score"], value=1234567 ) assert attr_spec.satisfies(pred_spec) - attr_spec = PresAttrSpec( + attr_spec = IndyPresAttrSpec( name="HIGHSCORE", cred_def_id=CD_ID["score"], value=985260 ) assert not attr_spec.satisfies(pred_spec) @pytest.mark.indy -class TestPresentationPreview(TestCase): +class TestIndyPresPreview(TestCase): """Presentation preview tests""" def test_init(self): @@ -557,8 +557,8 @@ def test_deserialize(self): ], } - preview = PresentationPreview.deserialize(dump) - assert type(preview) == PresentationPreview + preview = IndyPresPreview.deserialize(dump) + assert type(preview) == IndyPresPreview def test_serialize(self): """Test serialization.""" @@ -590,7 +590,7 @@ def test_serialize(self): } def test_eq(self): - pres_preview_a = PresentationPreview.deserialize(PRES_PREVIEW.serialize()) + pres_preview_a = IndyPresPreview.deserialize(PRES_PREVIEW.serialize()) assert pres_preview_a == PRES_PREVIEW pres_preview_a.predicates = [] diff --git a/aries_cloudagent/protocols/present_proof/indy/xform.py b/aries_cloudagent/protocols/present_proof/indy/xform.py index 8956eafcc0..4f28418e84 100644 --- a/aries_cloudagent/protocols/present_proof/indy/xform.py +++ b/aries_cloudagent/protocols/present_proof/indy/xform.py @@ -2,12 +2,12 @@ from ....indy.holder import IndyHolder -from .presentation_preview import IndyPresentationPreview +from .pres_preview import IndyPresPreview async def indy_proof_req_preview2indy_requested_creds( indy_proof_req: dict, - preview: IndyPresentationPreview = None, + preview: IndyPresPreview = None, *, holder: IndyHolder, ): diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py index 24a7367291..b00196efcb 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/presentation_proposal.py @@ -4,12 +4,9 @@ from .....messaging.agent_message import AgentMessage, AgentMessageSchema -from ..message_types import PRESENTATION_PROPOSAL, PROTOCOL_PACKAGE +from ...indy.pres_preview import IndyPresPreview, IndyPresPreviewSchema -from ...indy.presentation_preview import ( - IndyPresentationPreview, - IndyPresentationPreviewSchema, -) +from ..message_types import PRESENTATION_PROPOSAL, PROTOCOL_PACKAGE HANDLER_CLASS = ( f"{PROTOCOL_PACKAGE}.handlers." @@ -32,7 +29,7 @@ def __init__( _id: str = None, *, comment: str = None, - presentation_proposal: IndyPresentationPreview = None, + presentation_proposal: IndyPresPreview = None, **kwargs, ): """ @@ -59,4 +56,4 @@ class Meta: comment = fields.Str( description="Human-readable comment", required=False, allow_none=True ) - presentation_proposal = fields.Nested(IndyPresentationPreviewSchema, required=True) + presentation_proposal = fields.Nested(IndyPresPreviewSchema, required=True) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py index b561237c78..e23721d9b7 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py @@ -7,7 +7,7 @@ from .....didcomm_prefix import DIDCommPrefix -from ....indy.presentation_preview import PRESENTATION_PREVIEW +from ....indy.pres_preview import PRESENTATION_PREVIEW from ...message_types import ATTACH_DECO_IDS, PRESENTATION diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py index d2ec6eac51..d5465b2e9d 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_proposal.py @@ -2,10 +2,10 @@ from .....didcomm_prefix import DIDCommPrefix -from ....indy.presentation_preview import ( +from ....indy.pres_preview import ( IndyPresAttrSpec, IndyPresPredSpec, - IndyPresentationPreview, + IndyPresPreview, PRESENTATION_PREVIEW, ) @@ -16,7 +16,7 @@ S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" CD_ID = f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID}:tag1" -PRES_PREVIEW = IndyPresentationPreview( +PRES_PREVIEW = IndyPresPreview( attributes=[ IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), IndyPresAttrSpec( diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py index 63d560d6a7..e6dee6207b 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation_request.py @@ -7,7 +7,7 @@ from .....didcomm_prefix import DIDCommPrefix -from ....indy.presentation_preview import PRESENTATION_PREVIEW +from ....indy.pres_preview import PRESENTATION_PREVIEW from ...message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST diff --git a/aries_cloudagent/protocols/present_proof/v1_0/routes.py b/aries_cloudagent/protocols/present_proof/v1_0/routes.py index 792bfaaf33..c8bed77f98 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/routes.py @@ -39,12 +39,8 @@ from ...problem_report.v1_0 import internal_error from ...problem_report.v1_0.message import ProblemReport -from ..indy.presentation import IndyProofReqNonRevokedSchema -from ..indy.presentation_preview import ( - IndyPresentationPreview, - IndyPresentationPreviewSchema, -) -from ..indy.proof_request import IndyProofRequestSchema +from ..indy.proof_request import IndyProofReqNonRevokedSchema, IndyProofRequestSchema +from ..indy.pres_preview import IndyPresPreview, IndyPresPreviewSchema from .manager import PresentationManager from .message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST, SPEC_URI @@ -116,7 +112,7 @@ class V10PresentationProposalRequestSchema(AdminAPIMessageTracingSchema): description="Human-readable comment", required=False, allow_none=True ) presentation_proposal = fields.Nested( - IndyPresentationPreviewSchema(), + IndyPresPreviewSchema(), required=True, ) auto_present = fields.Boolean( @@ -497,7 +493,7 @@ async def presentation_exchange_send_proposal(request: web.BaseRequest): connection_record = await ConnRecord.retrieve_by_id(session, connection_id) presentation_proposal_message = PresentationProposal( comment=comment, - presentation_proposal=IndyPresentationPreview.deserialize( + presentation_proposal=IndyPresPreview.deserialize( presentation_preview ), ) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py index 2281137851..8772cac8ec 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py @@ -19,11 +19,7 @@ from ....didcomm_prefix import DIDCommPrefix from ...indy.xform import indy_proof_req_preview2indy_requested_creds -from ...indy.presentation_preview import ( - IndyPresAttrSpec, - IndyPresentationPreview, - IndyPresPredSpec, -) +from ...indy.pres_preview import IndyPresAttrSpec, IndyPresPreview, IndyPresPredSpec from .. import manager as test_module from ..manager import PresentationManager, PresentationManagerError @@ -39,7 +35,7 @@ S_ID = f"{ISSUER_DID}:2:vidya:1.0" CD_ID = f"{ISSUER_DID}:3:CL:{S_ID}:tag1" RR_ID = f"{ISSUER_DID}:4:{CD_ID}:CL_ACCUM:0" -PRES_PREVIEW = IndyPresentationPreview( +PRES_PREVIEW = IndyPresPreview( attributes=[ IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), IndyPresAttrSpec( @@ -55,7 +51,7 @@ ) ], ) -PRES_PREVIEW_NAMES = IndyPresentationPreview( +PRES_PREVIEW_NAMES = IndyPresPreview( attributes=[ IndyPresAttrSpec( name="player", cred_def_id=CD_ID, value="Richie Knucklez", referent="0" @@ -373,7 +369,7 @@ async def test_create_presentation_proof_req_non_revoc_interval_none(self): assert exchange_out.state == V10PresentationExchange.STATE_PRESENTATION_SENT async def test_create_presentation_self_asserted(self): - PRES_PREVIEW_SELFIE = IndyPresentationPreview( + PRES_PREVIEW_SELFIE = IndyPresPreview( attributes=[ IndyPresAttrSpec(name="player", value="Richie Knucklez"), IndyPresAttrSpec( diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py index 05a99a5b78..e71690b64f 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_routes.py @@ -10,7 +10,7 @@ from .....ledger.base import BaseLedger from .....storage.error import StorageNotFoundError -from ...indy.presentation import IndyProofReqAttrSpecSchema +from ...indy.proof_request import IndyProofReqAttrSpecSchema from .. import routes as test_module @@ -333,7 +333,7 @@ async def test_presentation_exchange_send_proposal(self): ) as mock_presentation_manager, async_mock.patch( ( "aries_cloudagent.protocols.present_proof.indy." - "presentation_preview.IndyPresentationPreview" + "pres_preview.IndyPresPreview" ), autospec=True, ) as mock_preview: @@ -384,7 +384,7 @@ async def test_presentation_exchange_send_proposal_not_ready(self): ) as mock_connection_record, async_mock.patch( ( "aries_cloudagent.protocols.present_proof.indy." - "presentation_preview.IndyPresentationPreview" + "pres_preview.IndyPresPreview" ), autospec=True, ) as mock_preview, async_mock.patch( @@ -416,7 +416,7 @@ async def test_presentation_exchange_send_proposal_x(self): ) as mock_presentation_manager, async_mock.patch( ( "aries_cloudagent.protocols.present_proof.indy." - "presentation_preview.IndyPresentationPreview" + "pres_preview.IndyPresPreview" ), autospec=True, ) as mock_preview: @@ -443,7 +443,7 @@ async def test_presentation_exchange_create_request(self): ) as mock_presentation_manager, async_mock.patch( ( "aries_cloudagent.protocols.present_proof.indy." - "presentation_preview.IndyPresentationPreview" + "pres_preview.IndyPresPreview" ), autospec=True, ) as mock_preview, async_mock.patch.object( @@ -500,7 +500,7 @@ async def test_presentation_exchange_create_request_x(self): ) as mock_presentation_manager, async_mock.patch( ( "aries_cloudagent.protocols.present_proof.indy." - "presentation_preview.IndyPresentationPreview" + "pres_preview.IndyPresPreview" ), autospec=True, ) as mock_preview, async_mock.patch.object( @@ -557,7 +557,7 @@ async def test_presentation_exchange_send_free_request(self): ) as mock_generate_nonce, async_mock.patch( ( "aries_cloudagent.protocols.present_proof.indy." - "presentation_preview.IndyPresentationPreview" + "pres_preview.IndyPresPreview" ), autospec=True, ) as mock_preview, async_mock.patch.object( @@ -661,7 +661,7 @@ async def test_presentation_exchange_send_free_request_x(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "IndyPresentationPreview", autospec=True + test_module, "IndyPresPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -729,7 +729,7 @@ async def test_presentation_exchange_send_bound_request(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "IndyPresentationPreview", autospec=True + test_module, "IndyPresPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -789,7 +789,7 @@ async def test_presentation_exchange_send_bound_request_not_found(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "IndyPresentationPreview", autospec=True + test_module, "IndyPresPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -834,7 +834,7 @@ async def test_presentation_exchange_send_bound_request_not_ready(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "IndyPresentationPreview", autospec=True + test_module, "IndyPresPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -919,7 +919,7 @@ async def test_presentation_exchange_send_bound_request_x(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "IndyPresentationPreview", autospec=True + test_module, "IndyPresPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -994,7 +994,7 @@ async def test_presentation_exchange_send_presentation(self): "aries_cloudagent.protocols.present_proof.v1_0.manager.PresentationManager", autospec=True, ) as mock_presentation_manager, async_mock.patch.object( - test_module, "IndyPresentationPreview", autospec=True + test_module, "IndyPresPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch( ( "aries_cloudagent.protocols.present_proof.v1_0." @@ -1065,7 +1065,7 @@ async def test_presentation_exchange_send_presentation_not_found(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "IndyPresentationPreview", autospec=True + test_module, "IndyPresPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -1110,7 +1110,7 @@ async def test_presentation_exchange_send_presentation_not_ready(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "IndyPresentationPreview", autospec=True + test_module, "IndyPresPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -1186,7 +1186,7 @@ async def test_presentation_exchange_send_presentation_x(self): "aries_cloudagent.indy.util.generate_pr_nonce", autospec=True, ) as mock_generate_nonce, async_mock.patch.object( - test_module, "IndyPresentationPreview", autospec=True + test_module, "IndyPresPreview", autospec=True ) as mock_presentation_proposal, async_mock.patch.object( test_module, "PresentationRequest", autospec=True ) as mock_presentation_request, async_mock.patch( @@ -1244,7 +1244,7 @@ async def test_presentation_exchange_verify_presentation(self): ) as mock_generate_nonce, async_mock.patch( ( "aries_cloudagent.protocols.present_proof.indy." - "presentation_preview.IndyPresentationPreview" + "pres_preview.IndyPresPreview" ), autospec=True, ) as mock_preview, async_mock.patch.object( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py index f91995a3be..a98d8d9bfe 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py @@ -10,9 +10,11 @@ from .....storage.error import StorageNotFoundError from .....utils.tracing import trace_event, get_timer -from ...util.indy import indy_proof_req_preview2indy_requested_creds +from ...indy.pres_preview import IndyPresPreview +from ...indy.xform import indy_proof_req_preview2indy_requested_creds from ..manager import V20PresManager +from ..messages.pres_format import V20PresFormat from ..messages.pres_proposal import V20PresProposal from ..messages.pres_request import V20PresRequest from ..models.pres_exchange import V20PresExRecord @@ -44,8 +46,6 @@ async def handle(self, context: RequestContext, responder: BaseResponder): pres_manager = V20PresManager(context.profile) - indy_proof_request = context.message.indy_proof_request(0) - # Get pres ex record (holder initiated via proposal) # or create it (verifier sent request first) try: @@ -68,8 +68,7 @@ async def handle(self, context: RequestContext, responder: BaseResponder): trace=(context.message._trace is not None), ) - pres_ex_record.pres_request = indy_proof_request - pres_ex_record = await pres_manager.receive_request(pres_ex_record) + pres_ex_record = await pres_manager.receive_pres_request(pres_ex_record) r_time = trace_event( context.settings, @@ -81,11 +80,14 @@ async def handle(self, context: RequestContext, responder: BaseResponder): # If auto_present is enabled, respond immediately with presentation if pres_ex_record.auto_present: pres_preview = None + indy_proof_request = context.message.attachment(V20PresFormat.Format.INDY) if pres_ex_record.pres_proposal: exchange_pres_proposal = V20PresProposal.deserialize( pres_ex_record.pres_proposal ) - pres_preview = exchange_pres_proposal.attachment() + pres_preview = IndyPresPreview.deserialize( + exchange_pres_proposal.attachment(V20PresFormat.Format.INDY) + ) try: req_creds = await indy_proof_req_preview2indy_requested_creds( @@ -97,11 +99,12 @@ async def handle(self, context: RequestContext, responder: BaseResponder): self._logger.warning(f"{err}") return - (pres_ex_record, pres_message,) = await pres_manager.create_pres( + (pres_ex_record, pres_message) = await pres_manager.create_pres( pres_ex_record=pres_ex_record, requested_credentials=req_creds, - comment="auto-presented for proof request nonce={}".format( - indy_proof_request["nonce"] + comment=( + "auto-presented for proof request nonce " + f"{indy_proof_request['nonce']}" ), ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py new file mode 100644 index 0000000000..2db6e41fe4 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py @@ -0,0 +1,651 @@ +from asynctest import mock as async_mock, TestCase as AsyncTestCase + +from ......messaging.decorators.attach_decorator import AttachDecorator +from ......messaging.request_context import RequestContext +from ......messaging.responder import MockResponder +from ......storage.error import StorageNotFoundError +from ......transport.inbound.receipt import MessageReceipt + +from .....didcomm_prefix import DIDCommPrefix + +from ....indy.pres_preview import IndyPresAttrSpec, IndyPresPreview + +from ...messages.pres_format import V20PresFormat +from ...messages.pres_proposal import V20PresProposal +from ...messages.pres_request import V20PresRequest + +from .. import pres_request_handler as test_module + +S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" +CD_ID = f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID}:tag1" +INDY_PRES_PREVIEW = IndyPresPreview( + attributes=[ + IndyPresAttrSpec(name="favourite", cred_def_id=CD_ID, value="potato"), + IndyPresAttrSpec( + name="icon", + cred_def_id=CD_ID, + mime_type="image/bmp", + value="cG90YXRv", + ), + ], + predicates=[], +) + +INDY_PROOF_REQ = { + "name": "proof-request", + "version": "1.0", + "nonce": "1234567890", + "requested_attributes": { + "0_favourite_uuid": { + "name": "favourite", + "restrictions": [ + { + "cred_def_id": CD_ID, + } + ], + }, + "1_icon_uuid": { + "name": "icon", + "restrictions": [ + { + "cred_def_id": CD_ID, + } + ], + }, + }, + "requested_predicates": {}, +} +INDY_PROOF_REQ_PRED = { + "name": "proof-request", + "version": "1.0", + "nonce": "1234567890", + "requested_attributes": {}, + "requested_predicates": { + "0_score_GE_uuid": { + "name": "score", + "p_type": ">=", + "p_value": 1000000, + "restrictions": [ + { + "cred_def_id": CD_ID, + } + ], + } + }, +} + + +class TestPresRequestHandler(AsyncTestCase): + async def test_called(self): + request_context = RequestContext.test_context() + request_context.connection_record = async_mock.MagicMock() + request_context.connection_record.connection_id = "dummy" + request_context.message_receipt = MessageReceipt() + request_context.message = V20PresRequest() + request_context.message.attachment = async_mock.MagicMock( + return_value=async_mock.MagicMock() + ) + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec: + + mock_pres_ex_rec.retrieve_by_tag_filter = async_mock.CoroutineMock( + return_value=mock_pres_ex_rec + ) + + mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock( + return_value=async_mock.MagicMock(auto_present=False) + ) + + request_context.connection_ready = True + handler_inst = test_module.V20PresRequestHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + + mock_pres_mgr.return_value.receive_pres_request.assert_called_once_with( + mock_pres_ex_rec + ) + assert not responder.messages + + async def test_called_not_found(self): + request_context = RequestContext.test_context() + request_context.connection_record = async_mock.MagicMock() + request_context.connection_record.connection_id = "dummy" + request_context.message_receipt = MessageReceipt() + request_context.message = V20PresRequest() + request_context.message.attachment = async_mock.MagicMock( + return_value=async_mock.MagicMock() + ) + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec: + + mock_pres_ex_rec.retrieve_by_tag_filter = async_mock.CoroutineMock( + side_effect=StorageNotFoundError + ) + mock_pres_ex_rec.return_value = mock_pres_ex_rec + + mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock( + return_value=async_mock.MagicMock(auto_present=False) + ) + + request_context.connection_ready = True + handler_inst = test_module.V20PresRequestHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + + mock_pres_mgr.return_value.receive_pres_request.assert_called_once_with( + mock_pres_ex_rec + ) + assert not responder.messages + + async def test_called_auto_present(self): + request_context = RequestContext.test_context() + request_context.connection_record = async_mock.MagicMock() + request_context.connection_record.connection_id = "dummy" + request_context.message = V20PresRequest() + request_context.message.attachment = async_mock.MagicMock( + return_value=INDY_PROOF_REQ + ) + request_context.message_receipt = MessageReceipt() + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + proposal_attach=[ + AttachDecorator.data_base64(INDY_PRES_PREVIEW.serialize(), ident="indy") + ], + ) + + px_rec_instance = test_module.V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + auto_present=True, + ) + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module, "IndyHolder", autospec=True + ) as mock_holder: + + mock_holder.get_credentials_for_presentation_request_by_referent = ( + async_mock.CoroutineMock( + return_value=[{"cred_info": {"referent": "dummy"}}] + ) + ) + request_context.inject = async_mock.MagicMock(return_value=mock_holder) + + mock_pres_ex_rec_cls.return_value = px_rec_instance + mock_pres_ex_rec_cls.retrieve_by_tag_filter = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + + mock_pres_mgr.return_value.create_pres = async_mock.CoroutineMock( + return_value=(px_rec_instance, "pres message") + ) + request_context.connection_ready = True + handler_inst = test_module.V20PresRequestHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_pres_mgr.return_value.create_pres.assert_called_once() + + mock_pres_mgr.return_value.receive_pres_request.assert_called_once_with( + px_rec_instance + ) + messages = responder.messages + assert len(messages) == 1 + (result, target) = messages[0] + assert result == "pres message" + assert target == {} + + async def test_called_auto_present_no_preview(self): + request_context = RequestContext.test_context() + request_context.connection_record = async_mock.MagicMock() + request_context.connection_record.connection_id = "dummy" + request_context.message = V20PresRequest() + request_context.message.attachment = async_mock.MagicMock( + return_value=INDY_PROOF_REQ + ) + request_context.message_receipt = MessageReceipt() + px_rec_instance = test_module.V20PresExRecord(auto_present=True) + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module, "IndyHolder", autospec=True + ) as mock_holder: + + mock_holder.get_credentials_for_presentation_request_by_referent = ( + async_mock.CoroutineMock( + return_value=[ + {"cred_info": {"referent": "dummy-0"}}, + {"cred_info": {"referent": "dummy-1"}}, + ] + ) + ) + request_context.inject = async_mock.MagicMock(return_value=mock_holder) + + mock_pres_ex_rec_cls.return_value = px_rec_instance + mock_pres_ex_rec_cls.retrieve_by_tag_filter = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + + mock_pres_mgr.return_value.create_pres = async_mock.CoroutineMock( + return_value=(px_rec_instance, "pres message") + ) + request_context.connection_ready = True + handler_inst = test_module.V20PresRequestHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_pres_mgr.return_value.create_pres.assert_called_once() + + mock_pres_mgr.return_value.receive_pres_request.assert_called_once_with( + px_rec_instance + ) + messages = responder.messages + assert len(messages) == 1 + (result, target) = messages[0] + assert result == "pres message" + assert target == {} + + async def test_called_auto_present_pred_no_match(self): + request_context = RequestContext.test_context() + request_context.connection_record = async_mock.MagicMock() + request_context.connection_record.connection_id = "dummy" + request_context.message = V20PresRequest() + request_context.message.attachment = async_mock.MagicMock( + return_value=INDY_PROOF_REQ_PRED + ) + request_context.message_receipt = MessageReceipt() + px_rec_instance = test_module.V20PresExRecord(auto_present=True) + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module, "IndyHolder", autospec=True + ) as mock_holder: + + mock_holder.get_credentials_for_presentation_request_by_referent = ( + async_mock.CoroutineMock(return_value=[]) + ) + request_context.inject = async_mock.MagicMock(return_value=mock_holder) + + mock_pres_ex_rec_cls.return_value = px_rec_instance + mock_pres_ex_rec_cls.retrieve_by_tag_filter = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + + mock_pres_mgr.return_value.create_pres = async_mock.CoroutineMock( + return_value=(px_rec_instance, "pres message") + ) + request_context.connection_ready = True + handler_inst = test_module.V20PresRequestHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_pres_mgr.return_value.create_pres.assert_not_called() + + mock_pres_mgr.return_value.receive_pres_request.assert_called_once_with( + px_rec_instance + ) + assert not responder.messages + + async def test_called_auto_present_pred_single_match(self): + request_context = RequestContext.test_context() + request_context.connection_record = async_mock.MagicMock() + request_context.connection_record.connection_id = "dummy" + request_context.message = V20PresRequest() + request_context.message.attachment = async_mock.MagicMock( + return_value=INDY_PROOF_REQ_PRED + ) + request_context.message_receipt = MessageReceipt() + px_rec_instance = test_module.V20PresExRecord(auto_present=True) + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module, "IndyHolder", autospec=True + ) as mock_holder: + + mock_holder.get_credentials_for_presentation_request_by_referent = ( + async_mock.CoroutineMock( + return_value=[{"cred_info": {"referent": "dummy-0"}}] + ) + ) + request_context.inject = async_mock.MagicMock(return_value=mock_holder) + + mock_pres_ex_rec_cls.return_value = px_rec_instance + mock_pres_ex_rec_cls.retrieve_by_tag_filter = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + + mock_pres_mgr.return_value.create_pres = async_mock.CoroutineMock( + return_value=(px_rec_instance, "pres message") + ) + request_context.connection_ready = True + handler_inst = test_module.V20PresRequestHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_pres_mgr.return_value.create_pres.assert_called_once() + + mock_pres_mgr.return_value.receive_pres_request.assert_called_once_with( + px_rec_instance + ) + messages = responder.messages + assert len(messages) == 1 + (result, target) = messages[0] + assert result == "pres message" + assert target == {} + + async def test_called_auto_present_pred_multi_match(self): + request_context = RequestContext.test_context() + request_context.connection_record = async_mock.MagicMock() + request_context.connection_record.connection_id = "dummy" + request_context.message = V20PresRequest() + request_context.message.attachment = async_mock.MagicMock( + return_value=INDY_PROOF_REQ_PRED + ) + request_context.message_receipt = MessageReceipt() + px_rec_instance = test_module.V20PresExRecord(auto_present=True) + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module, "IndyHolder", autospec=True + ) as mock_holder: + + mock_holder.get_credentials_for_presentation_request_by_referent = ( + async_mock.CoroutineMock( + return_value=[ + {"cred_info": {"referent": "dummy-0"}}, + {"cred_info": {"referent": "dummy-1"}}, + ] + ) + ) + request_context.inject = async_mock.MagicMock(return_value=mock_holder) + + mock_pres_ex_rec_cls.return_value = px_rec_instance + mock_pres_ex_rec_cls.retrieve_by_tag_filter = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + + mock_pres_mgr.return_value.create_pres = async_mock.CoroutineMock( + return_value=(px_rec_instance, "pres message") + ) + request_context.connection_ready = True + handler_inst = test_module.V20PresRequestHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_pres_mgr.return_value.create_pres.assert_called_once() + + mock_pres_mgr.return_value.receive_pres_request.assert_called_once_with( + px_rec_instance + ) + messages = responder.messages + assert len(messages) == 1 + (result, target) = messages[0] + assert result == "pres message" + assert target == {} + + async def test_called_auto_present_multi_cred_match_reft(self): + request_context = RequestContext.test_context() + request_context.connection_record = async_mock.MagicMock() + request_context.connection_record.connection_id = "dummy" + request_context.message = V20PresRequest() + request_context.message.attachment = async_mock.MagicMock( + return_value=INDY_PROOF_REQ + ) + request_context.message_receipt = MessageReceipt() + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + proposal_attach=[ + AttachDecorator.data_base64(INDY_PRES_PREVIEW.serialize(), ident="indy") + ], + ) + + px_rec_instance = test_module.V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + auto_present=True, + ) + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module, "IndyHolder", autospec=True + ) as mock_holder: + + mock_holder.get_credentials_for_presentation_request_by_referent = ( + async_mock.CoroutineMock( + return_value=[ + { + "cred_info": { + "referent": "dummy-0", + "cred_def_id": CD_ID, + "attrs": { + "ident": "zero", + "favourite": "potato", + "icon": "cG90YXRv", + }, + } + }, + { + "cred_info": { + "referent": "dummy-1", + "cred_def_id": CD_ID, + "attrs": { + "ident": "one", + "favourite": "spud", + "icon": "c3B1ZA==", + }, + } + }, + { + "cred_info": { + "referent": "dummy-2", + "cred_def_id": CD_ID, + "attrs": { + "ident": "two", + "favourite": "patate", + "icon": "cGF0YXRl", + }, + } + }, + ] + ) + ) + request_context.inject = async_mock.MagicMock(return_value=mock_holder) + + mock_pres_ex_rec_cls.return_value = px_rec_instance + mock_pres_ex_rec_cls.retrieve_by_tag_filter = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + + mock_pres_mgr.return_value.create_pres = async_mock.CoroutineMock( + return_value=(px_rec_instance, "pres message") + ) + request_context.connection_ready = True + handler_inst = test_module.V20PresRequestHandler() + responder = MockResponder() + await handler_inst.handle(request_context, responder) + mock_pres_mgr.return_value.create_pres.assert_called_once() + + mock_pres_mgr.return_value.receive_pres_request.assert_called_once_with( + px_rec_instance + ) + messages = responder.messages + assert len(messages) == 1 + (result, target) = messages[0] + assert result == "pres message" + assert target == {} + + async def test_called_auto_present_bait_and_switch(self): + request_context = RequestContext.test_context() + request_context.connection_record = async_mock.MagicMock() + request_context.connection_record.connection_id = "dummy" + request_context.message = V20PresRequest() + request_context.message.attachment = async_mock.MagicMock( + return_value={ + "name": "proof-request", + "version": "1.0", + "nonce": "1234567890", + "requested_attributes": { + "0_favourite_uuid": { + "name": "favourite", + "restrictions": [ + { + "cred_def_id": CD_ID, + } + ], + } + }, + "requested_predicates": {}, + } + ) + request_context.message_receipt = MessageReceipt() + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + proposal_attach=[ + AttachDecorator.data_base64(INDY_PRES_PREVIEW.serialize(), ident="indy") + ], + ) + px_rec_instance = test_module.V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + auto_present=True, + ) + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module, "IndyHolder", autospec=True + ) as mock_holder: + + by_reft = async_mock.CoroutineMock( + return_value=[ + { + "cred_info": { + "referent": "dummy-0", + "cred_def_id": CD_ID, + "attrs": { + "ident": "zero", + "favourite": "yam", + "icon": "eWFt", + }, + } + }, + { + "cred_info": { + "referent": "dummy-1", + "cred_def_id": CD_ID, + "attrs": { + "ident": "one", + "favourite": "turnip", + "icon": "dHVybmlw", + }, + } + }, + { + "cred_info": { + "referent": "dummy-2", + "cred_def_id": CD_ID, + "attrs": { + "ident": "two", + "favourite": "the idea of a potato but not a potato", + "icon": ( + "dGhlIGlkZWEgb2YgYSBwb3RhdG" + "8gYnV0IG5vdCBhIHBvdGF0bw==" + ), + }, + } + }, + ] + ) + mock_holder.get_credentials_for_presentation_request_by_referent = by_reft + request_context.inject = async_mock.MagicMock(return_value=mock_holder) + + mock_pres_ex_rec_cls.return_value = px_rec_instance + mock_pres_ex_rec_cls.retrieve_by_tag_filter = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock( + return_value=px_rec_instance + ) + + mock_pres_mgr.return_value.create_pres = async_mock.CoroutineMock( + return_value=(px_rec_instance, "pres message") + ) + request_context.connection_ready = True + handler_inst = test_module.V20PresRequestHandler() + responder = MockResponder() + + await handler_inst.handle(request_context, responder) + mock_pres_mgr.return_value.create_pres.assert_not_called() + + mock_pres_mgr.return_value.receive_pres_request.assert_called_once_with( + px_rec_instance + ) + assert not responder.messages + + async def test_called_not_ready(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr: + mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock() + request_context.message = V20PresRequest() + request_context.connection_ready = False + handler_inst = test_module.V20PresRequestHandler() + responder = MockResponder() + with self.assertRaises(test_module.HandlerException): + await handler_inst.handle(request_context, responder) + + assert not responder.messages diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index 30d3e2e175..d95845888f 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -15,7 +15,7 @@ from ....revocation.models.revocation_registry import RevocationRegistry from ....storage.error import StorageNotFoundError -from ..indy.presentation_preview import IndyPresentationPreview +from ..indy.pres_preview import IndyPresPreview from ..indy.xform import indy_proof_req2non_revoc_intervals from .models.pres_exchange import V20PresExRecord @@ -24,7 +24,6 @@ from .messages.pres_proposal import V20PresProposal from .messages.pres_request import V20PresRequest from .messages.pres import V20Pres -from .message_types import PRES_20, PRES_20_REQUEST LOGGER = logging.getLogger(__name__) @@ -132,9 +131,10 @@ async def create_bound_request( A tuple (updated presentation exchange record, presentation request message) """ - # TODO format finesse; take #0, assert hl-indy, and run with it? - pres_preview = IndyPresentationPreview.deserialize( - V20PresProposal.deserialize(pres_ex_record.pres_proposal).attachment() + pres_preview = IndyPresPreview.deserialize( + V20PresProposal.deserialize(pres_ex_record.pres_proposal).attachment( + V20PresFormat.Format.INDY + ) ) indy_proof_request = await pres_preview.indy_proof_request( @@ -204,7 +204,7 @@ async def create_exchange_for_request( return pres_ex_record - async def receive_request(self, pres_ex_record: V20PresExRecord): + async def receive_pres_request(self, pres_ex_record: V20PresExRecord): """ Receive a presentation request. @@ -273,7 +273,7 @@ async def create_pres( requested_referents = {} pres_request = V20PresRequest.deserialize( pres_ex_record.pres_request - ).attachment() # TODO format finesse + ).attachment(V20PresFormat.Format.INDY) non_revoc_intervals = indy_proof_req2non_revoc_intervals(pres_request) attr_creds = requested_credentials.get("requested_attributes", {}) req_attrs = pres_request.get("requested_attributes", {}) @@ -403,7 +403,7 @@ async def create_pres( "timestamp" ] = precis["timestamp"] - indy_proof_json = await holder.create_pres( + indy_proof_json = await holder.create_presentation( pres_request, requested_credentials, schemas, @@ -467,10 +467,10 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): # Check for bait-and-switch in presented attribute values vs. proposal if pres_ex_record.pres_proposal: - pres_preview = IndyPresentationPreview.deserialize( + pres_preview = IndyPresPreview.deserialize( V20PresProposal.deserialize( pres_ex_record.pres_proposal - ).attachment() # TODO format finesse + ).attachment(V20PresFormat.Format.INDY) ) proof_req = V20PresRequest.deserialize( pres_ex_record.pres_request @@ -510,10 +510,9 @@ async def verify_pres(self, pres_ex_record: V20PresExRecord): presentation exchange record, updated """ - # TODO: format finesse indy_proof_request = V20PresRequest.deserialize( pres_ex_record.pres_request - ).attachment() + ).attachment(V20PresFormat.Format.INDY) indy_proof = V20Pres.deserialize(pres_ex_record.pres).attachment() schema_ids = [] @@ -578,7 +577,7 @@ async def verify_pres(self, pres_ex_record: V20PresExRecord): rev_reg_entries, ) ) - pres_ex_record.state = V20PresExRecord.STATE_VERIFIED + pres_ex_record.state = V20PresExRecord.STATE_DONE async with self._profile.session() as session: await pres_ex_record.save(session, reason="verify v2.0 presentation") @@ -628,7 +627,7 @@ async def receive_pres_ack(self, message: V20PresAck, conn_record: ConnRecord): {"connection_id": conn_record.connection_id}, ) - pres_ex_record.state = V20PresExRecord.STATE_PRESENTATION_ACKED + pres_ex_record.state = V20PresExRecord.STATE_DONE await pres_ex_record.save(session, reason="receive v2.0 presentation ack") diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py index b9e09983e2..151e810fe8 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py @@ -60,10 +60,9 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: """ return ( - (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( - self.formats, - self.presentations_attach, - ) + ( + fmt or V20PresFormat.Format.get(self.formats[0].format) + ).get_attachment_data(self.formats, self.presentations_attach) if self.formats else None ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py index 35c9a5c909..3bda67b719 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -12,7 +12,7 @@ from .....messaging.models.base import BaseModel, BaseModelSchema from .....messaging.valid import UUIDFour -from ...indy.presentation_preview import IndyPresentationPreviewSchema +from ...indy.pres_preview import IndyPresPreviewSchema from ...indy.proof_request import IndyProofRequestSchema FormatSpec = namedtuple("FormatSpec", "aries aka") # Aries RFC value, further monikers @@ -66,7 +66,7 @@ def aka(self) -> str: def validate_proposal_attach(self, data: Mapping): """Raise ValidationError for wrong proposal~attach content.""" if self is V20PresFormat.Format.INDY: - IndyPresentationPreviewSchema().load(data) + IndyPresPreviewSchema().load(data) def validate_request_attach(self, data: Mapping): """Raise ValidationError for wrong request_presentations~attach content.""" diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py index 639f3a4df4..a581f82027 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -60,10 +60,9 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: """ return ( - (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( - self.formats, - self.proposal_attach, - ) + ( + fmt or V20PresFormat.Format.get(self.formats[0].format) + ).get_attachment_data(self.formats, self.proposal_attach) if self.formats else None ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py index 460ec1d196..2d2a10c26a 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py @@ -64,10 +64,9 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: """ return ( - (fmt or V20PresFormat.Format.get(self.formats[0])).get_attachment_data( - self.formats, - self.request_presentations_attach, - ) + ( + fmt or V20PresFormat.Format.get(self.formats[0].format) + ).get_attachment_data(self.formats, self.request_presentations_attach) if self.formats else None ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py index a7c9fb2a53..4896b54ce5 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py @@ -10,7 +10,7 @@ from .....didcomm_prefix import DIDCommPrefix -from ....indy.presentation_preview import PRESENTATION_PREVIEW +from ....indy.pres_preview import PRESENTATION_PREVIEW from ...message_types import PRES_20 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py index 1b619cc095..88c54e38ca 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py @@ -4,18 +4,14 @@ from ......messaging.decorators.attach_decorator import AttachDecorator -from ....indy.presentation_preview import ( - IndyPresAttrSpec, - IndyPresentationPreview, - IndyPresPredSpec, -) +from ....indy.pres_preview import IndyPresAttrSpec, IndyPresPreview, IndyPresPredSpec from ..pres_format import V20PresFormat S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" CD_ID = f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID}:tag1" -PRES_PREVIEW = IndyPresentationPreview( +PRES_PREVIEW = IndyPresPreview( attributes=[ IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), IndyPresAttrSpec( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py index bd5b5dc1b0..2d552b6be5 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py @@ -7,10 +7,10 @@ from .....didcomm_prefix import DIDCommPrefix -from ....indy.presentation_preview import ( +from ....indy.pres_preview import ( IndyPresAttrSpec, IndyPresPredSpec, - IndyPresentationPreview, + IndyPresPreview, PRESENTATION_PREVIEW, ) @@ -22,7 +22,7 @@ S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" CD_ID = f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID}:tag1" -PRES_PREVIEW = IndyPresentationPreview( +PRES_PREVIEW = IndyPresPreview( attributes=[ IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), IndyPresAttrSpec( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py index 27c5e0c906..e853240488 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py @@ -10,7 +10,7 @@ from .....didcomm_prefix import DIDCommPrefix -from ....indy.presentation_preview import PRESENTATION_PREVIEW +from ....indy.pres_preview import PRESENTATION_PREVIEW from ...message_types import PRES_20_REQUEST diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py index 5cc99aff41..0ae04b41b7 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py @@ -36,7 +36,7 @@ class Meta: STATE_REQUEST_RECEIVED = "request-received" STATE_PRESENTATION_SENT = "presentation-sent" STATE_PRESENTATION_RECEIVED = "presentation-received" - STATE_VERIFIED = "done" + STATE_DONE = "done" STATE_ABANDONED = "abandoned" def __init__( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/__init__.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py new file mode 100644 index 0000000000..51c7a26b06 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py @@ -0,0 +1,1097 @@ +import json + +from time import time + +from asynctest import TestCase as AsyncTestCase +from asynctest import mock as async_mock + +from .....core.in_memory import InMemoryProfile +from .....indy.holder import IndyHolder +from .....indy.sdk.holder import IndySdkHolder +from .....indy.issuer import IndyIssuer +from .....ledger.base import BaseLedger +from .....messaging.decorators.attach_decorator import AttachDecorator +from .....messaging.request_context import RequestContext +from .....messaging.responder import BaseResponder, MockResponder +from .....storage.error import StorageNotFoundError +from .....indy.verifier import IndyVerifier +from .....indy.sdk.verifier import IndySdkVerifier + +from ....didcomm_prefix import DIDCommPrefix + +from ...indy.xform import indy_proof_req_preview2indy_requested_creds +from ...indy.pres_preview import IndyPresAttrSpec, IndyPresPreview, IndyPresPredSpec + +from .. import manager as test_module +from ..manager import V20PresManager, V20PresManagerError +from ..messages.pres import V20Pres +from ..messages.pres_ack import V20PresAck +from ..messages.pres_format import V20PresFormat +from ..messages.pres_proposal import V20PresProposal +from ..messages.pres_request import V20PresRequest +from ..models.pres_exchange import V20PresExRecord + + +CONN_ID = "connection_id" +ISSUER_DID = "NcYxiDXkpYi6ov5FcYDi1e" +S_ID = f"{ISSUER_DID}:2:vidya:1.0" +CD_ID = f"{ISSUER_DID}:3:CL:{S_ID}:tag1" +RR_ID = f"{ISSUER_DID}:4:{CD_ID}:CL_ACCUM:0" +PRES_PREVIEW = IndyPresPreview( + attributes=[ + IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), + IndyPresAttrSpec( + name="screenCapture", + cred_def_id=CD_ID, + mime_type="image/png", + value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + ), + ], + predicates=[ + IndyPresPredSpec( + name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 + ) + ], +) +PRES_PREVIEW_NAMES = IndyPresPreview( + attributes=[ + IndyPresAttrSpec( + name="player", cred_def_id=CD_ID, value="Richie Knucklez", referent="0" + ), + IndyPresAttrSpec( + name="screenCapture", + cred_def_id=CD_ID, + mime_type="image/png", + value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + referent="0", + ), + ], + predicates=[ + IndyPresPredSpec( + name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 + ) + ], +) +PROOF_REQ_NAME = "name" +PROOF_REQ_VERSION = "1.0" +PROOF_REQ_NONCE = "12345" + +NOW = int(time()) + + +class TestV20PresManager(AsyncTestCase): + async def setUp(self): + self.profile = InMemoryProfile.test_profile() + injector = self.profile.context.injector + + Ledger = async_mock.MagicMock(BaseLedger, autospec=True) + self.ledger = Ledger() + self.ledger.get_schema = async_mock.CoroutineMock( + return_value=async_mock.MagicMock() + ) + self.ledger.get_credential_definition = async_mock.CoroutineMock( + return_value={"value": {"revocation": {"...": "..."}}} + ) + self.ledger.get_revoc_reg_def = async_mock.CoroutineMock( + return_value={ + "ver": "1.0", + "id": RR_ID, + "revocDefType": "CL_ACCUM", + "tag": RR_ID.split(":")[-1], + "credDefId": CD_ID, + "value": { + "IssuanceType": "ISSUANCE_BY_DEFAULT", + "maxCredNum": 1000, + "publicKeys": {"accumKey": {"z": "1 ..."}}, + "tailsHash": "3MLjUFQz9x9n5u9rFu8Ba9C5bo4HNFjkPNc54jZPSNaZ", + "tailsLocation": "http://sample.ca/path", + }, + } + ) + self.ledger.get_revoc_reg_delta = async_mock.CoroutineMock( + return_value=( + { + "ver": "1.0", + "value": {"prevAccum": "1 ...", "accum": "21 ...", "issued": [1]}, + }, + NOW, + ) + ) + self.ledger.get_revoc_reg_entry = async_mock.CoroutineMock( + return_value=( + { + "ver": "1.0", + "value": {"prevAccum": "1 ...", "accum": "21 ...", "issued": [1]}, + }, + NOW, + ) + ) + injector.bind_instance(BaseLedger, self.ledger) + + Holder = async_mock.MagicMock(IndyHolder, autospec=True) + self.holder = Holder() + get_creds = async_mock.CoroutineMock( + return_value=( + { + "cred_info": { + "referent": "dummy_reft", + "attrs": { + "player": "Richie Knucklez", + "screenCapture": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + "highScore": "1234560", + }, + } + }, # leave this comma: return a tuple + ) + ) + self.holder.get_credentials_for_presentation_request_by_referent = get_creds + self.holder.get_credential = async_mock.CoroutineMock( + return_value=json.dumps( + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": RR_ID, + "cred_rev_id": 1, + } + ) + ) + self.holder.create_presentation = async_mock.CoroutineMock(return_value="{}") + self.holder.create_revocation_state = async_mock.CoroutineMock( + return_value=json.dumps( + { + "witness": {"omega": "1 ..."}, + "rev_reg": {"accum": "21 ..."}, + "timestamp": NOW, + } + ) + ) + injector.bind_instance(IndyHolder, self.holder) + + Verifier = async_mock.MagicMock(IndyVerifier, autospec=True) + self.verifier = Verifier() + self.verifier.verify_presentation = async_mock.CoroutineMock( + return_value="true" + ) + injector.bind_instance(IndyVerifier, self.verifier) + + self.manager = V20PresManager(self.profile) + + async def test_record_eq(self): + same = [ + V20PresExRecord( + pres_ex_id="dummy-0", + thread_id="thread-0", + role=V20PresExRecord.ROLE_PROVER, + ) + ] * 2 + diff = [ + V20PresExRecord( + pres_ex_id="dummy-1", + role=V20PresExRecord.ROLE_PROVER, + ), + V20PresExRecord( + pres_ex_id="dummy-0", + thread_id="thread-1", + role=V20PresExRecord.ROLE_PROVER, + ), + V20PresExRecord( + pres_ex_id="dummy-1", + thread_id="thread-0", + role=V20PresExRecord.ROLE_VERIFIER, + ), + ] + + for i in range(len(same) - 1): + for j in range(i, len(same)): + assert same[i] == same[j] + + for i in range(len(diff) - 1): + for j in range(i, len(diff)): + assert diff[i] == diff[j] if i == j else diff[i] != diff[j] + + async def test_create_exchange_for_proposal(self): + proposal = V20PresProposal() + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresProposal, "serialize", autospec=True + ): + px_rec = await self.manager.create_exchange_for_proposal( + CONN_ID, proposal, auto_present=None + ) + save_ex.assert_called_once() + + assert px_rec.thread_id == proposal._thread_id + assert px_rec.initiator == V20PresExRecord.INITIATOR_SELF + assert px_rec.role == V20PresExRecord.ROLE_PROVER + assert px_rec.state == V20PresExRecord.STATE_PROPOSAL_SENT + + async def test_receive_proposal(self): + connection_record = async_mock.MagicMock(connection_id=CONN_ID) + proposal = V20PresProposal() + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex: + px_rec = await self.manager.receive_pres_proposal( + proposal, + connection_record, + ) + save_ex.assert_called_once() + + assert px_rec.state == V20PresExRecord.STATE_PROPOSAL_RECEIVED + + async def test_create_bound_request(self): + comment = "comment" + + proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + proposal_attach=[ + AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="indy") + ], + ) + px_rec = V20PresExRecord( + pres_proposal=proposal.serialize(), + role=V20PresExRecord.ROLE_VERIFIER, + ) + px_rec.save = async_mock.CoroutineMock() + (ret_px_rec, pres_req_msg) = await self.manager.create_bound_request( + pres_ex_record=px_rec, + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + comment=comment, + ) + assert ret_px_rec is px_rec + px_rec.save.assert_called_once() + + async def test_create_exchange_for_request(self): + request = async_mock.MagicMock() + request.indy_proof_request = async_mock.MagicMock() + request._thread_id = "dummy" + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex: + px_rec = await self.manager.create_exchange_for_request(CONN_ID, request) + save_ex.assert_called_once() + + assert px_rec.thread_id == request._thread_id + assert px_rec.initiator == V20PresExRecord.INITIATOR_SELF + assert px_rec.role == V20PresExRecord.ROLE_VERIFIER + assert px_rec.state == V20PresExRecord.STATE_REQUEST_SENT + + async def test_receive_pres_request(self): + px_rec_in = V20PresExRecord() + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex: + px_rec_out = await self.manager.receive_pres_request(px_rec_in) + save_ex.assert_called_once() + + assert px_rec_out.state == V20PresExRecord.STATE_REQUEST_RECEIVED + + async def test_create_pres(self): + indy_proof_req = await PRES_PREVIEW.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + px_rec_in = V20PresExRecord( + pres_request=pres_request.serialize() + ) + more_magic_rr = async_mock.MagicMock( + get_or_fetch_local_tails_path=async_mock.CoroutineMock( + return_value="/tmp/sample/tails/path" + ) + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + test_module, "AttachDecorator", autospec=True + ) as mock_attach_decorator, async_mock.patch.object( + test_module, "RevocationRegistry", autospec=True + ) as mock_rr: + mock_rr.from_definition = async_mock.MagicMock(return_value=more_magic_rr) + + mock_attach_decorator.data_base64 = async_mock.MagicMock( + return_value=mock_attach_decorator + ) + + req_creds = await indy_proof_req_preview2indy_requested_creds( + indy_proof_req, holder=self.holder + ) + assert not req_creds["self_attested_attributes"] + assert len(req_creds["requested_attributes"]) == 2 + assert len(req_creds["requested_predicates"]) == 1 + + (px_rec_out, pres_msg) = await self.manager.create_pres( + px_rec_in, req_creds + ) + save_ex.assert_called_once() + assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT + + async def test_create_pres_proof_req_non_revoc_interval_none(self): + indy_proof_req = await PRES_PREVIEW.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + indy_proof_req["non_revoked"] = None # simulate interop with indy-vcx + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + px_rec_in = V20PresExRecord( + pres_request=pres_request.serialize() + ) + + more_magic_rr = async_mock.MagicMock( + get_or_fetch_local_tails_path=async_mock.CoroutineMock( + return_value="/tmp/sample/tails/path" + ) + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + test_module, "AttachDecorator", autospec=True + ) as mock_attach_decorator, async_mock.patch.object( + test_module, "RevocationRegistry", autospec=True + ) as mock_rr: + mock_rr.from_definition = async_mock.MagicMock(return_value=more_magic_rr) + + mock_attach_decorator.data_base64 = async_mock.MagicMock( + return_value=mock_attach_decorator + ) + + req_creds = await indy_proof_req_preview2indy_requested_creds( + indy_proof_req, holder=self.holder + ) + assert not req_creds["self_attested_attributes"] + assert len(req_creds["requested_attributes"]) == 2 + assert len(req_creds["requested_predicates"]) == 1 + + (px_rec_out, pres_msg) = await self.manager.create_pres( + px_rec_in, req_creds + ) + save_ex.assert_called_once() + assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT + + async def test_create_pres_self_asserted(self): + PRES_PREVIEW_SELFIE = IndyPresPreview( + attributes=[ + IndyPresAttrSpec(name="player", value="Richie Knucklez"), + IndyPresAttrSpec( + name="screenCapture", + mime_type="image/png", + value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + ), + ], + predicates=[ + IndyPresPredSpec( + name="highScore", + cred_def_id=None, + predicate=">=", + threshold=1000000, + ) + ], + ) + indy_proof_req = await PRES_PREVIEW_SELFIE.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + px_rec_in = V20PresExRecord( + pres_request=pres_request.serialize() + ) + + more_magic_rr = async_mock.MagicMock( + get_or_fetch_local_tails_path=async_mock.CoroutineMock( + return_value="/tmp/sample/tails/path" + ) + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + test_module, "AttachDecorator", autospec=True + ) as mock_attach_decorator, async_mock.patch.object( + test_module, "RevocationRegistry", autospec=True + ) as mock_rr: + mock_rr.from_definition = async_mock.MagicMock(return_value=more_magic_rr) + + mock_attach_decorator.data_base64 = async_mock.MagicMock( + return_value=mock_attach_decorator + ) + + req_creds = await indy_proof_req_preview2indy_requested_creds( + indy_proof_req, holder=self.holder + ) + assert len(req_creds["self_attested_attributes"]) == 3 + assert not req_creds["requested_attributes"] + assert not req_creds["requested_predicates"] + + (px_rec_out, pres_msg) = await self.manager.create_pres( + px_rec_in, req_creds + ) + save_ex.assert_called_once() + assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT + + ''' + async def test_create_pres_no_revocation(self): + Ledger = async_mock.MagicMock(BaseLedger, autospec=True) + self.ledger = Ledger() + self.ledger.get_schema = async_mock.CoroutineMock( + return_value=async_mock.MagicMock() + ) + self.ledger.get_credential_definition = async_mock.CoroutineMock( + return_value={"value": {"revocation": None}} + ) + self.profile.context.injector.bind_instance(BaseLedger, self.ledger) + + px_rec_in = V20PresExRecord() + indy_proof_req = await PRES_PREVIEW.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + + px_rec_in.pres_request = indy_proof_req # FIXME + + Holder = async_mock.MagicMock(IndyHolder, autospec=True) + self.holder = Holder() + get_creds = async_mock.CoroutineMock( + return_value=( + { + "cred_info": {"referent": "dummy_reft"}, + "attrs": { + "player": "Richie Knucklez", + "screenCapture": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + "highScore": "1234560", + }, + }, # leave this comma: return a tuple + ) + ) + self.holder.get_credentials_for_presentation_request_by_referent = get_creds + self.holder.get_credential = async_mock.CoroutineMock( + return_value=json.dumps( + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "cred_rev_id": None, + } + ) + ) + self.holder.create_presentation = async_mock.CoroutineMock(return_value="{}") + self.profile.context.injector.bind_instance(IndyHolder, self.holder) + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + test_module, "AttachDecorator", autospec=True + ) as mock_attach_decorator: + + mock_attach_decorator.data_base64 = async_mock.MagicMock( + return_value=mock_attach_decorator + ) + + req_creds = await indy_proof_req_preview2indy_requested_creds( + indy_proof_req, holder=self.holder + ) + + (px_rec_out, pres_msg) = await self.manager.create_pres( + px_rec_in, req_creds + ) + save_ex.assert_called_once() + assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT + + async def test_create_pres_bad_revoc_state(self): + px_rec_in = V20PresExRecord() + indy_proof_req = await PRES_PREVIEW.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + + px_rec_in.pres_request = indy_proof_req # FIXME + + Holder = async_mock.MagicMock(IndyHolder, autospec=True) + self.holder = Holder() + get_creds = async_mock.CoroutineMock( + return_value=( + { + "cred_info": {"referent": "dummy_reft"}, + "attrs": { + "player": "Richie Knucklez", + "screenCapture": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + "highScore": "1234560", + }, + }, # leave this comma: return a tuple + ) + ) + self.holder.get_credentials_for_presentation_request_by_referent = get_creds + + self.holder.get_credential = async_mock.CoroutineMock( + return_value=json.dumps( + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": RR_ID, + "cred_rev_id": 1, + } + ) + ) + self.holder.create_presentation = async_mock.CoroutineMock(return_value="{}") + self.holder.create_revocation_state = async_mock.CoroutineMock( + side_effect=test_module.IndyHolderError("Problem", {"message": "Nope"}) + ) + self.profile.context.injector.bind_instance(IndyHolder, self.holder) + + more_magic_rr = async_mock.MagicMock( + get_or_fetch_local_tails_path=async_mock.CoroutineMock( + return_value="/tmp/sample/tails/path" + ) + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + test_module, "AttachDecorator", autospec=True + ) as mock_attach_decorator, async_mock.patch.object( + test_module, "RevocationRegistry", autospec=True + ) as mock_rr: + mock_rr.from_definition = async_mock.MagicMock(return_value=more_magic_rr) + + mock_attach_decorator.data_base64 = async_mock.MagicMock( + return_value=mock_attach_decorator + ) + + req_creds = await indy_proof_req_preview2indy_requested_creds( + indy_proof_req, holder=self.holder + ) + + with self.assertRaises(test_module.IndyHolderError): + await self.manager.create_pres(px_rec_in, req_creds) + + async def test_create_pres_multi_matching_proposal_creds_names(self): + px_rec_in = V20PresExRecord() + indy_proof_req = await PRES_PREVIEW_NAMES.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + + px_rec_in.pres_request = indy_proof_req # FIXME + + Holder = async_mock.MagicMock(IndyHolder, autospec=True) + self.holder = Holder() + get_creds = async_mock.CoroutineMock( + return_value=( + { + "cred_info": { + "referent": "dummy_reft_0", + "cred_def_id": CD_ID, + "attrs": { + "player": "Richie Knucklez", + "screenCapture": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + "highScore": "1234560", + }, + } + }, + { + "cred_info": { + "referent": "dummy_reft_1", + "cred_def_id": CD_ID, + "attrs": { + "player": "Richie Knucklez", + "screenCapture": "aW1hZ2luZSBhbm90aGVyIHNjcmVlbiBjYXB0dXJl", + "highScore": "1515880", + }, + } + }, + ) + ) + self.holder.get_credentials_for_presentation_request_by_referent = get_creds + self.holder.get_credential = async_mock.CoroutineMock( + return_value=json.dumps( + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": RR_ID, + "cred_rev_id": 1, + } + ) + ) + self.holder.create_presentation = async_mock.CoroutineMock(return_value="{}") + self.holder.create_revocation_state = async_mock.CoroutineMock( + return_value=json.dumps( + { + "witness": {"omega": "1 ..."}, + "rev_reg": {"accum": "21 ..."}, + "timestamp": NOW, + } + ) + ) + self.profile.context.injector.bind_instance(IndyHolder, self.holder) + + more_magic_rr = async_mock.MagicMock( + get_or_fetch_local_tails_path=async_mock.CoroutineMock( + return_value="/tmp/sample/tails/path" + ) + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + test_module, "AttachDecorator", autospec=True + ) as mock_attach_decorator, async_mock.patch.object( + test_module, "RevocationRegistry", autospec=True + ) as mock_rr: + mock_rr.from_definition = async_mock.MagicMock(return_value=more_magic_rr) + + mock_attach_decorator.data_base64 = async_mock.MagicMock( + return_value=mock_attach_decorator + ) + + req_creds = await indy_proof_req_preview2indy_requested_creds( + indy_proof_req, preview=PRES_PREVIEW_NAMES, holder=self.holder + ) + assert not req_creds["self_attested_attributes"] + assert len(req_creds["requested_attributes"]) == 1 + assert len(req_creds["requested_predicates"]) == 1 + + (px_rec_out, pres_msg) = await self.manager.create_pres( + px_rec_in, req_creds + ) + save_ex.assert_called_once() + assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT + + async def test_no_matching_creds_for_proof_req(self): + px_rec_in = V20PresExRecord() + indy_proof_req = await PRES_PREVIEW.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + get_creds = async_mock.CoroutineMock(return_value=()) + self.holder.get_credentials_for_presentation_request_by_referent = get_creds + + with self.assertRaises(ValueError): + await indy_proof_req_preview2indy_requested_creds( + indy_proof_req, holder=self.holder + ) + + get_creds = async_mock.CoroutineMock( + return_value=( + { + "cred_info": {"referent": "dummy_reft"}, + "attrs": { + "player": "Richie Knucklez", + "screenCapture": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + "highScore": "1234560", + }, + }, # leave this comma: return a tuple + ) + ) + self.holder.get_credentials_for_presentation_request_by_referent = get_creds + + async def test_receive_pres(self): + connection_record = async_mock.MagicMock(connection_id=CONN_ID) + + px_rec_dummy = V20PresExRecord( + pres_proposal={ # FIXME + "presentation_proposal": { + "@type": DIDCommPrefix.qualify_current( + "present-proof/1.0/presentation-preview" + ), + "attributes": [ + {"name": "favourite", "cred_def_id": CD_ID, "value": "potato"}, + {"name": "icon", "cred_def_id": CD_ID, "value": "cG90YXRv"}, + ], + "predicates": [], + } + }, + pres_request={ # FIXME + "name": "proof-request", + "version": "1.0", + "nonce": "1234567890", + "requested_attributes": { + "0_favourite_uuid": { + "name": "favourite", + "restrictions": [{"cred_def_id": CD_ID}], + }, + "1_icon_uuid": { + "name": "icon", + "restrictions": [{"cred_def_id": CD_ID}], + }, + }, + }, + presation={ # FIXME + "proof": { + "proofs": [], + "requested_proof": { + "revealed_attrs": { + "0_favourite_uuid": { + "sub_proof_index": 0, + "raw": "potato", + "encoded": "12345678901234567890", + }, + "1_icon_uuid": { + "sub_proof_index": 1, + "raw": "cG90YXRv", + "encoded": "12345678901234567890", + }, + }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {}, + }, + }, + "identifiers": [ + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + }, + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + }, + ], + }, + ) + message = async_mock.MagicMock() + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex, async_mock.patch.object( + self.profile, + "session", + async_mock.MagicMock(return_value=self.profile.session()), + ) as session: + retrieve_ex.side_effect = [ + StorageNotFoundError("no such record"), + px_rec_dummy, + ] + px_rec_out = await self.manager.receive_pres( + message, connection_record + ) + assert retrieve_ex.call_count == 2 + save_ex.assert_called_once() + assert px_rec_out.state == ( + V20PresExRecord.STATE_PRESENTATION_RECEIVED + ) + + async def test_receive_pres_oob(self): + connection_record = async_mock.MagicMock(connection_id=CONN_ID) + + px_rec_dummy = V20PresExRecord( + pres_proposal # FIXME + "presentation_proposal": { + "@type": DIDCommPrefix.qualify_current( + "present-proof/1.0/presentation-preview" + ), + "attributes": [ + {"name": "favourite", "cred_def_id": CD_ID, "value": "potato"}, + {"name": "icon", "cred_def_id": CD_ID, "value": "cG90YXRv"}, + ], + "predicates": [], + } + }, + pres_request={ # FIXME + "name": "proof-request", + "version": "1.0", + "nonce": "1234567890", + "requested_attributes": { + "0_favourite_uuid": { + "name": "favourite", + "restrictions": [{"cred_def_id": CD_ID}], + }, + "1_icon_uuid": { + "name": "icon", + "restrictions": [{"cred_def_id": CD_ID}], + }, + }, + }, + pres={ # FIXME + "proof": { + "proofs": [], + "requested_proof": { + "revealed_attrs": { + "0_favourite_uuid": { + "sub_proof_index": 0, + "raw": "potato", + "encoded": "12345678901234567890", + }, + "1_icon_uuid": { + "sub_proof_index": 1, + "raw": "cG90YXRv", + "encoded": "12345678901234567890", + }, + }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {}, + }, + }, + "identifiers": [ + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + }, + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + }, + ], + }, + ) + message = async_mock.MagicMock() + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex: + retrieve_ex.side_effect = [StorageNotFoundError(), px_rec_dummy] + px_rec_out = await self.manager.receive_pres( + message, connection_record + ) + assert px_rec_out.state == ( + V20PresExRecord.STATE_PRESENTATION_RECEIVED + ) + + async def test_receive_pres_bait_and_switch(self): + connection_record = async_mock.MagicMock(connection_id=CONN_ID) + + px_rec_dummy = V20PresExRecord( + pres_proposal={ # FIXME + "presentation_proposal": { + "@type": DIDCommPrefix.qualify_current( + "present-proof/1.0/presentation-preview" + ), + "attributes": [ + { + "name": "favourite", + "cred_def_id": CD_ID, + "value": "no potato", + }, + {"name": "icon", "cred_def_id": CD_ID, "value": "cG90YXRv"}, + ], + "predicates": [], + } + }, + pres_request={ # FIXME + "name": "proof-request", + "version": "1.0", + "nonce": "1234567890", + "requested_attributes": { + "0_favourite_uuid": { + "name": "favourite", + "restrictions": [{"cred_def_id": CD_ID}], + }, + "1_icon_uuid": { + "name": "icon", + "restrictions": [{"cred_def_id": CD_ID}], + }, + }, + }, + ) + message = async_mock.MagicMock( + indy_proof=async_mock.MagicMock( + return_value={ + "proof": {"proofs": []}, + "requested_proof": { + "revealed_attrs": { + "0_favourite_uuid": { + "sub_proof_index": 0, + "raw": "potato", + "encoded": "12345678901234567890", + }, + "1_icon_uuid": { + "sub_proof_index": 1, + "raw": "cG90YXRv", + "encoded": "23456789012345678901", + }, + }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {}, + }, + "identifiers": [ + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + }, + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + }, + ], + } + ) + ) + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex: + retrieve_ex.return_value = px_rec_dummy + with self.assertRaises(V20PresManagerError): + await self.manager.receive_pres(message, connection_record) + + async def test_receive_pres_connection_less(self): + px_rec_dummy = V20PresExRecord() + message = async_mock.MagicMock() + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex, async_mock.patch.object( + self.profile, + "session", + async_mock.MagicMock(return_value=self.profile.session()), + ) as session: + retrieve_ex.return_value = px_rec_dummy + px_rec_out = await self.manager.receive_pres(message, None) + retrieve_ex.assert_called_once_with( + session.return_value, {"thread_id": message._thread_id}, None + ) + save_ex.assert_called_once() + + assert px_rec_out.state == ( + V20PresExRecord.STATE_PRESENTATION_RECEIVED + ) + + async def test_verify_pres(self): + px_rec_in = V20PresExRecord() + px_rec_in.pres = { # FIXME + "identifiers": [{"schema_id": S_ID, "cred_def_id": CD_ID}] + } + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex: + px_rec_out = await self.manager.verify_pres(px_rec_in) + save_ex.assert_called_once() + + assert px_rec_out.state == (V20PresExRecord.STATE_DONE) + + async def test_verify_pres_with_revocation(self): + px_rec_in = V20PresExRecord() + px_rec_in.pres = { # FIXME + "identifiers": [ + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": RR_ID, + "timestamp": NOW, + }, + { # cover multiple instances of same rev reg + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": RR_ID, + "timestamp": NOW, + }, + ] + } + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex: + px_rec_out = await self.manager.verify_pres(px_rec_in) + save_ex.assert_called_once() + + assert px_rec_out.state == (V20PresExRecord.STATE_DONE) + + async def test_send_pres_ack(self): + px_rec = V20PresExRecord() + + responder = MockResponder() + self.profile.context.injector.bind_instance(BaseResponder, responder) + + await self.manager.send_pres_ack(px_rec) + messages = responder.messages + assert len(messages) == 1 + + async def test_send_pres_ack_no_responder(self): + px_rec = V20PresExRecord() + + self.profile.context.injector.clear_binding(BaseResponder) + await self.manager.send_pres_ack(px_rec) + + async def test_receive_pres_ack(self): + connection_record = async_mock.MagicMock(connection_id=CONN_ID) + + px_rec_dummy = V20PresExRecord() + message = async_mock.MagicMock() + + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex: + retrieve_ex.return_value = px_rec_dummy + px_rec_out = await self.manager.receive_pres_ack( + message, connection_record + ) + save_ex.assert_called_once() + + assert px_rec_out.state == V20PresExRecord.STATE_DONE + ''' From 87c318e25c3cc6c3de69f6db50fb7f8965411186 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 25 Feb 2021 08:09:07 -0500 Subject: [PATCH 085/243] diagnostic hint Signed-off-by: sklump --- aries_cloudagent/protocols/connections/v1_0/manager.py | 3 ++- aries_cloudagent/protocols/didexchange/v1_0/manager.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/aries_cloudagent/protocols/connections/v1_0/manager.py b/aries_cloudagent/protocols/connections/v1_0/manager.py index a5a8cadf89..8b437dd8a4 100644 --- a/aries_cloudagent/protocols/connections/v1_0/manager.py +++ b/aries_cloudagent/protocols/connections/v1_0/manager.py @@ -481,7 +481,8 @@ async def receive_request( except StorageNotFoundError: raise ConnectionManagerError( "No invitation found for pairwise connection " - f"in state {ConnRecord.State.INVITATION.rfc160}" + f"in state {ConnRecord.State.INVITATION.rfc160}: " + "a prior connection request may have updated the connection state" ) invitation = None diff --git a/aries_cloudagent/protocols/didexchange/v1_0/manager.py b/aries_cloudagent/protocols/didexchange/v1_0/manager.py index 2d1e1c0afc..4d3f707378 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/manager.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/manager.py @@ -354,7 +354,8 @@ async def receive_request( if recipient_verkey: raise DIDXManagerError( "No explicit invitation found for pairwise connection " - f"in state {ConnRecord.State.INVITATION.rfc23}" + f"in state {ConnRecord.State.INVITATION.rfc23}: " + "a prior connection request may have updated the connection state" ) if conn_rec: # invitation was explicit From ddb20e440405c38ce2a9fda31a1d49943bf3efd6 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Thu, 25 Feb 2021 06:24:06 -0800 Subject: [PATCH 086/243] Refactor faber to use common code Signed-off-by: Ian Costanzo --- demo/bdd_support/agent_backchannel_client.py | 4 +- demo/runners/agent_container.py | 80 ++--- demo/runners/alice.py | 35 +-- demo/runners/faber.py | 292 +++++-------------- 4 files changed, 125 insertions(+), 286 deletions(-) diff --git a/demo/bdd_support/agent_backchannel_client.py b/demo/bdd_support/agent_backchannel_client.py index 04426938c4..19e20a9b44 100644 --- a/demo/bdd_support/agent_backchannel_client.py +++ b/demo/bdd_support/agent_backchannel_client.py @@ -12,7 +12,7 @@ from time import sleep import uuid -from runners.agent_container import AgentContainer, create_agent_with_args +from runners.agent_container import AgentContainer, create_agent_with_args_list from runners.support.agent import DemoAgent @@ -65,7 +65,7 @@ def async_sleep(delay): # high level aries agent interface ###################################################################### def create_agent_container_with_args(in_args: list): - return run_coroutine_with_args(create_agent_with_args, in_args) + return run_coroutine_with_args(create_agent_with_args_list, in_args) def aries_container_initialize( diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index a0d8e559b0..8036fe7038 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -45,13 +45,15 @@ def __init__( http_port: int, admin_port: int, no_auto: bool = False, + prefix: str = "Aries", + extra_args: list = [], **kwargs, ): super().__init__( ident, http_port, admin_port, - prefix="Aries", + prefix=prefix, extra_args=[] if no_auto else [ @@ -612,51 +614,53 @@ async def agency_admin_POST(self, path, data=None, text=False, params=None) -> d ) -def arg_parser(ident: str = None): +def arg_parser(ident: str = None, port: int=8020): """ Standard command-line arguements. "ident", if specified, refers to one of the standard demo personas - alice, faber, acme or performance. """ - parser = argparse.ArgumentParser(description="Runs an Aries demo agent.") - parser.add_argument( - "--ident", - type=str, - metavar="", - help="Agent identity (label)", - ) + parser = argparse.ArgumentParser(description="Runs a " + (ident or "aries") + " demo agent.") + if not ident: + parser.add_argument( + "--ident", + type=str, + metavar="", + help="Agent identity (label)", + ) + parser.add_argument( + "--public-did", + action="store_true", + help="Create a public DID for the agent", + ) parser.add_argument( "--no-auto", action="store_true", help="Disable auto issuance", ) - parser.add_argument( - "--public-did", - action="store_true", - help="Create a public DID for the agent", - ) parser.add_argument( "-p", "--port", type=int, - default=8020, + default=port, metavar=(""), help="Choose the starting port number to listen on", ) - parser.add_argument( - "--did-exchange", - action="store_true", - help="Use DID-Exchange protocol for connections", - ) - parser.add_argument( - "--revocation", action="store_true", help="Enable credential revocation" - ) - parser.add_argument( - "--tails-server-base-url", - type=str, - metavar=(""), - help="Tals server base url", - ) + if (not ident) or (ident != "alice"): + parser.add_argument( + "--did-exchange", + action="store_true", + help="Use DID-Exchange protocol for connections", + ) + parser.add_argument( + "--revocation", action="store_true", help="Enable credential revocation" + ) + parser.add_argument( + "--tails-server-base-url", + type=str, + metavar=(""), + help="Tals server base url", + ) parser.add_argument( "--timing", action="store_true", help="Enable timing information" ) @@ -681,10 +685,14 @@ def arg_parser(ident: str = None): return parser -async def create_agent_with_args(in_args: list): +async def create_agent_with_args_list(in_args: list): parser = arg_parser() args = parser.parse_args(in_args) + return await create_agent_with_args(args) + + +async def create_agent_with_args(args, ident: str = None): if args.did_exchange and args.mediation: raise Exception( "DID-Exchange connection protocol is not (yet) compatible with mediation" @@ -713,9 +721,10 @@ async def create_agent_with_args(in_args: list): print("Error retrieving ledger genesis transactions") sys.exit(1) + agent_ident = ident if ident else (args.ident if "ident" in args else "Aries") agent = AgentContainer( genesis, - args.ident + ".agent", + agent_ident + ".agent", args.port, no_auto=args.no_auto, revocation=args.revocation, @@ -725,8 +734,8 @@ async def create_agent_with_args(in_args: list): mediation=args.mediation, use_did_exchange=args.did_exchange, wallet_type=args.wallet_type, - public_did=args.public_did, - seed="random" if args.public_did else None, + public_did=args.public_did if "public_did" in args else None, + seed="random" if ("public_did" in args and args.public_did) else None, arg_file=arg_file, ) @@ -746,11 +755,6 @@ async def test_main( ): """Test to startup a couple of agents.""" - genesis = await default_genesis_txns() - if not genesis: - print("Error retrieving ledger genesis transactions") - sys.exit(1) - faber_container = None alice_container = None try: diff --git a/demo/runners/alice.py b/demo/runners/alice.py index 38a59d2d3d..e0e4e2ee33 100644 --- a/demo/runners/alice.py +++ b/demo/runners/alice.py @@ -1,3 +1,4 @@ +import argparse import asyncio import base64 import binascii @@ -11,6 +12,10 @@ sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +from runners.agent_container import ( + arg_parser, + create_agent_with_args, +) from runners.support.agent import ( # noqa:E402 DemoAgent, default_genesis_txns, @@ -117,7 +122,6 @@ async def handle_issue_credential_v2_0_indy(self, message): async def handle_present_proof(self, message): state = message["state"] presentation_exchange_id = message["presentation_exchange_id"] - presentation_request = message["presentation_request"] log_msg( "Presentation: state =", @@ -139,6 +143,7 @@ async def handle_present_proof(self, message): try: # select credentials to provide for the proof + presentation_request = message["presentation_request"] credentials = await self.admin_GET( f"/present-proof/records/{presentation_exchange_id}/credentials" ) @@ -368,33 +373,7 @@ async def main( if __name__ == "__main__": - import argparse - - parser = argparse.ArgumentParser(description="Runs an Alice demo agent.") - parser.add_argument("--no-auto", action="store_true", help="Disable auto issuance") - parser.add_argument( - "-p", - "--port", - type=int, - default=8030, - metavar=(""), - help="Choose the starting port number to listen on", - ) - parser.add_argument( - "--timing", action="store_true", help="Enable timing information" - ) - parser.add_argument( - "--multitenant", action="store_true", help="Enable multitenancy options" - ) - parser.add_argument( - "--mediation", action="store_true", help="Enable mediation functionality" - ) - parser.add_argument( - "--wallet-type", - type=str, - metavar="", - help="Set the agent wallet type", - ) + parser = arg_parser(ident = "faber", port=8030) args = parser.parse_args() ENABLE_PYDEVD_PYCHARM = os.getenv("ENABLE_PYDEVD_PYCHARM", "").lower() diff --git a/demo/runners/faber.py b/demo/runners/faber.py index b35c2b5b98..0e772711fe 100644 --- a/demo/runners/faber.py +++ b/demo/runners/faber.py @@ -1,3 +1,4 @@ +import argparse import asyncio import json import logging @@ -12,6 +13,12 @@ sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +from runners.agent_container import ( + arg_parser, + create_agent_with_args, + AgentContainer, + AriesAgent, +) from runners.support.agent import ( # noqa:E402 DemoAgent, default_genesis_txns, @@ -36,7 +43,7 @@ LOGGER = logging.getLogger(__name__) -class FaberAgent(DemoAgent): +class FaberAgent(AriesAgent): def __init__( self, ident: str, @@ -136,118 +143,38 @@ async def handle_basicmessages(self, message): self.log("Received message:", message["content"]) -async def generate_invitation(agent, use_did_exchange: bool, auto_accept: bool = True): - agent._connection_ready = asyncio.Future() - with log_timer("Generate invitation duration:"): - # Generate an invitation - log_status("#7 Create a connection to alice and print out the invite details") - invi_rec = await agent.get_invite(use_did_exchange, auto_accept) - - qr = QRCode(border=1) - qr.add_data(invi_rec["invitation_url"]) - log_msg( - "Use the following JSON to accept the invite from another demo agent." - " Or use the QR code to connect from a mobile agent." - ) - log_msg(json.dumps(invi_rec["invitation"]), label="Invitation Data:", color=None) - qr.print_ascii(invert=True) - - log_msg("Waiting for connection...") - await agent.detect_connection() - - -async def create_schema_and_cred_def(agent, revocation): - with log_timer("Publish schema/cred def duration:"): - log_status("#3/4 Create a new schema/cred def on the ledger") - version = format( - "%d.%d.%d" - % ( - random.randint(1, 101), - random.randint(1, 101), - random.randint(1, 101), - ) - ) - (_, cred_def_id,) = await agent.register_schema_and_creddef( # schema id - "degree schema", - version, - ["name", "date", "degree", "age", "timestamp"], - support_revocation=revocation, - revocation_registry_size=TAILS_FILE_COUNT if revocation else None, - ) - return cred_def_id - - -async def main( - start_port: int, - no_auto: bool = False, - revocation: bool = False, - tails_server_base_url: str = None, - show_timing: bool = False, - multitenant: bool = False, - mediation: bool = False, - use_did_exchange: bool = False, - wallet_type: str = None, -): - genesis = await default_genesis_txns() - if not genesis: - print("Error retrieving ledger genesis transactions") - sys.exit(1) - - agent = None - mediator_agent = None +async def main(args): + faber_agent = await create_agent_with_args(args, ident="faber") try: log_status( "#1 Provision an agent and wallet, get back configuration details" - + (f" (Wallet type: {wallet_type})" if wallet_type else "") + + (f" (Wallet type: {faber_agent.wallet_type})" if faber_agent.wallet_type else "") ) agent = FaberAgent( - "Faber.Agent", - start_port, - start_port + 1, - genesis_data=genesis, - no_auto=no_auto, - tails_server_base_url=tails_server_base_url, - timing=show_timing, - multitenant=multitenant, - mediation=mediation, - wallet_type=wallet_type, + "faber.agent", + faber_agent.start_port, + faber_agent.start_port + 1, + genesis_data=faber_agent.genesis_txns, + no_auto=faber_agent.no_auto, + tails_server_base_url=faber_agent.tails_server_base_url, + timing=faber_agent.show_timing, + multitenant=faber_agent.multitenant, + mediation=faber_agent.mediation, + wallet_type=faber_agent.wallet_type, ) - await agent.listen_webhooks(start_port + 2) - await agent.register_did() - - with log_timer("Startup duration:"): - await agent.start_process() - log_msg("Admin URL is at:", agent.admin_url) - log_msg("Endpoint URL is at:", agent.endpoint) - - if mediation: - mediator_agent = await start_mediator_agent(start_port + 4, genesis) - if not mediator_agent: - raise Exception("Mediator agent returns None :-(") - else: - mediator_agent = None - - if multitenant: - # create an initial managed sub-wallet (also mediated) - await agent.register_or_switch_wallet( - "Faber.initial", - public_did=True, - webhook_port=agent.get_new_webhook_port(), - mediator_agent=mediator_agent, - ) - elif mediation: - # we need to pre-connect the agent to its mediator - if not await connect_wallet_to_mediator(agent, mediator_agent): - log_msg("Mediation setup FAILED :-(") - raise Exception("Mediation setup FAILED :-(") - # Create a schema - cred_def_id = await create_schema_and_cred_def(agent, revocation) - - # TODO add an additional credential for Student ID + faber_agent.public_did = True + faber_schema_name = "degree schema" + faber_schema_attrs = ["name", "date", "degree", "age", "timestamp"] + await faber_agent.initialize( + the_agent=agent, + schema_name=faber_schema_name, + schema_attrs=faber_schema_attrs, + ) - await generate_invitation(agent, use_did_exchange) + # generate an invitation for Alice + await faber_agent.generate_invitation(display_qr=True, wait=True) exchange_tracing = False options = ( @@ -256,14 +183,14 @@ async def main( " (3) Send Message\n" " (4) Create New Invitation\n" ) - if revocation: + if faber_agent.revocation: options += " (5) Revoke Credential\n" " (6) Publish Revocations\n" - if multitenant: + if faber_agent.multitenant: options += " (W) Create and/or Enable Wallet\n" options += " (T) Toggle tracing on credential/proof exchange\n" options += " (X) Exit?\n[1/2/3/4/{}{}T/X] ".format( - "5/6/" if revocation else "", - "W/" if multitenant else "", + "5/6/" if faber_agent.revocation else "", + "W/" if faber_agent.multitenant else "", ) async for option in prompt_loop(options): if option is not None: @@ -272,29 +199,32 @@ async def main( if option is None or option in "xX": break - elif option in "wW" and multitenant: + elif option in "wW" and faber_agent.multitenant: target_wallet_name = await prompt("Enter wallet name: ") include_subwallet_webhook = await prompt( "(Y/N) Create sub-wallet webhook target: " ) if include_subwallet_webhook.lower() == "y": - created = await agent.register_or_switch_wallet( + created = await faber_agent.agent.register_or_switch_wallet( target_wallet_name, - webhook_port=agent.get_new_webhook_port(), + webhook_port=faber_agent.agent.get_new_webhook_port(), public_did=True, - mediator_agent=mediator_agent, + mediator_agent=faber_agent.mediator_agent, ) else: - created = await agent.register_or_switch_wallet( + created = await faber_agent.agent.register_or_switch_wallet( target_wallet_name, public_did=True, - mediator_agent=mediator_agent, + mediator_agent=faber_agent.mediator_agent, ) # create a schema and cred def for the new wallet # TODO check first in case we are switching between existing wallets if created: # TODO this fails because the new wallet doesn't get a public DID - cred_def_id = await create_schema_and_cred_def(agent, revocation) + await faber_agent.create_schema_and_cred_def( + schema_name=faber_schema_name, + schema_attrs=faber_schema_attrs, + ) elif option in "tT": exchange_tracing = not exchange_tracing @@ -308,7 +238,7 @@ async def main( log_status("#13 Issue credential offer to X") # TODO define attributes to send for credential - agent.cred_attrs[cred_def_id] = { + faber_agent.agent.cred_attrs[faber_agent.cred_def_id] = { "name": "Alice Smith", "date": "2018-05-28", "degree": "Maths", @@ -320,18 +250,18 @@ async def main( "@type": CRED_PREVIEW_TYPE, "attributes": [ {"name": n, "value": v} - for (n, v) in agent.cred_attrs[cred_def_id].items() + for (n, v) in faber_agent.agent.cred_attrs[faber_agent.cred_def_id].items() ], } offer_request = { - "connection_id": agent.connection_id, - "comment": f"Offer on cred def id {cred_def_id}", + "connection_id": faber_agent.agent.connection_id, + "comment": f"Offer on cred def id {faber_agent.cred_def_id}", "auto_remove": False, "credential_preview": cred_preview, - "filter": {"indy": {"cred_def_id": cred_def_id}}, + "filter": {"indy": {"cred_def_id": faber_agent.cred_def_id}}, "trace": exchange_tracing, } - await agent.admin_POST( + await faber_agent.agent.admin_POST( "/issue-credential-2.0/send-offer", offer_request ) # TODO issue an additional credential for Student ID @@ -341,18 +271,18 @@ async def main( req_attrs = [ { "name": "name", - "restrictions": [{"schema_name": "degree schema"}], + "restrictions": [{"schema_name": faber_schema_name}], }, { "name": "date", - "restrictions": [{"schema_name": "degree schema"}], + "restrictions": [{"schema_name": faber_schema_name}], }, ] - if revocation: + if faber_agent.revocation: req_attrs.append( { "name": "degree", - "restrictions": [{"schema_name": "degree schema"}], + "restrictions": [{"schema_name": faber_schema_name}], "non_revoked": {"to": int(time.time() - 1)}, }, ) @@ -360,7 +290,7 @@ async def main( req_attrs.append( { "name": "degree", - "restrictions": [{"schema_name": "degree schema"}], + "restrictions": [{"schema_name": faber_schema_name}], } ) if SELF_ATTESTED: @@ -374,7 +304,7 @@ async def main( "name": "age", "p_type": ">=", "p_value": 18, - "restrictions": [{"schema_name": "degree schema"}], + "restrictions": [{"schema_name": faber_schema_name}], } ] indy_proof_request = { @@ -389,21 +319,21 @@ async def main( }, } - if revocation: + if faber_agent.revocation: indy_proof_request["non_revoked"] = {"to": int(time.time())} proof_request_web_request = { - "connection_id": agent.connection_id, + "connection_id": faber_agent.agent.connection_id, "proof_request": indy_proof_request, "trace": exchange_tracing, } - await agent.admin_POST( + await faber_agent.agent.admin_POST( "/present-proof/send-request", proof_request_web_request ) elif option == "3": msg = await prompt("Enter message: ") - await agent.admin_POST( - f"/connections/{agent.connection_id}/send-message", {"content": msg} + await faber_agent.agent.admin_POST( + f"/connections/{faber_agent.agent.connection_id}/send-message", {"content": msg} ) elif option == "4": @@ -411,16 +341,16 @@ async def main( "Creating a new invitation, please receive " "and accept this invitation using Alice agent" ) - await generate_invitation(agent, use_did_exchange) + await faber_agent.generate_invitation(display_qr=True, wait=True) - elif option == "5" and revocation: + elif option == "5" and faber_agent.revocation: rev_reg_id = (await prompt("Enter revocation registry ID: ")).strip() cred_rev_id = (await prompt("Enter credential revocation ID: ")).strip() publish = ( await prompt("Publish now? [Y/N]: ", default="N") ).strip() in "yY" try: - await agent.admin_POST( + await faber_agent.agent.admin_POST( "/revocation/revoke", { "rev_reg_id": rev_reg_id, @@ -431,10 +361,10 @@ async def main( except ClientError: pass - elif option == "6" and revocation: + elif option == "6" and faber_agent.revocation: try: - resp = await agent.admin_POST("/revocation/publish-revocations", {}) - agent.log( + resp = await faber_agent.agent.admin_POST("/revocation/publish-revocations", {}) + faber_agent.agent.log( "Published revocations for {} revocation registr{} {}".format( len(resp["rrid2crid"]), "y" if len(resp["rrid2crid"]) == 1 else "ies", @@ -444,24 +374,14 @@ async def main( except ClientError: pass - if show_timing: - timing = await agent.fetch_timing() + if faber_agent.show_timing: + timing = await faber_agent.agent.fetch_timing() if timing: - for line in agent.format_timing(timing): + for line in faber_agent.agent.format_timing(timing): log_msg(line) finally: - terminated = True - try: - if mediator_agent: - log_msg("Shutting down mediator agent ...") - await mediator_agent.terminate() - if agent: - log_msg("Shutting down faber agent ...") - await agent.terminate() - except Exception: - LOGGER.exception("Error terminating agent:") - terminated = False + terminated = await faber_agent.terminate() await asyncio.sleep(0.1) @@ -470,54 +390,9 @@ async def main( if __name__ == "__main__": - import argparse - - parser = argparse.ArgumentParser(description="Runs a Faber demo agent.") - parser.add_argument("--no-auto", action="store_true", help="Disable auto issuance") - parser.add_argument( - "-p", - "--port", - type=int, - default=8020, - metavar=(""), - help="Choose the starting port number to listen on", - ) - parser.add_argument( - "--did-exchange", - action="store_true", - help="Use DID-Exchange protocol for connections", - ) - parser.add_argument( - "--revocation", action="store_true", help="Enable credential revocation" - ) - parser.add_argument( - "--tails-server-base-url", - type=str, - metavar=(""), - help="Tals server base url", - ) - parser.add_argument( - "--timing", action="store_true", help="Enable timing information" - ) - parser.add_argument( - "--multitenant", action="store_true", help="Enable multitenancy options" - ) - parser.add_argument( - "--mediation", action="store_true", help="Enable mediation functionality" - ) - parser.add_argument( - "--wallet-type", - type=str, - metavar="", - help="Set the agent wallet type", - ) + parser = arg_parser(ident = "faber", port=8020) args = parser.parse_args() - if args.did_exchange and args.mediation: - raise Exception( - "DID-Exchange connection protocol is not (yet) compatible with mediation" - ) - ENABLE_PYDEVD_PYCHARM = os.getenv("ENABLE_PYDEVD_PYCHARM", "").lower() ENABLE_PYDEVD_PYCHARM = ENABLE_PYDEVD_PYCHARM and ENABLE_PYDEVD_PYCHARM not in ( "false", @@ -546,28 +421,9 @@ async def main( except ImportError: print("pydevd_pycharm library was not found") - require_indy() - - tails_server_base_url = args.tails_server_base_url or os.getenv("PUBLIC_TAILS_URL") - - if args.revocation and not tails_server_base_url: - raise Exception( - "If revocation is enabled, --tails-server-base-url must be provided" - ) - try: asyncio.get_event_loop().run_until_complete( - main( - args.port, - args.no_auto, - args.revocation, - tails_server_base_url, - args.timing, - args.multitenant, - args.mediation, - args.did_exchange, - args.wallet_type, - ) + main(args) ) except KeyboardInterrupt: os._exit(1) From 2424e18787feb357255b6a5fa0ee65761442c18d Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Thu, 25 Feb 2021 08:57:59 -0800 Subject: [PATCH 087/243] Add port mapping to aca-py docker startup command Signed-off-by: Ian Costanzo --- scripts/run_docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run_docker b/scripts/run_docker index 292c7c1d0a..a133762d27 100755 --- a/scripts/run_docker +++ b/scripts/run_docker @@ -7,7 +7,7 @@ $CONTAINER_RUNTIME build -t aries-cloudagent-run -f ../docker/Dockerfile.run .. ARGS="" for PORT in $PORTS; do - ARGS="${ARGS} -p $PORT" + ARGS="${ARGS} -p $PORT:$PORT" done PTVSD_PORT="${PTVSD_PORT-5678}" From d4642f1404533b2412c56a7b3e0616b36ffe2221 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Wed, 24 Feb 2021 14:21:31 -0800 Subject: [PATCH 088/243] update docker images to 1.15-1 Signed-off-by: Andrew Whitehead --- .circleci/config.yml | 2 +- docker/Dockerfile.demo | 2 +- docker/Dockerfile.run | 2 +- docker/Dockerfile.test-indy | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7f6f8aedb1..d98dbb33a6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 jobs: agent-build: docker: - - image: bcgovimages/von-image:py36-1.15-0 + - image: bcgovimages/von-image:py36-1.15-1 steps: - checkout - restore_cache: diff --git a/docker/Dockerfile.demo b/docker/Dockerfile.demo index 43701641ad..754f9dbffc 100644 --- a/docker/Dockerfile.demo +++ b/docker/Dockerfile.demo @@ -1,4 +1,4 @@ -FROM bcgovimages/von-image:py36-1.15-0 +FROM bcgovimages/von-image:py36-1.15-1 ENV ENABLE_PTVSD 0 ENV ENABLE_PYDEVD_PYCHARM 0 diff --git a/docker/Dockerfile.run b/docker/Dockerfile.run index 80ed80ba55..d0c2f7a395 100644 --- a/docker/Dockerfile.run +++ b/docker/Dockerfile.run @@ -1,4 +1,4 @@ -FROM bcgovimages/von-image:py36-1.15-0 +FROM bcgovimages/von-image:py36-1.15-1 ENV ENABLE_PTVSD 0 diff --git a/docker/Dockerfile.test-indy b/docker/Dockerfile.test-indy index e125be3327..bf1814c147 100644 --- a/docker/Dockerfile.test-indy +++ b/docker/Dockerfile.test-indy @@ -1,4 +1,4 @@ -FROM bcgovimages/von-image:py36-1.15-0 +FROM bcgovimages/von-image:py36-1.15-1 USER indy From fbd38a673c4def306e32e8f12d522827b5568a7a Mon Sep 17 00:00:00 2001 From: Shaanjot Gill Date: Thu, 25 Feb 2021 10:27:31 -0800 Subject: [PATCH 089/243] fix for outbound being None in case of failing webhook target Signed-off-by: Shaanjot Gill --- aries_cloudagent/transport/outbound/manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aries_cloudagent/transport/outbound/manager.py b/aries_cloudagent/transport/outbound/manager.py index 0fe4a88882..58a1a0d3e7 100644 --- a/aries_cloudagent/transport/outbound/manager.py +++ b/aries_cloudagent/transport/outbound/manager.py @@ -340,7 +340,7 @@ async def _process_loop(self): queued.endpoint, exc_info=queued.error, ) - if self.handle_not_delivered: + if self.handle_not_delivered and queued.message: self.handle_not_delivered(queued.profile, queued.message) continue # remove from buffer From 8b5ca123a4c9130bc166ee9cb87e27f1e03c88a5 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Thu, 25 Feb 2021 14:22:56 -0800 Subject: [PATCH 090/243] Refactor alice Signed-off-by: Ian Costanzo --- demo/runners/agent_container.py | 19 +++-- demo/runners/alice.py | 126 +++++++++----------------------- 2 files changed, 46 insertions(+), 99 deletions(-) diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index 8036fe7038..731a9d404c 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -44,8 +44,8 @@ def __init__( ident: str, http_port: int, admin_port: int, - no_auto: bool = False, prefix: str = "Aries", + no_auto: bool = False, extra_args: list = [], **kwargs, ): @@ -281,7 +281,7 @@ async def input_invitation(self, invite_details: dict, wait: bool = False): if wait: log_msg("Waiting for connection...") - await agent.detect_connection() + await self.detect_connection() async def create_schema_and_cred_def( self, schema_name, schema_attrs, revocation, version=None @@ -693,25 +693,28 @@ async def create_agent_with_args_list(in_args: list): async def create_agent_with_args(args, ident: str = None): - if args.did_exchange and args.mediation: + if ("did_exchange" in args and args.did_exchange) and args.mediation: raise Exception( "DID-Exchange connection protocol is not (yet) compatible with mediation" ) require_indy() - tails_server_base_url = args.tails_server_base_url or os.getenv("PUBLIC_TAILS_URL") + if "revocation" in args and args.revocation: + tails_server_base_url = args.tails_server_base_url or os.getenv("PUBLIC_TAILS_URL") + else: + tails_server_base_url = None arg_file = args.arg_file or os.getenv("ACAPY_ARG_FILE") # if we don't have a tails server url then guess it - if args.revocation and not tails_server_base_url: + if ("revocation" in args and args.revocation) and not tails_server_base_url: # assume we're running in docker tails_server_base_url = ( "http://" + (os.getenv("DOCKERHOST") or "host.docker.internal") + ":6543" ) - if args.revocation and not tails_server_base_url: + if ("revocation" in args and args.revocation) and not tails_server_base_url: raise Exception( "If revocation is enabled, --tails-server-base-url must be provided" ) @@ -727,12 +730,12 @@ async def create_agent_with_args(args, ident: str = None): agent_ident + ".agent", args.port, no_auto=args.no_auto, - revocation=args.revocation, + revocation=args.revocation if "revocation" in args else False, tails_server_base_url=tails_server_base_url, show_timing=args.timing, multitenant=args.multitenant, mediation=args.mediation, - use_did_exchange=args.did_exchange, + use_did_exchange=args.did_exchange if "did_exchange" in args else False, wallet_type=args.wallet_type, public_did=args.public_did if "public_did" in args else None, seed="random" if ("public_did" in args and args.public_did) else None, diff --git a/demo/runners/alice.py b/demo/runners/alice.py index e0e4e2ee33..6534b31766 100644 --- a/demo/runners/alice.py +++ b/demo/runners/alice.py @@ -15,6 +15,8 @@ from runners.agent_container import ( arg_parser, create_agent_with_args, + AgentContainer, + AriesAgent, ) from runners.support.agent import ( # noqa:E402 DemoAgent, @@ -36,7 +38,7 @@ LOGGER = logging.getLogger(__name__) -class AliceAgent(DemoAgent): +class AliceAgent(AriesAgent): def __init__( self, ident: str, @@ -199,7 +201,6 @@ async def handle_basicmessages(self, message): async def input_invitation(agent): - agent._connection_ready = asyncio.Future() async for details in prompt_loop("Invite details: "): b64_invite = None try: @@ -236,79 +237,39 @@ async def input_invitation(agent): log_msg("Invalid invitation:", str(e)) with log_timer("Connect duration:"): - connection = await agent.receive_invite(details) - log_json(connection, label="Invitation response:") + connection = await agent.input_invitation(details, wait=True) - await agent.detect_connection() - -async def main( - start_port: int, - no_auto: bool = False, - show_timing: bool = False, - multitenant: bool = False, - mediation: bool = False, - wallet_type: str = None, -): - genesis = await default_genesis_txns() - if not genesis: - print("Error retrieving ledger genesis transactions") - sys.exit(1) - - agent = None - mediator_agent = None +async def main(args): + alice_agent = await create_agent_with_args(args, ident="alice") try: log_status( "#7 Provision an agent and wallet, get back configuration details" - + (f" (Wallet type: {wallet_type})" if wallet_type else "") + + (f" (Wallet type: {alice_agent.wallet_type})" if alice_agent.wallet_type else "") ) agent = AliceAgent( - "Alice.Agent", - start_port, - start_port + 1, - genesis_data=genesis, - no_auto=no_auto, - timing=show_timing, - multitenant=multitenant, - mediation=mediation, - wallet_type=wallet_type, + "alice.agent", + alice_agent.start_port, + alice_agent.start_port + 1, + genesis_data=alice_agent.genesis_txns, + no_auto=alice_agent.no_auto, + timing=alice_agent.show_timing, + multitenant=alice_agent.multitenant, + mediation=alice_agent.mediation, + wallet_type=alice_agent.wallet_type, ) - await agent.listen_webhooks(start_port + 2) - - with log_timer("Startup duration:"): - await agent.start_process() - log_msg("Admin URL is at:", agent.admin_url) - log_msg("Endpoint URL is at:", agent.endpoint) - - if mediation: - mediator_agent = await start_mediator_agent(start_port + 4, genesis) - if not mediator_agent: - raise Exception("Mediator agent returns None :-(") - else: - mediator_agent = None - - if multitenant: - # create an initial managed sub-wallet (also mediated) - await agent.register_or_switch_wallet( - "Alice.initial", - webhook_port=agent.get_new_webhook_port(), - mediator_agent=mediator_agent, - ) - elif mediation: - # we need to pre-connect the agent to its mediator - if not await connect_wallet_to_mediator(agent, mediator_agent): - log_msg("Mediation setup FAILED :-(") - raise Exception("Mediation setup FAILED :-(") + + await alice_agent.initialize(the_agent=agent) log_status("#9 Input faber.py invitation details") - await input_invitation(agent) + await input_invitation(alice_agent) options = " (3) Send Message\n" " (4) Input New Invitation\n" - if multitenant: + if alice_agent.multitenant: options += " (W) Create and/or Enable Wallet\n" options += " (X) Exit?\n[3/4/{}X] ".format( - "W/" if multitenant else "", + "W/" if alice_agent.multitenant else "", ) async for option in prompt_loop(options): if option is not None: @@ -317,27 +278,27 @@ async def main( if option is None or option in "xX": break - elif option in "wW" and multitenant: + elif option in "wW" and alice_agent.multitenant: target_wallet_name = await prompt("Enter wallet name: ") include_subwallet_webhook = await prompt( "(Y/N) Create sub-wallet webhook target: " ) if include_subwallet_webhook.lower() == "y": - await agent.register_or_switch_wallet( + await alice_agent.agent.register_or_switch_wallet( target_wallet_name, - webhook_port=agent.get_new_webhook_port(), - mediator_agent=mediator_agent, + webhook_port=alice_agent.agent.get_new_webhook_port(), + mediator_agent=alice_agent.mediator_agent, ) else: - await agent.register_or_switch_wallet( + await alice_agent.agent.register_or_switch_wallet( target_wallet_name, - mediator_agent=mediator_agent, + mediator_agent=alice_agent.mediator_agent, ) elif option == "3": msg = await prompt("Enter message: ") if msg: - await agent.admin_POST( + await alice_agent.agent.admin_POST( f"/connections/{agent.connection_id}/send-message", {"content": msg}, ) @@ -345,26 +306,16 @@ async def main( elif option == "4": # handle new invitation log_status("Input new invitation details") - await input_invitation(agent) + await input_invitation(alice_agent) - if show_timing: - timing = await agent.fetch_timing() + if alice_agent.show_timing: + timing = await alice_agent.agent.fetch_timing() if timing: - for line in agent.format_timing(timing): + for line in alice_agent.agent.format_timing(timing): log_msg(line) finally: - terminated = True - try: - if mediator_agent: - log_msg("Shutting down mediator agent ...") - await mediator_agent.terminate() - if agent: - log_msg("Shutting down alice agent ...") - await agent.terminate() - except Exception: - LOGGER.exception("Error terminating agent:") - terminated = False + terminated = await alice_agent.terminate() await asyncio.sleep(0.1) @@ -373,7 +324,7 @@ async def main( if __name__ == "__main__": - parser = arg_parser(ident = "faber", port=8030) + parser = arg_parser(ident = "alice", port=8030) args = parser.parse_args() ENABLE_PYDEVD_PYCHARM = os.getenv("ENABLE_PYDEVD_PYCHARM", "").lower() @@ -408,14 +359,7 @@ async def main( try: asyncio.get_event_loop().run_until_complete( - main( - args.port, - args.no_auto, - args.timing, - args.multitenant, - args.mediation, - args.wallet_type, - ) + main(args) ) except KeyboardInterrupt: os._exit(1) From 2a632676b9f314f8860b146ad8d14630478a6c96 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Thu, 25 Feb 2021 14:25:04 -0800 Subject: [PATCH 091/243] Fix black formatting Signed-off-by: Ian Costanzo --- demo/runners/agent_container.py | 10 +++++++--- demo/runners/alice.py | 12 +++++++----- demo/runners/faber.py | 23 +++++++++++++++-------- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/demo/runners/agent_container.py b/demo/runners/agent_container.py index 731a9d404c..2910ff98b2 100644 --- a/demo/runners/agent_container.py +++ b/demo/runners/agent_container.py @@ -614,13 +614,15 @@ async def agency_admin_POST(self, path, data=None, text=False, params=None) -> d ) -def arg_parser(ident: str = None, port: int=8020): +def arg_parser(ident: str = None, port: int = 8020): """ Standard command-line arguements. "ident", if specified, refers to one of the standard demo personas - alice, faber, acme or performance. """ - parser = argparse.ArgumentParser(description="Runs a " + (ident or "aries") + " demo agent.") + parser = argparse.ArgumentParser( + description="Runs a " + (ident or "aries") + " demo agent." + ) if not ident: parser.add_argument( "--ident", @@ -701,7 +703,9 @@ async def create_agent_with_args(args, ident: str = None): require_indy() if "revocation" in args and args.revocation: - tails_server_base_url = args.tails_server_base_url or os.getenv("PUBLIC_TAILS_URL") + tails_server_base_url = args.tails_server_base_url or os.getenv( + "PUBLIC_TAILS_URL" + ) else: tails_server_base_url = None diff --git a/demo/runners/alice.py b/demo/runners/alice.py index 6534b31766..6099575dce 100644 --- a/demo/runners/alice.py +++ b/demo/runners/alice.py @@ -246,7 +246,11 @@ async def main(args): try: log_status( "#7 Provision an agent and wallet, get back configuration details" - + (f" (Wallet type: {alice_agent.wallet_type})" if alice_agent.wallet_type else "") + + ( + f" (Wallet type: {alice_agent.wallet_type})" + if alice_agent.wallet_type + else "" + ) ) agent = AliceAgent( "alice.agent", @@ -324,7 +328,7 @@ async def main(args): if __name__ == "__main__": - parser = arg_parser(ident = "alice", port=8030) + parser = arg_parser(ident="alice", port=8030) args = parser.parse_args() ENABLE_PYDEVD_PYCHARM = os.getenv("ENABLE_PYDEVD_PYCHARM", "").lower() @@ -358,8 +362,6 @@ async def main(args): require_indy() try: - asyncio.get_event_loop().run_until_complete( - main(args) - ) + asyncio.get_event_loop().run_until_complete(main(args)) except KeyboardInterrupt: os._exit(1) diff --git a/demo/runners/faber.py b/demo/runners/faber.py index 0e772711fe..68bc189cf0 100644 --- a/demo/runners/faber.py +++ b/demo/runners/faber.py @@ -149,7 +149,11 @@ async def main(args): try: log_status( "#1 Provision an agent and wallet, get back configuration details" - + (f" (Wallet type: {faber_agent.wallet_type})" if faber_agent.wallet_type else "") + + ( + f" (Wallet type: {faber_agent.wallet_type})" + if faber_agent.wallet_type + else "" + ) ) agent = FaberAgent( "faber.agent", @@ -250,7 +254,9 @@ async def main(args): "@type": CRED_PREVIEW_TYPE, "attributes": [ {"name": n, "value": v} - for (n, v) in faber_agent.agent.cred_attrs[faber_agent.cred_def_id].items() + for (n, v) in faber_agent.agent.cred_attrs[ + faber_agent.cred_def_id + ].items() ], } offer_request = { @@ -333,7 +339,8 @@ async def main(args): elif option == "3": msg = await prompt("Enter message: ") await faber_agent.agent.admin_POST( - f"/connections/{faber_agent.agent.connection_id}/send-message", {"content": msg} + f"/connections/{faber_agent.agent.connection_id}/send-message", + {"content": msg}, ) elif option == "4": @@ -363,7 +370,9 @@ async def main(args): elif option == "6" and faber_agent.revocation: try: - resp = await faber_agent.agent.admin_POST("/revocation/publish-revocations", {}) + resp = await faber_agent.agent.admin_POST( + "/revocation/publish-revocations", {} + ) faber_agent.agent.log( "Published revocations for {} revocation registr{} {}".format( len(resp["rrid2crid"]), @@ -390,7 +399,7 @@ async def main(args): if __name__ == "__main__": - parser = arg_parser(ident = "faber", port=8020) + parser = arg_parser(ident="faber", port=8020) args = parser.parse_args() ENABLE_PYDEVD_PYCHARM = os.getenv("ENABLE_PYDEVD_PYCHARM", "").lower() @@ -422,8 +431,6 @@ async def main(args): print("pydevd_pycharm library was not found") try: - asyncio.get_event_loop().run_until_complete( - main(args) - ) + asyncio.get_event_loop().run_until_complete(main(args)) except KeyboardInterrupt: os._exit(1) From 7371c98e4953a528646c8c158be1e653205dbd33 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Thu, 25 Feb 2021 14:51:59 -0800 Subject: [PATCH 092/243] update to version 0.6.0 Signed-off-by: Andrew Whitehead --- CHANGELOG.md | 2 +- aries_cloudagent/version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e6281e6f8..24c4120cb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # 0.6.0 -## February 5, 2021 +## February 25, 2021 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](https://github.com/hyperledger/indy-vdr), [indy-credx](https://github.com/hyperledger/indy-shared-rs), and [aries-askar](https://github.com/hyperledger/aries-askar). diff --git a/aries_cloudagent/version.py b/aries_cloudagent/version.py index fc16ad46e6..c0b727736e 100644 --- a/aries_cloudagent/version.py +++ b/aries_cloudagent/version.py @@ -1,3 +1,3 @@ """Library version information.""" -__version__ = "0.6.0-rc1" +__version__ = "0.6.0" From 96ffc5ec3849a438ce686a1d13902a884a147171 Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 1 Mar 2021 19:13:27 +0000 Subject: [PATCH 093/243] work in progress: admin-api unit tests largely done Signed-off-by: sklump --- .../v2_0/messages/cred_format.py | 5 + .../v2_0/messages/tests/test_cred_format.py | 4 + .../protocols/issue_credential/v2_0/routes.py | 22 +- .../v2_0/tests/test_routes.py | 2 +- .../present_proof/indy/cred_precis.py | 63 + .../present_proof/indy/requested_creds.py | 39 + .../protocols/present_proof/v1_0/routes.py | 115 +- .../present_proof/v1_0/tests/test_manager.py | 64 +- .../protocols/present_proof/v2_0/manager.py | 16 +- .../v2_0/messages/pres_format.py | 5 + .../v2_0/messages/tests/test_pres_format.py | 4 + .../protocols/present_proof/v2_0/routes.py | 1102 ++++++++++++++ .../present_proof/v2_0/tests/test_manager.py | 585 ++++---- .../present_proof/v2_0/tests/test_routes.py | 1316 +++++++++++++++++ 14 files changed, 2917 insertions(+), 425 deletions(-) create mode 100644 aries_cloudagent/protocols/present_proof/indy/cred_precis.py create mode 100644 aries_cloudagent/protocols/present_proof/indy/requested_creds.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/routes.py create mode 100644 aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py index 031be4dfde..bad3ee714f 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py @@ -67,6 +67,11 @@ def aka(self) -> str: """Accessor for alternative identifier list.""" return self.value.aka + @property + def api(self) -> str: + """Admin API specifier.""" + return self.name.lower() + @property def detail(self) -> str: """Accessor for credential exchange detail class.""" diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py index e8828125b8..47cec9708a 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py @@ -31,6 +31,10 @@ def test_get_completeness(self): assert V20CredFormat.Format.get("Indy") is V20CredFormat.Format.INDY assert V20CredFormat.Format.get("HL/INDY").aries == "hlindy-zkp-v1.0" assert "indy" in V20CredFormat.Format.get("HL/INDY").aka + assert ( + V20CredFormat.Format.get("HL/INDY").api + in V20CredFormat.Format.get("hl-indy").aka + ) assert ( V20CredFormat.Format.get("JSON-LD").aries == "dif/credential-manifest@v1.0" ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py index 17d5a8cdf6..434755206a 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py @@ -122,7 +122,7 @@ class V20CredStoreRequestSchema(OpenAPISchema): credential_id = fields.Str(required=False) -class V20CredFilterIndy(OpenAPISchema): +class V20CredFilterIndySchema(OpenAPISchema): """Indy credential filtration criteria.""" cred_def_id = fields.Str( @@ -147,7 +147,7 @@ class V20CredFilterIndy(OpenAPISchema): ) -class V20CredFilterDIF(OpenAPISchema): +class V20CredFilterDIFSchema(OpenAPISchema): """DIF credential filtration criteria.""" some_dif_criterion = fields.Str( @@ -156,14 +156,18 @@ class V20CredFilterDIF(OpenAPISchema): ) -class V20CredFilter(OpenAPISchema): +class V20CredFilterSchema(OpenAPISchema): """Credential filtration criteria.""" indy = fields.Nested( - V20CredFilterIndy, required=False, description="Credential filter for indy" + V20CredFilterIndySchema, + required=False, + description="Credential filter for indy", ) dif = fields.Nested( - V20CredFilterDIF, required=False, description="Credential filter for DIF" + V20CredFilterDIFSchema, + required=False, + description="Credential filter for DIF", ) @validates_schema @@ -180,15 +184,15 @@ def validate_fields(self, data, **kwargs): ValidationError: if data has neither indy nor dif """ - if not (("indy" in data) or ("dif" in data)): - raise ValidationError("V20CredFilter requires indy, dif, or both") + if not any(f.api in data for f in V20CredFormat.Format): + raise ValidationError("V20CredFilterSchema requires indy, dif, or both") class V20IssueCredSchemaCore(AdminAPIMessageTracingSchema): """Filter, auto-remove, comment, trace.""" filter_ = fields.Nested( - V20CredFilter, + V20CredFilterSchema, required=True, data_key="filter", description="Credential specification criteria by format", @@ -295,7 +299,7 @@ def _formats_filters(filt_spec: Mapping) -> Mapping: attach_id=fmt_aka, format_=V20CredFormat.Format.get(fmt_aka), ) - for fmt_aka in filt_spec.keys() + for fmt_aka in filt_spec ], "filters_attach": [ AttachDecorator.data_base64(filt_by_fmt, ident=fmt_aka) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py index 7b46521793..56be66112b 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py @@ -25,7 +25,7 @@ async def setUp(self): ) async def test_validate_cred_filter(self): - filt = test_module.V20CredFilter() + filt = test_module.V20CredFilterSchema() filt.validate_fields({"indy": {"issuer_did": TEST_DID}}) filt.validate_fields( {"indy": {"issuer_did": TEST_DID, "schema_version": "1.0"}} diff --git a/aries_cloudagent/protocols/present_proof/indy/cred_precis.py b/aries_cloudagent/protocols/present_proof/indy/cred_precis.py new file mode 100644 index 0000000000..7189e38c6e --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/indy/cred_precis.py @@ -0,0 +1,63 @@ +"""Admin routes for presentations.""" + +from marshmallow import fields + +from ....messaging.models.openapi import OpenAPISchema +from ....messaging.valid import ( + INDY_CRED_DEF_ID, + INDY_CRED_REV_ID, + INDY_REV_REG_ID, + INDY_SCHEMA_ID, + UUIDFour, +) + +from ..indy.proof_request import IndyProofReqNonRevokedSchema + + +class IndyCredInfoSchema(OpenAPISchema): + """Schema for indy cred-info.""" + + referent = fields.Str( + description="Wallet referent", + example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 + ) + attrs = fields.Dict( + description="Attribute names and value", + keys=fields.Str(example="age"), # marshmallow/apispec v3.0 ignores + values=fields.Str(example="24"), + ) + + +class IndyCredPrecisSchema(OpenAPISchema): + """Schema for precis that indy credential search returns (and aca-py augments).""" + + cred_info = fields.Nested( + IndyCredInfoSchema(), + description="Credential info", + ) + schema_id = fields.Str( + description="Schema identifier", + **INDY_SCHEMA_ID, + ) + cred_def_id = fields.Str( + description="Credential definition identifier", + **INDY_CRED_DEF_ID, + ) + rev_reg_id = fields.Str( + description="Revocation registry identifier", + **INDY_REV_REG_ID, + ) + cred_rev = fields.Str( + description="Credential revocation identifier", + **INDY_CRED_REV_ID, + ) + interval = fields.Nested( + IndyProofReqNonRevokedSchema(), + description="Non-revocation interval from presentation request", + ) + pres_referents = fields.List( + fields.Str( + description="presentation referent", + example="1_age_uuid", + ), + ) diff --git a/aries_cloudagent/protocols/present_proof/indy/requested_creds.py b/aries_cloudagent/protocols/present_proof/indy/requested_creds.py new file mode 100644 index 0000000000..cda5d66f48 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/indy/requested_creds.py @@ -0,0 +1,39 @@ +"""Admin routes for presentations.""" + +from marshmallow import fields + +from ....messaging.models.openapi import OpenAPISchema +from ....messaging.valid import INT_EPOCH + + +class IndyRequestedCredsRequestedAttrSchema(OpenAPISchema): + """Schema for requested attributes within indy requested credentials structure.""" + + cred_id = fields.Str( + example="3fa85f64-5717-4562-b3fc-2c963f66afa6", + description=( + "Wallet credential identifier (typically but not necessarily a UUID)" + ), + required=True, + ) + revealed = fields.Bool( + description="Whether to reveal attribute in proof (default true)", default=True + ) + + +class IndyRequestedCredsRequestedPredSchema(OpenAPISchema): + """Schema for requested predicates within indy requested credentials structure.""" + + cred_id = fields.Str( + description=( + "Wallet credential identifier (typically but not necessarily a UUID)" + ), + example="3fa85f64-5717-4562-b3fc-2c963f66afa6", + required=True, + ) + timestamp = fields.Int( + description="Epoch timestamp of interest for non-revocation proof", + required=False, + strict=True, + **INT_EPOCH, + ) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/routes.py b/aries_cloudagent/protocols/present_proof/v1_0/routes.py index c8bed77f98..046645cbe3 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/routes.py @@ -21,11 +21,7 @@ from ....messaging.models.base import BaseModelError from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import ( - INDY_CRED_DEF_ID, - INDY_CRED_REV_ID, INDY_EXTRA_WQL, - INDY_SCHEMA_ID, - INDY_REV_REG_ID, INT_EPOCH, NUM_STR_NATURAL, NUM_STR_WHOLE, @@ -39,8 +35,13 @@ from ...problem_report.v1_0 import internal_error from ...problem_report.v1_0.message import ProblemReport -from ..indy.proof_request import IndyProofReqNonRevokedSchema, IndyProofRequestSchema +from ..indy.cred_precis import IndyCredPrecisSchema +from ..indy.proof_request import IndyProofRequestSchema from ..indy.pres_preview import IndyPresPreview, IndyPresPreviewSchema +from ..indy.requested_creds import ( + IndyRequestedCredsRequestedAttrSchema, + IndyRequestedCredsRequestedPredSchema, +) from .manager import PresentationManager from .message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST, SPEC_URI @@ -52,7 +53,7 @@ ) -class PresentProofModuleResponseSchema(OpenAPISchema): +class V10PresentProofModuleResponseSchema(OpenAPISchema): """Response schema for Present Proof Module.""" @@ -130,55 +131,6 @@ class V10PresentationProposalRequestSchema(AdminAPIMessageTracingSchema): ) -class IndyCredInfoSchema(OpenAPISchema): - """Schema for indy cred-info.""" - - referent = fields.Str( - description="Wallet referent", - example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 - ) - attrs = fields.Dict( - description="Attribute names and value", - keys=fields.Str(example="age"), # marshmallow/apispec v3.0 ignores - values=fields.Str(example="24"), - ) - - -class IndyCredPrecisSchema(OpenAPISchema): - """Schema for precis that indy credential search returns (and aca-py augments).""" - - cred_info = fields.Nested( - IndyCredInfoSchema(), - description="Credential info", - ) - schema_id = fields.Str( - description="Schema identifier", - **INDY_SCHEMA_ID, - ) - cred_def_id = fields.Str( - description="Credential definition identifier", - **INDY_CRED_DEF_ID, - ) - rev_reg_id = fields.Str( - description="Revocation registry identifier", - **INDY_REV_REG_ID, - ) - cred_rev = fields.Str( - description="Credential revocation identifier", - **INDY_CRED_REV_ID, - ) - interval = fields.Nested( - IndyProofReqNonRevokedSchema(), - description="Non-revocation interval from presentation request", - ) - presentation_referents = fields.List( - fields.Str( - description="presentation referent", - example="1_age_uuid", - ), - ) - - class V10PresentationCreateRequestRequestSchema(AdminAPIMessageTracingSchema): """Request schema for creating a proof request free of any connection.""" @@ -201,39 +153,6 @@ class V10PresentationSendRequestRequestSchema( ) -class IndyRequestedCredsRequestedAttrSchema(OpenAPISchema): - """Schema for requested attributes within indy requested credentials structure.""" - - cred_id = fields.Str( - example="3fa85f64-5717-4562-b3fc-2c963f66afa6", - description=( - "Wallet credential identifier (typically but not necessarily a UUID)" - ), - required=True, - ) - revealed = fields.Bool( - description="Whether to reveal attribute in proof (default true)", default=True - ) - - -class IndyRequestedCredsRequestedPredSchema(OpenAPISchema): - """Schema for requested predicates within indy requested credentials structure.""" - - cred_id = fields.Str( - description=( - "Wallet credential identifier (typically but not necessarily a UUID)" - ), - example="3fa85f64-5717-4562-b3fc-2c963f66afa6", - required=True, - ) - timestamp = fields.Int( - description="Epoch timestamp of interest for non-revocation proof", - required=False, - strict=True, - **INT_EPOCH, - ) - - class V10PresentationRequestSchema(AdminAPIMessageTracingSchema): """Request schema for sending a presentation.""" @@ -306,7 +225,7 @@ class V10PresentationProblemReportRequestSchema(OpenAPISchema): explain_ltxt = fields.Str(required=True) -class PresExIdMatchInfoSchema(OpenAPISchema): +class V10PresExIdMatchInfoSchema(OpenAPISchema): """Path parameters and validators for request taking presentation exchange id.""" pres_ex_id = fields.Str( @@ -354,7 +273,7 @@ async def presentation_exchange_list(request: web.BaseRequest): @docs(tags=["present-proof"], summary="Fetch a single presentation exchange record") -@match_info_schema(PresExIdMatchInfoSchema()) +@match_info_schema(V10PresExIdMatchInfoSchema()) @response_schema(V10PresentationExchangeSchema(), 200, description="") async def presentation_exchange_retrieve(request: web.BaseRequest): """ @@ -392,7 +311,7 @@ async def presentation_exchange_retrieve(request: web.BaseRequest): tags=["present-proof"], summary="Fetch credentials for a presentation request from wallet", ) -@match_info_schema(PresExIdMatchInfoSchema()) +@match_info_schema(V10PresExIdMatchInfoSchema()) @querystring_schema(CredentialsFetchQueryStringSchema()) @response_schema(IndyCredPrecisSchema(many=True), 200, description="") async def presentation_exchange_credentials_list(request: web.BaseRequest): @@ -703,7 +622,7 @@ async def presentation_exchange_send_free_request(request: web.BaseRequest): tags=["present-proof"], summary="Sends a presentation request in reference to a proposal", ) -@match_info_schema(PresExIdMatchInfoSchema()) +@match_info_schema(V10PresExIdMatchInfoSchema()) @request_schema(AdminAPIMessageTracingSchema()) @response_schema(V10PresentationExchangeSchema(), 200, description="") async def presentation_exchange_send_bound_request(request: web.BaseRequest): @@ -787,7 +706,7 @@ async def presentation_exchange_send_bound_request(request: web.BaseRequest): @docs(tags=["present-proof"], summary="Sends a proof presentation") -@match_info_schema(PresExIdMatchInfoSchema()) +@match_info_schema(V10PresExIdMatchInfoSchema()) @request_schema(V10PresentationRequestSchema()) @response_schema(V10PresentationExchangeSchema(), description="") async def presentation_exchange_send_presentation(request: web.BaseRequest): @@ -884,7 +803,7 @@ async def presentation_exchange_send_presentation(request: web.BaseRequest): @docs(tags=["present-proof"], summary="Verify a received presentation") -@match_info_schema(PresExIdMatchInfoSchema()) +@match_info_schema(V10PresExIdMatchInfoSchema()) @response_schema(V10PresentationExchangeSchema(), description="") async def presentation_exchange_verify_presentation(request: web.BaseRequest): """ @@ -959,9 +878,9 @@ async def presentation_exchange_verify_presentation(request: web.BaseRequest): tags=["present-proof"], summary="Send a problem report for presentation exchange", ) -@match_info_schema(PresExIdMatchInfoSchema()) +@match_info_schema(V10PresExIdMatchInfoSchema()) @request_schema(V10PresentationProblemReportRequestSchema()) -@response_schema(PresentProofModuleResponseSchema(), 200, description="") +@response_schema(V10PresentProofModuleResponseSchema(), 200, description="") async def presentation_exchange_problem_report(request: web.BaseRequest): """ Request handler for sending problem report. @@ -1002,8 +921,8 @@ async def presentation_exchange_problem_report(request: web.BaseRequest): @docs(tags=["present-proof"], summary="Remove an existing presentation exchange record") -@match_info_schema(PresExIdMatchInfoSchema()) -@response_schema(PresentProofModuleResponseSchema(), description="") +@match_info_schema(V10PresExIdMatchInfoSchema()) +@response_schema(V10PresentProofModuleResponseSchema(), description="") async def presentation_exchange_remove(request: web.BaseRequest): """ Request handler for removing a presentation exchange record. diff --git a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py index 8772cac8ec..62a1e2a12c 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/tests/test_manager.py @@ -721,25 +721,23 @@ async def test_receive_presentation(self): }, }, presentation={ - "proof": { - "proofs": [], - "requested_proof": { - "revealed_attrs": { - "0_favourite_uuid": { - "sub_proof_index": 0, - "raw": "potato", - "encoded": "12345678901234567890", - }, - "1_icon_uuid": { - "sub_proof_index": 1, - "raw": "cG90YXRv", - "encoded": "12345678901234567890", - }, + "proof": {"proofs": []}, + "requested_proof": { + "revealed_attrs": { + "0_favourite_uuid": { + "sub_proof_index": 0, + "raw": "potato", + "encoded": "12345678901234567890", + }, + "1_icon_uuid": { + "sub_proof_index": 1, + "raw": "cG90YXRv", + "encoded": "12345678901234567890", }, - "self_attested_attrs": {}, - "unrevealed_attrs": {}, - "predicates": {}, }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {}, }, "identifiers": [ { @@ -813,25 +811,23 @@ async def test_receive_presentation_oob(self): }, }, presentation={ - "proof": { - "proofs": [], - "requested_proof": { - "revealed_attrs": { - "0_favourite_uuid": { - "sub_proof_index": 0, - "raw": "potato", - "encoded": "12345678901234567890", - }, - "1_icon_uuid": { - "sub_proof_index": 1, - "raw": "cG90YXRv", - "encoded": "12345678901234567890", - }, + "proof": {"proofs": []}, + "requested_proof": { + "revealed_attrs": { + "0_favourite_uuid": { + "sub_proof_index": 0, + "raw": "potato", + "encoded": "12345678901234567890", + }, + "1_icon_uuid": { + "sub_proof_index": 1, + "raw": "cG90YXRv", + "encoded": "12345678901234567890", }, - "self_attested_attrs": {}, - "unrevealed_attrs": {}, - "predicates": {}, }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {}, }, "identifiers": [ { diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index d95845888f..a50b1d4008 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -4,6 +4,8 @@ import logging import time +from typing import Tuple + from ....connections.models.conn_record import ConnRecord from ....core.error import BaseError from ....core.profile import Profile @@ -19,11 +21,11 @@ from ..indy.xform import indy_proof_req2non_revoc_intervals from .models.pres_exchange import V20PresExRecord +from .messages.pres import V20Pres from .messages.pres_ack import V20PresAck from .messages.pres_format import V20PresFormat from .messages.pres_proposal import V20PresProposal from .messages.pres_request import V20PresRequest -from .messages.pres import V20Pres LOGGER = logging.getLogger(__name__) @@ -228,7 +230,7 @@ async def create_pres( pres_ex_record: V20PresExRecord, requested_credentials: dict, comment: str = None, - ): + ) -> Tuple[V20PresExRecord, V20Pres]: """ Create a presentation. @@ -446,7 +448,7 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): presentation exchange record, retrieved and updated """ - pres = message.indy_proof() + pres = message.attachment(V20PresFormat.Format.INDY) thread_id = message._thread_id conn_id_filter = ( @@ -468,13 +470,13 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): # Check for bait-and-switch in presented attribute values vs. proposal if pres_ex_record.pres_proposal: pres_preview = IndyPresPreview.deserialize( - V20PresProposal.deserialize( - pres_ex_record.pres_proposal - ).attachment(V20PresFormat.Format.INDY) + V20PresProposal.deserialize(pres_ex_record.pres_proposal).attachment( + V20PresFormat.Format.INDY + ) ) proof_req = V20PresRequest.deserialize( pres_ex_record.pres_request - ).attachment() + ).attachment(V20PresFormat.Format.INDY) for (reft, attr_spec) in pres["requested_proof"]["revealed_attrs"].items(): name = proof_req["requested_attributes"][reft]["name"] diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py index 3bda67b719..d401fccec0 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -63,6 +63,11 @@ def aka(self) -> str: """Accessor for alternative identifier list.""" return self.value.aka + @property + def api(self) -> str: + """Admin API specifier.""" + return self.name.lower() + def validate_proposal_attach(self, data: Mapping): """Raise ValidationError for wrong proposal~attach content.""" if self is V20PresFormat.Format.INDY: diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py index 88c54e38ca..28fbee8ded 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py @@ -41,6 +41,10 @@ def test_get_completeness(self): assert V20PresFormat.Format.get("Indy") is V20PresFormat.Format.INDY assert V20PresFormat.Format.get("HL/INDY").aries == "hlindy-zkp-v1.0" assert "indy" in V20PresFormat.Format.get("HL/INDY").aka + assert ( + V20PresFormat.Format.get("HL/INDY").api + in V20PresFormat.Format.get("hl-indy").aka + ) assert ( V20PresFormat.Format.get("JSON-LD").aries == "dif/presentation-exchange/definitions@v1.0" diff --git a/aries_cloudagent/protocols/present_proof/v2_0/routes.py b/aries_cloudagent/protocols/present_proof/v2_0/routes.py new file mode 100644 index 0000000000..087273dc70 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/routes.py @@ -0,0 +1,1102 @@ +"""Admin routes for presentations.""" + +import json + +from typing import Mapping + +from aiohttp import web +from aiohttp_apispec import ( + docs, + match_info_schema, + querystring_schema, + request_schema, + response_schema, +) +from marshmallow import fields, validate, validates_schema, ValidationError + +from ....admin.request_context import AdminRequestContext +from ....connections.models.conn_record import ConnRecord +from ....indy.holder import IndyHolder, IndyHolderError +from ....indy.util import generate_pr_nonce +from ....ledger.error import LedgerError +from ....messaging.decorators.attach_decorator import AttachDecorator +from ....messaging.models.base import BaseModelError +from ....messaging.models.openapi import OpenAPISchema +from ....messaging.valid import ( + INDY_EXTRA_WQL, + INT_EPOCH, + NUM_STR_NATURAL, + NUM_STR_WHOLE, + UUIDFour, + UUID4, +) +from ....storage.error import StorageError, StorageNotFoundError +from ....utils.tracing import trace_event, get_timer, AdminAPIMessageTracingSchema +from ....wallet.error import WalletNotFoundError + +from ...problem_report.v1_0 import internal_error +from ...problem_report.v1_0.message import ProblemReport + +from ..indy.cred_precis import IndyCredPrecisSchema +from ..indy.proof_request import IndyProofRequestSchema +from ..indy.pres_preview import IndyPresPreview, IndyPresPreviewSchema +from ..indy.requested_creds import ( + IndyRequestedCredsRequestedAttrSchema, + IndyRequestedCredsRequestedPredSchema, +) + +from .manager import V20PresManager +from .message_types import PRES_20_REQUEST, SPEC_URI +from .messages.pres_format import V20PresFormat +from .messages.pres_proposal import V20PresProposal +from .messages.pres_request import V20PresRequest +from .models.pres_exchange import V20PresExRecord, V20PresExRecordSchema + + +class V20PresentProofModuleResponseSchema(OpenAPISchema): + """Response schema for Present Proof Module.""" + + +class V20PresExRecordListQueryStringSchema(OpenAPISchema): + """Parameters and validators for presentation exchange list query.""" + + connection_id = fields.UUID( + description="Connection identifier", + required=False, + example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 + ) + thread_id = fields.UUID( + description="Thread identifier", + required=False, + example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 + ) + role = fields.Str( + description="Role assigned in presentation exchange", + required=False, + validate=validate.OneOf( + [ + getattr(V20PresExRecord, m) + for m in vars(V20PresExRecord) + if m.startswith("ROLE_") + ] + ), + ) + state = fields.Str( + description="Presentation exchange state", + required=False, + validate=validate.OneOf( + [ + getattr(V20PresExRecord, m) + for m in vars(V20PresExRecord) + if m.startswith("STATE_") + ] + ), + ) + + +class V20PresExRecordListSchema(OpenAPISchema): + """Result schema for a presentation exchange query.""" + + results = fields.List( + fields.Nested(V20PresExRecordSchema()), + description="Presentation exchange records", + ) + + +class DIFPresPreviewSchema(OpenAPISchema): + """DIF presentation preview schema placeholder.""" + + some_dif = fields.Str( + description="Placeholder for W3C/DIF/JSON-LD presentation preview format", + required=False, + ) + + +class DIFPresRequestSchema(OpenAPISchema): + """DIF presentation request schema placeholder.""" + + some_dif = fields.Str( + description="Placeholder for W3C/DIF/JSON-LD presentation request format", + required=False, + ) + + +class V20PresPreviewByFormatSchema(OpenAPISchema): + """Presentation preview per format.""" + + indy = fields.Nested( + IndyPresPreviewSchema, + required=False, + description="Presentation preview for indy", + ) + dif = fields.Nested( + DIFPresPreviewSchema, + required=False, + description="Presentation preview for DIF", + ) + + @validates_schema + def validate_fields(self, data, **kwargs): + """ + Validate schema fields. + + Data must have indy, dif, or both. + + Args: + data: The data to validate + + Raises: + ValidationError: if data has neither indy nor dif + + """ + if not any(f.api in data for f in V20PresFormat.Format): + raise ValidationError( + "V20PresPreviewByFormatSchema requires indy, dif, or both" + ) + + +class V20PresProposalRequestSchema(AdminAPIMessageTracingSchema): + """Request schema for sending a presentation proposal admin message.""" + + connection_id = fields.UUID( + description="Connection identifier", required=True, example=UUIDFour.EXAMPLE + ) + comment = fields.Str( + description="Human-readable comment", required=False, allow_none=True + ) + presentation_preview = fields.Nested( + V20PresPreviewByFormatSchema(), + required=True, + ) + auto_present = fields.Boolean( + description=( + "Whether to respond automatically to presentation requests, building " + "and presenting requested proof" + ), + required=False, + default=False, + ) + trace = fields.Bool( + description="Whether to trace event (default false)", + required=False, + example=False, + ) + + +class V20PresRequestByFormatSchema(OpenAPISchema): + """Presentation preview per format.""" + + indy = fields.Nested( + IndyProofRequestSchema, + required=False, + description="Presentation request for indy", + ) + dif = fields.Nested( + DIFPresRequestSchema, + required=False, + description="Presentation preview for DIF", + ) + + @validates_schema + def validate_fields(self, data, **kwargs): + """ + Validate schema fields. + + Data must have indy, dif, or both. + + Args: + data: The data to validate + + Raises: + ValidationError: if data has neither indy nor dif + + """ + if not any(f.api in data for f in V20PresFormat.Format): + raise ValidationError( + "V20PresRequestByFormatSchema requires indy, dif, or both" + ) + + +class V20PresCreateRequestRequestSchema(AdminAPIMessageTracingSchema): + """Request schema for creating a proof request free of any connection.""" + + presentation_request = fields.Nested(IndyProofRequestSchema(), required=True) + comment = fields.Str(required=False, allow_none=True) + trace = fields.Bool( + description="Whether to trace event (default false)", + required=False, + example=False, + ) + + +class V20PresSendRequestRequestSchema(V20PresCreateRequestRequestSchema): + """Request schema for sending a proof request on a connection.""" + + connection_id = fields.UUID( + description="Connection identifier", required=True, example=UUIDFour.EXAMPLE + ) + + +class V20PresRequestSchema(AdminAPIMessageTracingSchema): + """Request schema for sending a presentation.""" + + self_attested_attributes = fields.Dict( + description="Self-attested attributes to build into proof", + required=True, + keys=fields.Str(example="attr_name"), # marshmallow/apispec v3.0 ignores + values=fields.Str( + example="self_attested_value", + description=( + "Self-attested attribute values to use in requested-credentials " + "structure for proof construction" + ), + ), + ) + requested_attributes = fields.Dict( + description=( + "Nested object mapping proof request attribute referents to " + "requested-attribute specifiers" + ), + required=True, + keys=fields.Str(example="attr_referent"), # marshmallow/apispec v3.0 ignores + values=fields.Nested(IndyRequestedCredsRequestedAttrSchema()), + ) + requested_predicates = fields.Dict( + description=( + "Nested object mapping proof request predicate referents to " + "requested-predicate specifiers" + ), + required=True, + keys=fields.Str(example="pred_referent"), # marshmallow/apispec v3.0 ignores + values=fields.Nested(IndyRequestedCredsRequestedPredSchema()), + ) + trace = fields.Bool( + description="Whether to trace event (default false)", + required=False, + example=False, + ) + + +class V20CredentialsFetchQueryStringSchema(OpenAPISchema): + """Parameters and validators for credentials fetch request query string.""" + + referent = fields.Str( + description="Proof request referents of interest, comma-separated", + required=False, + example="1_name_uuid,2_score_uuid", + ) + start = fields.Str( + description="Start index", + required=False, + strict=True, + **NUM_STR_WHOLE, + ) + count = fields.Str( + description="Maximum number to retrieve", + required=False, + **NUM_STR_NATURAL, + ) + extra_query = fields.Str( + description="(JSON) object mapping referents to extra WQL queries", + required=False, + **INDY_EXTRA_WQL, + ) + + +class V20PresProblemReportRequestSchema(OpenAPISchema): + """Request schema for sending problem report.""" + + explain_ltxt = fields.Str(required=True) + + +class V20PresExIdMatchInfoSchema(OpenAPISchema): + """Path parameters and validators for request taking presentation exchange id.""" + + pres_ex_id = fields.Str( + description="Presentation exchange identifier", required=True, **UUID4 + ) + + +async def _add_nonce(indy_proof_request: Mapping) -> Mapping: + """Add nonce to indy proof request if need be.""" + + if not indy_proof_request.get("nonce"): + indy_proof_request["nonce"] = await generate_pr_nonce() + return indy_proof_request + + +def _formats_attach(by_format: Mapping, spec: str) -> Mapping: + """Break out formats and proposals/requests/presentations for v2.0 messages.""" + + return { + "formats": [ + V20PresFormat( + attach_id=fmt_aka, + format_=V20PresFormat.Format.get(fmt_aka), + ) + for fmt_aka in by_format + ], + f"{spec}_attach": [ + AttachDecorator.data_base64(mapping=item_by_fmt, ident=fmt_aka) + for (fmt_aka, item_by_fmt) in by_format.items() + ], + } + + +@docs(tags=["present-proof v2.0"], summary="Fetch all present-proof exchange records") +@querystring_schema(V20PresExRecordListQueryStringSchema) +@response_schema(V20PresExRecordListSchema(), 200, description="") +async def present_proof_list(request: web.BaseRequest): + """ + Request handler for searching presentation exchange records. + + Args: + request: aiohttp request object + + Returns: + The presentation exchange list response + + """ + context: AdminRequestContext = request["context"] + + tag_filter = {} + if "thread_id" in request.query and request.query["thread_id"] != "": + tag_filter["thread_id"] = request.query["thread_id"] + post_filter = { + k: request.query[k] + for k in ("connection_id", "role", "state") + if request.query.get(k, "") != "" + } + + try: + async with context.session() as session: + records = await V20PresExRecord.query( + session=session, + tag_filter=tag_filter, + post_filter_positive=post_filter, + ) + results = [record.serialize() for record in records] + except (StorageError, BaseModelError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + return web.json_response({"results": results}) + + +@docs( + tags=["present-proof v2.0"], + summary="Fetch a single presentation exchange record", +) +@match_info_schema(V20PresExIdMatchInfoSchema()) +@response_schema(V20PresExRecordSchema(), 200, description="") +async def present_proof_retrieve(request: web.BaseRequest): + """ + Request handler for fetching a single presentation exchange record. + + Args: + request: aiohttp request object + + Returns: + The presentation exchange record response + + """ + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + + pres_ex_id = request.match_info["pres_ex_id"] + pres_ex_record = None + try: + async with context.session() as session: + pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + result = pres_ex_record.serialize() + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + except (BaseModelError, StorageError) as err: + return await internal_error( + err, web.HTTPBadRequest, pres_ex_record, outbound_handler + ) + + return web.json_response(result) + + +@docs( + tags=["present-proof v2.0"], + summary="Fetch credentials from wallet for presentation request", +) +@match_info_schema(V20PresExIdMatchInfoSchema()) +@querystring_schema(V20CredentialsFetchQueryStringSchema()) +@response_schema(IndyCredPrecisSchema(many=True), 200, description="") +async def present_proof_credentials_list(request: web.BaseRequest): + """ + Request handler for searching applicable credential records. + + Args: + request: aiohttp request object + + Returns: + The credential list response + + """ + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + + pres_ex_id = request.match_info["pres_ex_id"] + referents = request.query.get("referent") + pres_referents = (r.strip() for r in referents.split(",")) if referents else () + + try: + async with context.session() as session: + pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + start = request.query.get("start") + count = request.query.get("count") + + # url encoded json extra_query + encoded_extra_query = request.query.get("extra_query") or "{}" + extra_query = json.loads(encoded_extra_query) + + # defaults + start = int(start) if isinstance(start, str) else 0 + count = int(count) if isinstance(count, str) else 10 + + holder = context.profile.inject(IndyHolder) + try: + pres_request = pres_ex_record.pres_request.attachment(V20PresFormat.Format.INDY) + # TODO allow for choice of format from pres req + credentials = await holder.get_credentials_for_presentation_request_by_referent( + pres_request, + pres_referents, + start, + count, + extra_query, + ) + except IndyHolderError as err: + return await internal_error( + err, web.HTTPBadRequest, pres_ex_record, outbound_handler + ) + + pres_ex_record.log_state( + "Retrieved presentation credentials", + { + "presentation_exchange_id": pres_ex_id, + "referents": pres_referents, + "extra_query": extra_query, + "credentials": credentials, + }, + settings=context.settings, + ) + return web.json_response(credentials) + + +@docs(tags=["present-proof v2.0"], summary="Sends a presentation proposal") +@request_schema(V20PresProposalRequestSchema()) +@response_schema(V20PresExRecordSchema(), 200, description="") +async def present_proof_send_proposal(request: web.BaseRequest): + """ + Request handler for sending a presentation proposal. + + Args: + request: aiohttp request object + + Returns: + The presentation exchange details + + """ + r_time = get_timer() + + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + + body = await request.json() + + comment = body.get("comment") + conn_id = body.get("connection_id") + + pres_preview = body.get("presentation_preview") + conn_record = None + async with context.session() as session: + try: + conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + pres_proposal_message = V20PresProposal( + comment=comment, + **_formats_attach(pres_preview, "proposal"), + ) + except (BaseModelError, StorageError) as err: + return await internal_error( + err, web.HTTPBadRequest, conn_record, outbound_handler + ) + + if not conn_record.is_ready: + raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + + trace_msg = body.get("trace") + pres_proposal_message.assign_trace_decorator( + context.settings, + trace_msg, + ) + auto_present = body.get( + "auto_present", context.settings.get("debug.auto_respond_presentation_request") + ) + + pres_manager = V20PresManager(context.profile) + pres_ex_record = None + try: + pres_ex_record = await pres_manager.create_exchange_for_proposal( + conn_id=conn_id, + pres_proposal_message=pres_proposal_message, + auto_present=auto_present, + ) + result = pres_ex_record.serialize() + except (BaseModelError, StorageError) as err: + return await internal_error( + err, + web.HTTPBadRequest, + pres_ex_record or conn_record, + outbound_handler, + ) + + await outbound_handler(pres_proposal_message, connection_id=conn_id) + + trace_event( + context.settings, + pres_proposal_message, + outcome="presentation_exchange_propose.END", + perf_counter=r_time, + ) + + return web.json_response(result) + + +@docs( + tags=["present-proof v2.0"], + summary=("Creates a presentation request not bound to any proposal or connection"), +) +@request_schema(V20PresCreateRequestRequestSchema()) +@response_schema(V20PresExRecordSchema(), 200, description="") +async def present_proof_create_request(request: web.BaseRequest): + """ + Request handler for creating a free presentation request. + + The presentation request will not be bound to any proposal + or existing connection. + + Args: + request: aiohttp request object + + Returns: + The presentation exchange details + + """ + r_time = get_timer() + + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + + body = await request.json() + + comment = body.get("comment") + pres_request_spec = body.get("presentation_request") + if pres_request_spec and V20PresFormat.Format.INDY.api in pres_request_spec: + await _add_nonce(pres_request_spec[V20PresFormat.Format.INDY.api]) + + pres_request_message = V20PresRequest( + comment=comment, + **_formats_attach(pres_request_spec, "request_presentations"), + ) + trace_msg = body.get("trace") + pres_request_message.assign_trace_decorator( + context.settings, + trace_msg, + ) + + pres_manager = V20PresManager(context.profile) + pres_ex_record = None + try: + pres_ex_record = await pres_manager.create_exchange_for_request( + conn_id=None, + pres_request_message=pres_request_message, + ) + result = pres_ex_record.serialize() + except (BaseModelError, StorageError) as err: + return await internal_error( + err, web.HTTPBadRequest, pres_ex_record, outbound_handler + ) + + await outbound_handler(pres_request_message, connection_id=None) + + trace_event( + context.settings, + pres_request_message, + outcome="presentation_exchange_create_request.END", + perf_counter=r_time, + ) + + return web.json_response(result) + + +@docs( + tags=["present-proof v2.0"], + summary="Sends a free presentation request not bound to any proposal", +) +@request_schema(V20PresSendRequestRequestSchema()) +@response_schema(V20PresExRecordSchema(), 200, description="") +async def present_proof_send_free_request(request: web.BaseRequest): + """ + Request handler for sending a presentation request free from any proposal. + + Args: + request: aiohttp request object + + Returns: + The presentation exchange details + + """ + r_time = get_timer() + + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + + body = await request.json() + + conn_id = body.get("connection_id") + async with context.session() as session: + try: + conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + except StorageNotFoundError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + if not conn_record.is_ready: + raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + + comment = body.get("comment") + pres_request_spec = body.get("presentation_request") + if pres_request_spec and V20PresFormat.Format.INDY.api in pres_request_spec: + await _add_nonce(pres_request_spec[V20PresFormat.Format.INDY.api]) + pres_request_message = V20PresRequest( + comment=comment, + **_formats_attach(pres_request_spec, "request_presentations"), + ) + trace_msg = body.get("trace") + pres_request_message.assign_trace_decorator( + context.settings, + trace_msg, + ) + + pres_manager = V20PresManager(context.profile) + pres_ex_record = None + try: + (pres_ex_record) = await pres_manager.create_exchange_for_request( + conn_id=conn_id, + pres_request_message=pres_request_message, + ) + result = pres_ex_record.serialize() + except (BaseModelError, StorageError) as err: + return await internal_error( + err, + web.HTTPBadRequest, + pres_ex_record or conn_record, + outbound_handler, + ) + + await outbound_handler(pres_request_message, connection_id=conn_id) + + trace_event( + context.settings, + pres_request_message, + outcome="presentation_exchange_send_request.END", + perf_counter=r_time, + ) + + return web.json_response(result) + + +@docs( + tags=["present-proof v2.0"], + summary="Sends a presentation request in reference to a proposal", +) +@match_info_schema(V20PresExIdMatchInfoSchema()) +@request_schema(AdminAPIMessageTracingSchema()) +@response_schema(V20PresExRecordSchema(), 200, description="") +async def present_proof_send_bound_request(request: web.BaseRequest): + """ + Request handler for sending a presentation request bound to a proposal. + + Args: + request: aiohttp request object + + Returns: + The presentation exchange details + + """ + r_time = get_timer() + + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + + body = await request.json() + + pres_ex_id = request.match_info["pres_ex_id"] + pres_ex_record = None + async with context.session() as session: + try: + pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + except StorageNotFoundError as err: + return await internal_error( + err, web.HTTPNotFound, pres_ex_record, outbound_handler + ) + + if pres_ex_record.state != (V20PresExRecord.STATE_PROPOSAL_RECEIVED): + raise web.HTTPBadRequest( + reason=( + f"Presentation exchange {pres_ex_id} " + f"in {pres_ex_record.state} state " + f"(must be {V20PresExRecord.STATE_PROPOSAL_RECEIVED})" + ) + ) + conn_id = pres_ex_record.conn_id + + try: + conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + except StorageError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + if not conn_record.is_ready: + raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + + pres_manager = V20PresManager(context.profile) + try: + ( + pres_ex_record, + pres_request_message, + ) = await pres_manager.create_bound_request(pres_ex_record) + result = pres_ex_record.serialize() + except (BaseModelError, StorageError) as err: + return await internal_error( + err, + web.HTTPBadRequest, + pres_ex_record or conn_record, + outbound_handler, + ) + + trace_msg = body.get("trace") + pres_request_message.assign_trace_decorator( + context.settings, + trace_msg, + ) + await outbound_handler(pres_request_message, connection_id=conn_id) + + trace_event( + context.settings, + pres_request_message, + outcome="presentation_exchange_send_request.END", + perf_counter=r_time, + ) + + return web.json_response(result) + + +@docs(tags=["present-proof v2.0"], summary="Sends a proof presentation") +@match_info_schema(V20PresExIdMatchInfoSchema()) +@request_schema(V20PresRequestSchema()) +@response_schema(V20PresExRecordSchema(), description="") +async def present_proof_send_presentation(request: web.BaseRequest): + """ + Request handler for sending a presentation. + + Args: + request: aiohttp request object + + Returns: + The presentation exchange details + + """ + r_time = get_timer() + + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + pres_ex_id = request.match_info["pres_ex_id"] + body = await request.json() + + pres_ex_record = None + async with context.session() as session: + try: + pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + except StorageNotFoundError as err: + return await internal_error( + err, web.HTTPNotFound, pres_ex_record, outbound_handler + ) + + if pres_ex_record.state != (V20PresExRecord.STATE_REQUEST_RECEIVED): + raise web.HTTPBadRequest( + reason=( + f"Presentation exchange {pres_ex_id} " + f"in {pres_ex_record.state} state " + f"(must be {V20PresExRecord.STATE_REQUEST_RECEIVED})" + ) + ) + + conn_id = pres_ex_record.conn_id + try: + conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + except StorageNotFoundError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + if not conn_record.is_ready: + raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + + pres_manager = V20PresManager(context.profile) + try: + pres_ex_record, pres_message = await pres_manager.create_pres( + pres_ex_record, + { + "self_attested_attributes": body.get("self_attested_attributes"), + "requested_attributes": body.get("requested_attributes"), + "requested_predicates": body.get("requested_predicates"), + }, + comment=body.get("comment"), + ) + result = pres_ex_record.serialize() + except ( + BaseModelError, + IndyHolderError, + LedgerError, + StorageError, + WalletNotFoundError, + ) as err: + return await internal_error( + err, + web.HTTPBadRequest, + pres_ex_record or conn_record, + outbound_handler, + ) + + trace_msg = body.get("trace") + pres_message.assign_trace_decorator( + context.settings, + trace_msg, + ) + await outbound_handler(pres_message, connection_id=conn_id) + + trace_event( + context.settings, + pres_message, + outcome="presentation_exchange_send_request.END", + perf_counter=r_time, + ) + + return web.json_response(result) + + +@docs(tags=["present-proof v2.0"], summary="Verify a received presentation") +@match_info_schema(V20PresExIdMatchInfoSchema()) +@response_schema(V20PresExRecordSchema(), description="") +async def present_proof_verify_presentation(request: web.BaseRequest): + """ + Request handler for verifying a presentation request. + + Args: + request: aiohttp request object + + Returns: + The presentation exchange details + + """ + r_time = get_timer() + + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + + pres_ex_id = request.match_info["pres_ex_id"] + + pres_ex_record = None + async with context.session() as session: + try: + pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + except StorageNotFoundError as err: + return await internal_error( + err, web.HTTPNotFound, pres_ex_record, outbound_handler + ) + + if pres_ex_record.state != (V20PresExRecord.STATE_PRESENTATION_RECEIVED): + raise web.HTTPBadRequest( + reason=( + f"Presentation exchange {pres_ex_id} " + f"in {pres_ex_record.state} state " + f"(must be {V20PresExRecord.STATE_PRESENTATION_RECEIVED})" + ) + ) + + conn_id = pres_ex_record.conn_id + + try: + conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + except StorageError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + if not conn_record.is_ready: + raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + + pres_manager = V20PresManager(context.profile) + try: + pres_ex_record = await pres_manager.verify_pres(pres_ex_record) + result = pres_ex_record.serialize() + except (LedgerError, BaseModelError) as err: + return await internal_error( + err, web.HTTPBadRequest, pres_ex_record, outbound_handler + ) + + trace_event( + context.settings, + pres_ex_record, + outcome="presentation_exchange_verify.END", + perf_counter=r_time, + ) + + return web.json_response(result) + + +@docs( + tags=["present-proof v2.0"], + summary="Send a problem report for presentation exchange", +) +@match_info_schema(V20PresExIdMatchInfoSchema()) +@request_schema(V20PresProblemReportRequestSchema()) +@response_schema(V20PresentProofModuleResponseSchema(), 200, description="") +async def present_proof_problem_report(request: web.BaseRequest): + """ + Request handler for sending problem report. + + Args: + request: aiohttp request object + + """ + r_time = get_timer() + + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + + pres_ex_id = request.match_info["pres_ex_id"] + body = await request.json() + + try: + async with await context.session() as session: + pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + + error_result = ProblemReport(explain_ltxt=body["explain_ltxt"]) + error_result.assign_thread_id(pres_ex_record.thread_id) + + await outbound_handler(error_result, connection_id=pres_ex_record.conn_id) + + trace_event( + context.settings, + error_result, + outcome="presentation_exchange_problem_report.END", + perf_counter=r_time, + ) + + return web.json_response({}) + + +@docs( + tags=["present-proof v2.0"], + summary="Remove an existing presentation exchange record", +) +@match_info_schema(V20PresExIdMatchInfoSchema()) +@response_schema(V20PresentProofModuleResponseSchema(), description="") +async def present_proof_remove(request: web.BaseRequest): + """ + Request handler for removing a presentation exchange record. + + Args: + request: aiohttp request object + + """ + context: AdminRequestContext = request["context"] + outbound_handler = request["outbound_message_router"] + + pres_ex_id = request.match_info["pres_ex_id"] + pres_ex_record = None + try: + async with context.session() as session: + pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + await pres_ex_record.delete_record(session) + except StorageNotFoundError as err: + return await internal_error( + err, web.HTTPNotFound, pres_ex_record, outbound_handler + ) + except StorageError as err: + return await internal_error( + err, web.HTTPBadRequest, pres_ex_record, outbound_handler + ) + + return web.json_response({}) + + +async def register(app: web.Application): + """Register routes.""" + + app.add_routes( + [ + web.get("/present-proof/records", present_proof_list, allow_head=False), + web.get( + "/present-proof/records/{pres_ex_id}", + present_proof_retrieve, + allow_head=False, + ), + web.get( + "/present-proof/records/{pres_ex_id}/credentials", + present_proof_credentials_list, + allow_head=False, + ), + web.post( + "/present-proof/send-proposal", + present_proof_send_proposal, + ), + web.post( + "/present-proof/create-request", + present_proof_create_request, + ), + web.post( + "/present-proof/send-request", + present_proof_send_free_request, + ), + web.post( + "/present-proof/records/{pres_ex_id}/send-request", + present_proof_send_bound_request, + ), + web.post( + "/present-proof/records/{pres_ex_id}/send-presentation", + present_proof_send_presentation, + ), + web.post( + "/present-proof/records/{pres_ex_id}/verify-presentation", + present_proof_verify_presentation, + ), + web.post( + "/present-proof/records/{pres_ex_id}/problem-report", + present_proof_problem_report, + ), + web.delete( + "/present-proof/records/{pres_ex_id}", + present_proof_remove, + ), + ] + ) + + +def post_process_routes(app: web.Application): + """Amend swagger API.""" + + # Add top-level tags description + if "tags" not in app._state["swagger_dict"]: + app._state["swagger_dict"]["tags"] = [] + app._state["swagger_dict"]["tags"].append( + { + "name": "present-proof v2.0", + "description": "Proof presentation", + "externalDocs": {"description": "Specification", "url": SPEC_URI}, + } + ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py index 51c7a26b06..04bc200881 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py @@ -231,9 +231,7 @@ async def test_receive_proposal(self): connection_record = async_mock.MagicMock(connection_id=CONN_ID) proposal = V20PresProposal() - with async_mock.patch.object( - V20PresExRecord, "save", autospec=True - ) as save_ex: + with async_mock.patch.object(V20PresExRecord, "save", autospec=True) as save_ex: px_rec = await self.manager.receive_pres_proposal( proposal, connection_record, @@ -276,9 +274,7 @@ async def test_create_exchange_for_request(self): request.indy_proof_request = async_mock.MagicMock() request._thread_id = "dummy" - with async_mock.patch.object( - V20PresExRecord, "save", autospec=True - ) as save_ex: + with async_mock.patch.object(V20PresExRecord, "save", autospec=True) as save_ex: px_rec = await self.manager.create_exchange_for_request(CONN_ID, request) save_ex.assert_called_once() @@ -290,9 +286,7 @@ async def test_create_exchange_for_request(self): async def test_receive_pres_request(self): px_rec_in = V20PresExRecord() - with async_mock.patch.object( - V20PresExRecord, "save", autospec=True - ) as save_ex: + with async_mock.patch.object(V20PresExRecord, "save", autospec=True) as save_ex: px_rec_out = await self.manager.receive_pres_request(px_rec_in) save_ex.assert_called_once() @@ -316,9 +310,7 @@ async def test_create_pres(self): AttachDecorator.data_base64(indy_proof_req, ident="indy") ], ) - px_rec_in = V20PresExRecord( - pres_request=pres_request.serialize() - ) + px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) more_magic_rr = async_mock.MagicMock( get_or_fetch_local_tails_path=async_mock.CoroutineMock( return_value="/tmp/sample/tails/path" @@ -369,9 +361,7 @@ async def test_create_pres_proof_req_non_revoc_interval_none(self): AttachDecorator.data_base64(indy_proof_req, ident="indy") ], ) - px_rec_in = V20PresExRecord( - pres_request=pres_request.serialize() - ) + px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) more_magic_rr = async_mock.MagicMock( get_or_fetch_local_tails_path=async_mock.CoroutineMock( @@ -440,9 +430,7 @@ async def test_create_pres_self_asserted(self): AttachDecorator.data_base64(indy_proof_req, ident="indy") ], ) - px_rec_in = V20PresExRecord( - pres_request=pres_request.serialize() - ) + px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) more_magic_rr = async_mock.MagicMock( get_or_fetch_local_tails_path=async_mock.CoroutineMock( @@ -475,7 +463,6 @@ async def test_create_pres_self_asserted(self): save_ex.assert_called_once() assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT - ''' async def test_create_pres_no_revocation(self): Ledger = async_mock.MagicMock(BaseLedger, autospec=True) self.ledger = Ledger() @@ -487,15 +474,24 @@ async def test_create_pres_no_revocation(self): ) self.profile.context.injector.bind_instance(BaseLedger, self.ledger) - px_rec_in = V20PresExRecord() indy_proof_req = await PRES_PREVIEW.indy_proof_request( name=PROOF_REQ_NAME, version=PROOF_REQ_VERSION, nonce=PROOF_REQ_NONCE, ledger=self.ledger, ) - - px_rec_in.pres_request = indy_proof_req # FIXME + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) Holder = async_mock.MagicMock(IndyHolder, autospec=True) self.holder = Holder() @@ -546,15 +542,24 @@ async def test_create_pres_no_revocation(self): assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT async def test_create_pres_bad_revoc_state(self): - px_rec_in = V20PresExRecord() indy_proof_req = await PRES_PREVIEW.indy_proof_request( name=PROOF_REQ_NAME, version=PROOF_REQ_VERSION, nonce=PROOF_REQ_NONCE, ledger=self.ledger, ) - - px_rec_in.pres_request = indy_proof_req # FIXME + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) Holder = async_mock.MagicMock(IndyHolder, autospec=True) self.holder = Holder() @@ -614,15 +619,24 @@ async def test_create_pres_bad_revoc_state(self): await self.manager.create_pres(px_rec_in, req_creds) async def test_create_pres_multi_matching_proposal_creds_names(self): - px_rec_in = V20PresExRecord() indy_proof_req = await PRES_PREVIEW_NAMES.indy_proof_request( name=PROOF_REQ_NAME, version=PROOF_REQ_VERSION, nonce=PROOF_REQ_NONCE, ledger=self.ledger, ) - - px_rec_in.pres_request = indy_proof_req # FIXME + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) Holder = async_mock.MagicMock(IndyHolder, autospec=True) self.holder = Holder() @@ -707,13 +721,24 @@ async def test_create_pres_multi_matching_proposal_creds_names(self): assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT async def test_no_matching_creds_for_proof_req(self): - px_rec_in = V20PresExRecord() indy_proof_req = await PRES_PREVIEW.indy_proof_request( name=PROOF_REQ_NAME, version=PROOF_REQ_VERSION, nonce=PROOF_REQ_NONCE, ledger=self.ledger, ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) get_creds = async_mock.CoroutineMock(return_value=()) self.holder.get_credentials_for_presentation_request_by_referent = get_creds @@ -738,74 +763,78 @@ async def test_no_matching_creds_for_proof_req(self): async def test_receive_pres(self): connection_record = async_mock.MagicMock(connection_id=CONN_ID) - - px_rec_dummy = V20PresExRecord( - pres_proposal={ # FIXME - "presentation_proposal": { - "@type": DIDCommPrefix.qualify_current( - "present-proof/1.0/presentation-preview" - ), - "attributes": [ - {"name": "favourite", "cred_def_id": CD_ID, "value": "potato"}, - {"name": "icon", "cred_def_id": CD_ID, "value": "cG90YXRv"}, - ], - "predicates": [], - } - }, - pres_request={ # FIXME - "name": "proof-request", - "version": "1.0", - "nonce": "1234567890", - "requested_attributes": { - "0_favourite_uuid": { - "name": "favourite", - "restrictions": [{"cred_def_id": CD_ID}], - }, - "1_icon_uuid": { - "name": "icon", - "restrictions": [{"cred_def_id": CD_ID}], + indy_proof_req = await PRES_PREVIEW.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + indy_proof = { + "proof": {"proofs": []}, + "requested_proof": { + "revealed_attrs": { + "0_player_uuid": { + "sub_proof_index": 0, + "raw": "Richie Knucklez", + "encoded": "12345678901234567890", }, - }, - }, - presation={ # FIXME - "proof": { - "proofs": [], - "requested_proof": { - "revealed_attrs": { - "0_favourite_uuid": { - "sub_proof_index": 0, - "raw": "potato", - "encoded": "12345678901234567890", - }, - "1_icon_uuid": { - "sub_proof_index": 1, - "raw": "cG90YXRv", - "encoded": "12345678901234567890", - }, - }, - "self_attested_attrs": {}, - "unrevealed_attrs": {}, - "predicates": {}, + "1_screencapture_uuid": { + "sub_proof_index": 0, + "raw": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + "encoded": "98765432109876543210", }, }, - "identifiers": [ - { - "schema_id": S_ID, - "cred_def_id": CD_ID, - "rev_reg_id": None, - "timestamp": None, - }, - { - "schema_id": S_ID, - "cred_def_id": CD_ID, - "rev_reg_id": None, - "timestamp": None, - }, - ], + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {"0_highscore_GE_uuid": {"sub_proof_index": 0}}, }, + "identifiers": [ + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + } + ], + } + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + proposal_attach=[ + AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="indy") + ], + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof, ident="indy") + ], ) - message = async_mock.MagicMock() + px_rec_dummy = V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + pres_request=pres_request.serialize(), + ) with async_mock.patch.object( V20PresExRecord, "save", autospec=True ) as save_ex, async_mock.patch.object( @@ -816,184 +845,98 @@ async def test_receive_pres(self): async_mock.MagicMock(return_value=self.profile.session()), ) as session: retrieve_ex.side_effect = [ - StorageNotFoundError("no such record"), + StorageNotFoundError("no such record"), # cover out-of-band px_rec_dummy, ] - px_rec_out = await self.manager.receive_pres( - message, connection_record - ) + px_rec_out = await self.manager.receive_pres(pres, connection_record) assert retrieve_ex.call_count == 2 save_ex.assert_called_once() - assert px_rec_out.state == ( - V20PresExRecord.STATE_PRESENTATION_RECEIVED - ) - - async def test_receive_pres_oob(self): - connection_record = async_mock.MagicMock(connection_id=CONN_ID) - - px_rec_dummy = V20PresExRecord( - pres_proposal # FIXME - "presentation_proposal": { - "@type": DIDCommPrefix.qualify_current( - "present-proof/1.0/presentation-preview" - ), - "attributes": [ - {"name": "favourite", "cred_def_id": CD_ID, "value": "potato"}, - {"name": "icon", "cred_def_id": CD_ID, "value": "cG90YXRv"}, - ], - "predicates": [], - } - }, - pres_request={ # FIXME - "name": "proof-request", - "version": "1.0", - "nonce": "1234567890", - "requested_attributes": { - "0_favourite_uuid": { - "name": "favourite", - "restrictions": [{"cred_def_id": CD_ID}], - }, - "1_icon_uuid": { - "name": "icon", - "restrictions": [{"cred_def_id": CD_ID}], - }, - }, - }, - pres={ # FIXME - "proof": { - "proofs": [], - "requested_proof": { - "revealed_attrs": { - "0_favourite_uuid": { - "sub_proof_index": 0, - "raw": "potato", - "encoded": "12345678901234567890", - }, - "1_icon_uuid": { - "sub_proof_index": 1, - "raw": "cG90YXRv", - "encoded": "12345678901234567890", - }, - }, - "self_attested_attrs": {}, - "unrevealed_attrs": {}, - "predicates": {}, - }, - }, - "identifiers": [ - { - "schema_id": S_ID, - "cred_def_id": CD_ID, - "rev_reg_id": None, - "timestamp": None, - }, - { - "schema_id": S_ID, - "cred_def_id": CD_ID, - "rev_reg_id": None, - "timestamp": None, - }, - ], - }, - ) - message = async_mock.MagicMock() - - with async_mock.patch.object( - V20PresExRecord, "save", autospec=True - ) as save_ex, async_mock.patch.object( - V20PresExRecord, "retrieve_by_tag_filter", autospec=True - ) as retrieve_ex: - retrieve_ex.side_effect = [StorageNotFoundError(), px_rec_dummy] - px_rec_out = await self.manager.receive_pres( - message, connection_record - ) - assert px_rec_out.state == ( - V20PresExRecord.STATE_PRESENTATION_RECEIVED - ) + assert px_rec_out.state == (V20PresExRecord.STATE_PRESENTATION_RECEIVED) async def test_receive_pres_bait_and_switch(self): connection_record = async_mock.MagicMock(connection_id=CONN_ID) - - px_rec_dummy = V20PresExRecord( - pres_proposal={ # FIXME - "presentation_proposal": { - "@type": DIDCommPrefix.qualify_current( - "present-proof/1.0/presentation-preview" - ), - "attributes": [ - { - "name": "favourite", - "cred_def_id": CD_ID, - "value": "no potato", - }, - {"name": "icon", "cred_def_id": CD_ID, "value": "cG90YXRv"}, - ], - "predicates": [], - } - }, - pres_request={ # FIXME - "name": "proof-request", - "version": "1.0", - "nonce": "1234567890", - "requested_attributes": { - "0_favourite_uuid": { - "name": "favourite", - "restrictions": [{"cred_def_id": CD_ID}], + indy_proof_req = await PRES_PREVIEW.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + indy_proof_x = { + "proof": {"proofs": []}, + "requested_proof": { + "revealed_attrs": { + "0_player_uuid": { + "sub_proof_index": 0, + "raw": "Richie Knucklez", + "encoded": "12345678901234567890", }, - "1_icon_uuid": { - "name": "icon", - "restrictions": [{"cred_def_id": CD_ID}], + "1_screencapture_uuid": { # mismatch vs PRES_PREVIEW + "sub_proof_index": 0, + "raw": "bm90IHRoZSBzYW1lIHNjcmVlbiBjYXB0dXJl", + "encoded": "98765432109876543210", }, }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {"0_highscore_GE_uuid": {"sub_proof_index": 0}}, }, - ) - message = async_mock.MagicMock( - indy_proof=async_mock.MagicMock( - return_value={ - "proof": {"proofs": []}, - "requested_proof": { - "revealed_attrs": { - "0_favourite_uuid": { - "sub_proof_index": 0, - "raw": "potato", - "encoded": "12345678901234567890", - }, - "1_icon_uuid": { - "sub_proof_index": 1, - "raw": "cG90YXRv", - "encoded": "23456789012345678901", - }, - }, - "self_attested_attrs": {}, - "unrevealed_attrs": {}, - "predicates": {}, - }, - "identifiers": [ - { - "schema_id": S_ID, - "cred_def_id": CD_ID, - "rev_reg_id": None, - "timestamp": None, - }, - { - "schema_id": S_ID, - "cred_def_id": CD_ID, - "rev_reg_id": None, - "timestamp": None, - }, - ], + "identifiers": [ + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, } - ) + ], + } + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + proposal_attach=[ + AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="indy") + ], + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres_x = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof_x, ident="indy") + ], ) + px_rec_dummy = V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + pres_request=pres_request.serialize(), + pres=pres_x.serialize(), + ) with async_mock.patch.object( V20PresExRecord, "save", autospec=True ) as save_ex, async_mock.patch.object( V20PresExRecord, "retrieve_by_tag_filter", autospec=True ) as retrieve_ex: retrieve_ex.return_value = px_rec_dummy - with self.assertRaises(V20PresManagerError): - await self.manager.receive_pres(message, connection_record) + with self.assertRaises(V20PresManagerError) as context: + await self.manager.receive_pres(pres_x, connection_record) + assert "mismatches" in str(context.exception) async def test_receive_pres_connection_less(self): px_rec_dummy = V20PresExRecord() @@ -1015,46 +958,139 @@ async def test_receive_pres_connection_less(self): ) save_ex.assert_called_once() - assert px_rec_out.state == ( - V20PresExRecord.STATE_PRESENTATION_RECEIVED - ) + assert px_rec_out.state == (V20PresExRecord.STATE_PRESENTATION_RECEIVED) async def test_verify_pres(self): - px_rec_in = V20PresExRecord() - px_rec_in.pres = { # FIXME - "identifiers": [{"schema_id": S_ID, "cred_def_id": CD_ID}] + indy_proof_req = await PRES_PREVIEW.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + indy_proof = { + "proof": {"proofs": []}, + "requested_proof": { + "revealed_attrs": { + "0_player_uuid": { + "sub_proof_index": 0, + "raw": "Richie Knucklez", + "encoded": "12345678901234567890", + }, + "1_screencapture_uuid": { + "sub_proof_index": 0, + "raw": "cG90YXRv", + "encoded": "98765432109876543210", + }, + }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {"0_highscore_GE_uuid": {"sub_proof_index": 0}}, + }, + "identifiers": [ + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + } + ], } + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof, ident="indy") + ], + ) + px_rec_in = V20PresExRecord( + pres_request=pres_request.serialize(), + pres=pres.serialize(), + ) - with async_mock.patch.object( - V20PresExRecord, "save", autospec=True - ) as save_ex: + with async_mock.patch.object(V20PresExRecord, "save", autospec=True) as save_ex: px_rec_out = await self.manager.verify_pres(px_rec_in) save_ex.assert_called_once() assert px_rec_out.state == (V20PresExRecord.STATE_DONE) async def test_verify_pres_with_revocation(self): - px_rec_in = V20PresExRecord() - px_rec_in.pres = { # FIXME + indy_proof_req = await PRES_PREVIEW.indy_proof_request( + name=PROOF_REQ_NAME, + version=PROOF_REQ_VERSION, + nonce=PROOF_REQ_NONCE, + ledger=self.ledger, + ) + indy_proof = { + "proof": {"proofs": []}, + "requested_proof": { + "revealed_attrs": { + "0_player_uuid": { + "sub_proof_index": 0, + "raw": "Richie Knucklez", + "encoded": "12345678901234567890", + }, + "1_screencapture_uuid": { + "sub_proof_index": 0, + "raw": "cG90YXRv", + "encoded": "98765432109876543210", + }, + }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {"0_highscore_GE_uuid": {"sub_proof_index": 0}}, + }, "identifiers": [ { "schema_id": S_ID, "cred_def_id": CD_ID, "rev_reg_id": RR_ID, "timestamp": NOW, - }, - { # cover multiple instances of same rev reg - "schema_id": S_ID, - "cred_def_id": CD_ID, - "rev_reg_id": RR_ID, - "timestamp": NOW, - }, - ] + } + ], } + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof, ident="indy") + ], + ) + px_rec_in = V20PresExRecord( + pres_request=pres_request.serialize(), + pres=pres.serialize(), + ) - with async_mock.patch.object( - V20PresExRecord, "save", autospec=True - ) as save_ex: + with async_mock.patch.object(V20PresExRecord, "save", autospec=True) as save_ex: px_rec_out = await self.manager.verify_pres(px_rec_in) save_ex.assert_called_once() @@ -1077,7 +1113,7 @@ async def test_send_pres_ack_no_responder(self): await self.manager.send_pres_ack(px_rec) async def test_receive_pres_ack(self): - connection_record = async_mock.MagicMock(connection_id=CONN_ID) + conn_record = async_mock.MagicMock(connection_id=CONN_ID) px_rec_dummy = V20PresExRecord() message = async_mock.MagicMock() @@ -1088,10 +1124,7 @@ async def test_receive_pres_ack(self): V20PresExRecord, "retrieve_by_tag_filter", autospec=True ) as retrieve_ex: retrieve_ex.return_value = px_rec_dummy - px_rec_out = await self.manager.receive_pres_ack( - message, connection_record - ) + px_rec_out = await self.manager.receive_pres_ack(message, conn_record) save_ex.assert_called_once() assert px_rec_out.state == V20PresExRecord.STATE_DONE - ''' diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py new file mode 100644 index 0000000000..57e893f3ca --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py @@ -0,0 +1,1316 @@ +from time import time + +from asynctest import TestCase as AsyncTestCase +from asynctest import mock as async_mock +from marshmallow import ValidationError + +from .....admin.request_context import AdminRequestContext +from .....core.in_memory import InMemoryProfile +from .....indy.holder import IndyHolder +from .....indy.verifier import IndyVerifier +from .....ledger.base import BaseLedger +from .....storage.error import StorageNotFoundError + +from ...indy.pres_preview import IndyPresAttrSpec, IndyPresPreview +from ...indy.proof_request import IndyProofReqAttrSpecSchema + +from .. import routes as test_module +from ..messages.pres_format import V20PresFormat + +ISSUER_DID = "NcYxiDXkpYi6ov5FcYDi1e" +S_ID = f"{ISSUER_DID}:2:vidya:1.0" +CD_ID = f"{ISSUER_DID}:3:CL:{S_ID}:tag1" +RR_ID = f"{ISSUER_DID}:4:{CD_ID}:CL_ACCUM:0" +INDY_PRES_PREVIEW = IndyPresPreview( + attributes=[ + IndyPresAttrSpec( + name="player", + cred_def_id=CD_ID, + value="Richie Knucklez", + ), + IndyPresAttrSpec( + name="screenCapture", + cred_def_id=CD_ID, + mime_type="image/png", + value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + ), + ], + predicates=[], +) +NOW = int(time()) + + +class TestPresentProofRoutes(AsyncTestCase): + def setUp(self): + self.context = AdminRequestContext.test_context() + self.profile = self.context.profile + injector = self.profile.context.injector + + Ledger = async_mock.MagicMock(BaseLedger, autospec=True) + self.ledger = Ledger() + self.ledger.get_schema = async_mock.CoroutineMock( + return_value=async_mock.MagicMock() + ) + self.ledger.get_credential_definition = async_mock.CoroutineMock( + return_value={"value": {"revocation": {"...": "..."}}} + ) + self.ledger.get_revoc_reg_def = async_mock.CoroutineMock( + return_value={ + "ver": "1.0", + "id": RR_ID, + "revocDefType": "CL_ACCUM", + "tag": RR_ID.split(":")[-1], + "credDefId": CD_ID, + "value": { + "IssuanceType": "ISSUANCE_BY_DEFAULT", + "maxCredNum": 1000, + "publicKeys": {"accumKey": {"z": "1 ..."}}, + "tailsHash": "3MLjUFQz9x9n5u9rFu8Ba9C5bo4HNFjkPNc54jZPSNaZ", + "tailsLocation": "http://sample.ca/path", + }, + } + ) + self.ledger.get_revoc_reg_delta = async_mock.CoroutineMock( + return_value=( + { + "ver": "1.0", + "value": {"prevAccum": "1 ...", "accum": "21 ...", "issued": [1]}, + }, + NOW, + ) + ) + self.ledger.get_revoc_reg_entry = async_mock.CoroutineMock( + return_value=( + { + "ver": "1.0", + "value": {"prevAccum": "1 ...", "accum": "21 ...", "issued": [1]}, + }, + NOW, + ) + ) + injector.bind_instance(BaseLedger, self.ledger) + + self.request_dict = { + "context": self.context, + "outbound_message_router": async_mock.CoroutineMock(), + } + self.request = async_mock.MagicMock( + app={}, + match_info={}, + query={}, + __getitem__=lambda _, k: self.request_dict[k], + ) + + async def test_validate_proof_req_attr_spec(self): + aspec = IndyProofReqAttrSpecSchema() + aspec.validate_fields({"name": "attr0"}) + aspec.validate_fields( + { + "names": ["attr0", "attr1"], + "restrictions": [{"attr::attr1::value": "my-value"}], + } + ) + aspec.validate_fields( + {"name": "attr0", "restrictions": [{"schema_name": "preferences"}]} + ) + with self.assertRaises(ValidationError): + aspec.validate_fields({}) + with self.assertRaises(ValidationError): + aspec.validate_fields({"name": "attr0", "names": ["attr1", "attr2"]}) + with self.assertRaises(ValidationError): + aspec.validate_fields({"names": ["attr1", "attr2"]}) + with self.assertRaises(ValidationError): + aspec.validate_fields({"names": ["attr0", "attr1"], "restrictions": []}) + with self.assertRaises(ValidationError): + aspec.validate_fields({"names": ["attr0", "attr1"], "restrictions": [{}]}) + + async def test_present_proof_list(self): + self.request.query = { + "thread_id": "thread_id_0", + "connection_id": "conn_id_0", + "role": "dummy", + "state": "dummy", + } + + mock_pres_ex_rec_inst = async_mock.MagicMock( + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ) + ) + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_pres_ex_rec_cls.query = async_mock.CoroutineMock( + return_value=[mock_pres_ex_rec_inst] + ) + + await test_module.present_proof_list(self.request) + mock_response.assert_called_once_with( + {"results": [mock_pres_ex_rec_inst.serialize.return_value]} + ) + + async def test_present_proof_list_x(self): + self.request.query = { + "thread_id": "thread_id_0", + "connection_id": "conn_id_0", + "role": "dummy", + "state": "dummy", + } + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls: + mock_pres_ex_rec_cls.query = async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_list(self.request) + + async def test_present_proof_credentials_list_not_found(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls: + mock_pres_ex_rec_cls.retrieve_by_id = async_mock.CoroutineMock() + + # Emulate storage not found (bad presentation exchange id) + mock_pres_ex_rec_cls.retrieve_by_id.side_effect = StorageNotFoundError() + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.present_proof_credentials_list(self.request) + + async def test_present_proof_credentials_x(self): + self.request.match_info = { + "pres_ex_id": "123-456-789", + "referent": "myReferent1", + } + self.request.query = {"extra_query": {}} + returned_credentials = [{"name": "Credential1"}, {"name": "Credential2"}] + self.profile.context.injector.bind_instance( + IndyHolder, + async_mock.MagicMock( + get_credentials_for_presentation_request_by_referent=( + async_mock.CoroutineMock(side_effect=test_module.IndyHolderError()) + ) + ), + ) + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls: + mock_pres_ex_rec_cls.return_value = async_mock.MagicMock( + retrieve_by_id=async_mock.CoroutineMock() + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_credentials_list(self.request) + + async def test_present_proof_credentials_list_single_referent(self): + self.request.match_info = { + "pres_ex_id": "123-456-789", + "referent": "myReferent1", + } + self.request.query = {"extra_query": {}} + + returned_credentials = [{"name": "Credential1"}, {"name": "Credential2"}] + self.profile.context.injector.bind_instance( + IndyHolder, + async_mock.MagicMock( + get_credentials_for_presentation_request_by_referent=( + async_mock.CoroutineMock(return_value=returned_credentials) + ) + ), + ) + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_pres_ex_rec_cls.return_value = async_mock.MagicMock( + retrieve_by_id=async_mock.CoroutineMock() + ) + + await test_module.present_proof_credentials_list(self.request) + mock_response.assert_called_once_with(returned_credentials) + + async def test_present_proof_credentials_list_multiple_referents(self): + self.request.match_info = { + "pres_ex_id": "123-456-789", + "referent": "myReferent1,myReferent2", + } + self.request.query = {"extra_query": {}} + + returned_credentials = [{"name": "Credential1"}, {"name": "Credential2"}] + self.profile.context.injector.bind_instance( + IndyHolder, + async_mock.MagicMock( + get_credentials_for_presentation_request_by_referent=( + async_mock.CoroutineMock(return_value=returned_credentials) + ) + ), + ) + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_pres_ex_rec_cls.return_value = async_mock.MagicMock( + retrieve_by_id=async_mock.CoroutineMock() + ) + + await test_module.present_proof_credentials_list(self.request) + mock_response.assert_called_once_with(returned_credentials) + + async def test_present_proof_retrieve(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_pres_ex_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=async_mock.MagicMock( + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ) + ) + ) + + await test_module.present_proof_retrieve(self.request) + mock_response.assert_called_once_with({"thread_id": "sample-thread-id"}) + + async def test_present_proof_retrieve_not_found(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls: + mock_pres_ex_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + side_effect=StorageNotFoundError() + ) + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.present_proof_retrieve(self.request) + + async def test_present_proof_retrieve_ser_x(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + mock_pres_ex_rec_inst = async_mock.MagicMock( + connection_id="abc123", + thread_id="thid123", + serialize=async_mock.MagicMock(side_effect=test_module.BaseModelError()), + ) + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls: + mock_pres_ex_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_pres_ex_rec_inst + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_retrieve(self.request) + + async def test_present_proof_send_proposal(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "connection_id": "dummy-conn-id", + "presentation_preview": { + V20PresFormat.Format.INDY.api: INDY_PRES_PREVIEW.serialize() + }, + } + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec, async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_conn_rec.retrieve_by_id = async_mock.CoroutineMock( + return_value=async_mock.MagicMock(is_ready=True) + ) + mock_px_rec_inst = async_mock.MagicMock() + mock_pres_mgr.return_value.create_exchange_for_proposal = ( + async_mock.CoroutineMock(return_value=mock_px_rec_inst) + ) + + await test_module.present_proof_send_proposal(self.request) + mock_response.assert_called_once_with( + mock_px_rec_inst.serialize.return_value + ) + + async def test_present_proof_send_proposal_no_conn_record(self): + self.request.json = async_mock.CoroutineMock() + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec: + mock_conn_rec.retrieve_by_id = async_mock.CoroutineMock( + side_effect=StorageNotFoundError() + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_send_proposal(self.request) + + async def test_present_proof_send_proposal_not_ready(self): + self.request.json = async_mock.CoroutineMock() + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresProposal", autospec=True + ) as mock_proposal: + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=async_mock.MagicMock(is_ready=False) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.present_proof_send_proposal(self.request) + + async def test_present_proof_send_proposal_x(self): + self.request.json = async_mock.CoroutineMock() + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec, async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr: + mock_pres_mgr.return_value.create_exchange_for_proposal = ( + async_mock.CoroutineMock(side_effect=test_module.StorageError()) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_send_proposal(self.request) + + async def test_present_proof_create_request(self): + indy_proof_req = await INDY_PRES_PREVIEW.indy_proof_request( + name="proof-request", + version="v1.0", + ledger=self.ledger, + ) + indy_proof_req.pop("nonce") # exercise _add_nonce() + + self.request.json = async_mock.CoroutineMock( + return_value={ + "comment": "dummy", + "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, + } + ) + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr_cls, async_mock.patch.object( + test_module, "V20PresRequest", autospec=True + ) as mock_pres_request, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_px_rec_inst = async_mock.MagicMock( + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ) + ) + mock_pres_mgr_inst = async_mock.MagicMock( + create_exchange_for_request=async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + ) + mock_pres_mgr_cls.return_value = mock_pres_mgr_inst + + await test_module.present_proof_create_request(self.request) + mock_response.assert_called_once_with( + mock_px_rec_inst.serialize.return_value + ) + + async def test_present_proof_create_request_x(self): + indy_proof_req = await INDY_PRES_PREVIEW.indy_proof_request( + name="proof-request", + version="v1.0", + ledger=self.ledger, + ) + self.request.json = async_mock.CoroutineMock( + return_value={ + "comment": "dummy", + "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, + } + ) + + with async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr_cls, async_mock.patch.object( + test_module, "V20PresRequest", autospec=True + ) as mock_pres_request, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_px_rec_inst = async_mock.MagicMock() + mock_pres_mgr_inst = async_mock.MagicMock( + create_exchange_for_request=async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ) + ) + mock_pres_mgr_cls.return_value = mock_pres_mgr_inst + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_create_request(self.request) + + async def test_present_proof_send_free_request(self): + indy_proof_req = await INDY_PRES_PREVIEW.indy_proof_request( + name="proof-request", + version="v1.0", + ledger=self.ledger, + ) + self.request.json = async_mock.CoroutineMock( + return_value={ + "connection_id": "dummy", + "comment": "dummy", + "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, + } + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr_cls, async_mock.patch.object( + test_module, "V20PresRequest", autospec=True + ) as mock_pres_request, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_pres_ex_rec_cls, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock() + mock_px_rec_inst = async_mock.MagicMock( + serialize=async_mock.MagicMock({"thread_id": "sample-thread-id"}) + ) + + mock_pres_mgr_inst = async_mock.MagicMock( + create_exchange_for_request=async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + ) + mock_pres_mgr_cls.return_value = mock_pres_mgr_inst + + await test_module.present_proof_send_free_request(self.request) + mock_response.assert_called_once_with( + mock_px_rec_inst.serialize.return_value + ) + + async def test_present_proof_send_free_request_not_found(self): + self.request.json = async_mock.CoroutineMock( + return_value={"connection_id": "dummy"} + ) + + with async_mock.patch.object( + test_module, "ConnRecord", async_mock.MagicMock() + ) as mock_conn_rec_cls: + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + side_effect=StorageNotFoundError() + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_send_free_request(self.request) + + async def test_present_proof_send_free_request_not_ready(self): + self.request.json = async_mock.CoroutineMock( + return_value={"connection_id": "dummy", "proof_request": {}} + ) + + with async_mock.patch.object( + test_module, "ConnRecord", async_mock.MagicMock() + ) as mock_conn_rec_cls: + mock_conn_rec_inst = async_mock.MagicMock(is_ready=False) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_conn_rec_inst + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.present_proof_send_free_request(self.request) + + async def test_present_proof_send_free_request_x(self): + indy_proof_req = await INDY_PRES_PREVIEW.indy_proof_request( + name="proof-request", + version="v1.0", + ledger=self.ledger, + ) + self.request.json = async_mock.CoroutineMock( + return_value={ + "connection_id": "dummy", + "comment": "dummy", + "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, + } + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr_cls, async_mock.patch.object( + test_module, "V20PresRequest", autospec=True + ) as mock_pres_request, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_conn_rec_inst = async_mock.MagicMock() + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_conn_rec_inst + ) + mock_px_rec_inst = async_mock.MagicMock( + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ) + ) + mock_pres_mgr_inst = async_mock.MagicMock( + create_exchange_for_request=async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ) + ) + mock_pres_mgr_cls.return_value = mock_pres_mgr_inst + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_send_free_request(self.request) + + async def test_present_proof_send_bound_request(self): + self.request.json = async_mock.CoroutineMock(return_value={"trace": False}) + self.request.match_info = {"pres_ex_id": "dummy"} + + self.profile.context.injector.bind_instance( + BaseLedger, + async_mock.MagicMock( + __aenter__=async_mock.CoroutineMock(), + __aexit__=async_mock.CoroutineMock(), + ), + ) + self.profile.context.injector.bind_instance( + IndyVerifier, + async_mock.MagicMock( + verify_presentation=async_mock.CoroutineMock(), + ), + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + mock_conn_rec_inst = async_mock.MagicMock( + is_ready=True, + ) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_conn_rec_inst + ) + mock_pres_request = async_mock.MagicMock() + + mock_pres_mgr_inst = async_mock.MagicMock( + create_bound_request=async_mock.CoroutineMock( + return_value=(mock_px_rec_inst, mock_pres_request) + ) + ) + mock_pres_mgr_cls.return_value = mock_pres_mgr_inst + + await test_module.present_proof_send_bound_request(self.request) + mock_response.assert_called_once_with( + mock_px_rec_inst.serialize.return_value + ) + + async def test_present_proof_send_bound_request_not_found(self): + self.request.json = async_mock.CoroutineMock(return_value={"trace": False}) + self.request.match_info = {"pres_ex_id": "dummy"} + + self.profile.context.injector.bind_instance( + BaseLedger, + async_mock.MagicMock( + __aenter__=async_mock.CoroutineMock(), + __aexit__=async_mock.CoroutineMock(), + ), + ) + self.profile.context.injector.bind_instance( + IndyVerifier, + async_mock.MagicMock( + verify_presentation=async_mock.CoroutineMock(), + ), + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + side_effect=StorageNotFoundError() + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_send_bound_request(self.request) + + async def test_present_proof_send_bound_request_not_ready(self): + self.request.json = async_mock.CoroutineMock(return_value={"trace": False}) + self.request.match_info = {"pres_ex_id": "dummy"} + + self.profile.context.injector.bind_instance( + BaseLedger, + async_mock.MagicMock( + __aenter__=async_mock.CoroutineMock(), + __aexit__=async_mock.CoroutineMock(), + ), + ) + self.profile.context.injector.bind_instance( + IndyVerifier, + async_mock.MagicMock( + verify_presentation=async_mock.CoroutineMock(), + ), + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + mock_conn_rec_inst = async_mock.MagicMock( + is_ready=False, + ) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_conn_rec_inst + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.present_proof_send_bound_request(self.request) + + async def test_present_proof_send_bound_request_px_rec_not_found(self): + self.request.json = async_mock.CoroutineMock(return_value={"trace": False}) + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + side_effect=StorageNotFoundError("no such record") + ) + with self.assertRaises(test_module.web.HTTPNotFound) as context: + await test_module.present_proof_send_bound_request(self.request) + assert "no such record" in str(context.exception) + + async def test_present_proof_send_bound_request_bad_state(self): + self.request.json = async_mock.CoroutineMock(return_value={"trace": False}) + self.request.match_info = {"pres_ex_id": "dummy"} + + self.profile.context.injector.bind_instance( + BaseLedger, + async_mock.MagicMock( + __aenter__=async_mock.CoroutineMock(), + __aexit__=async_mock.CoroutineMock(), + ), + ) + self.profile.context.injector.bind_instance( + IndyVerifier, + async_mock.MagicMock( + verify_presentation=async_mock.CoroutineMock(), + ), + ) + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_DONE, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_send_bound_request(self.request) + + async def test_present_proof_send_bound_request_x(self): + self.request.json = async_mock.CoroutineMock(return_value={"trace": False}) + self.request.match_info = {"pres_ex_id": "dummy"} + + self.profile.context.injector.bind_instance( + BaseLedger, + async_mock.MagicMock( + __aenter__=async_mock.CoroutineMock(), + __aexit__=async_mock.CoroutineMock(), + ), + ) + self.profile.context.injector.bind_instance( + IndyVerifier, + async_mock.MagicMock( + verify_presentation=async_mock.CoroutineMock(), + ), + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + mock_conn_rec_inst = async_mock.MagicMock( + is_ready=True, + ) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_conn_rec_inst + ) + + mock_pres_mgr_inst = async_mock.MagicMock( + create_bound_request=async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ) + ) + mock_pres_mgr_cls.return_value = mock_pres_mgr_inst + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_send_bound_request(self.request) + + async def test_present_proof_send_presentation(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } + ) + self.request.match_info = {"pres_ex_id": "dummy"} + self.profile.context.injector.bind_instance( + IndyVerifier, + async_mock.MagicMock( + verify_presentation=async_mock.CoroutineMock(), + ), + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + + mock_conn_rec_inst = async_mock.MagicMock(is_ready=True) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_conn_rec_inst + ) + + mock_pres_mgr_inst = async_mock.MagicMock( + create_pres=async_mock.CoroutineMock( + return_value=(mock_px_rec_inst, async_mock.MagicMock()) + ) + ) + mock_pres_mgr_cls.return_value = mock_pres_mgr_inst + + await test_module.present_proof_send_presentation(self.request) + mock_response.assert_called_once_with( + mock_px_rec_inst.serialize.return_value + ) + + async def test_present_proof_send_presentation_px_rec_not_found(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } + ) + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + side_effect=StorageNotFoundError("no such record") + ) + + with self.assertRaises(test_module.web.HTTPNotFound) as context: + await test_module.present_proof_send_presentation(self.request) + assert "no such record" in str(context.exception) + + async def test_present_proof_send_presentation_not_found(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } + ) + self.request.match_info = {"pres_ex_id": "dummy"} + self.profile.context.injector.bind_instance( + IndyVerifier, + async_mock.MagicMock( + verify_presentation=async_mock.CoroutineMock(), + ), + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + + mock_conn_rec_inst = async_mock.MagicMock(is_ready=True) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + side_effect=StorageNotFoundError() + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_send_presentation(self.request) + + async def test_present_proof_send_presentation_not_ready(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } + ) + self.request.match_info = {"pres_ex_id": "dummy"} + self.profile.context.injector.bind_instance( + IndyVerifier, + async_mock.MagicMock( + verify_presentation=async_mock.CoroutineMock(), + ), + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + + mock_conn_rec_inst = async_mock.MagicMock(is_ready=True) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=async_mock.MagicMock(is_ready=False) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.present_proof_send_presentation(self.request) + + async def test_present_proof_send_presentation_bad_state(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } + ) + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_DONE, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_send_presentation(self.request) + + async def test_present_proof_send_presentation_x(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } + ) + self.request.match_info = {"pres_ex_id": "dummy"} + self.profile.context.injector.bind_instance( + IndyVerifier, + async_mock.MagicMock( + verify_presentation=async_mock.CoroutineMock(), + ), + ) + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + + mock_conn_rec_inst = async_mock.MagicMock(is_ready=True) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_conn_rec_inst + ) + + mock_pres_mgr_inst = async_mock.MagicMock( + create_pres=async_mock.CoroutineMock( + side_effect=test_module.LedgerError() + ) + ) + mock_pres_mgr_cls.return_value = mock_pres_mgr_inst + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_send_presentation(self.request) + + async def test_present_proof_verify_presentation(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + mock_conn_rec_inst = async_mock.MagicMock(is_ready=True) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_conn_rec_inst + ) + + mock_pres_mgr_inst = async_mock.MagicMock( + verify_pres=async_mock.CoroutineMock(return_value=mock_px_rec_inst) + ) + mock_pres_mgr_cls.return_value = mock_pres_mgr_inst + + await test_module.present_proof_verify_presentation(self.request) + mock_response.assert_called_once_with({"thread_id": "sample-thread-id"}) + + async def test_present_proof_verify_presentation_px_rec_not_found(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + side_effect=StorageNotFoundError("no such record") + ) + + with self.assertRaises(test_module.web.HTTPNotFound) as context: + await test_module.present_proof_verify_presentation(self.request) + assert "no such record" in str(context.exception) + + async def test_present_proof_verify_presentation_not_found(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + + mock_conn_rec_inst = async_mock.MagicMock(is_ready=True) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + side_effect=StorageNotFoundError() + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_verify_presentation(self.request) + + async def test_present_proof_verify_presentation_not_ready(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + mock_conn_rec_inst = async_mock.MagicMock(is_ready=False) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_conn_rec_inst + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.present_proof_verify_presentation(self.request) + + async def test_present_proof_verify_presentation_bad_state(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_DONE, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_verify_presentation(self.request) + + async def test_present_proof_verify_presentation_x(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "ConnRecord", autospec=True + ) as mock_conn_rec_cls, async_mock.patch.object( + test_module, "V20PresManager", autospec=True + ) as mock_pres_mgr_cls, async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_px_rec_inst = async_mock.MagicMock( + connection_id="dummy", + state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, + serialize=async_mock.MagicMock( + return_value={"thread_id": "sample-thread-id"} + ), + ) + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_px_rec_inst + ) + mock_conn_rec_inst = async_mock.MagicMock(is_ready=True) + mock_conn_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=mock_conn_rec_inst + ) + + mock_pres_mgr_inst = async_mock.MagicMock( + verify_pres=async_mock.CoroutineMock( + side_effect=test_module.LedgerError() + ) + ) + mock_pres_mgr_cls.return_value = mock_pres_mgr_inst + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_verify_presentation(self.request) + + async def test_present_proof_problem_report(self): + self.request.json = async_mock.CoroutineMock() + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls, async_mock.patch.object( + test_module, "ProblemReport", autospec=True + ) as mock_prob_report_cls, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=async_mock.MagicMock(conn_id="dummy-conn-id") + ) + + await test_module.present_proof_problem_report(self.request) + + mock_response.assert_called_once_with({}) + self.request["outbound_message_router"].assert_awaited_once_with( + mock_prob_report_cls.return_value, + connection_id="dummy-conn-id", + ) + + async def test_present_proof_problem_report_bad_pres_ex_id(self): + self.request.json = async_mock.CoroutineMock() + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + side_effect=test_module.StorageNotFoundError() + ) + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.present_proof_problem_report(self.request) + + async def test_present_proof_remove(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=async_mock.MagicMock( + state=test_module.V20PresExRecord.STATE_DONE, + connection_id="dummy", + delete_record=async_mock.CoroutineMock(), + ) + ) + + await test_module.present_proof_remove(self.request) + mock_response.assert_called_once_with({}) + + async def test_present_proof_remove_px_rec_not_found(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + side_effect=StorageNotFoundError() + ) + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.present_proof_remove(self.request) + + async def test_present_proof_remove_x(self): + self.request.match_info = {"pres_ex_id": "dummy"} + + with async_mock.patch.object( + test_module, "V20PresExRecord", autospec=True + ) as mock_px_rec_cls: + mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( + return_value=async_mock.MagicMock( + state=test_module.V20PresExRecord.STATE_DONE, + connection_id="dummy", + delete_record=async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ), + ) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.present_proof_remove(self.request) + + async def test_register(self): + mock_app = async_mock.MagicMock() + mock_app.add_routes = async_mock.MagicMock() + + await test_module.register(mock_app) + mock_app.add_routes.assert_called_once() + + async def test_post_process_routes(self): + mock_app = async_mock.MagicMock(_state={"swagger_dict": {}}) + test_module.post_process_routes(mock_app) + assert "tags" in mock_app._state["swagger_dict"] From 06a8d0d320c4ec554f01f86fa77dcd929a109cea Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 2 Mar 2021 18:54:33 +0000 Subject: [PATCH 094/243] oob integration Signed-off-by: sklump --- .../v2_0/tests/test_routes.py | 18 +- .../protocols/out_of_band/v1_0/manager.py | 335 ++++++++----- .../out_of_band/v1_0/tests/test_manager.py | 441 ++++++++++++++---- .../protocols/present_proof/v1_0/routes.py | 5 +- .../v2_0/messages/tests/test_pres_request.py | 30 +- .../protocols/present_proof/v2_0/routes.py | 5 +- .../present_proof/v2_0/tests/test_routes.py | 28 ++ 7 files changed, 618 insertions(+), 244 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py index 56be66112b..f5559269ab 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py @@ -24,30 +24,30 @@ async def setUp(self): __getitem__=lambda _, k: self.request_dict[k], ) - async def test_validate_cred_filter(self): - filt = test_module.V20CredFilterSchema() - filt.validate_fields({"indy": {"issuer_did": TEST_DID}}) - filt.validate_fields( + async def test_validate_cred_filter_schema(self): + schema = test_module.V20CredFilterSchema() + schema.validate_fields({"indy": {"issuer_did": TEST_DID}}) + schema.validate_fields( {"indy": {"issuer_did": TEST_DID, "schema_version": "1.0"}} ) - filt.validate_fields( + schema.validate_fields( { "indy": {"issuer_did": TEST_DID}, "dif": {"some_dif_criterion": "..."}, } ) - filt.validate_fields( + schema.validate_fields( { "indy": {}, "dif": {"some_dif_criterion": "..."}, } ) with self.assertRaises(test_module.ValidationError): - filt.validate_fields({}) + schema.validate_fields({}) with self.assertRaises(test_module.ValidationError): - filt.validate_fields(["hopeless", "stop"]) + schema.validate_fields(["hopeless", "stop"]) with self.assertRaises(test_module.ValidationError): - filt.validate_fields({"veres-one": {"no": "support"}}) + schema.validate_fields({"veres-one": {"no": "support"}}) async def test_credential_exchange_list(self): self.request.query = { diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py index 6be861046b..e49b60f6c6 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py @@ -36,8 +36,12 @@ from ...present_proof.indy.xform import indy_proof_req_preview2indy_requested_creds from ...present_proof.v1_0.manager import PresentationManager from ...present_proof.v1_0.message_types import PRESENTATION_REQUEST -from ...present_proof.v1_0.messages.presentation_proposal import PresentationProposal from ...present_proof.v1_0.models.presentation_exchange import V10PresentationExchange +from ...present_proof.v2_0.manager import V20PresManager +from ...present_proof.v2_0.message_types import PRES_20_REQUEST +from ...present_proof.v2_0.messages.pres_format import V20PresFormat +from ...present_proof.v2_0.messages.pres_request import V20PresRequest +from ...present_proof.v2_0.models.pres_exchange import V20PresExRecord from .messages.invitation import HSProto, InvitationMessage from .messages.problem_report import ProblemReport @@ -175,21 +179,32 @@ async def create_invitation( ) message_attachments.append( InvitationMessage.wrap_message( - V20CredOffer.deserialize( - cred_ex_rec.cred_offer - ).offer() # default to indy format: will change for DIF + V20CredOffer.deserialize(cred_ex_rec.cred_offer).offer() ) ) elif a_type == "present-proof": - pres_ex_rec = await V10PresentationExchange.retrieve_by_id( - self._session, - a_id, - ) - message_attachments.append( - InvitationMessage.wrap_message( - pres_ex_rec.presentation_request_dict + try: + pres_ex_rec = await V10PresentationExchange.retrieve_by_id( + self._session, + a_id, + ) + message_attachments.append( + InvitationMessage.wrap_message( + pres_ex_rec.presentation_request_dict + ) + ) + except StorageNotFoundError: + pres_ex_rec = await V20PresExRecord.retrieve_by_id( + self._session, + a_id, + ) + message_attachments.append( + InvitationMessage.wrap_message( + V20PresRequest.deserialize( + pres_ex_rec.pres_request + ).attachment() + ) ) - ) else: raise OutOfBandManagerError(f"Unknown attachment type: {a_type}") @@ -349,8 +364,20 @@ async def receive_invitation( alias: str = None, mediation_id: str = None, ) -> dict: - """Receive an out of band invitation message.""" + """ + Receive an out of band invitation message. + Args: + invi_msg: invitation message + use_existing_connection: whether to use existing connection if possible + auto_accept: whether to accept the invitation automatically + alias: Alias for connection record + mediation_id: mediation identifier + + Returns: + ConnRecord, serialized + + """ ledger: BaseLedger = self._session.inject(BaseLedger) if mediation_id: @@ -524,120 +551,196 @@ async def receive_invitation( req_attach = invi_msg.request_attach[0] if isinstance(req_attach, AttachDecorator): if req_attach.data is not None: - req_attach_type = req_attach.data.json["@type"] - if DIDCommPrefix.unqualify(req_attach_type) == PRESENTATION_REQUEST: - proof_present_mgr = PresentationManager(self._session) - indy_proof_request = json.loads( - b64_to_bytes( - req_attach.data.json["request_presentations~attach"][0][ - "data" - ]["base64"] - ) - ) - present_request_msg = req_attach.data.json - service_deco = {} - oob_invi_service = service.serialize() - service_deco["recipientKeys"] = oob_invi_service.get( - "recipientKeys" - ) - service_deco["routingKeys"] = oob_invi_service.get( - "routingKeys" - ) - service_deco["serviceEndpoint"] = oob_invi_service.get( - "serviceEndpoint" - ) - present_request_msg["~service"] = service_deco - presentation_ex_record = V10PresentationExchange( - connection_id=conn_rec.connection_id, - thread_id=present_request_msg["@id"], - initiator=V10PresentationExchange.INITIATOR_EXTERNAL, - role=V10PresentationExchange.ROLE_PROVER, - presentation_request=indy_proof_request, - presentation_request_dict=present_request_msg, - auto_present=self._session.context.settings.get( - "debug.auto_respond_presentation_request" - ), + unq_req_attach_type = DIDCommPrefix.unqualify( + req_attach.content["@type"] + ) + if unq_req_attach_type == PRESENTATION_REQUEST: + await self._process_pres_request_v1( + req_attach=req_attach, + service=service, + conn_rec=conn_rec, trace=(invi_msg._trace is not None), ) - - presentation_ex_record.presentation_request = indy_proof_request - presentation_ex_record = ( - await proof_present_mgr.receive_request( - presentation_ex_record - ) + elif unq_req_attach_type == PRES_20_REQUEST: + await self._process_pres_request_v2( + req_attach=req_attach, + service=service, + conn_rec=conn_rec, + trace=(invi_msg._trace is not None), ) - if presentation_ex_record.auto_present: - presentation_preview = None - if presentation_ex_record.presentation_proposal_dict: - exchange_pres_proposal = PresentationProposal.deserialize( - presentation_ex_record.presentation_proposal_dict - ) - presentation_preview = ( - exchange_pres_proposal.presentation_proposal - ) - - try: - req_creds = ( - await indy_proof_req_preview2indy_requested_creds( - indy_proof_request, - presentation_preview, - holder=self._session.inject(IndyHolder), - ) - ) - except ValueError as err: - self._logger.warning(f"{err}") - return - - ( - presentation_ex_record, - presentation_message, - ) = await proof_present_mgr.create_presentation( - presentation_exchange_record=presentation_ex_record, - requested_credentials=req_creds, - comment=( - "auto-presented for proof request nonce={}".format( - indy_proof_request["nonce"] - ) - ), - ) - responder = self._session.inject( - BaseResponder, required=False - ) - connection_targets = await self.fetch_connection_targets( - connection=conn_rec - ) - if presentation_message is None: - raise OutOfBandManagerError( - "No presentation for proof request nonce={}".format( - indy_proof_request["nonce"] - ) - ) - else: - if responder: - await responder.send( - message=presentation_message, - target_list=connection_targets, - ) - return presentation_message.serialize() - else: - raise OutOfBandManagerError( - ( - "auto_present setting in configuration is" - " set to false. Cannot respond automatically" - " to presentation requests, building" - ) - ) else: raise OutOfBandManagerError( ( - "Unsupported request~attach type, " - "only request-presentation is supported" + "Unsupported request~attach type " + f"{req_attach.content['@type']}: must unqualify to" + f"{PRESENTATION_REQUEST} or {PRES_20_REQUEST}" ) ) else: raise OutOfBandManagerError("request~attach is not properly formatted") + + return conn_rec.serialize() + + async def _process_pres_request_v1( + self, + req_attach: AttachDecorator, + service: ServiceMessage, + conn_rec: ConnRecord, + trace: bool, + ): + """ + Create exchange for v1 pres request attachment, auto-present if configured. + + Args: + req_attach: request attachment on invitation + service: service message from invitation + conn_rec: connection record + trace: trace setting for presentation exchange record + """ + pres_mgr = PresentationManager(self._session) + pres_request_msg = req_attach.content + indy_proof_request = json.loads( + b64_to_bytes( + pres_request_msg["request_presentations~attach"][0]["data"]["base64"] + ) + ) + oob_invi_service = service.serialize() + pres_request_msg["~service"] = { + "recipientKeys": oob_invi_service.get("recipientKeys"), + "routingKeys": oob_invi_service.get("routingKeys"), + "serviceEndpoint": oob_invi_service.get("serviceEndpoint"), + } + pres_ex_record = V10PresentationExchange( + connection_id=conn_rec.connection_id, + thread_id=pres_request_msg["@id"], + initiator=V10PresentationExchange.INITIATOR_EXTERNAL, + role=V10PresentationExchange.ROLE_PROVER, + presentation_request=indy_proof_request, + presentation_request_dict=pres_request_msg, + auto_present=self._session.context.settings.get( + "debug.auto_respond_presentation_request" + ), + trace=trace, + ) + + pres_ex_record = await pres_mgr.receive_request(pres_ex_record) + if pres_ex_record.auto_present: + try: + req_creds = await indy_proof_req_preview2indy_requested_creds( + indy_proof_req=indy_proof_request, + preview=None, + holder=self._session.inject(IndyHolder), + ) + except ValueError as err: + self._logger.warning(f"{err}") + raise OutOfBandManagerError( + f"Cannot auto-respond to presentation request attachment: {err}" + ) + + (pres_ex_record, presentation_message) = await pres_mgr.create_presentation( + presentation_exchange_record=pres_ex_record, + requested_credentials=req_creds, + comment=( + "auto-presented for proof request nonce={}".format( + indy_proof_request["nonce"] + ) + ), + ) + responder = self._session.inject(BaseResponder, required=False) + if responder: + await responder.send( + message=presentation_message, + target_list=await self.fetch_connection_targets( + connection=conn_rec + ), + ) else: - return conn_rec.serialize() + raise OutOfBandManagerError( + ( + "Configuration sets auto_present false: cannot " + "respond automatically to presentation requests" + ) + ) + + async def _process_pres_request_v2( + self, + req_attach: AttachDecorator, + service: ServiceMessage, + conn_rec: ConnRecord, + trace: bool, + ): + """ + Create exchange for v2 pres request attachment, auto-present if configured. + + Args: + req_attach: request attachment on invitation + service: service message from invitation + conn_rec: connection record + trace: trace setting for presentation exchange record + """ + pres_mgr = V20PresManager(self._session) + pres_request_msg = req_attach.content + oob_invi_service = service.serialize() + pres_request_msg["~service"] = { + "recipientKeys": oob_invi_service.get("recipientKeys"), + "routingKeys": oob_invi_service.get("routingKeys"), + "serviceEndpoint": oob_invi_service.get("serviceEndpoint"), + } + pres_ex_record = V20PresExRecord( + conn_id=conn_rec.connection_id, + thread_id=pres_request_msg["@id"], + initiator=V20PresExRecord.INITIATOR_EXTERNAL, + role=V20PresExRecord.ROLE_PROVER, + pres_request=pres_request_msg, + auto_present=self._session.context.settings.get( + "debug.auto_respond_presentation_request" + ), + trace=trace, + ) + + pres_ex_record = await pres_mgr.receive_pres_request(pres_ex_record) + if pres_ex_record.auto_present: + indy_proof_request = V20PresRequest.deserialize( + pres_request_msg + ).attachment( + V20PresFormat.Format.INDY + ) # assumption will change for DIF + try: + req_creds = await indy_proof_req_preview2indy_requested_creds( + indy_proof_req=indy_proof_request, + preview=None, + holder=self._session.inject(IndyHolder), + ) + except ValueError as err: + self._logger.warning(f"{err}") + raise OutOfBandManagerError( + f"Cannot auto-respond to presentation request attachment: {err}" + ) + + (pres_ex_record, pres_msg) = await pres_mgr.create_pres( + pres_ex_record=pres_ex_record, + requested_credentials=req_creds, + comment=( + "auto-presented for proof request nonce={}".format( + indy_proof_request["nonce"] + ) + ), + ) + responder = self._session.inject(BaseResponder, required=False) + if responder: + await responder.send( + message=pres_msg, + target_list=await self.fetch_connection_targets( + connection=conn_rec + ), + ) + else: + raise OutOfBandManagerError( + ( + "Configuration sets auto_present false: cannot " + "respond automatically to presentation requests" + ) + ) async def find_existing_connection( self, diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py index 48da4508fc..06c0da7d25 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py @@ -48,6 +48,10 @@ from .....protocols.present_proof.v1_0.models.presentation_exchange import ( V10PresentationExchange, ) +from .....protocols.present_proof.v2_0.manager import V20PresManager +from .....protocols.present_proof.v2_0.messages.pres import V20Pres +from .....protocols.present_proof.v2_0.messages.pres_format import V20PresFormat +from .....protocols.present_proof.v2_0.messages.pres_request import V20PresRequest from .....storage.error import StorageError, StorageNotFoundError from .....multitenant.manager import MultitenantManager from .....transport.inbound.receipt import MessageReceipt @@ -149,7 +153,7 @@ class TestConfig: ], ) - PRES_REQ = PresentationRequest( + PRES_REQ_V1 = PresentationRequest( comment="Test", request_presentations_attach=[ AttachDecorator.data_base64( @@ -158,9 +162,8 @@ class TestConfig: ) ], ) - - pres_req_dict = PRES_REQ.request_presentations_attach[0].serialize() - req_attach = { + pres_req_dict = PRES_REQ_V1.request_presentations_attach[0].serialize() + req_attach_v1 = { "@id": "request-0", "mime-type": "application/json", "data": { @@ -173,6 +176,21 @@ class TestConfig: }, } + PRES_REQ_V2 = V20PresRequest( + comment="some comment", + will_confirm=True, + formats=[ + V20PresFormat(attach_id="indy", format_=V20PresFormat.Format.INDY.aries) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(mapping=INDY_PROOF_REQ, ident="indy") + ], + ) + req_attach_v2 = AttachDecorator.data_json( + mapping=PRES_REQ_V2.serialize(), + ident="request-0", + ).serialize() + indy_cred_req = { "schema_id": f"{test_did}:2:bc-reg:1.0", "cred_def_id": f"{test_did}:3:CL:12:tag1", @@ -387,7 +405,7 @@ async def test_create_invitation_no_handshake_no_attachments_x(self): hs_protos=None, multi_use=False, ) - assert "Invitation must include" in str(context.exception) + assert "Invitation must include" in str(context.exception) async def test_create_invitation_attachment_v1_0_cred_offer(self): self.session.context.update_settings({"public_invites": True}) @@ -471,7 +489,7 @@ async def test_create_invitation_attachment_v2_0_cred_offer(self): assert invi_rec.invitation["request~attach"] - async def test_create_invitation_attachment_present_proof(self): + async def test_create_invitation_attachment_present_proof_v1_0(self): self.session.context.update_settings({"public_invites": True}) with async_mock.patch.object( InMemoryWallet, "get_public_did", autospec=True @@ -497,6 +515,42 @@ async def test_create_invitation_attachment_present_proof(self): assert invi_rec.invitation["request~attach"] mock_retrieve_pxid.assert_called_once_with(self.manager.session, "dummy-id") + async def test_create_invitation_attachment_present_proof_v2_0(self): + self.session.context.update_settings({"public_invites": True}) + with async_mock.patch.object( + InMemoryWallet, "get_public_did", autospec=True + ) as mock_wallet_get_public_did, async_mock.patch.object( + test_module.V10PresentationExchange, + "retrieve_by_id", + async_mock.CoroutineMock(), + ) as mock_retrieve_pxid_1, async_mock.patch.object( + test_module.V20PresExRecord, + "retrieve_by_id", + async_mock.CoroutineMock(), + ) as mock_retrieve_pxid_2: + mock_wallet_get_public_did.return_value = DIDInfo( + TestConfig.test_did, TestConfig.test_verkey, None + ) + mock_retrieve_pxid_1.side_effect = StorageNotFoundError() + mock_retrieve_pxid_2.return_value = async_mock.MagicMock( + pres_request=TestConfig.PRES_REQ_V2.serialize() + ) + invi_rec = await self.manager.create_invitation( + my_endpoint=TestConfig.test_endpoint, + public=True, + hs_protos=[test_module.HSProto.RFC23], + multi_use=False, + attachments=[{"type": "present-proof", "id": "dummy-id"}], + ) + + assert invi_rec.invitation["request~attach"] + mock_retrieve_pxid_1.assert_called_once_with( + self.manager.session, "dummy-id" + ) + mock_retrieve_pxid_2.assert_called_once_with( + self.manager.session, "dummy-id" + ) + async def test_create_invitation_public_x_no_public_invites(self): self.session.context.update_settings({"public_invites": False}) @@ -535,9 +589,9 @@ async def test_create_invitation_public_x_no_public_did(self): hs_protos=[test_module.HSProto.RFC23], multi_use=False, ) - assert "Cannot create public invitation with no public DID" in str( - context.exception - ) + assert "Cannot create public invitation with no public DID" in str( + context.exception + ) async def test_create_invitation_attachment_x(self): self.session.context.update_settings({"public_invites": True}) @@ -840,12 +894,9 @@ async def test_receive_invitation_attachment_x(self): with self.assertRaises(OutOfBandManagerError) as context: await self.manager.receive_invitation(mock_oob_invi) - assert ( - "request~attach is not properly formatted as data is missing" - in str(context.exception) - ) + assert "request~attach is not properly formatted" in str(context.exception) - async def test_receive_invitation_req_pres_attachment_x(self): + async def test_receive_invitation_req_pres_v1_0_attachment_x(self): self.session.context.update_settings({"public_invites": True}) with async_mock.patch.object( self.ledger, "get_key_for_did", async_mock.CoroutineMock() @@ -884,6 +935,7 @@ async def test_receive_invitation_req_pres_attachment_x(self): conn_id.hex == result.get("connection_id") and len(result.get("connection_id")) > 5 ) + assert "request~attach is not properly formatted" in str(context.exception) async def test_receive_invitation_invalid_request_type_x(self): self.session.context.update_settings({"public_invites": True}) @@ -1010,9 +1062,9 @@ async def test_create_handshake_reuse_msg_catch_exception(self): await self.manager.create_handshake_reuse_message( oob_invi, self.test_conn_rec ) - assert "Error on creating and sending a handshake reuse message" in str( - context.exception - ) + assert "Error on creating and sending a handshake reuse message" in str( + context.exception + ) async def test_receive_reuse_message_existing_found(self): self.session.context.update_settings({"public_invites": True}) @@ -1147,9 +1199,9 @@ async def test_receive_reuse_message_storage_not_found(self): oob_mgr_find_existing_conn.side_effect = StorageNotFoundError() with self.assertRaises(OutOfBandManagerError) as context: await self.manager.receive_reuse_message(reuse_msg, receipt) - assert "No existing ConnRecord found for OOB Invitee" in str( - context.exception - ) + assert "No existing ConnRecord found for OOB Invitee" in str( + context.exception + ) async def test_receive_reuse_message_problem_report_logic(self): self.session.context.update_settings({"public_invites": True}) @@ -1288,9 +1340,7 @@ async def test_receive_reuse_accepted_invalid_conn(self): await self.manager.receive_reuse_accepted_message( reuse_msg_accepted, receipt, test_invalid_conn ) - assert "Error processing reuse accepted message" in str( - context.exception - ) + assert "Error processing reuse accepted message" in str(context.exception) async def test_receive_reuse_accepted_message_catch_exception(self): self.session.context.update_settings({"public_invites": True}) @@ -1321,9 +1371,7 @@ async def test_receive_reuse_accepted_message_catch_exception(self): await self.manager.receive_reuse_accepted_message( reuse_msg_accepted, receipt, self.test_conn_rec ) - assert "Error processing reuse accepted message" in str( - context.exception - ) + assert "Error processing reuse accepted message" in str(context.exception) async def test_problem_report_received_not_active(self): self.session.context.update_settings({"public_invites": True}) @@ -1443,9 +1491,7 @@ async def test_problem_report_received_invalid_conn(self): await self.manager.receive_problem_report( problem_report, receipt, test_invalid_conn ) - assert "Error processing problem report message" in str( - context.exception - ) + assert "Error processing problem report message" in str(context.exception) async def test_existing_conn_record_public_did(self): self.session.context.update_settings({"public_invites": True}) @@ -1829,9 +1875,9 @@ async def test_existing_conn_record_public_did_timeout_no_handshake_protocol(sel result = await self.manager.receive_invitation( mock_oob_invi, use_existing_connection=False ) - assert "No existing connection exists and " in str(context.exception) + assert "No existing connection exists and " in str(context.exception) - async def test_req_attach_presentation_existing_conn_no_auto_present(self): + async def test_req_v1_attach_presentation_existing_conn_no_auto_present(self): self.session.context.update_settings({"public_invites": True}) test_exist_conn = ConnRecord( my_did=TestConfig.test_did, @@ -1857,7 +1903,7 @@ async def test_req_attach_presentation_existing_conn_no_auto_present(self): DIDXManager, "receive_invitation", autospec=True ) as didx_mgr_receive_invitation, async_mock.patch.object( PresentationManager, "receive_request", autospec=True - ) as proof_mgr_receive_request, async_mock.patch( + ) as pres_mgr_receive_request, async_mock.patch( "aries_cloudagent.protocols.out_of_band.v1_0.manager.InvitationMessage", autospec=True, ) as inv_message_cls, async_mock.patch.object( @@ -1891,7 +1937,7 @@ async def test_req_attach_presentation_existing_conn_no_auto_present(self): ) as oob_mgr_receive_problem_report: mock_ledger_get_key_for_did.return_value = TestConfig.test_verkey oob_mgr_find_existing_conn.return_value = test_exist_conn - proof_mgr_receive_request.return_value = exchange_rec + pres_mgr_receive_request.return_value = exchange_rec mock_oob_invi = async_mock.MagicMock( handshake_protocols=[ @@ -1899,7 +1945,7 @@ async def test_req_attach_presentation_existing_conn_no_auto_present(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(TestConfig.req_attach)], + request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v1)], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -1908,11 +1954,9 @@ async def test_req_attach_presentation_existing_conn_no_auto_present(self): result = await self.manager.receive_invitation( mock_oob_invi, use_existing_connection=True ) - assert "auto_present setting in configuration is" in str( - context.exception - ) + assert "Configuration sets auto_present false" in str(context.exception) - async def test_req_attach_presentation_existing_conn_auto_present_no_pres_msg(self): + async def test_req_v1_attach_presentation_existing_conn_auto_present_pres_msg(self): self.session.context.update_settings({"public_invites": True}) self.session.context.update_settings( {"debug.auto_respond_presentation_request": True} @@ -1936,11 +1980,7 @@ async def test_req_attach_presentation_existing_conn_auto_present_no_pres_msg(se exchange_rec = V10PresentationExchange() exchange_rec.auto_present = True exchange_rec.presentation_request = TestConfig.INDY_PROOF_REQ - - presentation_proposal = PresentationProposal( - comment="Hello World", presentation_proposal=TestConfig.PRES_PREVIEW - ) - exchange_rec.presentation_proposal_dict = presentation_proposal.serialize() + exchange_rec.presentation_proposal_dict = {} with async_mock.patch.object( self.ledger, "get_key_for_did", async_mock.CoroutineMock() @@ -1952,7 +1992,7 @@ async def test_req_attach_presentation_existing_conn_auto_present_no_pres_msg(se PresentationManager, "receive_request", autospec=True, - ) as proof_mgr_receive_request, async_mock.patch( + ) as pres_mgr_receive_request, async_mock.patch( "aries_cloudagent.protocols.out_of_band.v1_0.manager.InvitationMessage", autospec=True, ) as inv_message_cls, async_mock.patch.object( @@ -1987,11 +2027,18 @@ async def test_req_attach_presentation_existing_conn_auto_present_no_pres_msg(se PresentationManager, "create_presentation", autospec=True, - ) as proof_mgr_create_presentation: + ) as pres_mgr_create_presentation: mock_ledger_get_key_for_did.return_value = TestConfig.test_verkey oob_mgr_find_existing_conn.return_value = test_exist_conn - proof_mgr_receive_request.return_value = exchange_rec - proof_mgr_create_presentation.return_value = (exchange_rec, None) + pres_mgr_receive_request.return_value = exchange_rec + pres_mgr_create_presentation.return_value = ( + exchange_rec, + Presentation( + presentations_attach=[ + AttachDecorator.data_base64({"bogus": "proof"}) + ] + ), + ) holder = async_mock.MagicMock(IndyHolder, autospec=True) get_creds = async_mock.CoroutineMock( return_value=( @@ -2019,20 +2066,17 @@ async def test_req_attach_presentation_existing_conn_auto_present_no_pres_msg(se ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(TestConfig.req_attach)], + request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v1)], ) inv_message_cls.deserialize.return_value = mock_oob_invi - with self.assertRaises(OutOfBandManagerError) as context: - result = await self.manager.receive_invitation( - mock_oob_invi, use_existing_connection=True - ) - assert "No presentation for proof request nonce" in str( - context.exception - ) + conn_rec = await self.manager.receive_invitation( + mock_oob_invi, use_existing_connection=True + ) + assert ConnRecord.deserialize(conn_rec) - async def test_req_attach_presentation_existing_conn_auto_present_pres_msg(self): + async def test_req_v1_attach_pres_catch_value_error(self): self.session.context.update_settings({"public_invites": True}) self.session.context.update_settings( {"debug.auto_respond_presentation_request": True} @@ -2068,7 +2112,7 @@ async def test_req_attach_presentation_existing_conn_auto_present_pres_msg(self) PresentationManager, "receive_request", autospec=True, - ) as proof_mgr_receive_request, async_mock.patch( + ) as pres_mgr_receive_request, async_mock.patch( "aries_cloudagent.protocols.out_of_band.v1_0.manager.InvitationMessage", autospec=True, ) as inv_message_cls, async_mock.patch.object( @@ -2103,14 +2147,216 @@ async def test_req_attach_presentation_existing_conn_auto_present_pres_msg(self) PresentationManager, "create_presentation", autospec=True, - ) as proof_mgr_create_presentation: + ) as pres_mgr_create_presentation, async_mock.patch.object( + PresentationProposal, + "deserialize", + autospec=True, + ) as present_proposal_deserialize: mock_ledger_get_key_for_did.return_value = TestConfig.test_verkey oob_mgr_find_existing_conn.return_value = test_exist_conn - proof_mgr_receive_request.return_value = exchange_rec - proof_mgr_create_presentation.return_value = ( + pres_mgr_receive_request.return_value = exchange_rec + pres_mgr_create_presentation.return_value = ( exchange_rec, Presentation(comment="this is test"), ) + present_proposal_deserialize.return_value = PresentationProposal() + holder = async_mock.MagicMock(IndyHolder, autospec=True) + get_creds = async_mock.CoroutineMock(return_value=()) + holder.get_credentials_for_presentation_request_by_referent = get_creds + holder.create_credential_request = async_mock.CoroutineMock( + return_value=( + json.dumps(TestConfig.indy_cred_req), + json.dumps(TestConfig.cred_req_meta), + ) + ) + self.session.context.injector.bind_instance(IndyHolder, holder) + mock_oob_invi = async_mock.MagicMock( + handshake_protocols=[ + pfx.qualify(HSProto.RFC23.name) for pfx in DIDCommPrefix + ], + service_dids=[TestConfig.test_target_did], + service_blocks=[], + request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v1)], + ) + + inv_message_cls.deserialize.return_value = mock_oob_invi + with self.assertRaises(OutOfBandManagerError) as context: + await self.manager.receive_invitation( + mock_oob_invi, use_existing_connection=True + ) + assert "Cannot auto-respond" in str(context.exception) + + async def test_req_v2_attach_presentation_existing_conn_no_auto_present(self): + self.session.context.update_settings({"public_invites": True}) + test_exist_conn = ConnRecord( + my_did=TestConfig.test_did, + their_did=TestConfig.test_target_did, + their_public_did=TestConfig.test_target_did, + invitation_msg_id="12345678-1234-5678-1234-567812345678", + their_role=ConnRecord.Role.REQUESTER, + ) + await test_exist_conn.save(self.session) + await test_exist_conn.metadata_set(self.session, "reuse_msg_state", "initial") + await test_exist_conn.metadata_set(self.session, "reuse_msg_id", "test_123") + receipt = MessageReceipt( + recipient_did=TestConfig.test_did, + recipient_did_public=False, + sender_did=TestConfig.test_target_did, + ) + + px2_rec = test_module.V20PresExRecord() + + with async_mock.patch.object( + self.ledger, "get_key_for_did", async_mock.CoroutineMock() + ) as mock_ledger_get_key_for_did, async_mock.patch.object( + DIDXManager, "receive_invitation", autospec=True + ) as didx_mgr_receive_invitation, async_mock.patch.object( + V20PresManager, "receive_pres_request", autospec=True + ) as pres_mgr_receive_pres_req, async_mock.patch( + "aries_cloudagent.protocols.out_of_band.v1_0.manager.InvitationMessage", + autospec=True, + ) as inv_message_cls, async_mock.patch.object( + OutOfBandManager, + "fetch_connection_targets", + autospec=True, + ) as oob_mgr_fetch_conn, async_mock.patch.object( + OutOfBandManager, + "find_existing_connection", + autospec=True, + ) as oob_mgr_find_existing_conn, async_mock.patch.object( + OutOfBandManager, + "check_reuse_msg_state", + autospec=True, + ) as oob_mgr_check_reuse_state, async_mock.patch.object( + OutOfBandManager, + "create_handshake_reuse_message", + autospec=True, + ) as oob_mgr_create_reuse_msg, async_mock.patch.object( + OutOfBandManager, + "receive_reuse_message", + autospec=True, + ) as oob_mgr_receive_reuse_msg, async_mock.patch.object( + OutOfBandManager, + "receive_reuse_accepted_message", + autospec=True, + ) as oob_mgr_receive_accept_msg, async_mock.patch.object( + OutOfBandManager, + "receive_problem_report", + autospec=True, + ) as oob_mgr_receive_problem_report: + mock_ledger_get_key_for_did.return_value = TestConfig.test_verkey + oob_mgr_find_existing_conn.return_value = test_exist_conn + pres_mgr_receive_pres_req.return_value = px2_rec + + mock_oob_invi = async_mock.MagicMock( + handshake_protocols=[ + pfx.qualify(HSProto.RFC23.name) for pfx in DIDCommPrefix + ], + service_dids=[TestConfig.test_target_did], + service_blocks=[], + request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v2)], + ) + + inv_message_cls.deserialize.return_value = mock_oob_invi + + with self.assertRaises(OutOfBandManagerError) as context: + await self.manager.receive_invitation( + mock_oob_invi, use_existing_connection=True + ) + assert "Configuration sets auto_present false" in str(context.exception) + + async def test_req_v2_attach_presentation_existing_conn_auto_present_pres_msg(self): + self.session.context.update_settings({"public_invites": True}) + self.session.context.update_settings( + {"debug.auto_respond_presentation_request": True} + ) + test_exist_conn = ConnRecord( + my_did=TestConfig.test_did, + their_did=TestConfig.test_target_did, + their_public_did=TestConfig.test_target_did, + invitation_msg_id="12345678-1234-5678-1234-567812345678", + their_role=ConnRecord.Role.REQUESTER, + ) + await test_exist_conn.save(self.session) + await test_exist_conn.metadata_set(self.session, "reuse_msg_state", "initial") + await test_exist_conn.metadata_set(self.session, "reuse_msg_id", "test_123") + receipt = MessageReceipt( + recipient_did=TestConfig.test_did, + recipient_did_public=False, + sender_did=TestConfig.test_target_did, + ) + + px2_rec = test_module.V20PresExRecord( + auto_present=True, + pres_request=TestConfig.PRES_REQ_V2.serialize(), + ) + + with async_mock.patch.object( + self.ledger, "get_key_for_did", async_mock.CoroutineMock() + ) as mock_ledger_get_key_for_did, async_mock.patch.object( + DIDXManager, + "receive_invitation", + autospec=True, + ) as didx_mgr_receive_invitation, async_mock.patch.object( + V20PresManager, + "receive_pres_request", + autospec=True, + ) as pres_mgr_receive_pres_req, async_mock.patch( + "aries_cloudagent.protocols.out_of_band.v1_0.manager.InvitationMessage", + autospec=True, + ) as inv_message_cls, async_mock.patch.object( + OutOfBandManager, + "fetch_connection_targets", + autospec=True, + ) as oob_mgr_fetch_conn, async_mock.patch.object( + OutOfBandManager, + "find_existing_connection", + autospec=True, + ) as oob_mgr_find_existing_conn, async_mock.patch.object( + OutOfBandManager, + "check_reuse_msg_state", + autospec=True, + ) as oob_mgr_check_reuse_state, async_mock.patch.object( + OutOfBandManager, + "create_handshake_reuse_message", + autospec=True, + ) as oob_mgr_create_reuse_msg, async_mock.patch.object( + OutOfBandManager, + "receive_reuse_message", + autospec=True, + ) as oob_mgr_receive_reuse_msg, async_mock.patch.object( + OutOfBandManager, + "receive_reuse_accepted_message", + autospec=True, + ) as oob_mgr_receive_accept_msg, async_mock.patch.object( + OutOfBandManager, + "receive_problem_report", + autospec=True, + ) as oob_mgr_receive_problem_report, async_mock.patch.object( + V20PresManager, + "create_pres", + autospec=True, + ) as pres_mgr_create_pres: + mock_ledger_get_key_for_did.return_value = TestConfig.test_verkey + oob_mgr_find_existing_conn.return_value = test_exist_conn + pres_mgr_receive_pres_req.return_value = px2_rec + pres_mgr_create_pres.return_value = ( + px2_rec, + V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + presentations_attach=[ + AttachDecorator.data_base64( + mapping={"bogus": "proof"}, + ident="indy", + ) + ], + ), + ) holder = async_mock.MagicMock(IndyHolder, autospec=True) get_creds = async_mock.CoroutineMock( return_value=( @@ -2138,17 +2384,17 @@ async def test_req_attach_presentation_existing_conn_auto_present_pres_msg(self) ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(TestConfig.req_attach)], + request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v2)], ) inv_message_cls.deserialize.return_value = mock_oob_invi - result = await self.manager.receive_invitation( + conn_rec = await self.manager.receive_invitation( mock_oob_invi, use_existing_connection=True ) - assert result.get("comment") == "this is test" + assert ConnRecord.deserialize(conn_rec) - async def test_req_attach_presentation_catch_value_error(self): + async def test_req_v2_attach_pres_catch_value_error(self): self.session.context.update_settings({"public_invites": True}) self.session.context.update_settings( {"debug.auto_respond_presentation_request": True} @@ -2169,10 +2415,10 @@ async def test_req_attach_presentation_catch_value_error(self): sender_did=TestConfig.test_target_did, ) - exchange_rec = V10PresentationExchange() - exchange_rec.auto_present = True - exchange_rec.presentation_request = TestConfig.INDY_PROOF_REQ - exchange_rec.presentation_proposal_dict = {} + px2_rec = test_module.V20PresExRecord( + auto_present=True, + pres_request=TestConfig.PRES_REQ_V2.serialize(), + ) with async_mock.patch.object( self.ledger, "get_key_for_did", async_mock.CoroutineMock() @@ -2181,10 +2427,10 @@ async def test_req_attach_presentation_catch_value_error(self): "receive_invitation", autospec=True, ) as didx_mgr_receive_invitation, async_mock.patch.object( - PresentationManager, - "receive_request", + V20PresManager, + "receive_pres_request", autospec=True, - ) as proof_mgr_receive_request, async_mock.patch( + ) as pres_mgr_receive_pres_req, async_mock.patch( "aries_cloudagent.protocols.out_of_band.v1_0.manager.InvitationMessage", autospec=True, ) as inv_message_cls, async_mock.patch.object( @@ -2216,22 +2462,30 @@ async def test_req_attach_presentation_catch_value_error(self): "receive_problem_report", autospec=True, ) as oob_mgr_receive_problem_report, async_mock.patch.object( - PresentationManager, - "create_presentation", + V20PresManager, + "create_pres", autospec=True, - ) as proof_mgr_create_presentation, async_mock.patch.object( - PresentationProposal, - "deserialize", - autospec=True, - ) as present_proposal_deserialize: + ) as pres_mgr_create_pres: mock_ledger_get_key_for_did.return_value = TestConfig.test_verkey oob_mgr_find_existing_conn.return_value = test_exist_conn - proof_mgr_receive_request.return_value = exchange_rec - proof_mgr_create_presentation.return_value = ( - exchange_rec, - Presentation(comment="this is test"), + pres_mgr_receive_pres_req.return_value = px2_rec + pres_mgr_create_pres.return_value = ( + px2_rec, + V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + presentations_attach=[ + AttachDecorator.data_base64( + mapping={"bogus": "proof"}, + ident="indy", + ) + ], + ), ) - present_proposal_deserialize.return_value = PresentationProposal() holder = async_mock.MagicMock(IndyHolder, autospec=True) get_creds = async_mock.CoroutineMock(return_value=()) holder.get_credentials_for_presentation_request_by_referent = get_creds @@ -2248,14 +2502,15 @@ async def test_req_attach_presentation_catch_value_error(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(TestConfig.req_attach)], + request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v2)], ) inv_message_cls.deserialize.return_value = mock_oob_invi - result = await self.manager.receive_invitation( - mock_oob_invi, use_existing_connection=True - ) - assert result is None + with self.assertRaises(OutOfBandManagerError) as context: + await self.manager.receive_invitation( + mock_oob_invi, use_existing_connection=True + ) + assert "Cannot auto-respond" in str(context.exception) async def test_req_attach_presentation_cred_offer(self): self.session.context.update_settings({"public_invites": True}) @@ -2278,7 +2533,7 @@ async def test_req_attach_presentation_cred_offer(self): recipient_did_public=False, sender_did=TestConfig.test_target_did, ) - req_attach = deepcopy(TestConfig.req_attach) + req_attach = deepcopy(TestConfig.req_attach_v1) req_attach["data"]["json"]["@type"] = DIDCommPrefix.qualify_current( CREDENTIAL_OFFER ) @@ -2298,7 +2553,7 @@ async def test_req_attach_presentation_cred_offer(self): PresentationManager, "receive_request", autospec=True, - ) as proof_mgr_receive_request, async_mock.patch( + ) as pres_mgr_receive_request, async_mock.patch( "aries_cloudagent.protocols.out_of_band.v1_0.manager.InvitationMessage", autospec=True, ) as inv_message_cls, async_mock.patch.object( @@ -2333,10 +2588,10 @@ async def test_req_attach_presentation_cred_offer(self): PresentationManager, "create_presentation", autospec=True, - ) as proof_mgr_create_presentation: + ) as pres_mgr_create_presentation: mock_ledger_get_key_for_did.return_value = TestConfig.test_verkey oob_mgr_find_existing_conn.return_value = test_exist_conn - proof_mgr_create_presentation.return_value = ( + pres_mgr_create_presentation.return_value = ( exchange_rec, Presentation(comment="this is test"), ) @@ -2353,4 +2608,4 @@ async def test_req_attach_presentation_cred_offer(self): result = await self.manager.receive_invitation( mock_oob_invi, use_existing_connection=True ) - assert "Unsupported request~attach type," in str(context.exception) + assert "Unsupported request~attach type" in str(context.exception) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/routes.py b/aries_cloudagent/protocols/present_proof/v1_0/routes.py index 046645cbe3..c34952455e 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/routes.py @@ -22,7 +22,6 @@ from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import ( INDY_EXTRA_WQL, - INT_EPOCH, NUM_STR_NATURAL, NUM_STR_WHOLE, UUIDFour, @@ -412,9 +411,7 @@ async def presentation_exchange_send_proposal(request: web.BaseRequest): connection_record = await ConnRecord.retrieve_by_id(session, connection_id) presentation_proposal_message = PresentationProposal( comment=comment, - presentation_proposal=IndyPresPreview.deserialize( - presentation_preview - ), + presentation_proposal=IndyPresPreview.deserialize(presentation_preview), ) except (BaseModelError, StorageError) as err: return await internal_error( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py index e853240488..c1fc0d6378 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py @@ -74,17 +74,9 @@ PRES_REQ = V20PresRequest( comment="Test", will_confirm=True, - formats=[ - V20PresFormat( - attach_id="abc", - format_=V20PresFormat.Format.INDY.aries, - ) - ], + formats=[V20PresFormat(attach_id="indy", format_=V20PresFormat.Format.INDY.aries)], request_presentations_attach=[ - AttachDecorator.data_base64( - mapping=INDY_PROOF_REQ, - ident="abc", - ) + AttachDecorator.data_base64(mapping=INDY_PROOF_REQ, ident="indy") ], ) @@ -109,14 +101,14 @@ def test_deserialize(self): "will_confirm": True, "formats": [ { - "attach_id": "abc", + "attach_id": "indy", "format": V20PresFormat.Format.INDY.aries, } ], "request_presentations~attach": [ AttachDecorator.data_base64( mapping=INDY_PROOF_REQ, - ident="abc", + ident="indy", ).serialize() ], } @@ -134,7 +126,7 @@ def test_deserialize_x(self): "will_confirm": True, "formats": [ { - "attach_id": "abc", + "attach_id": "indy", "format": V20PresFormat.Format.INDY.aries, } ], @@ -151,14 +143,14 @@ def test_deserialize_x(self): "will_confirm": True, "formats": [ { - "attach_id": "abc", + "attach_id": "indy", "format": V20PresFormat.Format.INDY.aries, } ], "request_presentations~attach": [ AttachDecorator.data_base64( mapping=INDY_PROOF_REQ, - ident="def", + ident="a suffusion of yellow", ).serialize() ], } @@ -176,14 +168,14 @@ def test_serialize(self): "will_confirm": True, "formats": [ { - "attach_id": "abc", + "attach_id": "indy", "format": V20PresFormat.Format.INDY.aries, } ], "request_presentations~attach": [ AttachDecorator.data_base64( mapping=INDY_PROOF_REQ, - ident="abc", + ident="indy", ).serialize() ], "comment": "Test", @@ -204,7 +196,7 @@ def test_make_model(self): "will_confirm": true, "request_presentations~attach": [ { - "@id": "abc", + "@id": "indy", "mime-type": "application/json", "data": { "base64": "eyJu..." @@ -213,7 +205,7 @@ def test_make_model(self): ], "formats": [ { - "attach_id": "abc", + "attach_id": "indy", "format": "hlindy-zkp-v1.0" } ], diff --git a/aries_cloudagent/protocols/present_proof/v2_0/routes.py b/aries_cloudagent/protocols/present_proof/v2_0/routes.py index 087273dc70..51abebafcc 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/routes.py @@ -24,7 +24,6 @@ from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import ( INDY_EXTRA_WQL, - INT_EPOCH, NUM_STR_NATURAL, NUM_STR_WHOLE, UUIDFour, @@ -39,14 +38,14 @@ from ..indy.cred_precis import IndyCredPrecisSchema from ..indy.proof_request import IndyProofRequestSchema -from ..indy.pres_preview import IndyPresPreview, IndyPresPreviewSchema +from ..indy.pres_preview import IndyPresPreviewSchema from ..indy.requested_creds import ( IndyRequestedCredsRequestedAttrSchema, IndyRequestedCredsRequestedPredSchema, ) from .manager import V20PresManager -from .message_types import PRES_20_REQUEST, SPEC_URI +from .message_types import SPEC_URI from .messages.pres_format import V20PresFormat from .messages.pres_proposal import V20PresProposal from .messages.pres_request import V20PresRequest diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py index 57e893f3ca..229c5ea5b1 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py @@ -101,6 +101,34 @@ def setUp(self): __getitem__=lambda _, k: self.request_dict[k], ) + async def test_validate(self): + schema = test_module.V20PresPreviewByFormatSchema() + schema.validate_fields({"indy": {"attributes": [], "predicates": []}}) + schema.validate_fields({"dif": {"some_dif_criterion": "..."}}) + schema.validate_fields( + { + "indy": {"attributes": [], "predicates": []}, + "dif": {"some_dif_criterion": "..."}, + } + ) + with self.assertRaises(test_module.ValidationError): + schema.validate_fields({}) + with self.assertRaises(test_module.ValidationError): + schema.validate_fields(["hopeless", "stop"]) + with self.assertRaises(test_module.ValidationError): + schema.validate_fields({"veres-one": {"no": "support"}}) + + schema = test_module.V20PresRequestByFormatSchema() + schema.validate_fields({"indy": {"...": "..."}}) + schema.validate_fields({"dif": {"...": "..."}}) + schema.validate_fields({"indy": {"...": "..."}, "dif": {"...": "..."}}) + with self.assertRaises(test_module.ValidationError): + schema.validate_fields({}) + with self.assertRaises(test_module.ValidationError): + schema.validate_fields(["hopeless", "stop"]) + with self.assertRaises(test_module.ValidationError): + schema.validate_fields({"veres-one": {"no": "support"}}) + async def test_validate_proof_req_attr_spec(self): aspec = IndyProofReqAttrSpecSchema() aspec.validate_fields({"name": "attr0"}) From 6580d5b2db1be30ade3869de93c6aabfbe7bc9cb Mon Sep 17 00:00:00 2001 From: sklump Date: Wed, 3 Mar 2021 20:55:59 +0000 Subject: [PATCH 095/243] tire-kicking fixes Signed-off-by: sklump --- .../protocols/issue_credential/v2_0/routes.py | 16 +- .../protocols/present_proof/indy/proof.py | 50 ++++++ .../protocols/present_proof/v1_0/routes.py | 87 +++------- .../v2_0/handlers/pres_request_handler.py | 3 +- .../protocols/present_proof/v2_0/manager.py | 27 +++- .../present_proof/v2_0/message_types.py | 8 +- .../protocols/present_proof/v2_0/routes.py | 147 ++++++++--------- .../present_proof/v2_0/tests/test_routes.py | 148 +++++++++++------- 8 files changed, 276 insertions(+), 210 deletions(-) create mode 100644 aries_cloudagent/protocols/present_proof/indy/proof.py diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py index 434755206a..bd2b850f35 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py @@ -55,7 +55,7 @@ class V20IssueCredentialModuleResponseSchema(OpenAPISchema): class V20CredExRecordListQueryStringSchema(OpenAPISchema): """Parameters and validators for credential exchange record list query.""" - connection_id = fields.UUID( + conn_id = fields.UUID( description="Connection identifier", required=False, example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 @@ -223,7 +223,7 @@ class V20CredCreateSchema(V20IssueCredSchemaCore): class V20CredProposalRequestSchemaBase(V20IssueCredSchemaCore): """Base class for request schema for sending credential proposal admin message.""" - connection_id = fields.UUID( + conn_id = fields.UUID( description="Connection identifier", required=True, example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 @@ -245,7 +245,7 @@ class V20CredProposalRequestPreviewMandSchema(V20CredProposalRequestSchemaBase): class V20CredOfferRequestSchema(V20IssueCredSchemaCore): """Request schema for sending credential offer admin message.""" - connection_id = fields.UUID( + conn_id = fields.UUID( description="Connection identifier", required=True, example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 @@ -331,7 +331,7 @@ async def credential_exchange_list(request: web.BaseRequest): tag_filter["thread_id"] = request.query["thread_id"] post_filter = { k: request.query[k] - for k in ("connection_id", "role", "state") + for k in ("conn_id", "role", "state") if request.query.get(k, "") != "" } @@ -518,7 +518,7 @@ async def credential_exchange_send(request: web.BaseRequest): body = await request.json() comment = body.get("comment") - conn_id = body.get("connection_id") + conn_id = body.get("conn_id") preview_spec = body.get("credential_preview") if not preview_spec: raise web.HTTPBadRequest(reason="Missing credential_preview") @@ -605,7 +605,7 @@ async def credential_exchange_send_proposal(request: web.BaseRequest): body = await request.json() - conn_id = body.get("connection_id") + conn_id = body.get("conn_id") comment = body.get("comment") preview_spec = body.get("credential_preview") filt_spec = body.get("filter") @@ -743,7 +743,7 @@ async def credential_exchange_create_free_offer(request: web.BaseRequest): filt_spec = body.get("filter") if not filt_spec: raise web.HTTPBadRequest(reason="Missing filter") - conn_id = body.get("connection_id") + conn_id = body.get("conn_id") trace_msg = body.get("trace") async with context.session() as session: @@ -831,7 +831,7 @@ async def credential_exchange_send_free_offer(request: web.BaseRequest): body = await request.json() - conn_id = body.get("connection_id") + conn_id = body.get("conn_id") filt_spec = body.get("filter") if not filt_spec: raise web.HTTPBadRequest(reason="Missing filter") diff --git a/aries_cloudagent/protocols/present_proof/indy/proof.py b/aries_cloudagent/protocols/present_proof/indy/proof.py new file mode 100644 index 0000000000..643c43f499 --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/indy/proof.py @@ -0,0 +1,50 @@ +"""Admin routes for presentations.""" + +from marshmallow import fields + +from ....utils.tracing import AdminAPIMessageTracingSchema + +from ..indy.requested_creds import ( + IndyRequestedCredsRequestedAttrSchema, + IndyRequestedCredsRequestedPredSchema, +) + + +class IndyPresSpecSchema(AdminAPIMessageTracingSchema): + """Request schema for indy proof specification to send as presentation.""" + + self_attested_attributes = fields.Dict( + description="Self-attested attributes to build into proof", + required=True, + keys=fields.Str(example="attr_name"), # marshmallow/apispec v3.0 ignores + values=fields.Str( + example="self_attested_value", + description=( + "Self-attested attribute values to use in requested-credentials " + "structure for proof construction" + ), + ), + ) + requested_attributes = fields.Dict( + description=( + "Nested object mapping proof request attribute referents to " + "requested-attribute specifiers" + ), + required=True, + keys=fields.Str(example="attr_referent"), # marshmallow/apispec v3.0 ignores + values=fields.Nested(IndyRequestedCredsRequestedAttrSchema()), + ) + requested_predicates = fields.Dict( + description=( + "Nested object mapping proof request predicate referents to " + "requested-predicate specifiers" + ), + required=True, + keys=fields.Str(example="pred_referent"), # marshmallow/apispec v3.0 ignores + values=fields.Nested(IndyRequestedCredsRequestedPredSchema()), + ) + trace = fields.Bool( + description="Whether to trace event (default false)", + required=False, + example=False, + ) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/routes.py b/aries_cloudagent/protocols/present_proof/v1_0/routes.py index c34952455e..a244bcb07f 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/routes.py @@ -35,12 +35,9 @@ from ...problem_report.v1_0.message import ProblemReport from ..indy.cred_precis import IndyCredPrecisSchema +from ..indy.proof import IndyPresSpecSchema from ..indy.proof_request import IndyProofRequestSchema from ..indy.pres_preview import IndyPresPreview, IndyPresPreviewSchema -from ..indy.requested_creds import ( - IndyRequestedCredsRequestedAttrSchema, - IndyRequestedCredsRequestedPredSchema, -) from .manager import PresentationManager from .message_types import ATTACH_DECO_IDS, PRESENTATION_REQUEST, SPEC_URI @@ -152,46 +149,6 @@ class V10PresentationSendRequestRequestSchema( ) -class V10PresentationRequestSchema(AdminAPIMessageTracingSchema): - """Request schema for sending a presentation.""" - - self_attested_attributes = fields.Dict( - description="Self-attested attributes to build into proof", - required=True, - keys=fields.Str(example="attr_name"), # marshmallow/apispec v3.0 ignores - values=fields.Str( - example="self_attested_value", - description=( - "Self-attested attribute values to use in requested-credentials " - "structure for proof construction" - ), - ), - ) - requested_attributes = fields.Dict( - description=( - "Nested object mapping proof request attribute referents to " - "requested-attribute specifiers" - ), - required=True, - keys=fields.Str(example="attr_referent"), # marshmallow/apispec v3.0 ignores - values=fields.Nested(IndyRequestedCredsRequestedAttrSchema()), - ) - requested_predicates = fields.Dict( - description=( - "Nested object mapping proof request predicate referents to " - "requested-predicate specifiers" - ), - required=True, - keys=fields.Str(example="pred_referent"), # marshmallow/apispec v3.0 ignores - values=fields.Nested(IndyRequestedCredsRequestedPredSchema()), - ) - trace = fields.Bool( - description="Whether to trace event (default false)", - required=False, - example=False, - ) - - class CredentialsFetchQueryStringSchema(OpenAPISchema): """Parameters and validators for credentials fetch request query string.""" @@ -232,7 +189,7 @@ class V10PresExIdMatchInfoSchema(OpenAPISchema): ) -@docs(tags=["present-proof"], summary="Fetch all present-proof exchange records") +@docs(tags=["present-proof v1.0"], summary="Fetch all present-proof exchange records") @querystring_schema(V10PresentationExchangeListQueryStringSchema) @response_schema(V10PresentationExchangeListSchema(), 200, description="") async def presentation_exchange_list(request: web.BaseRequest): @@ -271,7 +228,10 @@ async def presentation_exchange_list(request: web.BaseRequest): return web.json_response({"results": results}) -@docs(tags=["present-proof"], summary="Fetch a single presentation exchange record") +@docs( + tags=["present-proof v1.0"], + summary="Fetch a single presentation exchange record", +) @match_info_schema(V10PresExIdMatchInfoSchema()) @response_schema(V10PresentationExchangeSchema(), 200, description="") async def presentation_exchange_retrieve(request: web.BaseRequest): @@ -307,7 +267,7 @@ async def presentation_exchange_retrieve(request: web.BaseRequest): @docs( - tags=["present-proof"], + tags=["present-proof v1.0"], summary="Fetch credentials for a presentation request from wallet", ) @match_info_schema(V10PresExIdMatchInfoSchema()) @@ -379,7 +339,7 @@ async def presentation_exchange_credentials_list(request: web.BaseRequest): return web.json_response(credentials) -@docs(tags=["present-proof"], summary="Sends a presentation proposal") +@docs(tags=["present-proof v1.0"], summary="Sends a presentation proposal") @request_schema(V10PresentationProposalRequestSchema()) @response_schema(V10PresentationExchangeSchema(), 200, description="") async def presentation_exchange_send_proposal(request: web.BaseRequest): @@ -460,10 +420,8 @@ async def presentation_exchange_send_proposal(request: web.BaseRequest): @docs( - tags=["present-proof"], - summary=""" - Creates a presentation request not bound to any proposal or existing connection - """, + tags=["present-proof v1.0"], + summary="Creates a presentation request not bound to any proposal or connection", ) @request_schema(V10PresentationCreateRequestRequestSchema()) @response_schema(V10PresentationExchangeSchema(), 200, description="") @@ -534,7 +492,7 @@ async def presentation_exchange_create_request(request: web.BaseRequest): @docs( - tags=["present-proof"], + tags=["present-proof v1.0"], summary="Sends a free presentation request not bound to any proposal", ) @request_schema(V10PresentationSendRequestRequestSchema()) @@ -616,7 +574,7 @@ async def presentation_exchange_send_free_request(request: web.BaseRequest): @docs( - tags=["present-proof"], + tags=["present-proof v1.0"], summary="Sends a presentation request in reference to a proposal", ) @match_info_schema(V10PresExIdMatchInfoSchema()) @@ -702,9 +660,9 @@ async def presentation_exchange_send_bound_request(request: web.BaseRequest): return web.json_response(result) -@docs(tags=["present-proof"], summary="Sends a proof presentation") +@docs(tags=["present-proof v1.0"], summary="Sends a proof presentation") @match_info_schema(V10PresExIdMatchInfoSchema()) -@request_schema(V10PresentationRequestSchema()) +@request_schema(IndyPresSpecSchema()) @response_schema(V10PresentationExchangeSchema(), description="") async def presentation_exchange_send_presentation(request: web.BaseRequest): """ @@ -799,7 +757,7 @@ async def presentation_exchange_send_presentation(request: web.BaseRequest): return web.json_response(result) -@docs(tags=["present-proof"], summary="Verify a received presentation") +@docs(tags=["present-proof v1.0"], summary="Verify a received presentation") @match_info_schema(V10PresExIdMatchInfoSchema()) @response_schema(V10PresentationExchangeSchema(), description="") async def presentation_exchange_verify_presentation(request: web.BaseRequest): @@ -872,7 +830,7 @@ async def presentation_exchange_verify_presentation(request: web.BaseRequest): @docs( - tags=["present-proof"], + tags=["present-proof v1.0"], summary="Send a problem report for presentation exchange", ) @match_info_schema(V10PresExIdMatchInfoSchema()) @@ -917,7 +875,10 @@ async def presentation_exchange_problem_report(request: web.BaseRequest): return web.json_response({}) -@docs(tags=["present-proof"], summary="Remove an existing presentation exchange record") +@docs( + tags=["present-proof v1.0"], + summary="Remove an existing presentation exchange record", +) @match_info_schema(V10PresExIdMatchInfoSchema()) @response_schema(V10PresentProofModuleResponseSchema(), description="") async def presentation_exchange_remove(request: web.BaseRequest): @@ -957,7 +918,9 @@ async def register(app: web.Application): app.add_routes( [ web.get( - "/present-proof/records", presentation_exchange_list, allow_head=False + "/present-proof/records", + presentation_exchange_list, + allow_head=False, ), web.get( "/present-proof/records/{pres_ex_id}", @@ -1013,8 +976,8 @@ def post_process_routes(app: web.Application): app._state["swagger_dict"]["tags"] = [] app._state["swagger_dict"]["tags"].append( { - "name": "present-proof", - "description": "Proof presentation", + "name": "present-proof v1.0", + "description": "Proof presentation v1.0", "externalDocs": {"description": "Specification", "url": SPEC_URI}, } ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py index a98d8d9bfe..f55ce01686 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py @@ -53,8 +53,9 @@ async def handle(self, context: RequestContext, responder: BaseResponder): pres_ex_record = await V20PresExRecord.retrieve_by_tag_filter( session, {"thread_id": context.message._thread_id}, - {"connection_id": context.connection_record.connection_id}, + {"conn_id": context.connection_record.connection_id}, ) # holder initiated via proposal + pres_ex_record.pres_request = context.message.serialize() except StorageNotFoundError: # verifier sent this request free of any proposal pres_ex_record = V20PresExRecord( conn_id=context.connection_record.connection_id, diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index a50b1d4008..a508a978bf 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -230,12 +230,15 @@ async def create_pres( pres_ex_record: V20PresExRecord, requested_credentials: dict, comment: str = None, + *, + format_: V20PresFormat.Format = None, ) -> Tuple[V20PresExRecord, V20Pres]: """ Create a presentation. Args: pres_ex_record: record to update + format_: presentation format requested_credentials: indy formatted requested_credentials comment: optional human-readable comment @@ -266,6 +269,7 @@ async def create_pres( A tuple (updated presentation exchange record, presentation message) """ + assert format_ in (None, V20PresFormat.Format.INDY) # until DIF support # Get all credentials for this presentation holder = self._profile.inject(IndyHolder) @@ -275,7 +279,7 @@ async def create_pres( requested_referents = {} pres_request = V20PresRequest.deserialize( pres_ex_record.pres_request - ).attachment(V20PresFormat.Format.INDY) + ).attachment(format_) non_revoc_intervals = indy_proof_req2non_revoc_intervals(pres_request) attr_creds = requested_credentials.get("requested_attributes", {}) req_attrs = pres_request.get("requested_attributes", {}) @@ -434,7 +438,20 @@ async def create_pres( # save presentation exchange state pres_ex_record.state = V20PresExRecord.STATE_PRESENTATION_SENT - pres_ex_record.pres = indy_proof + pres_ex_record.pres = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ), + ], + presentations_attach=[ + AttachDecorator.data_base64( + mapping=indy_proof, + ident="indy", + ) + ] + ).serialize() async with self._profile.session() as session: await pres_ex_record.save(session, reason="create v2.0 presentation") @@ -454,7 +471,7 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): conn_id_filter = ( None if conn_record is None - else {"connection_id": conn_record.connection_id} + else {"conn_id": conn_record.connection_id} ) async with self._profile.session() as session: try: @@ -492,7 +509,7 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): f"Presentation {name}={value} mismatches proposal value" ) - pres_ex_record.pres = pres + pres_ex_record.pres = message.serialize() pres_ex_record.state = V20PresExRecord.STATE_PRESENTATION_RECEIVED async with self._profile.session() as session: @@ -626,7 +643,7 @@ async def receive_pres_ack(self, message: V20PresAck, conn_record: ConnRecord): pres_ex_record = await V20PresExRecord.retrieve_by_tag_filter( session, {"thread_id": message._thread_id}, - {"connection_id": conn_record.connection_id}, + {"conn_id": conn_record.connection_id}, ) pres_ex_record.state = V20PresExRecord.STATE_DONE diff --git a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py index 64dacde9d1..7d6ea07f75 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py @@ -17,9 +17,9 @@ MESSAGE_TYPES = DIDCommPrefix.qualify_all( { - PRES_20_PROPOSAL: (f"{PROTOCOL_PACKAGE}.messages.pres_proposal.PresProposal"), - PRES_20_REQUEST: (f"{PROTOCOL_PACKAGE}.messages.pres_request.PresRequest"), - PRES_20: f"{PROTOCOL_PACKAGE}.messages.pres.Pres", - PRES_20_ACK: (f"{PROTOCOL_PACKAGE}.messages.pres_ack.PresAck"), + PRES_20_PROPOSAL: f"{PROTOCOL_PACKAGE}.messages.pres_proposal.V20PresProposal", + PRES_20_REQUEST: f"{PROTOCOL_PACKAGE}.messages.pres_request.V20PresRequest", + PRES_20: f"{PROTOCOL_PACKAGE}.messages.pres.V20Pres", + PRES_20_ACK: f"{PROTOCOL_PACKAGE}.messages.pres_ack.V20PresAck", } ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/routes.py b/aries_cloudagent/protocols/present_proof/v2_0/routes.py index 51abebafcc..e120e62621 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/routes.py @@ -37,12 +37,9 @@ from ...problem_report.v1_0.message import ProblemReport from ..indy.cred_precis import IndyCredPrecisSchema +from ..indy.proof import IndyPresSpecSchema from ..indy.proof_request import IndyProofRequestSchema from ..indy.pres_preview import IndyPresPreviewSchema -from ..indy.requested_creds import ( - IndyRequestedCredsRequestedAttrSchema, - IndyRequestedCredsRequestedPredSchema, -) from .manager import V20PresManager from .message_types import SPEC_URI @@ -59,7 +56,7 @@ class V20PresentProofModuleResponseSchema(OpenAPISchema): class V20PresExRecordListQueryStringSchema(OpenAPISchema): """Parameters and validators for presentation exchange list query.""" - connection_id = fields.UUID( + conn_id = fields.UUID( description="Connection identifier", required=False, example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 @@ -120,8 +117,17 @@ class DIFPresRequestSchema(OpenAPISchema): ) +class DIFPresSpecSchema(OpenAPISchema): + """DIF presentation schema specification placeholder.""" + + some_dif = fields.Str( + description="Placeholder for W3C/DIF/JSON-LD presentation format", + required=False, + ) + + class V20PresPreviewByFormatSchema(OpenAPISchema): - """Presentation preview per format.""" + """Schema for presentation preview per format.""" indy = fields.Nested( IndyPresPreviewSchema, @@ -137,15 +143,13 @@ class V20PresPreviewByFormatSchema(OpenAPISchema): @validates_schema def validate_fields(self, data, **kwargs): """ - Validate schema fields. - - Data must have indy, dif, or both. + Validate schema fields: data must have at least one format. Args: data: The data to validate Raises: - ValidationError: if data has neither indy nor dif + ValidationError: if data has no formats """ if not any(f.api in data for f in V20PresFormat.Format): @@ -157,7 +161,7 @@ def validate_fields(self, data, **kwargs): class V20PresProposalRequestSchema(AdminAPIMessageTracingSchema): """Request schema for sending a presentation proposal admin message.""" - connection_id = fields.UUID( + conn_id = fields.UUID( description="Connection identifier", required=True, example=UUIDFour.EXAMPLE ) comment = fields.Str( @@ -183,7 +187,7 @@ class V20PresProposalRequestSchema(AdminAPIMessageTracingSchema): class V20PresRequestByFormatSchema(OpenAPISchema): - """Presentation preview per format.""" + """Presentation request per format.""" indy = fields.Nested( IndyProofRequestSchema, @@ -199,15 +203,13 @@ class V20PresRequestByFormatSchema(OpenAPISchema): @validates_schema def validate_fields(self, data, **kwargs): """ - Validate schema fields. - - Data must have indy, dif, or both. + Validate schema fields: data must have at least one format. Args: data: The data to validate Raises: - ValidationError: if data has neither indy nor dif + ValidationError: if data has no formats """ if not any(f.api in data for f in V20PresFormat.Format): @@ -219,7 +221,7 @@ def validate_fields(self, data, **kwargs): class V20PresCreateRequestRequestSchema(AdminAPIMessageTracingSchema): """Request schema for creating a proof request free of any connection.""" - presentation_request = fields.Nested(IndyProofRequestSchema(), required=True) + presentation_request = fields.Nested(V20PresRequestByFormatSchema(), required=True) comment = fields.Str(required=False, allow_none=True) trace = fields.Bool( description="Whether to trace event (default false)", @@ -231,50 +233,42 @@ class V20PresCreateRequestRequestSchema(AdminAPIMessageTracingSchema): class V20PresSendRequestRequestSchema(V20PresCreateRequestRequestSchema): """Request schema for sending a proof request on a connection.""" - connection_id = fields.UUID( + conn_id = fields.UUID( description="Connection identifier", required=True, example=UUIDFour.EXAMPLE ) -class V20PresRequestSchema(AdminAPIMessageTracingSchema): - """Request schema for sending a presentation.""" +class V20PresSpecByFormatRequestSchema(AdminAPIMessageTracingSchema): + """Presentation specification schema by format, for send-presentation request.""" - self_attested_attributes = fields.Dict( - description="Self-attested attributes to build into proof", - required=True, - keys=fields.Str(example="attr_name"), # marshmallow/apispec v3.0 ignores - values=fields.Str( - example="self_attested_value", - description=( - "Self-attested attribute values to use in requested-credentials " - "structure for proof construction" - ), - ), - ) - requested_attributes = fields.Dict( - description=( - "Nested object mapping proof request attribute referents to " - "requested-attribute specifiers" - ), - required=True, - keys=fields.Str(example="attr_referent"), # marshmallow/apispec v3.0 ignores - values=fields.Nested(IndyRequestedCredsRequestedAttrSchema()), - ) - requested_predicates = fields.Dict( - description=( - "Nested object mapping proof request predicate referents to " - "requested-predicate specifiers" - ), - required=True, - keys=fields.Str(example="pred_referent"), # marshmallow/apispec v3.0 ignores - values=fields.Nested(IndyRequestedCredsRequestedPredSchema()), + indy = fields.Nested( + IndyPresSpecSchema, + required=False, + description="Presentation specification for indy", ) - trace = fields.Bool( - description="Whether to trace event (default false)", + dif = fields.Nested( + DIFPresSpecSchema, required=False, - example=False, + description="Presentation specification for DIF", ) + @validates_schema + def validate_fields(self, data, **kwargs): + """ + Validate schema fields: specify exactly one format. + + Args: + data: The data to validate + + Raises: + ValidationError: if data does not have exactly one format. + + """ + if len(data.keys() & {f.api for f in V20PresFormat.Format}) != 1: + raise ValidationError( + "V20PresSpecByFormatRequestSchema must specify one presentation format" + ) + class V20CredentialsFetchQueryStringSchema(OpenAPISchema): """Parameters and validators for credentials fetch request query string.""" @@ -309,7 +303,7 @@ class V20PresProblemReportRequestSchema(OpenAPISchema): class V20PresExIdMatchInfoSchema(OpenAPISchema): - """Path parameters and validators for request taking presentation exchange id.""" + """Path parameters for request taking presentation exchange id.""" pres_ex_id = fields.Str( description="Presentation exchange identifier", required=True, **UUID4 @@ -363,7 +357,7 @@ async def present_proof_list(request: web.BaseRequest): tag_filter["thread_id"] = request.query["thread_id"] post_filter = { k: request.query[k] - for k in ("connection_id", "role", "state") + for k in ("conn_id", "role", "state") if request.query.get(k, "") != "" } @@ -462,7 +456,7 @@ async def present_proof_credentials_list(request: web.BaseRequest): holder = context.profile.inject(IndyHolder) try: pres_request = pres_ex_record.pres_request.attachment(V20PresFormat.Format.INDY) - # TODO allow for choice of format from pres req + # TODO allow for choice of format from those specified in pres req credentials = await holder.get_credentials_for_presentation_request_by_referent( pres_request, pres_referents, @@ -510,7 +504,7 @@ async def present_proof_send_proposal(request: web.BaseRequest): body = await request.json() comment = body.get("comment") - conn_id = body.get("connection_id") + conn_id = body.get("conn_id") pres_preview = body.get("presentation_preview") conn_record = None @@ -569,7 +563,7 @@ async def present_proof_send_proposal(request: web.BaseRequest): @docs( tags=["present-proof v2.0"], - summary=("Creates a presentation request not bound to any proposal or connection"), + summary="Creates a presentation request not bound to any proposal or connection", ) @request_schema(V20PresCreateRequestRequestSchema()) @response_schema(V20PresExRecordSchema(), 200, description="") @@ -658,7 +652,7 @@ async def present_proof_send_free_request(request: web.BaseRequest): body = await request.json() - conn_id = body.get("connection_id") + conn_id = body.get("conn_id") async with context.session() as session: try: conn_record = await ConnRecord.retrieve_by_id(session, conn_id) @@ -740,6 +734,7 @@ async def present_proof_send_bound_request(request: web.BaseRequest): async with context.session() as session: try: pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + print(f'\n\n== ROUTES create-bound-req got pxrec {pres_ex_record.serialize()}') except StorageNotFoundError as err: return await internal_error( err, web.HTTPNotFound, pres_ex_record, outbound_handler @@ -797,7 +792,7 @@ async def present_proof_send_bound_request(request: web.BaseRequest): @docs(tags=["present-proof v2.0"], summary="Sends a proof presentation") @match_info_schema(V20PresExIdMatchInfoSchema()) -@request_schema(V20PresRequestSchema()) +@request_schema(V20PresSpecByFormatRequestSchema()) @response_schema(V20PresExRecordSchema(), description="") async def present_proof_send_presentation(request: web.BaseRequest): """ @@ -815,12 +810,14 @@ async def present_proof_send_presentation(request: web.BaseRequest): context: AdminRequestContext = request["context"] outbound_handler = request["outbound_message_router"] pres_ex_id = request.match_info["pres_ex_id"] + fmt = V20PresFormat.Format.get(request.match_info.get("format")) body = await request.json() pres_ex_record = None async with context.session() as session: try: pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + print(f'\n\n== ROUTES send-pres got pxrec {pres_ex_record.serialize()}') except StorageNotFoundError as err: return await internal_error( err, web.HTTPNotFound, pres_ex_record, outbound_handler @@ -854,6 +851,7 @@ async def present_proof_send_presentation(request: web.BaseRequest): "requested_predicates": body.get("requested_predicates"), }, comment=body.get("comment"), + format_=fmt, ) result = pres_ex_record.serialize() except ( @@ -912,6 +910,7 @@ async def present_proof_verify_presentation(request: web.BaseRequest): async with context.session() as session: try: pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + print(f'\n\n== ROUTES verify got pxrec {pres_ex_record.serialize()}') except StorageNotFoundError as err: return await internal_error( err, web.HTTPNotFound, pres_ex_record, outbound_handler @@ -981,6 +980,7 @@ async def present_proof_problem_report(request: web.BaseRequest): try: async with await context.session() as session: pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + print(f'\n\n== ROUTES prob-rept got pxrec {pres_ex_record.serialize()}') except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err @@ -1021,6 +1021,7 @@ async def present_proof_remove(request: web.BaseRequest): try: async with context.session() as session: pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) + print(f'\n\n== ROUTES remove got pxrec {pres_ex_record.serialize()}') await pres_ex_record.delete_record(session) except StorageNotFoundError as err: return await internal_error( @@ -1039,47 +1040,51 @@ async def register(app: web.Application): app.add_routes( [ - web.get("/present-proof/records", present_proof_list, allow_head=False), web.get( - "/present-proof/records/{pres_ex_id}", + "/present-proof-2.0/records", + present_proof_list, + allow_head=False, + ), + web.get( + "/present-proof-2.0/records/{pres_ex_id}", present_proof_retrieve, allow_head=False, ), web.get( - "/present-proof/records/{pres_ex_id}/credentials", + "/present-proof-2.0/records/{pres_ex_id}/credentials", present_proof_credentials_list, allow_head=False, ), web.post( - "/present-proof/send-proposal", + "/present-proof-2.0/send-proposal", present_proof_send_proposal, ), web.post( - "/present-proof/create-request", + "/present-proof-2.0/create-request", present_proof_create_request, ), web.post( - "/present-proof/send-request", + "/present-proof-2.0/send-request", present_proof_send_free_request, ), web.post( - "/present-proof/records/{pres_ex_id}/send-request", + "/present-proof-2.0/records/{pres_ex_id}/send-request", present_proof_send_bound_request, ), web.post( - "/present-proof/records/{pres_ex_id}/send-presentation", + "/present-proof-2.0/records/{pres_ex_id}/send-presentation", present_proof_send_presentation, ), web.post( - "/present-proof/records/{pres_ex_id}/verify-presentation", + "/present-proof-2.0/records/{pres_ex_id}/verify-presentation", present_proof_verify_presentation, ), web.post( - "/present-proof/records/{pres_ex_id}/problem-report", + "/present-proof-2.0/records/{pres_ex_id}/problem-report", present_proof_problem_report, ), web.delete( - "/present-proof/records/{pres_ex_id}", + "/present-proof-2.0/records/{pres_ex_id}", present_proof_remove, ), ] @@ -1095,7 +1100,7 @@ def post_process_routes(app: web.Application): app._state["swagger_dict"]["tags"].append( { "name": "present-proof v2.0", - "description": "Proof presentation", + "description": "Proof presentation v2.0", "externalDocs": {"description": "Specification", "url": SPEC_URI}, } ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py index 229c5ea5b1..214f7d1ae3 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py @@ -113,8 +113,6 @@ async def test_validate(self): ) with self.assertRaises(test_module.ValidationError): schema.validate_fields({}) - with self.assertRaises(test_module.ValidationError): - schema.validate_fields(["hopeless", "stop"]) with self.assertRaises(test_module.ValidationError): schema.validate_fields({"veres-one": {"no": "support"}}) @@ -125,7 +123,15 @@ async def test_validate(self): with self.assertRaises(test_module.ValidationError): schema.validate_fields({}) with self.assertRaises(test_module.ValidationError): - schema.validate_fields(["hopeless", "stop"]) + schema.validate_fields({"veres-one": {"no": "support"}}) + + schema = test_module.V20PresSpecByFormatRequestSchema() + schema.validate_fields({"indy": {"...": "..."}}) + schema.validate_fields({"dif": {"...": "..."}}) + with self.assertRaises(test_module.ValidationError): + schema.validate_fields({"indy": {"...": "..."}, "dif": {"...": "..."}}) + with self.assertRaises(test_module.ValidationError): + schema.validate_fields({}) with self.assertRaises(test_module.ValidationError): schema.validate_fields({"veres-one": {"no": "support"}}) @@ -155,7 +161,7 @@ async def test_validate_proof_req_attr_spec(self): async def test_present_proof_list(self): self.request.query = { "thread_id": "thread_id_0", - "connection_id": "conn_id_0", + "conn_id": "conn_id_0", "role": "dummy", "state": "dummy", } @@ -182,7 +188,7 @@ async def test_present_proof_list(self): async def test_present_proof_list_x(self): self.request.query = { "thread_id": "thread_id_0", - "connection_id": "conn_id_0", + "conn_id": "conn_id_0", "role": "dummy", "state": "dummy", } @@ -331,7 +337,7 @@ async def test_present_proof_retrieve_ser_x(self): self.request.match_info = {"pres_ex_id": "dummy"} mock_pres_ex_rec_inst = async_mock.MagicMock( - connection_id="abc123", + conn_id="abc123", thread_id="thid123", serialize=async_mock.MagicMock(side_effect=test_module.BaseModelError()), ) @@ -348,7 +354,7 @@ async def test_present_proof_retrieve_ser_x(self): async def test_present_proof_send_proposal(self): self.request.json = async_mock.CoroutineMock( return_value={ - "connection_id": "dummy-conn-id", + "conn_id": "dummy-conn-id", "presentation_preview": { V20PresFormat.Format.INDY.api: INDY_PRES_PREVIEW.serialize() }, @@ -498,7 +504,7 @@ async def test_present_proof_send_free_request(self): ) self.request.json = async_mock.CoroutineMock( return_value={ - "connection_id": "dummy", + "conn_id": "dummy", "comment": "dummy", "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, } @@ -534,7 +540,7 @@ async def test_present_proof_send_free_request(self): async def test_present_proof_send_free_request_not_found(self): self.request.json = async_mock.CoroutineMock( - return_value={"connection_id": "dummy"} + return_value={"conn_id": "dummy"} ) with async_mock.patch.object( @@ -549,7 +555,7 @@ async def test_present_proof_send_free_request_not_found(self): async def test_present_proof_send_free_request_not_ready(self): self.request.json = async_mock.CoroutineMock( - return_value={"connection_id": "dummy", "proof_request": {}} + return_value={"conn_id": "dummy", "proof_request": {}} ) with async_mock.patch.object( @@ -571,7 +577,7 @@ async def test_present_proof_send_free_request_x(self): ) self.request.json = async_mock.CoroutineMock( return_value={ - "connection_id": "dummy", + "conn_id": "dummy", "comment": "dummy", "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, } @@ -633,7 +639,7 @@ async def test_present_proof_send_bound_request(self): test_module.web, "json_response", async_mock.MagicMock() ) as mock_response: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -686,7 +692,7 @@ async def test_present_proof_send_bound_request_not_found(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -726,7 +732,7 @@ async def test_present_proof_send_bound_request_not_ready(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -781,7 +787,7 @@ async def test_present_proof_send_bound_request_bad_state(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_DONE, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -820,7 +826,7 @@ async def test_present_proof_send_bound_request_x(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -849,13 +855,17 @@ async def test_present_proof_send_bound_request_x(self): async def test_present_proof_send_presentation(self): self.request.json = async_mock.CoroutineMock( return_value={ - "comment": "dummy", - "self_attested_attributes": {}, - "requested_attributes": {}, - "requested_predicates": {}, + "indy": { + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } } ) - self.request.match_info = {"pres_ex_id": "dummy"} + self.request.match_info = { + "pres_ex_id": "dummy", + } self.profile.context.injector.bind_instance( IndyVerifier, async_mock.MagicMock( @@ -873,7 +883,7 @@ async def test_present_proof_send_presentation(self): test_module.web, "json_response" ) as mock_response: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -903,13 +913,17 @@ async def test_present_proof_send_presentation(self): async def test_present_proof_send_presentation_px_rec_not_found(self): self.request.json = async_mock.CoroutineMock( return_value={ - "comment": "dummy", - "self_attested_attributes": {}, - "requested_attributes": {}, - "requested_predicates": {}, + "indy": { + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } } ) - self.request.match_info = {"pres_ex_id": "dummy"} + self.request.match_info = { + "pres_ex_id": "dummy", + } with async_mock.patch.object( test_module, "V20PresExRecord", autospec=True @@ -925,13 +939,17 @@ async def test_present_proof_send_presentation_px_rec_not_found(self): async def test_present_proof_send_presentation_not_found(self): self.request.json = async_mock.CoroutineMock( return_value={ - "comment": "dummy", - "self_attested_attributes": {}, - "requested_attributes": {}, - "requested_predicates": {}, + "indy": { + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } } ) - self.request.match_info = {"pres_ex_id": "dummy"} + self.request.match_info = { + "pres_ex_id": "dummy", + } self.profile.context.injector.bind_instance( IndyVerifier, async_mock.MagicMock( @@ -945,7 +963,7 @@ async def test_present_proof_send_presentation_not_found(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -966,13 +984,17 @@ async def test_present_proof_send_presentation_not_found(self): async def test_present_proof_send_presentation_not_ready(self): self.request.json = async_mock.CoroutineMock( return_value={ - "comment": "dummy", - "self_attested_attributes": {}, - "requested_attributes": {}, - "requested_predicates": {}, + "indy": { + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } } ) - self.request.match_info = {"pres_ex_id": "dummy"} + self.request.match_info = { + "pres_ex_id": "dummy", + } self.profile.context.injector.bind_instance( IndyVerifier, async_mock.MagicMock( @@ -986,7 +1008,7 @@ async def test_present_proof_send_presentation_not_ready(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1007,19 +1029,23 @@ async def test_present_proof_send_presentation_not_ready(self): async def test_present_proof_send_presentation_bad_state(self): self.request.json = async_mock.CoroutineMock( return_value={ - "comment": "dummy", - "self_attested_attributes": {}, - "requested_attributes": {}, - "requested_predicates": {}, + "indy": { + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } } ) - self.request.match_info = {"pres_ex_id": "dummy"} + self.request.match_info = { + "pres_ex_id": "dummy", + } with async_mock.patch.object( test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_DONE, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1035,13 +1061,17 @@ async def test_present_proof_send_presentation_bad_state(self): async def test_present_proof_send_presentation_x(self): self.request.json = async_mock.CoroutineMock( return_value={ - "comment": "dummy", - "self_attested_attributes": {}, - "requested_attributes": {}, - "requested_predicates": {}, + "indy": { + "comment": "dummy", + "self_attested_attributes": {}, + "requested_attributes": {}, + "requested_predicates": {}, + } } ) - self.request.match_info = {"pres_ex_id": "dummy"} + self.request.match_info = { + "pres_ex_id": "dummy", + } self.profile.context.injector.bind_instance( IndyVerifier, async_mock.MagicMock( @@ -1059,7 +1089,7 @@ async def test_present_proof_send_presentation_x(self): test_module.web, "json_response" ) as mock_response: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1097,7 +1127,7 @@ async def test_present_proof_verify_presentation(self): test_module.web, "json_response", async_mock.MagicMock() ) as mock_response: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1142,7 +1172,7 @@ async def test_present_proof_verify_presentation_not_found(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1169,7 +1199,7 @@ async def test_present_proof_verify_presentation_not_ready(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1193,7 +1223,7 @@ async def test_present_proof_verify_presentation_bad_state(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_DONE, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1219,7 +1249,7 @@ async def test_present_proof_verify_presentation_x(self): test_module.web, "json_response", async_mock.MagicMock() ) as mock_response: mock_px_rec_inst = async_mock.MagicMock( - connection_id="dummy", + conn_id="dummy", state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1263,7 +1293,7 @@ async def test_present_proof_problem_report(self): mock_response.assert_called_once_with({}) self.request["outbound_message_router"].assert_awaited_once_with( mock_prob_report_cls.return_value, - connection_id="dummy-conn-id", + conn_id="dummy-conn-id", ) async def test_present_proof_problem_report_bad_pres_ex_id(self): @@ -1291,7 +1321,7 @@ async def test_present_proof_remove(self): mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( return_value=async_mock.MagicMock( state=test_module.V20PresExRecord.STATE_DONE, - connection_id="dummy", + conn_id="dummy", delete_record=async_mock.CoroutineMock(), ) ) @@ -1321,7 +1351,7 @@ async def test_present_proof_remove_x(self): mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( return_value=async_mock.MagicMock( state=test_module.V20PresExRecord.STATE_DONE, - connection_id="dummy", + conn_id="dummy", delete_record=async_mock.CoroutineMock( side_effect=test_module.StorageError() ), From eab0242ff8dd50f7be947afd7fb56752e0d46446 Mon Sep 17 00:00:00 2001 From: sklump Date: Wed, 3 Mar 2021 20:57:00 +0000 Subject: [PATCH 096/243] black tweaks Signed-off-by: sklump --- aries_cloudagent/protocols/present_proof/v2_0/manager.py | 6 ++---- aries_cloudagent/protocols/present_proof/v2_0/routes.py | 5 ----- .../protocols/present_proof/v2_0/tests/test_routes.py | 4 +--- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index a508a978bf..441654a7a5 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -450,7 +450,7 @@ async def create_pres( mapping=indy_proof, ident="indy", ) - ] + ], ).serialize() async with self._profile.session() as session: await pres_ex_record.save(session, reason="create v2.0 presentation") @@ -469,9 +469,7 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): thread_id = message._thread_id conn_id_filter = ( - None - if conn_record is None - else {"conn_id": conn_record.connection_id} + None if conn_record is None else {"conn_id": conn_record.connection_id} ) async with self._profile.session() as session: try: diff --git a/aries_cloudagent/protocols/present_proof/v2_0/routes.py b/aries_cloudagent/protocols/present_proof/v2_0/routes.py index e120e62621..41cd430780 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/routes.py @@ -734,7 +734,6 @@ async def present_proof_send_bound_request(request: web.BaseRequest): async with context.session() as session: try: pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) - print(f'\n\n== ROUTES create-bound-req got pxrec {pres_ex_record.serialize()}') except StorageNotFoundError as err: return await internal_error( err, web.HTTPNotFound, pres_ex_record, outbound_handler @@ -817,7 +816,6 @@ async def present_proof_send_presentation(request: web.BaseRequest): async with context.session() as session: try: pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) - print(f'\n\n== ROUTES send-pres got pxrec {pres_ex_record.serialize()}') except StorageNotFoundError as err: return await internal_error( err, web.HTTPNotFound, pres_ex_record, outbound_handler @@ -910,7 +908,6 @@ async def present_proof_verify_presentation(request: web.BaseRequest): async with context.session() as session: try: pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) - print(f'\n\n== ROUTES verify got pxrec {pres_ex_record.serialize()}') except StorageNotFoundError as err: return await internal_error( err, web.HTTPNotFound, pres_ex_record, outbound_handler @@ -980,7 +977,6 @@ async def present_proof_problem_report(request: web.BaseRequest): try: async with await context.session() as session: pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) - print(f'\n\n== ROUTES prob-rept got pxrec {pres_ex_record.serialize()}') except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err @@ -1021,7 +1017,6 @@ async def present_proof_remove(request: web.BaseRequest): try: async with context.session() as session: pres_ex_record = await V20PresExRecord.retrieve_by_id(session, pres_ex_id) - print(f'\n\n== ROUTES remove got pxrec {pres_ex_record.serialize()}') await pres_ex_record.delete_record(session) except StorageNotFoundError as err: return await internal_error( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py index 214f7d1ae3..1a666f23fb 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py @@ -539,9 +539,7 @@ async def test_present_proof_send_free_request(self): ) async def test_present_proof_send_free_request_not_found(self): - self.request.json = async_mock.CoroutineMock( - return_value={"conn_id": "dummy"} - ) + self.request.json = async_mock.CoroutineMock(return_value={"conn_id": "dummy"}) with async_mock.patch.object( test_module, "ConnRecord", async_mock.MagicMock() From ad8b749bbc4c5e0bb82303ff2bf4fe8361f938af Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 4 Mar 2021 14:25:06 +0000 Subject: [PATCH 097/243] undo conn_id false economy in v2.0 exchange records; work in progress, demo still broken Signed-off-by: sklump --- .../connections/models/conn_record.py | 2 +- .../issue_credential/v2_0/manager.py | 40 +++--- .../v2_0/models/cred_ex_record.py | 19 +-- .../v2_0/models/tests/test_cred_ex_record.py | 1 - .../protocols/issue_credential/v2_0/routes.py | 91 +++++++------ .../v2_0/tests/test_manager.py | 127 +++++++++--------- .../v2_0/tests/test_routes.py | 71 +++++----- .../protocols/out_of_band/v1_0/manager.py | 2 +- .../out_of_band/v1_0/tests/test_manager.py | 8 +- .../v2_0/handlers/pres_request_handler.py | 4 +- .../protocols/present_proof/v2_0/manager.py | 22 +-- .../v2_0/messages/tests/test_pres_proposal.py | 10 +- .../v2_0/models/pres_exchange.py | 46 ++++++- .../v2_0/models/tests/test_record.py | 4 +- .../protocols/present_proof/v2_0/routes.py | 54 ++++---- .../present_proof/v2_0/tests/test_manager.py | 6 + .../present_proof/v2_0/tests/test_routes.py | 56 ++++---- demo/AcmeDemoWorkshop.md | 2 +- demo/runners/acme.py | 11 +- demo/runners/alice.py | 67 +++++++++ demo/runners/faber.py | 19 ++- 21 files changed, 404 insertions(+), 258 deletions(-) diff --git a/aries_cloudagent/connections/models/conn_record.py b/aries_cloudagent/connections/models/conn_record.py index da82bced7d..4e44fb6bf0 100644 --- a/aries_cloudagent/connections/models/conn_record.py +++ b/aries_cloudagent/connections/models/conn_record.py @@ -181,7 +181,7 @@ def __init__( invitation_mode: str = None, alias: str = None, their_public_did: str = None, - rfc23_state=None, # derived from state + rfc23_state: str = None, # from state: formalism for base_record.from_storage() initiator: str = None, # for backward compatibility with old ConnectionRecord **kwargs, ): diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py index 6a876b9e58..4f8f6b3f96 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py @@ -91,7 +91,7 @@ async def get_detail_record( async def prepare_send( self, - conn_id: str, + connection_id: str, cred_proposal: V20CredProposal, auto_remove: bool = None, ) -> Tuple[V20CredExRecord, V20CredOffer]: @@ -99,7 +99,7 @@ async def prepare_send( Set up a new credential exchange record for an automated send. Args: - conn_id: connection for which to create offer + connection_id: connection for which to create offer cred_proposal: credential proposal with preview auto_remove: flag to remove the record automatically on completion @@ -110,7 +110,7 @@ async def prepare_send( if auto_remove is None: auto_remove = not self._profile.settings.get("preserve_exchange_records") cred_ex_record = V20CredExRecord( - conn_id=conn_id, + connection_id=connection_id, initiator=V20CredExRecord.INITIATOR_SELF, role=V20CredExRecord.ROLE_ISSUER, cred_proposal=cred_proposal.serialize(), @@ -126,7 +126,7 @@ async def prepare_send( async def create_proposal( self, - conn_id: str, + connection_id: str, *, auto_remove: bool = None, comment: str = None, @@ -138,7 +138,7 @@ async def create_proposal( Create a credential proposal. Args: - conn_id: connection for which to create proposal + connection_id: connection for which to create proposal auto_remove: whether to remove record automatically on completion comment: optional human-readable comment to include in proposal cred_preview: credential preview to use to create credential proposal @@ -167,7 +167,7 @@ async def create_proposal( if auto_remove is None: auto_remove = not self._profile.settings.get("preserve_exchange_records") cred_ex_record = V20CredExRecord( - conn_id=conn_id, + connection_id=connection_id, thread_id=cred_proposal_message._thread_id, initiator=V20CredExRecord.INITIATOR_SELF, role=V20CredExRecord.ROLE_HOLDER, @@ -186,7 +186,7 @@ async def create_proposal( async def receive_proposal( self, cred_proposal_message: V20CredProposal, - conn_id: str, + connection_id: str, ) -> V20CredExRecord: """ Receive a credential proposal. @@ -197,7 +197,7 @@ async def receive_proposal( """ # at this point, cred def and schema still open to potential negotiation cred_ex_record = V20CredExRecord( - conn_id=conn_id, + connection_id=connection_id, thread_id=cred_proposal_message._thread_id, initiator=V20CredExRecord.INITIATOR_EXTERNAL, role=V20CredExRecord.ROLE_ISSUER, @@ -314,14 +314,14 @@ async def _create(cred_def_id): # may change for DIF async def receive_offer( self, cred_offer_message: V20CredOffer, - conn_id: str, + connection_id: str, ) -> V20CredExRecord: """ Receive a credential offer. Args: cred_offer_message: credential offer message - conn_id: connection identifier + connection_id: connection identifier Returns: The credential exchange record, updated @@ -358,13 +358,13 @@ async def receive_offer( try: cred_ex_record = await ( V20CredExRecord.retrieve_by_conn_and_thread( - session, conn_id, cred_offer_message._thread_id + session, connection_id, cred_offer_message._thread_id ) ) cred_ex_record.cred_proposal = cred_proposal_ser except StorageNotFoundError: # issuer sent this offer free of any proposal cred_ex_record = V20CredExRecord( - conn_id=conn_id, + connection_id=connection_id, thread_id=cred_offer_message._thread_id, initiator=V20CredExRecord.INITIATOR_EXTERNAL, role=V20CredExRecord.ROLE_HOLDER, @@ -472,14 +472,14 @@ async def _create_indy(): return (cred_ex_record, cred_request_message) async def receive_request( - self, cred_request_message: V20CredRequest, conn_id: str + self, cred_request_message: V20CredRequest, connection_id: str ) -> V20CredExRecord: """ Receive a credential request. Args: cred_request_message: credential request to receive - conn_id: connection identifier + connection_id: connection identifier Returns: credential exchange record, retrieved and updated @@ -490,7 +490,7 @@ async def receive_request( async with self._profile.session() as session: cred_ex_record = await ( V20CredExRecord.retrieve_by_conn_and_thread( - session, conn_id, cred_request_message._thread_id + session, connection_id, cred_request_message._thread_id ) ) cred_ex_record.cred_request = cred_request_message.serialize() @@ -702,7 +702,7 @@ async def issue_credential( return (cred_ex_record, cred_issue_message) async def receive_credential( - self, cred_issue_message: V20CredIssue, conn_id: str + self, cred_issue_message: V20CredIssue, connection_id: str ) -> V20CredExRecord: """ Receive a credential issue message from an issuer. @@ -720,7 +720,7 @@ async def receive_credential( cred_ex_record = await ( V20CredExRecord.retrieve_by_conn_and_thread( session, - conn_id, + connection_id, cred_issue_message._thread_id, ) ) @@ -820,14 +820,14 @@ async def store_credential( return (cred_ex_record, cred_ack_message) async def receive_credential_ack( - self, cred_ack_message: V20CredAck, conn_id: str + self, cred_ack_message: V20CredAck, connection_id: str ) -> V20CredExRecord: """ Receive credential ack from holder. Args: cred_ack_message: credential ack message to receive - conn_id: connection identifier + connection_id: connection identifier Returns: credential exchange record, retrieved and updated @@ -838,7 +838,7 @@ async def receive_credential_ack( cred_ex_record = await ( V20CredExRecord.retrieve_by_conn_and_thread( session, - conn_id, + connection_id, cred_ack_message._thread_id, ) ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py b/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py index 7dd8821d8c..4a14738de5 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py @@ -43,7 +43,7 @@ def __init__( self, *, cred_ex_id: str = None, - conn_id: str = None, + connection_id: str = None, thread_id: str = None, parent_thread_id: str = None, initiator: str = None, @@ -65,7 +65,7 @@ def __init__( """Initialize a new V20CredExRecord.""" super().__init__(cred_ex_id, state, trace=trace, **kwargs) self._id = cred_ex_id - self.conn_id = conn_id + self.connection_id = connection_id self.thread_id = thread_id self.parent_thread_id = parent_thread_id self.initiator = initiator @@ -88,11 +88,6 @@ def cred_ex_id(self) -> str: """Accessor for the ID associated with this exchange.""" return self._id - @property - def connection_id(self) -> str: - """Synonym for conn_id.""" - return self.conn_id - @property def cred_preview(self) -> Mapping: """Credential preview from credential proposal.""" @@ -106,7 +101,7 @@ def record_value(self) -> Mapping: return { prop: getattr(self, prop) for prop in ( - "conn_id", + "connection_id", "parent_thread_id", "initiator", "role", @@ -127,10 +122,10 @@ def record_value(self) -> Mapping: @classmethod async def retrieve_by_conn_and_thread( - cls, session: ProfileSession, conn_id: str, thread_id: str + cls, session: ProfileSession, connection_id: str, thread_id: str ) -> "V20CredExRecord": """Retrieve a credential exchange record by connection and thread ID.""" - cache_key = f"credential_exchange_ctidx::{conn_id}::{thread_id}" + cache_key = f"credential_exchange_ctidx::{connection_id}::{thread_id}" record_id = await cls.get_cached_key(session, cache_key) if record_id: record = await cls.retrieve_by_id(session, record_id) @@ -138,7 +133,7 @@ async def retrieve_by_conn_and_thread( record = await cls.retrieve_by_tag_filter( session, {"thread_id": thread_id}, - {"conn_id": conn_id} if conn_id else None, + {"connection_id": connection_id} if connection_id else None, ) await cls.set_cached_key(session, cache_key, record.cred_ex_id) return record @@ -161,7 +156,7 @@ class Meta: description="Credential exchange identifier", example=UUIDFour.EXAMPLE, ) - conn_id = fields.Str( + connection_id = fields.Str( required=False, description="Connection identifier", example=UUIDFour.EXAMPLE ) thread_id = fields.Str( diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/models/tests/test_cred_ex_record.py b/aries_cloudagent/protocols/issue_credential/v2_0/models/tests/test_cred_ex_record.py index 108ac70c3b..1f7542812c 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/models/tests/test_cred_ex_record.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/models/tests/test_cred_ex_record.py @@ -41,5 +41,4 @@ async def test_record(self): for j in range(i, len(diff)): assert diff[i] == diff[j] if i == j else diff[i] != diff[j] - assert same[0].connection_id == same[0].conn_id # cover connection_id assert not same[0].cred_preview # cover non-proposal's non-preview diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py index bd2b850f35..3e249508d3 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py @@ -55,7 +55,7 @@ class V20IssueCredentialModuleResponseSchema(OpenAPISchema): class V20CredExRecordListQueryStringSchema(OpenAPISchema): """Parameters and validators for credential exchange record list query.""" - conn_id = fields.UUID( + connection_id = fields.UUID( description="Connection identifier", required=False, example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 @@ -223,7 +223,7 @@ class V20CredCreateSchema(V20IssueCredSchemaCore): class V20CredProposalRequestSchemaBase(V20IssueCredSchemaCore): """Base class for request schema for sending credential proposal admin message.""" - conn_id = fields.UUID( + connection_id = fields.UUID( description="Connection identifier", required=True, example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 @@ -245,7 +245,7 @@ class V20CredProposalRequestPreviewMandSchema(V20CredProposalRequestSchemaBase): class V20CredOfferRequestSchema(V20IssueCredSchemaCore): """Request schema for sending credential offer admin message.""" - conn_id = fields.UUID( + connection_id = fields.UUID( description="Connection identifier", required=True, example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 @@ -331,7 +331,7 @@ async def credential_exchange_list(request: web.BaseRequest): tag_filter["thread_id"] = request.query["thread_id"] post_filter = { k: request.query[k] - for k in ("conn_id", "role", "state") + for k in ("connection_id", "role", "state") if request.query.get(k, "") != "" } @@ -472,7 +472,7 @@ async def credential_exchange_create(request: web.BaseRequest): cred_manager = V20CredManager(context.profile) (cred_ex_record, cred_offer_message) = await cred_manager.prepare_send( - conn_id=None, + connection_id=None, cred_proposal=cred_proposal, auto_remove=auto_remove, ) @@ -518,7 +518,7 @@ async def credential_exchange_send(request: web.BaseRequest): body = await request.json() comment = body.get("comment") - conn_id = body.get("conn_id") + connection_id = body.get("connection_id") preview_spec = body.get("credential_preview") if not preview_spec: raise web.HTTPBadRequest(reason="Missing credential_preview") @@ -533,9 +533,9 @@ async def credential_exchange_send(request: web.BaseRequest): try: cred_preview = V20CredPreview.deserialize(preview_spec) async with context.session() as session: - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") cred_proposal = V20CredProposal( comment=comment, @@ -555,7 +555,7 @@ async def credential_exchange_send(request: web.BaseRequest): cred_manager = V20CredManager(context.profile) (cred_ex_record, cred_offer_message) = await cred_manager.prepare_send( - conn_id, + connection_id, cred_proposal=cred_proposal, auto_remove=auto_remove, ) @@ -569,7 +569,10 @@ async def credential_exchange_send(request: web.BaseRequest): outbound_handler, ) - await outbound_handler(cred_offer_message, connection_id=cred_ex_record.conn_id) + await outbound_handler( + cred_offer_message, + connection_id=cred_ex_record.connection_id, + ) trace_event( context.settings, @@ -605,7 +608,7 @@ async def credential_exchange_send_proposal(request: web.BaseRequest): body = await request.json() - conn_id = body.get("conn_id") + connection_id = body.get("connection_id") comment = body.get("comment") preview_spec = body.get("credential_preview") filt_spec = body.get("filter") @@ -621,13 +624,13 @@ async def credential_exchange_send_proposal(request: web.BaseRequest): V20CredPreview.deserialize(preview_spec) if preview_spec else None ) async with context.session() as session: - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") cred_manager = V20CredManager(context.profile) cred_ex_record = await cred_manager.create_proposal( - conn_id=conn_id, + connection_id=connection_id, auto_remove=auto_remove, comment=comment, cred_preview=cred_preview, @@ -651,7 +654,7 @@ async def credential_exchange_send_proposal(request: web.BaseRequest): outbound_handler, ) - await outbound_handler(cred_proposal_message, connection_id=conn_id) + await outbound_handler(cred_proposal_message, connection_id=connection_id) trace_event( context.settings, @@ -666,7 +669,7 @@ async def credential_exchange_send_proposal(request: web.BaseRequest): async def _create_free_offer( profile: Profile, filt_spec: Mapping = None, - conn_id: str = None, + connection_id: str = None, auto_issue: bool = False, auto_remove: bool = False, preview_spec: dict = None, @@ -687,7 +690,7 @@ async def _create_free_offer( ) cred_ex_record = V20CredExRecord( - conn_id=conn_id, + connection_id=connection_id, initiator=V20CredExRecord.INITIATOR_SELF, role=V20CredExRecord.ROLE_ISSUER, cred_proposal=cred_proposal.serialize(), @@ -743,14 +746,14 @@ async def credential_exchange_create_free_offer(request: web.BaseRequest): filt_spec = body.get("filter") if not filt_spec: raise web.HTTPBadRequest(reason="Missing filter") - conn_id = body.get("conn_id") + connection_id = body.get("connection_id") trace_msg = body.get("trace") async with context.session() as session: wallet = session.inject(BaseWallet) - if conn_id: + if connection_id: try: - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) conn_did = await wallet.get_local_did(conn_record.my_did) except (WalletError, StorageError) as err: raise web.HTTPBadRequest(reason=err.roll_up) from err @@ -758,7 +761,7 @@ async def credential_exchange_create_free_offer(request: web.BaseRequest): conn_did = await wallet.get_public_did() if not conn_did: raise web.HTTPBadRequest(reason="Wallet has no public DID") - conn_id = None + connection_id = None did_info = await wallet.get_public_did() del wallet @@ -774,7 +777,7 @@ async def credential_exchange_create_free_offer(request: web.BaseRequest): (cred_ex_record, cred_offer_message) = await _create_free_offer( context.profile, filt_spec, - conn_id, + connection_id, auto_issue, auto_remove, preview_spec, @@ -831,7 +834,7 @@ async def credential_exchange_send_free_offer(request: web.BaseRequest): body = await request.json() - conn_id = body.get("conn_id") + connection_id = body.get("connection_id") filt_spec = body.get("filter") if not filt_spec: raise web.HTTPBadRequest(reason="Missing filter") @@ -849,14 +852,14 @@ async def credential_exchange_send_free_offer(request: web.BaseRequest): conn_record = None try: async with context.session() as session: - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") (cred_ex_record, cred_offer_message,) = await _create_free_offer( context.profile, filt_spec, - conn_id, + connection_id, auto_issue, auto_remove, preview_spec, @@ -878,7 +881,7 @@ async def credential_exchange_send_free_offer(request: web.BaseRequest): outbound_handler, ) - await outbound_handler(cred_offer_message, connection_id=conn_id) + await outbound_handler(cred_offer_message, connection_id=connection_id) trace_event( context.settings, @@ -928,7 +931,7 @@ async def credential_exchange_send_bound_offer(request: web.BaseRequest): except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err - conn_id = cred_ex_record.conn_id + connection_id = cred_ex_record.connection_id if cred_ex_record.state != ( V20CredExRecord.STATE_PROPOSAL_RECEIVED ): # check state here: manager call creates free offers too @@ -938,9 +941,9 @@ async def credential_exchange_send_bound_offer(request: web.BaseRequest): f"(must be {V20CredExRecord.STATE_PROPOSAL_RECEIVED})" ) - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") cred_manager = V20CredManager(context.profile) (cred_ex_record, cred_offer_message) = await cred_manager.create_offer( @@ -958,7 +961,7 @@ async def credential_exchange_send_bound_offer(request: web.BaseRequest): outbound_handler, ) - await outbound_handler(cred_offer_message, connection_id=conn_id) + await outbound_handler(cred_offer_message, connection_id=connection_id) trace_event( context.settings, @@ -1005,11 +1008,11 @@ async def credential_exchange_send_request(request: web.BaseRequest): ) except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err - conn_id = cred_ex_record.conn_id + connection_id = cred_ex_record.connection_id - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") cred_manager = V20CredManager(context.profile) (cred_ex_record, cred_request_message) = await cred_manager.create_request( @@ -1027,7 +1030,7 @@ async def credential_exchange_send_request(request: web.BaseRequest): outbound_handler, ) - await outbound_handler(cred_request_message, connection_id=conn_id) + await outbound_handler(cred_request_message, connection_id=connection_id) trace_event( context.settings, @@ -1078,11 +1081,11 @@ async def credential_exchange_issue(request: web.BaseRequest): ) except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err - conn_id = cred_ex_record.conn_id + connection_id = cred_ex_record.connection_id - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") cred_manager = V20CredManager(context.profile) (cred_ex_record, cred_issue_message) = await cred_manager.issue_credential( @@ -1109,7 +1112,7 @@ async def credential_exchange_issue(request: web.BaseRequest): outbound_handler, ) - await outbound_handler(cred_issue_message, connection_id=conn_id) + await outbound_handler(cred_issue_message, connection_id=connection_id) trace_event( context.settings, @@ -1163,10 +1166,10 @@ async def credential_exchange_store(request: web.BaseRequest): except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err - conn_id = cred_ex_record.conn_id - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + connection_id = cred_ex_record.connection_id + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") cred_manager = V20CredManager(context.profile) (cred_ex_record, cred_stored_message) = await cred_manager.store_credential( @@ -1193,7 +1196,7 @@ async def credential_exchange_store(request: web.BaseRequest): outbound_handler, ) - await outbound_handler(cred_stored_message, connection_id=conn_id) + await outbound_handler(cred_stored_message, connection_id=connection_id) trace_event( context.settings, @@ -1269,7 +1272,7 @@ async def credential_exchange_problem_report(request: web.BaseRequest): error_result = ProblemReport(explain_ltxt=body["explain_ltxt"]) error_result.assign_thread_id(cred_ex_record.thread_id) - await outbound_handler(error_result, connection_id=cred_ex_record.conn_id) + await outbound_handler(error_result, connection_id=cred_ex_record.connection_id) trace_event( context.settings, diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py index 3bfc9aa8bf..2d0b5f84f9 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py @@ -150,7 +150,7 @@ async def test_get_dif_detail_record(self): await self.manager.get_detail_record(cred_ex_id, V20CredFormat.Format.DIF) async def test_prepare_send(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" cred_preview = V20CredPreview( attributes=( V20CredAttrSpec(name="legalName", value="value"), @@ -172,18 +172,18 @@ async def test_prepare_send(self): ) as create_offer: create_offer.return_value = (async_mock.MagicMock(), async_mock.MagicMock()) ret_cred_ex_rec, ret_cred_offer = await self.manager.prepare_send( - conn_id, cred_proposal + connection_id, cred_proposal ) create_offer.assert_called_once() assert ret_cred_ex_rec is create_offer.return_value[0] arg_cred_ex_rec = create_offer.call_args[1]["cred_ex_record"] assert arg_cred_ex_rec.auto_issue - assert arg_cred_ex_rec.conn_id == conn_id + assert arg_cred_ex_rec.connection_id == connection_id assert arg_cred_ex_rec.role == V20CredExRecord.ROLE_ISSUER assert arg_cred_ex_rec.cred_proposal == cred_proposal.serialize() async def test_create_proposal(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" comment = "comment" cred_preview = V20CredPreview( attributes=( @@ -201,7 +201,7 @@ async def test_create_proposal(self): V20CredExRecord, "save", autospec=True ) as mock_save: cx_rec = await self.manager.create_proposal( - conn_id, + connection_id, comment=comment, cred_preview=cred_preview, fmt2filter={V20CredFormat.Format.INDY: None}, @@ -212,14 +212,14 @@ async def test_create_proposal(self): assert not cred_proposal.attachment( V20CredFormat.Format.INDY ).keys() # leave underspecified until offer receipt - assert cx_rec.conn_id == conn_id + assert cx_rec.connection_id == connection_id assert cx_rec.thread_id == cred_proposal._thread_id assert cx_rec.role == V20CredExRecord.ROLE_HOLDER assert cx_rec.state == V20CredExRecord.STATE_PROPOSAL_SENT assert cx_rec.cred_preview == cred_preview.serialize() async def test_create_proposal_no_preview(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" comment = "comment" self.ledger.credential_definition_id2schema_id = async_mock.CoroutineMock( @@ -230,7 +230,7 @@ async def test_create_proposal_no_preview(self): V20CredExRecord, "save", autospec=True ) as mock_save: cx_rec = await self.manager.create_proposal( - conn_id, + connection_id, comment=comment, cred_preview=None, fmt2filter={V20CredFormat.Format.INDY: {"cred_def_id": CRED_DEF_ID}}, @@ -241,13 +241,13 @@ async def test_create_proposal_no_preview(self): assert cred_proposal.attachment(V20CredFormat.Format.INDY) == { "cred_def_id": CRED_DEF_ID } - assert cx_rec.conn_id == conn_id + assert cx_rec.connection_id == connection_id assert cx_rec.thread_id == cred_proposal._thread_id assert cx_rec.role == V20CredExRecord.ROLE_HOLDER assert cx_rec.state == V20CredExRecord.STATE_PROPOSAL_SENT async def test_receive_proposal(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" cred_preview = V20CredPreview( attributes=( @@ -270,7 +270,7 @@ async def test_receive_proposal(self): ], ) - cx_rec = await self.manager.receive_proposal(cred_proposal, conn_id) + cx_rec = await self.manager.receive_proposal(cred_proposal, connection_id) mock_save.assert_called_once() ret_cred_proposal = V20CredProposal.deserialize(cx_rec.cred_proposal) @@ -282,7 +282,7 @@ async def test_receive_proposal(self): ret_cred_proposal.credential_preview.attributes == cred_preview.attributes ) - assert cx_rec.conn_id == conn_id + assert cx_rec.connection_id == connection_id assert cx_rec.role == V20CredExRecord.ROLE_ISSUER assert cx_rec.state == V20CredExRecord.STATE_PROPOSAL_RECEIVED assert cx_rec.thread_id == cred_proposal._thread_id @@ -564,7 +564,7 @@ async def test_create_bound_offer_no_matching_sent_cred_def(self): assert "Issuer has no operable cred def" in str(context.exception) async def test_receive_offer_proposed(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" indy_offer = { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -594,7 +594,7 @@ async def test_receive_offer_proposed(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_proposal=cred_proposal.serialize(), initiator=V20CredExRecord.INITIATOR_EXTERNAL, role=V20CredExRecord.ROLE_HOLDER, @@ -608,9 +608,9 @@ async def test_receive_offer_proposed(self): "retrieve_by_conn_and_thread", async_mock.CoroutineMock(return_value=stored_cx_rec), ) as mock_retrieve: - cx_rec = await self.manager.receive_offer(cred_offer, conn_id) + cx_rec = await self.manager.receive_offer(cred_offer, connection_id) - assert cx_rec.conn_id == conn_id + assert cx_rec.connection_id == connection_id assert cx_rec.thread_id == cred_offer._thread_id assert cx_rec.role == V20CredExRecord.ROLE_HOLDER assert cx_rec.state == V20CredExRecord.STATE_OFFER_RECEIVED @@ -628,7 +628,7 @@ async def test_receive_offer_proposed(self): ) async def test_receive_free_offer(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" indy_offer = { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -653,7 +653,7 @@ async def test_receive_free_offer(self): self.context.message = cred_offer self.context.conn_record = async_mock.MagicMock() - self.context.conn_record.conn_id = conn_id + self.context.conn_record.connection_id = connection_id with async_mock.patch.object( V20CredExRecord, "save", autospec=True @@ -661,9 +661,9 @@ async def test_receive_free_offer(self): V20CredExRecord, "retrieve_by_conn_and_thread", async_mock.CoroutineMock() ) as mock_retrieve: mock_retrieve.side_effect = (StorageNotFoundError(),) - cx_rec = await self.manager.receive_offer(cred_offer, conn_id) + cx_rec = await self.manager.receive_offer(cred_offer, connection_id) - assert cx_rec.conn_id == conn_id + assert cx_rec.connection_id == connection_id assert cx_rec.thread_id == cred_offer._thread_id assert cx_rec.role == V20CredExRecord.ROLE_HOLDER assert cx_rec.state == V20CredExRecord.STATE_OFFER_RECEIVED @@ -681,7 +681,7 @@ async def test_receive_free_offer(self): ) async def test_create_request(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" nonce = "0" indy_offer = { "schema_id": SCHEMA_ID, @@ -705,7 +705,7 @@ async def test_create_request(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_offer=cred_offer.serialize(), initiator=V20CredExRecord.INITIATOR_SELF, role=V20CredExRecord.ROLE_HOLDER, @@ -757,7 +757,7 @@ async def test_create_request(self): assert "called multiple times" in str(context.exception) async def test_create_request_no_cache(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" nonce = "0" indy_offer = { "schema_id": SCHEMA_ID, @@ -781,7 +781,7 @@ async def test_create_request_no_cache(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_offer=cred_offer.serialize(), initiator=V20CredExRecord.INITIATOR_SELF, role=V20CredExRecord.ROLE_HOLDER, @@ -818,7 +818,7 @@ async def test_create_request_no_cache(self): assert ret_cx_rec.state == V20CredExRecord.STATE_REQUEST_SENT async def test_create_request_bad_state(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" indy_offer = { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -836,7 +836,7 @@ async def test_create_request_bad_state(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_offer=cred_offer.serialize(), initiator=V20CredExRecord.INITIATOR_SELF, role=V20CredExRecord.ROLE_HOLDER, @@ -849,7 +849,7 @@ async def test_create_request_bad_state(self): assert " state " in str(context.exception) async def test_create_request_no_offer_nonce(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" indy_offer = {"schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, "...": "..."} thread_id = "thread-id" holder_did = "did" @@ -862,7 +862,7 @@ async def test_create_request_no_offer_nonce(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_offer=cred_offer.serialize(), initiator=V20CredExRecord.INITIATOR_SELF, role=V20CredExRecord.ROLE_HOLDER, @@ -874,7 +874,7 @@ async def test_create_request_no_offer_nonce(self): await self.manager.create_request(stored_cx_rec, holder_did) async def test_receive_request(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" indy_cred_req = { "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, @@ -883,7 +883,7 @@ async def test_receive_request(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, initiator=V20CredExRecord.INITIATOR_EXTERNAL, role=V20CredExRecord.ROLE_ISSUER, ) @@ -899,10 +899,10 @@ async def test_receive_request(self): V20CredExRecord, "retrieve_by_conn_and_thread", async_mock.CoroutineMock() ) as mock_retrieve: mock_retrieve.return_value = stored_cx_rec - cx_rec = await self.manager.receive_request(cred_request, conn_id) + cx_rec = await self.manager.receive_request(cred_request, connection_id) mock_retrieve.assert_called_once_with( - self.session, conn_id, cred_request._thread_id + self.session, connection_id, cred_request._thread_id ) mock_save.assert_called_once() @@ -913,7 +913,7 @@ async def test_receive_request(self): ) async def test_issue_credential(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" comment = "comment" attr_values = { "legalName": "value", @@ -963,7 +963,7 @@ async def test_issue_credential(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_proposal=cred_proposal.serialize(), cred_offer=cred_offer.serialize(), cred_request=cred_request.serialize(), @@ -1037,7 +1037,7 @@ async def test_issue_credential(self): async def test_issue_credential_non_revocable(self): CRED_DEF_NR = deepcopy(CRED_DEF) CRED_DEF_NR["value"]["revocation"] = None - conn_id = "test_conn_id" + connection_id = "test_conn_id" comment = "comment" attr_values = { "legalName": "value", @@ -1087,7 +1087,7 @@ async def test_issue_credential_non_revocable(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_proposal=cred_proposal.serialize(), cred_offer=cred_offer.serialize(), cred_request=cred_request.serialize(), @@ -1142,7 +1142,7 @@ async def test_issue_credential_non_revocable(self): assert ret_cred_issue._thread_id == thread_id async def test_issue_credential_fills_rr(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" comment = "comment" attr_values = { "legalName": "value", @@ -1189,7 +1189,7 @@ async def test_issue_credential_fills_rr(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_proposal=cred_proposal.serialize(), cred_offer=cred_offer.serialize(), cred_request=cred_request.serialize(), @@ -1262,7 +1262,7 @@ async def test_issue_credential_fills_rr(self): assert ret_cred_issue._thread_id == thread_id async def test_issue_credential_request_bad_state(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" attr_values = { "legalName": "value", "jurisdictionId": "value", @@ -1291,7 +1291,7 @@ async def test_issue_credential_request_bad_state(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_proposal=cred_proposal.serialize(), initiator=V20CredExRecord.INITIATOR_SELF, role=V20CredExRecord.ROLE_ISSUER, @@ -1304,7 +1304,7 @@ async def test_issue_credential_request_bad_state(self): assert " state " in str(context.exception) async def test_issue_credential_no_active_rr_no_retries(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" comment = "comment" attr_values = { "legalName": "value", @@ -1354,7 +1354,7 @@ async def test_issue_credential_no_active_rr_no_retries(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_proposal=cred_proposal.serialize(), cred_offer=cred_offer.serialize(), cred_request=cred_request.serialize(), @@ -1397,7 +1397,7 @@ async def test_issue_credential_no_active_rr_no_retries(self): assert "has no active revocation registry" in str(context.exception) async def test_issue_credential_no_active_rr_retry(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" comment = "comment" attr_values = { "legalName": "value", @@ -1447,7 +1447,7 @@ async def test_issue_credential_no_active_rr_retry(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_proposal=cred_proposal.serialize(), cred_offer=cred_offer.serialize(), cred_request=cred_request.serialize(), @@ -1494,7 +1494,7 @@ async def test_issue_credential_no_active_rr_retry(self): assert "has no active revocation registry" in str(context.exception) async def test_issue_credential_rr_full(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" comment = "comment" attr_values = { "legalName": "value", @@ -1544,7 +1544,7 @@ async def test_issue_credential_rr_full(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_proposal=cred_proposal.serialize(), cred_offer=cred_offer.serialize(), cred_request=cred_request.serialize(), @@ -1586,12 +1586,12 @@ async def test_issue_credential_rr_full(self): ) async def test_receive_cred(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" indy_cred = {"indy": "credential"} stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, initiator=V20CredExRecord.INITIATOR_EXTERNAL, role=V20CredExRecord.ROLE_ISSUER, ) @@ -1609,10 +1609,13 @@ async def test_receive_cred(self): async_mock.CoroutineMock(), ) as mock_retrieve: mock_retrieve.return_value = stored_cx_rec - ret_cx_rec = await self.manager.receive_credential(cred_issue, conn_id) + ret_cx_rec = await self.manager.receive_credential( + cred_issue, + connection_id, + ) mock_retrieve.assert_called_once_with( - self.session, conn_id, cred_issue._thread_id + self.session, connection_id, cred_issue._thread_id ) mock_save.assert_called_once() @@ -1623,7 +1626,7 @@ async def test_receive_cred(self): assert ret_cx_rec.state == V20CredExRecord.STATE_CREDENTIAL_RECEIVED async def test_store_credential(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" attr_values = { "legalName": ["value", None], "jurisdictionId": ["value", None], @@ -1680,7 +1683,7 @@ async def test_store_credential(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_proposal=cred_proposal.serialize(), cred_offer=cred_offer.serialize(), cred_request=cred_request.serialize(), @@ -1776,7 +1779,7 @@ async def test_store_credential_bad_state(self): assert " state " in str(context.exception) async def test_store_credential_holder_store_indy_error(self): - conn_id = "test_conn_id" + connection_id = "test_conn_id" indy_cred = {"cred_def_id": CRED_DEF_ID, "...": "..."} cred_req_meta = {"req": "meta"} thread_id = "thread-id" @@ -1833,7 +1836,7 @@ async def test_store_credential_holder_store_indy_error(self): stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, cred_proposal=cred_proposal.serialize(), cred_offer=cred_offer.serialize(), cred_request=cred_request.serialize(), @@ -1871,10 +1874,10 @@ async def test_store_credential_holder_store_indy_error(self): assert "Nope" in str(context.exception) async def test_credential_ack(self): - conn_id = "conn-id" + connection_id = "conn-id" stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", - conn_id=conn_id, + connection_id=connection_id, initiator=V20CredExRecord.INITIATOR_SELF, role=V20CredExRecord.ROLE_ISSUER, ) @@ -1893,10 +1896,14 @@ async def test_credential_ack(self): mock_retrieve.return_value = stored_cx_rec ret_cx_rec = await self.manager.receive_credential_ack( ack, - conn_id, + connection_id, ) - mock_retrieve.assert_called_once_with(self.session, conn_id, ack._thread_id) + mock_retrieve.assert_called_once_with( + self.session, + connection_id, + ack._thread_id, + ) mock_save.assert_called_once() assert ret_cx_rec.state == V20CredExRecord.STATE_DONE @@ -1938,7 +1945,7 @@ async def test_retrieve_records(self): for index in range(2): cx_rec = V20CredExRecord( - conn_id=str(index), + connection_id=str(index), thread_id=str(1000 + index), initiator=V20CredExRecord.INITIATOR_SELF, role=V20CredExRecord.ROLE_ISSUER, @@ -1951,5 +1958,5 @@ async def test_retrieve_records(self): ret_ex = await V20CredExRecord.retrieve_by_conn_and_thread( self.session, str(index), str(1000 + index) ) - assert ret_ex.conn_id == str(index) + assert ret_ex.connection_id == str(index) assert ret_ex.thread_id == str(1000 + index) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py index f5559269ab..063ad48163 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py @@ -98,7 +98,7 @@ async def test_credential_exchange_list_x(self): with async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.query = async_mock.CoroutineMock( side_effect=test_module.StorageError() @@ -114,7 +114,7 @@ async def test_credential_exchange_retrieve(self): ) as mock_cx_rec, async_mock.patch.object( test_module, "V20CredManager", autospec=True ) as mock_cred_mgr: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.return_value = mock_cx_rec @@ -148,7 +148,7 @@ async def test_credential_exchange_retrieve_not_found(self): with async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock( side_effect=test_module.StorageNotFoundError() @@ -164,7 +164,7 @@ async def test_credential_exchange_retrieve_x(self): ) as mock_cx_rec, async_mock.patch.object( test_module, "V20CredManager", autospec=True ) as mock_cred_mgr: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.return_value = mock_cx_rec @@ -237,10 +237,10 @@ async def test_credential_exchange_create_x(self): await test_module.credential_exchange_create(self.request) async def test_credential_exchange_create_no_preview(self): - conn_id = "connection-id" + connection_id = "connection-id" self.request.json = async_mock.CoroutineMock( - return_value={"connection_id": conn_id} + return_value={"connection_id": connection_id} ) with self.assertRaises(test_module.web.HTTPBadRequest) as context: @@ -248,11 +248,11 @@ async def test_credential_exchange_create_no_preview(self): assert "credential_preview" in str(context.exception) async def test_credential_exchange_create_no_filter(self): - conn_id = "connection-id" + connection_id = "connection-id" self.request.json = async_mock.CoroutineMock( return_value={ - "connection_id": conn_id, + "connection_id": connection_id, "credential_preview": { "attributes": [{"name": "hello", "value": "world"}] }, @@ -295,10 +295,10 @@ async def test_credential_exchange_send(self): mock_response.assert_called_once_with(mock_cx_rec.serialize.return_value) async def test_credential_exchange_send_no_proposal(self): - conn_id = "connection-id" + connection_id = "connection-id" self.request.json = async_mock.CoroutineMock( - return_value={"connection_id": conn_id} + return_value={"connection_id": connection_id} ) with self.assertRaises(test_module.web.HTTPBadRequest) as context: @@ -306,11 +306,14 @@ async def test_credential_exchange_send_no_proposal(self): assert "credential_preview" in str(context.exception) async def test_credential_exchange_send_no_conn_record(self): - conn_id = "connection-id" + connection_id = "connection-id" preview_spec = {"attributes": [{"name": "attr", "value": "value"}]} self.request.json = async_mock.CoroutineMock( - return_value={"connection_id": conn_id, "credential_preview": preview_spec} + return_value={ + "connection_id": connection_id, + "credential_preview": preview_spec + } ) with async_mock.patch.object( @@ -333,12 +336,12 @@ async def test_credential_exchange_send_no_conn_record(self): await test_module.credential_exchange_send(self.request) async def test_credential_exchange_send_not_ready(self): - conn_id = "connection-id" + connection_id = "connection-id" preview_spec = {"attributes": [{"name": "attr", "value": "value"}]} self.request.json = async_mock.CoroutineMock( return_value={ - "connection_id": conn_id, + "connection_id": connection_id, "credential_preview": preview_spec, "filter": {"indy": {"schema_version": "1.0"}}, } @@ -384,12 +387,12 @@ async def test_credential_exchange_send_x(self): await test_module.credential_exchange_send(self.request) async def test_credential_exchange_send_proposal(self): - conn_id = "connection-id" + connection_id = "connection-id" preview_spec = {"attributes": [{"name": "attr", "value": "value"}]} self.request.json = async_mock.CoroutineMock( return_value={ - "connection_id": conn_id, + "connection_id": connection_id, "credential_preview": preview_spec, "filter": {"indy": {"schema_version": "1.0"}}, } @@ -412,15 +415,15 @@ async def test_credential_exchange_send_proposal(self): mock_response.assert_called_once_with(mock_cx_rec.serialize.return_value) self.request["outbound_message_router"].assert_awaited_once_with( - mock_cred_proposal_deser.return_value, connection_id=conn_id + mock_cred_proposal_deser.return_value, connection_id=connection_id ) async def test_credential_exchange_send_proposal_no_filter(self): - conn_id = "connection-id" + connection_id = "connection-id" self.request.json = async_mock.CoroutineMock( return_value={ "comment": "comment", - "connection_id": conn_id, + "connection_id": connection_id, } ) @@ -451,12 +454,12 @@ async def test_credential_exchange_send_proposal_no_conn_record(self): await test_module.credential_exchange_send_proposal(self.request) async def test_credential_exchange_send_proposal_deser_x(self): - conn_id = "connection-id" + connection_id = "connection-id" preview_spec = {"attributes": [{"name": "attr", "value": "value"}]} self.request.json = async_mock.CoroutineMock( return_value={ - "connection_id": conn_id, + "connection_id": connection_id, "credential_preview": preview_spec, "filter": {"indy": {"schema_version": "1.0"}}, } @@ -878,7 +881,7 @@ async def test_credential_exchange_send_bound_offer_bad_cred_ex_id(self): with async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.side_effect = test_module.StorageNotFoundError() @@ -897,7 +900,7 @@ async def test_credential_exchange_send_bound_offer_no_conn_record(self): ) as mock_cred_mgr, async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.return_value.state = ( @@ -925,7 +928,7 @@ async def test_credential_exchange_send_bound_offer_bad_state(self): with async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.return_value.state = ( @@ -946,7 +949,7 @@ async def test_credential_exchange_send_bound_offer_not_ready(self): ) as mock_cred_mgr, async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.return_value.state = ( @@ -1003,7 +1006,7 @@ async def test_credential_exchange_send_request_bad_cred_ex_id(self): with async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.side_effect = test_module.StorageNotFoundError() @@ -1022,7 +1025,7 @@ async def test_credential_exchange_send_request_no_conn_record(self): ) as mock_cred_mgr, async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.return_value.state = ( @@ -1054,7 +1057,7 @@ async def test_credential_exchange_send_request_not_ready(self): ) as mock_cred_mgr, async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.return_value.state = ( @@ -1124,7 +1127,7 @@ async def test_credential_exchange_issue_bad_cred_ex_id(self): with async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.side_effect = test_module.StorageNotFoundError() @@ -1226,7 +1229,7 @@ async def test_credential_exchange_issue_deser_x(self): self.request.match_info = {"cred_ex_id": "dummy"} mock_cx_rec = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", serialize=async_mock.MagicMock(side_effect=test_module.BaseModelError()), ) with async_mock.patch.object( @@ -1355,7 +1358,7 @@ async def test_credential_exchange_store_bad_cred_ex_id(self): with async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.side_effect = test_module.StorageNotFoundError() @@ -1374,7 +1377,7 @@ async def test_credential_exchange_store_no_conn_record(self): ) as mock_cred_mgr, async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.return_value.state = ( @@ -1405,7 +1408,7 @@ async def test_credential_exchange_store_not_ready(self): ) as mock_cred_mgr, async_mock.patch.object( test_module, "V20CredExRecord", autospec=True ) as mock_cx_rec: - mock_cx_rec.conn_id = "conn-123" + mock_cx_rec.connection_id = "conn-123" mock_cx_rec.thread_id = "conn-123" mock_cx_rec.retrieve_by_id = async_mock.CoroutineMock() mock_cx_rec.retrieve_by_id.return_value.state = ( @@ -1490,7 +1493,7 @@ async def test_credential_exchange_problem_report(self): mock_response.assert_called_once_with({}) self.request["outbound_message_router"].assert_awaited_once_with( mock_prob_report.return_value, - connection_id=mock_cx_rec.retrieve_by_id.return_value.conn_id, + connection_id=mock_cx_rec.retrieve_by_id.return_value.connection_id, ) async def test_credential_exchange_problem_report_bad_cred_id(self): diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py index e49b60f6c6..959b90489d 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py @@ -687,7 +687,7 @@ async def _process_pres_request_v2( "serviceEndpoint": oob_invi_service.get("serviceEndpoint"), } pres_ex_record = V20PresExRecord( - conn_id=conn_rec.connection_id, + connection_id=conn_rec.connection_id, thread_id=pres_request_msg["@id"], initiator=V20PresExRecord.INITIATOR_EXTERNAL, role=V20PresExRecord.ROLE_PROVER, diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py index 06c0da7d25..70d624f6f0 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py @@ -825,9 +825,9 @@ async def test_receive_invitation_connection(self): use_existing_connection=True, auto_accept=True, ) - conn_id = UUID(result.get("connection_id"), version=4) + connection_id = UUID(result.get("connection_id"), version=4) assert ( - conn_id.hex == result.get("connection_id").replace("-", "") + connection_id.hex == result.get("connection_id").replace("-", "") and len(result.get("connection_id")) > 5 ) @@ -930,9 +930,9 @@ async def test_receive_invitation_req_pres_v1_0_attachment_x(self): with self.assertRaises(OutOfBandManagerError) as context: result = await self.manager.receive_invitation(mock_oob_invi) - conn_id = UUID(result.get("connection_id"), version=4) + connection_id = UUID(result.get("connection_id"), version=4) assert ( - conn_id.hex == result.get("connection_id") + connection_id.hex == result.get("connection_id") and len(result.get("connection_id")) > 5 ) assert "request~attach is not properly formatted" in str(context.exception) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py index f55ce01686..db8088266e 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py @@ -53,12 +53,12 @@ async def handle(self, context: RequestContext, responder: BaseResponder): pres_ex_record = await V20PresExRecord.retrieve_by_tag_filter( session, {"thread_id": context.message._thread_id}, - {"conn_id": context.connection_record.connection_id}, + {"connection_id": context.connection_record.connection_id}, ) # holder initiated via proposal pres_ex_record.pres_request = context.message.serialize() except StorageNotFoundError: # verifier sent this request free of any proposal pres_ex_record = V20PresExRecord( - conn_id=context.connection_record.connection_id, + connection_id=context.connection_record.connection_id, thread_id=context.message._thread_id, initiator=V20PresExRecord.INITIATOR_EXTERNAL, role=V20PresExRecord.ROLE_PROVER, diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index 441654a7a5..66dc3b9aa9 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -49,7 +49,7 @@ def __init__(self, profile: Profile): async def create_exchange_for_proposal( self, - conn_id: str, + connection_id: str, pres_proposal_message: V20PresProposal, auto_present: bool = None, ): @@ -57,7 +57,7 @@ async def create_exchange_for_proposal( Create a presentation exchange record for input presentation proposal. Args: - conn_id: connection identifier + connection_id: connection identifier pres_proposal_message: presentation proposal to serialize to exchange record auto_present: whether to present proof upon receiving proof request @@ -68,7 +68,7 @@ async def create_exchange_for_proposal( """ pres_ex_record = V20PresExRecord( - conn_id=conn_id, + connection_id=connection_id, thread_id=pres_proposal_message._thread_id, initiator=V20PresExRecord.INITIATOR_SELF, role=V20PresExRecord.ROLE_PROVER, @@ -95,7 +95,7 @@ async def receive_pres_proposal( """ pres_ex_record = V20PresExRecord( - conn_id=conn_record.connection_id, + connection_id=conn_record.connection_id, thread_id=message._thread_id, initiator=V20PresExRecord.INITIATOR_EXTERNAL, role=V20PresExRecord.ROLE_VERIFIER, @@ -176,13 +176,13 @@ async def create_bound_request( return pres_ex_record, pres_request_message async def create_exchange_for_request( - self, conn_id: str, pres_request_message: V20PresRequest + self, connection_id: str, pres_request_message: V20PresRequest ): """ Create a presentation exchange record for input presentation request. Args: - conn_id: connection identifier + connection_id: connection identifier pres_request_message: presentation request to use in creating exchange record, extracting indy proof request and thread id @@ -191,7 +191,7 @@ async def create_exchange_for_request( """ pres_ex_record = V20PresExRecord( - conn_id=conn_id, + connection_id=connection_id, thread_id=pres_request_message._thread_id, initiator=V20PresExRecord.INITIATOR_SELF, role=V20PresExRecord.ROLE_VERIFIER, @@ -469,7 +469,9 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): thread_id = message._thread_id conn_id_filter = ( - None if conn_record is None else {"conn_id": conn_record.connection_id} + None + if conn_record is None + else {"connection_id": conn_record.connection_id} ) async with self._profile.session() as session: try: @@ -621,7 +623,7 @@ async def send_pres_ack(self, pres_ex_record: V20PresExRecord): await responder.send_reply( pres_ack_message, - connection_id=pres_ex_record.conn_id, + connection_id=pres_ex_record.connection_id, ) else: LOGGER.warning( @@ -641,7 +643,7 @@ async def receive_pres_ack(self, message: V20PresAck, conn_record: ConnRecord): pres_ex_record = await V20PresExRecord.retrieve_by_tag_filter( session, {"thread_id": message._thread_id}, - {"conn_id": conn_record.connection_id}, + {"connection_id": conn_record.connection_id}, ) pres_ex_record.state = V20PresExRecord.STATE_DONE diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py index 2d552b6be5..97b2b63c9f 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py @@ -49,12 +49,12 @@ def test_init_type_attachment(self): comment="Hello World", formats=[ V20PresFormat( - attach_id="abc", + attach_id="indy", format_=V20PresFormat.Format.INDY.aries, ) ], proposal_attach=[ - AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="abc") + AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="indy") ], ) assert pres_proposal._type == DIDCommPrefix.qualify_current(PRES_20_PROPOSAL) @@ -69,12 +69,12 @@ def test_serde(self): comment="Hello World", formats=[ V20PresFormat( - attach_id="abc", + attach_id="indy", format_=V20PresFormat.Format.INDY.aries, ) ], proposal_attach=[ - AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="abc") + AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="indy") ], ) pres_proposal_ser = pres_proposal.serialize() @@ -84,7 +84,7 @@ def test_serde(self): pres_proposal_dict = pres_proposal_deser.serialize() assert pres_proposal_dict == pres_proposal_ser - pres_proposal_dict["formats"][0]["attach_id"] = "def" + pres_proposal_dict["formats"][0]["attach_id"] = "xxx" with pytest.raises(BaseModelError): V20PresProposal.deserialize(pres_proposal_dict) # id mismatch diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py index 0ae04b41b7..a433c6c6a4 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py @@ -8,6 +8,11 @@ from .....messaging.models.base_record import BaseExchangeRecord, BaseExchangeSchema from .....messaging.valid import UUIDFour +from ..messages.pres import V20Pres +from ..messages.pres_format import V20PresFormat +from ..messages.pres_proposal import V20PresProposal +from ..messages.pres_request import V20PresRequest + unencrypted_tags = environ.get("EXCH_UNENCRYPTED_TAGS", "False").upper() == "TRUE" @@ -43,7 +48,7 @@ def __init__( self, *, pres_ex_id: str = None, - conn_id: str = None, + connection_id: str = None, thread_id: str = None, initiator: str = None, role: str = None, @@ -55,11 +60,12 @@ def __init__( auto_present: bool = False, error_msg: str = None, trace: bool = False, + by_format: Mapping = None, # formalism for base_record.from_storage() **kwargs ): """Initialize a new PresExRecord.""" super().__init__(pres_ex_id, state, trace=trace, **kwargs) - self.conn_id = conn_id + self.connection_id = connection_id self.thread_id = thread_id self.initiator = initiator self.role = role @@ -83,7 +89,7 @@ def record_value(self) -> dict: return { prop: getattr(self, prop) for prop in ( - "conn_id", + "connection_id", "initiator", "role", "state", @@ -97,6 +103,31 @@ def record_value(self) -> dict: ) } + @property + def by_format(self): + """Record proposal, request, and presentation data structures by format.""" + result = {} + for item, cls in { + "pres_proposal": V20PresProposal, + "pres_request": V20PresRequest, + "pres": V20Pres + }.items(): + mapping = getattr(self, item) + if mapping: + msg = cls.deserialize(mapping) + result.update( + { + item: { + V20PresFormat.Format.get(f.format).api: msg.attachment( + V20PresFormat.Format.get(f.format) + ) + for f in msg.formats + } + } + ) + + return result + def __eq__(self, other: Any) -> bool: """Comparison between records.""" return super().__eq__(other) @@ -115,7 +146,7 @@ class Meta: description="Presentation exchange identifier", example=UUIDFour.EXAMPLE, # typically a UUID4 but not necessarily ) - conn_id = fields.Str( + connection_id = fields.Str( required=False, description="Connection identifier", example=UUIDFour.EXAMPLE, # typically a UUID4 but not necessarily @@ -170,6 +201,13 @@ class Meta: required=False, description="Serialized presentation message", ) + by_format = fields.Dict( + required=False, + description=( + "Attachment content by format for proposal, request, and presentation" + ), + dump_only=True, + ) verified = fields.Str( # tag: must be a string required=False, description="Whether presentation is verified: 'true' or 'false'", diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py b/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py index 9d1fd84e74..3b7fadf427 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/models/tests/test_record.py @@ -22,7 +22,7 @@ def test_record(self): record = V20PresExRecord( pres_ex_id="pxid", thread_id="thid", - conn_id="connid", + connection_id="conn_id", initiator="init", role="role", state="state", @@ -37,7 +37,7 @@ def test_record(self): assert record.pres_ex_id == "pxid" assert record.record_value == { - "conn_id": "connid", + "connection_id": "conn_id", "initiator": "init", "role": "role", "state": "state", diff --git a/aries_cloudagent/protocols/present_proof/v2_0/routes.py b/aries_cloudagent/protocols/present_proof/v2_0/routes.py index 41cd430780..79655dfa36 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/routes.py @@ -56,7 +56,7 @@ class V20PresentProofModuleResponseSchema(OpenAPISchema): class V20PresExRecordListQueryStringSchema(OpenAPISchema): """Parameters and validators for presentation exchange list query.""" - conn_id = fields.UUID( + connection_id = fields.UUID( description="Connection identifier", required=False, example=UUIDFour.EXAMPLE, # typically but not necessarily a UUID4 @@ -161,7 +161,7 @@ def validate_fields(self, data, **kwargs): class V20PresProposalRequestSchema(AdminAPIMessageTracingSchema): """Request schema for sending a presentation proposal admin message.""" - conn_id = fields.UUID( + connection_id = fields.UUID( description="Connection identifier", required=True, example=UUIDFour.EXAMPLE ) comment = fields.Str( @@ -233,7 +233,7 @@ class V20PresCreateRequestRequestSchema(AdminAPIMessageTracingSchema): class V20PresSendRequestRequestSchema(V20PresCreateRequestRequestSchema): """Request schema for sending a proof request on a connection.""" - conn_id = fields.UUID( + connection_id = fields.UUID( description="Connection identifier", required=True, example=UUIDFour.EXAMPLE ) @@ -357,7 +357,7 @@ async def present_proof_list(request: web.BaseRequest): tag_filter["thread_id"] = request.query["thread_id"] post_filter = { k: request.query[k] - for k in ("conn_id", "role", "state") + for k in ("connection_id", "role", "state") if request.query.get(k, "") != "" } @@ -504,13 +504,13 @@ async def present_proof_send_proposal(request: web.BaseRequest): body = await request.json() comment = body.get("comment") - conn_id = body.get("conn_id") + connection_id = body.get("connection_id") pres_preview = body.get("presentation_preview") conn_record = None async with context.session() as session: try: - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) pres_proposal_message = V20PresProposal( comment=comment, **_formats_attach(pres_preview, "proposal"), @@ -521,7 +521,7 @@ async def present_proof_send_proposal(request: web.BaseRequest): ) if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") trace_msg = body.get("trace") pres_proposal_message.assign_trace_decorator( @@ -536,7 +536,7 @@ async def present_proof_send_proposal(request: web.BaseRequest): pres_ex_record = None try: pres_ex_record = await pres_manager.create_exchange_for_proposal( - conn_id=conn_id, + connection_id=connection_id, pres_proposal_message=pres_proposal_message, auto_present=auto_present, ) @@ -549,7 +549,7 @@ async def present_proof_send_proposal(request: web.BaseRequest): outbound_handler, ) - await outbound_handler(pres_proposal_message, connection_id=conn_id) + await outbound_handler(pres_proposal_message, connection_id=connection_id) trace_event( context.settings, @@ -607,7 +607,7 @@ async def present_proof_create_request(request: web.BaseRequest): pres_ex_record = None try: pres_ex_record = await pres_manager.create_exchange_for_request( - conn_id=None, + connection_id=None, pres_request_message=pres_request_message, ) result = pres_ex_record.serialize() @@ -652,15 +652,15 @@ async def present_proof_send_free_request(request: web.BaseRequest): body = await request.json() - conn_id = body.get("conn_id") + connection_id = body.get("connection_id") async with context.session() as session: try: - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) except StorageNotFoundError as err: raise web.HTTPBadRequest(reason=err.roll_up) from err if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") comment = body.get("comment") pres_request_spec = body.get("presentation_request") @@ -680,7 +680,7 @@ async def present_proof_send_free_request(request: web.BaseRequest): pres_ex_record = None try: (pres_ex_record) = await pres_manager.create_exchange_for_request( - conn_id=conn_id, + connection_id=connection_id, pres_request_message=pres_request_message, ) result = pres_ex_record.serialize() @@ -692,7 +692,7 @@ async def present_proof_send_free_request(request: web.BaseRequest): outbound_handler, ) - await outbound_handler(pres_request_message, connection_id=conn_id) + await outbound_handler(pres_request_message, connection_id=connection_id) trace_event( context.settings, @@ -747,15 +747,15 @@ async def present_proof_send_bound_request(request: web.BaseRequest): f"(must be {V20PresExRecord.STATE_PROPOSAL_RECEIVED})" ) ) - conn_id = pres_ex_record.conn_id + connection_id = pres_ex_record.connection_id try: - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) except StorageError as err: raise web.HTTPBadRequest(reason=err.roll_up) from err if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") pres_manager = V20PresManager(context.profile) try: @@ -777,7 +777,7 @@ async def present_proof_send_bound_request(request: web.BaseRequest): context.settings, trace_msg, ) - await outbound_handler(pres_request_message, connection_id=conn_id) + await outbound_handler(pres_request_message, connection_id=connection_id) trace_event( context.settings, @@ -830,14 +830,14 @@ async def present_proof_send_presentation(request: web.BaseRequest): ) ) - conn_id = pres_ex_record.conn_id + connection_id = pres_ex_record.connection_id try: - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) except StorageNotFoundError as err: raise web.HTTPBadRequest(reason=err.roll_up) from err if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") pres_manager = V20PresManager(context.profile) try: @@ -871,7 +871,7 @@ async def present_proof_send_presentation(request: web.BaseRequest): context.settings, trace_msg, ) - await outbound_handler(pres_message, connection_id=conn_id) + await outbound_handler(pres_message, connection_id=connection_id) trace_event( context.settings, @@ -922,15 +922,15 @@ async def present_proof_verify_presentation(request: web.BaseRequest): ) ) - conn_id = pres_ex_record.conn_id + connection_id = pres_ex_record.connection_id try: - conn_record = await ConnRecord.retrieve_by_id(session, conn_id) + conn_record = await ConnRecord.retrieve_by_id(session, connection_id) except StorageError as err: raise web.HTTPBadRequest(reason=err.roll_up) from err if not conn_record.is_ready: - raise web.HTTPForbidden(reason=f"Connection {conn_id} not ready") + raise web.HTTPForbidden(reason=f"Connection {connection_id} not ready") pres_manager = V20PresManager(context.profile) try: @@ -983,7 +983,7 @@ async def present_proof_problem_report(request: web.BaseRequest): error_result = ProblemReport(explain_ltxt=body["explain_ltxt"]) error_result.assign_thread_id(pres_ex_record.thread_id) - await outbound_handler(error_result, connection_id=pres_ex_record.conn_id) + await outbound_handler(error_result, connection_id=pres_ex_record.connection_id) trace_event( context.settings, diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py index 04bc200881..9450ee9074 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py @@ -835,6 +835,12 @@ async def test_receive_pres(self): pres_proposal=pres_proposal.serialize(), pres_request=pres_request.serialize(), ) + + # cover by_format property + by_format = px_rec_dummy.by_format + assert by_format.get("pres_proposal").get("indy") == PRES_PREVIEW.serialize() + assert by_format.get("pres_request").get("indy") == indy_proof_req + with async_mock.patch.object( V20PresExRecord, "save", autospec=True ) as save_ex, async_mock.patch.object( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py index 1a666f23fb..bf4d96a144 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py @@ -161,7 +161,7 @@ async def test_validate_proof_req_attr_spec(self): async def test_present_proof_list(self): self.request.query = { "thread_id": "thread_id_0", - "conn_id": "conn_id_0", + "connection_id": "conn_id_0", "role": "dummy", "state": "dummy", } @@ -188,7 +188,7 @@ async def test_present_proof_list(self): async def test_present_proof_list_x(self): self.request.query = { "thread_id": "thread_id_0", - "conn_id": "conn_id_0", + "connection_id": "conn_id_0", "role": "dummy", "state": "dummy", } @@ -337,7 +337,7 @@ async def test_present_proof_retrieve_ser_x(self): self.request.match_info = {"pres_ex_id": "dummy"} mock_pres_ex_rec_inst = async_mock.MagicMock( - conn_id="abc123", + connection_id="abc123", thread_id="thid123", serialize=async_mock.MagicMock(side_effect=test_module.BaseModelError()), ) @@ -354,7 +354,7 @@ async def test_present_proof_retrieve_ser_x(self): async def test_present_proof_send_proposal(self): self.request.json = async_mock.CoroutineMock( return_value={ - "conn_id": "dummy-conn-id", + "connection_id": "dummy-conn-id", "presentation_preview": { V20PresFormat.Format.INDY.api: INDY_PRES_PREVIEW.serialize() }, @@ -504,7 +504,7 @@ async def test_present_proof_send_free_request(self): ) self.request.json = async_mock.CoroutineMock( return_value={ - "conn_id": "dummy", + "connection_id": "dummy", "comment": "dummy", "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, } @@ -539,7 +539,9 @@ async def test_present_proof_send_free_request(self): ) async def test_present_proof_send_free_request_not_found(self): - self.request.json = async_mock.CoroutineMock(return_value={"conn_id": "dummy"}) + self.request.json = async_mock.CoroutineMock( + return_value={"connection_id": "dummy"} + ) with async_mock.patch.object( test_module, "ConnRecord", async_mock.MagicMock() @@ -553,7 +555,7 @@ async def test_present_proof_send_free_request_not_found(self): async def test_present_proof_send_free_request_not_ready(self): self.request.json = async_mock.CoroutineMock( - return_value={"conn_id": "dummy", "proof_request": {}} + return_value={"connection_id": "dummy", "proof_request": {}} ) with async_mock.patch.object( @@ -575,7 +577,7 @@ async def test_present_proof_send_free_request_x(self): ) self.request.json = async_mock.CoroutineMock( return_value={ - "conn_id": "dummy", + "connection_id": "dummy", "comment": "dummy", "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, } @@ -637,7 +639,7 @@ async def test_present_proof_send_bound_request(self): test_module.web, "json_response", async_mock.MagicMock() ) as mock_response: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -690,7 +692,7 @@ async def test_present_proof_send_bound_request_not_found(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -730,7 +732,7 @@ async def test_present_proof_send_bound_request_not_ready(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -785,7 +787,7 @@ async def test_present_proof_send_bound_request_bad_state(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_DONE, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -824,7 +826,7 @@ async def test_present_proof_send_bound_request_x(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_PROPOSAL_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -881,7 +883,7 @@ async def test_present_proof_send_presentation(self): test_module.web, "json_response" ) as mock_response: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -961,7 +963,7 @@ async def test_present_proof_send_presentation_not_found(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1006,7 +1008,7 @@ async def test_present_proof_send_presentation_not_ready(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1043,7 +1045,7 @@ async def test_present_proof_send_presentation_bad_state(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_DONE, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1087,7 +1089,7 @@ async def test_present_proof_send_presentation_x(self): test_module.web, "json_response" ) as mock_response: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_REQUEST_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1125,7 +1127,7 @@ async def test_present_proof_verify_presentation(self): test_module.web, "json_response", async_mock.MagicMock() ) as mock_response: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1170,7 +1172,7 @@ async def test_present_proof_verify_presentation_not_found(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1197,7 +1199,7 @@ async def test_present_proof_verify_presentation_not_ready(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1221,7 +1223,7 @@ async def test_present_proof_verify_presentation_bad_state(self): test_module, "V20PresExRecord", autospec=True ) as mock_px_rec_cls: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_DONE, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1247,7 +1249,7 @@ async def test_present_proof_verify_presentation_x(self): test_module.web, "json_response", async_mock.MagicMock() ) as mock_response: mock_px_rec_inst = async_mock.MagicMock( - conn_id="dummy", + connection_id="dummy", state=test_module.V20PresExRecord.STATE_PRESENTATION_RECEIVED, serialize=async_mock.MagicMock( return_value={"thread_id": "sample-thread-id"} @@ -1283,7 +1285,7 @@ async def test_present_proof_problem_report(self): test_module.web, "json_response" ) as mock_response: mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( - return_value=async_mock.MagicMock(conn_id="dummy-conn-id") + return_value=async_mock.MagicMock(connection_id="dummy-conn-id") ) await test_module.present_proof_problem_report(self.request) @@ -1291,7 +1293,7 @@ async def test_present_proof_problem_report(self): mock_response.assert_called_once_with({}) self.request["outbound_message_router"].assert_awaited_once_with( mock_prob_report_cls.return_value, - conn_id="dummy-conn-id", + connection_id="dummy-conn-id", ) async def test_present_proof_problem_report_bad_pres_ex_id(self): @@ -1319,7 +1321,7 @@ async def test_present_proof_remove(self): mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( return_value=async_mock.MagicMock( state=test_module.V20PresExRecord.STATE_DONE, - conn_id="dummy", + connection_id="dummy", delete_record=async_mock.CoroutineMock(), ) ) @@ -1349,7 +1351,7 @@ async def test_present_proof_remove_x(self): mock_px_rec_cls.retrieve_by_id = async_mock.CoroutineMock( return_value=async_mock.MagicMock( state=test_module.V20PresExRecord.STATE_DONE, - conn_id="dummy", + connection_id="dummy", delete_record=async_mock.CoroutineMock( side_effect=test_module.StorageError() ), diff --git a/demo/AcmeDemoWorkshop.md b/demo/AcmeDemoWorkshop.md index 672bb3e95d..e4cf74cad9 100644 --- a/demo/AcmeDemoWorkshop.md +++ b/demo/AcmeDemoWorkshop.md @@ -117,7 +117,7 @@ Replace the ```# TODO``` comment with the following code: Now we need to handle receipt of the proof. Locate the code that handles received proofs (this is in a webhook callback): ``` - if state == "presentation_received": + if state == "presentation-received": # TODO handle received presentations pass ``` diff --git a/demo/runners/acme.py b/demo/runners/acme.py index 5b193eaa29..d435700294 100644 --- a/demo/runners/acme.py +++ b/demo/runners/acme.py @@ -72,15 +72,24 @@ async def handle_issue_credential_v2_0(self, message): # TODO issue credentials based on offer preview in cred ex record pass + ''' async def handle_present_proof(self, message): state = message["state"] - pres_ex_id = message["presentation_exchange_id"] self.log(f"Presentation: state = {state}, pres_ex_id = {pres_ex_id}") if state == "presentation_received": # TODO handle received presentations pass + ''' + async def handle_present_proof_v2_0(self, message): + state = message["state"] + pres_ex_id = message["pres_ex_id"] + self.log(f"Presentation: state = {state}, pres_ex_id = {pres_ex_id}") + + if state == "presentation-received": + # TODO handle received presentations + pass async def handle_basicmessages(self, message): self.log("Received message:", message["content"]) diff --git a/demo/runners/alice.py b/demo/runners/alice.py index 38a59d2d3d..c4837b739f 100644 --- a/demo/runners/alice.py +++ b/demo/runners/alice.py @@ -114,6 +114,7 @@ async def handle_issue_credential_v2_0_indy(self, message): if cred_req_metadata: log_json(cred_req_metadata, label="Credential request metadata:") + ''' async def handle_present_proof(self, message): state = message["state"] presentation_exchange_id = message["presentation_exchange_id"] @@ -188,6 +189,72 @@ async def handle_present_proof(self, message): ) except ClientError: pass + ''' + + async def handle_present_proof_v2_0(self, message): + state = message["state"] + pres_ex_id = message["pres_ex_id"] + log_msg("Presentation: state =", state, ", pres_ex_id =", pres_ex_id) + + if state == "request-received": + log_status( + "#24 Query for credentials in the wallet that satisfy the proof request" + ) + pres_request = message["by_format"].get("pres_request", {}).get("indy") + + # include self-attested attributes (not included in credentials) + creds_by_reft = {} + revealed = {} + self_attested = {} + predicates = {} + + try: + # select credentials to provide for the proof + creds = await self.admin_GET( + f"/present-proof-2.0/records/{pres_ex_id}/credentials" + ) + if creds: + for row in sorted( + creds, + key=lambda c: int(c["cred_info"]["attrs"]["timestamp"]), + reverse=True, + ): + for referent in row["presentation_referents"]: + if referent not in creds_by_reft: + creds_by_reft[referent] = row + + for referent in pres_request["requested_attributes"]: + if referent in creds_by_reft: + revealed[referent] = { + "cred_id": creds_by_reft[referent]["cred_info"]["referent"], + "revealed": True, + } + else: + self_attested[referent] = "my self-attested value" + + for referent in pres_request["requested_predicates"]: + if referent in creds_by_reft: + predicates[referent] = { + "cred_id": creds_by_reft[referent]["cred_info"]["referent"] + } + + log_status("#25 Generate the proof") + request = { + "requested_predicates": predicates, + "requested_attributes": revealed, + "self_attested_attributes": self_attested, + } + + log_status("#26 Send the proof to X") + await self.admin_POST( + ( + "/present-proof-2.0/records/" + f"{pres_ex_id}/send-presentation" + ), + request, + ) + except ClientError: + pass async def handle_basicmessages(self, message): self.log("Received message:", message["content"]) diff --git a/demo/runners/faber.py b/demo/runners/faber.py index b35c2b5b98..6a8c166ea9 100644 --- a/demo/runners/faber.py +++ b/demo/runners/faber.py @@ -118,6 +118,7 @@ async def handle_issue_credential_v2_0_indy(self, message): async def handle_issuer_cred_rev(self, message): pass + ''' async def handle_present_proof(self, message): state = message["state"] @@ -131,6 +132,20 @@ async def handle_present_proof(self, message): f"/present-proof/records/{pres_ex_id}/verify-presentation" ) self.log("Proof =", proof["verified"]) + ''' + + async def handle_present_proof_v2_0(self, message): + state = message["state"] + pres_ex_id = message["pres_ex_id"] + self.log(f"Presentation: state = {state}, pres_ex_id = {pres_ex_id}") + + if state == "presentation-received": + log_status("#27 Process the proof provided by X") + log_status("#28 Check if proof is valid") + proof = await self.admin_POST( + f"/present-proof-2.0/records/{pres_ex_id}/verify-presentation" + ) + self.log("Proof =", proof["verified"]) async def handle_basicmessages(self, message): self.log("Received message:", message["content"]) @@ -393,11 +408,11 @@ async def main( indy_proof_request["non_revoked"] = {"to": int(time.time())} proof_request_web_request = { "connection_id": agent.connection_id, - "proof_request": indy_proof_request, + "presentation_request": {"indy": indy_proof_request}, "trace": exchange_tracing, } await agent.admin_POST( - "/present-proof/send-request", proof_request_web_request + "/present-proof-2.0/send-request", proof_request_web_request ) elif option == "3": From 02e933fe5edcb870b3de93be2bd4ace829215774 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 4 Mar 2021 14:25:49 +0000 Subject: [PATCH 098/243] black tweaks Signed-off-by: sklump --- .../protocols/issue_credential/v2_0/tests/test_routes.py | 2 +- .../protocols/present_proof/v2_0/models/pres_exchange.py | 2 +- demo/runners/acme.py | 5 +++-- demo/runners/alice.py | 9 +++------ demo/runners/faber.py | 4 ++-- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py index 063ad48163..b400745043 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_routes.py @@ -312,7 +312,7 @@ async def test_credential_exchange_send_no_conn_record(self): self.request.json = async_mock.CoroutineMock( return_value={ "connection_id": connection_id, - "credential_preview": preview_spec + "credential_preview": preview_spec, } ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py index a433c6c6a4..06f2bd54e7 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py @@ -110,7 +110,7 @@ def by_format(self): for item, cls in { "pres_proposal": V20PresProposal, "pres_request": V20PresRequest, - "pres": V20Pres + "pres": V20Pres, }.items(): mapping = getattr(self, item) if mapping: diff --git a/demo/runners/acme.py b/demo/runners/acme.py index d435700294..95f2486d66 100644 --- a/demo/runners/acme.py +++ b/demo/runners/acme.py @@ -72,7 +72,7 @@ async def handle_issue_credential_v2_0(self, message): # TODO issue credentials based on offer preview in cred ex record pass - ''' + """ async def handle_present_proof(self, message): state = message["state"] pres_ex_id = message["presentation_exchange_id"] @@ -81,7 +81,8 @@ async def handle_present_proof(self, message): if state == "presentation_received": # TODO handle received presentations pass - ''' + """ + async def handle_present_proof_v2_0(self, message): state = message["state"] pres_ex_id = message["pres_ex_id"] diff --git a/demo/runners/alice.py b/demo/runners/alice.py index c4837b739f..9e1cc2b701 100644 --- a/demo/runners/alice.py +++ b/demo/runners/alice.py @@ -114,7 +114,7 @@ async def handle_issue_credential_v2_0_indy(self, message): if cred_req_metadata: log_json(cred_req_metadata, label="Credential request metadata:") - ''' + """ async def handle_present_proof(self, message): state = message["state"] presentation_exchange_id = message["presentation_exchange_id"] @@ -189,7 +189,7 @@ async def handle_present_proof(self, message): ) except ClientError: pass - ''' + """ async def handle_present_proof_v2_0(self, message): state = message["state"] @@ -247,10 +247,7 @@ async def handle_present_proof_v2_0(self, message): log_status("#26 Send the proof to X") await self.admin_POST( - ( - "/present-proof-2.0/records/" - f"{pres_ex_id}/send-presentation" - ), + ("/present-proof-2.0/records/" f"{pres_ex_id}/send-presentation"), request, ) except ClientError: diff --git a/demo/runners/faber.py b/demo/runners/faber.py index 6a8c166ea9..0aaab7f9aa 100644 --- a/demo/runners/faber.py +++ b/demo/runners/faber.py @@ -118,7 +118,7 @@ async def handle_issue_credential_v2_0_indy(self, message): async def handle_issuer_cred_rev(self, message): pass - ''' + """ async def handle_present_proof(self, message): state = message["state"] @@ -132,7 +132,7 @@ async def handle_present_proof(self, message): f"/present-proof/records/{pres_ex_id}/verify-presentation" ) self.log("Proof =", proof["verified"]) - ''' + """ async def handle_present_proof_v2_0(self, message): state = message["state"] From a034a457b65407afb48c2bfdf6f6ca82b8a2cdfa Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 4 Mar 2021 16:44:02 +0000 Subject: [PATCH 099/243] demo integration Signed-off-by: sklump --- .../protocols/present_proof/v2_0/routes.py | 13 +-- demo/AcmeDemoWorkshop.md | 10 +-- demo/runners/acme.py | 12 +-- demo/runners/alice.py | 87 ++----------------- demo/runners/faber.py | 16 ---- 5 files changed, 21 insertions(+), 117 deletions(-) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/routes.py b/aries_cloudagent/protocols/present_proof/v2_0/routes.py index 79655dfa36..27a36d914f 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/routes.py @@ -455,8 +455,10 @@ async def present_proof_credentials_list(request: web.BaseRequest): holder = context.profile.inject(IndyHolder) try: - pres_request = pres_ex_record.pres_request.attachment(V20PresFormat.Format.INDY) - # TODO allow for choice of format from those specified in pres req + # TODO: allow for choice of format from those specified in pres req + pres_request = pres_ex_record.by_format["pres_request"].get( + V20PresFormat.Format.INDY.api + ) credentials = await holder.get_credentials_for_presentation_request_by_referent( pres_request, pres_referents, @@ -841,12 +843,13 @@ async def present_proof_send_presentation(request: web.BaseRequest): pres_manager = V20PresManager(context.profile) try: + indy_spec = body.get(V20PresFormat.Format.INDY.api) # TODO: accommodate DIF pres_ex_record, pres_message = await pres_manager.create_pres( pres_ex_record, { - "self_attested_attributes": body.get("self_attested_attributes"), - "requested_attributes": body.get("requested_attributes"), - "requested_predicates": body.get("requested_predicates"), + "self_attested_attributes": indy_spec["self_attested_attributes"], + "requested_attributes": indy_spec["requested_attributes"], + "requested_predicates": indy_spec["requested_predicates"], }, comment=body.get("comment"), format_=fmt, diff --git a/demo/AcmeDemoWorkshop.md b/demo/AcmeDemoWorkshop.md index e4cf74cad9..dadcb2a585 100644 --- a/demo/AcmeDemoWorkshop.md +++ b/demo/AcmeDemoWorkshop.md @@ -104,12 +104,12 @@ Replace the ```# TODO``` comment with the following code: } proof_request_web_request = { "connection_id": agent.connection_id, - "proof_request": indy_proof_request + "presentation_request": {"indy": indy_proof_request}, } # this sends the request to our agent, which forwards it to Alice # (based on the connection_id) await agent.admin_POST( - "/present-proof/send-request", + "/present-proof-2.0/send-request", proof_request_web_request ) ``` @@ -128,14 +128,14 @@ then replace the ```# TODO``` comment and the ```pass``` statement: log_status("#27 Process the proof provided by X") log_status("#28 Check if proof is valid") proof = await self.admin_POST( - f"/present-proof/records/{pres_ex_id}/verify-presentation" + f"/present-proof-2.0/records/{pres_ex_id}/verify-presentation" ) self.log("Proof = ", proof["verified"]) # if presentation is a degree schema (proof of education), # check values received - pres_req = message["presentation_request"] - pres = message["presentation"] + pres_req = message["by_format"]["pres_request"]["indy"] + pres = message["by_format"]["pres"]["indy"] is_proof_of_education = ( pres_req["name"] == "Proof of Education" ) diff --git a/demo/runners/acme.py b/demo/runners/acme.py index 95f2486d66..e94682821f 100644 --- a/demo/runners/acme.py +++ b/demo/runners/acme.py @@ -72,16 +72,8 @@ async def handle_issue_credential_v2_0(self, message): # TODO issue credentials based on offer preview in cred ex record pass - """ - async def handle_present_proof(self, message): - state = message["state"] - pres_ex_id = message["presentation_exchange_id"] - self.log(f"Presentation: state = {state}, pres_ex_id = {pres_ex_id}") - - if state == "presentation_received": - # TODO handle received presentations - pass - """ + async def handle_issue_credential_v2_0_indy(self, message): + pass # employee id schema does not support revocation async def handle_present_proof_v2_0(self, message): state = message["state"] diff --git a/demo/runners/alice.py b/demo/runners/alice.py index 9e1cc2b701..99dc2a22a7 100644 --- a/demo/runners/alice.py +++ b/demo/runners/alice.py @@ -114,83 +114,6 @@ async def handle_issue_credential_v2_0_indy(self, message): if cred_req_metadata: log_json(cred_req_metadata, label="Credential request metadata:") - """ - async def handle_present_proof(self, message): - state = message["state"] - presentation_exchange_id = message["presentation_exchange_id"] - presentation_request = message["presentation_request"] - - log_msg( - "Presentation: state =", - state, - ", presentation_exchange_id =", - presentation_exchange_id, - ) - - if state == "request_received": - log_status( - "#24 Query for credentials in the wallet that satisfy the proof request" - ) - - # include self-attested attributes (not included in credentials) - credentials_by_reft = {} - revealed = {} - self_attested = {} - predicates = {} - - try: - # select credentials to provide for the proof - credentials = await self.admin_GET( - f"/present-proof/records/{presentation_exchange_id}/credentials" - ) - if credentials: - for row in sorted( - credentials, - key=lambda c: int(c["cred_info"]["attrs"]["timestamp"]), - reverse=True, - ): - for referent in row["presentation_referents"]: - if referent not in credentials_by_reft: - credentials_by_reft[referent] = row - - for referent in presentation_request["requested_attributes"]: - if referent in credentials_by_reft: - revealed[referent] = { - "cred_id": credentials_by_reft[referent]["cred_info"][ - "referent" - ], - "revealed": True, - } - else: - self_attested[referent] = "my self-attested value" - - for referent in presentation_request["requested_predicates"]: - if referent in credentials_by_reft: - predicates[referent] = { - "cred_id": credentials_by_reft[referent]["cred_info"][ - "referent" - ] - } - - log_status("#25 Generate the proof") - request = { - "requested_predicates": predicates, - "requested_attributes": revealed, - "self_attested_attributes": self_attested, - } - - log_status("#26 Send the proof to X") - await self.admin_POST( - ( - "/present-proof/records/" - f"{presentation_exchange_id}/send-presentation" - ), - request, - ) - except ClientError: - pass - """ - async def handle_present_proof_v2_0(self, message): state = message["state"] pres_ex_id = message["pres_ex_id"] @@ -240,14 +163,16 @@ async def handle_present_proof_v2_0(self, message): log_status("#25 Generate the proof") request = { - "requested_predicates": predicates, - "requested_attributes": revealed, - "self_attested_attributes": self_attested, + "indy": { + "requested_predicates": predicates, + "requested_attributes": revealed, + "self_attested_attributes": self_attested, + } } log_status("#26 Send the proof to X") await self.admin_POST( - ("/present-proof-2.0/records/" f"{pres_ex_id}/send-presentation"), + f"/present-proof-2.0/records/{pres_ex_id}/send-presentation", request, ) except ClientError: diff --git a/demo/runners/faber.py b/demo/runners/faber.py index 0aaab7f9aa..1d5f6abcd9 100644 --- a/demo/runners/faber.py +++ b/demo/runners/faber.py @@ -118,22 +118,6 @@ async def handle_issue_credential_v2_0_indy(self, message): async def handle_issuer_cred_rev(self, message): pass - """ - async def handle_present_proof(self, message): - state = message["state"] - - pres_ex_id = message["presentation_exchange_id"] - self.log(f"Presentation: state = {state}, pres_ex_id = {pres_ex_id}") - - if state == "presentation_received": - log_status("#27 Process the proof provided by X") - log_status("#28 Check if proof is valid") - proof = await self.admin_POST( - f"/present-proof/records/{pres_ex_id}/verify-presentation" - ) - self.log("Proof =", proof["verified"]) - """ - async def handle_present_proof_v2_0(self, message): state = message["state"] pres_ex_id = message["pres_ex_id"] From b3290248eab4a51efa6e52fef32a35da9580ac70 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 4 Mar 2021 17:46:43 +0000 Subject: [PATCH 100/243] will_confirm: aca-py always will Signed-off-by: sklump --- .../protocols/present_proof/v2_0/manager.py | 28 +++++++++---------- .../present_proof/v2_0/tests/test_manager.py | 1 + 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index 66dc3b9aa9..b866269cf6 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -134,9 +134,7 @@ async def create_bound_request( """ pres_preview = IndyPresPreview.deserialize( - V20PresProposal.deserialize(pres_ex_record.pres_proposal).attachment( - V20PresFormat.Format.INDY - ) + pres_ex_record.by_format["pres_proposal"][V20PresFormat.Format.INDY.api] ) indy_proof_request = await pres_preview.indy_proof_request( @@ -147,6 +145,7 @@ async def create_bound_request( ) pres_request_message = V20PresRequest( comment=comment, + will_confirm=True, formats=[ V20PresFormat( attach_id="indy", @@ -279,7 +278,7 @@ async def create_pres( requested_referents = {} pres_request = V20PresRequest.deserialize( pres_ex_record.pres_request - ).attachment(format_) + ).attachment(format_) # take format_ = None seamlessly, contrast by_format non_revoc_intervals = indy_proof_req2non_revoc_intervals(pres_request) attr_creds = requested_credentials.get("requested_attributes", {}) req_attrs = pres_request.get("requested_attributes", {}) @@ -487,13 +486,11 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): # Check for bait-and-switch in presented attribute values vs. proposal if pres_ex_record.pres_proposal: pres_preview = IndyPresPreview.deserialize( - V20PresProposal.deserialize(pres_ex_record.pres_proposal).attachment( - V20PresFormat.Format.INDY - ) + pres_ex_record.by_format["pres_proposal"][V20PresFormat.Format.INDY.api] ) - proof_req = V20PresRequest.deserialize( - pres_ex_record.pres_request - ).attachment(V20PresFormat.Format.INDY) + proof_req = pres_ex_record.by_format["pres_request"][ + V20PresFormat.Format.INDY.api + ] for (reft, attr_spec) in pres["requested_proof"]["revealed_attrs"].items(): name = proof_req["requested_attributes"][reft]["name"] @@ -529,10 +526,9 @@ async def verify_pres(self, pres_ex_record: V20PresExRecord): presentation exchange record, updated """ - indy_proof_request = V20PresRequest.deserialize( - pres_ex_record.pres_request - ).attachment(V20PresFormat.Format.INDY) - indy_proof = V20Pres.deserialize(pres_ex_record.pres).attachment() + pres_request_msg = V20PresRequest.deserialize(pres_ex_record.pres_request) + indy_proof_request = pres_request_msg.attachment(V20PresFormat.Format.INDY) + indy_proof = pres_ex_record.by_format["pres"][V20PresFormat.Format.INDY.api] schema_ids = [] cred_def_ids = [] @@ -601,7 +597,9 @@ async def verify_pres(self, pres_ex_record: V20PresExRecord): async with self._profile.session() as session: await pres_ex_record.save(session, reason="verify v2.0 presentation") - await self.send_pres_ack(pres_ex_record) + if pres_request_msg.will_confirm: + await self.send_pres_ack(pres_ex_record) + return pres_ex_record async def send_pres_ack(self, pres_ex_record: V20PresExRecord): diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py index 9450ee9074..94a5bea9c9 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py @@ -1008,6 +1008,7 @@ async def test_verify_pres(self): format_=V20PresFormat.Format.INDY.aries, ) ], + will_confirm=True, request_presentations_attach=[ AttachDecorator.data_base64(indy_proof_req, ident="indy") ], From e8547edd292e79f2df0f1fd369b8be2e73286647 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 4 Mar 2021 18:11:18 +0000 Subject: [PATCH 101/243] black tweaks Signed-off-by: sklump --- aries_cloudagent/protocols/present_proof/v2_0/manager.py | 4 +++- aries_cloudagent/protocols/present_proof/v2_0/routes.py | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index b866269cf6..f9f7614313 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -278,7 +278,9 @@ async def create_pres( requested_referents = {} pres_request = V20PresRequest.deserialize( pres_ex_record.pres_request - ).attachment(format_) # take format_ = None seamlessly, contrast by_format + ).attachment( + format_ + ) # take format_ = None seamlessly, contrast by_format non_revoc_intervals = indy_proof_req2non_revoc_intervals(pres_request) attr_creds = requested_credentials.get("requested_attributes", {}) req_attrs = pres_request.get("requested_attributes", {}) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/routes.py b/aries_cloudagent/protocols/present_proof/v2_0/routes.py index 27a36d914f..3cc4334e5d 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/routes.py @@ -597,6 +597,7 @@ async def present_proof_create_request(request: web.BaseRequest): pres_request_message = V20PresRequest( comment=comment, + will_confirm=True, **_formats_attach(pres_request_spec, "request_presentations"), ) trace_msg = body.get("trace") @@ -670,6 +671,7 @@ async def present_proof_send_free_request(request: web.BaseRequest): await _add_nonce(pres_request_spec[V20PresFormat.Format.INDY.api]) pres_request_message = V20PresRequest( comment=comment, + will_confirm=True, **_formats_attach(pres_request_spec, "request_presentations"), ) trace_msg = body.get("trace") From 05ea56cfe7d42391dc23fe7d46f312e55d495fde Mon Sep 17 00:00:00 2001 From: DucaDellaForcoletta Date: Thu, 4 Mar 2021 17:54:11 +0100 Subject: [PATCH 102/243] Added ledger keepalive startup parameter ref #1006 Signed-off-by: DucaDellaForcoletta --- aries_cloudagent/config/argparse.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/aries_cloudagent/config/argparse.py b/aries_cloudagent/config/argparse.py index caa3590e84..6cbb8dda7f 100644 --- a/aries_cloudagent/config/argparse.py +++ b/aries_cloudagent/config/argparse.py @@ -559,6 +559,13 @@ def add_arguments(self, parser: ArgumentParser): This must be set if running in no-ledger mode. Overrides any\ specified ledger or genesis configurations. Default: false.", ) + parser.add_argument( + "--ledger-keepalive", + default=5, + type=ByteSize(min_size=5), + env_var="ACAPY_LEDGER_KEEP_ALIVE", + help="Specifies how many seconds to keep the ledger open. Default: 5", + ) def get_settings(self, args: Namespace) -> dict: """Extract ledger settings.""" @@ -580,6 +587,10 @@ def get_settings(self, args: Namespace) -> dict: ) if args.ledger_pool_name: settings["ledger.pool_name"] = args.ledger_pool_name + + if args.ledger_keepalive: + settings["ledger.keepalive"] = args.ledger_keepalive + return settings From f9460c2f68c9a8fb45c0c8b5e23ffa7271acce7a Mon Sep 17 00:00:00 2001 From: DucaDellaForcoletta Date: Fri, 5 Mar 2021 23:53:41 +0100 Subject: [PATCH 103/243] Changed type from ByteSize to int Signed-off-by: DucaDellaForcoletta --- aries_cloudagent/config/argparse.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aries_cloudagent/config/argparse.py b/aries_cloudagent/config/argparse.py index 6cbb8dda7f..e5a1db4c5a 100644 --- a/aries_cloudagent/config/argparse.py +++ b/aries_cloudagent/config/argparse.py @@ -562,7 +562,7 @@ def add_arguments(self, parser: ArgumentParser): parser.add_argument( "--ledger-keepalive", default=5, - type=ByteSize(min_size=5), + type=int, env_var="ACAPY_LEDGER_KEEP_ALIVE", help="Specifies how many seconds to keep the ledger open. Default: 5", ) @@ -588,7 +588,7 @@ def get_settings(self, args: Namespace) -> dict: if args.ledger_pool_name: settings["ledger.pool_name"] = args.ledger_pool_name - if args.ledger_keepalive: + if args.ledger_keepalive and args.ledger_keepalive > 5: settings["ledger.keepalive"] = args.ledger_keepalive return settings From 922926c115f8edfaaad340ed3d526270859a2c0c Mon Sep 17 00:00:00 2001 From: DucaDellaForcoletta Date: Sat, 6 Mar 2021 00:49:28 +0100 Subject: [PATCH 104/243] Added test case for ledger keep alive Signed-off-by: DucaDellaForcoletta --- aries_cloudagent/config/tests/test_ledger.py | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/aries_cloudagent/config/tests/test_ledger.py b/aries_cloudagent/config/tests/test_ledger.py index c6ebdee98f..dac9872140 100644 --- a/aries_cloudagent/config/tests/test_ledger.py +++ b/aries_cloudagent/config/tests/test_ledger.py @@ -7,6 +7,7 @@ from ...ledger.base import BaseLedger from ...ledger.error import LedgerError from ...wallet.base import BaseWallet +from .. import argparse from .. import ledger as test_module from ..injection_context import InjectionContext @@ -297,3 +298,31 @@ async def test_ledger_accept_taa(self, mock_stdout): ) mock_prompt.return_value = "" assert await test_module.accept_taa(mock_ledger, taa_info, provision=False) + + async def test_ledger_config(self): + """Test required argument parsing.""" + + parser = argparse.create_argument_parser() + group = argparse.LedgerGroup() + group.add_arguments(parser) + + with async_mock.patch.object(parser, "exit") as exit_parser: + parser.parse_args(["-h"]) + exit_parser.assert_called_once() + + result = parser.parse_args( + [ + "--genesis-url", + "http://1.2.3.4:9000/genesis", + "--ledger-keepalive", + "10", + ] + ) + + assert result.ledger_keepalive == 10 + assert result.genesis_url == "http://1.2.3.4:9000/genesis" + + settings = group.get_settings(result) + + assert settings["ledger.keepalive"] == result.ledger_keepalive + assert settings["ledger.genesis_url"] == result.genesis_url From cad5f703ecac31ce4bb4e9b300fe6c78bd39b903 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Sun, 7 Mar 2021 10:39:27 -0800 Subject: [PATCH 105/243] add BoundedInt argument helper Signed-off-by: Andrew Whitehead --- aries_cloudagent/config/argparse.py | 11 ++--- .../config/tests/test_argparse.py | 33 +++++++++++-- aries_cloudagent/config/util.py | 47 +++++++++++++++---- 3 files changed, 73 insertions(+), 18 deletions(-) diff --git a/aries_cloudagent/config/argparse.py b/aries_cloudagent/config/argparse.py index e5a1db4c5a..ace8c81d6f 100644 --- a/aries_cloudagent/config/argparse.py +++ b/aries_cloudagent/config/argparse.py @@ -7,7 +7,7 @@ from typing import Type from .error import ArgsParseError -from .util import ByteSize +from .util import BoundedInt, ByteSize from ..utils.tracing import trace_event CAT_PROVISION = "general" @@ -562,7 +562,7 @@ def add_arguments(self, parser: ArgumentParser): parser.add_argument( "--ledger-keepalive", default=5, - type=int, + type=BoundedInt(min=5), env_var="ACAPY_LEDGER_KEEP_ALIVE", help="Specifies how many seconds to keep the ledger open. Default: 5", ) @@ -587,8 +587,7 @@ def get_settings(self, args: Namespace) -> dict: ) if args.ledger_pool_name: settings["ledger.pool_name"] = args.ledger_pool_name - - if args.ledger_keepalive and args.ledger_keepalive > 5: + if args.ledger_keepalive: settings["ledger.keepalive"] = args.ledger_keepalive return settings @@ -887,7 +886,7 @@ def add_arguments(self, parser: ArgumentParser): parser.add_argument( "--max-message-size", default=2097152, - type=ByteSize(min_size=1024), + type=ByteSize(min=1024), metavar="", env_var="ACAPY_MAX_MESSAGE_SIZE", help="Set the maximum size in bytes for inbound agent messages.", @@ -903,7 +902,7 @@ def add_arguments(self, parser: ArgumentParser): parser.add_argument( "--max-outbound-retry", default=4, - type=ByteSize(min_size=1), + type=BoundedInt(min=1), env_var="ACAPY_MAX_OUTBOUND_RETRY", help="Set the maximum retry number for undelivered outbound\ messages. Increasing this number might cause to increase the\ diff --git a/aries_cloudagent/config/tests/test_argparse.py b/aries_cloudagent/config/tests/test_argparse.py index b712970c8b..3518ce2638 100644 --- a/aries_cloudagent/config/tests/test_argparse.py +++ b/aries_cloudagent/config/tests/test_argparse.py @@ -3,7 +3,7 @@ from asynctest import TestCase as AsyncTestCase, mock as async_mock from .. import argparse -from ..util import ByteSize +from ..util import BoundedInt, ByteSize class TestArgParse(AsyncTestCase): @@ -119,17 +119,42 @@ def test_bytesize(self): assert bs("1G") == 1073741824 assert bs("1t") == 1099511627776 - bs = ByteSize(min_size=10) + bs = ByteSize(min=10) with self.assertRaises(ArgumentTypeError): bs("5") assert bs("12") == 12 - bs = ByteSize(max_size=10) + bs = ByteSize(max=10) with self.assertRaises(ArgumentTypeError): bs("15") assert bs("10") == 10 - assert repr(bs) == "ByteSize" + assert repr(bs) == "bytes" + + def test_bounded_int(self): + bounded = BoundedInt() + with self.assertRaises(ArgumentTypeError): + bounded(None) + with self.assertRaises(ArgumentTypeError): + bounded("") + with self.assertRaises(ArgumentTypeError): + bounded("a") + with self.assertRaises(ArgumentTypeError): + bounded("1.5") + assert bounded("101") == 101 + assert bounded("-99") == -99 + + bounded = BoundedInt(min=10) + with self.assertRaises(ArgumentTypeError): + bounded("5") + assert bounded("12") == 12 + + bounded = BoundedInt(max=10) + with self.assertRaises(ArgumentTypeError): + bounded("15") + assert bounded("10") == 10 + + assert repr(bounded) == "integer" async def test_mediation_x_clear_and_default(self): parser = argparse.create_argument_parser() diff --git a/aries_cloudagent/config/util.py b/aries_cloudagent/config/util.py index 9de512d908..00a7d5c534 100644 --- a/aries_cloudagent/config/util.py +++ b/aries_cloudagent/config/util.py @@ -18,21 +18,52 @@ def common_config(settings: Mapping[str, Any]): LoggingConfigurator.configure(log_config, log_level, log_file) +class BoundedInt: + """Argument value parser for a bounded integer.""" + + def __init__(self, min: int = None, max: int = None): + """Initialize the ByteBoundedIntSize parser.""" + self.min_val = min + self.max_val = max + + def __call__(self, arg: str) -> int: + """Interpret the argument value.""" + if not arg: + raise ArgumentTypeError("Expected integer value") + try: + val = int(arg) + except ValueError: + raise ArgumentTypeError(f"Invalid integer value: '{arg}'") + if self.min_val is not None and val < self.min_val: + raise ArgumentTypeError( + f"Value must be greater than or equal to {self.min_val}" + ) + if self.max_val is not None and val > self.max_val: + raise ArgumentTypeError( + f"Value must be less than or equal to {self.max_val}" + ) + return val + + def __repr__(self): + """Format for in error reporting.""" + return "integer" + + class ByteSize: """Argument value parser for byte sizes.""" - def __init__(self, min_size: int = 0, max_size: int = 0): + def __init__(self, min: int = 0, max: int = None): """Initialize the ByteSize parser.""" - self.min_size = min_size - self.max_size = max_size + self.min_size = min + self.max_size = max def __call__(self, arg: str) -> int: """Interpret the argument value.""" if not arg: - raise ArgumentTypeError("Expected value") + raise ArgumentTypeError("Expected value (size in bytes)") parts = re.match(r"^(\d+)([kKmMgGtT]?)[bB]?$", arg) if not parts: - raise ArgumentTypeError("Invalid format") + raise ArgumentTypeError(f"Invalid size value: '{arg}'") size = int(parts[1]) suffix = parts[2].upper() if suffix == "K": @@ -45,14 +76,14 @@ def __call__(self, arg: str) -> int: size = size << 40 if size < self.min_size: raise ArgumentTypeError( - f"Size must be greater than or equal to {self.min_size}" + f"Value must be greater than or equal to {self.min_size}" ) if self.max_size and size > self.max_size: raise ArgumentTypeError( - f"Size must be less than or equal to {self.max_size}" + f"Value must be less than or equal to {self.max_size}" ) return size def __repr__(self): """Format for in error reporting.""" - return self.__class__.__name__ + return "bytes" From c5b23365c3c265c0d476da5aa59f3e4253870001 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Sun, 7 Mar 2021 10:40:34 -0800 Subject: [PATCH 106/243] handle PORTS in either format; use LC_ALL to fix 'Illegal byte sequence' error Signed-off-by: Andrew Whitehead --- scripts/generate-open-api-spec | 2 +- scripts/run_docker | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/generate-open-api-spec b/scripts/generate-open-api-spec index f154ed94c6..f573951363 100755 --- a/scripts/generate-open-api-spec +++ b/scripts/generate-open-api-spec @@ -114,7 +114,7 @@ function runACAPy() { # Mount the agent logs onto the hosting machine args="${args} -v /$(pwd)/../logs:/home/indy/logs" - randName=$(cat /dev/urandom | env LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) + randName=$(cat /dev/urandom | env LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) acaPyCmd="docker run -d --rm --name ${acaPyImage}_${randName} ${args} \ ${acaPyImage} start ${acaPyArgs}" printMilestone "Starting ACA-py docker image with command: \n \ diff --git a/scripts/run_docker b/scripts/run_docker index a133762d27..f4fbe5c890 100755 --- a/scripts/run_docker +++ b/scripts/run_docker @@ -7,7 +7,11 @@ $CONTAINER_RUNTIME build -t aries-cloudagent-run -f ../docker/Dockerfile.run .. ARGS="" for PORT in $PORTS; do - ARGS="${ARGS} -p $PORT:$PORT" + case $PORT in + *:*) ;; + *) PORT="$PORT:$PORT" ;; + esac + ARGS="${ARGS} -p $PORT" done PTVSD_PORT="${PTVSD_PORT-5678}" @@ -31,6 +35,6 @@ if [ "$OSTYPE" == "msys" ]; then CONTAINER_RUNTIME="winpty docker" fi -RAND_NAME=$(env LC_CTYPE=C tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 16 | head -n 1) +RAND_NAME=$(env LC_ALL=C tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 16 | head -n 1) $CONTAINER_RUNTIME run --rm -ti --name "aries-cloudagent-runner_${RAND_NAME}" \ $ARGS aries-cloudagent-run "$@" From f6d8b288b42848882ce3e9d4706f6d864306b559 Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 8 Mar 2021 12:16:29 -0500 Subject: [PATCH 107/243] accommodate old issue-cred-v2 exchange records with conn_id: it turns out there are some Signed-off-by: sklump --- .../protocols/issue_credential/v2_0/models/cred_ex_record.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py b/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py index 4a14738de5..6df1df27eb 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py @@ -60,12 +60,13 @@ def __init__( auto_remove: bool = True, error_msg: str = None, trace: bool = False, + conn_id: str = None, # for backward compatibility to restore from storage **kwargs, ): """Initialize a new V20CredExRecord.""" super().__init__(cred_ex_id, state, trace=trace, **kwargs) self._id = cred_ex_id - self.connection_id = connection_id + self.connection_id = connection_id or conn_id self.thread_id = thread_id self.parent_thread_id = parent_thread_id self.initiator = initiator From 6e72a896e434b43755913cdf3f6e86765b883c43 Mon Sep 17 00:00:00 2001 From: Christopher Adams Date: Fri, 19 Feb 2021 15:03:54 -0500 Subject: [PATCH 108/243] Refactored most print_banner logic to Banner class Signed-off-by: Christopher Adams --- aries_cloudagent/config/banner.py | 54 +++++++ aries_cloudagent/config/logging.py | 152 +++++------------- aries_cloudagent/config/tests/test_logging.py | 3 +- 3 files changed, 94 insertions(+), 115 deletions(-) create mode 100644 aries_cloudagent/config/banner.py diff --git a/aries_cloudagent/config/banner.py b/aries_cloudagent/config/banner.py new file mode 100644 index 0000000000..0598b6d54a --- /dev/null +++ b/aries_cloudagent/config/banner.py @@ -0,0 +1,54 @@ +"""Module to contain logic to generate the banner for ACA-py.""" + + +class Banner: + """Management class to generate a banner for ACA-py.""" + + def __init__(self, border: str, length: int): + """Initialize the banner object. + + The ``border`` is a single character to be used, and ``length`` + is the desired length of the whole banner, inclusive. + """ + self.border = border + self.length = length + + def print_border(self): + """Print a full line using the border character.""" + print(self.border * (self.length + 6)) + + def print_title(self, title): + """Print the main title element.""" + spacer = " " * (self.length - len(title)) + print(self.lr_pad(f"{title}{spacer}")) + + def print_spacer(self): + """Print an empty line with the border character only.""" + print(self.lr_pad(" " * self.length)) + + def print_subtitle(self, title): + """Print a subtitle for a section.""" + title += ":" + spacer = " " * (self.length - len(title)) + print(self.lr_pad(f"{title}{spacer}")) + + def print_list(self, items): + """Print a list of items, prepending a dash to each item.""" + for item in items: + left_part = f" - {item}" + spacer = " " * (self.length - len(left_part)) + print(self.lr_pad(f"{left_part}{spacer}")) + + def print_version(self, version): + """Print the current ``version``.""" + version = f"ver: {version}" + spacer = " " * (self.length - len(version)) + print(self.lr_pad(f"{spacer}{version}")) + + def lr_pad(self, content: str): + """Pad string content with defined border character. + + Args: + content: String content to pad + """ + return f"{self.border}{self.border} {content} {self.border}{self.border}" diff --git a/aries_cloudagent/config/logging.py b/aries_cloudagent/config/logging.py index 2dbe91352a..a4b9e93f39 100644 --- a/aries_cloudagent/config/logging.py +++ b/aries_cloudagent/config/logging.py @@ -8,6 +8,7 @@ import pkg_resources from ..version import __version__ +from .banner import Banner DEFAULT_LOGGING_CONFIG_PATH = "aries_cloudagent.config:default_logging_config.ini" @@ -100,133 +101,56 @@ def print_banner( border_character: (Default value = ":") Character to use in banner border """ - - def lr_pad(content: str): - """ - Pad string content with defined border character. - - Args: - content: String content to pad - """ - return ( - f"{border_character}{border_character}" - + f" {content} {border_character}{border_character}" - ) - - banner_title_string = agent_label or "ACA" - banner_title_spacer = " " * (banner_length - len(banner_title_string)) - - banner_border = border_character * (banner_length + 6) - banner_spacer = ( - f"{border_character}{border_character}" - + " " * (banner_length + 2) - + f"{border_character}{border_character}" - ) - - inbound_transports_subtitle_string = "Inbound Transports:" - inbound_transports_subtitle_spacer = " " * ( - banner_length - len(inbound_transports_subtitle_string) - ) - - inbound_transport_strings = [] - for transport in inbound_transports.values(): - host_port_string = ( - f" - {transport.scheme}://{transport.host}:{transport.port}" - ) - host_port_spacer = " " * (banner_length - len(host_port_string)) - inbound_transport_strings.append((host_port_string, host_port_spacer)) - - outbound_transports_subtitle_string = "Outbound Transports:" - outbound_transports_subtitle_spacer = " " * ( - banner_length - len(outbound_transports_subtitle_string) - ) - - outbound_transport_strings = [] - schemes = set().union( - *(transport.schemes for transport in outbound_transports.values()) - ) - for scheme in sorted(schemes): - schema_string = f" - {scheme}" - scheme_spacer = " " * (banner_length - len(schema_string)) - outbound_transport_strings.append((schema_string, scheme_spacer)) - - version_string = f"ver: {__version__}" - version_string_spacer = " " * (banner_length - len(version_string)) - - public_did_subtitle_string = "Public DID Information:" - public_did_subtitle_spacer = " " * ( - banner_length - len(public_did_subtitle_string) - ) - - public_did_strings = [] - did_string = f" - DID: {public_did}" - did_spacer = " " * (banner_length - len(did_string)) - public_did_strings.append((did_string, did_spacer)) - - admin_subtitle_string = "Administration API:" - admin_subtitle_spacer = " " * (banner_length - len(admin_subtitle_string)) - - admin_strings = [] - if admin_server: - host_port_string = f" - http://{admin_server.host}:{admin_server.port}" - host_port_spacer = " " * (banner_length - len(host_port_string)) - admin_strings.append((host_port_string, host_port_spacer)) - else: - disabled_string = " - not enabled" - disabled_spacer = " " * (banner_length - len(disabled_string)) - admin_strings.append((disabled_string, disabled_spacer)) + print() + banner = Banner(border=border_character, length=banner_length) + banner.print_border() # Title - print() - print(f"{banner_border}") - print(lr_pad(f"{banner_title_string}{banner_title_spacer}")) - print(f"{banner_spacer}") - print(f"{banner_spacer}") + banner.print_title(agent_label or "ACA") + + banner.print_spacer() + banner.print_spacer() # Inbound transports - print( - lr_pad( - str(inbound_transports_subtitle_string) - + str(inbound_transports_subtitle_spacer) - ) + banner.print_subtitle("Inbound Transports") + banner.print_spacer() + banner.print_list( + [ + f"{transport.scheme}://{transport.host}:{transport.port}" + for transport in inbound_transports.values() + ] ) - print(f"{banner_spacer}") - for transport_string in inbound_transport_strings: - print(lr_pad(f"{transport_string[0]}{transport_string[1]}")) - print(f"{banner_spacer}") + banner.print_spacer() # Outbound transports - print( - lr_pad( - str(outbound_transports_subtitle_string) - + str(outbound_transports_subtitle_spacer) - ) + banner.print_subtitle("Outbound Transports") + banner.print_spacer() + schemes = set().union( + *(transport.schemes for transport in outbound_transports.values()) ) - print(f"{banner_spacer}") - for transport_string in outbound_transport_strings: - print(lr_pad(f"{transport_string[0]}{transport_string[1]}")) - print(f"{banner_spacer}") + banner.print_list([f"{scheme}" for scheme in sorted(schemes)]) + banner.print_spacer() # DID info if public_did: - print( - lr_pad( - str(public_did_subtitle_string) + str(public_did_subtitle_spacer) - ) - ) - print(f"{banner_spacer}") - for public_did_string in public_did_strings: - print(lr_pad(f"{public_did_string[0]}{public_did_string[1]}")) - print(f"{banner_spacer}") + banner.print_subtitle("Public DID Information") + banner.print_spacer() + banner.print_list([f"DID: {public_did}"]) + banner.print_spacer() # Admin server info - print(lr_pad(str(admin_subtitle_string) + str(admin_subtitle_spacer))) - print(f"{banner_spacer}") - for admin_string in admin_strings: - print(lr_pad(f"{admin_string[0]}{admin_string[1]}")) - print(f"{banner_spacer}") - print(lr_pad(f"{version_string_spacer}{version_string}")) - print(f"{banner_border}") + banner.print_subtitle("Administration API") + banner.print_spacer() + banner.print_list( + [f"http://{admin_server.host}:{admin_server.port}"] + if admin_server + else ["not enabled"] + ) + banner.print_spacer() + + banner.print_version(__version__) + + banner.print_border() print() print("Listening...") print() diff --git a/aries_cloudagent/config/tests/test_logging.py b/aries_cloudagent/config/tests/test_logging.py index 82867d32e7..c98648f605 100644 --- a/aries_cloudagent/config/tests/test_logging.py +++ b/aries_cloudagent/config/tests/test_logging.py @@ -65,11 +65,12 @@ def test_banner(self): test_label, {"in": mock_http}, {"out": mock_https}, + None, test_did, mock_admin_server, ) test_module.LoggingConfigurator.print_banner( - test_label, {"in": mock_http}, {"out": mock_https}, test_did + test_label, {"in": mock_http}, {"out": mock_https}, None, test_did ) output = stdout.getvalue() assert test_did in output From 88311da2b1437e849a4de9e0ca01dbabde98b6f2 Mon Sep 17 00:00:00 2001 From: Christopher Adams Date: Wed, 3 Mar 2021 13:59:19 -0500 Subject: [PATCH 109/243] Implemented Outbound Queue (-oq) as alternative to outbound transport (-ot) - This branch introduces three new commandline options, -oq to define an outbound queue, -oqp to define a prefix to use when generating the queue key, and -oqc to specify the location of a custom queue class. - Changed commandlinevalidation to require either -ot or -oq, but not both at the same time. - The `print_banner()` method is updated, to print out information on the queue, and to hide a transport in the case there is no transport. - Defined new `RedisOutboundQueue` and its `BaseOutboundQueue` base class type. - Refactored in `core/conductor.py` to make external vs internal queue save logic clear. - Handled Redis connection management inside of `transport.start()` and `transport.stop()`. - Used `msgpack` to serialize before storing in Redis. The message contains three toplevel keys: `headers`, `endpoint`, and `payload`. - Added optional unit tests for Redis backend. Redis test endpoint can be specified through env var TEST_REDIS_CONFIG. - Updated run_tests script to proxy TEST_REDIS_CONFIG environment variable to docker. - Removed a test `test_setup_x()` which seemed to test that a KeyError raised by the outbound transport manager always propagates up the stack. But this manager is now optional. - Added `aioredis` to requirements. - Added Markdown description about how to use the new queue. Signed-off-by: Christopher Adams --- OutboundQueue.md | 53 +++++++++ aries_cloudagent/config/argparse.py | 56 ++++++++- aries_cloudagent/config/logging.py | 22 +++- .../config/tests/test_argparse.py | 94 +++++++++++++++ aries_cloudagent/config/tests/test_logging.py | 24 +++- aries_cloudagent/core/conductor.py | 36 +++++- aries_cloudagent/core/tests/test_conductor.py | 24 ---- .../transport/outbound/queue/__init__.py | 0 .../transport/outbound/queue/base.py | 51 ++++++++ .../transport/outbound/queue/loader.py | 89 ++++++++++++++ .../transport/outbound/queue/redis.py | 83 +++++++++++++ .../outbound/queue/tests/__init__.py | 0 .../outbound/queue/tests/fixtures.py | 25 ++++ .../outbound/queue/tests/test_loader.py | 78 +++++++++++++ .../outbound/queue/tests/test_redis.py | 109 ++++++++++++++++++ requirements.txt | 1 + scripts/run_tests | 4 + 17 files changed, 715 insertions(+), 34 deletions(-) create mode 100644 OutboundQueue.md create mode 100644 aries_cloudagent/transport/outbound/queue/__init__.py create mode 100644 aries_cloudagent/transport/outbound/queue/base.py create mode 100644 aries_cloudagent/transport/outbound/queue/loader.py create mode 100644 aries_cloudagent/transport/outbound/queue/redis.py create mode 100644 aries_cloudagent/transport/outbound/queue/tests/__init__.py create mode 100644 aries_cloudagent/transport/outbound/queue/tests/fixtures.py create mode 100644 aries_cloudagent/transport/outbound/queue/tests/test_loader.py create mode 100644 aries_cloudagent/transport/outbound/queue/tests/test_redis.py diff --git a/OutboundQueue.md b/OutboundQueue.md new file mode 100644 index 0000000000..c8d9c175f2 --- /dev/null +++ b/OutboundQueue.md @@ -0,0 +1,53 @@ +# Outbound Queues in ACA-py + +## Background + +By default, messages often stay in ACA-py memory for long periods of time without being delivered. As a result, when the ACA-py Python process is terminated unexpectedly, messages are lost. + +But with recent changes, outbound messages can now be sent to a message queue of your choice instead of being delivered by ACA-py. This queue is external to the ACA-py process, and can be configured for the durability requirements you want. This new concept of an "outbound queue" is intended to be an optional replacement to the current ACA-py outbound transport (i.e. option `-ot`, `--outbound-transport`). + +If you run an outbound queue, you will also need to run a new service, a delivery agent, to actually deliver the message. See more details below. + +## Usage Details + +A new set of commandline options have been added to provide a way for users to "opt in" to use of the outbound queue. These new options are as follows: + +- `-oq`, `--outbound-queue`: specifies the queue connection details. +- `-oqp`, `--outbound-queue-prefix`: defines a prefix to use when generating the topic key. +- `-oqc`, `--outbound-queue-class`: specify the location of a custom queue class. + +Only the first, `--outbound-queue`, is required if you would like to opt into the outbound queue to replace `--outbound-transport`. The input for this option takes the form `[protocol]://[host]:[port]`. So for example, if the queue I want to use is Redis, on host `myredis.mydomain.com` using the default port for Redis, the string would be as follows: `redis://myredis.mydomain.com:6379` + +The second option, `--outbound-queue-prefix`, specifies the queue topic prefix. The queue topic is generated in the following form: `{prefix}.outbound_transport`. The default value for this commandline option is the value `acapy`, so a queue key of `acapy.outbound_transport` is generated in the case of the default settings. ACA-py will send messages to the queue using this generated key as the topic. + +The third option, `--outbound-queue-class`, specifies the queue backend. By default, this is `aries_cloudagent.transport.outbound.queue.redis:RedisOutboundQueue`, which specifies ACA-py's builtin Redis `LIST` backend. Users can define their own class, inheriting from `BaseOutboundQueue`, to implement a queue backend of their choice. This commandline option is the official entrypoint of ACA-py's pluggable queue interface. Developers must specify a Python dotpath to a module importable in the current `PYTHONPATH`, followed by a colon, followed by the name of their custom class. + +## Delivery Agent + +When using `--outbound-queue` instead of `--outbound-transport`, ACA-py no longer delivers the messages to destinations. Instead, a delivery service ([a prototype can be found here](https://github.com/andrewwhitehead/aca-deliver)) would need to be run. This service should pick up a message from the queue and then deliver that message. + +When running `--outbound-queue`, ACA-py serializes messages to be sent to the queue by using MessagePack. MessagePack is a protocol to serialize content into a compact binary format. ACA-py generates keys in MessagePack as follows: +- `endpoint` - specifies the endpoint for the message. +- `headers` - specifies a set of key-value pairs representing message headers. +- `payload` - the raw binary content of the message. + +The delivery service will need to deserialize the binary content on the consuming end. The result will then be a key-value data structure (for example, a `dict` in Python). So the deseralized message, deserialized into a Python `dict` for example, would be in the following form: +``` +{ + "headers": {"Content-Type": "..."}, + "endpoint": "...", + "payload": "..." +} +``` +The delivery agent should process this message and deliver it to the recipient as appropriate. + +## Backend-Specific Notes + +### Redis + +Value for `--outbound-queue-class` to use this backend: +- `aries_cloudagent.transport.outbound.queue.redis:RedisOutboundQueue` + +This is a queue backend, using the `LIST` data type in Redis. When using Redis, the delivery service consuming this queue in order to send outbound messages over transport will need to pop from the left side of the queue (i.e. the Redis `LPOP` command) to get messages in the order they were sent. + +Users will need to configure [Redis persistence](https://redis.io/topics/persistence) to gain message durability benefits in their Redis deployment. Redis by default runs entirely in-memory, so it is subject to the same data loss characteristics as ACA-py unless you also configure it to run in persistence mode. diff --git a/aries_cloudagent/config/argparse.py b/aries_cloudagent/config/argparse.py index ace8c81d6f..900ec6c6ac 100644 --- a/aries_cloudagent/config/argparse.py +++ b/aries_cloudagent/config/argparse.py @@ -867,6 +867,41 @@ def add_arguments(self, parser: ArgumentParser): multiple times to supoort multiple transport types. Supported outbound\ transport types are 'http' and 'ws'.", ) + parser.add_argument( + "-oq", + "--outbound-queue", + dest="outbound_queue", + type=str, + env_var="ACAPY_OUTBOUND_TRANSPORT_QUEUE", + help="""Defines connection details for outbound queue in a single + connection string. For example, 'redis://127.0.0.1:6379'. + """, + ) + parser.add_argument( + "-oqp", + "--outbound-queue-prefix", + dest="outbound_queue_prefix", + type=str, + env_var="ACAPY_OUTBOUND_TRANSPORT_QUEUE_PREFIX", + help="""Defines the prefix used to generate the queue key. The + default is 'acapy', which generates a queue key as follows: + 'acapy.outbound_transport'. + """, + ) + parser.add_argument( + "-oqc", + "--outbound-queue-class", + dest="outbound_queue_class", + type=str, + env_var="ACAPY_OUTBOUND_TRANSPORT_QUEUE_CLASS", + help="""Defines the location of the Outbound Queue Engine. This must be + a 'dotpath' to a Python module on the PYTHONPATH, followed by a + colon, followed by the name of a Python class that implements + BaseOutboundQueue. This commandline option is the official entry + point of ACA-py's pluggable queue interface. The default value is: + 'aries_cloudagent.transport.outbound.queue.redis:RedisOutboundQueue' + """, + ) parser.add_argument( "-l", "--label", @@ -916,10 +951,27 @@ def get_settings(self, args: Namespace): settings["transport.inbound_configs"] = args.inbound_transports else: raise ArgsParseError("-it/--inbound-transport is required") + if not args.outbound_transports and not args.outbound_queue: + raise ArgsParseError( + "-ot/--outbound-transport or -oq/--outbound-queue is required" + ) + if args.outbound_transports and args.outbound_queue: + raise ArgsParseError( + "-ot/--outbound-transport and -oq/--outbound-queue are " + "not allowed together" + ) if args.outbound_transports: settings["transport.outbound_configs"] = args.outbound_transports - else: - raise ArgsParseError("-ot/--outbound-transport is required") + if args.outbound_queue: + settings["transport.outbound_queue"] = args.outbound_queue + settings["transport.outbound_queue_prefix"] = ( + args.outbound_queue_prefix or "acapy" + ) + settings["transport.outbound_queue_class"] = ( + args.outbound_queue_class + or "aries_cloudagent.transport.outbound.queue.redis:RedisOutboundQueue" + ) + settings["transport.enable_undelivered_queue"] = args.enable_undelivered_queue if args.label: diff --git a/aries_cloudagent/config/logging.py b/aries_cloudagent/config/logging.py index a4b9e93f39..e3bab1d6c0 100644 --- a/aries_cloudagent/config/logging.py +++ b/aries_cloudagent/config/logging.py @@ -83,6 +83,7 @@ def print_banner( agent_label, inbound_transports, outbound_transports, + outbound_queue, public_did, admin_server=None, banner_length=40, @@ -95,6 +96,7 @@ def print_banner( agent_label: Agent Label inbound_transports: Configured inbound transports outbound_transports: Configured outbound transports + outbound_queue: The outbound queue engine instance admin_server: Admin server info public_did: Public DID banner_length: (Default value = 40) Length of the banner @@ -123,13 +125,25 @@ def print_banner( banner.print_spacer() # Outbound transports - banner.print_subtitle("Outbound Transports") - banner.print_spacer() schemes = set().union( *(transport.schemes for transport in outbound_transports.values()) ) - banner.print_list([f"{scheme}" for scheme in sorted(schemes)]) - banner.print_spacer() + if schemes: + banner.print_subtitle("Outbound Transports") + banner.print_spacer() + banner.print_list([f"{scheme}" for scheme in sorted(schemes)]) + banner.print_spacer() + + # Outbound queue + if outbound_queue: + banner.print_subtitle("Outbound Queue") + banner.print_spacer() + banner.print_list( + [ + f"{outbound_queue.connection}", + ] + ) + banner.print_spacer() # DID info if public_did: diff --git a/aries_cloudagent/config/tests/test_argparse.py b/aries_cloudagent/config/tests/test_argparse.py index 3518ce2638..a7631174be 100644 --- a/aries_cloudagent/config/tests/test_argparse.py +++ b/aries_cloudagent/config/tests/test_argparse.py @@ -53,6 +53,100 @@ async def test_transport_settings(self): assert settings.get("transport.outbound_configs") == ["http"] assert result.max_outbound_retry == 5 + async def test_outbound_is_required(self): + """Test that either -ot or -oq are required""" + parser = argparse.create_argument_parser() + group = argparse.TransportGroup() + group.add_arguments(parser) + + result = parser.parse_args( + [ + "--inbound-transport", + "http", + "0.0.0.0", + "80", + ] + ) + + with self.assertRaises(argparse.ArgsParseError): + settings = group.get_settings(result) + + async def test_redis_outbound_queue(self): + """Test Redis outbound queue connection string.""" + parser = argparse.create_argument_parser() + group = argparse.TransportGroup() + group.add_arguments(parser) + + result = parser.parse_args( + [ + "--inbound-transport", + "http", + "0.0.0.0", + "80", + "--outbound-queue", + "redis://test:1234", + ] + ) + + settings = group.get_settings(result) + + self.assertEqual(settings.get("transport.outbound_queue"), "redis://test:1234") + self.assertEqual(settings.get("transport.outbound_queue_prefix"), "acapy") + self.assertEqual( + settings.get("transport.outbound_queue_class"), + "aries_cloudagent.transport.outbound.queue.redis:RedisOutboundQueue", + ) + + async def test_redis_outbound_queue_prefix(self): + """Test Redis outbound queue prefix.""" + parser = argparse.create_argument_parser() + group = argparse.TransportGroup() + group.add_arguments(parser) + + result = parser.parse_args( + [ + "--inbound-transport", + "http", + "0.0.0.0", + "80", + "--outbound-queue", + "redis://test:1234", + "--outbound-queue-prefix", + "foo", + ] + ) + + settings = group.get_settings(result) + + self.assertEqual(settings.get("transport.outbound_queue"), "redis://test:1234") + self.assertEqual(settings.get("transport.outbound_queue_prefix"), "foo") + + async def test_redis_outbound_queue_class(self): + """Test Redis outbound queue custom class.""" + parser = argparse.create_argument_parser() + group = argparse.TransportGroup() + group.add_arguments(parser) + + result = parser.parse_args( + [ + "--inbound-transport", + "http", + "0.0.0.0", + "80", + "--outbound-queue", + "redis://test:1234", + "--outbound-queue-class", + "mymodule:MyClass", + ] + ) + + settings = group.get_settings(result) + + self.assertEqual(settings.get("transport.outbound_queue"), "redis://test:1234") + self.assertEqual( + settings.get("transport.outbound_queue_class"), "mymodule:MyClass" + ) + async def test_general_settings_file(self): """Test file argument parsing.""" diff --git a/aries_cloudagent/config/tests/test_logging.py b/aries_cloudagent/config/tests/test_logging.py index c98648f605..cef6176b84 100644 --- a/aries_cloudagent/config/tests/test_logging.py +++ b/aries_cloudagent/config/tests/test_logging.py @@ -53,7 +53,7 @@ def test_configure_path(self, mock_file_config, mock_load_resource): mock_load_resource.return_value, disable_existing_loggers=False ) - def test_banner(self): + def test_banner_did(self): stdout = StringIO() mock_http = async_mock.MagicMock(scheme="http", host="1.2.3.4", port=8081) mock_https = async_mock.MagicMock(schemes=["https", "archie"]) @@ -75,6 +75,28 @@ def test_banner(self): output = stdout.getvalue() assert test_did in output + def test_banner_outbound_queue(self): + stdout = StringIO() + mock_http = async_mock.MagicMock(scheme="http", host="1.2.3.4", port=8081) + mock_queue = async_mock.MagicMock(connection="redis://foo:1234") + mock_admin_server = async_mock.MagicMock(host="1.2.3.4", port=8091) + with contextlib.redirect_stdout(stdout): + test_label = "Aries Cloud Agent" + test_did = "55GkHamhTU1ZbTbV2ab9DE" + test_module.LoggingConfigurator.print_banner( + test_label, + {"in": mock_http}, + {}, + mock_queue, + test_did, + mock_admin_server, + ) + test_module.LoggingConfigurator.print_banner( + test_label, {"in": mock_http}, {}, mock_queue, test_did + ) + output = stdout.getvalue() + assert "redis://foo:1234" in output + def test_load_resource(self): with async_mock.patch("builtins.open", async_mock.MagicMock()) as mock_open: test_module.load_resource("abc", encoding="utf-8") diff --git a/aries_cloudagent/core/conductor.py b/aries_cloudagent/core/conductor.py index cd659e7e43..85e589d50e 100644 --- a/aries_cloudagent/core/conductor.py +++ b/aries_cloudagent/core/conductor.py @@ -37,8 +37,10 @@ from ..transport.inbound.manager import InboundTransportManager from ..transport.inbound.message import InboundMessage from ..transport.outbound.base import OutboundDeliveryError +from ..transport.outbound.queue.base import BaseOutboundQueue from ..transport.outbound.manager import OutboundTransportManager, QueuedOutboundMessage from ..transport.outbound.message import OutboundMessage +from ..transport.outbound.queue.loader import get_outbound_queue from ..transport.wire_format import BaseWireFormat from ..utils.stats import Collector from ..utils.task_queue import CompletedTask, TaskQueue @@ -73,6 +75,7 @@ def __init__(self, context_builder: ContextBuilder) -> None: self.outbound_transport_manager: OutboundTransportManager = None self.root_profile: Profile = None self.setup_public_did: DIDInfo = None + self.outbound_queue: BaseOutboundQueue = None @property def context(self) -> InjectionContext: @@ -122,6 +125,8 @@ async def setup(self): multitenant_mgr = MultitenantManager(self.root_profile) context.injector.bind_instance(MultitenantManager, multitenant_mgr) + self.outbound_queue = get_outbound_queue(context.settings) + # Admin API if context.settings.get("admin.enabled"): try: @@ -143,8 +148,6 @@ async def setup(self): for url in webhook_urls: self.admin_server.add_webhook_target(url) context.injector.bind_instance(BaseAdminServer, self.admin_server) - if "http" not in self.outbound_transport_manager.registered_schemes: - self.outbound_transport_manager.register("http") except Exception: LOGGER.exception("Unable to register admin server") raise @@ -212,6 +215,7 @@ async def start(self) -> None: default_label, self.inbound_transport_manager.registered_transports, self.outbound_transport_manager.registered_transports, + self.outbound_queue, self.setup_public_did and self.setup_public_did.did, self.admin_server, ) @@ -483,7 +487,7 @@ async def queue_outbound( inbound: InboundMessage = None, ): """ - Queue an outbound message. + Queue an outbound message for transport. Args: profile: The active profile @@ -511,7 +515,33 @@ async def queue_outbound( self.admin_server.notify_fatal_error() raise del conn_mgr + # If ``self.outbound_queue`` is specified (usually set via + # outbound queue `-oq` commandline option), use that external + # queue. Else save the message to an internal queue. This + # internal queue usually results in the message to be sent over + # ACA-py `-ot` transport. + if self.outbound_queue: + await self._queue_external(profile, outbound) + else: + self._queue_internal(profile, outbound) + + async def _queue_external( + self, + profile: Profile, + outbound: OutboundMessage, + ): + """Save the message to an external outbound queue.""" + async with self.outbound_queue: + targets = ( + [outbound.target] if outbound.target else (outbound.target_list or []) + ) + for target in targets: + await self.outbound_queue.enqueue_message( + outbound.payload, target.endpoint + ) + def _queue_internal(self, profile: Profile, outbound: OutboundMessage): + """Save the message to an internal outbound queue.""" try: self.outbound_transport_manager.enqueue_message(profile, outbound) except OutboundDeliveryError: diff --git a/aries_cloudagent/core/tests/test_conductor.py b/aries_cloudagent/core/tests/test_conductor.py index f95ed0568f..04397aee80 100644 --- a/aries_cloudagent/core/tests/test_conductor.py +++ b/aries_cloudagent/core/tests/test_conductor.py @@ -194,30 +194,6 @@ async def test_stats(self): ] ) - async def test_setup_x(self): - builder: ContextBuilder = StubContextBuilder(self.test_settings) - builder.update_settings( - {"admin.enabled": "1", "admin.webhook_urls": ["http://sample.webhook.ca"]} - ) - conductor = test_module.Conductor(builder) - - mock_om = async_mock.MagicMock( - setup=async_mock.CoroutineMock(), - register=async_mock.MagicMock(side_effect=KeyError("sample error")), - registered_schemes={}, - ) - with async_mock.patch.object( - test_module, "InboundTransportManager", autospec=True - ) as mock_inbound_mgr, async_mock.patch.object( - test_module, "OutboundTransportManager", autospec=True - ) as mock_outbound_mgr, async_mock.patch.object( - test_module, "LoggingConfigurator", async_mock.MagicMock() - ) as mock_logger: - mock_outbound_mgr.return_value = mock_om - - with self.assertRaises(KeyError): - await conductor.setup() - async def test_inbound_message_handler(self): builder: ContextBuilder = StubContextBuilder(self.test_settings) conductor = test_module.Conductor(builder) diff --git a/aries_cloudagent/transport/outbound/queue/__init__.py b/aries_cloudagent/transport/outbound/queue/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/transport/outbound/queue/base.py b/aries_cloudagent/transport/outbound/queue/base.py new file mode 100644 index 0000000000..ff918c088d --- /dev/null +++ b/aries_cloudagent/transport/outbound/queue/base.py @@ -0,0 +1,51 @@ +"""Base classes for the queue module.""" +from abc import ABC, abstractmethod +import asyncio +from typing import Union + +from ...error import TransportError + + +class BaseOutboundQueue(ABC): + """Base class for the outbound queue generic type.""" + + protocol = None # string value representing protocol, e.g. "redis" + + def __init__(self, connection: str, prefix: str = None): + """Initialize base queue type.""" + self.connection = connection + self.prefix = prefix or "acapy" + + async def __aenter__(self): + """Async context manager enter.""" + await self.start() + + async def __aexit__(self, err_type, err_value, err_t): + """Async context manager exit.""" + if err_type and err_type != asyncio.CancelledError: + self.logger.exception("Exception in outbound queue") + await self.stop() + + @abstractmethod + async def start(self): + """Start the queue.""" + + @abstractmethod + async def stop(self): + """Stop the queue.""" + + @abstractmethod + async def push(self, key: bytes, message: bytes): + """Push a ``message`` to queue on ``key``.""" + + @abstractmethod + async def enqueue_message( + self, + payload: Union[str, bytes], + endpoint: str, + ): + """Prepare and send message to external queue.""" + + +class OutboundQueueError(TransportError): + """Generic outbound transport error.""" diff --git a/aries_cloudagent/transport/outbound/queue/loader.py b/aries_cloudagent/transport/outbound/queue/loader.py new file mode 100644 index 0000000000..709085c987 --- /dev/null +++ b/aries_cloudagent/transport/outbound/queue/loader.py @@ -0,0 +1,89 @@ +"""Dynamic loading of pluggable outbound queue engine classes.""" +import importlib + +from ....config.settings import Settings + + +def get_outbound_queue(settings: Settings): + """Given ``settings``, return instantiated outbound queue class. + + Raises `OutboundQueueConfigurationError` in the case there is a + problem with the configuration. + """ + connection, prefix, class_location = ( + settings.get("transport.outbound_queue"), + settings.get("transport.outbound_queue_prefix"), + settings.get("transport.outbound_queue_class"), + ) + if not connection: + return None + klass = get_class(class_location) + protocol, _, __ = get_connection_parts(connection) + class_protocol = getattr(klass, "protocol", None) + if class_protocol != protocol: + raise OutboundQueueConfigurationError( + f"Queue configuration '{protocol}' not matched with protocol " + f"'{class_protocol}'" + ) + return klass(connection=connection, prefix=prefix) + + +def get_class(dotpath: str): + """Dynamically loads class from ``dotpath``. + + Returns the Python class. The ``dotpath`` should specify a Python + module, followed by a colon (:), followed by the name of the Python + class. + + Raises `OutboundQueueConfigurationError` in the case there is a + problem with the configuration. + """ + try: + module_path, class_name = dotpath.split(":") + except ValueError: + raise OutboundQueueConfigurationError(f"Malformed input '{dotpath}'") + try: + module = importlib.import_module(module_path) + except ImportError: + raise OutboundQueueConfigurationError(f"Module not found at '{module_path}'") + try: + klass = getattr(module, class_name) + except AttributeError: + raise OutboundQueueConfigurationError(f"Class not found at '{dotpath}'") + if "BaseOutboundQueue" not in [baseclass.__name__ for baseclass in klass.mro()]: + raise OutboundQueueConfigurationError( + f"Class '{dotpath}' does not inherit from BaseOutboundQueue" + ) + if not getattr(klass, "protocol", None): + raise OutboundQueueConfigurationError( + f"Custom Outbound Queue class '{dotpath}' requires a defined " + f"'protocol' attribute" + ) + return klass + + +def get_connection_parts(connection: str): + """Given ``connection``, return a tuple of protocol, host, and port. + + The ``connection`` argument should be a string in the following form: + [protocol]://[hostname]:[port] + + Raises `OutboundQueueConfigurationError` in the case there is a + problem with the configuration. + """ + try: + protocol, host_and_port = connection.split("://") + host, port = host_and_port.split(":") + return protocol, host, port + except ValueError: + raise OutboundQueueConfigurationError( + "Queue configuration required: '[protocol]://[hostname]:[port]'" + ) + + +class OutboundQueueConfigurationError(Exception): + """An error with the queue configuration.""" + + def __init__(self, message): + """Initialize the exception instance.""" + self.message = message diff --git a/aries_cloudagent/transport/outbound/queue/redis.py b/aries_cloudagent/transport/outbound/queue/redis.py new file mode 100644 index 0000000000..ee6ffa1411 --- /dev/null +++ b/aries_cloudagent/transport/outbound/queue/redis.py @@ -0,0 +1,83 @@ +"""Redis outbound transport.""" + +import asyncio +import logging +import msgpack +from typing import Union + +import aioredis + +from .base import BaseOutboundQueue, OutboundQueueError + + +class RedisOutboundQueue(BaseOutboundQueue): + """Redis outbound transport class.""" + + protocol = "redis" + + def __init__(self, connection: str, prefix: str = None) -> None: + """Set initial state.""" + super().__init__(connection, prefix) + self.logger = logging.getLogger(__name__) + self.redis = None + + def __str__(self): + """Return string representation of the outbound queue.""" + return ( + f"RedisOutboundQueue(" + f"connection={self.connection}, " + f"prefix={self.prefix}" + f")" + ) + + async def start(self): + """Start the transport.""" + loop = asyncio.get_event_loop() + self.redis = await aioredis.create_redis_pool( + self.connection, + minsize=5, + maxsize=10, + loop=loop, + ) + # raises ConnectionRefusedError if not available + return self + + async def stop(self): + """Stop the transport.""" + self.redis.close() + await self.redis.wait_closed() + + async def push(self, key: bytes, message: bytes): + """Push a ``message`` to redis on ``key``.""" + try: + return await self.redis.rpush(key, message) + except aioredis.RedisError as e: + raise OutboundQueueError(f"Unexpected redis client exception {e}") + + async def enqueue_message( + self, + payload: Union[str, bytes], + endpoint: str, + ): + """Prepare and send message to external redis. + + Args: + payload: message payload in string or byte format + endpoint: URI endpoint for delivery + """ + if not endpoint: + raise OutboundQueueError("No endpoint provided") + if isinstance(payload, bytes): + content_type = "application/ssi-agent-wire" + else: + content_type = "application/json" + payload = payload.encode(encoding="utf-8") + message = msgpack.packb( + { + "headers": {"Content-Type": content_type}, + "endpoint": endpoint, + "payload": payload, + } + ) + key = f"{self.prefix}.outbound_transport".encode() + return await self.push(key, message) diff --git a/aries_cloudagent/transport/outbound/queue/tests/__init__.py b/aries_cloudagent/transport/outbound/queue/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/transport/outbound/queue/tests/fixtures.py b/aries_cloudagent/transport/outbound/queue/tests/fixtures.py new file mode 100644 index 0000000000..cd6ff2e365 --- /dev/null +++ b/aries_cloudagent/transport/outbound/queue/tests/fixtures.py @@ -0,0 +1,25 @@ +from ..base import BaseOutboundQueue + + +class QueueClassNoBaseClass: + pass + + +class QueueClassNoProtocol(BaseOutboundQueue): + pass + + +class QueueClassValid(BaseOutboundQueue): + protocol = "testprotocol" + + def enqueue_message(self, payload, endpoint): + pass + + def push(self, key, message): + pass + + def start(self): + pass + + def stop(self): + pass diff --git a/aries_cloudagent/transport/outbound/queue/tests/test_loader.py b/aries_cloudagent/transport/outbound/queue/tests/test_loader.py new file mode 100644 index 0000000000..0e52f2b22f --- /dev/null +++ b/aries_cloudagent/transport/outbound/queue/tests/test_loader.py @@ -0,0 +1,78 @@ +import asyncio +import base64 +import msgpack +import pytest +import string + +from asynctest import TestCase as AsyncTestCase, mock as async_mock +import unittest +from aiohttp import web +import aioredis + +from .....config.injection_context import InjectionContext +from .....utils.stats import Collector + +from ....outbound.message import OutboundMessage +from ....wire_format import JsonWireFormat + +from ...base import OutboundTransportError +from ..base import OutboundQueueError +from ..loader import ( + get_outbound_queue, + get_class, + get_connection_parts, + OutboundQueueConfigurationError, +) +from ..redis import RedisOutboundQueue + +from .fixtures import QueueClassValid + + +class TestQueueLoader(AsyncTestCase): + async def test_get_class(self): + with self.assertRaises(OutboundQueueConfigurationError) as context: + get_class( + "aries_cloudagent.transport.outbound.queue.tests.fixtures:" + "QueueClassNoBaseClass" + ) + self.assertIn("does not inherit", context.exception.message) + with self.assertRaises(OutboundQueueConfigurationError) as context: + get_class( + "aries_cloudagent.transport.outbound.queue.tests.fixtures:" + "NoClassThere" + ) + self.assertIn("not found", context.exception.message) + with self.assertRaises(OutboundQueueConfigurationError) as context: + get_class( + "aries_cloudagent.transport.outbound.queue.tests.fixtures:" + "QueueClassNoProtocol" + ) + self.assertIn("requires a defined 'protocol'", context.exception.message) + self.assertIs( + get_class( + "aries_cloudagent.transport.outbound.queue.tests.fixtures:" + "QueueClassValid" + ), + QueueClassValid, + ) + + async def test_get_connection_parts(self): + protocol, host, port = get_connection_parts("redis://127.0.0.1:8000") + self.assertEqual(protocol, "redis") + self.assertEqual(host, "127.0.0.1") + self.assertEqual(port, "8000") + + async def test_get_outbound_queue_valid(self): + context = InjectionContext() + context.settings["transport.outbound_queue"] = "testprotocol://127.0.0.1:8000" + context.settings["transport.outbound_queue_prefix"] = "test_prefix" + context.settings["transport.outbound_queue_class"] = ( + "aries_cloudagent.transport.outbound.queue.tests.fixtures:" + "QueueClassValid" + ) + queue = get_outbound_queue(context.settings) + self.assertIsInstance( + queue, + QueueClassValid, + ) + self.assertEqual(queue.connection, "testprotocol://127.0.0.1:8000") diff --git a/aries_cloudagent/transport/outbound/queue/tests/test_redis.py b/aries_cloudagent/transport/outbound/queue/tests/test_redis.py new file mode 100644 index 0000000000..1beb7c9deb --- /dev/null +++ b/aries_cloudagent/transport/outbound/queue/tests/test_redis.py @@ -0,0 +1,109 @@ +import asyncio +import base64 +import msgpack +import os +import pytest +import string + +from asynctest import TestCase as AsyncTestCase, mock as async_mock +import unittest +from aiohttp import web +import aioredis + +from .....config.injection_context import InjectionContext +from .....utils.stats import Collector + +from ....outbound.message import OutboundMessage +from ....wire_format import JsonWireFormat + +from ...base import OutboundTransportError +from ..base import OutboundQueueError +from ..redis import RedisOutboundQueue + + +ENDPOINT = "http://localhost:9000" +KEYNAME = "acapy.outbound_transport" + +REDIS_CONF = os.environ.get("TEST_REDIS_CONFIG", None) + + +@unittest.skipUnless( + REDIS_CONF, + ("Redis conf not defined via OS environment variable TEST_REDIS_CONFIG"), +) +class TestRedisOutboundQueue(AsyncTestCase): + async def setUp(self): + self.loop = asyncio.get_event_loop() + self.transport = RedisOutboundQueue( + connection=REDIS_CONF, + ) + self.redis = await aioredis.create_redis_pool( + REDIS_CONF, + minsize=5, + maxsize=10, + loop=self.loop, + ) + await self.redis.delete(KEYNAME) + + async def tearDown(self): + await self.redis.delete(KEYNAME) + self.redis.close() + await self.redis.wait_closed() + + async def receive_message(self): + message = await self.redis.blpop(KEYNAME) + return message[1] + + async def test_enqueue_message_str(self): + transmitted_str = string.ascii_letters + string.digits + async with self.transport: + await self.transport.enqueue_message( + payload=transmitted_str, + endpoint=ENDPOINT, + ) + message = await self.receive_message() + payload = msgpack.unpackb(message).get(b"payload") + self.assertEqual(payload, transmitted_str.encode()) + + async def test_enqueue_message_bytes(self): + transmitted_bytes = bytes(range(0, 256)) + async with self.transport: + await self.transport.enqueue_message( + payload=transmitted_bytes, + endpoint=ENDPOINT, + ) + message = await self.receive_message() + payload = msgpack.unpackb(message).get(b"payload") + self.assertEqual(payload, transmitted_bytes) + + async def test_redis_error_handled(self): + transmitted_str = string.ascii_letters + string.digits + async with self.transport: + with unittest.mock.patch.object( + self.transport.redis, + "rpush", + side_effect=aioredis.RedisError, + new_callable=AsyncMock, + ) as pool_mock: + with self.assertRaises(OutboundQueueError): + await self.transport.enqueue_message( + payload=transmitted_str, + endpoint=ENDPOINT, + ) + + +class TestRedisConnection(AsyncTestCase): + async def test_endpoint_goes_into_class(self): + TEST_REDIS_ENDPOINT = "redis://test_redis_endpoint:6379" + transport = RedisOutboundQueue(connection=TEST_REDIS_ENDPOINT) + with unittest.mock.patch.object( + aioredis, "create_redis_pool", new_callable=AsyncMock + ) as pool_mock: + await transport.start() + pool_mock.assert_called_once() + self.assertEqual(pool_mock.call_args[0][0], TEST_REDIS_ENDPOINT) + + +class AsyncMock(unittest.mock.MagicMock): + async def __call__(self, *args, **kwargs): + return super().__call__(*args, **kwargs) diff --git a/requirements.txt b/requirements.txt index 412c907ef6..5ff2b37a62 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ aiohttp-apispec==2.2.1 aiohttp-cors~=0.7.0 apispec~=3.3.0 async-timeout~=3.0.1 +aioredis==1.3.1 base58~=2.0.0 Markdown~=3.1.1 marshmallow==3.5.1 diff --git a/scripts/run_tests b/scripts/run_tests index 8e83e796ae..66eda58598 100755 --- a/scripts/run_tests +++ b/scripts/run_tests @@ -35,6 +35,10 @@ if [ "$OSTYPE" == "msys" ]; then CONTAINER_RUNTIME="winpty docker" fi +if [ ! -z "$TEST_REDIS_CONFIG" ]; then + DOCKER_ARGS="$DOCKER_ARGS -e TEST_REDIS_CONFIG=$TEST_REDIS_CONFIG" +fi + $CONTAINER_RUNTIME run --rm -ti --name aries-cloudagent-runner \ -v "$(pwd)/../test-reports:/usr/src/app/test-reports:z" \ $DOCKER_ARGS aries-cloudagent-test "$@" From 8f92313fd82b40051d8761bd1da0d18f6ae27af1 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Mon, 8 Mar 2021 11:21:01 -0800 Subject: [PATCH 110/243] Fix black formatting Signed-off-by: Ian Costanzo --- demo/features/steps/0586-sign-transaction.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/demo/features/steps/0586-sign-transaction.py b/demo/features/steps/0586-sign-transaction.py index b30c0ce5b0..33f92fcf2b 100644 --- a/demo/features/steps/0586-sign-transaction.py +++ b/demo/features/steps/0586-sign-transaction.py @@ -54,9 +54,9 @@ def step_impl(context, agent_name, connection_job_role): # set role for agent's connection print("Updating role for connection:", connection_id, connection_job_role) updated_connection = agent_container_POST( - agent['agent'], - "/transactions/" + connection_id + "/set-transaction-jobs", - params={"transaction_my_job": connection_job_role} + agent["agent"], + "/transactions/" + connection_id + "/set-transaction-jobs", + params={"transaction_my_job": connection_job_role}, ) # assert goodness @@ -66,8 +66,7 @@ def step_impl(context, agent_name, connection_job_role): @when('"{agent_name}" authors a schema transaction with {schema_name}') def step_impl(context, agent_name, schema_name): - agent = context.active_agents[agent_name - ] + agent = context.active_agents[agent_name] schema_info = read_schema_data(schema_name) endorser_did = context.public_dids["ENDORSER"] @@ -117,7 +116,9 @@ def step_impl(context, agent_name): assert requested_txn["state"] == "request_received" txn_id = requested_txn["_id"] - endorsed_txn = agent_container_POST(agent["agent"], "/transactions/" + txn_id + "/endorse") + endorsed_txn = agent_container_POST( + agent["agent"], "/transactions/" + txn_id + "/endorse" + ) assert endorsed_txn["state"] == "transaction_endorsed" @@ -132,7 +133,9 @@ def step_impl(context, agent_name): assert requested_txn["state"] == "transaction_endorsed" txn_id = requested_txn["_id"] - written_txn = agent_container_POST(agent["agent"], "/transactions/" + txn_id + "/write") + written_txn = agent_container_POST( + agent["agent"], "/transactions/" + txn_id + "/write" + ) assert written_txn["state"] == "transaction_completed" From f7d17c60a4ab5759721fccf6a239aff5480b6178 Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 8 Mar 2021 20:15:57 +0000 Subject: [PATCH 111/243] rfc592 proof structures and unit tests Signed-off-by: sklump --- .../v2_0/messages/indy/tests/test_cred.py | 2 +- .../protocols/present_proof/indy/predicate.py | 15 + .../protocols/present_proof/indy/proof.py | 94 +- .../present_proof/indy/tests/test_pred.py | 49 + .../indy/tests/test_pres_preview.py | 42 - .../present_proof/indy/tests/test_proof.py | 338 +- .../v1_0/messages/tests/test_presentation.py | 3268 ++++++++--------- 7 files changed, 1968 insertions(+), 1840 deletions(-) create mode 100644 aries_cloudagent/protocols/present_proof/indy/tests/test_pred.py diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/tests/test_cred.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/tests/test_cred.py index 7e4cdbc7ec..2546b4cab3 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/tests/test_cred.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/tests/test_cred.py @@ -56,7 +56,7 @@ def test_serde(self): "schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, "nonce": "1234567890", - "key_correctness_proof": KC_PROOF + "key_correctness_proof": KC_PROOF, } cred_abstract = IndyCredAbstract.deserialize(obj) assert type(cred_abstract) == IndyCredAbstract diff --git a/aries_cloudagent/protocols/present_proof/indy/predicate.py b/aries_cloudagent/protocols/present_proof/indy/predicate.py index d4f2b6ec3b..ac80e037fa 100644 --- a/aries_cloudagent/protocols/present_proof/indy/predicate.py +++ b/aries_cloudagent/protocols/present_proof/indy/predicate.py @@ -40,6 +40,21 @@ class Predicate(Enum): lambda x, y: Predicate.to_int(x) <= Predicate.to_int(y), ) + @property + def fortran(self) -> str: + """Fortran nomenclature.""" + return self.value.fortran + + @property + def wql(self) -> str: + """WQL nomenclature.""" + return self.value.wql + + @property + def math(self) -> str: + """Mathematical nomenclature.""" + return self.value.math + @staticmethod def get(relation: str) -> "Predicate": """Return enum instance corresponding to input relation string.""" diff --git a/aries_cloudagent/protocols/present_proof/indy/proof.py b/aries_cloudagent/protocols/present_proof/indy/proof.py index 79b50b4e67..d575394cbf 100644 --- a/aries_cloudagent/protocols/present_proof/indy/proof.py +++ b/aries_cloudagent/protocols/present_proof/indy/proof.py @@ -37,7 +37,7 @@ def __init__( e: str = None, v: str = None, m: Mapping[str, str] = None, - m2: str = none, + m2: str = None, **kwargs, ): """Initialize equality proof object.""" @@ -98,7 +98,7 @@ class IndyGEProofPredSchema(BaseModelSchema): """Indy GE proof predicate schema.""" class Meta: - """Indy GE proof proof predicate metadata.""" + """Indy GE proof predicate metadata.""" model_class = IndyGEProofPred @@ -106,10 +106,10 @@ class Meta: p_type = fields.Str( description="Predicate type", example="GE", - validate=validate.OneOf(p.fortran for p in Predicate) + validate=validate.OneOf([p.fortran for p in Predicate]), ) value = fields.Integer(strict=True, description="Predicate threshold value") - + class IndyGEProof(BaseModel): """Greater-than-or-equal-to proof for indy primary proof.""" @@ -152,18 +152,19 @@ class Meta: mj = fields.Str(**NUM_STR_WHOLE) alpha = fields.Str(**NUM_STR_WHOLE) t = fields.Dict(keys=fields.Str(), values=fields.Str(**NUM_STR_WHOLE)) - predicate = fields.Nested(IndyGEProofPredSchema()) + predicate = fields.Nested(IndyGEProofPredSchema) class IndyPrimaryProof(BaseModel): """Indy primary proof.""" class Meta: - "Indy primary proof metadata.""" + """Indy primary proof metadata.""" schema_class = "IndyPrimaryProofSchema" - def __init__(self, + def __init__( + self, eq_proof: IndyEQProof = None, ge_proofs: Sequence[IndyGEProof] = None, **kwargs, @@ -180,13 +181,11 @@ class IndyPrimaryProofSchema(BaseModelSchema): class Meta: """Indy primary proof schema metadata.""" - model_class = IndyPromaryProof + model_class = IndyPrimaryProof - eq_proof = fields.Nested(IndyEQProofSchema(), description="Indy equality proof") + eq_proof = fields.Nested(IndyEQProofSchema, description="Indy equality proof") ge_proofs = fields.Nested( - IndyGEProofSchema(), - many=True, - description="Indy GE proofs" + IndyGEProofSchema, many=True, description="Indy GE proofs" ) @@ -195,6 +194,7 @@ class IndyNonRevocProof(BaseModel): class Meta: """Indy non-revocation proof metadata.""" + schema_class = "IndyNonRevocProofSchema" def __init__( @@ -222,10 +222,10 @@ class Meta: class IndyProofProofProofsProof(BaseModel): - """Indy proof proof.proofs constituent proof.""" + """Indy proof.proof.proofs constituent proof.""" class Meta: - """Indy proof proof.proofs constituent proof schema.""" + """Indy proof.proof.proofs constituent proof schema.""" schema_class = "IndyProofProofProofsProofSchema" @@ -235,35 +235,35 @@ def __init__( non_revoc_proof: IndyNonRevocProof = None, **kwargs, ): - """Initialize proof proofs proof.""" + """Initialize proof.proof.proofs constituent proof.""" super().__init__(**kwargs) self.primary_proof = primary_proof self.non_revoc_proof = non_revoc_proof class IndyProofProofProofsProofSchema(BaseModelSchema): - """Indy proof proof.proofs constituent proof schema.""" + """Indy proof.proof.proofs constituent proof schema.""" class Meta: - """Indy proof proof.proofs constituent proof.""" + """Indy proof.proof.proofs constituent proof schema metadata.""" model_class = IndyProofProofProofsProof primary_proof = fields.Nested( - IndyPrimaryProofSchema(), + IndyPrimaryProofSchema, description="Indy primary proof", ) non_revoc_proof = fields.Nested( - IndyNonRevocProofSchema(), + IndyNonRevocProofSchema, description="Indy non-revocation proof", ) class IndyProofProofAggregatedProof(BaseModel): - """Indy proof proof aggregated proof.""" + """Indy proof.proof aggregated proof.""" class Meta: - """Indy proof proof aggregated proof metadata.""" + """Indy proof.proof aggregated proof metadata.""" schema_class = "IndyProofProofAggregatedProofSchema" @@ -273,21 +273,22 @@ def __init__( c_list: Sequence[Sequence[int]] = None, **kwargs, ): - """Initialize indy proof proof agreggated proof.""" + """Initialize indy proof.proof agreggated proof.""" super().__init__(**kwargs) self.c_hash = c_hash self.c_list = c_list class IndyProofProofAggregatedProofSchema(BaseModelSchema): + """Indy proof.proof aggregated proof schema.""" class Meta: - """Indy proof proof aggregated proof schema metadata.""" + """Indy proof.proof aggregated proof schema metadata.""" model_class = IndyProofProofAggregatedProof - self.c_hash = fields.Str(description="c_hash value") - self.c_list = fields.List( + c_hash = fields.Str(description="c_hash value") + c_list = fields.List( fields.List(fields.Int(strict=True)), description="c_list value", ) @@ -304,7 +305,7 @@ class Meta: def __init__( self, proofs: Sequence[IndyProofProofProofsProof] = None, - aggegated_proof: IndyProofProofAggregatedProof = None, + aggregated_proof: IndyProofProofAggregatedProof = None, **kwargs, ): """Initialize indy proof.proof content.""" @@ -322,11 +323,12 @@ class Meta: model_class = IndyProofProof proofs = fields.Nested( - IndyProofProofProofsProofSchema(), + IndyProofProofProofsProofSchema, + many=True, description="Indy proof proofs", ) aggregated_proof = fields.Nested( - IndyProofProofAggregatedProofSchema(), + IndyProofProofAggregatedProofSchema, description="Indy proof aggregated proof", ) @@ -347,7 +349,6 @@ def __init__( ): """Initialize raw and encoded attribute values.""" super().__init__(**kwargs) - self.sub_proof_index = sub_proof_index self.raw = raw self.encoded = encoded @@ -358,10 +359,10 @@ class RawEncodedSchema(BaseModelSchema): class Meta: """Raw and encoded attribute values schema metadata.""" - model_class = RawEncodedSchema + model_class = RawEncoded - self.raw = raw - self.encoded = encoded + raw = fields.Str(description="Raw value") + encoded = fields.Str(description="Encoded value", **NUM_STR_WHOLE) class IndyProofRequestedProofRevealedAttr(RawEncoded): @@ -378,7 +379,7 @@ def __init__( **kwargs, ): """Initialize indy proof requested proof revealed attr.""" - super().__init__(raw, encoded, **kwargs) + super().__init__(**kwargs) self.sub_proof_index = sub_proof_index @@ -404,7 +405,7 @@ class Meta: def __init__( self, sub_proof_index: int = None, - values: Mapping[str, RawEncoded], + values: Mapping[str, RawEncoded] = None, **kwargs, ): """Initialize indy proof requested proof revealed attr.""" @@ -419,12 +420,12 @@ class IndyProofRequestedProofRevealedAttrGroupSchema(BaseModelSchema): class Meta: """Indy proof requested proof revealed attr group schema metadata.""" - model_class = IndyProofRequestedProofRevealedAttr + model_class = IndyProofRequestedProofRevealedAttrGroup sub_proof_index = fields.Int(strict=True, description="Sub-proof index") values = fields.Dict( keys=fields.Str(), - values=fields.Nested(RawEncodedSchema()), + values=fields.Nested(RawEncodedSchema), description="Indy proof requested proof revealed attr groups group value", ) @@ -497,12 +498,12 @@ class Meta: revealed_attrs = fields.Dict( keys=fields.Str(), - values=fields.Nested(IndyProofRequestedProofRevealedAttrSchema()), + values=fields.Nested(IndyProofRequestedProofRevealedAttrSchema), description="Proof requested proof revealed attributes", ) revealed_attr_groups = fields.Dict( keys=fields.Str(), - values=fields.Nested(IndyProofRequestedProofRevealedAttrGroupSchema()), + values=fields.Nested(IndyProofRequestedProofRevealedAttrGroupSchema), description="Proof requested proof revealed attribute groups", ) self_attested_attrs = fields.Dict( @@ -512,9 +513,9 @@ class Meta: predicates = fields.Dict( keys=fields.Str(), values=fields.Nested( - IndyProofRequestedProofPredicateSchema(), + IndyProofRequestedProofPredicateSchema, ), - description="Proof requested proof predicates." + description="Proof requested proof predicates.", ) @@ -571,6 +572,7 @@ class IndyProof(BaseModel): class Meta: """Indy proof metadata.""" + schema_class = "IndyProofSchema" def __init__( @@ -579,7 +581,7 @@ def __init__( requested_proof: IndyProofRequestedProof = None, identifiers: Sequence[IndyProofIdentifier] = None, **kwargs, - ) + ): """Initialize indy proof.""" super().__init__(**kwargs) self.proof = proof @@ -596,15 +598,15 @@ class Meta: model_class = IndyProof proof = fields.Nested( - IndyProofProofSchema(), + IndyProofProofSchema, description="Indy proof.proof content", ) requested_proof = fields.Nested( - IndyProofRequestedProofSchema(), + IndyProofRequestedProofSchema, description="Indy proof.requested_proof content", ) identifiers = fields.Nested( - IndyProofIdentifierSchema(), + IndyProofIdentifierSchema, many=True, description="Indy proof.identifiers content", ) @@ -632,7 +634,7 @@ class IndyPresSpecSchema(AdminAPIMessageTracingSchema): ), required=True, keys=fields.Str(example="attr_referent"), # marshmallow/apispec v3.0 ignores - values=fields.Nested(IndyRequestedCredsRequestedAttrSchema()), + values=fields.Nested(IndyRequestedCredsRequestedAttrSchema), ) requested_predicates = fields.Dict( description=( @@ -641,7 +643,7 @@ class IndyPresSpecSchema(AdminAPIMessageTracingSchema): ), required=True, keys=fields.Str(example="pred_referent"), # marshmallow/apispec v3.0 ignores - values=fields.Nested(IndyRequestedCredsRequestedPredSchema()), + values=fields.Nested(IndyRequestedCredsRequestedPredSchema), ) trace = fields.Bool( description="Whether to trace event (default false)", diff --git a/aries_cloudagent/protocols/present_proof/indy/tests/test_pred.py b/aries_cloudagent/protocols/present_proof/indy/tests/test_pred.py new file mode 100644 index 0000000000..a28956b50e --- /dev/null +++ b/aries_cloudagent/protocols/present_proof/indy/tests/test_pred.py @@ -0,0 +1,49 @@ +from unittest import TestCase + +from ..predicate import Predicate + + +class TestPredicate(TestCase): + """Predicate tests for coverage""" + + def test_get_monikers(self): + """Get predicate.""" + assert Predicate.get("LT") == Predicate.get("$lt") == Predicate.get("<") + assert Predicate.get("LE") == Predicate.get("$lte") == Predicate.get("<=") + assert Predicate.get("GE") == Predicate.get("$gte") == Predicate.get(">=") + assert Predicate.get("GT") == Predicate.get("$gt") == Predicate.get(">") + assert Predicate.get("!=") is None + + assert Predicate.get("LT").fortran == "LT" + assert Predicate.get("LT").wql == "$lt" + assert Predicate.get("LT").math == "<" + + def test_cmp(self): + """Test comparison via predicates""" + assert Predicate.get("LT").value.yes(0, 1) + assert Predicate.get("LT").value.yes("0", "1") + assert Predicate.get("LT").value.no(0, 0) + assert Predicate.get("LT").value.no(1, 0) + assert Predicate.get("LT").value.no("1", "0") + assert Predicate.get("LT").value.no("0", "0") + + assert Predicate.get("LE").value.yes(0, 1) + assert Predicate.get("LE").value.yes("0", "1") + assert Predicate.get("LE").value.yes(0, 0) + assert Predicate.get("LE").value.no(1, 0) + assert Predicate.get("LE").value.no("1", "0") + assert Predicate.get("LE").value.yes("0", "0") + + assert Predicate.get("GE").value.no(0, 1) + assert Predicate.get("GE").value.no("0", "1") + assert Predicate.get("GE").value.yes(0, 0) + assert Predicate.get("GE").value.yes(1, 0) + assert Predicate.get("GE").value.yes("1", "0") + assert Predicate.get("GE").value.yes("0", "0") + + assert Predicate.get("GT").value.no(0, 1) + assert Predicate.get("GT").value.no("0", "1") + assert Predicate.get("GT").value.no(0, 0) + assert Predicate.get("GT").value.yes(1, 0) + assert Predicate.get("GT").value.yes("1", "0") + assert Predicate.get("GT").value.no("0", "0") diff --git a/aries_cloudagent/protocols/present_proof/indy/tests/test_pres_preview.py b/aries_cloudagent/protocols/present_proof/indy/tests/test_pres_preview.py index d81a79e3bc..c150d80c43 100644 --- a/aries_cloudagent/protocols/present_proof/indy/tests/test_pres_preview.py +++ b/aries_cloudagent/protocols/present_proof/indy/tests/test_pres_preview.py @@ -281,48 +281,6 @@ def test_serialize(self): } -class TestPredicate(TestCase): - """Predicate tests for coverage""" - - def test_get(self): - """Get predicate.""" - assert Predicate.get("LT") == Predicate.get("$lt") == Predicate.get("<") - assert Predicate.get("LE") == Predicate.get("$lte") == Predicate.get("<=") - assert Predicate.get("GE") == Predicate.get("$gte") == Predicate.get(">=") - assert Predicate.get("GT") == Predicate.get("$gt") == Predicate.get(">") - assert Predicate.get("!=") is None - - def test_cmp(self): - """Test comparison via predicates""" - assert Predicate.get("LT").value.yes(0, 1) - assert Predicate.get("LT").value.yes("0", "1") - assert Predicate.get("LT").value.no(0, 0) - assert Predicate.get("LT").value.no(1, 0) - assert Predicate.get("LT").value.no("1", "0") - assert Predicate.get("LT").value.no("0", "0") - - assert Predicate.get("LE").value.yes(0, 1) - assert Predicate.get("LE").value.yes("0", "1") - assert Predicate.get("LE").value.yes(0, 0) - assert Predicate.get("LE").value.no(1, 0) - assert Predicate.get("LE").value.no("1", "0") - assert Predicate.get("LE").value.yes("0", "0") - - assert Predicate.get("GE").value.no(0, 1) - assert Predicate.get("GE").value.no("0", "1") - assert Predicate.get("GE").value.yes(0, 0) - assert Predicate.get("GE").value.yes(1, 0) - assert Predicate.get("GE").value.yes("1", "0") - assert Predicate.get("GE").value.yes("0", "0") - - assert Predicate.get("GT").value.no(0, 1) - assert Predicate.get("GT").value.no("0", "1") - assert Predicate.get("GT").value.no(0, 0) - assert Predicate.get("GT").value.yes(1, 0) - assert Predicate.get("GT").value.yes("1", "0") - assert Predicate.get("GT").value.no("0", "0") - - class TestIndyPresPredSpec(TestCase): """Presentation predicate specification tests""" diff --git a/aries_cloudagent/protocols/present_proof/indy/tests/test_proof.py b/aries_cloudagent/protocols/present_proof/indy/tests/test_proof.py index 7e4cdbc7ec..1dc1ba1253 100644 --- a/aries_cloudagent/protocols/present_proof/indy/tests/test_proof.py +++ b/aries_cloudagent/protocols/present_proof/indy/tests/test_proof.py @@ -1,131 +1,235 @@ from unittest import TestCase -from ..cred import ( - IndyAttrValue, - IndyCredAbstract, - IndyCredential, - IndyCredRequest, - IndyKeyCorrectnessProof, -) - -KC_PROOF = { - "c": "123467890", - "xz_cap": "12345678901234567890", - "xr_cap": [ - [ - "remainder", - "1234567890", - ], - [ - "number", - "12345678901234", - ], - [ - "master_secret", - "12345678901234", +from ..proof import IndyProof, IndyPrimaryProof + +INDY_PROOF = { + "proof": { + "proofs": [ + { + "primary_proof": { + "eq_proof": { + "revealed_attrs": { + "legalname": "17452692860386304610406162367026442418073686683521403362495551314143111443652", + "sriregdate": "84794510088035165945015616272801238926353986227884872357629651520394786581106", + }, + "a_prime": "32278501255905171704742958460322893511637162983431935430586198860290226716940011148630099119208052729112758092925039150874617283183927448645371882581685088575199866941867151165491046651967119052964806526135854070644719112949280568148440903644904710068267486800869485749248349461501620728165451495601555669946384333482966245666190278766177061903214027961074019726272411064340093147955497074304630819094166118938615860755615625023078371588293961721725584452546589831014718739623649233248030194356309258161615125464664035123726423139356572242556757045992526062527483806001865085714219252862005117598919151259032522148889", + "e": "35581451552777769685033243384248421572266001898564008605825317561882904440337036643694472157139199169811306345839082839123770144966895910", + "v": "828135525411477722854522947279129529367824493967974661374467145531948008574830974054079283576780714374153012435459948298649103950012856757893702662580316994202540537968066097584782835786817798593382226962016632660559415029091269783131619661150305144161138937512000672990134231506531835018380842894907585523024600357659856760842088978208463181270540996881521313384300664824864197511211768635380758711304109184849426935800528766783989679813547280761825711586667758612892241157731649649671977796509420405204721364323414531438941036273864593005341987433237851455813509580997247737506421671498820538106999006733109420915932517313399525288279220340543074911283732812241240611988838828615608276736374076503183912535082267877825448476018260528143644362338273289271933480597163222466868740551402490479042036399483966063683273100741081681151652755476630114805470239996939074679562728379896561493489436212716612638391498204887984935", + "m": { + "jurisdictionid": "4688090583250683500407492066026666992233534897866356770488663088356350501628623200115192654864645776575059205900108991424870893822763046867291093307598457278513670200299320511463", + "master_secret": "5765990116706384142055090460230893901254240108285092077892244151401046441144630456667590155248838177142351186285450410555444057303439562237518662184356939898507515088151665055566", + }, + "m2": "2119622127109596166553032536805743625111577193704785214102429084853473314741322393298752334122295828925696657072866449946647347230484843925603741440638027", + }, + "ge_proofs": [], + }, + "non_revoc_proof": { + "x_list": { + "rho": "1381A1FA6226405CD4D778ECE06598AAE0BE53257E68A6C2B022BAB357ECF06A", + "r": "0917CA5871E4FDBB8A2B9897030D2DB42A6C0240B3A58251203773D6E4431A36", + "r_prime": "09FB5273DC4220BCB831D50F3E17E1B5BFCA7CA77479E1E055157D7EC2840218", + "r_prime_prime": "0DD2B81306168752C811BF02D8898EDDD5271B67D17C42A709579124795A39FA", + "r_prime_prime_prime": "0D3CF03C63E9BF905CB4944C5AB14C3B0B07E45AB37FCDEF08132BAB949EAC28", + "o": "0780B5E65B610F742577CFECC2BBAC029E89F85888FE4155396AFDA95248FA70", + "o_prime": "2167D381A357AD436DA6FF114736DB030F43624E69DFE163E67F95819A949A07", + "m": "20420CD1D5D1015F212466A14FB91BDBD9F193010697C7A41A561F22FFA50A73", + "m_prime": "0BCEFFDF86A7F99B2BD6FDCF55E5FC8A1AB792B573AC729E62CB9365894FC49F", + "t": "121FF75FAF8659D2FAF82A106890EE1A7D55BB97837B75DF04A6EB73E2FADC11", + "t_prime": "0D0F7FA1D8D0CDA5CEC6839462449880960EECC5D5BE2492DC784636596B15F5", + "m2": "188DF30745A95D0784171FC6C12BA0F1BB8B55AAAB0BFCAA31BE6BAC9FB000F4", + "s": "0A5FBEF4E5381FDD3AC873A4C33F0A7CA2F98723C6C277B178EB475DC7F62D2B", + "c": "058276E1EEDC087D577006BAF47D620808F05A51523683CD7574007690C8F634", + }, + "c_list": { + "e": "6 5D7859942AA7C79B39B184BF6EE34F6DB90FBF13C67CD625582A087AC829CD7E 4 14CDD3630ADC7709CDF0725797887FDBFBF461D78D49547BAE0391D08CD948D4 4 1C5E7F30EC2E00F9270F48EB1FD1ACBBB38FBC57437B92CC1222A627FD38D18B", + "d": "6 63C2A154DC37F522876D70D540F8973F139F61B7D9A45CA0ACD4111FC03466FF 4 21C7AE31847BBB8DE7CA65C42618ECD7E9316F12E1B200313D64CD1EB3886920 4 26704886831DC1F7F7BA0798464F79F46C6A71F48DB1CD2E17552E72B4A62D2C", + "a": "6 370625C7C0A9B91E90406C632A7094052B59404D939628FF430B41AB5D7631C2 4 43FE8D1FB3DDEF09BF40ED91C560B1BB64C3C7757BE645F57ED73730144E1B4D 4 23FC00129E9331CB517D12B69EBED153164D0A7B50182529D23AC2E44B7601B9", + "g": "6 477DE87612F38F4FD17972C138B29E0D6F3B19E00BF51202DF292AA5C7407B18 4 428091929CC1D5BA454AA6E08D2E6E22EA0194318F9A6F725308050EDD6EEE2B 4 345CB5EA0DE020ADA9DAB2D33A032FC43E1ED38EF783C4FBC50EE3259EBD828C", + "w": "21 10DE65930CDABB708343BC4698741CE2368AD7678D9E8E92D556617FF9F1C0F82 21 14280B106C12058E5FA8CCC384C4FCB905C0FFCFD775A9D90C8A9B5EADB5F00AF 6 7B727DF8F7763C31916E0500AA4B827D3FE7C8D09F8781EE6D1114610CEE02D2 4 08055D795A3FA8A310CE2D1D35ED4B43483DC30475A340F6AB77E60891AB88D7 6 717DF6D200998E0FC9626D2C6FAB791A9CF1060EA66F55667E1097B5F9D9651A 4 2439CCEE5AEB9018479E2F81E1ACBC97B993A5072EC0454A2C399C876544CF7D", + "s": "21 13904BB2C505D54B72C6AEAF1D963B998514D32E529BB8DF3D206EC10D8062E83 21 137621CFF97C9387F55E2261908D4261109C482BD0E0EEC2F0B659FB7C06B5B3F 6 6ADC283E13D215EE2F5FBB6D13CC4A10C433E6C34082F6649CC1475119D53FE0 4 17B097D1FE378BBB570AFB54D2D54A716AF1094A48DB25B1B8E736ECEE1C6A37 6 77BD003ACF6359795E9D5AFC8D2C2F92B5D0B1A17CC8894BD0AD80893DCC3145 4 1A23B81929CF9E9B8F06452E54544A18E96CCD208A9B57BE5C16242291D4F9A1", + "u": "21 1244078FABBEC377E653E9A9AA4D440B2629BCFC81BBE5F340F6CCAFF482C5F64 21 141638A50019F7E5C43AEAB9C08A00CA6C7A583CC9E21721637A414563AF99FB9 6 894AE47A984A73C03C35FE26002AB423D880104308CF659EBC802B428474F3D0 4 2FE5FA6F02EF8560B1A110EF469B6931C647A85CD99553FD66F19F0A84860B3D 6 6B224C57D9D733D98C790AAE59788E543F0B601E74332045D6D5A48BD2BB5E78 4 328ED59D6112D424A5F9EB1B53A99A1F1B695C201AAEED9FB5495756902DE885", + }, + }, + }, + { + "primary_proof": { + "eq_proof": { + "revealed_attrs": { + "businesslang": "33232985271439191533377453938110666726604825575392012661293897468349434596941", + "legalname": "17452692860386304610406162367026442418073686683521403362495551314143111443652", + }, + "a_prime": "22833405208527909805658627885236743099336730027825383472338187366214272320337675330990871468796305703537931344033496173776963733705008698600674612254082652713935912645330450683745452495876678273146518048789998721046334776140574708429790975677611594817588065443920567166228081407726989775436653333217881175657845993033938320108749200873171887106723038728373011874060294858910535397084640450131604883364402761538578849447322016884121681512954350064697804811600546281829928443200867026343486921907911964121739038205696088198316492988705815389566788346860454163848001286839771027707507085608676234176821335949882609151879", + "e": "26211430566728236949472934666404280381429729589602985581360422640738650344423199293303624818679368126760453576661571079887786380504909424", + "v": "1183284034125513434526626632453906974024524122355179523163126038427036805660983835291935114724299313011784006409952674194385609314327918950991009227419001790455124235810281676445556361348409120531467227183568063899352946599694953555292292880707030808509851961755055299318374725899096891634542198204148975182963583869495598072844883575645558703940563599413472042728588455433115752776418904275765036927947162756648980766277698357542965839090542945779559326248044767339087391276187923390193967764307014239203880241940667352417447173202287290314079589500282199297479084444031821076350230144839969982651461307607892468488827083453775427345643243839043737086138612353717748072909685557621989119812355961743302809042378983830233918558000415683431547466069557881763682741302771877937684330818471653540484887846945607347348992231866758380480694787988464880611417493797868733007451847225767128713573784142146719971958554655166517625", + "m": { + "sriregdate": "7575840339790901971126627968837082098626881291739401780806831297827045216866658144901928397498006110265170328305919646086754771869317780632931473346911624167001626838610534568843", + "master_secret": "5765990116706384142055090460230893901254240108285092077892244151401046441144630456667590155248838177142351186285450410555444057303439562237518662184356939898507515088151665055566", + "jurisdictionid": "14096839792687668090922075920092837277326004351667261353604206746884866410340361120653504934566708275430326153729312326004083085529265517108356327181857586189913372170459175729709", + }, + "m2": "2119622127109596166553032536805743625111577193704785214102429084853473314741325255195002226364320268187061126795878932443225594537196014952825318487949064", + }, + "ge_proofs": [ + { + "u": { + "3": "14214025934608562077646947167995470869060367847484688477838543465198741322418093474815111495367149686315148847259831278865241365209384224232954423346984854905942783706673160208640", + "2": "14023370669565473291694092130357532707361476334542375350079348190834535906680939872574620435509920568784041847935643881238594980373831048766809683781827213987859676408535849428069", + "0": "7342720149800723920049085527885265335922694657934633887893010535330060404347356228131389857905259847481527908547866960993849483727806784544271817532383560767510252739450820430297", + "1": "12930108427693598462294132989946197198385148171877437530363114996696998329204786445472597167502572414089948183256933231462127117088661956490732350007130196957027682927664007849658", + }, + "r": { + "DELTA": "2276011444312040342177562010127944407206471771850161462011654696029342185527024189779503642466540879503375664970692496221292943337880107380182197681199735646409639460310954096256041883426178537558699617219326605585528418106779400398247492051144494972428159314152305402374525943058962489706836275018074879534905118582562522427229900853927999927959921074680199095872894611297374460046245988175067781594445231402555436922926356352049679447076072906691029517188855451501709086551608514024649309244081422609087275812131326961124014262659223943820640287328415882873680732167765640462280199146540904634993199545501393181617445462059091954661868502783750376727414888895378635536610512795047161770800173743978258282815323798995", + "1": "145149166200984508754979331730271650691795059798885849413005398737646540673572796195049028576636858430003736791937280395933429790146358370300465795044845619413090172147042178825796242296189459000963168675142944905821133466353450895170166263470384194507284899124088802588181666362822241089334957725837879453009186865584587784193266176491276610018054057024541423659182491586897069427691457562403438267402863460964331448616927445294885139172523914248218566405910602793346981980875592380295812060121717266020529176064925967534742106030667826236337946961590474915610622834934925872041458052270951297851073431816315266795471496701719035598544703542900159094238036317894294440680846865411989382193271218550053346736524378090", + "3": "488242262482251066336600519024239149920945820909803682984138843905329976488753317398237110919606489927089359558153542999969293897450152653769523734260465352344018467036352374271817223858693824706082267934514106409897025269132807613593510744710198445233676405461706854538390095368608374150646804968541094830749611323284157217580822910471203232502232920449193845097941371165010773542220021680961857593548858434528770834197814112784764573149604514968309297299129422430022731158982111734276335932748703841355647540221220235245628861109415553677906418350890407336322231455024554973355128185109292909400204653100022155834264558113422742374787498432051156180056915579661389036207137633808397107069334955079021718840046475740", + "0": "1889616213417675662027875323831687679606977901203237164062977174534795712692142405694518356428677653465183695707520741824048628171958421933228302981587300939585899561556164553686639041366495357346706024068593024482876446314389439808067174943877530921644465721688762078031523444351973815942452033520624310772876299834533474980944254684225959838998330440672465002366831279275338579813986121501781838397398509803631315760442180955079109042428151699266385669936917334768811328989734199091636249060358340285444710581471460477163814472432604767781583584634327120526125679621718877544594062397774670136205301735294209068059667059035113840554190788593424842476782037779774100712520753135034354307478795855384146102846291422325", + "2": "2256303315125016834439436777492999741791160377376603220468802552504141866513037544234087214702615599485347175200313859812001977863781904875946481595504988017384259236184266088270426514521281378457507050789483814801478499595933999464167811424628487541649424258526511079312011144782002240713571565990349188794909974154062490438204229646615941281994590538687808662516031195951250068887811909625228470867024144015034321118956157816308562072476341838958442831936361331061849739039582311599006782736574367184119332638156053506860974276436399008420893534094538443949848303215619624731404149943675070922177701636329363568655502418065808003716609101369409081151890753329575485528878386404856836884965131088809939644518239521714", + }, + "mj": "14096839792687668090922075920092837277326004351667261353604206746884866410340361120653504934566708275430326153729312326004083085529265517108356327181857586189913372170459175729709", + "alpha": "39732014402544066666305752691257351436478792500315973953060895408903156945745295298481231505551106605612400455996248942179005054886204630409163784217146177530904446243078206759306905448438288136897900207969449133498955545726742733646146882695835058150428914834247244807298219323871888394264705707380276719195247948412936421225065274267698430423334359679052053736739609684520324626677167709830296370179401801362973146687673580211321931455713913794645528599190941480829778662321575539160526412685608729405724868316856673561351275842908701968672147908119404226954713721899039602551167566571471365237859825455158944264075087922347837949928215646727196175315950375225785471245890970883732544673245325805751881316942316012048005298720143305095369445267837301634518621030789511255476734017276019872535773209546564817594583596289579731197870049561", + "t": { + "DELTA": "24507807620968538169926786257196669663829628674945176548989559869833453290754619620752886336680152859587107093453995882927471852312781833873622867489011952726714264538573904721218082147870198466108957261768826812812170727337972103344693646816412861333858987157750482373613343951980503221206042917670615376266085322204366168616039760714683928191729787727342391756728901601834014076830881170568815795080648062044728985406683922625366015906135480407893500533141362120361247547598564354037737202959092025827091301849750648379238398435389516356932367622595223731492389505666326468305427861559849457127890963973993229331775", + "2": "76047176608221028468519068489304314238068927063738045321887967648199391545767995466193781936836238600070583986803314771247022831681027057050992136857533056266939849412222984164422800005541618825953123158190447019477513008894322693103132726884636591844788538677508747959148326195695369091593543905012989818594686325738432314327818921040787184442041944415711923150079925346862529052384000072885255838453428376447734488419675582259159543112005228841298206953170182265488107572659064310422482701100783064784028501120021033348231889240639718001161677021014013250819831484739561572871065868606265352688805847775729983323490", + "0": "50679642745295171923754683706358400214215498217155467843053196976352383406649124593469550219051236944021392439227799246685393814878606896980505288554698380886315461386392767072850002305225877469317997689653935634475889777757078925967337801390999183907627565604245032760367997623083771902974154252956308592766930461005004633581391988846694633161601793254249152437137771845388433159461685101301008637318307727456090126403781067470287661852382485122721922020212328871373424587102594010853318355840386896946223724584604343345399290890382974188908034054992994126975461059705330501374087167313570051240874831686860535148690", + "3": "66928337729696351875172133217609950642698331512240958210447316634445698868251665776819872201185607560694862241492988131882627133504316351013134163298788094339304327928726132791872357561275025379458234234053405489065087803384700395514204215458341958560097080133736340662119856219302296170105994082472398049039676829832979944368411772609308307954514698868126341775937530639178527097257195450374909072450223394668043707074275108199486996243536540009813015336466206178050408983489515950391026045067133630454696849861957051457866759646668437115244581106699290519193884280115629711024195319359748492628008587094999803907922", + "1": "16240527026356196137054497550786075095784627443121029704904628658834445965912560629125780050088347057023945024821470223012907572705360383627912546405536939585080156986943699251080108631292150906072925545896153910943611031783144627498463176086496637341332138643393971992105181064495710454434251712758795193299697974135090441014333990840372353673648818587434278396053075776482004040551215221410252915766622684129115640966096470571261130636873342630326061726100141042504104637584319960956869273304261208793038741148332173066892414396252690977873698574706269672026291285492456514196769163274660188030603118109409575042683", + }, + "predicate": { + "attr_name": "jurisdictionid", + "p_type": "GE", + "value": 1, + }, + } + ], + }, + "non_revoc_proof": { + "x_list": { + "rho": "1F4D25232DBDD4396751A11CCDF58EB92BD3D88C7A9EEA397B31032763FA612A", + "r": "1995EA715D057F29E9DF0C00BB94D8E7B3300B89D4AE0AE5FDBE9CC18ACA3C00", + "r_prime": "11A611A0C0CF8179C0E454BFE9BD4023FA75EFBE723EF4831EE2B819C8284436", + "r_prime_prime": "0C02A6F3A338F0BAECA78B8BAB2F51A18E2E66A1DBEF44305F4B9E986304F039", + "r_prime_prime_prime": "194CB95AC8837B5AF27A480BB2677F710C166ACBC76125DBD0972F5D656D708C", + "o": "242A0D9550CA19819A4731BADC67A95EB57390E5F63177EB37C777C2D194B857", + "o_prime": "0AD930637E1DBABC1A072F00382C64946384025CE423403BDC4B87F1D74C71AE", + "m": "24DC7C3E16FEBD6C0F1AE0BA9BCEA64CDDA97CD9C6BBE668371A36136A92BBA1", + "m_prime": "2061BF9B182EFECFB26463938BA24C7D2D7367A7F961185EA8AA48B7027F703B", + "t": "0A2622F19A15442FCAF3DD5760B1E72312E81FFFDF29348E2B155C6AD5C3314F", + "t_prime": "20B3423B69FB4292C3F25C4F2916FCC55F79BAC25FB2E86781705FAA2543151F", + "m2": "1EE1B9A6FFD96A061631208FDC0FCFB92B3FCAE9F5E2D68EA9FC9F4ED5FD83B1", + "s": "071EBD7E181313D80511D26357DFDA68EFE61FF1E49A197CDDA238BFD919FBF1", + "c": "035CC19E347CFF534C05E894BB8132A5E5E734B370724D241D6D3AAA3D0BB1E0", + }, + "c_list": { + "e": "6 4ED73798B056F7C18552BD7941052CB983CE664B2E6C4D1FF9C54027D99E0990 4 199AEBA72D16AB760E4F59A39118EB37D7C277A203B9A101EA5E2B6665A0934F 4 2E9DC7AF3BEBD094DC2BBB35EE8DA903876B32AEA2B6FF912290FBB3EEDE29F9", + "d": "6 5FCF702955B8D291668F9CE390974551EA5C4C1005F2B51308405539A6EECBFD 4 3B7CA4CAE9CADAFD50EA6086F46D087AA21D8FDCF63642D69FB698B837457649 4 22FF97065821FAEE7EB8C1E43B729286ADFBC3737E9AE6EF8293375ABFDE3419", + "a": "6 3AE88157825BC0E106C5CF3C5A93F5A502E22ADEB022D807AF6E2DEC96F6782E 4 0F4C6F27766296E42416F34375BC40C2EB85402DE6A7B7D2AAFF70F37842E6DC 4 0B065C82FF0E7E14DEFC3CA1E11AB41F0FE3C7A42D29FBB0825B370490601590", + "g": "6 333B3C68202913B6504F95CA75456E9183177BECDA2664777E3169DAFBC91800 4 23F577FBD5751BC0DC3BE1453758B69ADB2BF7F1F8C2BFB7AC10A7829A97F849 4 0D01A6FC5442DAE3D9960D1846DDA5FE87463B06970840549A517574BECA7D6B", + "w": "21 1264C72BBBB93BA1C9E33EEA06B5B7430AE1AD92FEC33AFD31806A3D36EB8D7D4 21 1315520B29BBA556225A889DD94139CF09CBD4AEA52E25F4D2261C96EBC9C387A 6 544948B78028D965166AB0D72EE4F42F5BBFDE696734D2742914A95B4CFE1292 4 1E679EFE7019FFFB99853EF4A7302CD9FCD0A4A4D600E7A3EEE3462D1932E706 6 7DA3017F7ADD0CD6BC5C58706EF39F8F982E35ECA342E6E5CD8D2F9C9C0447C4 4 29DE1EEE64DBD075FFF48C97B94E54543556BEB9A571FFA81F8F40ABC4B1E092", + "s": "21 1303A150FE2A205C2E5C41B79FE0FC6BECA41E01395850E09AE2607728A4C325D 21 110BD3B3458D3E9726813C079D41867F5387D6C719E6E8DE8CD6F54AB922233F9 6 755AE2489963E7EA28DE09E84416388F14AD54F854FD948F7317572435BA812E 4 188994E6AF6F0B02E47F1E5D2028BD0ECF12A566BD91B790331DD56CC6BEB3C8 6 5BB8902625C93CA36CFD6BFF797C5C0A91E45B036A7BC82311F2CF045BF6E8CB 4 1ABD443497615B36A6E783BCFF373706E4AE87A0CFAB2C73F9483F8089D2F835", + "u": "21 12022CB134154E2750D0B3953FA64E94FB7A80077E40E9FA642F81CA6B1E008F9 21 1176C5A5F3C69FC1BF64DCF6EEC66972F07D5552B773913BF1CF79D03806837B4 6 7F62D3DE296AE18601CA7C0E771C00B1ABFE6247B6547275D08962B29B4D19E1 4 42A100ED48BDF5FA9CD54170AF96B10E76C734A89358BB56680924E232BB6D19 6 5CE5233C06C0A912554CE7C40D8413023481CDDF8DF68EBEB8F27F104661D741 4 033EC06C452DA00A4458E58D2F9D7FEE5394039F98F55B336A09E59CFEAA574B", + }, + }, + }, ], + "aggregated_proof": { + "c_hash": "64284694157010500037871584756977982783162678320180085811668324501813312008648", + "c_list": [[67, 46, 45, 63]], + }, + }, + "requested_proof": { + "revealed_attrs": { + "20_legalname_uuid": { + "sub_proof_index": 0, + "raw": "Tart City", + "encoded": "17452692860386304610406162367026442418073686683521403362495551314143111443652", + }, + "21_businesslang_uuid": { + "sub_proof_index": 1, + "raw": "EN-CA", + "encoded": "33232985271439191533377453938110666726604825575392012661293897468349434596941", + }, + "20_sriregdate_uuid": { + "sub_proof_index": 0, + "raw": "2019-04-11", + "encoded": "84794510088035165945015616272801238926353986227884872357629651520394786581106", + }, + "21_legalname_uuid": { + "sub_proof_index": 1, + "raw": "Tart City", + "encoded": "17452692860386304610406162367026442418073686683521403362495551314143111443652", + }, + }, + "revealed_attr_groups": { # this part is a graft to exercise attr groups + "18_0_uuid": { + "sub_proof_index": 0, + "values": { + "endDate": { + "raw": "", + "encoded": "102987336249554097029535212322581322789799900648198034993379397001115665086549", + }, + "id": {"raw": "3", "encoded": "3"}, + "effectiveDate": { + "raw": "2012-12-01", + "encoded": "58785836675119218543950531421539993546216494060018521243314445986885543138388", + }, + "jurisdictionId": {"raw": "1", "encoded": "1"}, + "legalName": { + "raw": "Tart City", + "encoded": "17452692860386304610406162367026442418073686683521403362495551314143111443652", + }, + "orgTypeId": {"raw": "2", "encoded": "2"}, + "busId": {"raw": "11144444", "encoded": "11144444"}, + }, + } + }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {"21_jurisdictionid_GE_uuid": {"sub_proof_index": 1}}, + }, + "identifiers": [ + { + "schema_id": "WgWxqztrNooG92RXvxSTWv:2:sri:1.0", + "cred_def_id": "WgWxqztrNooG92RXvxSTWv:3:CL:20:tag", + "rev_reg_id": "WgWxqztrNooG92RXvxSTWv:4:WgWxqztrNooG92RXvxSTWv:3:CL:20:tag:CL_ACCUM:0", + "timestamp": 1554990827, + }, + { + "schema_id": "WgWxqztrNooG92RXvxSTWv:2:sri:1.1", + "cred_def_id": "WgWxqztrNooG92RXvxSTWv:3:CL:21:tag", + "rev_reg_id": "WgWxqztrNooG92RXvxSTWv:4:WgWxqztrNooG92RXvxSTWv:3:CL:21:tag:CL_ACCUM:0", + "timestamp": 1554990827, + }, ], - "nonce": "1234567890", } -TEST_DID = "LjgpST2rjsoxYegQDRm7EL" -SCHEMA_NAME = "bc-reg" -SCHEMA_TXN = 12 -SCHEMA_ID = f"{TEST_DID}:2:{SCHEMA_NAME}:1.0" -CRED_DEF_ID = f"{TEST_DID}:3:CL:12:default" - -class TestIndyKeyCorrectnessProof(TestCase): - """Indy key correctness proof tests""" +class TestIndyProof(TestCase): + """Test indy proof marshmallow integration.""" def test_serde(self): """Test de/serialization.""" - kcp = IndyKeyCorrectnessProof.deserialize(KC_PROOF) - assert type(kcp) == IndyKeyCorrectnessProof - - kcp_dict = kcp.serialize() - assert kcp_dict == KC_PROOF - - -class TestIndyCredAbstract(TestCase): - """Indy cred abstract tests.""" - - def test_serde(self): - """Test de/serialization.""" - obj = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "1234567890", - "key_correctness_proof": KC_PROOF - } - cred_abstract = IndyCredAbstract.deserialize(obj) - assert type(cred_abstract) == IndyCredAbstract - - cred_abstract_dict = cred_abstract.serialize() - assert cred_abstract_dict == obj - - -class TestIndyCredRequest(TestCase): - """Indy cred request tests.""" - - def test_serde(self): - """Test de/serialization.""" - obj = { - "prover_did": f"did:sov:{TEST_DID}", - "cred_def_id": CRED_DEF_ID, - "blinded_ms": {"...": "..."}, - "blinded_ms_correctness_proof": {"...": "..."}, - "nonce": "1234567890", - } - cred_request = IndyCredRequest.deserialize(obj) - assert type(cred_request) == IndyCredRequest - - cred_request_dict = cred_request.serialize() - assert cred_request_dict == obj - - -class TestIndyAttrValue(TestCase): - """Indy attr value tests.""" - - def test_serde(self): - """Test de/serialization.""" - obj = { - "raw": "test", - "encoded": "1234567890", - } - attr_val = IndyAttrValue.deserialize(obj) - assert type(attr_val) == IndyAttrValue - - attr_val_dict = attr_val.serialize() - assert attr_val_dict == obj - - -class TestIndyCredential(TestCase): - """Indy credential tests.""" - - def test_serde(self): - """Test de/serialization.""" - obj = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "rev_reg_id": None, - "values": { - "busId": { - "raw": "12345", - "encoded": "12345", + proof = IndyProof.deserialize(INDY_PROOF) + assert type(proof) == IndyProof + + proof_dict = proof.serialize() + assert proof_dict == INDY_PROOF + + """ + def test_it(self): + x = { + "eq_proof": { + "revealed_attrs": { + "legalname": "17452692860386304610406162367026442418073686683521403362495551314143111443652", + "sriregdate": "84794510088035165945015616272801238926353986227884872357629651520394786581106" }, - "legalName": { - "raw": "Muffin Moon", - "encoded": "13419834198651328645901659586128164", + "a_prime": "32278501255905171704742958460322893511637162983431935430586198860290226716940011148630099119208052729112758092925039150874617283183927448645371882581685088575199866941867151165491046651967119052964806526135854070644719112949280568148440903644904710068267486800869485749248349461501620728165451495601555669946384333482966245666190278766177061903214027961074019726272411064340093147955497074304630819094166118938615860755615625023078371588293961721725584452546589831014718739623649233248030194356309258161615125464664035123726423139356572242556757045992526062527483806001865085714219252862005117598919151259032522148889", + "e": "35581451552777769685033243384248421572266001898564008605825317561882904440337036643694472157139199169811306345839082839123770144966895910", + "v": "828135525411477722854522947279129529367824493967974661374467145531948008574830974054079283576780714374153012435459948298649103950012856757893702662580316994202540537968066097584782835786817798593382226962016632660559415029091269783131619661150305144161138937512000672990134231506531835018380842894907585523024600357659856760842088978208463181270540996881521313384300664824864197511211768635380758711304109184849426935800528766783989679813547280761825711586667758612892241157731649649671977796509420405204721364323414531438941036273864593005341987433237851455813509580997247737506421671498820538106999006733109420915932517313399525288279220340543074911283732812241240611988838828615608276736374076503183912535082267877825448476018260528143644362338273289271933480597163222466868740551402490479042036399483966063683273100741081681151652755476630114805470239996939074679562728379896561493489436212716612638391498204887984935", + "m": { + "jurisdictionid": "4688090583250683500407492066026666992233534897866356770488663088356350501628623200115192654864645776575059205900108991424870893822763046867291093307598457278513670200299320511463", + "master_secret": "5765990116706384142055090460230893901254240108285092077892244151401046441144630456667590155248838177142351186285450410555444057303439562237518662184356939898507515088151665055566" }, + "m2": "2119622127109596166553032536805743625111577193704785214102429084853473314741322393298752334122295828925696657072866449946647347230484843925603741440638027" }, - "signature": {"...": "..."}, - "signature_correctness_proof": {"...": "..."}, - "rev_reg": None, - "witness": None, + "ge_proofs": [] } - cred = IndyCredential.deserialize(obj) - assert type(cred) == IndyCredential - - cred_dict = cred.serialize() - assert cred_dict.items() <= obj.items() + xx = IndyPrimaryProof.deserialize(x) + """ diff --git a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py index e23721d9b7..fad304227e 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/messages/tests/test_presentation.py @@ -16,1649 +16,1649 @@ INDY_PROOF = json.loads( """{ - "proof": { - "proofs": [ - { - "primary_proof": { - "eq_proof": { - "revealed_attrs": { - "player": "51643998292319337989293919354395093705917445045137690661130646028663839100479", - "screencapture": "44349549498354774830429200435932754610833874667251545521048906777181334567815" - }, - "a_prime": "99225796363129499107604366233301127916801972855861917994091548556785477066502130364812678473656139160841991495705941663142249404264191136660967090000331013804872112053828446231809361437830836319053659748356431221803865514426935793809384997872056337751830616632363564742453553492463002290910985263848243042219992778220569301291770422529015543837803240796109915443060533925706334481433988647943330126921627882396088865869804752372160284361135101444121353171684921889674279086653358367368851378746682682017641177839566946615542088910003479771742848013401738739436319413416417782857315505655723403098381845469564775640588", - "e": "28484172708495089688591061270972815967199639781170588390863001534745829714460906432474939589201651469315129053056279820725958192110265136", - "v": "310372334186966867767394517648718214703060542831249429833856393387373123821840122943078768258679350688701210557571314095023780969910990133962277141702540794078947706642651608840502392669887782435197020314627659897216201821476693212776945691916847975724720629133302982522740709659244048850715861867163370042548490158397753134853555833520807793752332629616695158900467048806794540963892785661237500652426649694476839734543710070772542960644069106447786837388953205349573770161012926822761642443603379863014577283739370081232865330663720633954578384601051328768426422459925307605555673543912329275856396630694738618400128412881389666175048976575778590587039239852074579445246476657508798666439893978860122625600280248580653651989659501745788120866210838204610848826992305622269021702688221635993649651671518759866100294588385482901147670474709698187899410921387549396343476268788611619095756118794378610337782521199137176224", - "m": { - "master_secret": "8862971523696585539875886113995946020345090415446970983664333029999473510798222518918685777004680817221644138616821331322893963179678008732473561080506239631376575074759262558623", - "date": "3701779401056653400708681878780576462168055130242160156441633682389568986593680911678649493653787250169881692457012639607423195648009201693522087171287177627155679953691027082306", - "highscore": "15076065627409123507707791591890677721352422176962229116158012124884023896353283613850809563416017162039356935197216493911366484372240599638993754251972383037120760793174059437326" - }, - "m2": "936898843995229611075174877423066852536402039331414286329629096155063110397949209326899164087270236968111471019540493930568502892781443118611948331343540849982215419978654911341" - }, - "ge_proofs": [ - { - "u": { - "0": "9910469266382558421810537687107445527637953525140204243652090909154732881567346670639902692019649848585497930780041894066589111086262231121289584890680947709857922351898933228959", - "3": "13248890365144372967021124637790988823123419165600968402954657790395188046865908780216014168108873473963822724485182321396055154711186623889234974568160016086782335901983921278203", - "2": "12729039529929764954731327277162243472469670773258016331674525566138793186295239771259296208473089652983817249211287815365374343774154094615763169572305994728783319085378462750119", - "1": "7521808223922555179229230989469494924108464850902024304215849946306721494292541804707880060117792628557556919883251581183099791703469635100219991762282695219119375485542725378777" - }, - "r": { - "3": "2474586272027077975486776866285873096434331606893837372003598899080539007560599606386516216782289932402894639261205313757395792446618729476125758006073556965534129613180311177356435264610207048503766208536525437467431668179066975773784256747360733829457728689042564760785075167221871190381905962993342585054474809475874638461649882224522900216073005325070483781773167488104736004488166472769233964211119250710987817940295641154170092028642853085492684423831557787832223441677166939601580910358630679766277360055054583280321123214001754046780045473183143311899432032961118915743585200408079711683568075159956637355186537460890150634531127711285758617739650166494804700747238587328374163718880396805711619195410428497141", - "2": "2630464840206472451352435662547628615461823248193121896366292326754757111056015434024860402045528167154717793472610145065612236007297496233371229987771148480914236050468139151516543123252130359806069866913832582652430060368351667452390252792745981559902564451307173881741056494603759634524628446420629554945618261322035719400890137143004894938649567505283955045583301734843724484105958980144825603458470170246633173176192352102370358808823038609216670566297573459331481693366189829604088382174720921421068848195803685053584587847959340545747151323994860573252761484349482452752365951814578536977631851802458952874933908594142054875532155473403049377997857193944575096457437636198069049894085647451273888200116980726092", - "1": "2852147521010832076474693080123829749829373205563299890275783906381127244731842078098806253403603591226341534169437752738669698923225573040124923814326088208465858997309773274462266090025447286378141544917213418789777276232863321772419735930833747576309139155217894968446024099207333956546610641531588126922714769703447074214896402884035961312686767119156707888839495093047502240940442068243444839642678428392561564279122033304060367830470731800699885137708112213347900071682836322404659581146632750296228233441035302852186755012460856485782729749727931571925009194110383907166489891246153746477910501305713189452876479941940283249570571466801547498554092112942172290619708436101630604721002777991653223187127539407188", - "DELTA": "400740231805932179607546658608482360416676808879808936308239007450069335712770990135423875914299915061808733825416765503161922435087393607455279098108543704733230814698288332881292132566532892722244536550609474863487095816391676106247864333163126795882262678039103218492008333619274792818770308974444039810096709828122153085809072205039719201560334210985909087337968918296450456759914221258287823859138473869581326860149282690703526479416994879663317413415525469689392534867388970645182739614666457086788145724809368914878257774143699515974528212285813531498884015621850779340589427600835454594927635608618313963836648119837777098673007860656489994343544396208432731266075365830717274498351940211946906749568641992530", - "0": "1206673881851533752176657850353675358524597024445357836801291763123272463247544653871603547107824681844497100741157733091042299879547696954660696997520368168483474593036101472335505287047339386308031509611499543209773577503155192535635651933608157610580443175876534879594575874473220014224237470499919793664212944782077926675612730961243351448995290239215801924035454011696132815884654568365382507261689165029962957712345451405751438882798844088168256631131921905245510548989991506332080163507201398283921938862585730222296508424960186566696340473016767188656883762864118588802209468135703456208025238541839477324582906436589408122727413989766360283059475263178640070468528674228956264205722590748705114610224502937924" + "proof": { + "proofs": [ + { + "primary_proof": { + "eq_proof": { + "revealed_attrs": { + "player": "51643998292319337989293919354395093705917445045137690661130646028663839100479", + "screencapture": "44349549498354774830429200435932754610833874667251545521048906777181334567815" }, - "mj": "15076065627409123507707791591890677721352422176962229116158012124884023896353283613850809563416017162039356935197216493911366484372240599638993754251972383037120760793174059437326", - "alpha": "20251550018805200717806858447687954659786798446794929315180340450717009476769405863150379133594211911561358797900043949141708879953965949034296837455168571993614131838308136400934080334484858045221098438795729643169952299593947544536931262318894249728605957882845005603393308631544441292352568325855333088710935761954865297018529190379824999153478968957974616452369432737206876894394433169704416574734350248494633324787866283669843201013454433040804437117653085130836624250598443032846839559239219803003053865279821640383428381442135797658167010830469471880710203270574788431679668220274396595963367127851323648855427656787139315767612273110920619973147968805075620184678295428649237076408491062282135768652643652528789723106929481799840238867321416457406628403722479816549749574895345371486180196838697381621782729034821539642473730374275", - "t": { - "1": "12625197327271658918836077104165526795551240746110291943686378253405709448817799744491714171274845559259436160572533367386665079411321345166308961745117961730852997405633497191717007336383275404469818669156913360917193297281721819431590624901667128875332561566036439988983652391578753211775620012967251966145029999420901103522072647380944582775843791262702644151927742979273959780439648875773579687106661837930590989533046533664173215551687012232903455587682542013722715620746003808218596250895466798585940038977660031964518043170383195848432855521396949050006496669882466103602834555814104353098012178481563132990657", - "3": "82102416726449754901570630901431660447826687124743534767954749884467633032358726226619062293813250820543583618667653110864397826099702636976514863698490371598871942970264169528954417033219855319798151022602756245903134559243361308006137131575819330897670063637536795053765101329851925607560890238602738686737347630399680932950512292412006361269539738453753560364596561872651528860308101942007770489206306048924418921104517753483478955863296623417733412161191192531054326372049247205543273207371278781809399097610512792780914259992762072456575639120070897889219135350947197581287043954055372025101673838669553746551523", - "0": "100578099981822727242488292109669009229478055276500695778799086886344998432604032811665840061704724353178176792298171825200217745276011656576161627798148614876492383276153655146449848780838571509873143828996025628954667317519574656744701630828190045526936155193536814016169445565475181479441229047491855276823646742587245970832496856994388840793376871874193330364608394771574962996229647270622689890201908589893313568444474914909794303851820492781326574727803226373005399197371492982012783800353741451399606551384719595965296619783050926116585174881782168129321205830465290478768408675156580724359333089093105010344487", - "2": "47291536708088381287407033267847414228876334422991232636387475485756328314399598367105968385520172836890544717976118198568671113811836108861048793780118048683411340116566023370245246884524520199561342298868861751758445312599348599287067000725278934840752177807977101054892905295530294108292736307777321970970868898458355273485795649568677223443447768573057466329236959267653001983213430774265365847091875699626385937604178216275273379502023024485339694410370916685404579472512288185963724377525685276628144678139522579811749896221643038522340842472046618109166452353106698715375908659582424315255951960930185079622552", - "DELTA": "55673614276503115042406892194681370272903807098038274960776275804979087176140123726613332530447421097732347173352956738522605590407126570163366084735258393133886870700490345929950624260625461471012084011187108973815830590105522983606251371051538463584013547099942110852482167674597067842508689609606420417081221833855564428834462819662758502495039815615824926366319292041564418283778981490957086445486745581161189382261760754225714728934548296947403634289640526526314947616964122321833465956469712078741533550908164428460947933509296796422321858634999992086190358241952920458802129165732538146634862846975496258789679" + "a_prime": "99225796363129499107604366233301127916801972855861917994091548556785477066502130364812678473656139160841991495705941663142249404264191136660967090000331013804872112053828446231809361437830836319053659748356431221803865514426935793809384997872056337751830616632363564742453553492463002290910985263848243042219992778220569301291770422529015543837803240796109915443060533925706334481433988647943330126921627882396088865869804752372160284361135101444121353171684921889674279086653358367368851378746682682017641177839566946615542088910003479771742848013401738739436319413416417782857315505655723403098381845469564775640588", + "e": "28484172708495089688591061270972815967199639781170588390863001534745829714460906432474939589201651469315129053056279820725958192110265136", + "v": "310372334186966867767394517648718214703060542831249429833856393387373123821840122943078768258679350688701210557571314095023780969910990133962277141702540794078947706642651608840502392669887782435197020314627659897216201821476693212776945691916847975724720629133302982522740709659244048850715861867163370042548490158397753134853555833520807793752332629616695158900467048806794540963892785661237500652426649694476839734543710070772542960644069106447786837388953205349573770161012926822761642443603379863014577283739370081232865330663720633954578384601051328768426422459925307605555673543912329275856396630694738618400128412881389666175048976575778590587039239852074579445246476657508798666439893978860122625600280248580653651989659501745788120866210838204610848826992305622269021702688221635993649651671518759866100294588385482901147670474709698187899410921387549396343476268788611619095756118794378610337782521199137176224", + "m": { + "master_secret": "8862971523696585539875886113995946020345090415446970983664333029999473510798222518918685777004680817221644138616821331322893963179678008732473561080506239631376575074759262558623", + "date": "3701779401056653400708681878780576462168055130242160156441633682389568986593680911678649493653787250169881692457012639607423195648009201693522087171287177627155679953691027082306", + "highscore": "15076065627409123507707791591890677721352422176962229116158012124884023896353283613850809563416017162039356935197216493911366484372240599638993754251972383037120760793174059437326" }, - "predicate": { - "attr_name": "highscore", - "p_type": "GE", - "value": 1000000 + "m2": "936898843995229611075174877423066852536402039331414286329629096155063110397949209326899164087270236968111471019540493930568502892781443118611948331343540849982215419978654911341" + }, + "ge_proofs": [ + { + "u": { + "0": "9910469266382558421810537687107445527637953525140204243652090909154732881567346670639902692019649848585497930780041894066589111086262231121289584890680947709857922351898933228959", + "3": "13248890365144372967021124637790988823123419165600968402954657790395188046865908780216014168108873473963822724485182321396055154711186623889234974568160016086782335901983921278203", + "2": "12729039529929764954731327277162243472469670773258016331674525566138793186295239771259296208473089652983817249211287815365374343774154094615763169572305994728783319085378462750119", + "1": "7521808223922555179229230989469494924108464850902024304215849946306721494292541804707880060117792628557556919883251581183099791703469635100219991762282695219119375485542725378777" + }, + "r": { + "3": "2474586272027077975486776866285873096434331606893837372003598899080539007560599606386516216782289932402894639261205313757395792446618729476125758006073556965534129613180311177356435264610207048503766208536525437467431668179066975773784256747360733829457728689042564760785075167221871190381905962993342585054474809475874638461649882224522900216073005325070483781773167488104736004488166472769233964211119250710987817940295641154170092028642853085492684423831557787832223441677166939601580910358630679766277360055054583280321123214001754046780045473183143311899432032961118915743585200408079711683568075159956637355186537460890150634531127711285758617739650166494804700747238587328374163718880396805711619195410428497141", + "2": "2630464840206472451352435662547628615461823248193121896366292326754757111056015434024860402045528167154717793472610145065612236007297496233371229987771148480914236050468139151516543123252130359806069866913832582652430060368351667452390252792745981559902564451307173881741056494603759634524628446420629554945618261322035719400890137143004894938649567505283955045583301734843724484105958980144825603458470170246633173176192352102370358808823038609216670566297573459331481693366189829604088382174720921421068848195803685053584587847959340545747151323994860573252761484349482452752365951814578536977631851802458952874933908594142054875532155473403049377997857193944575096457437636198069049894085647451273888200116980726092", + "1": "2852147521010832076474693080123829749829373205563299890275783906381127244731842078098806253403603591226341534169437752738669698923225573040124923814326088208465858997309773274462266090025447286378141544917213418789777276232863321772419735930833747576309139155217894968446024099207333956546610641531588126922714769703447074214896402884035961312686767119156707888839495093047502240940442068243444839642678428392561564279122033304060367830470731800699885137708112213347900071682836322404659581146632750296228233441035302852186755012460856485782729749727931571925009194110383907166489891246153746477910501305713189452876479941940283249570571466801547498554092112942172290619708436101630604721002777991653223187127539407188", + "DELTA": "400740231805932179607546658608482360416676808879808936308239007450069335712770990135423875914299915061808733825416765503161922435087393607455279098108543704733230814698288332881292132566532892722244536550609474863487095816391676106247864333163126795882262678039103218492008333619274792818770308974444039810096709828122153085809072205039719201560334210985909087337968918296450456759914221258287823859138473869581326860149282690703526479416994879663317413415525469689392534867388970645182739614666457086788145724809368914878257774143699515974528212285813531498884015621850779340589427600835454594927635608618313963836648119837777098673007860656489994343544396208432731266075365830717274498351940211946906749568641992530", + "0": "1206673881851533752176657850353675358524597024445357836801291763123272463247544653871603547107824681844497100741157733091042299879547696954660696997520368168483474593036101472335505287047339386308031509611499543209773577503155192535635651933608157610580443175876534879594575874473220014224237470499919793664212944782077926675612730961243351448995290239215801924035454011696132815884654568365382507261689165029962957712345451405751438882798844088168256631131921905245510548989991506332080163507201398283921938862585730222296508424960186566696340473016767188656883762864118588802209468135703456208025238541839477324582906436589408122727413989766360283059475263178640070468528674228956264205722590748705114610224502937924" + }, + "mj": "15076065627409123507707791591890677721352422176962229116158012124884023896353283613850809563416017162039356935197216493911366484372240599638993754251972383037120760793174059437326", + "alpha": "20251550018805200717806858447687954659786798446794929315180340450717009476769405863150379133594211911561358797900043949141708879953965949034296837455168571993614131838308136400934080334484858045221098438795729643169952299593947544536931262318894249728605957882845005603393308631544441292352568325855333088710935761954865297018529190379824999153478968957974616452369432737206876894394433169704416574734350248494633324787866283669843201013454433040804437117653085130836624250598443032846839559239219803003053865279821640383428381442135797658167010830469471880710203270574788431679668220274396595963367127851323648855427656787139315767612273110920619973147968805075620184678295428649237076408491062282135768652643652528789723106929481799840238867321416457406628403722479816549749574895345371486180196838697381621782729034821539642473730374275", + "t": { + "1": "12625197327271658918836077104165526795551240746110291943686378253405709448817799744491714171274845559259436160572533367386665079411321345166308961745117961730852997405633497191717007336383275404469818669156913360917193297281721819431590624901667128875332561566036439988983652391578753211775620012967251966145029999420901103522072647380944582775843791262702644151927742979273959780439648875773579687106661837930590989533046533664173215551687012232903455587682542013722715620746003808218596250895466798585940038977660031964518043170383195848432855521396949050006496669882466103602834555814104353098012178481563132990657", + "3": "82102416726449754901570630901431660447826687124743534767954749884467633032358726226619062293813250820543583618667653110864397826099702636976514863698490371598871942970264169528954417033219855319798151022602756245903134559243361308006137131575819330897670063637536795053765101329851925607560890238602738686737347630399680932950512292412006361269539738453753560364596561872651528860308101942007770489206306048924418921104517753483478955863296623417733412161191192531054326372049247205543273207371278781809399097610512792780914259992762072456575639120070897889219135350947197581287043954055372025101673838669553746551523", + "0": "100578099981822727242488292109669009229478055276500695778799086886344998432604032811665840061704724353178176792298171825200217745276011656576161627798148614876492383276153655146449848780838571509873143828996025628954667317519574656744701630828190045526936155193536814016169445565475181479441229047491855276823646742587245970832496856994388840793376871874193330364608394771574962996229647270622689890201908589893313568444474914909794303851820492781326574727803226373005399197371492982012783800353741451399606551384719595965296619783050926116585174881782168129321205830465290478768408675156580724359333089093105010344487", + "2": "47291536708088381287407033267847414228876334422991232636387475485756328314399598367105968385520172836890544717976118198568671113811836108861048793780118048683411340116566023370245246884524520199561342298868861751758445312599348599287067000725278934840752177807977101054892905295530294108292736307777321970970868898458355273485795649568677223443447768573057466329236959267653001983213430774265365847091875699626385937604178216275273379502023024485339694410370916685404579472512288185963724377525685276628144678139522579811749896221643038522340842472046618109166452353106698715375908659582424315255951960930185079622552", + "DELTA": "55673614276503115042406892194681370272903807098038274960776275804979087176140123726613332530447421097732347173352956738522605590407126570163366084735258393133886870700490345929950624260625461471012084011187108973815830590105522983606251371051538463584013547099942110852482167674597067842508689609606420417081221833855564428834462819662758502495039815615824926366319292041564418283778981490957086445486745581161189382261760754225714728934548296947403634289640526526314947616964122321833465956469712078741533550908164428460947933509296796422321858634999992086190358241952920458802129165732538146634862846975496258789679" + }, + "predicate": { + "attr_name": "highscore", + "p_type": "GE", + "value": 1000000 + } } - } + ] + }, + "non_revoc_proof": null + } + ], + "aggregated_proof": { + "c_hash": "81147637626301581116624461636159287563986704950981430016774756525127013830996", + "c_list": [ + [ + 3, + 18, + 5, + 11, + 249, + 192, + 147, + 232, + 208, + 2, + 120, + 15, + 246, + 67, + 152, + 178, + 13, + 223, + 45, + 197, + 49, + 251, + 124, + 129, + 88, + 30, + 22, + 215, + 93, + 198, + 188, + 111, + 134, + 78, + 237, + 244, + 150, + 57, + 134, + 207, + 48, + 252, + 238, + 215, + 44, + 69, + 28, + 38, + 231, + 95, + 66, + 222, + 118, + 30, + 137, + 6, + 78, + 103, + 185, + 218, + 139, + 176, + 149, + 97, + 40, + 224, + 246, + 241, + 87, + 80, + 58, + 169, + 185, + 39, + 121, + 175, + 175, + 181, + 73, + 172, + 152, + 149, + 252, + 2, + 237, + 255, + 147, + 215, + 212, + 0, + 134, + 24, + 198, + 1, + 241, + 191, + 206, + 227, + 200, + 228, + 32, + 22, + 90, + 101, + 237, + 161, + 32, + 157, + 211, + 231, + 28, + 106, + 42, + 227, + 234, + 207, + 116, + 119, + 121, + 173, + 188, + 167, + 195, + 218, + 223, + 194, + 123, + 102, + 140, + 36, + 121, + 231, + 254, + 240, + 155, + 55, + 244, + 236, + 106, + 84, + 62, + 169, + 69, + 56, + 191, + 61, + 29, + 29, + 117, + 196, + 40, + 26, + 210, + 204, + 194, + 164, + 5, + 25, + 138, + 235, + 164, + 176, + 182, + 32, + 100, + 24, + 52, + 71, + 227, + 199, + 45, + 162, + 88, + 66, + 245, + 222, + 51, + 250, + 174, + 222, + 34, + 93, + 63, + 181, + 49, + 45, + 226, + 120, + 183, + 81, + 127, + 222, + 168, + 100, + 99, + 8, + 8, + 248, + 24, + 142, + 118, + 99, + 42, + 157, + 170, + 117, + 103, + 183, + 22, + 253, + 189, + 186, + 234, + 88, + 129, + 202, + 193, + 32, + 237, + 49, + 251, + 49, + 131, + 183, + 2, + 22, + 44, + 207, + 13, + 83, + 98, + 38, + 14, + 160, + 14, + 13, + 146, + 108, + 239, + 43, + 47, + 238, + 251, + 17, + 206, + 164, + 179, + 185, + 103, + 219, + 80, + 159, + 145, + 184, + 239, + 46, + 12 + ], + [ + 3, + 28, + 187, + 101, + 204, + 218, + 140, + 64, + 119, + 109, + 189, + 77, + 133, + 186, + 157, + 230, + 147, + 59, + 219, + 42, + 64, + 16, + 163, + 132, + 197, + 115, + 236, + 3, + 117, + 211, + 98, + 142, + 33, + 166, + 85, + 1, + 88, + 93, + 245, + 55, + 253, + 248, + 59, + 240, + 70, + 169, + 206, + 15, + 157, + 202, + 59, + 254, + 204, + 251, + 3, + 126, + 139, + 138, + 251, + 103, + 229, + 185, + 66, + 105, + 188, + 36, + 47, + 233, + 32, + 148, + 14, + 116, + 14, + 40, + 62, + 209, + 131, + 62, + 108, + 124, + 251, + 157, + 114, + 208, + 94, + 195, + 239, + 168, + 196, + 162, + 19, + 23, + 21, + 215, + 235, + 26, + 12, + 211, + 250, + 184, + 14, + 57, + 116, + 53, + 94, + 179, + 92, + 6, + 45, + 72, + 140, + 173, + 133, + 162, + 150, + 17, + 235, + 31, + 82, + 88, + 14, + 89, + 143, + 166, + 97, + 157, + 250, + 191, + 236, + 95, + 115, + 137, + 102, + 29, + 61, + 179, + 40, + 219, + 182, + 124, + 162, + 134, + 146, + 113, + 137, + 234, + 30, + 130, + 201, + 215, + 22, + 28, + 40, + 108, + 174, + 166, + 191, + 239, + 251, + 166, + 163, + 248, + 245, + 140, + 249, + 199, + 168, + 137, + 50, + 230, + 83, + 204, + 238, + 235, + 156, + 202, + 77, + 1, + 12, + 112, + 242, + 56, + 189, + 100, + 37, + 43, + 139, + 230, + 60, + 235, + 94, + 110, + 13, + 51, + 230, + 136, + 33, + 208, + 191, + 83, + 149, + 167, + 17, + 255, + 252, + 115, + 11, + 177, + 12, + 98, + 208, + 13, + 82, + 83, + 78, + 81, + 44, + 77, + 166, + 235, + 230, + 94, + 52, + 76, + 191, + 176, + 18, + 64, + 223, + 96, + 145, + 51, + 38, + 236, + 143, + 134, + 22, + 244, + 116, + 214, + 26, + 66, + 199, + 249, + 64, + 11, + 164, + 153, + 174, + 107, + 201, + 247, + 134, + 223, + 136, + 2, + 39 + ], + [ + 100, + 2, + 197, + 149, + 94, + 78, + 16, + 15, + 216, + 212, + 33, + 205, + 178, + 90, + 159, + 110, + 12, + 9, + 195, + 172, + 98, + 84, + 106, + 166, + 143, + 8, + 199, + 177, + 41, + 127, + 219, + 144, + 203, + 178, + 101, + 82, + 112, + 39, + 1, + 201, + 198, + 130, + 88, + 22, + 198, + 20, + 169, + 14, + 201, + 230, + 67, + 228, + 169, + 137, + 134, + 157, + 105, + 111, + 4, + 85, + 56, + 183, + 107, + 8, + 1, + 230, + 16, + 54, + 137, + 81, + 99, + 165, + 2, + 191, + 84, + 188, + 68, + 200, + 91, + 223, + 145, + 201, + 36, + 217, + 23, + 124, + 88, + 78, + 186, + 186, + 63, + 25, + 188, + 95, + 138, + 240, + 187, + 154, + 27, + 12, + 228, + 173, + 156, + 225, + 43, + 200, + 163, + 221, + 241, + 105, + 61, + 99, + 182, + 150, + 56, + 141, + 248, + 113, + 54, + 231, + 19, + 51, + 4, + 232, + 15, + 70, + 213, + 186, + 10, + 247, + 219, + 255, + 159, + 30, + 42, + 205, + 228, + 91, + 1, + 158, + 90, + 6, + 112, + 252, + 153, + 234, + 57, + 90, + 107, + 172, + 180, + 150, + 189, + 188, + 201, + 143, + 121, + 38, + 51, + 235, + 122, + 163, + 129, + 205, + 24, + 30, + 59, + 91, + 233, + 1, + 80, + 186, + 199, + 153, + 222, + 201, + 78, + 156, + 74, + 111, + 31, + 105, + 83, + 23, + 167, + 55, + 2, + 38, + 102, + 254, + 51, + 157, + 37, + 83, + 232, + 48, + 29, + 108, + 30, + 13, + 152, + 151, + 27, + 218, + 2, + 59, + 4, + 74, + 22, + 127, + 186, + 54, + 120, + 127, + 203, + 250, + 161, + 6, + 9, + 166, + 122, + 112, + 141, + 64, + 60, + 192, + 95, + 47, + 191, + 8, + 94, + 231, + 5, + 11, + 61, + 239, + 136, + 85, + 56, + 42, + 11, + 224, + 60, + 229, + 139, + 244, + 25, + 26, + 159, + 166, + 79, + 67, + 12, + 111, + 148, + 193 + ], + [ + 1, + 118, + 159, + 2, + 129, + 184, + 137, + 5, + 51, + 164, + 24, + 85, + 155, + 119, + 100, + 109, + 91, + 14, + 209, + 217, + 55, + 243, + 140, + 157, + 24, + 70, + 85, + 43, + 5, + 8, + 112, + 215, + 228, + 90, + 166, + 205, + 46, + 79, + 107, + 162, + 136, + 139, + 7, + 34, + 80, + 253, + 216, + 178, + 107, + 67, + 44, + 184, + 135, + 90, + 140, + 117, + 10, + 237, + 33, + 146, + 73, + 88, + 123, + 61, + 203, + 227, + 138, + 96, + 130, + 148, + 4, + 70, + 34, + 234, + 229, + 13, + 25, + 202, + 122, + 58, + 244, + 228, + 234, + 223, + 237, + 124, + 22, + 222, + 229, + 79, + 223, + 138, + 52, + 50, + 28, + 168, + 4, + 214, + 26, + 111, + 217, + 22, + 205, + 149, + 100, + 36, + 40, + 42, + 248, + 58, + 10, + 35, + 103, + 175, + 77, + 175, + 198, + 195, + 122, + 176, + 250, + 57, + 64, + 233, + 128, + 200, + 162, + 124, + 129, + 200, + 54, + 99, + 99, + 237, + 246, + 107, + 97, + 196, + 62, + 167, + 109, + 187, + 143, + 106, + 43, + 133, + 219, + 70, + 181, + 42, + 107, + 13, + 12, + 146, + 149, + 22, + 234, + 39, + 69, + 126, + 128, + 174, + 121, + 208, + 84, + 98, + 130, + 153, + 17, + 20, + 239, + 13, + 190, + 143, + 247, + 160, + 214, + 157, + 53, + 196, + 181, + 181, + 187, + 175, + 76, + 97, + 142, + 193, + 183, + 80, + 88, + 109, + 73, + 178, + 79, + 222, + 47, + 193, + 232, + 233, + 110, + 215, + 229, + 80, + 49, + 145, + 59, + 202, + 136, + 50, + 49, + 12, + 253, + 21, + 122, + 80, + 183, + 142, + 34, + 141, + 237, + 142, + 23, + 99, + 69, + 231, + 105, + 76, + 248, + 237, + 130, + 200, + 215, + 160, + 59, + 25, + 198, + 105, + 130, + 20, + 96, + 200, + 183, + 159, + 232, + 177, + 244, + 84, + 169, + 245, + 209, + 111, + 53, + 240, + 123, + 11, + 152 + ], + [ + 2, + 138, + 96, + 92, + 255, + 34, + 116, + 173, + 20, + 69, + 199, + 3, + 5, + 92, + 201, + 32, + 201, + 31, + 179, + 150, + 90, + 107, + 31, + 3, + 191, + 223, + 78, + 115, + 65, + 64, + 16, + 87, + 247, + 247, + 21, + 69, + 196, + 57, + 136, + 39, + 234, + 158, + 1, + 163, + 252, + 36, + 57, + 107, + 168, + 117, + 225, + 98, + 29, + 146, + 235, + 106, + 133, + 38, + 101, + 9, + 184, + 149, + 75, + 179, + 75, + 156, + 5, + 109, + 37, + 180, + 150, + 97, + 61, + 70, + 97, + 32, + 135, + 82, + 71, + 4, + 200, + 150, + 253, + 125, + 232, + 119, + 231, + 74, + 221, + 185, + 139, + 56, + 214, + 209, + 46, + 138, + 92, + 102, + 93, + 249, + 240, + 97, + 245, + 177, + 115, + 108, + 189, + 68, + 93, + 85, + 108, + 216, + 40, + 161, + 55, + 32, + 13, + 34, + 12, + 198, + 184, + 69, + 10, + 191, + 38, + 79, + 194, + 167, + 19, + 135, + 195, + 62, + 245, + 248, + 122, + 144, + 132, + 233, + 238, + 78, + 242, + 137, + 129, + 117, + 210, + 244, + 53, + 87, + 73, + 246, + 30, + 223, + 83, + 0, + 84, + 83, + 36, + 211, + 231, + 24, + 60, + 58, + 114, + 223, + 218, + 47, + 32, + 47, + 34, + 227, + 224, + 122, + 50, + 215, + 242, + 198, + 104, + 205, + 192, + 11, + 142, + 139, + 17, + 101, + 236, + 88, + 9, + 119, + 137, + 218, + 215, + 73, + 235, + 183, + 59, + 223, + 42, + 203, + 218, + 76, + 184, + 27, + 70, + 225, + 6, + 151, + 2, + 183, + 106, + 124, + 14, + 219, + 58, + 71, + 100, + 2, + 135, + 124, + 43, + 178, + 12, + 140, + 45, + 136, + 135, + 69, + 195, + 219, + 63, + 249, + 58, + 140, + 198, + 123, + 143, + 203, + 132, + 105, + 55, + 36, + 14, + 107, + 211, + 251, + 173, + 102, + 241, + 193, + 165, + 3, + 168, + 108, + 93, + 127, + 3, + 162, + 227 + ], + [ + 1, + 185, + 5, + 29, + 44, + 82, + 241, + 206, + 149, + 5, + 122, + 252, + 235, + 120, + 16, + 15, + 71, + 16, + 151, + 103, + 254, + 245, + 217, + 73, + 207, + 230, + 48, + 243, + 78, + 241, + 168, + 104, + 15, + 36, + 251, + 86, + 253, + 17, + 224, + 55, + 55, + 167, + 239, + 241, + 16, + 62, + 0, + 100, + 53, + 9, + 36, + 151, + 215, + 143, + 218, + 214, + 72, + 24, + 152, + 42, + 144, + 168, + 100, + 122, + 101, + 248, + 55, + 109, + 225, + 78, + 58, + 108, + 185, + 206, + 44, + 23, + 114, + 116, + 222, + 91, + 168, + 112, + 48, + 141, + 64, + 71, + 142, + 191, + 255, + 83, + 126, + 61, + 160, + 123, + 215, + 116, + 45, + 198, + 122, + 62, + 63, + 107, + 40, + 58, + 56, + 166, + 148, + 204, + 220, + 10, + 67, + 200, + 94, + 140, + 173, + 98, + 26, + 61, + 146, + 74, + 106, + 73, + 162, + 150, + 210, + 96, + 244, + 191, + 80, + 109, + 153, + 157, + 59, + 31, + 151, + 218, + 156, + 244, + 212, + 208, + 160, + 112, + 220, + 134, + 64, + 28, + 164, + 111, + 219, + 198, + 234, + 130, + 54, + 20, + 217, + 56, + 115, + 0, + 28, + 44, + 18, + 3, + 8, + 70, + 248, + 157, + 67, + 198, + 216, + 69, + 232, + 236, + 111, + 145, + 191, + 214, + 186, + 208, + 126, + 133, + 151, + 166, + 251, + 30, + 26, + 163, + 255, + 234, + 241, + 251, + 253, + 132, + 247, + 204, + 95, + 124, + 142, + 76, + 250, + 115, + 91, + 240, + 169, + 203, + 162, + 57, + 41, + 42, + 150, + 242, + 72, + 227, + 223, + 76, + 149, + 87, + 153, + 77, + 193, + 63, + 159, + 32, + 190, + 32, + 126, + 53, + 26, + 99, + 95, + 59, + 205, + 22, + 161, + 9, + 195, + 16, + 48, + 79, + 53, + 235, + 46, + 71, + 0, + 8, + 57, + 55, + 6, + 87, + 1, + 198, + 107, + 255, + 135, + 80, + 239, + 33, + 47 ] - }, - "non_revoc_proof": null - } - ], - "aggregated_proof": { - "c_hash": "81147637626301581116624461636159287563986704950981430016774756525127013830996", - "c_list": [ - [ - 3, - 18, - 5, - 11, - 249, - 192, - 147, - 232, - 208, - 2, - 120, - 15, - 246, - 67, - 152, - 178, - 13, - 223, - 45, - 197, - 49, - 251, - 124, - 129, - 88, - 30, - 22, - 215, - 93, - 198, - 188, - 111, - 134, - 78, - 237, - 244, - 150, - 57, - 134, - 207, - 48, - 252, - 238, - 215, - 44, - 69, - 28, - 38, - 231, - 95, - 66, - 222, - 118, - 30, - 137, - 6, - 78, - 103, - 185, - 218, - 139, - 176, - 149, - 97, - 40, - 224, - 246, - 241, - 87, - 80, - 58, - 169, - 185, - 39, - 121, - 175, - 175, - 181, - 73, - 172, - 152, - 149, - 252, - 2, - 237, - 255, - 147, - 215, - 212, - 0, - 134, - 24, - 198, - 1, - 241, - 191, - 206, - 227, - 200, - 228, - 32, - 22, - 90, - 101, - 237, - 161, - 32, - 157, - 211, - 231, - 28, - 106, - 42, - 227, - 234, - 207, - 116, - 119, - 121, - 173, - 188, - 167, - 195, - 218, - 223, - 194, - 123, - 102, - 140, - 36, - 121, - 231, - 254, - 240, - 155, - 55, - 244, - 236, - 106, - 84, - 62, - 169, - 69, - 56, - 191, - 61, - 29, - 29, - 117, - 196, - 40, - 26, - 210, - 204, - 194, - 164, - 5, - 25, - 138, - 235, - 164, - 176, - 182, - 32, - 100, - 24, - 52, - 71, - 227, - 199, - 45, - 162, - 88, - 66, - 245, - 222, - 51, - 250, - 174, - 222, - 34, - 93, - 63, - 181, - 49, - 45, - 226, - 120, - 183, - 81, - 127, - 222, - 168, - 100, - 99, - 8, - 8, - 248, - 24, - 142, - 118, - 99, - 42, - 157, - 170, - 117, - 103, - 183, - 22, - 253, - 189, - 186, - 234, - 88, - 129, - 202, - 193, - 32, - 237, - 49, - 251, - 49, - 131, - 183, - 2, - 22, - 44, - 207, - 13, - 83, - 98, - 38, - 14, - 160, - 14, - 13, - 146, - 108, - 239, - 43, - 47, - 238, - 251, - 17, - 206, - 164, - 179, - 185, - 103, - 219, - 80, - 159, - 145, - 184, - 239, - 46, - 12 - ], - [ - 3, - 28, - 187, - 101, - 204, - 218, - 140, - 64, - 119, - 109, - 189, - 77, - 133, - 186, - 157, - 230, - 147, - 59, - 219, - 42, - 64, - 16, - 163, - 132, - 197, - 115, - 236, - 3, - 117, - 211, - 98, - 142, - 33, - 166, - 85, - 1, - 88, - 93, - 245, - 55, - 253, - 248, - 59, - 240, - 70, - 169, - 206, - 15, - 157, - 202, - 59, - 254, - 204, - 251, - 3, - 126, - 139, - 138, - 251, - 103, - 229, - 185, - 66, - 105, - 188, - 36, - 47, - 233, - 32, - 148, - 14, - 116, - 14, - 40, - 62, - 209, - 131, - 62, - 108, - 124, - 251, - 157, - 114, - 208, - 94, - 195, - 239, - 168, - 196, - 162, - 19, - 23, - 21, - 215, - 235, - 26, - 12, - 211, - 250, - 184, - 14, - 57, - 116, - 53, - 94, - 179, - 92, - 6, - 45, - 72, - 140, - 173, - 133, - 162, - 150, - 17, - 235, - 31, - 82, - 88, - 14, - 89, - 143, - 166, - 97, - 157, - 250, - 191, - 236, - 95, - 115, - 137, - 102, - 29, - 61, - 179, - 40, - 219, - 182, - 124, - 162, - 134, - 146, - 113, - 137, - 234, - 30, - 130, - 201, - 215, - 22, - 28, - 40, - 108, - 174, - 166, - 191, - 239, - 251, - 166, - 163, - 248, - 245, - 140, - 249, - 199, - 168, - 137, - 50, - 230, - 83, - 204, - 238, - 235, - 156, - 202, - 77, - 1, - 12, - 112, - 242, - 56, - 189, - 100, - 37, - 43, - 139, - 230, - 60, - 235, - 94, - 110, - 13, - 51, - 230, - 136, - 33, - 208, - 191, - 83, - 149, - 167, - 17, - 255, - 252, - 115, - 11, - 177, - 12, - 98, - 208, - 13, - 82, - 83, - 78, - 81, - 44, - 77, - 166, - 235, - 230, - 94, - 52, - 76, - 191, - 176, - 18, - 64, - 223, - 96, - 145, - 51, - 38, - 236, - 143, - 134, - 22, - 244, - 116, - 214, - 26, - 66, - 199, - 249, - 64, - 11, - 164, - 153, - 174, - 107, - 201, - 247, - 134, - 223, - 136, - 2, - 39 - ], - [ - 100, - 2, - 197, - 149, - 94, - 78, - 16, - 15, - 216, - 212, - 33, - 205, - 178, - 90, - 159, - 110, - 12, - 9, - 195, - 172, - 98, - 84, - 106, - 166, - 143, - 8, - 199, - 177, - 41, - 127, - 219, - 144, - 203, - 178, - 101, - 82, - 112, - 39, - 1, - 201, - 198, - 130, - 88, - 22, - 198, - 20, - 169, - 14, - 201, - 230, - 67, - 228, - 169, - 137, - 134, - 157, - 105, - 111, - 4, - 85, - 56, - 183, - 107, - 8, - 1, - 230, - 16, - 54, - 137, - 81, - 99, - 165, - 2, - 191, - 84, - 188, - 68, - 200, - 91, - 223, - 145, - 201, - 36, - 217, - 23, - 124, - 88, - 78, - 186, - 186, - 63, - 25, - 188, - 95, - 138, - 240, - 187, - 154, - 27, - 12, - 228, - 173, - 156, - 225, - 43, - 200, - 163, - 221, - 241, - 105, - 61, - 99, - 182, - 150, - 56, - 141, - 248, - 113, - 54, - 231, - 19, - 51, - 4, - 232, - 15, - 70, - 213, - 186, - 10, - 247, - 219, - 255, - 159, - 30, - 42, - 205, - 228, - 91, - 1, - 158, - 90, - 6, - 112, - 252, - 153, - 234, - 57, - 90, - 107, - 172, - 180, - 150, - 189, - 188, - 201, - 143, - 121, - 38, - 51, - 235, - 122, - 163, - 129, - 205, - 24, - 30, - 59, - 91, - 233, - 1, - 80, - 186, - 199, - 153, - 222, - 201, - 78, - 156, - 74, - 111, - 31, - 105, - 83, - 23, - 167, - 55, - 2, - 38, - 102, - 254, - 51, - 157, - 37, - 83, - 232, - 48, - 29, - 108, - 30, - 13, - 152, - 151, - 27, - 218, - 2, - 59, - 4, - 74, - 22, - 127, - 186, - 54, - 120, - 127, - 203, - 250, - 161, - 6, - 9, - 166, - 122, - 112, - 141, - 64, - 60, - 192, - 95, - 47, - 191, - 8, - 94, - 231, - 5, - 11, - 61, - 239, - 136, - 85, - 56, - 42, - 11, - 224, - 60, - 229, - 139, - 244, - 25, - 26, - 159, - 166, - 79, - 67, - 12, - 111, - 148, - 193 - ], - [ - 1, - 118, - 159, - 2, - 129, - 184, - 137, - 5, - 51, - 164, - 24, - 85, - 155, - 119, - 100, - 109, - 91, - 14, - 209, - 217, - 55, - 243, - 140, - 157, - 24, - 70, - 85, - 43, - 5, - 8, - 112, - 215, - 228, - 90, - 166, - 205, - 46, - 79, - 107, - 162, - 136, - 139, - 7, - 34, - 80, - 253, - 216, - 178, - 107, - 67, - 44, - 184, - 135, - 90, - 140, - 117, - 10, - 237, - 33, - 146, - 73, - 88, - 123, - 61, - 203, - 227, - 138, - 96, - 130, - 148, - 4, - 70, - 34, - 234, - 229, - 13, - 25, - 202, - 122, - 58, - 244, - 228, - 234, - 223, - 237, - 124, - 22, - 222, - 229, - 79, - 223, - 138, - 52, - 50, - 28, - 168, - 4, - 214, - 26, - 111, - 217, - 22, - 205, - 149, - 100, - 36, - 40, - 42, - 248, - 58, - 10, - 35, - 103, - 175, - 77, - 175, - 198, - 195, - 122, - 176, - 250, - 57, - 64, - 233, - 128, - 200, - 162, - 124, - 129, - 200, - 54, - 99, - 99, - 237, - 246, - 107, - 97, - 196, - 62, - 167, - 109, - 187, - 143, - 106, - 43, - 133, - 219, - 70, - 181, - 42, - 107, - 13, - 12, - 146, - 149, - 22, - 234, - 39, - 69, - 126, - 128, - 174, - 121, - 208, - 84, - 98, - 130, - 153, - 17, - 20, - 239, - 13, - 190, - 143, - 247, - 160, - 214, - 157, - 53, - 196, - 181, - 181, - 187, - 175, - 76, - 97, - 142, - 193, - 183, - 80, - 88, - 109, - 73, - 178, - 79, - 222, - 47, - 193, - 232, - 233, - 110, - 215, - 229, - 80, - 49, - 145, - 59, - 202, - 136, - 50, - 49, - 12, - 253, - 21, - 122, - 80, - 183, - 142, - 34, - 141, - 237, - 142, - 23, - 99, - 69, - 231, - 105, - 76, - 248, - 237, - 130, - 200, - 215, - 160, - 59, - 25, - 198, - 105, - 130, - 20, - 96, - 200, - 183, - 159, - 232, - 177, - 244, - 84, - 169, - 245, - 209, - 111, - 53, - 240, - 123, - 11, - 152 - ], - [ - 2, - 138, - 96, - 92, - 255, - 34, - 116, - 173, - 20, - 69, - 199, - 3, - 5, - 92, - 201, - 32, - 201, - 31, - 179, - 150, - 90, - 107, - 31, - 3, - 191, - 223, - 78, - 115, - 65, - 64, - 16, - 87, - 247, - 247, - 21, - 69, - 196, - 57, - 136, - 39, - 234, - 158, - 1, - 163, - 252, - 36, - 57, - 107, - 168, - 117, - 225, - 98, - 29, - 146, - 235, - 106, - 133, - 38, - 101, - 9, - 184, - 149, - 75, - 179, - 75, - 156, - 5, - 109, - 37, - 180, - 150, - 97, - 61, - 70, - 97, - 32, - 135, - 82, - 71, - 4, - 200, - 150, - 253, - 125, - 232, - 119, - 231, - 74, - 221, - 185, - 139, - 56, - 214, - 209, - 46, - 138, - 92, - 102, - 93, - 249, - 240, - 97, - 245, - 177, - 115, - 108, - 189, - 68, - 93, - 85, - 108, - 216, - 40, - 161, - 55, - 32, - 13, - 34, - 12, - 198, - 184, - 69, - 10, - 191, - 38, - 79, - 194, - 167, - 19, - 135, - 195, - 62, - 245, - 248, - 122, - 144, - 132, - 233, - 238, - 78, - 242, - 137, - 129, - 117, - 210, - 244, - 53, - 87, - 73, - 246, - 30, - 223, - 83, - 0, - 84, - 83, - 36, - 211, - 231, - 24, - 60, - 58, - 114, - 223, - 218, - 47, - 32, - 47, - 34, - 227, - 224, - 122, - 50, - 215, - 242, - 198, - 104, - 205, - 192, - 11, - 142, - 139, - 17, - 101, - 236, - 88, - 9, - 119, - 137, - 218, - 215, - 73, - 235, - 183, - 59, - 223, - 42, - 203, - 218, - 76, - 184, - 27, - 70, - 225, - 6, - 151, - 2, - 183, - 106, - 124, - 14, - 219, - 58, - 71, - 100, - 2, - 135, - 124, - 43, - 178, - 12, - 140, - 45, - 136, - 135, - 69, - 195, - 219, - 63, - 249, - 58, - 140, - 198, - 123, - 143, - 203, - 132, - 105, - 55, - 36, - 14, - 107, - 211, - 251, - 173, - 102, - 241, - 193, - 165, - 3, - 168, - 108, - 93, - 127, - 3, - 162, - 227 - ], - [ - 1, - 185, - 5, - 29, - 44, - 82, - 241, - 206, - 149, - 5, - 122, - 252, - 235, - 120, - 16, - 15, - 71, - 16, - 151, - 103, - 254, - 245, - 217, - 73, - 207, - 230, - 48, - 243, - 78, - 241, - 168, - 104, - 15, - 36, - 251, - 86, - 253, - 17, - 224, - 55, - 55, - 167, - 239, - 241, - 16, - 62, - 0, - 100, - 53, - 9, - 36, - 151, - 215, - 143, - 218, - 214, - 72, - 24, - 152, - 42, - 144, - 168, - 100, - 122, - 101, - 248, - 55, - 109, - 225, - 78, - 58, - 108, - 185, - 206, - 44, - 23, - 114, - 116, - 222, - 91, - 168, - 112, - 48, - 141, - 64, - 71, - 142, - 191, - 255, - 83, - 126, - 61, - 160, - 123, - 215, - 116, - 45, - 198, - 122, - 62, - 63, - 107, - 40, - 58, - 56, - 166, - 148, - 204, - 220, - 10, - 67, - 200, - 94, - 140, - 173, - 98, - 26, - 61, - 146, - 74, - 106, - 73, - 162, - 150, - 210, - 96, - 244, - 191, - 80, - 109, - 153, - 157, - 59, - 31, - 151, - 218, - 156, - 244, - 212, - 208, - 160, - 112, - 220, - 134, - 64, - 28, - 164, - 111, - 219, - 198, - 234, - 130, - 54, - 20, - 217, - 56, - 115, - 0, - 28, - 44, - 18, - 3, - 8, - 70, - 248, - 157, - 67, - 198, - 216, - 69, - 232, - 236, - 111, - 145, - 191, - 214, - 186, - 208, - 126, - 133, - 151, - 166, - 251, - 30, - 26, - 163, - 255, - 234, - 241, - 251, - 253, - 132, - 247, - 204, - 95, - 124, - 142, - 76, - 250, - 115, - 91, - 240, - 169, - 203, - 162, - 57, - 41, - 42, - 150, - 242, - 72, - 227, - 223, - 76, - 149, - 87, - 153, - 77, - 193, - 63, - 159, - 32, - 190, - 32, - 126, - 53, - 26, - 99, - 95, - 59, - 205, - 22, - 161, - 9, - 195, - 16, - 48, - 79, - 53, - 235, - 46, - 71, - 0, - 8, - 57, - 55, - 6, - 87, - 1, - 198, - 107, - 255, - 135, - 80, - 239, - 33, - 47 ] - ] - } - }, - "requested_proof": { - "revealed_attrs": { - "0_player_uuid": { - "sub_proof_index": 0, - "raw": "Richie Knucklez", - "encoded": "51643998292319337989293919354395093705917445045137690661130646028663839100479" + } + }, + "requested_proof": { + "revealed_attrs": { + "0_player_uuid": { + "sub_proof_index": 0, + "raw": "Richie Knucklez", + "encoded": "51643998292319337989293919354395093705917445045137690661130646028663839100479" + }, + "0_screencapture_uuid": { + "sub_proof_index": 0, + "raw": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", + "encoded": "44349549498354774830429200435932754610833874667251545521048906777181334567815" + } }, - "0_screencapture_uuid": { - "sub_proof_index": 0, - "raw": "aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", - "encoded": "44349549498354774830429200435932754610833874667251545521048906777181334567815" + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": { + "0_highscore_GE_uuid": { + "sub_proof_index": 0 + } } }, - "self_attested_attrs": {}, - "unrevealed_attrs": {}, - "predicates": { - "0_highscore_GE_uuid": { - "sub_proof_index": 0 + "identifiers": [ + { + "schema_id": "WjFgAM9qFept242HWzUSTZ:2:high_score:1.0", + "cred_def_id": "WjFgAM9qFept242HWzUSTZ:3:CL:13:tag", + "rev_reg_id": null, + "timestamp": null } - } - }, - "identifiers": [ - { - "schema_id": "WjFgAM9qFept242HWzUSTZ:2:high_score:1.0", - "cred_def_id": "WjFgAM9qFept242HWzUSTZ:3:CL:13:tag", - "rev_reg_id": null, - "timestamp": null - } - ] -}""" + ] + }""" ) PRES = Presentation( From 1434ec0f0a3ae7cc0d398669ce5855c5325e5a1d Mon Sep 17 00:00:00 2001 From: konsmosc Date: Tue, 9 Mar 2021 10:02:31 +0200 Subject: [PATCH 112/243] Correction to out_of_band protocol v1_0 in manager.py Signed-off-by: konsmosc --- aries_cloudagent/protocols/out_of_band/v1_0/manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py index b3d14cd392..b52d135910 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py @@ -529,7 +529,7 @@ async def receive_invitation( if req_attach.data is not None: req_attach_type = req_attach.data.json["@type"] if DIDCommPrefix.unqualify(req_attach_type) == PRESENTATION_REQUEST: - proof_present_mgr = PresentationManager(self._session) + proof_present_mgr = PresentationManager(self._session.profile) indy_proof_request = json.loads( b64_to_bytes( req_attach.data.json["request_presentations~attach"][0][ From 3b9339095b31b0037ef378a9006f6fe2f977360a Mon Sep 17 00:00:00 2001 From: Julian Nicholls Date: Tue, 9 Mar 2021 14:42:04 +0000 Subject: [PATCH 113/243] Fix wallet switching losing id and token Signed-off-by: Julian Nicholls --- demo/runners/support/agent.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index 6a6b3166cb..2f0c49f303 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -394,6 +394,11 @@ async def register_or_switch_wallet( self.seed = self.agency_wallet_seed self.did = self.agency_wallet_did self.wallet_key = self.agency_wallet_key + + wallet_params = await self.get_id_and_token(self.wallet_name) + self.managed_wallet_params["wallet_id"] = wallet_params["id"] + self.managed_wallet_params["token"] = wallet_params["token"] + self.log(f"Switching to AGENCY wallet {target_wallet_name}") return False @@ -408,6 +413,11 @@ async def register_or_switch_wallet( self.ident = target_wallet_name # we can't recover the seed so let's set it to None and see what happens self.seed = None + + wallet_params = await self.get_id_and_token(self.wallet_name) + self.managed_wallet_params["wallet_id"] = wallet_params["id"] + self.managed_wallet_params["token"] = wallet_params["token"] + self.log(f"Switching to EXISTING wallet {target_wallet_name}") return False @@ -444,6 +454,19 @@ async def register_or_switch_wallet( self.log(f"Created NEW wallet {target_wallet_name}") return True + async def get_id_and_token(self, wallet_name): + wallet = await self.agency_admin_GET( + f"/multitenancy/wallets?wallet_name={wallet_name}" + ) + wallet_id = wallet["results"][0]["wallet_id"] + + wallet = await self.agency_admin_POST( + f"/multitenancy/wallet/{wallet_id}/token", {} + ) + token = wallet["token"] + + return {"id": wallet_id, "token": token} + def handle_output(self, *output, source: str = None, **kwargs): end = "" if source else "\n" if source == "stderr": From 5a178a74ab697f45f57f04f25d95a5c1fe0cef34 Mon Sep 17 00:00:00 2001 From: sklump Date: Wed, 10 Mar 2021 16:54:49 +0000 Subject: [PATCH 114/243] present-proof integrated Signed-off-by: sklump --- .../v2_0/messages/indy/cred.py | 10 +- .../protocols/present_proof/indy/proof.py | 3 +- .../v2_0/handlers/pres_request_handler.py | 12 +- .../tests/test_pres_request_handler.py | 135 +------- .../protocols/present_proof/v2_0/manager.py | 32 +- .../v2_0/models/pres_exchange.py | 2 +- .../protocols/present_proof/v2_0/routes.py | 31 +- .../present_proof/v2_0/tests/test_manager.py | 297 ++++++++---------- .../present_proof/v2_0/tests/test_routes.py | 81 +++-- 9 files changed, 214 insertions(+), 389 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/cred.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/cred.py index aba0f9cfb4..af4205c5b7 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/cred.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/cred.py @@ -2,7 +2,7 @@ from typing import Mapping, Sequence -from marshmallow import EXCLUDE, fields, validate +from marshmallow import EXCLUDE, fields from ......messaging.models.base import BaseModel, BaseModelSchema from ......messaging.valid import ( @@ -11,11 +11,6 @@ INDY_SCHEMA_ID, NUM_STR_WHOLE, ) -from ......wallet.util import b64_to_str - -from .....didcomm_prefix import DIDCommPrefix - -from ...message_types import CRED_20_PREVIEW class IndyKeyCorrectnessProof(BaseModel): @@ -164,6 +159,7 @@ def __init__( nonce: str = None, **kwargs, ): + """Initialize indy credential request.""" super().__init__(**kwargs) self.prover_did = prover_did self.cred_def_id = cred_def_id @@ -215,6 +211,7 @@ class Meta: schema_class = "IndyAttrValueSchema" def __init__(self, raw: str = None, encoded: str = None, **kwargs): + """Initialize indy (credential) attribute value.""" super().__init__(**kwargs) self.raw = raw self.encoded = encoded @@ -259,6 +256,7 @@ def __init__( rev_reg: Mapping = None, witness: Mapping = None, ): + """Initialize indy credential.""" self.schema_id = schema_id self.cred_def_id = cred_def_id self.rev_reg_id = rev_reg_id diff --git a/aries_cloudagent/protocols/present_proof/indy/proof.py b/aries_cloudagent/protocols/present_proof/indy/proof.py index 835cd88ce3..505d4ee524 100644 --- a/aries_cloudagent/protocols/present_proof/indy/proof.py +++ b/aries_cloudagent/protocols/present_proof/indy/proof.py @@ -7,7 +7,6 @@ from ....messaging.models.base import BaseModel, BaseModelSchema from ....messaging.valid import ( INDY_CRED_DEF_ID, - INDY_PREDICATE, INDY_REV_REG_ID, INDY_SCHEMA_ID, INT_EPOCH, @@ -106,7 +105,7 @@ class Meta: attr_name = fields.Str(description="Attribute name, indy-canonicalized") p_type = fields.Str( description="Predicate type", - **INDY_PREDICATE, + validate=validate.OneOf([p.fortran for p in Predicate]), ) value = fields.Integer(strict=True, description="Predicate threshold value") diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py index db8088266e..6e736f934a 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/pres_request_handler.py @@ -10,12 +10,10 @@ from .....storage.error import StorageNotFoundError from .....utils.tracing import trace_event, get_timer -from ...indy.pres_preview import IndyPresPreview from ...indy.xform import indy_proof_req_preview2indy_requested_creds from ..manager import V20PresManager from ..messages.pres_format import V20PresFormat -from ..messages.pres_proposal import V20PresProposal from ..messages.pres_request import V20PresRequest from ..models.pres_exchange import V20PresExRecord @@ -80,20 +78,12 @@ async def handle(self, context: RequestContext, responder: BaseResponder): # If auto_present is enabled, respond immediately with presentation if pres_ex_record.auto_present: - pres_preview = None indy_proof_request = context.message.attachment(V20PresFormat.Format.INDY) - if pres_ex_record.pres_proposal: - exchange_pres_proposal = V20PresProposal.deserialize( - pres_ex_record.pres_proposal - ) - pres_preview = IndyPresPreview.deserialize( - exchange_pres_proposal.attachment(V20PresFormat.Format.INDY) - ) try: req_creds = await indy_proof_req_preview2indy_requested_creds( indy_proof_request, - pres_preview, + preview=None, holder=context.inject(IndyHolder), ) except ValueError as err: diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py index 2db6e41fe4..8b8e5eba39 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py @@ -18,19 +18,6 @@ S_ID = "NcYxiDXkpYi6ov5FcYDi1e:2:vidya:1.0" CD_ID = f"NcYxiDXkpYi6ov5FcYDi1e:3:CL:{S_ID}:tag1" -INDY_PRES_PREVIEW = IndyPresPreview( - attributes=[ - IndyPresAttrSpec(name="favourite", cred_def_id=CD_ID, value="potato"), - IndyPresAttrSpec( - name="icon", - cred_def_id=CD_ID, - mime_type="image/bmp", - value="cG90YXRv", - ), - ], - predicates=[], -) - INDY_PROOF_REQ = { "name": "proof-request", "version": "1.0", @@ -161,9 +148,7 @@ async def test_called_auto_present(self): format_=V20PresFormat.Format.INDY.aries, ) ], - proposal_attach=[ - AttachDecorator.data_base64(INDY_PRES_PREVIEW.serialize(), ident="indy") - ], + proposal_attach=[AttachDecorator.data_base64(INDY_PROOF_REQ, ident="indy")], ) px_rec_instance = test_module.V20PresExRecord( @@ -435,9 +420,7 @@ async def test_called_auto_present_multi_cred_match_reft(self): format_=V20PresFormat.Format.INDY.aries, ) ], - proposal_attach=[ - AttachDecorator.data_base64(INDY_PRES_PREVIEW.serialize(), ident="indy") - ], + proposal_attach=[AttachDecorator.data_base64(INDY_PROOF_REQ, ident="indy")], ) px_rec_instance = test_module.V20PresExRecord( @@ -519,120 +502,6 @@ async def test_called_auto_present_multi_cred_match_reft(self): assert result == "pres message" assert target == {} - async def test_called_auto_present_bait_and_switch(self): - request_context = RequestContext.test_context() - request_context.connection_record = async_mock.MagicMock() - request_context.connection_record.connection_id = "dummy" - request_context.message = V20PresRequest() - request_context.message.attachment = async_mock.MagicMock( - return_value={ - "name": "proof-request", - "version": "1.0", - "nonce": "1234567890", - "requested_attributes": { - "0_favourite_uuid": { - "name": "favourite", - "restrictions": [ - { - "cred_def_id": CD_ID, - } - ], - } - }, - "requested_predicates": {}, - } - ) - request_context.message_receipt = MessageReceipt() - pres_proposal = V20PresProposal( - formats=[ - V20PresFormat( - attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, - ) - ], - proposal_attach=[ - AttachDecorator.data_base64(INDY_PRES_PREVIEW.serialize(), ident="indy") - ], - ) - px_rec_instance = test_module.V20PresExRecord( - pres_proposal=pres_proposal.serialize(), - auto_present=True, - ) - - with async_mock.patch.object( - test_module, "V20PresManager", autospec=True - ) as mock_pres_mgr, async_mock.patch.object( - test_module, "V20PresExRecord", autospec=True - ) as mock_pres_ex_rec_cls, async_mock.patch.object( - test_module, "IndyHolder", autospec=True - ) as mock_holder: - - by_reft = async_mock.CoroutineMock( - return_value=[ - { - "cred_info": { - "referent": "dummy-0", - "cred_def_id": CD_ID, - "attrs": { - "ident": "zero", - "favourite": "yam", - "icon": "eWFt", - }, - } - }, - { - "cred_info": { - "referent": "dummy-1", - "cred_def_id": CD_ID, - "attrs": { - "ident": "one", - "favourite": "turnip", - "icon": "dHVybmlw", - }, - } - }, - { - "cred_info": { - "referent": "dummy-2", - "cred_def_id": CD_ID, - "attrs": { - "ident": "two", - "favourite": "the idea of a potato but not a potato", - "icon": ( - "dGhlIGlkZWEgb2YgYSBwb3RhdG" - "8gYnV0IG5vdCBhIHBvdGF0bw==" - ), - }, - } - }, - ] - ) - mock_holder.get_credentials_for_presentation_request_by_referent = by_reft - request_context.inject = async_mock.MagicMock(return_value=mock_holder) - - mock_pres_ex_rec_cls.return_value = px_rec_instance - mock_pres_ex_rec_cls.retrieve_by_tag_filter = async_mock.CoroutineMock( - return_value=px_rec_instance - ) - mock_pres_mgr.return_value.receive_pres_request = async_mock.CoroutineMock( - return_value=px_rec_instance - ) - - mock_pres_mgr.return_value.create_pres = async_mock.CoroutineMock( - return_value=(px_rec_instance, "pres message") - ) - request_context.connection_ready = True - handler_inst = test_module.V20PresRequestHandler() - responder = MockResponder() - - await handler_inst.handle(request_context, responder) - mock_pres_mgr.return_value.create_pres.assert_not_called() - - mock_pres_mgr.return_value.receive_pres_request.assert_called_once_with( - px_rec_instance - ) - assert not responder.messages - async def test_called_not_ready(self): request_context = RequestContext.test_context() request_context.message_receipt = MessageReceipt() diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index f78d5c4175..f4cae039ff 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -18,7 +18,6 @@ from ....revocation.models.revocation_registry import RevocationRegistry from ....storage.error import StorageNotFoundError -from ..indy.pres_preview import IndyPresPreview from ..indy.xform import indy_proof_req2non_revoc_intervals from .models.pres_exchange import V20PresExRecord @@ -134,9 +133,9 @@ async def create_bound_request( A tuple (updated presentation exchange record, presentation request message) """ - indy_proof_request = IndyPresPreview.deserialize( - pres_ex_record.by_format["pres_proposal"][V20PresFormat.Format.INDY.api] - ) + indy_proof_request = pres_ex_record.by_format["pres_proposal"][ + V20PresFormat.Format.INDY.api + ] indy_proof_request["name"] = name or "proof-request" indy_proof_request["version"] = version or "1.0" indy_proof_request["nonce"] = nonce or await generate_pr_nonce() @@ -484,32 +483,35 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): ) # Check for bait-and-switch in presented attribute values vs. request + # TODO: move to verifier.pre_verify(), include attr groups & predicate bounds proof_req = pres_ex_record.by_format["pres_request"][ V20PresFormat.Format.INDY.api ] for (reft, attr_spec) in proof["requested_proof"]["revealed_attrs"].items(): - name = proof_req["requested_attributes"][reft]["name"] + proof_req_attr_spec = proof_req["requested_attributes"].get(reft) + if not proof_req_attr_spec: + raise V20PresManagerError( + f"Presentation referent {reft} not in request" + ) + req_restrictions = proof_req_attr_spec["restrictions"] + + name = proof_req_attr_spec["name"] proof_value = attr_spec["raw"] sub_proof_index = attr_spec["sub_proof_index"] schema_id = proof["identifiers"][sub_proof_index]["schema_id"] cred_def_id = proof["identifiers"][sub_proof_index]["cred_def_id"] criteria = { "schema_id": schema_id, - "schema_issuer_did": schema_id.split[":"][-4], - "schema_name": schema_id.split[":"][-2], - "schema_version": schema_id.split[":"][-1], + "schema_issuer_did": schema_id.split(":")[-4], + "schema_name": schema_id.split(":")[-2], + "schema_version": schema_id.split(":")[-1], "cred_def_id": proof["identifiers"][sub_proof_index]["cred_def_id"], - "issuer_did": cred_def_id.split[":"][-5], + "issuer_did": cred_def_id.split(":")[-5], f"attr::{name}::value": proof_value, } - proof_req_attr_spec = proof_req["requested_attributes"].get(reft, {}) - req_restrictions = proof_req_attr_spec.get("restrictions", []) - if not any( - r.items() <= criteria.items - for r in proof_req_attr_spec.get("restrictions", []) - ): + if not any(r.items() <= criteria.items() for r in req_restrictions): raise V20PresManagerError( f"Presentation {name}={proof_value} not in requested value(s)" ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py index 2ea4c1f41b..1dc241d45f 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py @@ -108,7 +108,7 @@ def by_format(self) -> Mapping: """Record proposal, request, and presentation data structures by format.""" result = {} for item, cls in { - "pres_proposal": V20PresProposal, + "pres_proposal": V20PresProposal, # note: proof request attached for indy "pres_request": V20PresRequest, "pres": V20Pres, }.items(): diff --git a/aries_cloudagent/protocols/present_proof/v2_0/routes.py b/aries_cloudagent/protocols/present_proof/v2_0/routes.py index 3cc4334e5d..7d936e5502 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/routes.py @@ -39,7 +39,6 @@ from ..indy.cred_precis import IndyCredPrecisSchema from ..indy.proof import IndyPresSpecSchema from ..indy.proof_request import IndyProofRequestSchema -from ..indy.pres_preview import IndyPresPreviewSchema from .manager import V20PresManager from .message_types import SPEC_URI @@ -99,11 +98,11 @@ class V20PresExRecordListSchema(OpenAPISchema): ) -class DIFPresPreviewSchema(OpenAPISchema): - """DIF presentation preview schema placeholder.""" +class DIFPresProposalSchema(OpenAPISchema): + """DIF presentation proposal schema placeholder.""" some_dif = fields.Str( - description="Placeholder for W3C/DIF/JSON-LD presentation preview format", + description="Placeholder for W3C/DIF/JSON-LD presentation proposal format", required=False, ) @@ -126,18 +125,18 @@ class DIFPresSpecSchema(OpenAPISchema): ) -class V20PresPreviewByFormatSchema(OpenAPISchema): - """Schema for presentation preview per format.""" +class V20PresProposalByFormatSchema(OpenAPISchema): + """Schema for presentation proposal per format.""" indy = fields.Nested( - IndyPresPreviewSchema, + IndyProofRequestSchema, required=False, - description="Presentation preview for indy", + description="Presentation proposal for indy", ) dif = fields.Nested( - DIFPresPreviewSchema, + DIFPresProposalSchema, required=False, - description="Presentation preview for DIF", + description="Presentation proposal for DIF", ) @validates_schema @@ -154,7 +153,7 @@ def validate_fields(self, data, **kwargs): """ if not any(f.api in data for f in V20PresFormat.Format): raise ValidationError( - "V20PresPreviewByFormatSchema requires indy, dif, or both" + "V20PresProposalByFormatSchema requires indy, dif, or both" ) @@ -167,8 +166,8 @@ class V20PresProposalRequestSchema(AdminAPIMessageTracingSchema): comment = fields.Str( description="Human-readable comment", required=False, allow_none=True ) - presentation_preview = fields.Nested( - V20PresPreviewByFormatSchema(), + presentation_proposal = fields.Nested( + V20PresProposalByFormatSchema(), required=True, ) auto_present = fields.Boolean( @@ -197,7 +196,7 @@ class V20PresRequestByFormatSchema(OpenAPISchema): dif = fields.Nested( DIFPresRequestSchema, required=False, - description="Presentation preview for DIF", + description="Presentation request for DIF", ) @validates_schema @@ -508,14 +507,14 @@ async def present_proof_send_proposal(request: web.BaseRequest): comment = body.get("comment") connection_id = body.get("connection_id") - pres_preview = body.get("presentation_preview") + pres_proposal = body.get("presentation_proposal") conn_record = None async with context.session() as session: try: conn_record = await ConnRecord.retrieve_by_id(session, connection_id) pres_proposal_message = V20PresProposal( comment=comment, - **_formats_attach(pres_preview, "proposal"), + **_formats_attach(pres_proposal, "proposal"), ) except (BaseModelError, StorageError) as err: return await internal_error( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py index 94a5bea9c9..fd4352d7ce 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py @@ -1,5 +1,6 @@ import json +from copy import deepcopy from time import time from asynctest import TestCase as AsyncTestCase @@ -20,7 +21,6 @@ from ....didcomm_prefix import DIDCommPrefix from ...indy.xform import indy_proof_req_preview2indy_requested_creds -from ...indy.pres_preview import IndyPresAttrSpec, IndyPresPreview, IndyPresPredSpec from .. import manager as test_module from ..manager import V20PresManager, V20PresManagerError @@ -37,46 +37,70 @@ S_ID = f"{ISSUER_DID}:2:vidya:1.0" CD_ID = f"{ISSUER_DID}:3:CL:{S_ID}:tag1" RR_ID = f"{ISSUER_DID}:4:{CD_ID}:CL_ACCUM:0" -PRES_PREVIEW = IndyPresPreview( - attributes=[ - IndyPresAttrSpec(name="player", cred_def_id=CD_ID, value="Richie Knucklez"), - IndyPresAttrSpec( - name="screenCapture", - cred_def_id=CD_ID, - mime_type="image/png", - value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", - ), - ], - predicates=[ - IndyPresPredSpec( - name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 - ) - ], -) -PRES_PREVIEW_NAMES = IndyPresPreview( - attributes=[ - IndyPresAttrSpec( - name="player", cred_def_id=CD_ID, value="Richie Knucklez", referent="0" - ), - IndyPresAttrSpec( - name="screenCapture", - cred_def_id=CD_ID, - mime_type="image/png", - value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", - referent="0", - ), - ], - predicates=[ - IndyPresPredSpec( - name="highScore", cred_def_id=CD_ID, predicate=">=", threshold=1000000 - ) - ], -) PROOF_REQ_NAME = "name" PROOF_REQ_VERSION = "1.0" PROOF_REQ_NONCE = "12345" NOW = int(time()) +INDY_PROOF_REQ_NAME = { + "name": PROOF_REQ_NAME, + "version": PROOF_REQ_VERSION, + "nonce": PROOF_REQ_NONCE, + "requested_attributes": { + "0_player_uuid": { + "name": "player", + "restrictions": [{"cred_def_id": CD_ID}], + "non_revoked": {"from": NOW, "to": NOW}, + }, + "1_screencapture_uuid": { + "name": "screenCapture", + "restrictions": [{"cred_def_id": CD_ID}], + "non_revoked": {"from": NOW, "to": NOW}, + }, + }, + "requested_predicates": { + "0_highscore_GE_uuid": { + "name": "highScore", + "p_type": ">=", + "p_value": 1000000, + "restrictions": [{"cred_def_id": CD_ID}], + "non_revoked": {"from": NOW, "to": NOW}, + } + }, +} +INDY_PROOF_REQ_NAMES = { + "name": PROOF_REQ_NAME, + "version": PROOF_REQ_VERSION, + "nonce": PROOF_REQ_NONCE, + "requested_attributes": { + "0_player_uuid": { + "names": ["player", "screenCapture"], + "restrictions": [{"cred_def_id": CD_ID}], + "non_revoked": {"from": NOW, "to": NOW}, + } + }, + "requested_predicates": { + "0_highscore_GE_uuid": { + "name": "highScore", + "p_type": ">=", + "p_value": 1000000, + "restrictions": [{"cred_def_id": CD_ID}], + "non_revoked": {"from": NOW, "to": NOW}, + } + }, +} +INDY_PROOF_REQ_SELFIE = { + "name": PROOF_REQ_NAME, + "version": PROOF_REQ_VERSION, + "nonce": PROOF_REQ_NONCE, + "requested_attributes": { + "self_player_uuid": {"name": "player"}, + "self_screencapture_uuid": {"name": "screenCapture"}, + }, + "requested_predicates": { + "0_highscore_GE_uuid": {"name": "highScore", "p_type": ">=", "p_value": 1000000} + }, +} class TestV20PresManager(AsyncTestCase): @@ -251,7 +275,7 @@ async def test_create_bound_request(self): ) ], proposal_attach=[ - AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_NAME, ident="indy") ], ) px_rec = V20PresExRecord( @@ -293,12 +317,6 @@ async def test_receive_pres_request(self): assert px_rec_out.state == V20PresExRecord.STATE_REQUEST_RECEIVED async def test_create_pres(self): - indy_proof_req = await PRES_PREVIEW.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) pres_request = V20PresRequest( formats=[ V20PresFormat( @@ -307,7 +325,7 @@ async def test_create_pres(self): ) ], request_presentations_attach=[ - AttachDecorator.data_base64(indy_proof_req, ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_NAME, ident="indy") ], ) px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) @@ -330,7 +348,7 @@ async def test_create_pres(self): ) req_creds = await indy_proof_req_preview2indy_requested_creds( - indy_proof_req, holder=self.holder + INDY_PROOF_REQ_NAME, preview=None, holder=self.holder ) assert not req_creds["self_attested_attributes"] assert len(req_creds["requested_attributes"]) == 2 @@ -343,13 +361,8 @@ async def test_create_pres(self): assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT async def test_create_pres_proof_req_non_revoc_interval_none(self): - indy_proof_req = await PRES_PREVIEW.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) - indy_proof_req["non_revoked"] = None # simulate interop with indy-vcx + indy_proof_req_vcx = deepcopy(INDY_PROOF_REQ_NAME) + indy_proof_req_vcx["non_revoked"] = None # simulate interop with indy-vcx pres_request = V20PresRequest( formats=[ V20PresFormat( @@ -358,7 +371,7 @@ async def test_create_pres_proof_req_non_revoc_interval_none(self): ) ], request_presentations_attach=[ - AttachDecorator.data_base64(indy_proof_req, ident="indy") + AttachDecorator.data_base64(indy_proof_req_vcx, ident="indy") ], ) px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) @@ -382,7 +395,7 @@ async def test_create_pres_proof_req_non_revoc_interval_none(self): ) req_creds = await indy_proof_req_preview2indy_requested_creds( - indy_proof_req, holder=self.holder + indy_proof_req_vcx, preview=None, holder=self.holder ) assert not req_creds["self_attested_attributes"] assert len(req_creds["requested_attributes"]) == 2 @@ -395,30 +408,6 @@ async def test_create_pres_proof_req_non_revoc_interval_none(self): assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT async def test_create_pres_self_asserted(self): - PRES_PREVIEW_SELFIE = IndyPresPreview( - attributes=[ - IndyPresAttrSpec(name="player", value="Richie Knucklez"), - IndyPresAttrSpec( - name="screenCapture", - mime_type="image/png", - value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", - ), - ], - predicates=[ - IndyPresPredSpec( - name="highScore", - cred_def_id=None, - predicate=">=", - threshold=1000000, - ) - ], - ) - indy_proof_req = await PRES_PREVIEW_SELFIE.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) pres_request = V20PresRequest( formats=[ V20PresFormat( @@ -427,7 +416,7 @@ async def test_create_pres_self_asserted(self): ) ], request_presentations_attach=[ - AttachDecorator.data_base64(indy_proof_req, ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_SELFIE, ident="indy") ], ) px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) @@ -451,7 +440,7 @@ async def test_create_pres_self_asserted(self): ) req_creds = await indy_proof_req_preview2indy_requested_creds( - indy_proof_req, holder=self.holder + INDY_PROOF_REQ_SELFIE, preview=None, holder=self.holder ) assert len(req_creds["self_attested_attributes"]) == 3 assert not req_creds["requested_attributes"] @@ -474,12 +463,6 @@ async def test_create_pres_no_revocation(self): ) self.profile.context.injector.bind_instance(BaseLedger, self.ledger) - indy_proof_req = await PRES_PREVIEW.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) pres_request = V20PresRequest( formats=[ V20PresFormat( @@ -488,7 +471,7 @@ async def test_create_pres_no_revocation(self): ) ], request_presentations_attach=[ - AttachDecorator.data_base64(indy_proof_req, ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_NAME, ident="indy") ], ) px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) @@ -532,7 +515,7 @@ async def test_create_pres_no_revocation(self): ) req_creds = await indy_proof_req_preview2indy_requested_creds( - indy_proof_req, holder=self.holder + INDY_PROOF_REQ_NAME, preview=None, holder=self.holder ) (px_rec_out, pres_msg) = await self.manager.create_pres( @@ -542,12 +525,6 @@ async def test_create_pres_no_revocation(self): assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT async def test_create_pres_bad_revoc_state(self): - indy_proof_req = await PRES_PREVIEW.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) pres_request = V20PresRequest( formats=[ V20PresFormat( @@ -556,7 +533,7 @@ async def test_create_pres_bad_revoc_state(self): ) ], request_presentations_attach=[ - AttachDecorator.data_base64(indy_proof_req, ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_NAME, ident="indy") ], ) px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) @@ -612,19 +589,13 @@ async def test_create_pres_bad_revoc_state(self): ) req_creds = await indy_proof_req_preview2indy_requested_creds( - indy_proof_req, holder=self.holder + INDY_PROOF_REQ_NAME, preview=None, holder=self.holder ) with self.assertRaises(test_module.IndyHolderError): await self.manager.create_pres(px_rec_in, req_creds) async def test_create_pres_multi_matching_proposal_creds_names(self): - indy_proof_req = await PRES_PREVIEW_NAMES.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) pres_request = V20PresRequest( formats=[ V20PresFormat( @@ -633,7 +604,7 @@ async def test_create_pres_multi_matching_proposal_creds_names(self): ) ], request_presentations_attach=[ - AttachDecorator.data_base64(indy_proof_req, ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_NAMES, ident="indy") ], ) px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) @@ -708,7 +679,7 @@ async def test_create_pres_multi_matching_proposal_creds_names(self): ) req_creds = await indy_proof_req_preview2indy_requested_creds( - indy_proof_req, preview=PRES_PREVIEW_NAMES, holder=self.holder + INDY_PROOF_REQ_NAMES, preview=None, holder=self.holder ) assert not req_creds["self_attested_attributes"] assert len(req_creds["requested_attributes"]) == 1 @@ -721,12 +692,6 @@ async def test_create_pres_multi_matching_proposal_creds_names(self): assert px_rec_out.state == V20PresExRecord.STATE_PRESENTATION_SENT async def test_no_matching_creds_for_proof_req(self): - indy_proof_req = await PRES_PREVIEW.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) pres_request = V20PresRequest( formats=[ V20PresFormat( @@ -735,7 +700,7 @@ async def test_no_matching_creds_for_proof_req(self): ) ], request_presentations_attach=[ - AttachDecorator.data_base64(indy_proof_req, ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_NAMES, ident="indy") ], ) px_rec_in = V20PresExRecord(pres_request=pres_request.serialize()) @@ -744,7 +709,7 @@ async def test_no_matching_creds_for_proof_req(self): with self.assertRaises(ValueError): await indy_proof_req_preview2indy_requested_creds( - indy_proof_req, holder=self.holder + INDY_PROOF_REQ_NAMES, preview=None, holder=self.holder ) get_creds = async_mock.CoroutineMock( @@ -763,12 +728,6 @@ async def test_no_matching_creds_for_proof_req(self): async def test_receive_pres(self): connection_record = async_mock.MagicMock(connection_id=CONN_ID) - indy_proof_req = await PRES_PREVIEW.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) indy_proof = { "proof": {"proofs": []}, "requested_proof": { @@ -805,7 +764,7 @@ async def test_receive_pres(self): ) ], proposal_attach=[ - AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_NAME, ident="indy") ], ) pres_request = V20PresRequest( @@ -816,7 +775,7 @@ async def test_receive_pres(self): ) ], request_presentations_attach=[ - AttachDecorator.data_base64(indy_proof_req, ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_NAME, ident="indy") ], ) pres = V20Pres( @@ -838,8 +797,8 @@ async def test_receive_pres(self): # cover by_format property by_format = px_rec_dummy.by_format - assert by_format.get("pres_proposal").get("indy") == PRES_PREVIEW.serialize() - assert by_format.get("pres_request").get("indy") == indy_proof_req + assert by_format.get("pres_proposal").get("indy") == INDY_PROOF_REQ_NAME + assert by_format.get("pres_request").get("indy") == INDY_PROOF_REQ_NAME with async_mock.patch.object( V20PresExRecord, "save", autospec=True @@ -861,12 +820,12 @@ async def test_receive_pres(self): async def test_receive_pres_bait_and_switch(self): connection_record = async_mock.MagicMock(connection_id=CONN_ID) - indy_proof_req = await PRES_PREVIEW.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) + indy_proof_req = deepcopy(INDY_PROOF_REQ_NAME) + indy_proof_req["requested_attributes"]["1_screencapture_uuid"]["restrictions"][ + 0 + ][ + "attr::screenCapture::value" + ] = "c2NyZWVuIGNhcHR1cmUgc2hvd2luZyBzY29yZSBpbiB0aGUgbWlsbGlvbnM=" indy_proof_x = { "proof": {"proofs": []}, "requested_proof": { @@ -876,7 +835,7 @@ async def test_receive_pres_bait_and_switch(self): "raw": "Richie Knucklez", "encoded": "12345678901234567890", }, - "1_screencapture_uuid": { # mismatch vs PRES_PREVIEW + "1_screencapture_uuid": { # mismatch vs request "sub_proof_index": 0, "raw": "bm90IHRoZSBzYW1lIHNjcmVlbiBjYXB0dXJl", "encoded": "98765432109876543210", @@ -902,9 +861,7 @@ async def test_receive_pres_bait_and_switch(self): format_=V20PresFormat.Format.INDY.aries, ) ], - proposal_attach=[ - AttachDecorator.data_base64(PRES_PREVIEW.serialize(), ident="indy") - ], + proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], ) pres_request = V20PresRequest( formats=[ @@ -942,37 +899,59 @@ async def test_receive_pres_bait_and_switch(self): retrieve_ex.return_value = px_rec_dummy with self.assertRaises(V20PresManagerError) as context: await self.manager.receive_pres(pres_x, connection_record) - assert "mismatches" in str(context.exception) + assert "not in requested value(s)" in str(context.exception) - async def test_receive_pres_connection_less(self): - px_rec_dummy = V20PresExRecord() - message = async_mock.MagicMock() + indy_proof_req["requested_attributes"]["shenanigans"] = indy_proof_req[ + "requested_attributes" + ].pop("1_screencapture_uuid") + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres_x = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=V20PresFormat.Format.INDY.aries, + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof_x, ident="indy") + ], + ) + px_rec_dummy = V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + pres_request=pres_request.serialize(), + pres=pres_x.serialize(), + ) with async_mock.patch.object( V20PresExRecord, "save", autospec=True ) as save_ex, async_mock.patch.object( V20PresExRecord, "retrieve_by_tag_filter", autospec=True - ) as retrieve_ex, async_mock.patch.object( - self.profile, - "session", - async_mock.MagicMock(return_value=self.profile.session()), - ) as session: + ) as retrieve_ex: retrieve_ex.return_value = px_rec_dummy - px_rec_out = await self.manager.receive_pres(message, None) - retrieve_ex.assert_called_once_with( - session.return_value, {"thread_id": message._thread_id}, None - ) - save_ex.assert_called_once() - - assert px_rec_out.state == (V20PresExRecord.STATE_PRESENTATION_RECEIVED) + with self.assertRaises(V20PresManagerError) as context: + await self.manager.receive_pres(pres_x, connection_record) + assert "Presentation referent" in str(context.exception) async def test_verify_pres(self): - indy_proof_req = await PRES_PREVIEW.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) indy_proof = { "proof": {"proofs": []}, "requested_proof": { @@ -1010,7 +989,7 @@ async def test_verify_pres(self): ], will_confirm=True, request_presentations_attach=[ - AttachDecorator.data_base64(indy_proof_req, ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_NAME, ident="indy") ], ) pres = V20Pres( @@ -1036,12 +1015,6 @@ async def test_verify_pres(self): assert px_rec_out.state == (V20PresExRecord.STATE_DONE) async def test_verify_pres_with_revocation(self): - indy_proof_req = await PRES_PREVIEW.indy_proof_request( - name=PROOF_REQ_NAME, - version=PROOF_REQ_VERSION, - nonce=PROOF_REQ_NONCE, - ledger=self.ledger, - ) indy_proof = { "proof": {"proofs": []}, "requested_proof": { @@ -1078,7 +1051,7 @@ async def test_verify_pres_with_revocation(self): ) ], request_presentations_attach=[ - AttachDecorator.data_base64(indy_proof_req, ident="indy") + AttachDecorator.data_base64(INDY_PROOF_REQ_NAME, ident="indy") ], ) pres = V20Pres( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py index bf4d96a144..ceadf6632f 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_routes.py @@ -1,3 +1,4 @@ +from copy import deepcopy from time import time from asynctest import TestCase as AsyncTestCase @@ -11,7 +12,6 @@ from .....ledger.base import BaseLedger from .....storage.error import StorageNotFoundError -from ...indy.pres_preview import IndyPresAttrSpec, IndyPresPreview from ...indy.proof_request import IndyProofReqAttrSpecSchema from .. import routes as test_module @@ -21,23 +21,37 @@ S_ID = f"{ISSUER_DID}:2:vidya:1.0" CD_ID = f"{ISSUER_DID}:3:CL:{S_ID}:tag1" RR_ID = f"{ISSUER_DID}:4:{CD_ID}:CL_ACCUM:0" -INDY_PRES_PREVIEW = IndyPresPreview( - attributes=[ - IndyPresAttrSpec( - name="player", - cred_def_id=CD_ID, - value="Richie Knucklez", - ), - IndyPresAttrSpec( - name="screenCapture", - cred_def_id=CD_ID, - mime_type="image/png", - value="aW1hZ2luZSBhIHNjcmVlbiBjYXB0dXJl", - ), - ], - predicates=[], -) +PROOF_REQ_NAME = "name" +PROOF_REQ_VERSION = "1.0" +PROOF_REQ_NONCE = "12345" + NOW = int(time()) +INDY_PROOF_REQ = { + "name": PROOF_REQ_NAME, + "version": PROOF_REQ_VERSION, + "nonce": PROOF_REQ_NONCE, + "requested_attributes": { + "0_player_uuid": { + "name": "player", + "restrictions": [{"cred_def_id": CD_ID}], + "non_revoked": {"from": NOW, "to": NOW}, + }, + "1_screencapture_uuid": { + "name": "screenCapture", + "restrictions": [{"cred_def_id": CD_ID}], + "non_revoked": {"from": NOW, "to": NOW}, + }, + }, + "requested_predicates": { + "0_highscore_GE_uuid": { + "name": "highScore", + "p_type": ">=", + "p_value": 1000000, + "restrictions": [{"cred_def_id": CD_ID}], + "non_revoked": {"from": NOW, "to": NOW}, + } + }, +} class TestPresentProofRoutes(AsyncTestCase): @@ -102,7 +116,7 @@ def setUp(self): ) async def test_validate(self): - schema = test_module.V20PresPreviewByFormatSchema() + schema = test_module.V20PresProposalByFormatSchema() schema.validate_fields({"indy": {"attributes": [], "predicates": []}}) schema.validate_fields({"dif": {"some_dif_criterion": "..."}}) schema.validate_fields( @@ -355,8 +369,8 @@ async def test_present_proof_send_proposal(self): self.request.json = async_mock.CoroutineMock( return_value={ "connection_id": "dummy-conn-id", - "presentation_preview": { - V20PresFormat.Format.INDY.api: INDY_PRES_PREVIEW.serialize() + "presentation_proposal": { + V20PresFormat.Format.INDY.api: INDY_PROOF_REQ }, } ) @@ -427,11 +441,7 @@ async def test_present_proof_send_proposal_x(self): await test_module.present_proof_send_proposal(self.request) async def test_present_proof_create_request(self): - indy_proof_req = await INDY_PRES_PREVIEW.indy_proof_request( - name="proof-request", - version="v1.0", - ledger=self.ledger, - ) + indy_proof_req = deepcopy(INDY_PROOF_REQ) indy_proof_req.pop("nonce") # exercise _add_nonce() self.request.json = async_mock.CoroutineMock( @@ -466,15 +476,10 @@ async def test_present_proof_create_request(self): ) async def test_present_proof_create_request_x(self): - indy_proof_req = await INDY_PRES_PREVIEW.indy_proof_request( - name="proof-request", - version="v1.0", - ledger=self.ledger, - ) self.request.json = async_mock.CoroutineMock( return_value={ "comment": "dummy", - "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, + "presentation_request": {V20PresFormat.Format.INDY.api: INDY_PROOF_REQ}, } ) @@ -497,16 +502,11 @@ async def test_present_proof_create_request_x(self): await test_module.present_proof_create_request(self.request) async def test_present_proof_send_free_request(self): - indy_proof_req = await INDY_PRES_PREVIEW.indy_proof_request( - name="proof-request", - version="v1.0", - ledger=self.ledger, - ) self.request.json = async_mock.CoroutineMock( return_value={ "connection_id": "dummy", "comment": "dummy", - "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, + "presentation_request": {V20PresFormat.Format.INDY.api: INDY_PROOF_REQ}, } ) @@ -570,16 +570,11 @@ async def test_present_proof_send_free_request_not_ready(self): await test_module.present_proof_send_free_request(self.request) async def test_present_proof_send_free_request_x(self): - indy_proof_req = await INDY_PRES_PREVIEW.indy_proof_request( - name="proof-request", - version="v1.0", - ledger=self.ledger, - ) self.request.json = async_mock.CoroutineMock( return_value={ "connection_id": "dummy", "comment": "dummy", - "presentation_request": {V20PresFormat.Format.INDY.api: indy_proof_req}, + "presentation_request": {V20PresFormat.Format.INDY.api: INDY_PROOF_REQ}, } ) From 26f6e2d4934b1d55e881e2528b9d65b26c8395d6 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Tue, 9 Mar 2021 15:01:47 -0800 Subject: [PATCH 115/243] add initial interfaces for VC storage, in-memory implementation Signed-off-by: Andrew Whitehead --- aries_cloudagent/core/in_memory.py | 15 ++ aries_cloudagent/holder/in_memory.py | 172 ++++++++++++++++++ aries_cloudagent/holder/models/__init__.py | 0 .../holder/models/tests/__init__.py | 0 .../holder/models/tests/test_vc_record.py | 37 ++++ aries_cloudagent/holder/models/vc_record.py | 52 ++++++ .../holder/tests/test_in_memory.py | 107 +++++++++++ aries_cloudagent/holder/vc_holder.py | 122 +++++++++++++ 8 files changed, 505 insertions(+) create mode 100644 aries_cloudagent/holder/in_memory.py create mode 100644 aries_cloudagent/holder/models/__init__.py create mode 100644 aries_cloudagent/holder/models/tests/__init__.py create mode 100644 aries_cloudagent/holder/models/tests/test_vc_record.py create mode 100644 aries_cloudagent/holder/models/vc_record.py create mode 100644 aries_cloudagent/holder/tests/test_in_memory.py create mode 100644 aries_cloudagent/holder/vc_holder.py diff --git a/aries_cloudagent/core/in_memory.py b/aries_cloudagent/core/in_memory.py index 55c7baa70c..3feaf870ba 100644 --- a/aries_cloudagent/core/in_memory.py +++ b/aries_cloudagent/core/in_memory.py @@ -2,8 +2,11 @@ from collections import OrderedDict from typing import Any, Mapping, Type +from weakref import ref from ..config.injection_context import InjectionContext +from ..config.provider import ClassProvider +from ..holder.vc_holder import VCHolder from ..storage.base import BaseStorage from ..utils.classloader import DeferLoad from ..wallet.base import BaseWallet @@ -32,6 +35,18 @@ def __init__(self, *, context: InjectionContext = None, name: str = None): self.local_dids = {} self.pair_dids = {} self.records = OrderedDict() + self.bind_providers() + + def bind_providers(self): + """Initialize the profile-level instance providers.""" + injector = self._context.injector + + injector.bind_provider( + VCHolder, + ClassProvider( + "aries_cloudagent.holder.in_memory.InMemoryVCHolder", ref(self) + ), + ) def session(self, context: InjectionContext = None) -> "ProfileSession": """Start a new interactive session with no transaction support requested.""" diff --git a/aries_cloudagent/holder/in_memory.py b/aries_cloudagent/holder/in_memory.py new file mode 100644 index 0000000000..b797e93580 --- /dev/null +++ b/aries_cloudagent/holder/in_memory.py @@ -0,0 +1,172 @@ +"""Basic in-memory storage implementation of VC holder interface.""" + +from aries_cloudagent.storage.record import StorageRecord +from typing import Mapping, Sequence + +from ..core.in_memory import InMemoryProfile + +from ..storage.in_memory import InMemoryStorage, InMemoryStorageSearch + +from .models.vc_record import VCRecord + +from .vc_holder import VCHolder, VCRecordSearch + +VC_CRED_RECORD_TYPE = "vc_cred" + + +def load_credential(record: StorageRecord) -> VCRecord: + """Convert an in-memory stored record into a VC record.""" + tags = {} + contexts = [] + types = [] + subject_ids = [] + issuer_id = None + given_id = None + for tagname, tagval in (record.tags or {}).items(): + if tagname.startswith("ctxt:"): + contexts.append(tagname[5:]) + elif tagname.startswith("type:"): + types.append(tagname[5:]) + elif tagname.startswith("subj:"): + subject_ids.append(tagname[5:]) + elif tagname == "issuer_id": + issuer_id = tagval + elif tagname == "given_id": + given_id = tagval + else: + tags[tagname] = tagval + return VCRecord( + contexts=contexts, + types=types, + issuer_id=issuer_id, + subject_ids=subject_ids, + value=record.value, + given_id=given_id, + tags=tags, + record_id=record.id, + ) + + +def serialize_credential(cred: VCRecord) -> StorageRecord: + """Convert a VC record into an in-memory stored record.""" + tags = {} + for ctx_val in cred.contexts: + tags[f"ctxt:{ctx_val}"] = "1" + for type_val in cred.types: + tags[f"type:{type_val}"] = "1" + for subj_id in cred.subject_ids: + tags[f"subj:{subj_id}"] = "1" + if cred.issuer_id: + tags["issuer_id"] = cred.issuer_id + if cred.given_id: + tags["given_id"] = cred.given_id + if cred.tags: + tags.update(cred.tags) + return StorageRecord(VC_CRED_RECORD_TYPE, cred.value, tags, cred.record_id) + + +class InMemoryVCHolder(VCHolder): + """Basic in-memory storage class.""" + + def __init__(self, profile: InMemoryProfile): + """Initialize the in-memory VC holder instance.""" + self._profile = profile + self._store = InMemoryStorage(profile) + + async def store_credential(self, cred: VCRecord): + """ + Add a new VC record to the store. + + Args: + cred: The VCRecord instance to store + Raises: + StorageDuplicateError: If the record_id is not unique + """ + record = serialize_credential(cred) + await self._store.add_record(record) + + async def retrieve_credential_by_id(self, record_id: str) -> VCRecord: + """ + Fetch a VC record by its record ID. + + Raises: + StorageNotFoundError: If the record is not found + """ + record = await self._store.get_record(VC_CRED_RECORD_TYPE, record_id) + return load_credential(record) + + async def retrieve_credential_by_given_id(self, given_id: str) -> VCRecord: + """ + Fetch a VC record by its given ID ('id' property). + + Raises: + StorageNotFoundError: If the record is not found + """ + record = await self._store.find_record( + VC_CRED_RECORD_TYPE, {"given_id": given_id} + ) + return load_credential(record) + + async def delete_credential(self, cred: VCRecord): + """ + Remove a previously-stored VC record. + + Raises: + StorageNotFoundError: If the record is not found + """ + await self._store.delete_record(serialize_credential(cred)) + + def search_credentials( + self, + contexts: Sequence[str] = None, + types: Sequence[str] = None, + issuer_id: str = None, + subject_id: str = None, + tag_query: Mapping = None, + ) -> "InMemoryVCRecordSearch": + """ + Start a new VC record search. + + Args: + contexts: An inclusive list of JSON-LD contexts to filter for + types: An inclusive list of JSON-LD types to filter for + issuer_id: The ID of the credential issuer + subject_id: The ID of one of the credential subjects + tag_filter: A tag filter clause + """ + query = {} + if contexts: + for ctx_val in contexts: + query[f"ctxt:{ctx_val}"] = "1" + if types: + for type_val in types: + query[f"type:{type_val}"] = "1" + if subject_id: + query[f"subj:{subject_id}"] = "1" + if issuer_id: + query["issuer_id"] = issuer_id + if tag_query: + query.update(tag_query) + search = self._store.search_records(VC_CRED_RECORD_TYPE, query) + return InMemoryVCRecordSearch(search) + + +class InMemoryVCRecordSearch(VCRecordSearch): + def __init__(self, search: InMemoryStorageSearch): + """Initialize the in-memory VC record search.""" + self._search = search + + async def fetch(self, max_count: int = None) -> Sequence[VCRecord]: + """ + Fetch the next list of VC records from the store. + + Args: + max_count: Max number of records to return. If not provided, + defaults to the backend's preferred page size + + Returns: + A list of `VCRecord` instances + + """ + rows = await self._search.fetch(max_count) + return [load_credential(r) for r in rows] diff --git a/aries_cloudagent/holder/models/__init__.py b/aries_cloudagent/holder/models/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/holder/models/tests/__init__.py b/aries_cloudagent/holder/models/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/aries_cloudagent/holder/models/tests/test_vc_record.py b/aries_cloudagent/holder/models/tests/test_vc_record.py new file mode 100644 index 0000000000..d3757098a2 --- /dev/null +++ b/aries_cloudagent/holder/models/tests/test_vc_record.py @@ -0,0 +1,37 @@ +from ..vc_record import VCRecord + + +class TestVCRecord: + def test_create(self): + contexts = [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1", + ] + types = [ + "https://www.w3.org/2018/credentials/v1/VerifiableCredential", + "https://www.w3.org/2018/credentials/examples/v1/UniversityDegreeCredential", + ] + issuer_id = "https://example.edu/issuers/14" + subject_ids = ["did:example:ebfeb1f712ebc6f1c276e12ec21"] + given_id = "http://example.edu/credentials/3732" + tags = {"tag": "value"} + value = "{}" + + record = VCRecord( + contexts=contexts, + types=types, + issuer_id=issuer_id, + subject_ids=subject_ids, + value=value, + given_id=given_id, + tags=tags, + ) + + assert record.contexts == contexts + assert record.types == types + assert record.subject_ids == subject_ids + assert record.issuer_id == issuer_id + assert record.given_id == given_id + assert record.record_id and type(record.record_id) is str + assert record.tags == tags + assert record.value == value diff --git a/aries_cloudagent/holder/models/vc_record.py b/aries_cloudagent/holder/models/vc_record.py new file mode 100644 index 0000000000..68dff57858 --- /dev/null +++ b/aries_cloudagent/holder/models/vc_record.py @@ -0,0 +1,52 @@ +"""Model for representing a stored verifiable credential.""" + +from typing import Sequence +from uuid import uuid4 + + +class VCRecord: + """Verifiable credential storage record class.""" + + def __init__( + self, + *, + # context is required by spec + contexts: Sequence[str], + # type is required by spec + types: Sequence[str], + # issuer ID is required by spec + issuer_id: str, + # one or more subject IDs may be present + subject_ids: Sequence[str], + # credential encoded as a string + value: str, + # value of the credential 'id' property, if any + given_id: str = None, + # array of tags for retrieval (derived from attribute values) + tags: dict = None, + # specify the storage record ID + record_id: str = None, + ): + """Initialize some defaults on record.""" + self.contexts = list(contexts) if contexts else [] + self.types = list(types) if types else [] + self.issuer_id = issuer_id + self.subject_ids = list(subject_ids) if subject_ids else [] + self.value = value + self.given_id = given_id + self.tags = tags or {} + self.record_id = record_id or uuid4().hex + + def __eq__(self, other: object) -> bool: + if not isinstance(other, VCRecord): + return False + return ( + other.contexts == self.contexts + and other.types == self.types + and other.subject_ids == self.subject_ids + and other.issuer_id == self.issuer_id + and other.given_id == self.given_id + and other.record_id == self.record_id + and other.tags == self.tags + and other.value == self.value + ) diff --git a/aries_cloudagent/holder/tests/test_in_memory.py b/aries_cloudagent/holder/tests/test_in_memory.py new file mode 100644 index 0000000000..8a51df27a2 --- /dev/null +++ b/aries_cloudagent/holder/tests/test_in_memory.py @@ -0,0 +1,107 @@ +import pytest + +from asynctest import mock as async_mock + +from ...core.in_memory import InMemoryProfile +from ...storage.error import ( + StorageDuplicateError, + StorageError, + StorageNotFoundError, + StorageSearchError, +) +from ...storage.in_memory import ( + InMemoryStorage, + tag_value_match, + tag_query_match, +) +from ...storage.record import StorageRecord + +from ..in_memory import InMemoryVCHolder +from ..models.vc_record import VCRecord +from ..vc_holder import VCHolder + + +VC_CONTEXT = "https://www.w3.org/2018/credentials/v1" +VC_TYPE = "https://www.w3.org/2018/credentials/v1/VerifiableCredential" + + +@pytest.fixture() +def holder(): + profile = InMemoryProfile.test_profile() + yield InMemoryVCHolder(profile) + + +@pytest.fixture() +def store_search(): + profile = InMemoryProfile.test_profile() + yield InMemoryStorage(profile) + + +def test_record(tags={}) -> VCRecord: + return VCRecord( + contexts=[ + VC_CONTEXT, + "https://www.w3.org/2018/credentials/examples/v1", + ], + types=[ + VC_TYPE, + "https://www.w3.org/2018/credentials/examples/v1/UniversityDegreeCredential", + ], + issuer_id="https://example.edu/issuers/14", + subject_ids=["did:example:ebfeb1f712ebc6f1c276e12ec21"], + given_id="http://example.edu/credentials/3732", + tags={"tag": "value"}, + value="{}", + ) + + +class TestInMemoryVCHolder: + def test_repr(self, holder): + assert holder.__class__.__name__ in str(holder) + + @pytest.mark.asyncio + async def test_store_retrieve(self, holder: VCHolder): + record = test_record() + await holder.store_credential(record) + result = await holder.retrieve_credential_by_id(record.record_id) + assert result + assert result.contexts == record.contexts + assert result.types == record.types + assert result.record_id == record.record_id + assert result.issuer_id == record.issuer_id + assert result.subject_ids == record.subject_ids + assert result.value == record.value + assert result.tags == record.tags + + with pytest.raises(StorageDuplicateError): + await holder.store_credential(record) + + @pytest.mark.asyncio + async def test_delete(self, holder: VCHolder): + record = test_record() + await holder.store_credential(record) + await holder.delete_credential(record) + with pytest.raises(StorageNotFoundError): + await holder.retrieve_credential_by_id(record.record_id) + + @pytest.mark.asyncio + async def test_search(self, holder: VCHolder): + record = test_record() + await holder.store_credential(record) + + rows = await holder.search_credentials().fetch() + assert rows == [record] + + rows = await holder.search_credentials(contexts=[VC_CONTEXT]).fetch() + assert rows == [record] + + rows = await holder.search_credentials(contexts=["missing"]).fetch() + assert not rows + + # rows = await store.find_all_records(record.type, {}, None) + # assert len(rows) == 1 + # found = rows[0] + # assert found.id == record.id + # assert found.type == record.type + # assert found.value == record.value + # assert found.tags == record.tags diff --git a/aries_cloudagent/holder/vc_holder.py b/aries_cloudagent/holder/vc_holder.py new file mode 100644 index 0000000000..213d69a5ac --- /dev/null +++ b/aries_cloudagent/holder/vc_holder.py @@ -0,0 +1,122 @@ +from abc import ABC, abstractmethod +from typing import Mapping, Sequence + +from .models.vc_record import VCRecord + + +class VCHolder(ABC): + """Abstract base class for a verifiable credential holder.""" + + @abstractmethod + async def store_credential(self, cred: VCRecord): + """ + Add a new VC record to the store. + + Args: + cred: The VCRecord instance to store + Raises: + StorageDuplicateError: If the record_id is not unique + """ + + @abstractmethod + async def retrieve_credential_by_id(self, record_id: str) -> VCRecord: + """ + Fetch a VC record by its record ID. + + Raises: + StorageNotFoundError: If the record is not found + """ + + @abstractmethod + async def retrieve_credential_by_given_id(self, given_id: str) -> VCRecord: + """ + Fetch a VC record by its given ID ('id' property). + + Raises: + StorageNotFoundError: If the record is not found + """ + + @abstractmethod + async def delete_credential(self, cred: VCRecord): + """ + Remove a previously-stored VC record. + + Raises: + StorageNotFoundError: If the record is not found + """ + + @abstractmethod + def search_credentials( + self, + contexts: Sequence[str] = None, + types: Sequence[str] = None, + issuer_id: str = None, + subject_id: str = None, + tag_query: Mapping = None, + ) -> "VCRecordSearch": + """ + Start a new VC record search. + + Args: + contexts: An inclusive list of JSON-LD contexts to filter for + types: An inclusive list of JSON-LD types to filter for + issuer_id: The ID of the credential issuer + subject_id: The ID of one of the credential subjects + tag_filter: A tag filter clause + """ + + def __repr__(self) -> str: + """ + Return a human readable representation of this class. + + Returns: + A human readable string for this class + + """ + return "<{}>".format(self.__class__.__name__) + + +class VCRecordSearch(ABC): + @abstractmethod + async def fetch(self, max_count: int = None) -> Sequence[VCRecord]: + """ + Fetch the next list of VC records from the store. + + Args: + max_count: Max number of records to return. If not provided, + defaults to the backend's preferred page size + + Returns: + A list of `VCRecord` instances + + """ + + async def close(self): + """Dispose of the search query.""" + + def __aiter__(self): + """Async iterator magic method.""" + return IterVCRecordSearch(self) + + def __repr__(self) -> str: + """Human readable representation of this instance.""" + return "<{}>".format(self.__class__.__name__) + + +class IterVCRecordSearch: + """A generic record search async iterator.""" + + def __init__(self, search: VCRecordSearch, page_size: int = None): + """Instantiate a new `IterVCRecordSearch` instance.""" + self._buffer = None + self._page_size = page_size + self._search = search + + async def __anext__(self): + """Async iterator magic method.""" + if not self._buffer: + self._buffer = await self._search.fetch(self._page_size) or [] + try: + return self._buffer.pop(0) + except IndexError: + raise StopAsyncIteration From 0ae0043fb823b1ec39e19a04b686e5868e035375 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Tue, 9 Mar 2021 15:26:58 -0800 Subject: [PATCH 116/243] fix flake8 errors Signed-off-by: Andrew Whitehead --- aries_cloudagent/holder/in_memory.py | 7 +++++++ aries_cloudagent/holder/models/vc_record.py | 1 + aries_cloudagent/holder/vc_holder.py | 9 +++++++++ 3 files changed, 17 insertions(+) diff --git a/aries_cloudagent/holder/in_memory.py b/aries_cloudagent/holder/in_memory.py index b797e93580..a8b53a7c6e 100644 --- a/aries_cloudagent/holder/in_memory.py +++ b/aries_cloudagent/holder/in_memory.py @@ -81,6 +81,7 @@ async def store_credential(self, cred: VCRecord): cred: The VCRecord instance to store Raises: StorageDuplicateError: If the record_id is not unique + """ record = serialize_credential(cred) await self._store.add_record(record) @@ -91,6 +92,7 @@ async def retrieve_credential_by_id(self, record_id: str) -> VCRecord: Raises: StorageNotFoundError: If the record is not found + """ record = await self._store.get_record(VC_CRED_RECORD_TYPE, record_id) return load_credential(record) @@ -101,6 +103,7 @@ async def retrieve_credential_by_given_id(self, given_id: str) -> VCRecord: Raises: StorageNotFoundError: If the record is not found + """ record = await self._store.find_record( VC_CRED_RECORD_TYPE, {"given_id": given_id} @@ -113,6 +116,7 @@ async def delete_credential(self, cred: VCRecord): Raises: StorageNotFoundError: If the record is not found + """ await self._store.delete_record(serialize_credential(cred)) @@ -133,6 +137,7 @@ def search_credentials( issuer_id: The ID of the credential issuer subject_id: The ID of one of the credential subjects tag_filter: A tag filter clause + """ query = {} if contexts: @@ -152,6 +157,8 @@ def search_credentials( class InMemoryVCRecordSearch(VCRecordSearch): + """In-memory search for VC records.""" + def __init__(self, search: InMemoryStorageSearch): """Initialize the in-memory VC record search.""" self._search = search diff --git a/aries_cloudagent/holder/models/vc_record.py b/aries_cloudagent/holder/models/vc_record.py index 68dff57858..d8e76211c4 100644 --- a/aries_cloudagent/holder/models/vc_record.py +++ b/aries_cloudagent/holder/models/vc_record.py @@ -38,6 +38,7 @@ def __init__( self.record_id = record_id or uuid4().hex def __eq__(self, other: object) -> bool: + """Compare two VC records for equality.""" if not isinstance(other, VCRecord): return False return ( diff --git a/aries_cloudagent/holder/vc_holder.py b/aries_cloudagent/holder/vc_holder.py index 213d69a5ac..f2623e8bcb 100644 --- a/aries_cloudagent/holder/vc_holder.py +++ b/aries_cloudagent/holder/vc_holder.py @@ -1,3 +1,5 @@ +"""Abstract interfaces for VC holder implementations.""" + from abc import ABC, abstractmethod from typing import Mapping, Sequence @@ -16,6 +18,7 @@ async def store_credential(self, cred: VCRecord): cred: The VCRecord instance to store Raises: StorageDuplicateError: If the record_id is not unique + """ @abstractmethod @@ -25,6 +28,7 @@ async def retrieve_credential_by_id(self, record_id: str) -> VCRecord: Raises: StorageNotFoundError: If the record is not found + """ @abstractmethod @@ -34,6 +38,7 @@ async def retrieve_credential_by_given_id(self, given_id: str) -> VCRecord: Raises: StorageNotFoundError: If the record is not found + """ @abstractmethod @@ -43,6 +48,7 @@ async def delete_credential(self, cred: VCRecord): Raises: StorageNotFoundError: If the record is not found + """ @abstractmethod @@ -63,6 +69,7 @@ def search_credentials( issuer_id: The ID of the credential issuer subject_id: The ID of one of the credential subjects tag_filter: A tag filter clause + """ def __repr__(self) -> str: @@ -77,6 +84,8 @@ def __repr__(self) -> str: class VCRecordSearch(ABC): + """A VC record search in progress.""" + @abstractmethod async def fetch(self, max_count: int = None) -> Sequence[VCRecord]: """ From b636642f422464654b00f08e6d7f0d8830d8d7f0 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Tue, 9 Mar 2021 16:13:09 -0800 Subject: [PATCH 117/243] extend holder tests Signed-off-by: Andrew Whitehead --- .../holder/tests/test_in_memory.py | 51 +++++++++++-------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/aries_cloudagent/holder/tests/test_in_memory.py b/aries_cloudagent/holder/tests/test_in_memory.py index 8a51df27a2..0375cb02b0 100644 --- a/aries_cloudagent/holder/tests/test_in_memory.py +++ b/aries_cloudagent/holder/tests/test_in_memory.py @@ -23,6 +23,9 @@ VC_CONTEXT = "https://www.w3.org/2018/credentials/v1" VC_TYPE = "https://www.w3.org/2018/credentials/v1/VerifiableCredential" +VC_SUBJECT_ID = "did:example:ebfeb1f712ebc6f1c276e12ec21" +VC_ISSUER_ID = "https://example.edu/issuers/14" +VC_GIVEN_ID = "http://example.edu/credentials/3732" @pytest.fixture() @@ -47,9 +50,9 @@ def test_record(tags={}) -> VCRecord: VC_TYPE, "https://www.w3.org/2018/credentials/examples/v1/UniversityDegreeCredential", ], - issuer_id="https://example.edu/issuers/14", - subject_ids=["did:example:ebfeb1f712ebc6f1c276e12ec21"], - given_id="http://example.edu/credentials/3732", + issuer_id=VC_ISSUER_ID, + subject_ids=[VC_SUBJECT_ID], + given_id=VC_GIVEN_ID, tags={"tag": "value"}, value="{}", ) @@ -64,18 +67,20 @@ async def test_store_retrieve(self, holder: VCHolder): record = test_record() await holder.store_credential(record) result = await holder.retrieve_credential_by_id(record.record_id) - assert result - assert result.contexts == record.contexts - assert result.types == record.types - assert result.record_id == record.record_id - assert result.issuer_id == record.issuer_id - assert result.subject_ids == record.subject_ids - assert result.value == record.value - assert result.tags == record.tags + assert result == record + + result = await holder.retrieve_credential_by_given_id(record.given_id) + assert result == record with pytest.raises(StorageDuplicateError): await holder.store_credential(record) + with pytest.raises(StorageNotFoundError): + await holder.retrieve_credential_by_id("missing") + + with pytest.raises(StorageNotFoundError): + await holder.retrieve_credential_by_given_id("missing") + @pytest.mark.asyncio async def test_delete(self, holder: VCHolder): record = test_record() @@ -92,16 +97,22 @@ async def test_search(self, holder: VCHolder): rows = await holder.search_credentials().fetch() assert rows == [record] - rows = await holder.search_credentials(contexts=[VC_CONTEXT]).fetch() + rows = await holder.search_credentials( + contexts=[VC_CONTEXT], + types=[VC_TYPE], + subject_id=VC_SUBJECT_ID, + issuer_id=VC_ISSUER_ID, + ).fetch() assert rows == [record] - rows = await holder.search_credentials(contexts=["missing"]).fetch() + rows = await holder.search_credentials(contexts=["other-context"]).fetch() assert not rows - # rows = await store.find_all_records(record.type, {}, None) - # assert len(rows) == 1 - # found = rows[0] - # assert found.id == record.id - # assert found.type == record.type - # assert found.value == record.value - # assert found.tags == record.tags + rows = await holder.search_credentials(types=["other-type"]).fetch() + assert not rows + + rows = await holder.search_credentials(subject_id="other subject").fetch() + assert not rows + + rows = await holder.search_credentials(issuer_id="other issuer").fetch() + assert not rows From 5daafd5efbd580daea52052f3b81cce942e98b60 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Tue, 9 Mar 2021 21:27:22 -0800 Subject: [PATCH 118/243] add schema ID to VCRecord Signed-off-by: Andrew Whitehead --- aries_cloudagent/holder/in_memory.py | 10 ++++++++++ aries_cloudagent/holder/models/tests/test_vc_record.py | 3 +++ aries_cloudagent/holder/models/vc_record.py | 6 +++++- aries_cloudagent/holder/tests/test_in_memory.py | 6 ++++++ aries_cloudagent/holder/vc_holder.py | 2 ++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/aries_cloudagent/holder/in_memory.py b/aries_cloudagent/holder/in_memory.py index a8b53a7c6e..801a24298c 100644 --- a/aries_cloudagent/holder/in_memory.py +++ b/aries_cloudagent/holder/in_memory.py @@ -20,6 +20,7 @@ def load_credential(record: StorageRecord) -> VCRecord: contexts = [] types = [] subject_ids = [] + schema_id = None issuer_id = None given_id = None for tagname, tagval in (record.tags or {}).items(): @@ -29,6 +30,8 @@ def load_credential(record: StorageRecord) -> VCRecord: types.append(tagname[5:]) elif tagname.startswith("subj:"): subject_ids.append(tagname[5:]) + elif tagname == "schema_id": + schema_id = tagval elif tagname == "issuer_id": issuer_id = tagval elif tagname == "given_id": @@ -38,6 +41,7 @@ def load_credential(record: StorageRecord) -> VCRecord: return VCRecord( contexts=contexts, types=types, + schema_id=schema_id, issuer_id=issuer_id, subject_ids=subject_ids, value=record.value, @@ -56,6 +60,8 @@ def serialize_credential(cred: VCRecord) -> StorageRecord: tags[f"type:{type_val}"] = "1" for subj_id in cred.subject_ids: tags[f"subj:{subj_id}"] = "1" + if cred.schema_id: + tags["schema_id"] = cred.schema_id if cred.issuer_id: tags["issuer_id"] = cred.issuer_id if cred.given_id: @@ -126,6 +132,7 @@ def search_credentials( types: Sequence[str] = None, issuer_id: str = None, subject_id: str = None, + schema_id: str = None, tag_query: Mapping = None, ) -> "InMemoryVCRecordSearch": """ @@ -136,6 +143,7 @@ def search_credentials( types: An inclusive list of JSON-LD types to filter for issuer_id: The ID of the credential issuer subject_id: The ID of one of the credential subjects + schema_id: The ID of the credential schema tag_filter: A tag filter clause """ @@ -150,6 +158,8 @@ def search_credentials( query[f"subj:{subject_id}"] = "1" if issuer_id: query["issuer_id"] = issuer_id + if schema_id: + query["schema_id"] = schema_id if tag_query: query.update(tag_query) search = self._store.search_records(VC_CRED_RECORD_TYPE, query) diff --git a/aries_cloudagent/holder/models/tests/test_vc_record.py b/aries_cloudagent/holder/models/tests/test_vc_record.py index d3757098a2..abda0ae6f0 100644 --- a/aries_cloudagent/holder/models/tests/test_vc_record.py +++ b/aries_cloudagent/holder/models/tests/test_vc_record.py @@ -13,6 +13,7 @@ def test_create(self): ] issuer_id = "https://example.edu/issuers/14" subject_ids = ["did:example:ebfeb1f712ebc6f1c276e12ec21"] + schema_id = "https://example.org/examples/degree.json" given_id = "http://example.edu/credentials/3732" tags = {"tag": "value"} value = "{}" @@ -22,6 +23,7 @@ def test_create(self): types=types, issuer_id=issuer_id, subject_ids=subject_ids, + schema_id=schema_id, value=value, given_id=given_id, tags=tags, @@ -31,6 +33,7 @@ def test_create(self): assert record.types == types assert record.subject_ids == subject_ids assert record.issuer_id == issuer_id + assert record.schema_id == schema_id assert record.given_id == given_id assert record.record_id and type(record.record_id) is str assert record.tags == tags diff --git a/aries_cloudagent/holder/models/vc_record.py b/aries_cloudagent/holder/models/vc_record.py index d8e76211c4..c9ffd774b5 100644 --- a/aries_cloudagent/holder/models/vc_record.py +++ b/aries_cloudagent/holder/models/vc_record.py @@ -18,8 +18,10 @@ def __init__( issuer_id: str, # one or more subject IDs may be present subject_ids: Sequence[str], - # credential encoded as a string + # the credential encoded as a serialized JSON string value: str, + # credential schema ID, if any + schema_id: str, # value of the credential 'id' property, if any given_id: str = None, # array of tags for retrieval (derived from attribute values) @@ -33,6 +35,7 @@ def __init__( self.issuer_id = issuer_id self.subject_ids = list(subject_ids) if subject_ids else [] self.value = value + self.schema_id = schema_id self.given_id = given_id self.tags = tags or {} self.record_id = record_id or uuid4().hex @@ -46,6 +49,7 @@ def __eq__(self, other: object) -> bool: and other.types == self.types and other.subject_ids == self.subject_ids and other.issuer_id == self.issuer_id + and other.schema_id == self.schema_id and other.given_id == self.given_id and other.record_id == self.record_id and other.tags == self.tags diff --git a/aries_cloudagent/holder/tests/test_in_memory.py b/aries_cloudagent/holder/tests/test_in_memory.py index 0375cb02b0..3d8b4ad0ee 100644 --- a/aries_cloudagent/holder/tests/test_in_memory.py +++ b/aries_cloudagent/holder/tests/test_in_memory.py @@ -25,6 +25,7 @@ VC_TYPE = "https://www.w3.org/2018/credentials/v1/VerifiableCredential" VC_SUBJECT_ID = "did:example:ebfeb1f712ebc6f1c276e12ec21" VC_ISSUER_ID = "https://example.edu/issuers/14" +VC_SCHEMA_ID = "https://example.org/examples/degree.json" VC_GIVEN_ID = "http://example.edu/credentials/3732" @@ -52,6 +53,7 @@ def test_record(tags={}) -> VCRecord: ], issuer_id=VC_ISSUER_ID, subject_ids=[VC_SUBJECT_ID], + schema_id=VC_SCHEMA_ID, given_id=VC_GIVEN_ID, tags={"tag": "value"}, value="{}", @@ -102,6 +104,7 @@ async def test_search(self, holder: VCHolder): types=[VC_TYPE], subject_id=VC_SUBJECT_ID, issuer_id=VC_ISSUER_ID, + schema_id=VC_SCHEMA_ID, ).fetch() assert rows == [record] @@ -116,3 +119,6 @@ async def test_search(self, holder: VCHolder): rows = await holder.search_credentials(issuer_id="other issuer").fetch() assert not rows + + rows = await holder.search_credentials(schema_id="other schema").fetch() + assert not rows diff --git a/aries_cloudagent/holder/vc_holder.py b/aries_cloudagent/holder/vc_holder.py index f2623e8bcb..abb983fd13 100644 --- a/aries_cloudagent/holder/vc_holder.py +++ b/aries_cloudagent/holder/vc_holder.py @@ -58,6 +58,7 @@ def search_credentials( types: Sequence[str] = None, issuer_id: str = None, subject_id: str = None, + schema_id: str = None, tag_query: Mapping = None, ) -> "VCRecordSearch": """ @@ -68,6 +69,7 @@ def search_credentials( types: An inclusive list of JSON-LD types to filter for issuer_id: The ID of the credential issuer subject_id: The ID of one of the credential subjects + schema_id: The ID of the credential schema tag_filter: A tag filter clause """ From fbb2e90cba5e1c4737c8e82d4f574fe1bc51bff5 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Wed, 10 Mar 2021 10:14:48 -0800 Subject: [PATCH 119/243] switch schema ID to mult-value; additional test coverage Signed-off-by: Andrew Whitehead --- aries_cloudagent/holder/in_memory.py | 23 ++++--- .../holder/models/tests/test_vc_record.py | 67 ++++++++++++------- aries_cloudagent/holder/models/vc_record.py | 8 +-- .../holder/tests/test_in_memory.py | 18 +++-- aries_cloudagent/holder/vc_holder.py | 4 +- 5 files changed, 72 insertions(+), 48 deletions(-) diff --git a/aries_cloudagent/holder/in_memory.py b/aries_cloudagent/holder/in_memory.py index 801a24298c..0422baad6d 100644 --- a/aries_cloudagent/holder/in_memory.py +++ b/aries_cloudagent/holder/in_memory.py @@ -19,8 +19,8 @@ def load_credential(record: StorageRecord) -> VCRecord: tags = {} contexts = [] types = [] + schema_ids = [] subject_ids = [] - schema_id = None issuer_id = None given_id = None for tagname, tagval in (record.tags or {}).items(): @@ -28,10 +28,10 @@ def load_credential(record: StorageRecord) -> VCRecord: contexts.append(tagname[5:]) elif tagname.startswith("type:"): types.append(tagname[5:]) + elif tagname.startswith("schm:"): + schema_ids.append(tagname[5:]) elif tagname.startswith("subj:"): subject_ids.append(tagname[5:]) - elif tagname == "schema_id": - schema_id = tagval elif tagname == "issuer_id": issuer_id = tagval elif tagname == "given_id": @@ -41,7 +41,7 @@ def load_credential(record: StorageRecord) -> VCRecord: return VCRecord( contexts=contexts, types=types, - schema_id=schema_id, + schema_ids=schema_ids, issuer_id=issuer_id, subject_ids=subject_ids, value=record.value, @@ -58,10 +58,10 @@ def serialize_credential(cred: VCRecord) -> StorageRecord: tags[f"ctxt:{ctx_val}"] = "1" for type_val in cred.types: tags[f"type:{type_val}"] = "1" + for schema_val in cred.schema_ids: + tags[f"schm:{schema_val}"] = "1" for subj_id in cred.subject_ids: tags[f"subj:{subj_id}"] = "1" - if cred.schema_id: - tags["schema_id"] = cred.schema_id if cred.issuer_id: tags["issuer_id"] = cred.issuer_id if cred.given_id: @@ -130,20 +130,20 @@ def search_credentials( self, contexts: Sequence[str] = None, types: Sequence[str] = None, + schema_ids: str = None, issuer_id: str = None, subject_id: str = None, - schema_id: str = None, tag_query: Mapping = None, - ) -> "InMemoryVCRecordSearch": + ) -> "VCRecordSearch": """ Start a new VC record search. Args: contexts: An inclusive list of JSON-LD contexts to filter for types: An inclusive list of JSON-LD types to filter for + schema_ids: An inclusive list of credential schema identifiers issuer_id: The ID of the credential issuer subject_id: The ID of one of the credential subjects - schema_id: The ID of the credential schema tag_filter: A tag filter clause """ @@ -154,12 +154,13 @@ def search_credentials( if types: for type_val in types: query[f"type:{type_val}"] = "1" + if schema_ids: + for schema_val in schema_ids: + query[f"schm:{schema_val}"] = "1" if subject_id: query[f"subj:{subject_id}"] = "1" if issuer_id: query["issuer_id"] = issuer_id - if schema_id: - query["schema_id"] = schema_id if tag_query: query.update(tag_query) search = self._store.search_records(VC_CRED_RECORD_TYPE, query) diff --git a/aries_cloudagent/holder/models/tests/test_vc_record.py b/aries_cloudagent/holder/models/tests/test_vc_record.py index abda0ae6f0..8ac8694036 100644 --- a/aries_cloudagent/holder/models/tests/test_vc_record.py +++ b/aries_cloudagent/holder/models/tests/test_vc_record.py @@ -1,40 +1,55 @@ from ..vc_record import VCRecord +contexts = [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1", +] +types = [ + "https://www.w3.org/2018/credentials/v1/VerifiableCredential", + "https://www.w3.org/2018/credentials/examples/v1/UniversityDegreeCredential", +] +issuer_id = "https://example.edu/issuers/14" +subject_ids = ["did:example:ebfeb1f712ebc6f1c276e12ec21"] +schema_ids = ["https://example.org/examples/degree.json"] +given_id = "http://example.edu/credentials/3732" +tags = {"tag": "value"} +value = "{}" + + +def test_record() -> VCRecord: + return VCRecord( + contexts=contexts, + types=types, + schema_ids=schema_ids, + issuer_id=issuer_id, + subject_ids=subject_ids, + value=value, + given_id=given_id, + tags=tags, + ) + class TestVCRecord: def test_create(self): - contexts = [ - "https://www.w3.org/2018/credentials/v1", - "https://www.w3.org/2018/credentials/examples/v1", - ] - types = [ - "https://www.w3.org/2018/credentials/v1/VerifiableCredential", - "https://www.w3.org/2018/credentials/examples/v1/UniversityDegreeCredential", - ] - issuer_id = "https://example.edu/issuers/14" - subject_ids = ["did:example:ebfeb1f712ebc6f1c276e12ec21"] - schema_id = "https://example.org/examples/degree.json" - given_id = "http://example.edu/credentials/3732" - tags = {"tag": "value"} - value = "{}" - - record = VCRecord( - contexts=contexts, - types=types, - issuer_id=issuer_id, - subject_ids=subject_ids, - schema_id=schema_id, - value=value, - given_id=given_id, - tags=tags, - ) + record = test_record() assert record.contexts == contexts assert record.types == types + assert record.schema_ids == schema_ids assert record.subject_ids == subject_ids assert record.issuer_id == issuer_id - assert record.schema_id == schema_id assert record.given_id == given_id assert record.record_id and type(record.record_id) is str assert record.tags == tags assert record.value == value + + def test_eq(self): + record_a = test_record() + record_b = test_record() + + assert record_a != record_b + record_b.record_id = record_a.record_id + assert record_a == record_b + assert record_a != object() + record_b.contexts = [] + assert record_a != record_b diff --git a/aries_cloudagent/holder/models/vc_record.py b/aries_cloudagent/holder/models/vc_record.py index c9ffd774b5..93bc3d7003 100644 --- a/aries_cloudagent/holder/models/vc_record.py +++ b/aries_cloudagent/holder/models/vc_record.py @@ -18,10 +18,10 @@ def __init__( issuer_id: str, # one or more subject IDs may be present subject_ids: Sequence[str], + # one or more credential schema IDs may be present + schema_ids: Sequence[str], # the credential encoded as a serialized JSON string value: str, - # credential schema ID, if any - schema_id: str, # value of the credential 'id' property, if any given_id: str = None, # array of tags for retrieval (derived from attribute values) @@ -32,10 +32,10 @@ def __init__( """Initialize some defaults on record.""" self.contexts = list(contexts) if contexts else [] self.types = list(types) if types else [] + self.schema_ids = list(schema_ids) if schema_ids else [] self.issuer_id = issuer_id self.subject_ids = list(subject_ids) if subject_ids else [] self.value = value - self.schema_id = schema_id self.given_id = given_id self.tags = tags or {} self.record_id = record_id or uuid4().hex @@ -48,8 +48,8 @@ def __eq__(self, other: object) -> bool: other.contexts == self.contexts and other.types == self.types and other.subject_ids == self.subject_ids + and other.schema_ids == self.schema_ids and other.issuer_id == self.issuer_id - and other.schema_id == self.schema_id and other.given_id == self.given_id and other.record_id == self.record_id and other.tags == self.tags diff --git a/aries_cloudagent/holder/tests/test_in_memory.py b/aries_cloudagent/holder/tests/test_in_memory.py index 3d8b4ad0ee..ee1271321a 100644 --- a/aries_cloudagent/holder/tests/test_in_memory.py +++ b/aries_cloudagent/holder/tests/test_in_memory.py @@ -51,9 +51,9 @@ def test_record(tags={}) -> VCRecord: VC_TYPE, "https://www.w3.org/2018/credentials/examples/v1/UniversityDegreeCredential", ], + schema_ids=[VC_SCHEMA_ID], issuer_id=VC_ISSUER_ID, subject_ids=[VC_SUBJECT_ID], - schema_id=VC_SCHEMA_ID, given_id=VC_GIVEN_ID, tags={"tag": "value"}, value="{}", @@ -99,12 +99,20 @@ async def test_search(self, holder: VCHolder): rows = await holder.search_credentials().fetch() assert rows == [record] + # test async iter and repr + search = holder.search_credentials() + assert search.__class__.__name__ in str(search) + rows = [] + async for row in search: + rows.append(row) + assert rows == [record] + rows = await holder.search_credentials( contexts=[VC_CONTEXT], types=[VC_TYPE], + schema_ids=[VC_SCHEMA_ID], subject_id=VC_SUBJECT_ID, issuer_id=VC_ISSUER_ID, - schema_id=VC_SCHEMA_ID, ).fetch() assert rows == [record] @@ -114,11 +122,11 @@ async def test_search(self, holder: VCHolder): rows = await holder.search_credentials(types=["other-type"]).fetch() assert not rows - rows = await holder.search_credentials(subject_id="other subject").fetch() + rows = await holder.search_credentials(schema_ids=["other schema"]).fetch() assert not rows - rows = await holder.search_credentials(issuer_id="other issuer").fetch() + rows = await holder.search_credentials(subject_id="other subject").fetch() assert not rows - rows = await holder.search_credentials(schema_id="other schema").fetch() + rows = await holder.search_credentials(issuer_id="other issuer").fetch() assert not rows diff --git a/aries_cloudagent/holder/vc_holder.py b/aries_cloudagent/holder/vc_holder.py index abb983fd13..f17ede5df5 100644 --- a/aries_cloudagent/holder/vc_holder.py +++ b/aries_cloudagent/holder/vc_holder.py @@ -56,9 +56,9 @@ def search_credentials( self, contexts: Sequence[str] = None, types: Sequence[str] = None, + schema_ids: str = None, issuer_id: str = None, subject_id: str = None, - schema_id: str = None, tag_query: Mapping = None, ) -> "VCRecordSearch": """ @@ -67,9 +67,9 @@ def search_credentials( Args: contexts: An inclusive list of JSON-LD contexts to filter for types: An inclusive list of JSON-LD types to filter for + schema_ids: An inclusive list of credential schema identifiers issuer_id: The ID of the credential issuer subject_id: The ID of one of the credential subjects - schema_id: The ID of the credential schema tag_filter: A tag filter clause """ From 07ede9da3ce9cef5b73dd49cc74615feace669af Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Wed, 10 Mar 2021 11:22:02 -0800 Subject: [PATCH 120/243] add indy-sdk backend for VCHolder; use sets for multi-value fields; reorganize Signed-off-by: Andrew Whitehead --- aries_cloudagent/core/in_memory.py | 5 +- aries_cloudagent/indy/sdk/profile.py | 8 + .../storage/tests/test_indy_storage.py | 2 +- .../models => storage/vc_holder}/__init__.py | 0 .../vc_holder/base.py} | 4 +- .../vc_holder}/in_memory.py | 11 +- aries_cloudagent/storage/vc_holder/indy.py | 189 ++++++++++++++++++ .../vc_holder}/tests/__init__.py | 0 .../tests/test_in_memory_vc_holder.py} | 26 +-- .../vc_holder/tests/test_indy_vc_holder.py | 41 ++++ .../vc_holder}/tests/test_vc_record.py | 10 +- .../models => storage/vc_holder}/vc_record.py | 8 +- 12 files changed, 263 insertions(+), 41 deletions(-) rename aries_cloudagent/{holder/models => storage/vc_holder}/__init__.py (100%) rename aries_cloudagent/{holder/vc_holder.py => storage/vc_holder/base.py} (97%) rename aries_cloudagent/{holder => storage/vc_holder}/in_memory.py (95%) create mode 100644 aries_cloudagent/storage/vc_holder/indy.py rename aries_cloudagent/{holder/models => storage/vc_holder}/tests/__init__.py (100%) rename aries_cloudagent/{holder/tests/test_in_memory.py => storage/vc_holder/tests/test_in_memory_vc_holder.py} (86%) create mode 100644 aries_cloudagent/storage/vc_holder/tests/test_indy_vc_holder.py rename aries_cloudagent/{holder/models => storage/vc_holder}/tests/test_vc_record.py (86%) rename aries_cloudagent/{holder/models => storage/vc_holder}/vc_record.py (87%) diff --git a/aries_cloudagent/core/in_memory.py b/aries_cloudagent/core/in_memory.py index 3feaf870ba..2fc4374c6f 100644 --- a/aries_cloudagent/core/in_memory.py +++ b/aries_cloudagent/core/in_memory.py @@ -6,8 +6,8 @@ from ..config.injection_context import InjectionContext from ..config.provider import ClassProvider -from ..holder.vc_holder import VCHolder from ..storage.base import BaseStorage +from ..storage.vc_holder.base import VCHolder from ..utils.classloader import DeferLoad from ..wallet.base import BaseWallet @@ -44,7 +44,8 @@ def bind_providers(self): injector.bind_provider( VCHolder, ClassProvider( - "aries_cloudagent.holder.in_memory.InMemoryVCHolder", ref(self) + "aries_cloudagent.storage.vc_holder.in_memory.InMemoryVCHolder", + ref(self), ), ) diff --git a/aries_cloudagent/indy/sdk/profile.py b/aries_cloudagent/indy/sdk/profile.py index 9d4b588973..feb607f6a7 100644 --- a/aries_cloudagent/indy/sdk/profile.py +++ b/aries_cloudagent/indy/sdk/profile.py @@ -12,6 +12,7 @@ from ...ledger.base import BaseLedger from ...ledger.indy import IndySdkLedger, IndySdkLedgerPool from ...storage.base import BaseStorage, BaseStorageSearch +from ...storage.vc_holder.base import VCHolder from ...wallet.base import BaseWallet from ...wallet.indy import IndySdkWallet @@ -75,6 +76,13 @@ def bind_providers(self): ClassProvider("aries_cloudagent.indy.sdk.issuer.IndySdkIssuer", ref(self)), ) + injector.bind_provider( + VCHolder, + ClassProvider( + "aries_cloudagent.storage.vc_holder.indy.IndySdkVCHolder", self.opened + ), + ) + if self.ledger_pool: ledger = IndySdkLedger(self.ledger_pool, IndySdkWallet(self.opened)) diff --git a/aries_cloudagent/storage/tests/test_indy_storage.py b/aries_cloudagent/storage/tests/test_indy_storage.py index 80cb15c513..5521000a94 100644 --- a/aries_cloudagent/storage/tests/test_indy_storage.py +++ b/aries_cloudagent/storage/tests/test_indy_storage.py @@ -15,7 +15,7 @@ from ...indy.sdk.profile import IndySdkProfileManager from ...storage.base import BaseStorage from ...storage.error import StorageError, StorageSearchError -from ...storage.indy import IndySdkStorage, IndySdkStorageSearch +from ...storage.indy import IndySdkStorage from ...storage.record import StorageRecord from ...wallet.indy import IndySdkWallet from ...ledger.indy import IndySdkLedgerPool diff --git a/aries_cloudagent/holder/models/__init__.py b/aries_cloudagent/storage/vc_holder/__init__.py similarity index 100% rename from aries_cloudagent/holder/models/__init__.py rename to aries_cloudagent/storage/vc_holder/__init__.py diff --git a/aries_cloudagent/holder/vc_holder.py b/aries_cloudagent/storage/vc_holder/base.py similarity index 97% rename from aries_cloudagent/holder/vc_holder.py rename to aries_cloudagent/storage/vc_holder/base.py index f17ede5df5..7e9ff14228 100644 --- a/aries_cloudagent/holder/vc_holder.py +++ b/aries_cloudagent/storage/vc_holder/base.py @@ -3,7 +3,7 @@ from abc import ABC, abstractmethod from typing import Mapping, Sequence -from .models.vc_record import VCRecord +from .vc_record import VCRecord class VCHolder(ABC): @@ -70,7 +70,7 @@ def search_credentials( schema_ids: An inclusive list of credential schema identifiers issuer_id: The ID of the credential issuer subject_id: The ID of one of the credential subjects - tag_filter: A tag filter clause + tag_query: A tag filter clause """ diff --git a/aries_cloudagent/holder/in_memory.py b/aries_cloudagent/storage/vc_holder/in_memory.py similarity index 95% rename from aries_cloudagent/holder/in_memory.py rename to aries_cloudagent/storage/vc_holder/in_memory.py index 0422baad6d..6f91bceecc 100644 --- a/aries_cloudagent/holder/in_memory.py +++ b/aries_cloudagent/storage/vc_holder/in_memory.py @@ -3,13 +3,12 @@ from aries_cloudagent.storage.record import StorageRecord from typing import Mapping, Sequence -from ..core.in_memory import InMemoryProfile +from ...core.in_memory import InMemoryProfile -from ..storage.in_memory import InMemoryStorage, InMemoryStorageSearch +from ..in_memory import InMemoryStorage, InMemoryStorageSearch -from .models.vc_record import VCRecord - -from .vc_holder import VCHolder, VCRecordSearch +from .base import VCHolder, VCRecordSearch +from .vc_record import VCRecord VC_CRED_RECORD_TYPE = "vc_cred" @@ -144,7 +143,7 @@ def search_credentials( schema_ids: An inclusive list of credential schema identifiers issuer_id: The ID of the credential issuer subject_id: The ID of one of the credential subjects - tag_filter: A tag filter clause + tag_query: A tag filter clause """ query = {} diff --git a/aries_cloudagent/storage/vc_holder/indy.py b/aries_cloudagent/storage/vc_holder/indy.py new file mode 100644 index 0000000000..a79b2e7757 --- /dev/null +++ b/aries_cloudagent/storage/vc_holder/indy.py @@ -0,0 +1,189 @@ +"""Indy-SDK storage implementation of VC holder interface.""" + +from aries_cloudagent.storage.record import StorageRecord +from typing import Mapping, Sequence + +from ...indy.sdk.wallet_setup import IndyOpenWallet + +from ..indy import IndySdkStorage, IndySdkStorageSearch + +from .base import VCHolder, VCRecordSearch +from .vc_record import VCRecord + +VC_CRED_RECORD_TYPE = "vc_cred" + + +def load_credential(record: StorageRecord) -> VCRecord: + """Convert an Indy-SDK stored record into a VC record.""" + tags = {} + contexts = [] + types = [] + schema_ids = [] + subject_ids = [] + issuer_id = None + given_id = None + for tagname, tagval in (record.tags or {}).items(): + if tagname.startswith("ctxt:"): + contexts.append(tagname[5:]) + elif tagname.startswith("type:"): + types.append(tagname[5:]) + elif tagname.startswith("schm:"): + schema_ids.append(tagname[5:]) + elif tagname.startswith("subj:"): + subject_ids.append(tagname[5:]) + elif tagname == "issuer_id": + issuer_id = tagval + elif tagname == "given_id": + given_id = tagval + else: + tags[tagname] = tagval + return VCRecord( + contexts=contexts, + types=types, + schema_ids=schema_ids, + issuer_id=issuer_id, + subject_ids=subject_ids, + value=record.value, + given_id=given_id, + tags=tags, + record_id=record.id, + ) + + +def serialize_credential(cred: VCRecord) -> StorageRecord: + """Convert a VC record into an in-memory stored record.""" + tags = {} + for ctx_val in cred.contexts: + tags[f"ctxt:{ctx_val}"] = "1" + for type_val in cred.types: + tags[f"type:{type_val}"] = "1" + for schema_val in cred.schema_ids: + tags[f"schm:{schema_val}"] = "1" + for subj_id in cred.subject_ids: + tags[f"subj:{subj_id}"] = "1" + if cred.issuer_id: + tags["issuer_id"] = cred.issuer_id + if cred.given_id: + tags["given_id"] = cred.given_id + if cred.tags: + tags.update(cred.tags) + return StorageRecord(VC_CRED_RECORD_TYPE, cred.value, tags, cred.record_id) + + +class IndySdkVCHolder(VCHolder): + """Indy-SDK in-memory storage class.""" + + def __init__(self, wallet: IndyOpenWallet): + """Initialize the Indy-SDK VC holder instance.""" + self._wallet = wallet + self._store = IndySdkStorage(wallet) + + async def store_credential(self, cred: VCRecord): + """ + Add a new VC record to the store. + + Args: + cred: The VCRecord instance to store + Raises: + StorageDuplicateError: If the record_id is not unique + + """ + record = serialize_credential(cred) + await self._store.add_record(record) + + async def retrieve_credential_by_id(self, record_id: str) -> VCRecord: + """ + Fetch a VC record by its record ID. + + Raises: + StorageNotFoundError: If the record is not found + + """ + record = await self._store.get_record(VC_CRED_RECORD_TYPE, record_id) + return load_credential(record) + + async def retrieve_credential_by_given_id(self, given_id: str) -> VCRecord: + """ + Fetch a VC record by its given ID ('id' property). + + Raises: + StorageNotFoundError: If the record is not found + + """ + record = await self._store.find_record( + VC_CRED_RECORD_TYPE, {"given_id": given_id} + ) + return load_credential(record) + + async def delete_credential(self, cred: VCRecord): + """ + Remove a previously-stored VC record. + + Raises: + StorageNotFoundError: If the record is not found + + """ + await self._store.delete_record(serialize_credential(cred)) + + def search_credentials( + self, + contexts: Sequence[str] = None, + types: Sequence[str] = None, + schema_ids: str = None, + issuer_id: str = None, + subject_id: str = None, + tag_query: Mapping = None, + ) -> "VCRecordSearch": + """ + Start a new VC record search. + + Args: + contexts: An inclusive list of JSON-LD contexts to filter for + types: An inclusive list of JSON-LD types to filter for + schema_ids: An inclusive list of credential schema identifiers + issuer_id: The ID of the credential issuer + subject_id: The ID of one of the credential subjects + tag_query: A tag filter clause + + """ + query = {} + if contexts: + for ctx_val in contexts: + query[f"ctxt:{ctx_val}"] = "1" + if types: + for type_val in types: + query[f"type:{type_val}"] = "1" + if schema_ids: + for schema_val in schema_ids: + query[f"schm:{schema_val}"] = "1" + if subject_id: + query[f"subj:{subject_id}"] = "1" + if issuer_id: + query["issuer_id"] = issuer_id + if tag_query: + query.update(tag_query) + search = self._store.search_records(VC_CRED_RECORD_TYPE, query) + return IndySdkVCRecordSearch(search) + + +class IndySdkVCRecordSearch(VCRecordSearch): + """Indy-SDK storage search for VC records.""" + + def __init__(self, search: IndySdkStorageSearch): + """Initialize the Indy-SDK VC record search.""" + self._search = search + + async def fetch(self, max_count: int = None) -> Sequence[VCRecord]: + """ + Fetch the next list of VC records from the store. + + Args: + max_count: Max number of records to return. If not provided, + defaults to the backend's preferred page size + + Returns: + A list of `VCRecord` instances + + """ + rows = await self._search.fetch(max_count) + return [load_credential(r) for r in rows] diff --git a/aries_cloudagent/holder/models/tests/__init__.py b/aries_cloudagent/storage/vc_holder/tests/__init__.py similarity index 100% rename from aries_cloudagent/holder/models/tests/__init__.py rename to aries_cloudagent/storage/vc_holder/tests/__init__.py diff --git a/aries_cloudagent/holder/tests/test_in_memory.py b/aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py similarity index 86% rename from aries_cloudagent/holder/tests/test_in_memory.py rename to aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py index ee1271321a..8e1474cde5 100644 --- a/aries_cloudagent/holder/tests/test_in_memory.py +++ b/aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py @@ -1,24 +1,14 @@ import pytest -from asynctest import mock as async_mock - -from ...core.in_memory import InMemoryProfile -from ...storage.error import ( +from ....core.in_memory import InMemoryProfile +from ...error import ( StorageDuplicateError, - StorageError, StorageNotFoundError, - StorageSearchError, -) -from ...storage.in_memory import ( - InMemoryStorage, - tag_value_match, - tag_query_match, ) -from ...storage.record import StorageRecord +from ..base import VCHolder from ..in_memory import InMemoryVCHolder -from ..models.vc_record import VCRecord -from ..vc_holder import VCHolder +from ..vc_record import VCRecord VC_CONTEXT = "https://www.w3.org/2018/credentials/v1" @@ -32,13 +22,7 @@ @pytest.fixture() def holder(): profile = InMemoryProfile.test_profile() - yield InMemoryVCHolder(profile) - - -@pytest.fixture() -def store_search(): - profile = InMemoryProfile.test_profile() - yield InMemoryStorage(profile) + yield profile.inject(VCHolder) def test_record(tags={}) -> VCRecord: diff --git a/aries_cloudagent/storage/vc_holder/tests/test_indy_vc_holder.py b/aries_cloudagent/storage/vc_holder/tests/test_indy_vc_holder.py new file mode 100644 index 0000000000..7fb0c5a8c3 --- /dev/null +++ b/aries_cloudagent/storage/vc_holder/tests/test_indy_vc_holder.py @@ -0,0 +1,41 @@ +import pytest + + +from ....config.injection_context import InjectionContext +from ....indy.sdk.profile import IndySdkProfileManager +from ....ledger.indy import IndySdkLedgerPool +from ....wallet.indy import IndySdkWallet + +from ..base import VCHolder + +from . import test_in_memory_vc_holder as in_memory + + +async def make_profile(): + key = await IndySdkWallet.generate_wallet_key() + context = InjectionContext() + context.injector.bind_instance(IndySdkLedgerPool, IndySdkLedgerPool("name")) + return await IndySdkProfileManager().provision( + context, + { + "auto_recreate": True, + "auto_remove": True, + "name": "test-wallet", + "key": key, + "key_derivation_method": "RAW", # much slower tests with argon-hashed keys + }, + ) + + +@pytest.fixture() +async def holder(): + profile = await make_profile() + async with profile.session() as session: + yield session.inject(VCHolder) + await profile.close() + + +@pytest.mark.indy +class TestIndySdkVCHolder(in_memory.TestInMemoryVCHolder): + # run same test suite with different holder fixture + pass diff --git a/aries_cloudagent/holder/models/tests/test_vc_record.py b/aries_cloudagent/storage/vc_holder/tests/test_vc_record.py similarity index 86% rename from aries_cloudagent/holder/models/tests/test_vc_record.py rename to aries_cloudagent/storage/vc_holder/tests/test_vc_record.py index 8ac8694036..cee883ded8 100644 --- a/aries_cloudagent/holder/models/tests/test_vc_record.py +++ b/aries_cloudagent/storage/vc_holder/tests/test_vc_record.py @@ -33,10 +33,10 @@ class TestVCRecord: def test_create(self): record = test_record() - assert record.contexts == contexts - assert record.types == types - assert record.schema_ids == schema_ids - assert record.subject_ids == subject_ids + assert record.contexts == set(contexts) + assert record.types == set(types) + assert record.schema_ids == set(schema_ids) + assert record.subject_ids == set(subject_ids) assert record.issuer_id == issuer_id assert record.given_id == given_id assert record.record_id and type(record.record_id) is str @@ -51,5 +51,5 @@ def test_eq(self): record_b.record_id = record_a.record_id assert record_a == record_b assert record_a != object() - record_b.contexts = [] + record_b.contexts.clear() assert record_a != record_b diff --git a/aries_cloudagent/holder/models/vc_record.py b/aries_cloudagent/storage/vc_holder/vc_record.py similarity index 87% rename from aries_cloudagent/holder/models/vc_record.py rename to aries_cloudagent/storage/vc_holder/vc_record.py index 93bc3d7003..b4424edd14 100644 --- a/aries_cloudagent/holder/models/vc_record.py +++ b/aries_cloudagent/storage/vc_holder/vc_record.py @@ -30,11 +30,11 @@ def __init__( record_id: str = None, ): """Initialize some defaults on record.""" - self.contexts = list(contexts) if contexts else [] - self.types = list(types) if types else [] - self.schema_ids = list(schema_ids) if schema_ids else [] + self.contexts = set(contexts) if contexts else set() + self.types = set(types) if types else set() + self.schema_ids = set(schema_ids) if schema_ids else set() self.issuer_id = issuer_id - self.subject_ids = list(subject_ids) if subject_ids else [] + self.subject_ids = set(subject_ids) if subject_ids else set() self.value = value self.given_id = given_id self.tags = tags or {} From 60e09fd70c6faea27a46ec958d42584093b33190 Mon Sep 17 00:00:00 2001 From: Andrew Whitehead Date: Wed, 10 Mar 2021 11:31:46 -0800 Subject: [PATCH 121/243] support manual closing of indy search handle Signed-off-by: Andrew Whitehead --- aries_cloudagent/storage/vc_holder/indy.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/aries_cloudagent/storage/vc_holder/indy.py b/aries_cloudagent/storage/vc_holder/indy.py index a79b2e7757..1f2dde25cc 100644 --- a/aries_cloudagent/storage/vc_holder/indy.py +++ b/aries_cloudagent/storage/vc_holder/indy.py @@ -173,6 +173,10 @@ def __init__(self, search: IndySdkStorageSearch): """Initialize the Indy-SDK VC record search.""" self._search = search + async def close(self): + """Dispose of the search query.""" + await self._search.close() + async def fetch(self, max_count: int = None) -> Sequence[VCRecord]: """ Fetch the next list of VC records from the store. From fdb222234c35978ea4fc3a80950e58ec7364221e Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 11 Mar 2021 12:56:24 +0000 Subject: [PATCH 122/243] unit tests: issue-credential Signed-off-by: sklump --- .../{v2_0/messages => }/indy/__init__.py | 0 .../protocols/issue_credential/indy/cred.py | 129 ++++++ .../issue_credential/indy/cred_abstract.py | 130 ++++++ .../issue_credential/indy/cred_request.py | 68 +++ .../messages => }/indy/tests/__init__.py | 0 .../messages => }/indy/tests/test_cred.py | 11 +- .../issue_credential/v2_0/manager.py | 2 - .../v2_0/messages/cred_format.py | 21 +- .../v2_0/messages/cred_issue.py | 24 +- .../v2_0/messages/cred_offer.py | 22 +- .../v2_0/messages/cred_proposal.py | 20 +- .../v2_0/messages/cred_request.py | 22 +- .../v2_0/messages/indy/cred.py | 318 -------------- .../v2_0/messages/tests/test_cred_issue.py | 35 +- .../v2_0/messages/tests/test_cred_offer.py | 12 +- .../v2_0/tests/test_manager.py | 405 +++++++----------- 16 files changed, 598 insertions(+), 621 deletions(-) rename aries_cloudagent/protocols/issue_credential/{v2_0/messages => }/indy/__init__.py (100%) create mode 100644 aries_cloudagent/protocols/issue_credential/indy/cred.py create mode 100644 aries_cloudagent/protocols/issue_credential/indy/cred_abstract.py create mode 100644 aries_cloudagent/protocols/issue_credential/indy/cred_request.py rename aries_cloudagent/protocols/issue_credential/{v2_0/messages => }/indy/tests/__init__.py (100%) rename aries_cloudagent/protocols/issue_credential/{v2_0/messages => }/indy/tests/test_cred.py (95%) delete mode 100644 aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/cred.py diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/__init__.py b/aries_cloudagent/protocols/issue_credential/indy/__init__.py similarity index 100% rename from aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/__init__.py rename to aries_cloudagent/protocols/issue_credential/indy/__init__.py diff --git a/aries_cloudagent/protocols/issue_credential/indy/cred.py b/aries_cloudagent/protocols/issue_credential/indy/cred.py new file mode 100644 index 0000000000..c955ff36fa --- /dev/null +++ b/aries_cloudagent/protocols/issue_credential/indy/cred.py @@ -0,0 +1,129 @@ +"""Cred artifacts to attach to RFC 453 messages.""" + +from typing import Mapping + +from marshmallow import EXCLUDE, fields + +from ....messaging.models.base import BaseModel, BaseModelSchema +from ....messaging.valid import ( + INDY_CRED_DEF_ID, + INDY_REV_REG_ID, + INDY_SCHEMA_ID, + NUM_STR_WHOLE, +) + + +class IndyAttrValue(BaseModel): + """Indy attribute value.""" + + class Meta: + """Indy attribute value.""" + + schema_class = "IndyAttrValueSchema" + + def __init__(self, raw: str = None, encoded: str = None, **kwargs): + """Initialize indy (credential) attribute value.""" + super().__init__(**kwargs) + self.raw = raw + self.encoded = encoded + + +class IndyAttrValueSchema(BaseModelSchema): + """Indy attribute value schema.""" + + class Meta: + """Indy attribute value schema metadata.""" + + model_class = IndyAttrValue + unknown = EXCLUDE + + raw = fields.Str( + required=True, + description="Attribute raw value", + ) + encoded = fields.Str( + required=True, + description="Attribute encoded value", + **NUM_STR_WHOLE, + ) + + +class IndyCredential(BaseModel): + """Indy credential.""" + + class Meta: + """Indy credential metadata.""" + + schema_class = "IndyCredentialSchema" + + def __init__( + self, + schema_id: str = None, + cred_def_id: str = None, + rev_reg_id: str = None, + values: Mapping[str, IndyAttrValue] = None, + signature: Mapping = None, + signature_correctness_proof: Mapping = None, + rev_reg: Mapping = None, + witness: Mapping = None, + ): + """Initialize indy credential.""" + self.schema_id = schema_id + self.cred_def_id = cred_def_id + self.rev_reg_id = rev_reg_id + self.values = values + self.signature = signature + self.signature_correctness_proof = signature_correctness_proof + self.rev_reg = rev_reg + self.witness = witness + + +class IndyCredentialSchema(BaseModelSchema): + """Indy credential schema.""" + + class Meta: + """Indy credential schemametadata.""" + + model_class = IndyCredential + unknown = EXCLUDE + + schema_id = fields.Str( + required=True, + description="Schema identifier", + **INDY_SCHEMA_ID, + ) + cred_def_id = fields.Str( + required=True, + description="Credential definition identifier", + **INDY_CRED_DEF_ID, + ) + rev_reg_id = fields.Str( + allow_none=True, + description="Revocation registry identifier", + **INDY_REV_REG_ID, + ) + values = fields.Dict( + keys=fields.Str(description="Attribute name"), + values=fields.Nested( + IndyAttrValueSchema(), + description="Attribute value", + ), + required=True, + description="Credential attributes", + ) + signature = fields.Dict( + required=True, + description="Credential signature", + ) + signature_correctness_proof = fields.Dict( + required=True, + description="Credential signature correctness proof", + ) + rev_reg = fields.Dict( + allow_none=True, + description="Revocation registry state", + ) + witness = fields.Dict( + allow_none=True, + description="Witness for revocation proof", + ) diff --git a/aries_cloudagent/protocols/issue_credential/indy/cred_abstract.py b/aries_cloudagent/protocols/issue_credential/indy/cred_abstract.py new file mode 100644 index 0000000000..ca5649d7c9 --- /dev/null +++ b/aries_cloudagent/protocols/issue_credential/indy/cred_abstract.py @@ -0,0 +1,130 @@ +"""Cred abstract artifacts to attach to RFC 453 messages.""" + +from typing import Sequence + +from marshmallow import EXCLUDE, fields + +from ....messaging.models.base import BaseModel, BaseModelSchema +from ....messaging.valid import INDY_CRED_DEF_ID, INDY_SCHEMA_ID, NUM_STR_WHOLE + + +class IndyKeyCorrectnessProof(BaseModel): + """Indy key correctness proof.""" + + class Meta: + """IndyKeyCorrectnessProof metadata.""" + + schema_class = "IndyKeyCorrectnessProofSchema" + + def __init__( + self, + c: str = None, + xz_cap: str = None, + xr_cap: Sequence[Sequence[str]] = None, + **kwargs, + ): + """Initialize XR cap for indy key correctness proof.""" + super().__init__(**kwargs) + + self.c = c + self.xz_cap = xz_cap + self.xr_cap = xr_cap + + +class IndyKeyCorrectnessProofSchema(BaseModelSchema): + """Indy key correctness proof schema.""" + + class Meta: + """Indy key correctness proof schema metadata.""" + + model_class = IndyKeyCorrectnessProof + unknown = EXCLUDE + + c = fields.Str( + required=True, + description="c in key correctness proof", + **NUM_STR_WHOLE, + ) + xz_cap = fields.Str( + required=True, + description="xz_cap in key correctness proof", + **NUM_STR_WHOLE, + ) + xr_cap = fields.List( + fields.List( + fields.Str( + required=True, + description="xr_cap component values in key correctness proof", + ), + required=True, + description="xr_cap components in key correctness proof", + many=True, + ), + required=True, + description="xr_cap in key correctness proof", + many=True, + ) + + +class IndyCredAbstract(BaseModel): + """Indy credential abstract.""" + + class Meta: + """Indy credential abstract metadata.""" + + schema_class = "IndyCredAbstractSchema" + + def __init__( + self, + schema_id: str = None, + cred_def_id: str = None, + nonce: str = None, + key_correctness_proof: str = None, + **kwargs, + ): + """ + Initialize indy cred abstract object. + + Args: + schema_id: schema identifier + cred_def_id: credential definition identifier + nonce: nonce + key_correctness_proof: key correctness proof + + """ + super().__init__(**kwargs) + self.schema_id = schema_id + self.cred_def_id = cred_def_id + self.nonce = nonce + self.key_correctness_proof = key_correctness_proof + + +class IndyCredAbstractSchema(BaseModelSchema): + """Indy credential abstract schema.""" + + class Meta: + """Indy credential abstract schema metadata.""" + + model_class = IndyCredAbstract + unknown = EXCLUDE + + schema_id = fields.Str( + required=True, + description="Schema identifier", + **INDY_SCHEMA_ID, + ) + cred_def_id = fields.Str( + required=True, + description="Credential definition identifier", + **INDY_CRED_DEF_ID, + ) + nonce = fields.Str( + required=True, + description="Nonce in credential abstract", + **NUM_STR_WHOLE, + ) + key_correctness_proof = fields.Nested( + IndyKeyCorrectnessProofSchema(), + required=True, + description="Key correctness proof", + ) diff --git a/aries_cloudagent/protocols/issue_credential/indy/cred_request.py b/aries_cloudagent/protocols/issue_credential/indy/cred_request.py new file mode 100644 index 0000000000..07dcef3453 --- /dev/null +++ b/aries_cloudagent/protocols/issue_credential/indy/cred_request.py @@ -0,0 +1,68 @@ +"""Cred request artifacts to attach to RFC 453 messages.""" + +from typing import Mapping + +from marshmallow import EXCLUDE, fields + +from ....messaging.models.base import BaseModel, BaseModelSchema +from ....messaging.valid import INDY_CRED_DEF_ID, INDY_DID, NUM_STR_WHOLE + + +class IndyCredRequest(BaseModel): + """Indy credential request.""" + + class Meta: + """Indy credential request metadata.""" + + schema_class = "IndyCredRequestSchema" + + def __init__( + self, + prover_did: str = None, + cred_def_id: str = None, + blinded_ms: Mapping = None, + blinded_ms_correctness_proof: Mapping = None, + nonce: str = None, + **kwargs, + ): + """Initialize indy credential request.""" + super().__init__(**kwargs) + self.prover_did = prover_did + self.cred_def_id = cred_def_id + self.blinded_ms = blinded_ms + self.blinded_ms_correctness_proof = blinded_ms_correctness_proof + self.nonce = nonce + + +class IndyCredRequestSchema(BaseModelSchema): + """Indy credential request schema.""" + + class Meta: + """Indy credential request schema metadata.""" + + model_class = IndyCredRequest + unknown = EXCLUDE + + prover_did = fields.Str( + requred=True, + description="Prover DID", + **INDY_DID, + ) + cred_def_id = fields.Str( + required=True, + description="Credential definition identifier", + **INDY_CRED_DEF_ID, + ) + blinded_ms = fields.Dict( + required=True, + description="Blinded master secret", + ) + blinded_ms_correctness_proof = fields.Dict( + required=True, + description="Blinded master secret correctness proof", + ) + nonce = fields.Str( + required=True, + description="Nonce in credential request", + **NUM_STR_WHOLE, + ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/tests/__init__.py b/aries_cloudagent/protocols/issue_credential/indy/tests/__init__.py similarity index 100% rename from aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/tests/__init__.py rename to aries_cloudagent/protocols/issue_credential/indy/tests/__init__.py diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/tests/test_cred.py b/aries_cloudagent/protocols/issue_credential/indy/tests/test_cred.py similarity index 95% rename from aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/tests/test_cred.py rename to aries_cloudagent/protocols/issue_credential/indy/tests/test_cred.py index 2546b4cab3..ef6d106cc5 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/tests/test_cred.py +++ b/aries_cloudagent/protocols/issue_credential/indy/tests/test_cred.py @@ -1,12 +1,8 @@ from unittest import TestCase -from ..cred import ( - IndyAttrValue, - IndyCredAbstract, - IndyCredential, - IndyCredRequest, - IndyKeyCorrectnessProof, -) +from ..cred import IndyAttrValue, IndyCredential +from ..cred_abstract import IndyCredAbstract, IndyKeyCorrectnessProof +from ..cred_request import IndyCredRequest KC_PROOF = { "c": "123467890", @@ -25,7 +21,6 @@ "12345678901234", ], ], - "nonce": "1234567890", } TEST_DID = "LjgpST2rjsoxYegQDRm7EL" diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py index 4f8f6b3f96..94412772b3 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py @@ -430,8 +430,6 @@ async def _create_indy(): f"v2.0 credential exchange {cred_ex_record.cred_ex_id}" ) - if "nonce" not in cred_offer: - raise V20CredManagerError("Missing nonce in credential offer") nonce = cred_offer["nonce"] cache_key = f"credential_request::{cred_def_id}::{holder_did}::{nonce}" cred_req_result = None diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py index bad3ee714f..83f0ae78f8 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py @@ -13,6 +13,10 @@ from .....messaging.models.base import BaseModel, BaseModelSchema from .....messaging.valid import UUIDFour +from ...indy.cred import IndyCredentialSchema +from ...indy.cred_abstract import IndyCredAbstractSchema +from ...indy.cred_request import IndyCredRequestSchema + from ..models.detail.dif import V20CredExRecordDIF from ..models.detail.indy import V20CredExRecordIndy @@ -77,12 +81,27 @@ def detail(self) -> str: """Accessor for credential exchange detail class.""" return self.value.detail - def validate_filter(self, data: Mapping): + def validate_filter_attach(self, data: Mapping): """Raise ValidationError for wrong filtration criteria.""" if self is V20CredFormat.Format.INDY: if data.keys() - set(CRED_DEF_TAGS): raise ValidationError(f"Bad indy credential filter: {data}") + def validate_offer_attach(self, data: Mapping): + """Raise ValidationError for wrong offer attachment format.""" + if self is V20CredFormat.Format.INDY: + IndyCredAbstractSchema().load(data) + + def validate_request_attach(self, data: Mapping): + """Raise ValidationError for wrong request attachment format.""" + if self is V20CredFormat.Format.INDY: + IndyCredRequestSchema().load(data) + + def validate_credential_attach(self, data: Mapping): + """Raise ValidationError for wrong credential attachment format.""" + if self is V20CredFormat.Format.INDY: + IndyCredentialSchema().load(data) + def get_attachment_data( self, formats: Sequence["V20CredFormat"], diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py index f40ea1f22f..1b7a63e365 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py @@ -2,7 +2,7 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields +from marshmallow import EXCLUDE, fields, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema from .....messaging.decorators.attach_decorator import ( @@ -105,3 +105,25 @@ class Meta: data_key="credentials~attach", description="Credential attachments", ) + + @validates_schema + def validate_fields(self, data, **kwargs): + """Validate attachments per format.""" + + def get_attach_by_id(attach_id): + """Return attachment with input identifier.""" + for f in attachments: + if f.ident == attach_id: + return f + raise ValidationError(f"No attachment for attach_id {attach_id} in formats") + + formats = data.get("formats") or [] + attachments = data.get("credentials_attach") or [] + if len(formats) != len(attachments): + raise ValidationError("Formats/attachments length mismatch") + + for fmt in formats: + atch = get_attach_by_id(fmt.attach_id) + V20CredFormat.Format.get(fmt.format).validate_credential_attach( + atch.content + ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py index c4895e1206..fc5905ab76 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py @@ -2,7 +2,7 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields +from marshmallow import EXCLUDE, fields, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema from .....messaging.decorators.attach_decorator import ( @@ -112,3 +112,23 @@ class Meta: data_key="offers~attach", description="Offer attachments", ) + + @validates_schema + def validate_fields(self, data, **kwargs): + """Validate attachments per format.""" + + def get_attach_by_id(attach_id): + """Return filter with input attachment identifier.""" + for f in attachments: + if f.ident == attach_id: + return f + raise ValidationError(f"No filter matches attach_id {attach_id} in format") + + formats = data.get("formats") or [] + attachments = data.get("offers_attach") or [] + if len(formats) != len(attachments): + raise ValidationError("Formats/attachments length mismatch") + + for fmt in formats: + atch = get_attach_by_id(fmt.attach_id) + V20CredFormat.Format.get(fmt.format).validate_offer_attach(atch.content) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py index a2f2e23657..42b3547321 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py @@ -112,20 +112,20 @@ class Meta: @validates_schema def validate_fields(self, data, **kwargs): - """Validate filter per format.""" + """Validate attachments per format.""" - def get_filter_attach_by_id(attach_id): - """Return filter with input attachment identifier.""" - for f in filters_attach: + def get_attach_by_id(attach_id): + """Return attachment with input identifier.""" + for f in attachments: if f.ident == attach_id: return f - raise ValidationError(f"No filter matches attach_id {attach_id} in format") + raise ValidationError(f"No attachment for attach_id {attach_id} in formats") formats = data.get("formats") or [] - filters_attach = data.get("filters_attach") or [] - if len(formats) != len(filters_attach): - raise ValidationError("Formats/filters length mismatch") + attachments = data.get("filters_attach") or [] + if len(formats) != len(attachments): + raise ValidationError("Formats/attachments length mismatch") for fmt in formats: - filt_atch = get_filter_attach_by_id(fmt.attach_id) - V20CredFormat.Format.get(fmt.format).validate_filter(filt_atch.content) + atch = get_attach_by_id(fmt.attach_id) + V20CredFormat.Format.get(fmt.format).validate_filter_attach(atch.content) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py index 5b4e0678ae..c631863ac5 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py @@ -2,7 +2,7 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields +from marshmallow import EXCLUDE, fields, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema from .....messaging.decorators.attach_decorator import ( @@ -98,3 +98,23 @@ class Meta: data_key="requests~attach", description="Request attachments", ) + + @validates_schema + def validate_fields(self, data, **kwargs): + """Validate attachments per format.""" + + def get_attach_by_id(attach_id): + """Return attachment with input identifier.""" + for f in attachments: + if f.ident == attach_id: + return f + raise ValidationError(f"No attachment for attach_id {attach_id} in formats") + + formats = data.get("formats") or [] + attachments = data.get("requests_attach") or [] + if len(formats) != len(attachments): + raise ValidationError("Formats/attachments length mismatch") + + for fmt in formats: + atch = get_attach_by_id(fmt.attach_id) + V20CredFormat.Format.get(fmt.format).validate_request_attach(atch.content) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/cred.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/cred.py deleted file mode 100644 index af4205c5b7..0000000000 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/indy/cred.py +++ /dev/null @@ -1,318 +0,0 @@ -"""Cred artifacts to attach to RFC 453 messages.""" - -from typing import Mapping, Sequence - -from marshmallow import EXCLUDE, fields - -from ......messaging.models.base import BaseModel, BaseModelSchema -from ......messaging.valid import ( - INDY_CRED_DEF_ID, - INDY_DID, - INDY_SCHEMA_ID, - NUM_STR_WHOLE, -) - - -class IndyKeyCorrectnessProof(BaseModel): - """Indy key correctness proof.""" - - class Meta: - """IndyKeyCorrectnessProof metadata.""" - - schema_class = "IndyKeyCorrectnessProofSchema" - - def __init__( - self, - c: str = None, - xz_cap: str = None, - xr_cap: Sequence[Sequence[str]] = None, - nonce: str = None, - **kwargs, - ): - """Initialize XR cap for indy key correctness proof.""" - super().__init__(**kwargs) - - self.c = c - self.xz_cap = xz_cap - self.xr_cap = xr_cap - self.nonce = nonce - - -class IndyKeyCorrectnessProofSchema(BaseModelSchema): - """Indy key correctness proof schema.""" - - class Meta: - """Indy key correctness proof schema metadata.""" - - model_class = IndyKeyCorrectnessProof - unknown = EXCLUDE - - c = fields.Str( - required=True, - description="c in key correctness proof", - **NUM_STR_WHOLE, - ) - xz_cap = fields.Str( - required=True, - description="xz_cap in key correctness proof", - **NUM_STR_WHOLE, - ) - xr_cap = fields.List( - fields.List( - fields.Str( - required=True, - description="xr_cap component values in key correctness proof", - ), - required=True, - description="xr_cap components in key correctness proof", - many=True, - ), - required=True, - description="xr_cap in key correctness proof", - many=True, - ) - nonce = fields.Str( - required=True, - description="Nonce in key correctness proof", - **NUM_STR_WHOLE, - ) - - -class IndyCredAbstract(BaseModel): - """Indy credential abstract.""" - - class Meta: - """Indy credential abstract metadata.""" - - schema_class = "IndyCredAbstractSchema" - - def __init__( - self, - schema_id: str = None, - cred_def_id: str = None, - nonce: str = None, - key_correctness_proof: str = None, - **kwargs, - ): - """ - Initialize indy cred abstract object. - - Args: - schema_id: schema identifier - cred_def_id: credential definition identifier - nonce: nonce - key_correctness_proof: key correctness proof - - """ - super().__init__(**kwargs) - self.schema_id = schema_id - self.cred_def_id = cred_def_id - self.nonce = nonce - self.key_correctness_proof = key_correctness_proof - - -class IndyCredAbstractSchema(BaseModelSchema): - """Indy credential abstract schema.""" - - class Meta: - """Indy credential abstract schema metadata.""" - - model_class = IndyCredAbstract - unknown = EXCLUDE - - schema_id = fields.Str( - required=True, - description="Schema identifier", - **INDY_SCHEMA_ID, - ) - cred_def_id = fields.Str( - required=True, - description="Credential definition identifier", - **INDY_CRED_DEF_ID, - ) - nonce = fields.Str( - required=True, - description="Nonce in credential abstract", - **NUM_STR_WHOLE, - ) - key_correctness_proof = fields.Nested( - IndyKeyCorrectnessProofSchema(), - required=True, - description="Key correctness proof", - ) - - -class IndyCredRequest(BaseModel): - """Indy credential request.""" - - class Meta: - """Indy credential request metadata.""" - - schema_class = "IndyCredRequestSchema" - - def __init__( - self, - prover_did: str = None, - cred_def_id: str = None, - blinded_ms: Mapping = None, - blinded_ms_correctness_proof: Mapping = None, - nonce: str = None, - **kwargs, - ): - """Initialize indy credential request.""" - super().__init__(**kwargs) - self.prover_did = prover_did - self.cred_def_id = cred_def_id - self.blinded_ms = blinded_ms - self.blinded_ms_correctness_proof = blinded_ms_correctness_proof - self.nonce = nonce - - -class IndyCredRequestSchema(BaseModelSchema): - """Indy credential request schema.""" - - class Meta: - """Indy credential request schema metadata.""" - - model_class = IndyCredRequest - unknown = EXCLUDE - - prover_did = fields.Str( - requred=True, - description="Prover DID", - **INDY_DID, - ) - cred_def_id = fields.Str( - required=True, - description="Credential definition identifier", - **INDY_CRED_DEF_ID, - ) - blinded_ms = fields.Dict( - required=True, - description="Blinded master secret", - ) - blinded_ms_correctness_proof = fields.Dict( - required=True, - description="Blinded master secret correctness proof", - ) - nonce = fields.Str( - required=True, - description="Nonce in credential request", - **NUM_STR_WHOLE, - ) - - -class IndyAttrValue(BaseModel): - """Indy attribute value.""" - - class Meta: - """Indy attribute value.""" - - schema_class = "IndyAttrValueSchema" - - def __init__(self, raw: str = None, encoded: str = None, **kwargs): - """Initialize indy (credential) attribute value.""" - super().__init__(**kwargs) - self.raw = raw - self.encoded = encoded - - -class IndyAttrValueSchema(BaseModelSchema): - """Indy attribute value schema.""" - - class Meta: - """Indy attribute value schema metadata.""" - - model_class = IndyAttrValue - unknown = EXCLUDE - - raw = fields.Str( - required=True, - description="Attribute raw value", - ) - encoded = fields.Str( - required=True, - description="Attribute encoded value", - **NUM_STR_WHOLE, - ) - - -class IndyCredential(BaseModel): - """Indy credential.""" - - class Meta: - """Indy credential metadata.""" - - schema_class = "IndyCredentialSchema" - - def __init__( - self, - schema_id: str = None, - cred_def_id: str = None, - rev_reg_id: str = None, - values: Mapping[str, IndyAttrValue] = None, - signature: Mapping = None, - signature_correctness_proof: Mapping = None, - rev_reg: Mapping = None, - witness: Mapping = None, - ): - """Initialize indy credential.""" - self.schema_id = schema_id - self.cred_def_id = cred_def_id - self.rev_reg_id = rev_reg_id - self.values = values - self.signature = signature - self.signature_correctness_proof = signature_correctness_proof - self.rev_reg = rev_reg - self.witness = witness - - -class IndyCredentialSchema(BaseModelSchema): - """Indy credential schema.""" - - class Meta: - """Indy credential schemametadata.""" - - model_class = IndyCredential - unknown = EXCLUDE - - schema_id = fields.Str( - required=True, - description="Schema identifier", - **INDY_SCHEMA_ID, - ) - cred_def_id = fields.Str( - required=True, - description="Credential definition identifier", - **INDY_CRED_DEF_ID, - ) - rev_reg_id = fields.Str( - allow_none=True, - description="Revocation registry identifier", - **INDY_CRED_DEF_ID, - ) - values = fields.Dict( - keys=fields.Str(description="Attribute name"), - values=fields.Nested( - IndyAttrValueSchema(), - description="Attribute value", - ), - required=True, - description="Credential attributes", - ) - signature = fields.Dict( - required=True, - description="Credential signature", - ) - signature_correctness_proof = fields.Dict( - required=True, - description="Credential signature correctness proof", - ) - rev_reg = fields.Dict( - allow_none=True, - description="Revocation registry state", - ) - witness = fields.Dict( - allow_none=True, - description="Witness for revocation proof", - ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py index 566782ecf4..1128c4d029 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py @@ -14,7 +14,7 @@ class TestV20CredIssue(AsyncTestCase): """Credential issue tests""" - indy_cred = { + INDY_CRED = { "schema_id": "LjgpST2rjsoxYegQDRm7EL:2:bc-reg:1.0", "cred_def_id": "LjgpST2rjsoxYegQDRm7EL:3:CL:18:tag", "rev_reg_id": "LjgpST2rjsoxYegQDRm7EL:4:LjgpST2rjsoxYegQDRm7EL:3:CL:18:tag:CL_ACCUM:1", @@ -69,12 +69,19 @@ class TestV20CredIssue(AsyncTestCase): }, } - cred_issue = V20CredIssue( + CRED_ISSUE = V20CredIssue( + replacement_id="0", comment="Test", + formats=[ + V20CredFormat( + attach_id="indy", + format_=V20CredFormat.Format.INDY, + ) + ], credentials_attach=[ AttachDecorator.data_base64( - mapping=indy_cred, - ident="abc", + mapping=INDY_CRED, + ident="indy", ) ], ) @@ -92,19 +99,19 @@ async def test_init_type(self): ], credentials_attach=[ AttachDecorator.data_base64( - mapping=TestV20CredIssue.indy_cred, + mapping=TestV20CredIssue.INDY_CRED, ident="abc", ) ], ) - assert cred_issue.credentials_attach[0].content == TestV20CredIssue.indy_cred + assert cred_issue.credentials_attach[0].content == TestV20CredIssue.INDY_CRED assert cred_issue.credentials_attach[0].ident # auto-generates UUID4 - assert cred_issue.attachment() == TestV20CredIssue.indy_cred + assert cred_issue.attachment() == TestV20CredIssue.INDY_CRED assert cred_issue._type == DIDCommPrefix.qualify_current(CRED_20_ISSUE) async def test_deserialize(self): """Test deserialization.""" - obj = TestV20CredIssue.cred_issue + obj = TestV20CredIssue.CRED_ISSUE with async_mock.patch.object( test_module.V20CredIssueSchema, "load", async_mock.MagicMock() @@ -116,7 +123,7 @@ async def test_deserialize(self): async def test_serialize(self): """Test serialization.""" - obj = TestV20CredIssue.cred_issue + obj = TestV20CredIssue.CRED_ISSUE with async_mock.patch.object( test_module.V20CredIssueSchema, "dump", async_mock.MagicMock() @@ -126,17 +133,9 @@ async def test_serialize(self): assert cred_issue_dict is mock_dump.return_value - -class TestV20CredIssueSchema(AsyncTestCase): - """Test credential cred issue schema""" - async def test_make_model(self): """Test making model.""" - cred_issue = V20CredIssue( - comment="Test", - credentials_attach=[AttachDecorator.data_base64({"hello": "world"})], - ) - data = cred_issue.serialize() + data = TestV20CredIssue.CRED_ISSUE.serialize() model_instance = V20CredIssue.deserialize(data) assert isinstance(model_instance, V20CredIssue) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py index 036182ff83..e7eceb2290 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py @@ -51,14 +51,14 @@ async def test_init_type(self): credential_preview=TestV20CredOffer.preview, formats=[ V20CredFormat( - attach_id="abc", + attach_id="indy", format_=V20CredFormat.Format.INDY, ) ], offers_attach=[ AttachDecorator.data_base64( mapping=TestV20CredOffer.indy_offer, - ident="abc", + ident="indy", ) ], ) @@ -88,14 +88,14 @@ def test_serialize(self): credential_preview=TestV20CredOffer.preview, formats=[ V20CredFormat( - attach_id="abc", + attach_id="indy", format_=V20CredFormat.Format.INDY, ) ], offers_attach=[ AttachDecorator.data_base64( mapping=TestV20CredOffer.indy_offer, - ident="abc", + ident="indy", ) ], ) @@ -119,14 +119,14 @@ async def test_make_model(self): credential_preview=TestV20CredOffer.preview, formats=[ V20CredFormat( - attach_id="abc", + attach_id="indy", format_=V20CredFormat.Format.INDY, ) ], offers_attach=[ AttachDecorator.data_base64( mapping=TestV20CredOffer.indy_offer, - ident="abc", + ident="indy", ) ], ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py index 2d0b5f84f9..1a442da72c 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py @@ -57,8 +57,10 @@ "r": { "master_secret": "...", "legalName": "...", + "busId": "...", "jurisdictionId": "...", "incorporationDate": "...", + "pic": "...", }, "rctxt": "...", "z": "...", @@ -97,6 +99,87 @@ "tailsLocation": TAILS_LOCAL, }, } +INDY_OFFER = { + "schema_id": SCHEMA_ID, + "cred_def_id": CRED_DEF_ID, + "key_correctness_proof": { + "c": "123467890", + "xz_cap": "12345678901234567890", + "xr_cap": [ + [ + "remainder", + "1234567890", + ], + [ + "number", + "12345678901234", + ], + [ + "master_secret", + "12345678901234", + ], + ], + }, + "nonce": "1234567890", +} +INDY_CRED_REQ = { + "prover_did": TEST_DID, + "cred_def_id": CRED_DEF_ID, + "blinded_ms": { + "u": "12345", + "ur": "1 123467890ABCDEF", + "hidden_attributes": ["master_secret"], + "committed_attributes": {}, + }, + "blinded_ms_correctness_proof": { + "c": "77777", + "v_dash_cap": "12345678901234567890", + "m_caps": {"master_secret": "271283714"}, + "r_caps": {}, + }, + "nonce": "9876543210", +} +INDY_CRED = { + "schema_id": SCHEMA_ID, + "cred_def_id": CRED_DEF_ID, + "rev_reg_id": REV_REG_ID, + "values": { + "legalName": { + "raw": "The Original House of Pies", + "encoded": "108156129846915621348916581250742315326283968964", + }, + "busId": {"raw": "11155555", "encoded": "11155555"}, + "jurisdictionId": {"raw": "1", "encoded": "1"}, + "incorporationDate": { + "raw": "2021-01-01", + "encoded": "121381685682968329568231", + }, + "pic": {"raw": "cG90YXRv", "encoded": "125362825623562385689562"}, + }, + "signature": { + "p_credential": { + "m_2": "13683295623862356", + "a": "1925723185621385238953", + "e": "253516862326", + "v": "26890295622385628356813632", + }, + "r_credential": { + "sigma": "1 00F81D", + "c": "158698926BD09866E", + "vr_prime_prime": "105682396DDF1A", + "witness_signature": {"sigma_i": "1 ...", "u_i": "1 ...", "g_i": "1 ..."}, + "g_i": "1 ...", + "i": 1, + "m2": "862186285926592362384FA97FF3A4AB", + }, + }, + "signature_correctness_proof": { + "se": "10582965928638296868123", + "c": "2816389562839651", + }, + "rev_reg": {"accum": "21 ..."}, + "witness": {"omega": "21 ..."}, +} class TestV20CredManager(AsyncTestCase): @@ -317,16 +400,9 @@ async def test_create_free_offer(self): self.cache = InMemoryCache() self.context.injector.bind_instance(BaseCache, self.cache) - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - issuer = async_mock.MagicMock(IndyIssuer, autospec=True) issuer.create_credential_offer = async_mock.CoroutineMock( - return_value=json.dumps(indy_offer) + return_value=json.dumps(INDY_OFFER) ) self.context.injector.bind_instance(IndyIssuer, issuer) @@ -363,7 +439,7 @@ async def test_create_free_offer(self): V20CredOffer.deserialize(cx_rec.cred_offer).attachment( V20CredFormat.Format.INDY ) - == indy_offer + == INDY_OFFER ) await self.manager.create_offer( @@ -402,16 +478,9 @@ async def test_create_free_offer_attr_mismatch(self): self.cache = InMemoryCache() self.context.injector.bind_instance(BaseCache, self.cache) - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - issuer = async_mock.MagicMock(IndyIssuer, autospec=True) issuer.create_credential_offer = async_mock.CoroutineMock( - return_value=json.dumps(indy_offer) + return_value=json.dumps(INDY_OFFER) ) self.context.injector.bind_instance(IndyIssuer, issuer) @@ -469,16 +538,9 @@ async def test_create_bound_offer(self): ) as set_cached_key: get_cached_key.return_value = None - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - issuer = async_mock.MagicMock(IndyIssuer, autospec=True) issuer.create_credential_offer = async_mock.CoroutineMock( - return_value=json.dumps(indy_offer) + return_value=json.dumps(INDY_OFFER) ) self.context.injector.bind_instance(IndyIssuer, issuer) @@ -512,7 +574,7 @@ async def test_create_bound_offer(self): V20CredOffer.deserialize(cx_rec.cred_offer).attachment( V20CredFormat.Format.INDY ) - == indy_offer + == INDY_OFFER ) # additionally check that manager passed credential preview through @@ -547,15 +609,9 @@ async def test_create_bound_offer_no_matching_sent_cred_def(self): V20CredExRecord, "set_cached_key", autospec=True ) as set_cached_key: get_cached_key.return_value = None - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } issuer = async_mock.MagicMock() issuer.create_credential_offer = async_mock.CoroutineMock( - return_value=indy_offer + return_value=INDY_OFFER ) self.context.injector.bind_instance(IndyIssuer, issuer) @@ -565,12 +621,6 @@ async def test_create_bound_offer_no_matching_sent_cred_def(self): async def test_receive_offer_proposed(self): connection_id = "test_conn_id" - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } thread_id = "thread-id" cred_preview = V20CredPreview( @@ -588,7 +638,7 @@ async def test_receive_offer_proposed(self): cred_offer = V20CredOffer( credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -618,7 +668,7 @@ async def test_receive_offer_proposed(self): V20CredOffer.deserialize(cx_rec.cred_offer).attachment( V20CredFormat.Format.INDY ) - == indy_offer + == INDY_OFFER ) assert ( V20CredProposal.deserialize( @@ -629,12 +679,6 @@ async def test_receive_offer_proposed(self): async def test_receive_free_offer(self): connection_id = "test_conn_id" - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } thread_id = "thread-id" cred_preview = V20CredPreview( @@ -647,7 +691,7 @@ async def test_receive_free_offer(self): cred_offer = V20CredOffer( credential_preview=cred_preview, formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -671,7 +715,7 @@ async def test_receive_free_offer(self): V20CredOffer.deserialize(cx_rec.cred_offer).attachment( V20CredFormat.Format.INDY ) - == indy_offer + == INDY_OFFER ) assert ( V20CredProposal.deserialize( @@ -683,23 +727,12 @@ async def test_receive_free_offer(self): async def test_create_request(self): connection_id = "test_conn_id" nonce = "0" - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": nonce, - "...": "...", - } - indy_cred_req = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "...": "...", - } thread_id = "thread-id" holder_did = "did" cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -727,7 +760,7 @@ async def test_create_request(self): cred_req_meta = {} holder = async_mock.MagicMock() holder.create_credential_request = async_mock.CoroutineMock( - return_value=(json.dumps(indy_cred_req), json.dumps(cred_req_meta)) + return_value=(json.dumps(INDY_CRED_REQ), json.dumps(cred_req_meta)) ) self.context.injector.bind_instance(IndyHolder, holder) @@ -736,10 +769,10 @@ async def test_create_request(self): ) holder.create_credential_request.assert_called_once_with( - indy_offer, cred_def, holder_did + INDY_OFFER, cred_def, holder_did ) - assert ret_cred_req.attachment() == indy_cred_req + assert ret_cred_req.attachment() == INDY_CRED_REQ assert ret_cred_req._thread_id == thread_id assert ret_cx_rec.state == V20CredExRecord.STATE_REQUEST_SENT @@ -759,23 +792,12 @@ async def test_create_request(self): async def test_create_request_no_cache(self): connection_id = "test_conn_id" nonce = "0" - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": nonce, - "...": "...", - } - indy_cred_req = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "...": "...", - } thread_id = "thread-id" holder_did = "did" cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -800,7 +822,7 @@ async def test_create_request_no_cache(self): cred_req_meta = {} holder = async_mock.MagicMock() holder.create_credential_request = async_mock.CoroutineMock( - return_value=(json.dumps(indy_cred_req), json.dumps(cred_req_meta)) + return_value=(json.dumps(INDY_CRED_REQ), json.dumps(cred_req_meta)) ) self.context.injector.bind_instance(IndyHolder, holder) @@ -809,28 +831,22 @@ async def test_create_request_no_cache(self): ) holder.create_credential_request.assert_called_once_with( - indy_offer, cred_def, holder_did + INDY_OFFER, cred_def, holder_did ) - assert ret_cred_request.attachment() == indy_cred_req + assert ret_cred_request.attachment() == INDY_CRED_REQ assert ret_cred_request._thread_id == thread_id assert ret_cx_rec.state == V20CredExRecord.STATE_REQUEST_SENT async def test_create_request_bad_state(self): connection_id = "test_conn_id" - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } thread_id = "thread-id" holder_did = "did" cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -848,49 +864,17 @@ async def test_create_request_bad_state(self): await self.manager.create_request(stored_cx_rec, holder_did) assert " state " in str(context.exception) - async def test_create_request_no_offer_nonce(self): - connection_id = "test_conn_id" - indy_offer = {"schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, "...": "..."} - thread_id = "thread-id" - holder_did = "did" - - cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], - ) - cred_offer.assign_thread_id(thread_id) - - stored_cx_rec = V20CredExRecord( - cred_ex_id="dummy-cxid", - connection_id=connection_id, - cred_offer=cred_offer.serialize(), - initiator=V20CredExRecord.INITIATOR_SELF, - role=V20CredExRecord.ROLE_HOLDER, - state=V20CredExRecord.STATE_OFFER_RECEIVED, - thread_id=thread_id, - ) - - with self.assertRaises(V20CredManagerError): - await self.manager.create_request(stored_cx_rec, holder_did) - async def test_receive_request(self): connection_id = "test_conn_id" - indy_cred_req = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "...": "...", - } - stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", connection_id=connection_id, initiator=V20CredExRecord.INITIATOR_EXTERNAL, role=V20CredExRecord.ROLE_ISSUER, ) - cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) with async_mock.patch.object( @@ -909,30 +893,18 @@ async def test_receive_request(self): assert cx_rec.state == V20CredExRecord.STATE_REQUEST_RECEIVED assert ( V20CredRequest.deserialize(cx_rec.cred_request).attachment() - == indy_cred_req + == INDY_CRED_REQ ) async def test_issue_credential(self): connection_id = "test_conn_id" + thread_id = "thread-id" comment = "comment" attr_values = { "legalName": "value", "jurisdictionId": "value", "incorporationDate": "value", } - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - indy_cred_req = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "...": "...", - } - thread_id = "thread-id" - cred_preview = V20CredPreview( attributes=[ V20CredAttrSpec(name=k, value=v) for (k, v) in attr_values.items() @@ -953,12 +925,12 @@ async def test_issue_credential(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -974,10 +946,9 @@ async def test_issue_credential(self): ) issuer = async_mock.MagicMock() - indy_cred = {"schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID, "...": "..."} cred_rev_id = "1000" issuer.create_credential = async_mock.CoroutineMock( - return_value=(json.dumps(indy_cred), cred_rev_id) + return_value=(json.dumps(INDY_CRED), cred_rev_id) ) self.context.injector.bind_instance(IndyIssuer, issuer) @@ -1011,8 +982,8 @@ async def test_issue_credential(self): issuer.create_credential.assert_called_once_with( SCHEMA, - indy_offer, - indy_cred_req, + INDY_OFFER, + INDY_CRED_REQ, attr_values, stored_cx_rec.cred_ex_id, REV_REG_ID, @@ -1021,9 +992,9 @@ async def test_issue_credential(self): assert ( V20CredIssue.deserialize(ret_cx_rec.cred_issue).attachment() - == indy_cred + == INDY_CRED ) - assert ret_cred_issue.attachment() == indy_cred + assert ret_cred_issue.attachment() == INDY_CRED assert ret_cx_rec.state == V20CredExRecord.STATE_ISSUED assert ret_cred_issue._thread_id == thread_id @@ -1044,17 +1015,6 @@ async def test_issue_credential_non_revocable(self): "jurisdictionId": "value", "incorporationDate": "value", } - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - indy_cred_req = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "...": "...", - } thread_id = "thread-id" cred_preview = V20CredPreview( @@ -1077,12 +1037,12 @@ async def test_issue_credential_non_revocable(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1098,9 +1058,8 @@ async def test_issue_credential_non_revocable(self): ) issuer = async_mock.MagicMock() - indy_cred = {"indy": "credential"} issuer.create_credential = async_mock.CoroutineMock( - return_value=(json.dumps(indy_cred), None) + return_value=(json.dumps(INDY_CRED), None) ) self.context.injector.bind_instance(IndyIssuer, issuer) @@ -1125,8 +1084,8 @@ async def test_issue_credential_non_revocable(self): issuer.create_credential.assert_called_once_with( SCHEMA, - indy_offer, - indy_cred_req, + INDY_OFFER, + INDY_CRED_REQ, attr_values, stored_cx_rec.cred_ex_id, None, @@ -1135,9 +1094,9 @@ async def test_issue_credential_non_revocable(self): assert ( V20CredIssue.deserialize(ret_cx_rec.cred_issue).attachment() - == indy_cred + == INDY_CRED ) - assert ret_cred_issue.attachment() == indy_cred + assert ret_cred_issue.attachment() == INDY_CRED assert ret_cx_rec.state == V20CredExRecord.STATE_ISSUED assert ret_cred_issue._thread_id == thread_id @@ -1149,13 +1108,6 @@ async def test_issue_credential_fills_rr(self): "jurisdictionId": "value", "incorporationDate": "value", } - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - indy_cred_req = {"schema_id": SCHEMA_ID, "cred_def_id": CRED_DEF_ID} thread_id = "thread-id" cred_rev_id = "1000" @@ -1179,12 +1131,12 @@ async def test_issue_credential_fills_rr(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1200,9 +1152,8 @@ async def test_issue_credential_fills_rr(self): ) issuer = async_mock.MagicMock() - indy_cred = {"indy": "credential"} issuer.create_credential = async_mock.CoroutineMock( - return_value=(json.dumps(indy_cred), cred_rev_id) + return_value=(json.dumps(INDY_CRED), cred_rev_id) ) self.context.injector.bind_instance(IndyIssuer, issuer) @@ -1245,8 +1196,8 @@ async def test_issue_credential_fills_rr(self): issuer.create_credential.assert_called_once_with( SCHEMA, - indy_offer, - indy_cred_req, + INDY_OFFER, + INDY_CRED_REQ, attr_values, stored_cx_rec.cred_ex_id, REV_REG_ID, @@ -1255,9 +1206,9 @@ async def test_issue_credential_fills_rr(self): assert ( V20CredIssue.deserialize(ret_cx_rec.cred_issue).attachment() - == indy_cred + == INDY_CRED ) - assert ret_cred_issue.attachment() == indy_cred + assert ret_cred_issue.attachment() == INDY_CRED assert ret_cx_rec.state == V20CredExRecord.STATE_ISSUED assert ret_cred_issue._thread_id == thread_id @@ -1311,17 +1262,6 @@ async def test_issue_credential_no_active_rr_no_retries(self): "jurisdictionId": "value", "incorporationDate": "value", } - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - indy_cred_req = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "...": "...", - } thread_id = "thread-id" cred_preview = V20CredPreview( @@ -1344,12 +1284,12 @@ async def test_issue_credential_no_active_rr_no_retries(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1365,10 +1305,9 @@ async def test_issue_credential_no_active_rr_no_retries(self): ) issuer = async_mock.MagicMock() - indy_cred = {"indy": "credential"} cred_rev_id = "1" issuer.create_credential = async_mock.CoroutineMock( - return_value=(json.dumps(indy_cred), cred_rev_id) + return_value=(json.dumps(INDY_CRED), cred_rev_id) ) self.context.injector.bind_instance(IndyIssuer, issuer) @@ -1404,17 +1343,6 @@ async def test_issue_credential_no_active_rr_retry(self): "jurisdictionId": "value", "incorporationDate": "value", } - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - indy_cred_req = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "...": "...", - } thread_id = "thread-id" cred_preview = V20CredPreview( @@ -1437,12 +1365,12 @@ async def test_issue_credential_no_active_rr_retry(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1458,10 +1386,9 @@ async def test_issue_credential_no_active_rr_retry(self): ) issuer = async_mock.MagicMock() - indy_cred = {"indy": "credential"} cred_rev_id = "1" issuer.create_credential = async_mock.CoroutineMock( - return_value=(json.dumps(indy_cred), cred_rev_id) + return_value=(json.dumps(INDY_CRED), cred_rev_id) ) self.context.injector.bind_instance(IndyIssuer, issuer) @@ -1501,17 +1428,6 @@ async def test_issue_credential_rr_full(self): "jurisdictionId": "value", "incorporationDate": "value", } - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - indy_cred_req = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "...": "...", - } thread_id = "thread-id" cred_preview = V20CredPreview( @@ -1534,12 +1450,12 @@ async def test_issue_credential_rr_full(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1587,7 +1503,6 @@ async def test_issue_credential_rr_full(self): async def test_receive_cred(self): connection_id = "test_conn_id" - indy_cred = {"indy": "credential"} stored_cx_rec = V20CredExRecord( cred_ex_id="dummy-cxid", @@ -1598,7 +1513,7 @@ async def test_receive_cred(self): cred_issue = V20CredIssue( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - credentials_attach=[AttachDecorator.data_base64(indy_cred, ident="0")], + credentials_attach=[AttachDecorator.data_base64(INDY_CRED, ident="0")], ) with async_mock.patch.object( @@ -1621,7 +1536,7 @@ async def test_receive_cred(self): assert ( V20CredIssue.deserialize(ret_cx_rec.cred_issue).attachment() - == indy_cred + == INDY_CRED ) assert ret_cx_rec.state == V20CredExRecord.STATE_CREDENTIAL_RECEIVED @@ -1633,21 +1548,8 @@ async def test_store_credential(self): "incorporationDate": ["value", None], "pic": ["cG90YXRv", "image/jpeg"], } - indy_cred = {"cred_def_id": CRED_DEF_ID, "rev_reg_id": REV_REG_ID, "...": "..."} cred_req_meta = {"req": "meta"} thread_id = "thread-id" - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - indy_cred_req = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "...": "...", - } - cred_preview = V20CredPreview( attributes=[ V20CredAttrSpec(name=k, value=v[0], mime_type=v[1]) @@ -1669,16 +1571,16 @@ async def test_store_credential(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) cred_issue = V20CredIssue( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - credentials_attach=[AttachDecorator.data_base64(indy_cred, ident="0")], + credentials_attach=[AttachDecorator.data_base64(INDY_CRED, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1750,7 +1652,7 @@ async def test_store_credential(self): holder.store_credential.assert_called_once_with( CRED_DEF, - indy_cred, + INDY_CRED, cred_req_meta, {"pic": "image/jpeg"}, credential_id=cred_id, @@ -1759,7 +1661,7 @@ async def test_store_credential(self): assert ( V20CredIssue.deserialize(ret_cx_rec.cred_issue).attachment() - == indy_cred + == INDY_CRED ) assert ret_cx_rec.state == V20CredExRecord.STATE_DONE assert ret_cred_ack._thread_id == thread_id @@ -1780,7 +1682,6 @@ async def test_store_credential_bad_state(self): async def test_store_credential_holder_store_indy_error(self): connection_id = "test_conn_id" - indy_cred = {"cred_def_id": CRED_DEF_ID, "...": "..."} cred_req_meta = {"req": "meta"} thread_id = "thread-id" attr_values = { @@ -1789,17 +1690,6 @@ async def test_store_credential_holder_store_indy_error(self): "incorporationDate": ["value", None], "pic": ["cG90YXRv", "image/jpeg"], } - indy_offer = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "nonce": "0", - "...": "...", - } - indy_cred_req = { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - "...": "...", - } cred_preview = V20CredPreview( attributes=[ @@ -1822,16 +1712,16 @@ async def test_store_credential_holder_store_indy_error(self): ) cred_offer = V20CredOffer( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - offers_attach=[AttachDecorator.data_base64(indy_offer, ident="0")], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - requests_attach=[AttachDecorator.data_base64(indy_cred_req, ident="0")], + requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) cred_issue = V20CredIssue( formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], - credentials_attach=[AttachDecorator.data_base64(indy_cred, ident="0")], + credentials_attach=[AttachDecorator.data_base64(INDY_CRED, ident="0")], ) stored_cx_rec = V20CredExRecord( @@ -1862,11 +1752,16 @@ async def test_store_credential_holder_store_indy_error(self): with async_mock.patch.object( test_module.V20CredManager, "get_detail_record", autospec=True - ) as mock_get_detail_record: + ) as mock_get_detail_record, async_mock.patch.object( + test_module.RevocationRegistry, "from_definition", async_mock.MagicMock() + ) as mock_rev_reg: mock_get_detail_record.return_value = async_mock.MagicMock( cred_request_metadata=cred_req_meta, save=async_mock.CoroutineMock(), ) + mock_rev_reg.return_value = async_mock.MagicMock( + get_or_fetch_local_tails_path=async_mock.CoroutineMock() + ) with self.assertRaises(test_module.IndyHolderError) as context: await self.manager.store_credential( cred_ex_record=stored_cx_rec, cred_id=cred_id From 29963f76c737148dc57dba8f4e3bd4b6294343a1 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 11 Mar 2021 16:01:26 +0000 Subject: [PATCH 123/243] format identifiers vary only by format in context of their messages Signed-off-by: sklump --- .../issue_credential/v2_0/messages/cred_format.py | 4 ++-- .../v2_0/messages/tests/test_cred_format.py | 7 +++++-- .../protocols/present_proof/v2_0/messages/pres_format.py | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py index 83f0ae78f8..078a95a090 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py @@ -36,12 +36,12 @@ class Format(Enum): """Attachment format.""" INDY = FormatSpec( - "hlindy-zkp-v1.0", + "hlindy@v2.0", {"indy", "hyperledgerindy", "hlindy"}, V20CredExRecordIndy, ) DIF = FormatSpec( - "dif/credential-manifest@v1.0", + "dif@v1.0", {"dif", "w3c", "jsonld"}, V20CredExRecordDIF, ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py index 47cec9708a..99f088f241 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py @@ -29,14 +29,17 @@ def test_get_completeness(self): ) assert V20CredFormat.Format.get("no such format") is None assert V20CredFormat.Format.get("Indy") is V20CredFormat.Format.INDY - assert V20CredFormat.Format.get("HL/INDY").aries == "hlindy-zkp-v1.0" + assert ( + V20CredFormat.Format.get("HL/INDY").aries + == V20CredFormat.Format.INDY.aries + ) assert "indy" in V20CredFormat.Format.get("HL/INDY").aka assert ( V20CredFormat.Format.get("HL/INDY").api in V20CredFormat.Format.get("hl-indy").aka ) assert ( - V20CredFormat.Format.get("JSON-LD").aries == "dif/credential-manifest@v1.0" + V20CredFormat.Format.get("JSON-LD").aries == V20CredFormat.Format.DIF.aries ) assert ( V20CredFormat.Format.get("HL/INDY").detail.__name__ == "V20CredExRecordIndy" diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py index f310a48ce7..42a61a4962 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -30,11 +30,11 @@ class Format(Enum): """Attachment format.""" INDY = FormatSpec( - "hlindy@v2.0", # TODO - revisit upon aries-rfcs PR 599 resolution + "hlindy@v2.0", {"indy", "hyperledgerindy", "hlindy"}, ) DIF = FormatSpec( - "dif@v1.0", # TODO - revisit upon aries-rfcs PR 599 resolution + "dif@v1.0", {"dif", "w3c", "jsonld"}, ) From d54f069bf28bde156d5afffbaeb0cc7c6b82de40 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 11 Mar 2021 16:01:56 +0000 Subject: [PATCH 124/243] black tweak Signed-off-by: sklump --- .../issue_credential/v2_0/messages/tests/test_cred_format.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py index 99f088f241..647f37686c 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py @@ -30,8 +30,7 @@ def test_get_completeness(self): assert V20CredFormat.Format.get("no such format") is None assert V20CredFormat.Format.get("Indy") is V20CredFormat.Format.INDY assert ( - V20CredFormat.Format.get("HL/INDY").aries - == V20CredFormat.Format.INDY.aries + V20CredFormat.Format.get("HL/INDY").aries == V20CredFormat.Format.INDY.aries ) assert "indy" in V20CredFormat.Format.get("HL/INDY").aka assert ( From b1382b5909807230fa45aec38111b6e1379d463a Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 11 Mar 2021 16:42:22 +0000 Subject: [PATCH 125/243] cred-manifest/pres-exch differentiation for DIF attachment formats: DIF uses 2 distinct RFCs Signed-off-by: sklump --- .../protocols/issue_credential/v2_0/messages/cred_format.py | 2 +- .../protocols/present_proof/v2_0/messages/pres_format.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py index 078a95a090..14ba5bc84e 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py @@ -41,7 +41,7 @@ class Format(Enum): V20CredExRecordIndy, ) DIF = FormatSpec( - "dif@v1.0", + "dif/cred-manifest@v1.0", {"dif", "w3c", "jsonld"}, V20CredExRecordDIF, ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py index 42a61a4962..dac4e93753 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -34,7 +34,7 @@ class Format(Enum): {"indy", "hyperledgerindy", "hlindy"}, ) DIF = FormatSpec( - "dif@v1.0", + "dif/pres-exch@v1.0", {"dif", "w3c", "jsonld"}, ) From 68f9d54ba8abf8e93704547280af6ab49f57141b Mon Sep 17 00:00:00 2001 From: sklump Date: Fri, 12 Mar 2021 20:03:36 +0000 Subject: [PATCH 126/243] turn format/message relationship inside out Signed-off-by: sklump --- .../tests/test_cred_request_handler.py | 19 +- .../issue_credential/v2_0/manager.py | 50 ++- .../issue_credential/v2_0/message_types.py | 29 +- .../v2_0/messages/cred_format.py | 77 +--- .../v2_0/messages/cred_issue.py | 9 +- .../v2_0/messages/cred_offer.py | 11 +- .../v2_0/messages/cred_proposal.py | 8 +- .../v2_0/messages/cred_request.py | 7 +- .../v2_0/messages/tests/test_cred_format.py | 26 +- .../v2_0/messages/tests/test_cred_issue.py | 61 +-- .../v2_0/messages/tests/test_cred_offer.py | 119 +++--- .../v2_0/messages/tests/test_cred_proposal.py | 72 ++-- .../v2_0/messages/tests/test_cred_request.py | 116 +++--- .../v2_0/models/cred_ex_record.py | 29 ++ .../v2_0/tests/test_manager.py | 374 ++++++++++++++++-- .../v2_0/messages/tests/test_pres.py | 3 +- 16 files changed, 699 insertions(+), 311 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py b/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py index cb966aa436..13571912d0 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py @@ -8,6 +8,7 @@ from ......messaging.responder import MockResponder from ......transport.inbound.receipt import MessageReceipt +from ...message_types import ATTACHMENT_FORMAT, CRED_20_REQUEST from ...messages.cred_request import V20CredRequest from ...messages.cred_format import V20CredFormat from ...messages.cred_proposal import V20CredProposal @@ -57,7 +58,14 @@ async def test_called_auto_issue(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api] + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -105,7 +113,14 @@ async def test_called_auto_issue_no_preview(self): cred_proposal = V20CredProposal( credential_preview=None, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api] + ) + ], filters_attach=[ AttachDecorator.data_base64( {"cred_def_id": "LjgpST2rjsoxYegQDRm7EL:3:CL:12:tag1"}, diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py index 94412772b3..e56a87aefc 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py @@ -20,6 +20,13 @@ from ....storage.base import BaseStorage from ....storage.error import StorageNotFoundError +from .message_types import ( + ATTACHMENT_FORMAT, + CRED_20_PROPOSAL, + CRED_20_OFFER, + CRED_20_REQUEST, + CRED_20_ISSUE, +) from .messages.cred_ack import V20CredAck from .messages.cred_format import V20CredFormat from .messages.cred_issue import V20CredIssue @@ -154,7 +161,12 @@ async def create_proposal( comment=comment, credential_preview=cred_preview, formats=[ - V20CredFormat(attach_id=str(ident), format_=V20CredFormat.Format.get(f)) + V20CredFormat( + attach_id=str(ident), + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.get(f).api], + ) for ident, f in enumerate(fmt2filter.keys()) ], filters_attach=[ @@ -293,7 +305,14 @@ async def _create(cred_def_id): # may change for DIF replacement_id=replacement_id, comment=comment, credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(cred_offer, ident="0")], ) @@ -340,7 +359,14 @@ async def receive_offer( cred_proposal_ser = V20CredProposal( comment=cred_offer_message.comment, credential_preview=cred_offer_message.credential_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -451,7 +477,14 @@ async def _create_indy(): cred_request_message = V20CredRequest( comment=comment, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api], + ) + ], requests_attach=[ AttachDecorator.data_base64(cred_req_result["request"], ident="0") ], @@ -679,7 +712,14 @@ async def issue_credential( cred_issue_message = V20CredIssue( replacement_id=replacement_id, comment=comment, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_ISSUE + ][V20CredFormat.Format.INDY.api], + ) + ], credentials_attach=[ AttachDecorator.data_base64(json.loads(cred_json), ident="0") ], diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/message_types.py b/aries_cloudagent/protocols/issue_credential/v2_0/message_types.py index 46141d76fa..701939a450 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/message_types.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/message_types.py @@ -2,6 +2,9 @@ from ...didcomm_prefix import DIDCommPrefix +from .messages.cred_format import V20CredFormat + + SPEC_URI = ( "https://github.com/hyperledger/aries-rfcs/tree/" "cd27fc64aa2805f756a118043d7c880354353047/features/0453-issue-credential-v2" @@ -21,12 +24,32 @@ CRED_20_PROPOSAL: ( f"{PROTOCOL_PACKAGE}.messages.cred_proposal.V20CredProposal" ), - CRED_20_OFFER: (f"{PROTOCOL_PACKAGE}.messages.cred_offer.V20CredOffer"), - CRED_20_REQUEST: (f"{PROTOCOL_PACKAGE}.messages.cred_request.V20CredRequest"), - CRED_20_ISSUE: (f"{PROTOCOL_PACKAGE}.messages.cred_issue.V20CredIssue"), + CRED_20_OFFER: f"{PROTOCOL_PACKAGE}.messages.cred_offer.V20CredOffer", + CRED_20_REQUEST: f"{PROTOCOL_PACKAGE}.messages.cred_request.V20CredRequest", + CRED_20_ISSUE: f"{PROTOCOL_PACKAGE}.messages.cred_issue.V20CredIssue", CRED_20_ACK: f"{PROTOCOL_PACKAGE}.messages.cred_ack.V20CredAck", } ) # Inner object types CRED_20_PREVIEW = "issue-credential/2.0/credential-preview" + +# Format specifications +ATTACHMENT_FORMAT = { + CRED_20_PROPOSAL: { + V20CredFormat.Format.INDY.api: "hlindy/cred-filter@v2.0", + V20CredFormat.Format.DIF.api: "dif/credential-manifest@v1.0", + }, + CRED_20_OFFER: { + V20CredFormat.Format.INDY.api: "hlindy/cred-abstract@v2.0", + V20CredFormat.Format.DIF.api: "dif/credential-manifest@v1.0", + }, + CRED_20_REQUEST: { + V20CredFormat.Format.INDY.api: "hlindy/cred-req@v2.0", + V20CredFormat.Format.DIF.api: "dif/credential-manifest@v1.0", + }, + CRED_20_ISSUE: { + V20CredFormat.Format.INDY.api: "hlindy/cred@v2.0", + V20CredFormat.Format.DIF.api: None, + }, +} diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py index 14ba5bc84e..c5e34eb9c7 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py @@ -2,26 +2,20 @@ from collections import namedtuple from enum import Enum -from re import sub -from typing import Mapping, Sequence, Union +from typing import Sequence, Union from uuid import uuid4 -from marshmallow import EXCLUDE, fields, validate, ValidationError +from marshmallow import EXCLUDE, fields, validate -from .....messaging.credential_definitions.util import CRED_DEF_TAGS from .....messaging.decorators.attach_decorator import AttachDecorator from .....messaging.models.base import BaseModel, BaseModelSchema from .....messaging.valid import UUIDFour -from ...indy.cred import IndyCredentialSchema -from ...indy.cred_abstract import IndyCredAbstractSchema -from ...indy.cred_request import IndyCredRequestSchema - from ..models.detail.dif import V20CredExRecordDIF from ..models.detail.indy import V20CredExRecordIndy -# Aries RFC value, further monikers, cred ex detail record class -FormatSpec = namedtuple("FormatSpec", "aries aka detail") +# aries prefix, cred ex detail record class +FormatSpec = namedtuple("FormatSpec", "aries detail") class V20CredFormat(BaseModel): @@ -35,73 +29,36 @@ class Meta: class Format(Enum): """Attachment format.""" - INDY = FormatSpec( - "hlindy@v2.0", - {"indy", "hyperledgerindy", "hlindy"}, - V20CredExRecordIndy, - ) - DIF = FormatSpec( - "dif/cred-manifest@v1.0", - {"dif", "w3c", "jsonld"}, - V20CredExRecordDIF, - ) + INDY = FormatSpec("hlindy/", V20CredExRecordIndy) + DIF = FormatSpec("dif/", V20CredExRecordDIF) @classmethod def get(cls, label: Union[str, "V20CredFormat.Format"]): """Get format enum for label.""" if isinstance(label, str): for fmt in V20CredFormat.Format: - if ( - fmt.aries == label - or sub("[^a-zA-Z0-9]+", "", label.lower()) in fmt.aka - ): + if label.startswith(fmt.aries) or label == fmt.api: return fmt elif isinstance(label, V20CredFormat.Format): return label return None - @property - def aries(self) -> str: - """Accessor for aries identifier.""" - return self.value.aries - - @property - def aka(self) -> str: - """Accessor for alternative identifier list.""" - return self.value.aka - @property def api(self) -> str: """Admin API specifier.""" return self.name.lower() + @property + def aries(self) -> str: + """Aries specifier prefix.""" + return self.value.aries + @property def detail(self) -> str: """Accessor for credential exchange detail class.""" return self.value.detail - def validate_filter_attach(self, data: Mapping): - """Raise ValidationError for wrong filtration criteria.""" - if self is V20CredFormat.Format.INDY: - if data.keys() - set(CRED_DEF_TAGS): - raise ValidationError(f"Bad indy credential filter: {data}") - - def validate_offer_attach(self, data: Mapping): - """Raise ValidationError for wrong offer attachment format.""" - if self is V20CredFormat.Format.INDY: - IndyCredAbstractSchema().load(data) - - def validate_request_attach(self, data: Mapping): - """Raise ValidationError for wrong request attachment format.""" - if self is V20CredFormat.Format.INDY: - IndyCredRequestSchema().load(data) - - def validate_credential_attach(self, data: Mapping): - """Raise ValidationError for wrong credential attachment format.""" - if self is V20CredFormat.Format.INDY: - IndyCredentialSchema().load(data) - def get_attachment_data( self, formats: Sequence["V20CredFormat"], @@ -125,13 +82,11 @@ def __init__( self, *, attach_id: str = None, - format_: Union[str, "V20CredFormat.Format"] = None, + format_: str = None, ): """Initialize issue-credential protocol message attachment format.""" self.attach_id = attach_id or uuid4() - self.format_ = ( - V20CredFormat.Format.get(format_) or V20CredFormat.Format.INDY - ).aries + self.format_ = format_ @property def format(self) -> str: @@ -159,6 +114,6 @@ class Meta: allow_none=False, description="Acceptable issue-credential message attachment format specifier", data_key="format", - validate=validate.OneOf([f.aries for f in V20CredFormat.Format]), - example=V20CredFormat.Format.INDY.aries, + validate=validate.Regexp("^(hlindy/.*@v2.0)|(dif/.*@v1.0)$"), + example="dif/credential-manifest@v1.0", ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py index 1b7a63e365..49fad666e3 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py @@ -2,7 +2,7 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields, validates_schema, ValidationError +from marshmallow import EXCLUDE, fields, RAISE, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema from .....messaging.decorators.attach_decorator import ( @@ -11,6 +11,8 @@ ) from .....messaging.valid import UUIDFour +from ...indy.cred import IndyCredentialSchema + from ..message_types import CRED_20_ISSUE, PROTOCOL_PACKAGE from .cred_format import V20CredFormat, V20CredFormatSchema @@ -124,6 +126,5 @@ def get_attach_by_id(attach_id): for fmt in formats: atch = get_attach_by_id(fmt.attach_id) - V20CredFormat.Format.get(fmt.format).validate_credential_attach( - atch.content - ) + if V20CredFormat.Format.get(fmt.format) is V20CredFormat.Format.INDY: + IndyCredentialSchema(unknown=RAISE).load(atch.content) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py index fc5905ab76..fc75ee4c01 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py @@ -2,7 +2,7 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields, validates_schema, ValidationError +from marshmallow import EXCLUDE, fields, RAISE, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema from .....messaging.decorators.attach_decorator import ( @@ -11,6 +11,8 @@ ) from .....messaging.valid import UUIDFour +from ...indy.cred_abstract import IndyCredAbstractSchema + from ..message_types import CRED_20_OFFER, PROTOCOL_PACKAGE from .cred_format import V20CredFormat, V20CredFormatSchema @@ -118,11 +120,11 @@ def validate_fields(self, data, **kwargs): """Validate attachments per format.""" def get_attach_by_id(attach_id): - """Return filter with input attachment identifier.""" + """Return attachment with input identifier.""" for f in attachments: if f.ident == attach_id: return f - raise ValidationError(f"No filter matches attach_id {attach_id} in format") + raise ValidationError(f"No attachment for attach_id {attach_id} in formats") formats = data.get("formats") or [] attachments = data.get("offers_attach") or [] @@ -131,4 +133,5 @@ def get_attach_by_id(attach_id): for fmt in formats: atch = get_attach_by_id(fmt.attach_id) - V20CredFormat.Format.get(fmt.format).validate_offer_attach(atch.content) + if V20CredFormat.Format.get(fmt.format) is V20CredFormat.Format.INDY: + IndyCredAbstractSchema(unknown=RAISE).load(atch.content) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py index 42b3547321..960f303074 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py @@ -2,9 +2,10 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields, validates_schema, ValidationError +from marshmallow import EXCLUDE, fields, RAISE, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema +from .....messaging.credential_definitions.util import CredDefQueryStringSchema from .....messaging.decorators.attach_decorator import ( AttachDecorator, AttachDecoratorSchema, @@ -98,7 +99,7 @@ class Meta: V20CredFormatSchema, many=True, required=True, - description="Acceptable attachment formats", + description="Attachment formats", ) filters_attach = fields.Nested( AttachDecoratorSchema, @@ -128,4 +129,5 @@ def get_attach_by_id(attach_id): for fmt in formats: atch = get_attach_by_id(fmt.attach_id) - V20CredFormat.Format.get(fmt.format).validate_filter_attach(atch.content) + if V20CredFormat.Format.get(fmt.format) is V20CredFormat.Format.INDY: + CredDefQueryStringSchema(unknown=RAISE).load(atch.content) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py index c631863ac5..dd9d1538d0 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py @@ -2,7 +2,7 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields, validates_schema, ValidationError +from marshmallow import EXCLUDE, fields, RAISE, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema from .....messaging.decorators.attach_decorator import ( @@ -10,6 +10,8 @@ AttachDecoratorSchema, ) +from ...indy.cred_request import IndyCredRequestSchema + from ..message_types import CRED_20_REQUEST, PROTOCOL_PACKAGE from .cred_format import V20CredFormat, V20CredFormatSchema @@ -117,4 +119,5 @@ def get_attach_by_id(attach_id): for fmt in formats: atch = get_attach_by_id(fmt.attach_id) - V20CredFormat.Format.get(fmt.format).validate_request_attach(atch.content) + if V20CredFormat.Format.get(fmt.format) is V20CredFormat.Format.INDY: + IndyCredRequestSchema(unknown=RAISE).load(atch.content) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py index 647f37686c..e534823ab2 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py @@ -28,31 +28,19 @@ def test_get_completeness(self): is V20CredFormat.Format.INDY ) assert V20CredFormat.Format.get("no such format") is None - assert V20CredFormat.Format.get("Indy") is V20CredFormat.Format.INDY + assert V20CredFormat.Format.get("hlindy/...") is V20CredFormat.Format.INDY assert ( - V20CredFormat.Format.get("HL/INDY").aries == V20CredFormat.Format.INDY.aries + V20CredFormat.Format.get("dif/...").detail.__name__ == "V20CredExRecordDIF" ) - assert "indy" in V20CredFormat.Format.get("HL/INDY").aka - assert ( - V20CredFormat.Format.get("HL/INDY").api - in V20CredFormat.Format.get("hl-indy").aka - ) - assert ( - V20CredFormat.Format.get("JSON-LD").aries == V20CredFormat.Format.DIF.aries - ) - assert ( - V20CredFormat.Format.get("HL/INDY").detail.__name__ == "V20CredExRecordIndy" - ) - assert V20CredFormat.Format.get("dif").detail.__name__ == "V20CredExRecordDIF" def test_get_attachment_data(self): assert ( V20CredFormat.Format.INDY.get_attachment_data( formats=[ - V20CredFormat(attach_id="abc", format_=V20CredFormat.Format.INDY) + V20CredFormat(attach_id="indy", format_=V20CredFormat.Format.INDY) ], attachments=[ - AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc") + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="indy") ], ) == TEST_INDY_FILTER @@ -61,7 +49,7 @@ def test_get_attachment_data(self): assert ( V20CredFormat.Format.INDY.get_attachment_data( formats=[ - V20CredFormat(attach_id="abc", format_=V20CredFormat.Format.INDY) + V20CredFormat(attach_id="indy", format_=V20CredFormat.Format.INDY) ], attachments=[ AttachDecorator.data_base64(TEST_INDY_FILTER, ident="xxx") @@ -73,10 +61,10 @@ def test_get_attachment_data(self): assert ( V20CredFormat.Format.DIF.get_attachment_data( formats=[ - V20CredFormat(attach_id="abc", format_=V20CredFormat.Format.INDY) + V20CredFormat(attach_id="indy", format_=V20CredFormat.Format.INDY) ], attachments=[ - AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc") + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="indy") ], ) is None diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py index 1128c4d029..a7d14de552 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_issue.py @@ -1,10 +1,11 @@ from asynctest import mock as async_mock, TestCase as AsyncTestCase from ......messaging.decorators.attach_decorator import AttachDecorator +from ......messaging.models.base import BaseModelError from .....didcomm_prefix import DIDCommPrefix -from ...message_types import CRED_20_ISSUE +from ...message_types import ATTACHMENT_FORMAT, CRED_20_ISSUE from .. import cred_issue as test_module from ..cred_format import V20CredFormat @@ -75,7 +76,7 @@ class TestV20CredIssue(AsyncTestCase): formats=[ V20CredFormat( attach_id="indy", - format_=V20CredFormat.Format.INDY, + format_=ATTACHMENT_FORMAT[CRED_20_ISSUE][V20CredFormat.Format.INDY.api], ) ], credentials_attach=[ @@ -88,38 +89,42 @@ class TestV20CredIssue(AsyncTestCase): async def test_init_type(self): """Test initializer and type.""" - cred_issue = V20CredIssue( - replacement_id="0", - comment="Test", - formats=[ - V20CredFormat( - attach_id="abc", - format_=V20CredFormat.Format.INDY, - ) - ], - credentials_attach=[ - AttachDecorator.data_base64( - mapping=TestV20CredIssue.INDY_CRED, - ident="abc", - ) - ], + assert ( + TestV20CredIssue.CRED_ISSUE.credentials_attach[0].content + == TestV20CredIssue.INDY_CRED + ) + assert TestV20CredIssue.CRED_ISSUE.credentials_attach[ # auto-generates UUID4 + 0 + ].ident + assert TestV20CredIssue.CRED_ISSUE.attachment() == TestV20CredIssue.INDY_CRED + assert TestV20CredIssue.CRED_ISSUE._type == DIDCommPrefix.qualify_current( + CRED_20_ISSUE ) - assert cred_issue.credentials_attach[0].content == TestV20CredIssue.INDY_CRED - assert cred_issue.credentials_attach[0].ident # auto-generates UUID4 - assert cred_issue.attachment() == TestV20CredIssue.INDY_CRED - assert cred_issue._type == DIDCommPrefix.qualify_current(CRED_20_ISSUE) async def test_deserialize(self): """Test deserialization.""" - obj = TestV20CredIssue.CRED_ISSUE + obj = TestV20CredIssue.CRED_ISSUE.serialize() - with async_mock.patch.object( - test_module.V20CredIssueSchema, "load", async_mock.MagicMock() - ) as mock_load: - cred_issue = V20CredIssue.deserialize(obj) - mock_load.assert_called_once_with(obj) + cred_issue = V20CredIssue.deserialize(obj) + assert type(cred_issue) == V20CredIssue - assert cred_issue is mock_load.return_value + obj["credentials~attach"][0]["data"]["base64"] = "eyJub3QiOiAiaW5keSJ9" + with self.assertRaises(BaseModelError): + V20CredIssue.deserialize(obj) + + obj["credentials~attach"][0]["@id"] = "xxx" + with self.assertRaises(BaseModelError): + V20CredIssue.deserialize(obj) + + obj["credentials~attach"].append( # more attachments than formats + { + "@id": "def", + "mime-type": "application/json", + "data": {"base64": "eyJub3QiOiAiaW5keSJ9"}, + } + ) + with self.assertRaises(BaseModelError): + V20CredIssue.deserialize(obj) async def test_serialize(self): """Test serialization.""" diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py index e7eceb2290..f4d0df0d01 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py @@ -1,10 +1,11 @@ from asynctest import mock as async_mock, TestCase as AsyncTestCase from ......messaging.decorators.attach_decorator import AttachDecorator +from ......messaging.models.base import BaseModelError from .....didcomm_prefix import DIDCommPrefix -from ...message_types import CRED_20_OFFER +from ...message_types import ATTACHMENT_FORMAT, CRED_20_OFFER from .. import cred_offer as test_module from ..cred_format import V20CredFormat @@ -38,75 +39,73 @@ class TestV20CredOffer(AsyncTestCase): ], }, } + preview = V20CredPreview( attributes=V20CredAttrSpec.list_plain( {"member": "James Bond", "favourite": "martini"} ) ) + CRED_OFFER = V20CredOffer( + comment="shaken, not stirred", + credential_preview=preview, + formats=[ + V20CredFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], + ) + ], + offers_attach=[ + AttachDecorator.data_base64( + mapping=indy_offer, + ident="indy", + ) + ], + ) + async def test_init_type(self): """Test initializer and type.""" - cred_offer = V20CredOffer( - comment="shaken, not stirred", - credential_preview=TestV20CredOffer.preview, - formats=[ - V20CredFormat( - attach_id="indy", - format_=V20CredFormat.Format.INDY, - ) - ], - offers_attach=[ - AttachDecorator.data_base64( - mapping=TestV20CredOffer.indy_offer, - ident="indy", - ) - ], + assert ( + TestV20CredOffer.CRED_OFFER.credential_preview == TestV20CredOffer.preview ) - assert cred_offer.credential_preview == TestV20CredOffer.preview - assert cred_offer.offers_attach[0].content == TestV20CredOffer.indy_offer - assert cred_offer.attachment() == TestV20CredOffer.indy_offer - assert cred_offer._type == DIDCommPrefix.qualify_current(CRED_20_OFFER) - - async def test_deserialize(self): - """Test deserialization.""" - obj = TestV20CredOffer.indy_offer - - with async_mock.patch.object( - test_module.V20CredOfferSchema, "load", async_mock.MagicMock() - ) as mock_load: - cred_offer = V20CredOffer.deserialize(obj) - mock_load.assert_called_once_with(obj) - - assert cred_offer is mock_load.return_value - - def test_serialize(self): - """ - Test serialization. - """ - cred_offer = V20CredOffer( - comment="shaken, not stirred", - credential_preview=TestV20CredOffer.preview, - formats=[ - V20CredFormat( - attach_id="indy", - format_=V20CredFormat.Format.INDY, - ) - ], - offers_attach=[ - AttachDecorator.data_base64( - mapping=TestV20CredOffer.indy_offer, - ident="indy", - ) - ], + assert ( + TestV20CredOffer.CRED_OFFER.offers_attach[0].content + == TestV20CredOffer.indy_offer + ) + assert ( + TestV20CredOffer.CRED_OFFER.attachment() == TestV20CredOffer.indy_offer + ) + assert ( + TestV20CredOffer.CRED_OFFER._type + == DIDCommPrefix.qualify_current(CRED_20_OFFER) ) - with async_mock.patch.object( - test_module.V20CredOfferSchema, "dump", async_mock.MagicMock() - ) as mock_dump: - cred_offer_dict = cred_offer.serialize() - mock_dump.assert_called_once_with(cred_offer) + async def test_serde(self): + """Test de/serialization.""" + obj = TestV20CredOffer.CRED_OFFER.serialize() - assert cred_offer_dict is mock_dump.return_value + cred_offer = V20CredOffer.deserialize(obj) + assert type(cred_offer) == V20CredOffer + + obj["offers~attach"][0]["data"]["base64"] = "eyJub3QiOiAiaW5keSJ9" + with self.assertRaises(BaseModelError): + V20CredOffer.deserialize(obj) + + obj["offers~attach"][0]["@id"] = "xxx" + with self.assertRaises(BaseModelError): + V20CredOffer.deserialize(obj) + + obj["offers~attach"].append( # more attachments than formats + { + "@id": "def", + "mime-type": "application/json", + "data": {"base64": "eyJub3QiOiAiaW5keSJ9"}, + } + ) + with self.assertRaises(BaseModelError): + V20CredOffer.deserialize(obj) class TestCredentialOfferSchema(AsyncTestCase): @@ -120,7 +119,9 @@ async def test_make_model(self): formats=[ V20CredFormat( attach_id="indy", - format_=V20CredFormat.Format.INDY, + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[ diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py index 62543cb408..5217a10679 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_proposal.py @@ -5,7 +5,7 @@ from .....didcomm_prefix import DIDCommPrefix -from ...message_types import CRED_20_PREVIEW, CRED_20_PROPOSAL +from ...message_types import ATTACHMENT_FORMAT, CRED_20_PREVIEW, CRED_20_PROPOSAL from ..cred_format import V20CredFormat from ..cred_proposal import V20CredProposal, V20CredFormat @@ -35,11 +35,15 @@ async def test_init(self): credential_preview=TEST_PREVIEW, formats=[ V20CredFormat( - attach_id="abc", - format_=V20CredFormat.Format.INDY.aries, + attach_id="indy", + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], - filters_attach=[AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc")], + filters_attach=[ + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="indy") + ], ) assert cred_proposal.credential_preview == TEST_PREVIEW assert cred_proposal.attachment() == TEST_INDY_FILTER @@ -59,9 +63,17 @@ async def test_deserialize(self): {"name": "icon", "mime-type": "image/png", "value": "cG90YXRv"}, ], }, + "formats": [ + { + "attach_id": "indy", + "format": ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], + } + ], "filters~attach": [ { - "@id": "abc", + "@id": "indy", "mime-type": "application/json", "data": { "base64": ( @@ -73,9 +85,6 @@ async def test_deserialize(self): }, } ], - "formats": [ - {"attach_id": "abc", "format": V20CredFormat.Format.INDY.aries} - ], } cred_proposal = V20CredProposal.deserialize(obj) assert type(cred_proposal) == V20CredProposal @@ -88,7 +97,7 @@ async def test_deserialize(self): with self.assertRaises(BaseModelError): V20CredProposal.deserialize(obj) - obj["filters~attach"].append( # more filters than formats + obj["filters~attach"].append( # more attachments than formats { "@id": "def", "mime-type": "application/json", @@ -106,11 +115,15 @@ async def test_serialize(self): credential_preview=TEST_PREVIEW, formats=[ V20CredFormat( - attach_id="abc", - format_=V20CredFormat.Format.INDY.aries, + attach_id="indy", + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], - filters_attach=[AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc")], + filters_attach=[ + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="indy") + ], ) cred_proposal_dict = cred_proposal.serialize() @@ -128,11 +141,16 @@ async def test_serialize(self): ], }, "formats": [ - {"attach_id": "abc", "format": V20CredFormat.Format.INDY.aries} + { + "attach_id": "indy", + "format": ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], + } ], "filters~attach": [ { - "@id": "abc", + "@id": "indy", "mime-type": "application/json", "data": { "base64": ( @@ -153,11 +171,13 @@ async def test_serialize_minimal(self): credential_preview=None, formats=[ V20CredFormat( - attach_id="abc", - format_=V20CredFormat.Format.INDY.aries, + attach_id="indy", + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], - filters_attach=[AttachDecorator.data_base64({}, ident="abc")], + filters_attach=[AttachDecorator.data_base64({}, ident="indy")], ) cred_proposal_dict = cred_proposal.serialize() @@ -167,15 +187,17 @@ async def test_serialize_minimal(self): "@type": DIDCommPrefix.qualify_current(CRED_20_PROPOSAL), "filters~attach": [ { - "@id": "abc", + "@id": "indy", "mime-type": "application/json", "data": {"base64": "e30="}, } ], "formats": [ { - "attach_id": "abc", - "format": V20CredFormat.Format.INDY.aries, + "attach_id": "indy", + "format": ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], } ], } @@ -190,11 +212,15 @@ async def test_make_model(self): credential_preview=TEST_PREVIEW, formats=[ V20CredFormat( - attach_id="abc", - format_=V20CredFormat.Format.INDY.aries, + attach_id="indy", + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], - filters_attach=[AttachDecorator.data_base64(TEST_INDY_FILTER, ident="abc")], + filters_attach=[ + AttachDecorator.data_base64(TEST_INDY_FILTER, ident="indy") + ], ) data = cred_proposal.serialize() diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py index 4ad556e50d..74a3dc9c6d 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py @@ -1,10 +1,11 @@ from asynctest import mock as async_mock, TestCase as AsyncTestCase from ......messaging.decorators.attach_decorator import AttachDecorator +from ......messaging.models.base import BaseModelError from .....didcomm_prefix import DIDCommPrefix -from ...message_types import CRED_20_REQUEST +from ...message_types import ATTACHMENT_FORMAT, CRED_20_REQUEST from .. import cred_request as test_module from ..cred_format import V20CredFormat @@ -44,66 +45,63 @@ class TestV20CredRequest(AsyncTestCase): } } + CRED_REQUEST = V20CredRequest( + comment="Test", + formats=[ + V20CredFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], + ) + ], + requests_attach=[ + AttachDecorator.data_base64( + ident="indy", + mapping=indy_cred_req, + ) + ], + ) + async def test_init_type(self): """Test initializer and type.""" - cred_request = V20CredRequest( - comment="Test", - formats=[ - V20CredFormat( - attach_id="abc", - format_=V20CredFormat.Format.INDY, - ) - ], - requests_attach=[ - AttachDecorator.data_base64( - mapping=TestV20CredRequest.indy_cred_req, - ident="abc", - ) - ], + assert ( + TestV20CredRequest.CRED_REQUEST.requests_attach[0].content + == TestV20CredRequest.indy_cred_req ) assert ( - cred_request.requests_attach[0].content == TestV20CredRequest.indy_cred_req + TestV20CredRequest.CRED_REQUEST.attachment() + == TestV20CredRequest.indy_cred_req + ) + assert ( + TestV20CredRequest.CRED_REQUEST._type + == DIDCommPrefix.qualify_current(CRED_20_REQUEST) ) - assert cred_request.attachment() == TestV20CredRequest.indy_cred_req - assert cred_request._type == DIDCommPrefix.qualify_current(CRED_20_REQUEST) - - async def test_deserialize(self): - """Test deserialization.""" - obj = TestV20CredRequest.indy_cred_req - with async_mock.patch.object( - test_module.V20CredRequestSchema, "load", async_mock.MagicMock() - ) as mock_load: - cred_request = V20CredRequest.deserialize(obj) - mock_load.assert_called_once_with(obj) + async def test_serde(self): + """Test de/serialization.""" + obj = TestV20CredRequest.CRED_REQUEST.serialize() - assert cred_request is mock_load.return_value + cred_request = V20CredRequest.deserialize(obj) + assert type(cred_request) == V20CredRequest - async def test_serialize(self): - """Test serialization.""" - cred_request = V20CredRequest( - comment="Test", - formats=[ - V20CredFormat( - attach_id="abc", - format_=V20CredFormat.Format.INDY, - ) - ], - requests_attach=[ - AttachDecorator.data_base64( - ident="abc", - mapping=TestV20CredRequest.indy_cred_req, - ) - ], - ) + obj["requests~attach"][0]["data"]["base64"] = "eyJub3QiOiAiaW5keSJ9" + with self.assertRaises(BaseModelError): + V20CredRequest.deserialize(obj) - with async_mock.patch.object( - test_module.V20CredRequestSchema, "dump", async_mock.MagicMock() - ) as mock_dump: - cred_request_dict = cred_request.serialize() - mock_dump.assert_called_once_with(cred_request) + obj["requests~attach"][0]["@id"] = "xxx" + with self.assertRaises(BaseModelError): + V20CredRequest.deserialize(obj) - assert cred_request_dict is mock_dump.return_value + obj["requests~attach"].append( # more filters than formats + { + "@id": "def", + "mime-type": "application/json", + "data": {"base64": "eyJub3QiOiAiaW5keSJ9"}, + } + ) + with self.assertRaises(BaseModelError): + V20CredRequest.deserialize(obj) class TestV20CredRequestSchema(AsyncTestCase): @@ -116,11 +114,15 @@ async def test_make_model(self): formats=[ V20CredFormat( attach_id="indy", - format_=V20CredFormat.Format.INDY, + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ), V20CredFormat( attach_id="dif-json", - format_=V20CredFormat.Format.DIF, + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.DIF.api + ], ), ], requests_attach=[ @@ -150,11 +152,15 @@ async def test_make_model(self): formats=[ V20CredFormat( attach_id="indy", - format_=V20CredFormat.Format.INDY, + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ), V20CredFormat( attach_id="dif-links", - format_=V20CredFormat.Format.DIF, + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.DIF.api + ], ), ], requests_attach=[ diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py b/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py index 6df1df27eb..7b62c29344 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py @@ -61,6 +61,7 @@ def __init__( error_msg: str = None, trace: bool = False, conn_id: str = None, # for backward compatibility to restore from storage + by_format: Mapping = None, # formalism for base_record.from_storage() **kwargs, ): """Initialize a new V20CredExRecord.""" @@ -139,6 +140,34 @@ async def retrieve_by_conn_and_thread( await cls.set_cached_key(session, cache_key, record.cred_ex_id) return record + ''' + @property + def by_format(self) -> Mapping: + """Record proposal, offer, request, and credential data structures by format.""" + result = {} + for item, cls in { + "cred_proposal": V20PresProposal, + "cred_offer": V20PresRequest, + "cred_request": V20PresRequest, + "cred": V20Cred, + }.items(): + mapping = getattr(self, item) + if mapping: + msg = cls.deserialize(mapping) + result.update( + { + item: { + V20PresFormat.Format.get(f.format).api: msg.attachment( + V20PresFormat.Format.get(f.format) + ) + for f in msg.formats + } + } + ) + + return result + ''' + def __eq__(self, other: Any) -> bool: """Comparison between records.""" return super().__eq__(other) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py index 1a442da72c..54d699a409 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py @@ -19,6 +19,13 @@ from .. import manager as test_module from ..manager import V20CredManager, V20CredManagerError +from ..message_types import ( + ATTACHMENT_FORMAT, + CRED_20_PROPOSAL, + CRED_20_OFFER, + CRED_20_REQUEST, + CRED_20_ISSUE, +) from ..messages.cred_ack import V20CredAck from ..messages.cred_issue import V20CredIssue from ..messages.cred_format import V20CredFormat @@ -243,7 +250,14 @@ async def test_prepare_send(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( {"cred_def_id": CRED_DEF_ID, "schema_id": SCHEMA_ID}, ident="0" @@ -346,7 +360,12 @@ async def test_receive_proposal(self): cred_proposal = V20CredProposal( credential_preview=cred_preview, formats=[ - V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY) + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) ], filters_attach=[ AttachDecorator.data_base64({"cred_def_id": CRED_DEF_ID}, ident="0") @@ -383,7 +402,14 @@ async def test_create_free_offer(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64({"cred_def_id": CRED_DEF_ID}, ident="0") ], @@ -461,7 +487,14 @@ async def test_create_free_offer_attr_mismatch(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64({"cred_def_id": CRED_DEF_ID}, ident="0") ], @@ -520,7 +553,14 @@ async def test_create_bound_offer(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[AttachDecorator.data_base64({}, ident="0")], ) cx_rec = V20CredExRecord( @@ -592,7 +632,14 @@ async def test_create_bound_offer_no_matching_sent_cred_def(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[AttachDecorator.data_base64({}, ident="0")], ) cx_rec = V20CredExRecord( @@ -632,12 +679,26 @@ async def test_receive_offer_proposed(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[AttachDecorator.data_base64({}, ident="0")], ) cred_offer = V20CredOffer( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -690,7 +751,14 @@ async def test_receive_free_offer(self): ) cred_offer = V20CredOffer( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -731,7 +799,14 @@ async def test_create_request(self): holder_did = "did" cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -796,7 +871,14 @@ async def test_create_request_no_cache(self): holder_did = "did" cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -845,7 +927,14 @@ async def test_create_request_bad_state(self): holder_did = "did" cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) @@ -873,7 +962,14 @@ async def test_receive_request(self): role=V20CredExRecord.ROLE_ISSUER, ) cred_request = V20CredRequest( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api], + ) + ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) @@ -912,7 +1008,14 @@ async def test_issue_credential(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -924,12 +1027,26 @@ async def test_issue_credential(self): ], ) cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api], + ) + ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) @@ -1024,7 +1141,14 @@ async def test_issue_credential_non_revocable(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -1036,12 +1160,26 @@ async def test_issue_credential_non_revocable(self): ], ) cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api], + ) + ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) @@ -1118,7 +1256,14 @@ async def test_issue_credential_fills_rr(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -1130,12 +1275,26 @@ async def test_issue_credential_fills_rr(self): ], ) cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api], + ) + ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) @@ -1228,7 +1387,14 @@ async def test_issue_credential_request_bad_state(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -1271,7 +1437,14 @@ async def test_issue_credential_no_active_rr_no_retries(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -1283,12 +1456,26 @@ async def test_issue_credential_no_active_rr_no_retries(self): ], ) cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api], + ) + ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) @@ -1352,7 +1539,14 @@ async def test_issue_credential_no_active_rr_retry(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -1364,12 +1558,26 @@ async def test_issue_credential_no_active_rr_retry(self): ], ) cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api], + ) + ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) @@ -1437,7 +1645,14 @@ async def test_issue_credential_rr_full(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -1449,12 +1664,26 @@ async def test_issue_credential_rr_full(self): ], ) cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api], + ) + ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) @@ -1512,7 +1741,14 @@ async def test_receive_cred(self): ) cred_issue = V20CredIssue( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_ISSUE + ][V20CredFormat.Format.INDY.api], + ) + ], credentials_attach=[AttachDecorator.data_base64(INDY_CRED, ident="0")], ) @@ -1558,7 +1794,14 @@ async def test_store_credential(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -1570,16 +1813,37 @@ async def test_store_credential(self): ], ) cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api], + ) + ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) cred_issue = V20CredIssue( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_ISSUE + ][V20CredFormat.Format.INDY.api], + ) + ], credentials_attach=[AttachDecorator.data_base64(INDY_CRED, ident="0")], ) @@ -1699,7 +1963,14 @@ async def test_store_credential_holder_store_indy_error(self): ) cred_proposal = V20CredProposal( credential_preview=cred_preview, - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_PROPOSAL + ][V20CredFormat.Format.INDY.api], + ) + ], filters_attach=[ AttachDecorator.data_base64( { @@ -1711,16 +1982,37 @@ async def test_store_credential_holder_store_indy_error(self): ], ) cred_offer = V20CredOffer( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_OFFER + ][V20CredFormat.Format.INDY.api], + ) + ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], ) cred_offer.assign_thread_id(thread_id) cred_request = V20CredRequest( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_REQUEST + ][V20CredFormat.Format.INDY.api], + ) + ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], ) cred_issue = V20CredIssue( - formats=[V20CredFormat(attach_id="0", format_=V20CredFormat.Format.INDY)], + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[ + CRED_20_ISSUE + ][V20CredFormat.Format.INDY.api], + ) + ], credentials_attach=[AttachDecorator.data_base64(INDY_CRED, ident="0")], ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py index 8e64d31454..b2b5ef4e2e 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py @@ -17,8 +17,7 @@ from ..pres_format import V20PresFormat from ..pres import V20Pres, V20PresSchema - -INDY_PROOF = json.loads( +INDY_PROOF = json.loads( # indy returns proof json-encoded: json-decode before base64 """{ "proof": { "proofs": [ From 83a7d9d437359d4cfa891ab7d9f6619322088f99 Mon Sep 17 00:00:00 2001 From: sklump Date: Fri, 12 Mar 2021 20:04:43 +0000 Subject: [PATCH 127/243] black tweaks Signed-off-by: sklump --- .../tests/test_cred_request_handler.py | 12 +- .../issue_credential/v2_0/manager.py | 30 +-- .../v2_0/messages/tests/test_cred_offer.py | 13 +- .../v2_0/messages/tests/test_cred_request.py | 5 +- .../v2_0/tests/test_manager.py | 246 +++++++++--------- 5 files changed, 150 insertions(+), 156 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py b/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py index 13571912d0..438e2a21b0 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/handlers/tests/test_cred_request_handler.py @@ -61,9 +61,9 @@ async def test_called_auto_issue(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api] + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -116,9 +116,9 @@ async def test_called_auto_issue_no_preview(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api] + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py index e56a87aefc..c47c63fba7 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py @@ -163,9 +163,9 @@ async def create_proposal( formats=[ V20CredFormat( attach_id=str(ident), - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.get(f).api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.get(f).api + ], ) for ident, f in enumerate(fmt2filter.keys()) ], @@ -308,9 +308,9 @@ async def _create(cred_def_id): # may change for DIF formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(cred_offer, ident="0")], @@ -362,9 +362,9 @@ async def receive_offer( formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -480,9 +480,9 @@ async def _create_indy(): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], requests_attach=[ @@ -715,9 +715,9 @@ async def issue_credential( formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_ISSUE - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_ISSUE][ + V20CredFormat.Format.INDY.api + ], ) ], credentials_attach=[ diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py index f4d0df0d01..ae2f29ed5a 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_offer.py @@ -52,9 +52,7 @@ class TestV20CredOffer(AsyncTestCase): formats=[ V20CredFormat( attach_id="indy", - format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ - V20CredFormat.Format.INDY.api - ], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][V20CredFormat.Format.INDY.api], ) ], offers_attach=[ @@ -74,12 +72,9 @@ async def test_init_type(self): TestV20CredOffer.CRED_OFFER.offers_attach[0].content == TestV20CredOffer.indy_offer ) - assert ( - TestV20CredOffer.CRED_OFFER.attachment() == TestV20CredOffer.indy_offer - ) - assert ( - TestV20CredOffer.CRED_OFFER._type - == DIDCommPrefix.qualify_current(CRED_20_OFFER) + assert TestV20CredOffer.CRED_OFFER.attachment() == TestV20CredOffer.indy_offer + assert TestV20CredOffer.CRED_OFFER._type == DIDCommPrefix.qualify_current( + CRED_20_OFFER ) async def test_serde(self): diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py index 74a3dc9c6d..80ccc439c6 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py @@ -73,9 +73,8 @@ async def test_init_type(self): TestV20CredRequest.CRED_REQUEST.attachment() == TestV20CredRequest.indy_cred_req ) - assert ( - TestV20CredRequest.CRED_REQUEST._type - == DIDCommPrefix.qualify_current(CRED_20_REQUEST) + assert TestV20CredRequest.CRED_REQUEST._type == DIDCommPrefix.qualify_current( + CRED_20_REQUEST ) async def test_serde(self): diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py index 54d699a409..359aa7dde0 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py @@ -253,9 +253,9 @@ async def test_prepare_send(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -362,9 +362,9 @@ async def test_receive_proposal(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -405,9 +405,9 @@ async def test_create_free_offer(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -490,9 +490,9 @@ async def test_create_free_offer_attr_mismatch(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -556,9 +556,9 @@ async def test_create_bound_offer(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[AttachDecorator.data_base64({}, ident="0")], @@ -635,9 +635,9 @@ async def test_create_bound_offer_no_matching_sent_cred_def(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[AttachDecorator.data_base64({}, ident="0")], @@ -682,9 +682,9 @@ async def test_receive_offer_proposed(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[AttachDecorator.data_base64({}, ident="0")], @@ -694,9 +694,9 @@ async def test_receive_offer_proposed(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -754,9 +754,9 @@ async def test_receive_free_offer(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -802,9 +802,9 @@ async def test_create_request(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -874,9 +874,9 @@ async def test_create_request_no_cache(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -930,9 +930,9 @@ async def test_create_request_bad_state(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -965,9 +965,9 @@ async def test_receive_request(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], @@ -1011,9 +1011,9 @@ async def test_issue_credential(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -1030,9 +1030,9 @@ async def test_issue_credential(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -1042,9 +1042,9 @@ async def test_issue_credential(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], @@ -1144,9 +1144,9 @@ async def test_issue_credential_non_revocable(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -1163,9 +1163,9 @@ async def test_issue_credential_non_revocable(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -1175,9 +1175,9 @@ async def test_issue_credential_non_revocable(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], @@ -1259,9 +1259,9 @@ async def test_issue_credential_fills_rr(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -1278,9 +1278,9 @@ async def test_issue_credential_fills_rr(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -1290,9 +1290,9 @@ async def test_issue_credential_fills_rr(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], @@ -1390,9 +1390,9 @@ async def test_issue_credential_request_bad_state(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -1440,9 +1440,9 @@ async def test_issue_credential_no_active_rr_no_retries(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -1459,9 +1459,9 @@ async def test_issue_credential_no_active_rr_no_retries(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -1471,9 +1471,9 @@ async def test_issue_credential_no_active_rr_no_retries(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], @@ -1542,9 +1542,9 @@ async def test_issue_credential_no_active_rr_retry(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -1561,9 +1561,9 @@ async def test_issue_credential_no_active_rr_retry(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -1573,9 +1573,9 @@ async def test_issue_credential_no_active_rr_retry(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], @@ -1648,9 +1648,9 @@ async def test_issue_credential_rr_full(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -1667,9 +1667,9 @@ async def test_issue_credential_rr_full(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -1679,9 +1679,9 @@ async def test_issue_credential_rr_full(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], @@ -1744,9 +1744,9 @@ async def test_receive_cred(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_ISSUE - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_ISSUE][ + V20CredFormat.Format.INDY.api + ], ) ], credentials_attach=[AttachDecorator.data_base64(INDY_CRED, ident="0")], @@ -1797,9 +1797,9 @@ async def test_store_credential(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -1816,9 +1816,9 @@ async def test_store_credential(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -1828,9 +1828,9 @@ async def test_store_credential(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], @@ -1839,9 +1839,9 @@ async def test_store_credential(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_ISSUE - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_ISSUE][ + V20CredFormat.Format.INDY.api + ], ) ], credentials_attach=[AttachDecorator.data_base64(INDY_CRED, ident="0")], @@ -1966,9 +1966,9 @@ async def test_store_credential_holder_store_indy_error(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_PROPOSAL - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], ) ], filters_attach=[ @@ -1985,9 +1985,9 @@ async def test_store_credential_holder_store_indy_error(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_OFFER - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], ) ], offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], @@ -1997,9 +1997,9 @@ async def test_store_credential_holder_store_indy_error(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_REQUEST - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], ) ], requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], @@ -2008,9 +2008,9 @@ async def test_store_credential_holder_store_indy_error(self): formats=[ V20CredFormat( attach_id="0", - format_=ATTACHMENT_FORMAT[ - CRED_20_ISSUE - ][V20CredFormat.Format.INDY.api], + format_=ATTACHMENT_FORMAT[CRED_20_ISSUE][ + V20CredFormat.Format.INDY.api + ], ) ], credentials_attach=[AttachDecorator.data_base64(INDY_CRED, ident="0")], From 7bedb71a148406537353a21e03febc381340e8c4 Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 15 Mar 2021 15:13:49 +0000 Subject: [PATCH 128/243] present-proof format/message relationship inversion: formats vary now per-message Signed-off-by: sklump --- .../v2_0/messages/cred_format.py | 4 +- .../v2_0/messages/cred_issue.py | 6 +- .../v2_0/messages/cred_offer.py | 6 +- .../v2_0/messages/cred_proposal.py | 8 +- .../v2_0/messages/cred_request.py | 6 +- .../v2_0/messages/tests/test_cred_format.py | 4 + .../v2_0/messages/tests/test_cred_request.py | 2 +- .../out_of_band/v1_0/tests/test_manager.py | 20 ++- .../protocols/present_proof/v2_0/manager.py | 16 +- .../present_proof/v2_0/message_types.py | 18 ++ .../present_proof/v2_0/messages/pres.py | 31 ++-- .../v2_0/messages/pres_format.py | 60 ++----- .../v2_0/messages/pres_proposal.py | 32 ++-- .../v2_0/messages/pres_request.py | 29 ++-- .../v2_0/messages/tests/test_pres.py | 153 +++-------------- .../v2_0/messages/tests/test_pres_format.py | 17 +- .../v2_0/messages/tests/test_pres_proposal.py | 6 +- .../v2_0/messages/tests/test_pres_request.py | 154 ++++-------------- .../present_proof/v2_0/tests/test_manager.py | 78 ++++++--- 19 files changed, 239 insertions(+), 411 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py index c5e34eb9c7..298e24afd9 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_format.py @@ -64,7 +64,7 @@ def get_attachment_data( formats: Sequence["V20CredFormat"], attachments: Sequence[AttachDecorator], ): - """Find attachment of current format, base64-decode and return its data.""" + """Find attachment of current format, decode and return its content.""" for fmt in formats: if V20CredFormat.Format.get(fmt.format) is self: attach_id = fmt.attach_id @@ -112,7 +112,7 @@ class Meta: format_ = fields.Str( required=True, allow_none=False, - description="Acceptable issue-credential message attachment format specifier", + description="Attachment format specifier", data_key="format", validate=validate.Regexp("^(hlindy/.*@v2.0)|(dif/.*@v1.0)$"), example="dif/credential-manifest@v1.0", diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py index 49fad666e3..e3955f1048 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_issue.py @@ -114,9 +114,9 @@ def validate_fields(self, data, **kwargs): def get_attach_by_id(attach_id): """Return attachment with input identifier.""" - for f in attachments: - if f.ident == attach_id: - return f + for atch in attachments: + if atch.ident == attach_id: + return atch raise ValidationError(f"No attachment for attach_id {attach_id} in formats") formats = data.get("formats") or [] diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py index fc75ee4c01..9d24e6d63b 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_offer.py @@ -121,9 +121,9 @@ def validate_fields(self, data, **kwargs): def get_attach_by_id(attach_id): """Return attachment with input identifier.""" - for f in attachments: - if f.ident == attach_id: - return f + for atch in attachments: + if atch.ident == attach_id: + return atch raise ValidationError(f"No attachment for attach_id {attach_id} in formats") formats = data.get("formats") or [] diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py index 960f303074..d5b19ddb0a 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_proposal.py @@ -48,7 +48,7 @@ def __init__( comment: optional human-readable comment credential_proposal: proposed credential preview formats: acceptable attachment formats - filter_attach: list of attachments filtering credential proposal + filters_attach: list of attachments filtering credential proposal """ super().__init__(_id=_id, **kwargs) @@ -117,9 +117,9 @@ def validate_fields(self, data, **kwargs): def get_attach_by_id(attach_id): """Return attachment with input identifier.""" - for f in attachments: - if f.ident == attach_id: - return f + for atch in attachments: + if atch.ident == attach_id: + return atch raise ValidationError(f"No attachment for attach_id {attach_id} in formats") formats = data.get("formats") or [] diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py index dd9d1538d0..f5d5307a52 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/cred_request.py @@ -107,9 +107,9 @@ def validate_fields(self, data, **kwargs): def get_attach_by_id(attach_id): """Return attachment with input identifier.""" - for f in attachments: - if f.ident == attach_id: - return f + for atch in attachments: + if atch.ident == attach_id: + return atch raise ValidationError(f"No attachment for attach_id {attach_id} in formats") formats = data.get("formats") or [] diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py index e534823ab2..6aaa524700 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_format.py @@ -32,6 +32,10 @@ def test_get_completeness(self): assert ( V20CredFormat.Format.get("dif/...").detail.__name__ == "V20CredExRecordDIF" ) + assert ( + V20CredFormat.Format.get(V20CredFormat.Format.DIF.api) + is V20CredFormat.Format.DIF + ) def test_get_attachment_data(self): assert ( diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py index 80ccc439c6..61f3c5fe67 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/messages/tests/test_cred_request.py @@ -92,7 +92,7 @@ async def test_serde(self): with self.assertRaises(BaseModelError): V20CredRequest.deserialize(obj) - obj["requests~attach"].append( # more filters than formats + obj["requests~attach"].append( # more attachments than formats { "@id": "def", "mime-type": "application/json", diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py index 98daf55c0e..1563e2bdf9 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py @@ -48,6 +48,11 @@ V10PresentationExchange, ) from .....protocols.present_proof.v2_0.manager import V20PresManager +from .....protocols.present_proof.v2_0.message_types import ( + ATTACHMENT_FORMAT, + PRES_20, + PRES_20_REQUEST, +) from .....protocols.present_proof.v2_0.messages.pres import V20Pres from .....protocols.present_proof.v2_0.messages.pres_format import V20PresFormat from .....protocols.present_proof.v2_0.messages.pres_request import V20PresRequest @@ -179,7 +184,12 @@ class TestConfig: comment="some comment", will_confirm=True, formats=[ - V20PresFormat(attach_id="indy", format_=V20PresFormat.Format.INDY.aries) + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], + ) ], request_presentations_attach=[ AttachDecorator.data_base64(mapping=INDY_PROOF_REQ, ident="indy") @@ -2345,7 +2355,9 @@ async def test_req_v2_attach_presentation_existing_conn_auto_present_pres_msg(se formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][ + V20PresFormat.Format.INDY.api + ], ) ], presentations_attach=[ @@ -2474,7 +2486,9 @@ async def test_req_v2_attach_pres_catch_value_error(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][ + V20PresFormat.Format.INDY.api + ], ) ], presentations_attach=[ diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index f4cae039ff..68d66d23bf 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -21,6 +21,7 @@ from ..indy.xform import indy_proof_req2non_revoc_intervals from .models.pres_exchange import V20PresExRecord +from .message_types import ATTACHMENT_FORMAT, PRES_20_REQUEST, PRES_20 from .messages.pres import V20Pres from .messages.pres_ack import V20PresAck from .messages.pres_format import V20PresFormat @@ -146,7 +147,9 @@ async def create_bound_request( formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -234,10 +237,9 @@ async def create_pres( Args: pres_ex_record: record to update - format_: presentation format requested_credentials: indy formatted requested_credentials comment: optional human-readable comment - + format_: presentation format Example `requested_credentials` format, mapping proof request referents (uuid) to wallet referents (cred id): @@ -421,7 +423,9 @@ async def create_pres( formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][ + V20PresFormat.Format.INDY.api + ], ) ], presentations_attach=[ @@ -440,7 +444,9 @@ async def create_pres( formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][ + V20PresFormat.Format.INDY.api + ], ), ], presentations_attach=[ diff --git a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py index 9c0d896dcd..b4a865499c 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/message_types.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/message_types.py @@ -2,6 +2,8 @@ from ...didcomm_prefix import DIDCommPrefix +from .messages.pres_format import V20PresFormat + SPEC_URI = ( "https://github.com/hyperledger/aries-rfcs/tree/" "eace815c3e8598d4a8dd7881d8c731fdb2bcc0aa/features/0454-present-proof-v2" @@ -23,3 +25,19 @@ PRES_20_ACK: f"{PROTOCOL_PACKAGE}.messages.pres_ack.V20PresAck", } ) + +# Format specifications +ATTACHMENT_FORMAT = { + PRES_20_PROPOSAL: { + V20PresFormat.Format.INDY.api: "hlindy/proof-req@v2.0", + V20PresFormat.Format.DIF.api: "dif/presentation-exchange/definitions@v1.0", + }, + PRES_20_REQUEST: { + V20PresFormat.Format.INDY.api: "hlindy/proof-req@v2.0", + V20PresFormat.Format.DIF.api: "dif/presentation-exchange/definitions@v1.0", + }, + PRES_20: { + V20PresFormat.Format.INDY.api: "hlindy/proof@v2.0", + V20PresFormat.Format.DIF.api: "dif/presentation-exchange/submission@v1.0", + }, +} diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py index a913243d9f..e30b9262f4 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py @@ -2,7 +2,7 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields, validates_schema, ValidationError +from marshmallow import EXCLUDE, fields, RAISE, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema from .....messaging.decorators.attach_decorator import ( @@ -10,6 +10,8 @@ AttachDecoratorSchema, ) +from ...indy.proof import IndyProofSchema + from ..message_types import PRES_20, PROTOCOL_PACKAGE from .pres_format import V20PresFormat, V20PresFormatSchema @@ -84,7 +86,7 @@ class Meta: V20PresFormatSchema, many=True, required=True, - descrption="Acceptable attachment formats", + description="Acceptable attachment formats", ) presentations_attach = fields.Nested( AttachDecoratorSchema, required=True, many=True, data_key="presentations~attach" @@ -92,24 +94,21 @@ class Meta: @validates_schema def validate_fields(self, data, **kwargs): - """Validate attachments against formats.""" + """Validate proposal attachment per format.""" def get_attach_by_id(attach_id): """Return attachment with input attachment identifier.""" - for a in presentations_attach: - if a.ident == attach_id: - return a - raise ValidationError( - f"No attachment matches attach_id {attach_id} in format" - ) + for atch in attachments: + if atch.ident == attach_id: + return atch + raise ValidationError(f"No attachment for attach_id {attach_id} in formats") formats = data.get("formats") or [] - presentations_attach = data.get("presentations_attach") or [] - if len(formats) != len(presentations_attach): - raise ValidationError("Formats vs. attachments length mismatch") + attachments = data.get("presentations_attach") or [] + if len(formats) != len(attachments): + raise ValidationError("Formats/attachments length mismatch") for fmt in formats: - request_atch = get_attach_by_id(fmt.attach_id) - V20PresFormat.Format.get(fmt.format).validate_pres_attach( - request_atch.content - ) + atch = get_attach_by_id(fmt.attach_id) + if V20PresFormat.Format.get(fmt.format) is V20PresFormat.Format.INDY: + IndyProofSchema(unknown=RAISE).load(atch.content) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py index dac4e93753..15d50c158e 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_format.py @@ -2,8 +2,7 @@ from collections import namedtuple from enum import Enum -from re import sub -from typing import Mapping, Sequence, Union +from typing import Sequence, Union from uuid import uuid4 from marshmallow import EXCLUDE, fields, validate @@ -12,10 +11,9 @@ from .....messaging.models.base import BaseModel, BaseModelSchema from .....messaging.valid import UUIDFour -from ...indy.proof import IndyProofSchema -from ...indy.proof_request import IndyProofRequestSchema -FormatSpec = namedtuple("FormatSpec", "aries aka") # Aries RFC value, further monikers +# aries prefix +FormatSpec = namedtuple("FormatSpec", "aries") class V20PresFormat(BaseModel): @@ -29,61 +27,37 @@ class Meta: class Format(Enum): """Attachment format.""" - INDY = FormatSpec( - "hlindy@v2.0", - {"indy", "hyperledgerindy", "hlindy"}, - ) - DIF = FormatSpec( - "dif/pres-exch@v1.0", - {"dif", "w3c", "jsonld"}, - ) + INDY = FormatSpec("hlindy/") + DIF = FormatSpec("dif/") @classmethod def get(cls, label: Union[str, "V20PresFormat.Format"]): """Get format enum for label.""" if isinstance(label, str): for fmt in V20PresFormat.Format: - if ( - fmt.aries == label - or sub("[^a-zA-Z0-9]+", "", label.lower()) in fmt.aka - ): + if label.startswith(fmt.aries) or label == fmt.api: return fmt elif isinstance(label, V20PresFormat.Format): return label return None - @property - def aries(self) -> str: - """Accessor for aries identifier.""" - return self.value.aries - - @property - def aka(self) -> str: - """Accessor for alternative identifier list.""" - return self.value.aka - @property def api(self) -> str: """Admin API specifier.""" return self.name.lower() - def validate_request_attach(self, data: Mapping): - """Raise ValidationError for wrong proposal/request content.""" - if self is V20PresFormat.Format.INDY: - IndyProofRequestSchema().load(data) - - def validate_pres_attach(self, data: Mapping): - """Raise ValidationError for wrong presentation content.""" - if self is V20PresFormat.Format.INDY: - IndyProofSchema().load(data) + @property + def aries(self) -> str: + """Accessor for aries identifier.""" + return self.value.aries def get_attachment_data( self, formats: Sequence["V20PresFormat"], attachments: Sequence[AttachDecorator], ): - """Find attachment of current format, base64-decode and return its data.""" + """Find attachment of current format, decode and return its content.""" for fmt in formats: if V20PresFormat.Format.get(fmt.format) is self: attach_id = fmt.attach_id @@ -101,13 +75,11 @@ def __init__( self, *, attach_id: str = None, - format_: Union[str, "V20PresFormat.Format"] = None, + format_: str = None, ): """Initialize present-proof protocol message attachment format.""" self.attach_id = attach_id or uuid4() - self.format_ = ( - V20PresFormat.Format.get(format_) or V20PresFormat.Format.INDY - ).aries + self.format_ = format_ @property def format(self) -> str: @@ -133,8 +105,8 @@ class Meta: format_ = fields.Str( required=True, allow_none=False, - description="Acceptable present-proof message attachment format specifier", + description="Attachment format specifier", data_key="format", - validate=validate.OneOf([f.aries for f in V20PresFormat.Format]), - example=V20PresFormat.Format.INDY.aries, + validate=validate.Regexp("^(hlindy/.*@v2.0)|(dif/.*@v1.0)$"), + example="dif/presentation-exchange/submission@v1.0", ) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py index f18f0bb225..f632e91ebb 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -2,7 +2,7 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields, validates_schema, ValidationError +from marshmallow import EXCLUDE, fields, RAISE, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema from .....messaging.decorators.attach_decorator import ( @@ -10,6 +10,8 @@ AttachDecoratorSchema, ) +from ...indy.proof_request import IndyProofRequestSchema + from ..message_types import PRES_20_PROPOSAL, PROTOCOL_PACKAGE from .pres_format import V20PresFormat, V20PresFormatSchema @@ -62,7 +64,10 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: return ( ( fmt or V20PresFormat.Format.get(self.formats[0].format) - ).get_attachment_data(self.formats, self.proposal_attach) + ).get_attachment_data( + self.formats, + self.proposal_attach, + ) if self.formats else None ) @@ -98,20 +103,17 @@ def validate_fields(self, data, **kwargs): def get_attach_by_id(attach_id): """Return attachment with input attachment identifier.""" - for p in proposal_attach: - if p.ident == attach_id: - return p - raise ValidationError( - f"No proposal attachment matches attach_id {attach_id} in format" - ) + for atch in attachments: + if atch.ident == attach_id: + return atch + raise ValidationError(f"No attachment for attach_id {attach_id} in formats") formats = data.get("formats") or [] - proposal_attach = data.get("proposal_attach") or [] - if len(formats) != len(proposal_attach): - raise ValidationError("Formats vs. proposal attachments length mismatch") + attachments = data.get("proposal_attach") or [] + if len(formats) != len(attachments): + raise ValidationError("Formats/attachments length mismatch") for fmt in formats: - proposal_atch = get_attach_by_id(fmt.attach_id) - V20PresFormat.Format.get(fmt.format).validate_request_attach( - proposal_atch.content - ) + atch = get_attach_by_id(fmt.attach_id) + if V20PresFormat.Format.get(fmt.format) is V20PresFormat.Format.INDY: + IndyProofRequestSchema(unknown=RAISE).load(atch.content) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py index 2d2a10c26a..2b11768c3b 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_request.py @@ -2,7 +2,7 @@ from typing import Sequence -from marshmallow import EXCLUDE, fields, validates_schema, ValidationError +from marshmallow import EXCLUDE, fields, RAISE, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema from .....messaging.decorators.attach_decorator import ( @@ -10,6 +10,8 @@ AttachDecoratorSchema, ) +from ...indy.proof_request import IndyProofRequestSchema + from ..message_types import PRES_20_REQUEST, PROTOCOL_PACKAGE from .pres_format import V20PresFormat, V20PresFormatSchema @@ -101,24 +103,21 @@ class Meta: @validates_schema def validate_fields(self, data, **kwargs): - """Validate attachment per format.""" + """Validate proposal attachment per format.""" def get_attach_by_id(attach_id): """Return attachment with input attachment identifier.""" - for a in request_presentations_attach: - if a.ident == attach_id: - return a - raise ValidationError( - f"No attachment matches attach_id {attach_id} in format" - ) + for atch in attachments: + if atch.ident == attach_id: + return atch + raise ValidationError(f"No attachment for attach_id {attach_id} in formats") formats = data.get("formats") or [] - request_presentations_attach = data.get("request_presentations_attach") or [] - if len(formats) != len(request_presentations_attach): - raise ValidationError("Formats vs. attachments length mismatch") + attachments = data.get("request_presentations_attach") or [] + if len(formats) != len(attachments): + raise ValidationError("Formats/attachments length mismatch") for fmt in formats: - request_atch = get_attach_by_id(fmt.attach_id) - V20PresFormat.Format.get(fmt.format).validate_request_attach( - request_atch.content - ) + atch = get_attach_by_id(fmt.attach_id) + if V20PresFormat.Format.get(fmt.format) is V20PresFormat.Format.INDY: + IndyProofRequestSchema(unknown=RAISE).load(atch.content) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py index b2b5ef4e2e..f13785ec79 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres.py @@ -12,7 +12,7 @@ from ....indy.pres_preview import PRESENTATION_PREVIEW -from ...message_types import PRES_20 +from ...message_types import ATTACHMENT_FORMAT, PRES_20 from ..pres_format import V20PresFormat from ..pres import V20Pres, V20PresSchema @@ -1669,7 +1669,7 @@ formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], ) ], presentations_attach=[ @@ -1691,141 +1691,26 @@ def test_init_type(self): assert PRES.attachment(V20PresFormat.Format.INDY) == INDY_PROOF assert PRES._type == DIDCommPrefix.qualify_current(PRES_20) - def test_deserialize(self): + def test_serde(self): """Test deserialization.""" - dump = json.dumps( - { - "@type": DIDCommPrefix.qualify_current(PRES_20), - "comment": "Hello World", - "formats": [ - { - "attach_id": "indy", - "format": V20PresFormat.Format.INDY.aries, - } - ], - "presentations~attach": [ - AttachDecorator.data_base64( - mapping=INDY_PROOF, - ident="indy", - ).serialize() - ], - } - ) + pres_dict = PRES.serialize() + pres_obj = V20Pres.deserialize(pres_dict) + assert type(pres_obj) == V20Pres - pres = V20Pres.deserialize(dump) - assert type(pres) == V20Pres + pres_dict["presentations~attach"][0]["data"]["base64"] = "eyJub3QiOiAiaW5keSJ9" + with self.assertRaises(BaseModelError): + V20Pres.deserialize(pres_dict) - def test_deserialize_x(self): - """Test deserialization failures.""" - dump_x = json.dumps( # format/attachments length mismatch - { - "@type": DIDCommPrefix.qualify_current(PRES_20), - "comment": "Hello World", - "formats": [ - { - "attach_id": "indy", - "format": V20PresFormat.Format.INDY.aries, - } - ], - "presentations~attach": [], - } - ) - with pytest.raises(BaseModelError): - V20Pres.deserialize(dump_x) + pres_dict["presentations~attach"][0]["@id"] = "xxx" + with self.assertRaises(BaseModelError): + V20Pres.deserialize(pres_dict) - dump_x = json.dumps( # format/attachments identifier miss + pres_dict["presentations~attach"].append( { - "@type": DIDCommPrefix.qualify_current(PRES_20), - "comment": "Hello World", - "formats": [ - { - "attach_id": "indy", - "format": V20PresFormat.Format.INDY.aries, - } - ], - "presentations~attach": [ - AttachDecorator.data_base64( - mapping=INDY_PROOF, - ident="xxx", - ).serialize() - ], + "@id": "def", + "mime-type": "application/json", + "data": {"base64": "eyJub3QiOiAiaW5keSJ9"}, } - ) - with pytest.raises(BaseModelError): - V20Pres.deserialize(dump_x) - - dump_x = json.dumps( # attachment not of correct shape - { - "@type": DIDCommPrefix.qualify_current(PRES_20), - "comment": "Hello World", - "formats": [ - { - "attach_id": "indy", - "format": V20PresFormat.Format.INDY.aries, - } - ], - "presentations~attach": [ - AttachDecorator.data_base64( - mapping={"this is": "not an indy proof"}, - ident="indy", - ).serialize() - ], - } - ) - with pytest.raises(BaseModelError): - V20Pres.deserialize(dump_x) - - def test_serialize(self): - """Test serialization.""" - pres_dict = PRES.serialize() - pres_dict.pop("@id") - - serialized = { - "@type": DIDCommPrefix.qualify_current(PRES_20), - "formats": [ - { - "attach_id": "indy", - "format": V20PresFormat.Format.INDY.aries, - } - ], - "presentations~attach": [ - AttachDecorator.data_base64( - mapping=INDY_PROOF, - ident="indy", - ).serialize() - ], - "comment": "Test", - } - assert pres_dict == serialized - - -class TestV20PresSchema(TestCase): - """Test presentation schema""" - - def test_make_model(self): - """Test making model.""" - pres_dict = PRES.serialize() - """ - Looks like: { - "@type": ".../present-proof/1.0/presentation", - "@id": "f49773e3-bd56-4868-a5f1-456d1e6d1a16", - "comment": "Test", - "formats": [ - { - "attach_id": "indy", - "format": "hlindy@v2.0" - } - ], - "presentations~attach": [ - { - "mime-type": "application/json", - "data": { - "base64": "eyJuYW..." - } - } - ] - } - """ - - model_instance = PRES.deserialize(pres_dict) - assert isinstance(model_instance, V20Pres) + ) # more attachments than formats + with self.assertRaises(BaseModelError): + V20Pres.deserialize(pres_dict) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py index d236e13c3b..e04a56b7c1 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_format.py @@ -94,22 +94,11 @@ def test_get_completeness(self): is V20PresFormat.Format.INDY ) assert V20PresFormat.Format.get("no such format") is None - assert V20PresFormat.Format.get("Indy") is V20PresFormat.Format.INDY + assert V20PresFormat.Format.get("hlindy/...") is V20PresFormat.Format.INDY assert ( - V20PresFormat.Format.get("HL/INDY").aries == V20PresFormat.Format.INDY.aries + V20PresFormat.Format.get(V20PresFormat.Format.DIF.api) + is V20PresFormat.Format.DIF ) - assert "indy" in V20PresFormat.Format.get("HL/INDY").aka - assert ( - V20PresFormat.Format.get("HL/INDY").api - in V20PresFormat.Format.get("hl-indy").aka - ) - assert ( - V20PresFormat.Format.get("JSON-LD").aries == V20PresFormat.Format.DIF.aries - ) - - def test_validate_request_attach_x(self): - with self.assertRaises(ValidationError) as context: - V20PresFormat.Format.INDY.validate_request_attach(data="not even close") def test_get_attachment_data(self): for proof_req in INDY_PROOF_REQ: diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py index ab894f90f5..84b6ddd033 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py @@ -14,7 +14,7 @@ PRESENTATION_PREVIEW, ) -from ...message_types import PRES_20_PROPOSAL +from ...message_types import ATTACHMENT_FORMAT, PRES_20_PROPOSAL from ..pres_format import V20PresFormat from ..pres_proposal import V20PresProposal @@ -112,7 +112,9 @@ def test_init_type_attachment_serde(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], ) ], proposal_attach=[AttachDecorator.data_base64(proof_req, ident="indy")], diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py index 01aa512689..286825f33f 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_request.py @@ -12,7 +12,7 @@ from ....indy.pres_preview import PRESENTATION_PREVIEW -from ...message_types import PRES_20_REQUEST +from ...message_types import ATTACHMENT_FORMAT, PRES_20_REQUEST from ..pres_format import V20PresFormat from ..pres_request import V20PresRequest, V20PresRequestSchema @@ -105,7 +105,9 @@ formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -120,7 +122,7 @@ class TestV20PresRequest(TestCase): """Presentation request tests.""" def test_init_type(self): - """Test initializer, type.""" + """Test initializer and type.""" for i, pres_req in enumerate(PRES_REQ): assert pres_req.will_confirm assert len(pres_req.formats) == len(pres_req.request_presentations_attach) @@ -128,129 +130,29 @@ def test_init_type(self): assert pres_req.attachment(V20PresFormat.Format.INDY) == INDY_PROOF_REQ[i] assert pres_req._type == DIDCommPrefix.qualify_current(PRES_20_REQUEST) - def test_deserialize(self): - """Test deserialization.""" - for proof_req in INDY_PROOF_REQ: - dump = json.dumps( - { - "@type": DIDCommPrefix.qualify_current(PRES_20_REQUEST), - "comment": "Hello World", - "will_confirm": True, - "formats": [ - { - "attach_id": "indy", - "format": V20PresFormat.Format.INDY.aries, - } - ], - "request_presentations~attach": [ - AttachDecorator.data_base64( - mapping=proof_req, - ident="indy", - ).serialize() - ], - } - ) - - pres_request = V20PresRequest.deserialize(dump) - assert type(pres_request) == V20PresRequest - - def test_deserialize_x(self): - """Test deserialization failures.""" - dump_x = json.dumps( - { - "@type": DIDCommPrefix.qualify_current(PRES_20_REQUEST), - "comment": "Hello World", - "will_confirm": True, - "formats": [ - { - "attach_id": "indy", - "format": V20PresFormat.Format.INDY.aries, - } - ], - "request_presentations~attach": [], - } - ) - with pytest.raises(BaseModelError): - V20PresRequest.deserialize(dump_x) - - dump_x = json.dumps( - { - "@type": DIDCommPrefix.qualify_current(PRES_20_REQUEST), - "comment": "Hello World", - "will_confirm": True, - "formats": [ - { - "attach_id": "indy", - "format": V20PresFormat.Format.INDY.aries, - } - ], - "request_presentations~attach": [ - AttachDecorator.data_base64( - mapping=INDY_PROOF_REQ[0], - ident="a suffusion of yellow", - ).serialize() - ], - } - ) - with pytest.raises(BaseModelError): - V20PresRequest.deserialize(dump_x) - - def test_serialize(self): - """Test serialization.""" - for i, pres_req in enumerate(PRES_REQ): - pres_req_dict = pres_req.serialize() - pres_req_dict.pop("@id") - - serialized = { - "@type": DIDCommPrefix.qualify_current(PRES_20_REQUEST), - "will_confirm": True, - "formats": [ - { - "attach_id": "indy", - "format": V20PresFormat.Format.INDY.aries, - } - ], - "request_presentations~attach": [ - AttachDecorator.data_base64( - mapping=INDY_PROOF_REQ[i], - ident="indy", - ).serialize() - ], - "comment": "Test", - } - assert pres_req_dict == serialized + def test_serde(self): + """Test de/serialization.""" + for pres_req_msg in PRES_REQ: + pres_req_dict = pres_req_msg.serialize() + pres_req_obj = V20PresRequest.deserialize(pres_req_dict) + assert type(pres_req_obj) == V20PresRequest + pres_req_dict["request_presentations~attach"][0]["data"][ + "base64" + ] = "eyJub3QiOiAiaW5keSJ9" + with self.assertRaises(BaseModelError): + V20PresRequest.deserialize(pres_req_dict) -class TestV20PresRequestSchema(TestCase): - """Test presentation request schema""" + pres_req_dict["request_presentations~attach"][0]["@id"] = "xxx" + with self.assertRaises(BaseModelError): + V20PresRequest.deserialize(pres_req_dict) - def test_make_model(self): - """Test making model.""" - for pres_req in PRES_REQ: - pres_req_dict = pres_req.serialize() - """ - Looks like: { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/present-proof/2.0/..." - "@id": "...", - "will_confirm": true, - "request_presentations~attach": [ - { - "@id": "indy", - "mime-type": "application/json", - "data": { - "base64": "eyJu..." - } - } - ], - "formats": [ - { - "attach_id": "indy", - "format": "hlindy@v2.0" - } - ], - "comment": "Test" - } - """ - - model_instance = pres_req.deserialize(pres_req_dict) - assert isinstance(model_instance, V20PresRequest) + pres_req_dict["request_presentations~attach"].append( + { + "@id": "def", + "mime-type": "application/json", + "data": {"base64": "eyJub3QiOiAiaW5keSJ9"}, + } + ) # more attachments than formats + with self.assertRaises(BaseModelError): + V20PresRequest.deserialize(pres_req_dict) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py index fd4352d7ce..51afc99ed6 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py @@ -24,6 +24,12 @@ from .. import manager as test_module from ..manager import V20PresManager, V20PresManagerError +from ..message_types import ( + ATTACHMENT_FORMAT, + PRES_20_PROPOSAL, + PRES_20_REQUEST, + PRES_20, +) from ..messages.pres import V20Pres from ..messages.pres_ack import V20PresAck from ..messages.pres_format import V20PresFormat @@ -271,7 +277,9 @@ async def test_create_bound_request(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], ) ], proposal_attach=[ @@ -321,7 +329,9 @@ async def test_create_pres(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -367,7 +377,9 @@ async def test_create_pres_proof_req_non_revoc_interval_none(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -412,7 +424,9 @@ async def test_create_pres_self_asserted(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -467,7 +481,9 @@ async def test_create_pres_no_revocation(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -529,7 +545,9 @@ async def test_create_pres_bad_revoc_state(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -600,7 +618,9 @@ async def test_create_pres_multi_matching_proposal_creds_names(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -696,7 +716,9 @@ async def test_no_matching_creds_for_proof_req(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -760,7 +782,9 @@ async def test_receive_pres(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], ) ], proposal_attach=[ @@ -771,7 +795,9 @@ async def test_receive_pres(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -782,7 +808,7 @@ async def test_receive_pres(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], ) ], presentations_attach=[ @@ -858,7 +884,9 @@ async def test_receive_pres_bait_and_switch(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], ) ], proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], @@ -867,7 +895,9 @@ async def test_receive_pres_bait_and_switch(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -878,7 +908,7 @@ async def test_receive_pres_bait_and_switch(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], ) ], presentations_attach=[ @@ -908,7 +938,9 @@ async def test_receive_pres_bait_and_switch(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], ) ], proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], @@ -917,7 +949,7 @@ async def test_receive_pres_bait_and_switch(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], ) ], request_presentations_attach=[ @@ -928,7 +960,7 @@ async def test_receive_pres_bait_and_switch(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], ) ], presentations_attach=[ @@ -984,7 +1016,9 @@ async def test_verify_pres(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], will_confirm=True, @@ -996,7 +1030,7 @@ async def test_verify_pres(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], ) ], presentations_attach=[ @@ -1047,7 +1081,9 @@ async def test_verify_pres_with_revocation(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], ) ], request_presentations_attach=[ @@ -1058,7 +1094,7 @@ async def test_verify_pres_with_revocation(self): formats=[ V20PresFormat( attach_id="indy", - format_=V20PresFormat.Format.INDY.aries, + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], ) ], presentations_attach=[ From 6d4aa91faf861c4d4304e70ceb1af26c1ab48d84 Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 15 Mar 2021 19:34:24 +0000 Subject: [PATCH 129/243] cred ex record by_format for msg attachments Signed-off-by: sklump --- .../v2_0/models/cred_ex_record.py | 22 ++++++++------- .../protocols/issue_credential/v2_0/routes.py | 18 ++++++------- .../v2_0/tests/test_manager.py | 15 ++++++++--- .../protocols/present_proof/v2_0/manager.py | 19 +++++++------ .../v2_0/models/pres_exchange.py | 2 +- .../protocols/present_proof/v2_0/routes.py | 27 +++++++++++-------- 6 files changed, 61 insertions(+), 42 deletions(-) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py b/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py index 7b62c29344..9cd7ba7e5b 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/models/cred_ex_record.py @@ -8,6 +8,12 @@ from .....messaging.models.base_record import BaseExchangeRecord, BaseExchangeSchema from .....messaging.valid import UUIDFour +from ..messages.cred_format import V20CredFormat +from ..messages.cred_issue import V20CredIssue +from ..messages.cred_proposal import V20CredProposal +from ..messages.cred_offer import V20CredOffer +from ..messages.cred_request import V20CredRequest + from . import UNENCRYPTED_TAGS @@ -140,16 +146,15 @@ async def retrieve_by_conn_and_thread( await cls.set_cached_key(session, cache_key, record.cred_ex_id) return record - ''' @property def by_format(self) -> Mapping: - """Record proposal, offer, request, and credential data structures by format.""" + """Record proposal, offer, request, and credential attachments by format.""" result = {} for item, cls in { - "cred_proposal": V20PresProposal, - "cred_offer": V20PresRequest, - "cred_request": V20PresRequest, - "cred": V20Cred, + "cred_proposal": V20CredProposal, + "cred_offer": V20CredOffer, + "cred_request": V20CredRequest, + "cred_issue": V20CredIssue, }.items(): mapping = getattr(self, item) if mapping: @@ -157,8 +162,8 @@ def by_format(self) -> Mapping: result.update( { item: { - V20PresFormat.Format.get(f.format).api: msg.attachment( - V20PresFormat.Format.get(f.format) + V20CredFormat.Format.get(f.format).api: msg.attachment( + V20CredFormat.Format.get(f.format) ) for f in msg.formats } @@ -166,7 +171,6 @@ def by_format(self) -> Mapping: ) return result - ''' def __eq__(self, other: Any) -> bool: """Comparison between records.""" diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py index 3e249508d3..5ecb5f48b8 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py @@ -38,7 +38,7 @@ from ...problem_report.v1_0.message import ProblemReport from .manager import V20CredManager, V20CredManagerError -from .message_types import SPEC_URI +from .message_types import ATTACHMENT_FORMAT, CRED_20_PROPOSAL, SPEC_URI from .messages.cred_format import V20CredFormat from .messages.cred_offer import V20CredOfferSchema from .messages.cred_proposal import V20CredProposal @@ -291,19 +291,19 @@ class V20CredExIdMatchInfoSchema(OpenAPISchema): def _formats_filters(filt_spec: Mapping) -> Mapping: - """Break out formats and filters for v2.0 messages.""" + """Break out formats and filters for v2.0 cred proposal messages.""" return { "formats": [ V20CredFormat( - attach_id=fmt_aka, - format_=V20CredFormat.Format.get(fmt_aka), + attach_id=fmt_api, + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][fmt_api], ) - for fmt_aka in filt_spec + for fmt_api in filt_spec ], "filters_attach": [ - AttachDecorator.data_base64(filt_by_fmt, ident=fmt_aka) - for (fmt_aka, filt_by_fmt) in filt_spec.items() + AttachDecorator.data_base64(filt_by_fmt, ident=fmt_api) + for (fmt_api, filt_by_fmt) in filt_spec.items() ], } @@ -636,8 +636,8 @@ async def credential_exchange_send_proposal(request: web.BaseRequest): cred_preview=cred_preview, trace=trace_msg, fmt2filter={ - V20CredFormat.Format.get(fmt_aka): filt_by_fmt - for (fmt_aka, filt_by_fmt) in filt_spec.items() + V20CredFormat.Format.get(fmt_api): filt_by_fmt + for (fmt_api, filt_by_fmt) in filt_spec.items() }, ) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py index 359aa7dde0..03205aec50 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py @@ -1125,6 +1125,10 @@ async def test_issue_credential(self): async def test_issue_credential_non_revocable(self): CRED_DEF_NR = deepcopy(CRED_DEF) CRED_DEF_NR["value"]["revocation"] = None + INDY_FILTER = { + "schema_id": SCHEMA_ID, + "cred_def_id": CRED_DEF_ID, + } connection_id = "test_conn_id" comment = "comment" attr_values = { @@ -1151,10 +1155,7 @@ async def test_issue_credential_non_revocable(self): ], filters_attach=[ AttachDecorator.data_base64( - { - "schema_id": SCHEMA_ID, - "cred_def_id": CRED_DEF_ID, - }, + INDY_FILTER, ident="0", ) ], @@ -1195,6 +1196,12 @@ async def test_issue_credential_non_revocable(self): thread_id=thread_id, ) + # cover by_format property + by_format = stored_cx_rec.by_format + assert by_format.get("cred_proposal").get("indy") == INDY_FILTER + assert by_format.get("cred_offer").get("indy") == INDY_OFFER + assert by_format.get("cred_request").get("indy") == INDY_CRED_REQ + issuer = async_mock.MagicMock() issuer.create_credential = async_mock.CoroutineMock( return_value=(json.dumps(INDY_CRED), None) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index 68d66d23bf..558d0fd039 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -134,9 +134,10 @@ async def create_bound_request( A tuple (updated presentation exchange record, presentation request message) """ - indy_proof_request = pres_ex_record.by_format["pres_proposal"][ - V20PresFormat.Format.INDY.api - ] + indy_proof_request = V20PresProposal.deserialize( + pres_ex_record.pres_proposal + ).attachment(V20PresFormat.Format.INDY) # will change for DIF + indy_proof_request["name"] = name or "proof-request" indy_proof_request["version"] = version or "1.0" indy_proof_request["nonce"] = nonce or await generate_pr_nonce() @@ -279,7 +280,7 @@ async def create_pres( pres_ex_record.pres_request ).attachment( format_ - ) # take format_ = None seamlessly, contrast by_format + ) non_revoc_intervals = indy_proof_req2non_revoc_intervals(proof_request) attr_creds = requested_credentials.get("requested_attributes", {}) req_attrs = proof_request.get("requested_attributes", {}) @@ -490,9 +491,9 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): # Check for bait-and-switch in presented attribute values vs. request # TODO: move to verifier.pre_verify(), include attr groups & predicate bounds - proof_req = pres_ex_record.by_format["pres_request"][ - V20PresFormat.Format.INDY.api - ] + proof_req = V20PresRequest.deserialize( + pres_ex_record.pres_request + ).attachment(V20PresFormat.Format.INDY) # will change for DIF for (reft, attr_spec) in proof["requested_proof"]["revealed_attrs"].items(): proof_req_attr_spec = proof_req["requested_attributes"].get(reft) @@ -544,7 +545,9 @@ async def verify_pres(self, pres_ex_record: V20PresExRecord): """ pres_request_msg = V20PresRequest.deserialize(pres_ex_record.pres_request) indy_proof_request = pres_request_msg.attachment(V20PresFormat.Format.INDY) - indy_proof = pres_ex_record.by_format["pres"][V20PresFormat.Format.INDY.api] + indy_proof = V20Pres.deserialize( + pres_ex_record.pres + ).attachment(V20PresFormat.Format.INDY) # will change for DIF schema_ids = [] cred_def_ids = [] diff --git a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py index 1dc241d45f..13e0658035 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/models/pres_exchange.py @@ -105,7 +105,7 @@ def record_value(self) -> dict: @property def by_format(self) -> Mapping: - """Record proposal, request, and presentation data structures by format.""" + """Record proposal, request, and presentation attachments by format.""" result = {} for item, cls in { "pres_proposal": V20PresProposal, # note: proof request attached for indy diff --git a/aries_cloudagent/protocols/present_proof/v2_0/routes.py b/aries_cloudagent/protocols/present_proof/v2_0/routes.py index 7d936e5502..1c6170bf3f 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/routes.py @@ -41,7 +41,12 @@ from ..indy.proof_request import IndyProofRequestSchema from .manager import V20PresManager -from .message_types import SPEC_URI +from .message_types import ( + ATTACHMENT_FORMAT, + PRES_20_PROPOSAL, + PRES_20_REQUEST, + SPEC_URI, +) from .messages.pres_format import V20PresFormat from .messages.pres_proposal import V20PresProposal from .messages.pres_request import V20PresRequest @@ -317,20 +322,20 @@ async def _add_nonce(indy_proof_request: Mapping) -> Mapping: return indy_proof_request -def _formats_attach(by_format: Mapping, spec: str) -> Mapping: +def _formats_attach(by_format: Mapping, msg_type: str, spec: str) -> Mapping: """Break out formats and proposals/requests/presentations for v2.0 messages.""" return { "formats": [ V20PresFormat( - attach_id=fmt_aka, - format_=V20PresFormat.Format.get(fmt_aka), + attach_id=fmt_api, + format_=ATTACHMENT_FORMAT[msg_type][fmt_api], ) - for fmt_aka in by_format + for fmt_api in by_format ], f"{spec}_attach": [ - AttachDecorator.data_base64(mapping=item_by_fmt, ident=fmt_aka) - for (fmt_aka, item_by_fmt) in by_format.items() + AttachDecorator.data_base64(mapping=item_by_fmt, ident=fmt_api) + for (fmt_api, item_by_fmt) in by_format.items() ], } @@ -514,7 +519,7 @@ async def present_proof_send_proposal(request: web.BaseRequest): conn_record = await ConnRecord.retrieve_by_id(session, connection_id) pres_proposal_message = V20PresProposal( comment=comment, - **_formats_attach(pres_proposal, "proposal"), + **_formats_attach(pres_proposal, PRES_20_PROPOSAL, "proposal"), ) except (BaseModelError, StorageError) as err: return await internal_error( @@ -597,7 +602,7 @@ async def present_proof_create_request(request: web.BaseRequest): pres_request_message = V20PresRequest( comment=comment, will_confirm=True, - **_formats_attach(pres_request_spec, "request_presentations"), + **_formats_attach(pres_request_spec, PRES_20_REQUEST, "request_presentations"), ) trace_msg = body.get("trace") pres_request_message.assign_trace_decorator( @@ -671,7 +676,7 @@ async def present_proof_send_free_request(request: web.BaseRequest): pres_request_message = V20PresRequest( comment=comment, will_confirm=True, - **_formats_attach(pres_request_spec, "request_presentations"), + **_formats_attach(pres_request_spec, PRES_20_REQUEST, "request_presentations"), ) trace_msg = body.get("trace") pres_request_message.assign_trace_decorator( @@ -812,8 +817,8 @@ async def present_proof_send_presentation(request: web.BaseRequest): context: AdminRequestContext = request["context"] outbound_handler = request["outbound_message_router"] pres_ex_id = request.match_info["pres_ex_id"] - fmt = V20PresFormat.Format.get(request.match_info.get("format")) body = await request.json() + fmt = V20PresFormat.Format.get([f for f in body][0]) # "indy" xor "dif" pres_ex_record = None async with context.session() as session: From 3ec6ae9576d5ff60c63656e5e320cb9159dc0c0c Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 15 Mar 2021 19:35:31 +0000 Subject: [PATCH 130/243] black tweak Signed-off-by: sklump --- .../protocols/present_proof/v2_0/manager.py | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index 558d0fd039..1738382ef5 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -136,7 +136,9 @@ async def create_bound_request( """ indy_proof_request = V20PresProposal.deserialize( pres_ex_record.pres_proposal - ).attachment(V20PresFormat.Format.INDY) # will change for DIF + ).attachment( + V20PresFormat.Format.INDY + ) # will change for DIF indy_proof_request["name"] = name or "proof-request" indy_proof_request["version"] = version or "1.0" @@ -278,9 +280,7 @@ async def create_pres( requested_referents = {} proof_request = V20PresRequest.deserialize( pres_ex_record.pres_request - ).attachment( - format_ - ) + ).attachment(format_) non_revoc_intervals = indy_proof_req2non_revoc_intervals(proof_request) attr_creds = requested_credentials.get("requested_attributes", {}) req_attrs = proof_request.get("requested_attributes", {}) @@ -424,9 +424,7 @@ async def create_pres( formats=[ V20PresFormat( attach_id="indy", - format_=ATTACHMENT_FORMAT[PRES_20][ - V20PresFormat.Format.INDY.api - ], + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], ) ], presentations_attach=[ @@ -445,9 +443,7 @@ async def create_pres( formats=[ V20PresFormat( attach_id="indy", - format_=ATTACHMENT_FORMAT[PRES_20][ - V20PresFormat.Format.INDY.api - ], + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], ), ], presentations_attach=[ @@ -491,9 +487,9 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): # Check for bait-and-switch in presented attribute values vs. request # TODO: move to verifier.pre_verify(), include attr groups & predicate bounds - proof_req = V20PresRequest.deserialize( - pres_ex_record.pres_request - ).attachment(V20PresFormat.Format.INDY) # will change for DIF + proof_req = V20PresRequest.deserialize(pres_ex_record.pres_request).attachment( + V20PresFormat.Format.INDY + ) # will change for DIF for (reft, attr_spec) in proof["requested_proof"]["revealed_attrs"].items(): proof_req_attr_spec = proof_req["requested_attributes"].get(reft) @@ -545,9 +541,9 @@ async def verify_pres(self, pres_ex_record: V20PresExRecord): """ pres_request_msg = V20PresRequest.deserialize(pres_ex_record.pres_request) indy_proof_request = pres_request_msg.attachment(V20PresFormat.Format.INDY) - indy_proof = V20Pres.deserialize( - pres_ex_record.pres - ).attachment(V20PresFormat.Format.INDY) # will change for DIF + indy_proof = V20Pres.deserialize(pres_ex_record.pres).attachment( + V20PresFormat.Format.INDY + ) # will change for DIF schema_ids = [] cred_def_ids = [] From 58170f9e4acd1afb2b05be4483c7a5cc0364d920 Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 16 Mar 2021 16:23:38 +0000 Subject: [PATCH 131/243] check for proof bait & switch vs proposal Signed-off-by: sklump --- .../protocols/present_proof/v2_0/manager.py | 157 ++++-- .../present_proof/v2_0/tests/test_manager.py | 472 +++++++++++++++++- 2 files changed, 592 insertions(+), 37 deletions(-) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index 1738382ef5..b9e3f44195 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -15,9 +15,11 @@ from ....ledger.base import BaseLedger from ....messaging.decorators.attach_decorator import AttachDecorator from ....messaging.responder import BaseResponder +from ....messaging.util import canon from ....revocation.models.revocation_registry import RevocationRegistry from ....storage.error import StorageNotFoundError +from ..indy.predicate import Predicate from ..indy.xform import indy_proof_req2non_revoc_intervals from .models.pres_exchange import V20PresExRecord @@ -466,6 +468,127 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): presentation exchange record, retrieved and updated """ + + def _check_proof_vs_proposal(): + """Check for bait and switch in presented values vs. proposal request.""" + proof_req = V20PresRequest.deserialize( + pres_ex_record.pres_request + ).attachment( + V20PresFormat.Format.INDY + ) # will change for DIF + + # revealed attrs + for reft, attr_spec in proof["requested_proof"]["revealed_attrs"].items(): + proof_req_attr_spec = proof_req["requested_attributes"].get(reft) + if not proof_req_attr_spec: + raise V20PresManagerError( + f"Presentation referent {reft} not in proposal request" + ) + req_restrictions = proof_req_attr_spec.get("restrictions", {}) + + name = proof_req_attr_spec["name"] + proof_value = attr_spec["raw"] + sub_proof_index = attr_spec["sub_proof_index"] + schema_id = proof["identifiers"][sub_proof_index]["schema_id"] + cred_def_id = proof["identifiers"][sub_proof_index]["cred_def_id"] + criteria = { + "schema_id": schema_id, + "schema_issuer_did": schema_id.split(":")[-4], + "schema_name": schema_id.split(":")[-2], + "schema_version": schema_id.split(":")[-1], + "cred_def_id": cred_def_id, + "issuer_did": cred_def_id.split(":")[-5], + f"attr::{name}::value": proof_value, + } + + if not any(r.items() <= criteria.items() for r in req_restrictions): + raise V20PresManagerError( + f"Presentation {name}={proof_value} not in proposal value(s)" + ) + + # revealed attr groups + for reft, attr_spec in ( + proof["requested_proof"].get("revealed_attr_groups", {}).items() + ): + proof_req_attr_spec = proof_req["requested_attributes"].get(reft) + if not proof_req_attr_spec: + raise V20PresManagerError( + f"Presentation referent {reft} not in proposal request" + ) + req_restrictions = proof_req_attr_spec.get("restrictions", {}) + proof_values = { + name: values["raw"] for name, values in attr_spec["values"].items() + } + sub_proof_index = attr_spec["sub_proof_index"] + schema_id = proof["identifiers"][sub_proof_index]["schema_id"] + cred_def_id = proof["identifiers"][sub_proof_index]["cred_def_id"] + criteria = { + "schema_id": schema_id, + "schema_issuer_did": schema_id.split(":")[-4], + "schema_name": schema_id.split(":")[-2], + "schema_version": schema_id.split(":")[-1], + "cred_def_id": cred_def_id, + "issuer_did": cred_def_id.split(":")[-5], + **{ + f"attr::{name}::value": value + for name, value in proof_values.items() + }, + } + + if not any(r.items() <= criteria.items() for r in req_restrictions): + raise V20PresManagerError( + f"Presentation attr group {proof_values} " + "not in proposal value(s)" + ) + + # predicate bounds + for reft, pred_spec in proof["requested_proof"]["predicates"].items(): + proof_req_pred_spec = proof_req["requested_predicates"].get(reft) + if not proof_req_pred_spec: + raise V20PresManagerError( + f"Presentation referent {reft} not in proposal request" + ) + req_name = proof_req_pred_spec["name"] + req_pred = Predicate.get(proof_req_pred_spec["p_type"]) + req_value = proof_req_pred_spec["p_value"] + req_restrictions = proof_req_pred_spec.get("restrictions", {}) + sub_proof_index = pred_spec["sub_proof_index"] + for ge_proof in proof["proof"]["proofs"][sub_proof_index][ + "primary_proof" + ]["ge_proofs"]: + proof_pred_spec = ge_proof["predicate"] + if proof_pred_spec["attr_name"] != canon(req_name): + continue + if not ( + Predicate.get(proof_pred_spec["p_type"]) is req_pred + and proof_pred_spec["value"] == req_value + ): + raise V20PresManagerError( + f"Presentation predicate on {req_name} " + "mismatches proposal request" + ) + break + else: + raise V20PresManagerError( + f"Proposed request predicate on {req_name} not in presentation" + ) + + schema_id = proof["identifiers"][sub_proof_index]["schema_id"] + cred_def_id = proof["identifiers"][sub_proof_index]["cred_def_id"] + criteria = { + "schema_id": schema_id, + "schema_issuer_did": schema_id.split(":")[-4], + "schema_name": schema_id.split(":")[-2], + "schema_version": schema_id.split(":")[-1], + "cred_def_id": cred_def_id, + "issuer_did": cred_def_id.split(":")[-5], + } + + if not any(r.items() <= criteria.items() for r in req_restrictions): + raise V20PresManagerError( + f"Presentation predicate {reft} differs from proposal request" + ) + proof = message.attachment(V20PresFormat.Format.INDY) thread_id = message._thread_id @@ -485,39 +608,7 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): session, {"thread_id": thread_id}, None ) - # Check for bait-and-switch in presented attribute values vs. request - # TODO: move to verifier.pre_verify(), include attr groups & predicate bounds - proof_req = V20PresRequest.deserialize(pres_ex_record.pres_request).attachment( - V20PresFormat.Format.INDY - ) # will change for DIF - - for (reft, attr_spec) in proof["requested_proof"]["revealed_attrs"].items(): - proof_req_attr_spec = proof_req["requested_attributes"].get(reft) - if not proof_req_attr_spec: - raise V20PresManagerError( - f"Presentation referent {reft} not in request" - ) - req_restrictions = proof_req_attr_spec["restrictions"] - - name = proof_req_attr_spec["name"] - proof_value = attr_spec["raw"] - sub_proof_index = attr_spec["sub_proof_index"] - schema_id = proof["identifiers"][sub_proof_index]["schema_id"] - cred_def_id = proof["identifiers"][sub_proof_index]["cred_def_id"] - criteria = { - "schema_id": schema_id, - "schema_issuer_did": schema_id.split(":")[-4], - "schema_name": schema_id.split(":")[-2], - "schema_version": schema_id.split(":")[-1], - "cred_def_id": proof["identifiers"][sub_proof_index]["cred_def_id"], - "issuer_did": cred_def_id.split(":")[-5], - f"attr::{name}::value": proof_value, - } - - if not any(r.items() <= criteria.items() for r in req_restrictions): - raise V20PresManagerError( - f"Presentation {name}={proof_value} not in requested value(s)" - ) + _check_proof_vs_proposal() pres_ex_record.pres = message.serialize() pres_ex_record.state = V20PresExRecord.STATE_PRESENTATION_RECEIVED diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py index 51afc99ed6..d80f5222e7 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py @@ -751,7 +751,25 @@ async def test_no_matching_creds_for_proof_req(self): async def test_receive_pres(self): connection_record = async_mock.MagicMock(connection_id=CONN_ID) indy_proof = { - "proof": {"proofs": []}, + "proof": { + "proofs": [ + { + "primary_proof": { + "eq_proof": "...", + "ge_proofs": [ + { + "...": "...", + "predicate": { + "attr_name": "highscore", + "p_type": "GE", + "value": 1000000, + }, + } + ], + } + } + ] + }, "requested_proof": { "revealed_attrs": { "0_player_uuid": { @@ -844,7 +862,7 @@ async def test_receive_pres(self): save_ex.assert_called_once() assert px_rec_out.state == (V20PresExRecord.STATE_PRESENTATION_RECEIVED) - async def test_receive_pres_bait_and_switch(self): + async def test_receive_pres_bait_and_switch_attr_name(self): connection_record = async_mock.MagicMock(connection_id=CONN_ID) indy_proof_req = deepcopy(INDY_PROOF_REQ_NAME) indy_proof_req["requested_attributes"]["1_screencapture_uuid"]["restrictions"][ @@ -853,7 +871,25 @@ async def test_receive_pres_bait_and_switch(self): "attr::screenCapture::value" ] = "c2NyZWVuIGNhcHR1cmUgc2hvd2luZyBzY29yZSBpbiB0aGUgbWlsbGlvbnM=" indy_proof_x = { - "proof": {"proofs": []}, + "proof": { + "proofs": [ + { + "primary_proof": { + "eq_proof": "...", + "ge_proofs": [ + { + "...": "...", + "predicate": { + "attr_name": "highscore", + "p_type": "GE", + "value": 1000000, + }, + } + ], + } + } + ] + }, "requested_proof": { "revealed_attrs": { "0_player_uuid": { @@ -929,7 +965,7 @@ async def test_receive_pres_bait_and_switch(self): retrieve_ex.return_value = px_rec_dummy with self.assertRaises(V20PresManagerError) as context: await self.manager.receive_pres(pres_x, connection_record) - assert "not in requested value(s)" in str(context.exception) + assert "not in proposal value(s)" in str(context.exception) indy_proof_req["requested_attributes"]["shenanigans"] = indy_proof_req[ "requested_attributes" @@ -983,6 +1019,434 @@ async def test_receive_pres_bait_and_switch(self): await self.manager.receive_pres(pres_x, connection_record) assert "Presentation referent" in str(context.exception) + async def test_receive_pres_bait_and_switch_attr_names(self): + connection_record = async_mock.MagicMock(connection_id=CONN_ID) + indy_proof_req = deepcopy(INDY_PROOF_REQ_NAMES) + indy_proof_req["requested_attributes"]["0_player_uuid"]["restrictions"][0][ + "attr::screenCapture::value" + ] = "c2NyZWVuIGNhcHR1cmUgc2hvd2luZyBzY29yZSBpbiB0aGUgbWlsbGlvbnM=" + indy_proof_x = { + "proof": { + "proofs": [ + { + "primary_proof": { + "eq_proof": "...", + "ge_proofs": [ + { + "...": "...", + "predicate": { + "attr_name": "highscore", + "p_type": "GE", + "value": 1000000, + }, + } + ], + } + } + ] + }, + "requested_proof": { + "revealed_attrs": {}, + "revealed_attr_groups": { + "0_player_uuid": { + "sub_proof_index": 0, + "values": { + "player": { + "raw": "Richie Knucklez", + "encoded": "12345678901234567890", + }, + "0_player_uuid": { # mismatch vs request + "raw": "bm90IHRoZSBzYW1lIHNjcmVlbiBjYXB0dXJl", + "encoded": "98765432109876543210", + }, + }, + }, + }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {"0_highscore_GE_uuid": {"sub_proof_index": 0}}, + }, + "identifiers": [ + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + } + ], + } + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], + ) + ], + proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres_x = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof_x, ident="indy") + ], + ) + + px_rec_dummy = V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + pres_request=pres_request.serialize(), + pres=pres_x.serialize(), + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex: + retrieve_ex.return_value = px_rec_dummy + with self.assertRaises(V20PresManagerError) as context: + await self.manager.receive_pres(pres_x, connection_record) + assert "not in proposal value(s)" in str(context.exception) + + indy_proof_req["requested_attributes"]["shenanigans"] = indy_proof_req[ + "requested_attributes" + ].pop("0_player_uuid") + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], + ) + ], + proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres_x = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof_x, ident="indy") + ], + ) + + px_rec_dummy = V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + pres_request=pres_request.serialize(), + pres=pres_x.serialize(), + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex: + retrieve_ex.return_value = px_rec_dummy + with self.assertRaises(V20PresManagerError) as context: + await self.manager.receive_pres(pres_x, connection_record) + assert "Presentation referent" in str(context.exception) + + async def test_receive_pres_bait_and_switch_pred(self): + connection_record = async_mock.MagicMock(connection_id=CONN_ID) + indy_proof_req = deepcopy(INDY_PROOF_REQ_NAME) + indy_proof_req["requested_predicates"] = {} + indy_proof_x = { + "proof": { + "proofs": [ + { + "primary_proof": { + "eq_proof": "...", + "ge_proofs": [ + { + "...": "...", + "predicate": { + "attr_name": "highscore", + "p_type": "GE", + "value": 1000000, + }, + } + ], + } + } + ] + }, + "requested_proof": { + "revealed_attrs": { + "0_player_uuid": { + "sub_proof_index": 0, + "raw": "Richie Knucklez", + "encoded": "12345678901234567890", + }, + "1_screencapture_uuid": { # mismatch vs request + "sub_proof_index": 0, + "raw": "bm90IHRoZSBzYW1lIHNjcmVlbiBjYXB0dXJl", + "encoded": "98765432109876543210", + }, + }, + "self_attested_attrs": {}, + "unrevealed_attrs": {}, + "predicates": {"0_highscore_GE_uuid": {"sub_proof_index": 0}}, + }, + "identifiers": [ + { + "schema_id": S_ID, + "cred_def_id": CD_ID, + "rev_reg_id": None, + "timestamp": None, + } + ], + } + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], + ) + ], + proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20_REQUEST][ + V20PresFormat.Format.INDY.api + ], + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres_x = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof_x, ident="indy") + ], + ) + + px_rec_dummy = V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + pres_request=pres_request.serialize(), + pres=pres_x.serialize(), + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex: + retrieve_ex.return_value = px_rec_dummy + with self.assertRaises(V20PresManagerError) as context: + await self.manager.receive_pres(pres_x, connection_record) + assert "not in proposal request" in str(context.exception) + + indy_proof_req["requested_predicates"]["0_highscore_GE_uuid"] = { + "name": "shenanigans", + "p_type": ">=", + "p_value": 1000000, + "restrictions": [{"cred_def_id": CD_ID}], + "non_revoked": {"from": NOW, "to": NOW}, + } + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], + ) + ], + proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres_x = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof_x, ident="indy") + ], + ) + + px_rec_dummy = V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + pres_request=pres_request.serialize(), + pres=pres_x.serialize(), + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex: + retrieve_ex.return_value = px_rec_dummy + with self.assertRaises(V20PresManagerError) as context: + await self.manager.receive_pres(pres_x, connection_record) + assert "shenanigans not in presentation" in str(context.exception) + + indy_proof_req["requested_predicates"]["0_highscore_GE_uuid"] = { + "name": "highScore", + "p_type": ">=", + "p_value": 8000000, # propose >= 8 million, prove >= 1 million + "restrictions": [{"cred_def_id": CD_ID}], + "non_revoked": {"from": NOW, "to": NOW}, + } + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], + ) + ], + proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres_x = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof_x, ident="indy") + ], + ) + + px_rec_dummy = V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + pres_request=pres_request.serialize(), + pres=pres_x.serialize(), + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex: + retrieve_ex.return_value = px_rec_dummy + with self.assertRaises(V20PresManagerError) as context: + await self.manager.receive_pres(pres_x, connection_record) + assert "highScore mismatches proposal request" in str(context.exception) + + indy_proof_req["requested_predicates"]["0_highscore_GE_uuid"] = { + "name": "highScore", + "p_type": ">=", + "p_value": 1000000, + "restrictions": [{"issuer_did": "FFFFFFFFFFFFFFFFFFFFFF"}], # fake issuer + "non_revoked": {"from": NOW, "to": NOW}, + } + pres_proposal = V20PresProposal( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20_PROPOSAL][ + V20PresFormat.Format.INDY.api + ], + ) + ], + proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + ) + pres_request = V20PresRequest( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], + ) + ], + request_presentations_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], + ) + pres_x = V20Pres( + formats=[ + V20PresFormat( + attach_id="indy", + format_=ATTACHMENT_FORMAT[PRES_20][V20PresFormat.Format.INDY.api], + ) + ], + presentations_attach=[ + AttachDecorator.data_base64(indy_proof_x, ident="indy") + ], + ) + + px_rec_dummy = V20PresExRecord( + pres_proposal=pres_proposal.serialize(), + pres_request=pres_request.serialize(), + pres=pres_x.serialize(), + ) + with async_mock.patch.object( + V20PresExRecord, "save", autospec=True + ) as save_ex, async_mock.patch.object( + V20PresExRecord, "retrieve_by_tag_filter", autospec=True + ) as retrieve_ex: + retrieve_ex.return_value = px_rec_dummy + with self.assertRaises(V20PresManagerError) as context: + await self.manager.receive_pres(pres_x, connection_record) + assert "differs from proposal request" in str(context.exception) + async def test_verify_pres(self): indy_proof = { "proof": {"proofs": []}, From 2739a1caadffb09f54e6a3368146c9b8c48d5bf4 Mon Sep 17 00:00:00 2001 From: Shaanjot Gill Date: Wed, 17 Mar 2021 15:27:09 -0700 Subject: [PATCH 132/243] OOB alias fix and pluralize fields Signed-off-by: Shaanjot Gill --- .../didexchange/v1_0/tests/test_manager.py | 4 +- .../v0_1/messages/tests/test_invitation.py | 2 +- .../introduction/v0_1/tests/test_service.py | 2 +- .../protocols/out_of_band/v1_0/manager.py | 22 +++---- .../out_of_band/v1_0/messages/invitation.py | 36 ++++++------ .../v1_0/messages/tests/test_invitation.py | 24 ++++---- .../protocols/out_of_band/v1_0/routes.py | 6 +- .../out_of_band/v1_0/tests/test_manager.py | 58 +++++++++---------- .../protocols/present_proof/v1_0/manager.py | 2 +- .../protocols/present_proof/v2_0/manager.py | 2 +- .../utils/tests/test_outofband.py | 2 +- aries_cloudagent/utils/tests/test_tracing.py | 4 +- open-api/openapi.json | 6 +- 13 files changed, 85 insertions(+), 85 deletions(-) diff --git a/aries_cloudagent/protocols/didexchange/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/didexchange/v1_0/tests/test_manager.py index 00625ab4a4..c3665792b9 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/tests/test_manager.py @@ -189,9 +189,9 @@ async def test_receive_invitation_no_auto_accept(self): async def test_receive_invitation_bad_invitation(self): x_invites = [ InvitationMessage(), - InvitationMessage(service=[OOBService()]), + InvitationMessage(services=[OOBService()]), InvitationMessage( - service=[ + services=[ OOBService( recipient_keys=["3Dn1SJNPaCXcvvJvSbsFWP2xaCjMom3can8CQNhWrTRx"] ) diff --git a/aries_cloudagent/protocols/introduction/v0_1/messages/tests/test_invitation.py b/aries_cloudagent/protocols/introduction/v0_1/messages/tests/test_invitation.py index cbddef8850..b90b9c9eaa 100644 --- a/aries_cloudagent/protocols/introduction/v0_1/messages/tests/test_invitation.py +++ b/aries_cloudagent/protocols/introduction/v0_1/messages/tests/test_invitation.py @@ -28,7 +28,7 @@ def setUp(self): self.oob_invi_msg = OOBInvitationMessage( label=self.label, handshake_protocols=[DIDCommPrefix.qualify_current(HSProto.RFC23.name)], - service=[ + services=[ OOBService( _id="#inline", _type="did-communication", diff --git a/aries_cloudagent/protocols/introduction/v0_1/tests/test_service.py b/aries_cloudagent/protocols/introduction/v0_1/tests/test_service.py index 12fbff108d..fd46c1e72e 100644 --- a/aries_cloudagent/protocols/introduction/v0_1/tests/test_service.py +++ b/aries_cloudagent/protocols/introduction/v0_1/tests/test_service.py @@ -29,7 +29,7 @@ def setUp(self): self.oob_invi_msg = OOBInvitationMessage( label=TEST_LABEL, handshake_protocols=[DIDCommPrefix.qualify_current(OOB_INVITATION)], - service=[ + services=[ OOBService( _id="#inline", _type="did-communication", diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py index b6e5fb3fdd..adc42f598a 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/manager.py @@ -224,8 +224,8 @@ async def create_invitation( invi_msg = InvitationMessage( # create invitation message label=my_label or self._session.settings.get("default_label"), handshake_protocols=handshake_protocols, - request_attach=message_attachments, - service=[f"did:sov:{public_did.did}"], + requests_attach=message_attachments, + services=[f"did:sov:{public_did.did}"], ) keylist_updates = await mediation_mgr.add_key( public_did.verkey, keylist_updates @@ -327,8 +327,8 @@ async def create_invitation( invi_msg = InvitationMessage( label=my_label or self._session.settings.get("default_label"), handshake_protocols=handshake_protocols, - request_attach=message_attachments, - service=[ + requests_attach=message_attachments, + services=[ ServiceMessage( _id="#inline", _type="did-communication", @@ -390,9 +390,9 @@ async def receive_invitation( if len(invi_msg.service_blocks) + len(invi_msg.service_dids) != 1: raise OutOfBandManagerError("service array must have exactly one element") - if not (invi_msg.request_attach or invi_msg.handshake_protocols): + if not (invi_msg.requests_attach or invi_msg.handshake_protocols): raise OutOfBandManagerError( - "Invitation must specify handshake_protocols, request_attach, or both" + "Invitation must specify handshake_protocols, requests_attach, or both" ) # Get the single service item if len(invi_msg.service_blocks) >= 1: @@ -440,7 +440,7 @@ async def receive_invitation( ) if conn_rec is not None: num_included_protocols = len(unq_handshake_protos) - num_included_req_attachments = len(invi_msg.request_attach) + num_included_req_attachments = len(invi_msg.requests_attach) # With handshake protocol, request attachment; use existing connection if ( num_included_protocols >= 1 @@ -547,8 +547,8 @@ async def receive_invitation( break # Request Attach - if len(invi_msg.request_attach) >= 1 and conn_rec is not None: - req_attach = invi_msg.request_attach[0] + if len(invi_msg.requests_attach) >= 1 and conn_rec is not None: + req_attach = invi_msg.requests_attach[0] if isinstance(req_attach, AttachDecorator): if req_attach.data is not None: unq_req_attach_type = DIDCommPrefix.unqualify( @@ -571,13 +571,13 @@ async def receive_invitation( else: raise OutOfBandManagerError( ( - "Unsupported request~attach type " + "Unsupported requests~attach type " f"{req_attach.content['@type']}: must unqualify to" f"{PRESENTATION_REQUEST} or {PRES_20_REQUEST}" ) ) else: - raise OutOfBandManagerError("request~attach is not properly formatted") + raise OutOfBandManagerError("requests~attach is not properly formatted") return conn_rec.serialize() diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py index d7e536b380..a353443c85 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py @@ -102,9 +102,9 @@ def __init__( comment: str = None, label: str = None, handshake_protocols: Sequence[Text] = None, - request_attach: Sequence[AttachDecorator] = None, - # When loading, we sort service in the two lists - service: Sequence[Union[Service, Text]] = None, + requests_attach: Sequence[AttachDecorator] = None, + # When loading, we sort services in the two lists + services: Sequence[Union[Service, Text]] = None, service_blocks: Sequence[Service] = None, service_dids: Sequence[Text] = None, **kwargs, @@ -113,7 +113,7 @@ def __init__( Initialize invitation message object. Args: - request_attach: request attachments + requests_attach: request attachments """ # super().__init__(_id=_id, **kwargs) @@ -122,7 +122,7 @@ def __init__( self.handshake_protocols = ( list(handshake_protocols) if handshake_protocols else [] ) - self.request_attach = list(request_attach) if request_attach else [] + self.requests_attach = list(requests_attach) if requests_attach else [] # In order to accept and validate both string entries and # dict block entries, we include both in schema and manipulate @@ -132,7 +132,7 @@ def __init__( # In the case of loading, we need to sort # the entries into relevant lists for schema validation - for s in service or []: + for s in services or []: if type(s) is Service: self.service_blocks.append(s) elif type(s) is str: @@ -199,11 +199,11 @@ class Meta: ), required=False, ) - request_attach = fields.Nested( + requests_attach = fields.Nested( AttachDecoratorSchema, required=False, many=True, - data_key="request~attach", + data_key="requests~attach", description="Optional request attachment", ) @@ -221,14 +221,14 @@ def validate_fields(self, data, **kwargs): ValidationError: If any of the fields do not validate """ handshake_protocols = data.get("handshake_protocols") - request_attach = data.get("request_attach") + requests_attach = data.get("requests_attach") if not ( (handshake_protocols and len(handshake_protocols) > 0) - or (request_attach and len(request_attach) > 0) + or (requests_attach and len(requests_attach) > 0) ): raise ValidationError( "Model must include non-empty " - "handshake_protocols or request_attach or both" + "handshake_protocols or requests_attach or both" ) # service = data.get("service") @@ -243,30 +243,30 @@ def pre_load(self, data, **kwargs): data["service_dids"] = [] data["service_blocks"] = [] - for service_entry in data["service"]: + for service_entry in data["services"]: if type(service_entry) is str: data["service_dids"].append(service_entry) if type(service_entry) is dict: data["service_blocks"].append(service_entry) - del data["service"] + del data["services"] return data @post_dump def post_dump(self, data, **kwargs): """Post dump hook.""" - data["service"] = [] + data["services"] = [] for service_entry in data["service_dids"]: - data["service"].append(service_entry) + data["services"].append(service_entry) for service_entry in data["service_blocks"]: - data["service"].append(service_entry) + data["services"].append(service_entry) del data["service_dids"] del data["service_blocks"] - if "request~attach" in data and not data["request~attach"]: - del data["request~attach"] + if "requests~attach" in data and not data["requests~attach"]: + del data["requests~attach"] return data diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/messages/tests/test_invitation.py b/aries_cloudagent/protocols/out_of_band/v1_0/messages/tests/test_invitation.py index 5f40f13d77..88b5357359 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/messages/tests/test_invitation.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/messages/tests/test_invitation.py @@ -49,7 +49,7 @@ def test_init(self): comment="Hello", label="A label", handshake_protocols=[DIDCommPrefix.qualify_current(DIDX_PROTO)], - service=[TEST_DID], + services=[TEST_DID], ) assert invi.service_dids == [TEST_DID] assert not invi.service_blocks @@ -60,7 +60,7 @@ def test_init(self): comment="Hello", label="A label", handshake_protocols=[DIDCommPrefix.qualify_current(DIDX_PROTO)], - service=[service], + services=[service], ) assert invi_msg.service_blocks == [service] assert invi_msg._type == DIDCommPrefix.qualify_current(INVITATION) @@ -71,7 +71,7 @@ def test_wrap_serde(self): deco = InvitationMessage.wrap_message(msg) assert deco.ident == "request-0" - obj_x = {"label": "label", "service": ["sample-did"]} + obj_x = {"label": "label", "services": ["sample-did"]} with pytest.raises(BaseModelError): InvitationMessage.deserialize(obj_x) @@ -88,27 +88,27 @@ def test_wrap_serde(self): data_deser = invi_schema.pre_load( { "label": "label", - "request~attach": [deco.serialize()], - "service": [{"a": service.serialize()}], + "requests~attach": [deco.serialize()], + "services": [{"a": service.serialize()}], } ) - assert "service" not in data_deser + assert "services" not in data_deser data_ser = invi_schema.post_dump(data_deser) - assert "service" in data_ser + assert "services" in data_ser service = Service(_id="#inline", _type=DID_COMM, did=TEST_DID) data_deser = invi_schema.pre_load( { "label": "label", - "request~attach": [deco.serialize()], - "service": [TEST_DID], + "requests~attach": [deco.serialize()], + "services": [TEST_DID], } ) - assert "service" not in data_deser + assert "services" not in data_deser data_ser = invi_schema.post_dump(data_deser) - assert "service" in data_ser + assert "services" in data_ser def test_url_round_trip(self): service = Service( @@ -121,7 +121,7 @@ def test_url_round_trip(self): comment="Hello", label="A label", handshake_protocols=[DIDCommPrefix.qualify_current(DIDX_PROTO)], - service=[service], + services=[service], ) url = invi_msg.to_url() diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/routes.py b/aries_cloudagent/protocols/out_of_band/v1_0/routes.py index 505b373634..4ca9fcb083 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/routes.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/routes.py @@ -159,12 +159,12 @@ async def invitation_create(request: web.BaseRequest): handshake_protocols = body.get("handshake_protocols", []) use_public_did = body.get("use_public_did", False) metadata = body.get("metadata") - my_label = request.query.get("my_label") - alias = request.query.get("alias") + my_label = body.get("my_label") + alias = body.get("alias") + mediation_id = body.get("mediation_id") multi_use = json.loads(request.query.get("multi_use", "false")) auto_accept = json.loads(request.query.get("auto_accept", "null")) - mediation_id = body.get("mediation_id") session = await context.session() oob_mgr = OutOfBandManager(session) try: diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py index 70d624f6f0..7696c4219e 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py @@ -281,12 +281,12 @@ async def test_create_invitation_handshake_succeeds(self): assert invi_rec.invitation["@type"] == DIDCommPrefix.qualify_current( INVITATION ) - assert not invi_rec.invitation.get("request~attach") + assert not invi_rec.invitation.get("requests~attach") assert ( DIDCommPrefix.qualify_current(HSProto.RFC23.name) in invi_rec.invitation["handshake_protocols"] ) - assert invi_rec.invitation["service"] == [f"did:sov:{TestConfig.test_did}"] + assert invi_rec.invitation["services"] == [f"did:sov:{TestConfig.test_did}"] async def test_create_invitation_mediation_overwrites_routing_and_endpoint(self): mock_conn_rec = async_mock.MagicMock() @@ -487,7 +487,7 @@ async def test_create_invitation_attachment_v2_0_cred_offer(self): attachments=[{"type": "credential-offer", "id": "dummy-id"}], ) - assert invi_rec.invitation["request~attach"] + assert invi_rec.invitation["requests~attach"] async def test_create_invitation_attachment_present_proof_v1_0(self): self.session.context.update_settings({"public_invites": True}) @@ -512,7 +512,7 @@ async def test_create_invitation_attachment_present_proof_v1_0(self): attachments=[{"type": "present-proof", "id": "dummy-id"}], ) - assert invi_rec.invitation["request~attach"] + assert invi_rec.invitation["requests~attach"] mock_retrieve_pxid.assert_called_once_with(self.manager.session, "dummy-id") async def test_create_invitation_attachment_present_proof_v2_0(self): @@ -543,7 +543,7 @@ async def test_create_invitation_attachment_present_proof_v2_0(self): attachments=[{"type": "present-proof", "id": "dummy-id"}], ) - assert invi_rec.invitation["request~attach"] + assert invi_rec.invitation["requests~attach"] mock_retrieve_pxid_1.assert_called_once_with( self.manager.session, "dummy-id" ) @@ -641,13 +641,13 @@ async def test_create_invitation_peer_did(self): assert invi_rec.invitation["@type"] == DIDCommPrefix.qualify_current( INVITATION ) - assert not invi_rec.invitation.get("request~attach") + assert not invi_rec.invitation.get("requests~attach") assert invi_rec.invitation["label"] == "That guy" assert ( DIDCommPrefix.qualify_current(HSProto.RFC23.name) in invi_rec.invitation["handshake_protocols"] ) - service = invi_rec.invitation["service"][0] + service = invi_rec.invitation["services"][0] assert service["id"] == "#inline" assert service["type"] == "did-communication" assert len(service["recipientKeys"]) == 1 @@ -661,7 +661,7 @@ async def test_create_invitation_metadata_assigned(self): hs_protos=[test_module.HSProto.RFC23], metadata={"hello": "world"}, ) - service = invi_rec.invitation["service"][0] + service = invi_rec.invitation["services"][0] invitation_key = did_key_to_naked(service["recipientKeys"][0]) record = await ConnRecord.retrieve_by_invitation_key( self.session, invitation_key @@ -754,7 +754,7 @@ async def test_receive_invitation_didx_service_block(self): receive_invitation=async_mock.CoroutineMock() ) mock_oob_invi = async_mock.MagicMock( - request_attach=[], + requests_attach=[], handshake_protocols=[ pfx.qualify(HSProto.RFC23.name) for pfx in DIDCommPrefix ], @@ -805,7 +805,7 @@ async def test_receive_invitation_connection_mock(self): service_endpoint="http://localhost", ) ], - request_attach=[], + requests_attach=[], ) invi_msg_cls.deserialize.return_value = mock_oob_invi result = await self.manager.receive_invitation(mock_oob_invi) @@ -863,7 +863,7 @@ async def test_receive_invitation_service_did(self): ], service_dids=[TestConfig.test_did], service_blocks=[], - request_attach=[], + requests_attach=[], ) invi_msg_cls.deserialize.return_value = mock_oob_invi @@ -888,13 +888,13 @@ async def test_receive_invitation_attachment_x(self): handshake_protocols=[ pfx.qualify(HSProto.RFC23.name) for pfx in DIDCommPrefix ], - request_attach=[{"having": "attachment", "is": "no", "good": "here"}], + requests_attach=[{"having": "attachment", "is": "no", "good": "here"}], ) inv_message_cls.deserialize.return_value = mock_oob_invi with self.assertRaises(OutOfBandManagerError) as context: await self.manager.receive_invitation(mock_oob_invi) - assert "request~attach is not properly formatted" in str(context.exception) + assert "requests~attach is not properly formatted" in str(context.exception) async def test_receive_invitation_req_pres_v1_0_attachment_x(self): self.session.context.update_settings({"public_invites": True}) @@ -914,7 +914,7 @@ async def test_receive_invitation_req_pres_v1_0_attachment_x(self): ], service_dids=[TestConfig.test_did], service_blocks=[], - request_attach=[ + requests_attach=[ async_mock.MagicMock( data=async_mock.MagicMock( json={ @@ -935,7 +935,7 @@ async def test_receive_invitation_req_pres_v1_0_attachment_x(self): connection_id.hex == result.get("connection_id") and len(result.get("connection_id")) > 5 ) - assert "request~attach is not properly formatted" in str(context.exception) + assert "requests~attach is not properly formatted" in str(context.exception) async def test_receive_invitation_invalid_request_type_x(self): self.session.context.update_settings({"public_invites": True}) @@ -953,7 +953,7 @@ async def test_receive_invitation_invalid_request_type_x(self): service_blocks=[], service_dids=[TestConfig.test_did], handshake_protocols=[], - request_attach=[], + requests_attach=[], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -1563,7 +1563,7 @@ async def test_existing_conn_record_public_did(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[], + requests_attach=[], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -1674,7 +1674,7 @@ async def test_existing_conn_record_public_did_not_accepted(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[], + requests_attach=[], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -1747,7 +1747,7 @@ async def test_existing_conn_record_public_did_inverse_cases(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[], + requests_attach=[], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -1813,7 +1813,7 @@ async def test_existing_conn_record_public_did_timeout(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[], + requests_attach=[], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -1868,7 +1868,7 @@ async def test_existing_conn_record_public_did_timeout_no_handshake_protocol(sel handshake_protocols=[], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[{"having": "attachment", "is": "no", "good": "here"}], + requests_attach=[{"having": "attachment", "is": "no", "good": "here"}], ) inv_message_cls.deserialize.return_value = mock_oob_invi with self.assertRaises(OutOfBandManagerError) as context: @@ -1945,7 +1945,7 @@ async def test_req_v1_attach_presentation_existing_conn_no_auto_present(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v1)], + requests_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v1)], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -2066,7 +2066,7 @@ async def test_req_v1_attach_presentation_existing_conn_auto_present_pres_msg(se ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v1)], + requests_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v1)], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -2176,7 +2176,7 @@ async def test_req_v1_attach_pres_catch_value_error(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v1)], + requests_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v1)], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -2254,7 +2254,7 @@ async def test_req_v2_attach_presentation_existing_conn_no_auto_present(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v2)], + requests_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v2)], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -2384,7 +2384,7 @@ async def test_req_v2_attach_presentation_existing_conn_auto_present_pres_msg(se ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v2)], + requests_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v2)], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -2502,7 +2502,7 @@ async def test_req_v2_attach_pres_catch_value_error(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v2)], + requests_attach=[AttachDecorator.deserialize(TestConfig.req_attach_v2)], ) inv_message_cls.deserialize.return_value = mock_oob_invi @@ -2601,11 +2601,11 @@ async def test_req_attach_presentation_cred_offer(self): ], service_dids=[TestConfig.test_target_did], service_blocks=[], - request_attach=[AttachDecorator.deserialize(req_attach)], + requests_attach=[AttachDecorator.deserialize(req_attach)], ) inv_message_cls.deserialize.return_value = mock_oob_invi with self.assertRaises(OutOfBandManagerError) as context: result = await self.manager.receive_invitation( mock_oob_invi, use_existing_connection=True ) - assert "Unsupported request~attach type" in str(context.exception) + assert "Unsupported requests~attach type" in str(context.exception) diff --git a/aries_cloudagent/protocols/present_proof/v1_0/manager.py b/aries_cloudagent/protocols/present_proof/v1_0/manager.py index b70773da67..b28e7b5cf9 100644 --- a/aries_cloudagent/protocols/present_proof/v1_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v1_0/manager.py @@ -461,7 +461,7 @@ async def receive_presentation( session, {"thread_id": thread_id}, connection_id_filter ) except StorageNotFoundError: - # Proof Request not bound to any connection: request_attach in OOB message + # Proof Request not bound to any connection: requests_attach in OOB msg ( presentation_exchange_record ) = await V10PresentationExchange.retrieve_by_tag_filter( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/manager.py b/aries_cloudagent/protocols/present_proof/v2_0/manager.py index f9f7614313..939cbc5a96 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/manager.py @@ -480,7 +480,7 @@ async def receive_pres(self, message: V20Pres, conn_record: ConnRecord): session, {"thread_id": thread_id}, conn_id_filter ) except StorageNotFoundError: - # Proof req not bound to any connection: request_attach in OOB message + # Proof req not bound to any connection: requests_attach in OOB msg pres_ex_record = await V20PresExRecord.retrieve_by_tag_filter( session, {"thread_id": thread_id}, None ) diff --git a/aries_cloudagent/utils/tests/test_outofband.py b/aries_cloudagent/utils/tests/test_outofband.py index fe49b90583..d1e92ae477 100644 --- a/aries_cloudagent/utils/tests/test_outofband.py +++ b/aries_cloudagent/utils/tests/test_outofband.py @@ -14,7 +14,7 @@ class TestOutOfBand(TestCase): def test_serialize_oob(self): invi = InvitationMessage( - comment="my sister", label=u"ma sœur", service=[TestOutOfBand.test_did] + comment="my sister", label=u"ma sœur", services=[TestOutOfBand.test_did] ) result = test_module.serialize_outofband( diff --git a/aries_cloudagent/utils/tests/test_tracing.py b/aries_cloudagent/utils/tests/test_tracing.py index 1e5987386f..bbfa979d2a 100644 --- a/aries_cloudagent/utils/tests/test_tracing.py +++ b/aries_cloudagent/utils/tests/test_tracing.py @@ -25,7 +25,7 @@ def test_get_timer(self): def test_tracing_enabled(self): invi = InvitationMessage( - comment="no comment", label="cable guy", service=[TestTracing.test_did] + comment="no comment", label="cable guy", services=[TestTracing.test_did] ) assert not test_module.tracing_enabled({}, invi) invi._trace = TraceDecorator(target="message") @@ -73,7 +73,7 @@ def test_tracing_enabled(self): def test_decode_inbound_message(self): invi = InvitationMessage( - comment="no comment", label="cable guy", service=[TestTracing.test_did] + comment="no comment", label="cable guy", services=[TestTracing.test_did] ) message = OutboundMessage(payload=invi) assert invi == test_module.decode_inbound_message(message) diff --git a/open-api/openapi.json b/open-api/openapi.json index 93d73d3e92..116ec0e686 100644 --- a/open-api/openapi.json +++ b/open-api/openapi.json @@ -3228,7 +3228,7 @@ }, "InvitationReceiveRequest" : { "type" : "object", - "required" : [ "request~attach" ], + "required" : [ "requests~attach" ], "properties" : { "@id" : { "type" : "string", @@ -3252,13 +3252,13 @@ "example" : "Bob", "description" : "Optional label" }, - "request~attach" : { + "requests~attach" : { "type" : "array", "items" : { "$ref" : "#/definitions/AttachDecorator" } }, - "service" : { }, + "services" : { }, "service_blocks" : { "type" : "array", "items" : { From 4dd55d9655251c582dbbce3b592f99ec89372fe6 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 18 Mar 2021 15:56:46 +0000 Subject: [PATCH 133/243] endorse txn protocol unit tests Signed-off-by: sklump --- aries_cloudagent/core/tests/test_conductor.py | 37 + .../credential_definitions/routes.py | 13 +- .../tests/test_routes.py | 66 +- aries_cloudagent/messaging/schemas/routes.py | 13 +- .../messaging/schemas/tests/test_routes.py | 72 +- ...t_endorsed_transaction_response_handler.py | 40 +- ...st_refused_transaction_response_handler.py | 40 +- .../tests/test_transaction_cancel_handler.py | 42 +- .../test_transaction_job_to_send_handler.py | 40 +- .../tests/test_transaction_request_handler.py | 40 +- .../tests/test_transaction_resend_handler.py | 42 +- .../endorse_transaction/v1_0/manager.py | 27 +- .../endorse_transaction/v1_0/routes.py | 212 ++- .../v1_0/tests/test_manager.py | 232 ++- .../v1_0/tests/test_routes.py | 1536 +++++++++++++++++ 15 files changed, 2185 insertions(+), 267 deletions(-) create mode 100644 aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_routes.py diff --git a/aries_cloudagent/core/tests/test_conductor.py b/aries_cloudagent/core/tests/test_conductor.py index 04397aee80..3696f4506d 100644 --- a/aries_cloudagent/core/tests/test_conductor.py +++ b/aries_cloudagent/core/tests/test_conductor.py @@ -127,6 +127,24 @@ async def test_startup(self): mock_inbound_mgr.return_value.stop.assert_awaited_once_with() mock_outbound_mgr.return_value.stop.assert_awaited_once_with() + async def test_startup_admin_server_x(self): + builder: ContextBuilder = StubContextBuilder(self.test_settings_admin) + conductor = test_module.Conductor(builder) + + with async_mock.patch.object( + test_module, "InboundTransportManager", autospec=True + ) as mock_inbound_mgr, async_mock.patch.object( + test_module, "OutboundTransportManager", autospec=True + ) as mock_outbound_mgr, async_mock.patch.object( + test_module, "LoggingConfigurator", autospec=True + ) as mock_logger, async_mock.patch.object( + test_module, "AdminServer", async_mock.MagicMock() + ) as mock_admin_server: + + mock_admin_server.side_effect = ValueError() + with self.assertRaises(ValueError): + await conductor.setup() + async def test_startup_no_public_did(self): builder: ContextBuilder = StubContextBuilder(self.test_settings) conductor = test_module.Conductor(builder) @@ -390,6 +408,25 @@ async def test_handle_nots(self): await conductor.queue_outbound(conductor.root_profile, message) mock_run_task.assert_called_once() + async def test_handle_outbound_queue(self): + builder: ContextBuilder = StubContextBuilder(self.test_settings) + conductor = test_module.Conductor(builder) + + payload = "{}" + message = OutboundMessage( + payload=payload, + connection_id="dummy-conn-id", + target=async_mock.MagicMock(), + reply_to_verkey=TestDIDs.test_verkey, + ) + + await conductor.setup() + conductor.outbound_queue = async_mock.MagicMock( + enqueue_message=async_mock.CoroutineMock() + ) + + await conductor.queue_outbound(conductor.root_profile, message) + async def test_handle_not_returned_ledger_x(self): builder: ContextBuilder = StubContextBuilder(self.test_settings_admin) conductor = test_module.Conductor(builder) diff --git a/aries_cloudagent/messaging/credential_definitions/routes.py b/aries_cloudagent/messaging/credential_definitions/routes.py index a262c97c91..d1e7aec41c 100644 --- a/aries_cloudagent/messaging/credential_definitions/routes.py +++ b/aries_cloudagent/messaging/credential_definitions/routes.py @@ -18,6 +18,7 @@ from ...indy.issuer import IndyIssuer from ...ledger.base import BaseLedger from ...storage.base import BaseStorage +from ...storage.error import StorageError from ...tails.base import BaseTailsServer from ..models.openapi import OpenAPISchema @@ -247,11 +248,13 @@ async def credential_definitions_send_credential_definition(request: web.BaseReq session = await context.session() transaction_mgr = TransactionManager(session) - - transaction = await transaction_mgr.create_record( - messages_attach=cred_def["signed_txn"], - expires_time="1597708800", - ) + try: + transaction = await transaction_mgr.create_record( + messages_attach=cred_def["signed_txn"], + expires_time="1597708800", + ) + except StorageError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err return web.json_response(transaction.serialize()) diff --git a/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py b/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py index bc752b0148..4dc5685e14 100644 --- a/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py +++ b/aries_cloudagent/messaging/credential_definitions/tests/test_routes.py @@ -24,10 +24,14 @@ def setUp(self): self.ledger = async_mock.create_autospec(BaseLedger) self.ledger.__aenter__ = async_mock.CoroutineMock(return_value=self.ledger) self.ledger.create_and_send_credential_definition = async_mock.CoroutineMock( - return_value=(CRED_DEF_ID, {"cred": "def"}, True) + return_value=( + CRED_DEF_ID, + {"cred": "def", "signed_txn": "..."}, + True, + ) ) self.ledger.get_credential_definition = async_mock.CoroutineMock( - return_value={"cred": "def"} + return_value={"cred": "def", "signed_txn": "..."} ) self.profile_injector.bind_instance(BaseLedger, self.ledger) @@ -246,6 +250,62 @@ async def test_send_credential_definition_revoc_init_issuer_rev_reg_x(self): self.request ) + async def test_send_credential_definition_no_auto_endorse(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "schema_id": "WgWxqztrNooG92RXvxSTWv:2:schema_name:1.0", + "support_revocation": False, + "tag": "tag", + } + ) + + self.request.query = {"auto_endorse": "false"} + + with async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_record=async_mock.CoroutineMock( + return_value=async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + ) + ) + result = ( + await test_module.credential_definitions_send_credential_definition( + self.request + ) + ) + assert result == mock_response.return_value + mock_response.assert_called_once_with({"...": "..."}) + + async def test_send_credential_definition_no_auto_endorse_storage_x(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "schema_id": "WgWxqztrNooG92RXvxSTWv:2:schema_name:1.0", + "support_revocation": False, + "tag": "tag", + } + ) + + self.request.query = {"auto_endorse": "false"} + + with async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_record=async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.credential_definitions_send_credential_definition( + self.request + ) + async def test_send_credential_definition_no_ledger(self): self.request.json = async_mock.CoroutineMock( return_value={ @@ -300,7 +360,7 @@ async def test_get_credential_definition(self): ) assert result == mock_response.return_value mock_response.assert_called_once_with( - {"credential_definition": {"cred": "def"}} + {"credential_definition": {"cred": "def", "signed_txn": "..."}} ) async def test_get_credential_definition_no_ledger(self): diff --git a/aries_cloudagent/messaging/schemas/routes.py b/aries_cloudagent/messaging/schemas/routes.py index 899f76868d..e78b241838 100644 --- a/aries_cloudagent/messaging/schemas/routes.py +++ b/aries_cloudagent/messaging/schemas/routes.py @@ -20,6 +20,7 @@ from ...ledger.base import BaseLedger from ...ledger.error import LedgerError from ...storage.base import BaseStorage +from ...storage.error import StorageError from ..models.openapi import OpenAPISchema from ..valid import B58, NATURAL_NUM, INDY_SCHEMA_ID, INDY_VERSION from .util import SchemaQueryStringSchema, SCHEMA_SENT_RECORD_TYPE, SCHEMA_TAGS @@ -178,11 +179,13 @@ async def schemas_send_schema(request: web.BaseRequest): session = await context.session() transaction_mgr = TransactionManager(session) - - transaction = await transaction_mgr.create_record( - messages_attach=schema_def["signed_txn"], - expires_time="1597708800", - ) + try: + transaction = await transaction_mgr.create_record( + messages_attach=schema_def["signed_txn"], + expires_time="1597708800", + ) + except StorageError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err return web.json_response(transaction.serialize()) diff --git a/aries_cloudagent/messaging/schemas/tests/test_routes.py b/aries_cloudagent/messaging/schemas/tests/test_routes.py index e4708e2de5..ab335f57a1 100644 --- a/aries_cloudagent/messaging/schemas/tests/test_routes.py +++ b/aries_cloudagent/messaging/schemas/tests/test_routes.py @@ -30,10 +30,10 @@ def setUp(self): self.ledger = async_mock.create_autospec(BaseLedger) self.ledger.__aenter__ = async_mock.CoroutineMock(return_value=self.ledger) self.ledger.create_and_send_schema = async_mock.CoroutineMock( - return_value=(SCHEMA_ID, {"schema": "def"}) + return_value=(SCHEMA_ID, {"schema": "def", "signed_txn": "..."}) ) self.ledger.get_schema = async_mock.CoroutineMock( - return_value={"schema": "def"} + return_value={"schema": "def", "signed_txn": "..."} ) self.context.injector.bind_instance(BaseLedger, self.ledger) @@ -61,9 +61,67 @@ async def test_send_schema(self): result = await test_module.schemas_send_schema(self.request) assert result == mock_response.return_value mock_response.assert_called_once_with( - {"schema_id": SCHEMA_ID, "schema": {"schema": "def"}} + { + "schema_id": SCHEMA_ID, + "schema": { + "schema": "def", + "signed_txn": "...", + }, + } ) + async def test_send_schema_no_auto_endorse(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "schema_name": "schema_name", + "schema_version": "1.0", + "attributes": ["table", "drink", "colour"], + } + ) + + self.request.query = {"auto_endorse": "false"} + + with async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_record=async_mock.CoroutineMock( + return_value=async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + ) + ) + result = await test_module.schemas_send_schema(self.request) + assert result == mock_response.return_value + mock_response.assert_called_once_with({"...": "..."}) + + async def test_send_schema_no_auto_endorse_storage_x(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "schema_name": "schema_name", + "schema_version": "1.0", + "attributes": ["table", "drink", "colour"], + } + ) + + self.request.query = {"auto_endorse": "false"} + + with async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_record=async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.schemas_send_schema(self.request) + async def test_send_schema_no_ledger(self): self.request.json = async_mock.CoroutineMock( return_value={ @@ -107,7 +165,9 @@ async def test_get_schema(self): with async_mock.patch.object(test_module.web, "json_response") as mock_response: result = await test_module.schemas_get_schema(self.request) assert result == mock_response.return_value - mock_response.assert_called_once_with({"schema": {"schema": "def"}}) + mock_response.assert_called_once_with( + {"schema": {"schema": "def", "signed_txn": "..."}} + ) async def test_get_schema_on_seq_no(self): self.request.match_info = {"schema_id": "12345"} @@ -115,7 +175,9 @@ async def test_get_schema_on_seq_no(self): with async_mock.patch.object(test_module.web, "json_response") as mock_response: result = await test_module.schemas_get_schema(self.request) assert result == mock_response.return_value - mock_response.assert_called_once_with({"schema": {"schema": "def"}}) + mock_response.assert_called_once_with( + {"schema": {"schema": "def", "signed_txn": "..."}} + ) async def test_get_schema_no_ledger(self): self.request.match_info = {"schema_id": SCHEMA_ID} diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py index 83f3814625..d6f8fe5ca6 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_endorsed_transaction_response_handler.py @@ -7,7 +7,7 @@ from ......messaging.responder import MockResponder from ......transport.inbound.receipt import MessageReceipt -from ...handlers import endorsed_transaction_response_handler as handler +from ...handlers import endorsed_transaction_response_handler as test_module from ...messages.endorsed_transaction_response import EndorsedTransactionResponse @@ -18,16 +18,16 @@ async def test_called(self): request_context.connection_record = async_mock.MagicMock() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.receive_endorse_response = ( async_mock.CoroutineMock() ) request_context.message = EndorsedTransactionResponse() request_context.connection_ready = True - handler_inst = handler.EndorsedTransactionResponseHandler() + handler = test_module.EndorsedTransactionResponseHandler() responder = MockResponder() - await handler_inst.handle(request_context, responder) + await handler.handle(request_context, responder) mock_tran_mgr.return_value.receive_endorse_response.assert_called_once_with( request_context.message @@ -40,16 +40,40 @@ async def test_called_not_ready(self): request_context.connection_record = async_mock.MagicMock() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.receive_endorse_response = ( async_mock.CoroutineMock() ) request_context.message = EndorsedTransactionResponse() request_context.connection_ready = False - handler_inst = handler.EndorsedTransactionResponseHandler() + handler = test_module.EndorsedTransactionResponseHandler() responder = MockResponder() - with self.assertRaises(handler.HandlerException): - await handler_inst.handle(request_context, responder) + with self.assertRaises(test_module.HandlerException): + await handler.handle(request_context, responder) assert not responder.messages + + async def test_called_x(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + test_module, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_endorse_response = ( + async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + ) + request_context.message = EndorsedTransactionResponse() + request_context.connection_ready = True + handler = test_module.EndorsedTransactionResponseHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_tran_mgr.return_value.receive_endorse_response.assert_called_once_with( + request_context.message + ) + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py index 1fde23309e..33f00c5da5 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_refused_transaction_response_handler.py @@ -7,7 +7,7 @@ from ......messaging.responder import MockResponder from ......transport.inbound.receipt import MessageReceipt -from ...handlers import refused_transaction_response_handler as handler +from ...handlers import refused_transaction_response_handler as test_module from ...messages.refused_transaction_response import RefusedTransactionResponse @@ -18,16 +18,16 @@ async def test_called(self): request_context.connection_record = async_mock.MagicMock() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.receive_refuse_response = ( async_mock.CoroutineMock() ) request_context.message = RefusedTransactionResponse() request_context.connection_ready = True - handler_inst = handler.RefusedTransactionResponseHandler() + handler = test_module.RefusedTransactionResponseHandler() responder = MockResponder() - await handler_inst.handle(request_context, responder) + await handler.handle(request_context, responder) mock_tran_mgr.return_value.receive_refuse_response.assert_called_once_with( request_context.message @@ -40,16 +40,40 @@ async def test_called_not_ready(self): request_context.connection_record = async_mock.MagicMock() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.receive_refuse_response = ( async_mock.CoroutineMock() ) request_context.message = RefusedTransactionResponse() request_context.connection_ready = False - handler_inst = handler.RefusedTransactionResponseHandler() + handler = test_module.RefusedTransactionResponseHandler() responder = MockResponder() - with self.assertRaises(handler.HandlerException): - await handler_inst.handle(request_context, responder) + with self.assertRaises(test_module.HandlerException): + await handler.handle(request_context, responder) assert not responder.messages + + async def test_called_x(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + test_module, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_refuse_response = ( + async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + ) + request_context.message = RefusedTransactionResponse() + request_context.connection_ready = True + handler = test_module.RefusedTransactionResponseHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_tran_mgr.return_value.receive_refuse_response.assert_called_once_with( + request_context.message + ) + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py index 1a76e7d6f7..bc144c16d6 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_cancel_handler.py @@ -7,7 +7,7 @@ from ......messaging.responder import MockResponder from ......transport.inbound.receipt import MessageReceipt -from ...handlers import transaction_cancel_handler as handler +from ...handlers import transaction_cancel_handler as test_module from ...messages.cancel_transaction import CancelTransaction from ......connections.models.conn_record import ConnRecord @@ -18,7 +18,7 @@ async def test_called(self): request_context.message_receipt = MessageReceipt() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.receive_cancel_transaction = ( async_mock.CoroutineMock() @@ -28,9 +28,9 @@ async def test_called(self): connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" ) request_context.connection_ready = True - handler_inst = handler.TransactionCancelHandler() + handler = test_module.TransactionCancelHandler() responder = MockResponder() - await handler_inst.handle(request_context, responder) + await handler.handle(request_context, responder) mock_tran_mgr.return_value.receive_cancel_transaction.assert_called_once_with( request_context.message, request_context.connection_record.connection_id @@ -43,16 +43,42 @@ async def test_called_not_ready(self): request_context.connection_record = async_mock.MagicMock() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.receive_cancel_transaction = ( async_mock.CoroutineMock() ) request_context.message = CancelTransaction() request_context.connection_ready = False - handler_inst = handler.TransactionCancelHandler() + handler = test_module.TransactionCancelHandler() responder = MockResponder() - with self.assertRaises(handler.HandlerException): - await handler_inst.handle(request_context, responder) + with self.assertRaises(test_module.HandlerException): + await handler.handle(request_context, responder) assert not responder.messages + + async def test_called_x(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + + with async_mock.patch.object( + test_module, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_cancel_transaction = ( + async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + ) + request_context.message = CancelTransaction() + request_context.connection_record = ConnRecord( + connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" + ) + request_context.connection_ready = True + handler = test_module.TransactionCancelHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_tran_mgr.return_value.receive_cancel_transaction.assert_called_once_with( + request_context.message, request_context.connection_record.connection_id + ) + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py index 096d5b3c22..9a1546fefa 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_job_to_send_handler.py @@ -7,7 +7,7 @@ from ......messaging.responder import MockResponder from ......transport.inbound.receipt import MessageReceipt -from ...handlers import transaction_job_to_send_handler as handler +from ...handlers import transaction_job_to_send_handler as test_module from ...messages.transaction_job_to_send import TransactionJobToSend @@ -18,16 +18,16 @@ async def test_called(self): request_context.connection_record = async_mock.MagicMock() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.set_transaction_their_job = ( async_mock.CoroutineMock() ) request_context.message = TransactionJobToSend() request_context.connection_ready = True - handler_inst = handler.TransactionJobToSendHandler() + handler = test_module.TransactionJobToSendHandler() responder = MockResponder() - await handler_inst.handle(request_context, responder) + await handler.handle(request_context, responder) mock_tran_mgr.return_value.set_transaction_their_job.assert_called_once_with( request_context.message, request_context.message_receipt @@ -40,16 +40,40 @@ async def test_called_not_ready(self): request_context.connection_record = async_mock.MagicMock() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.set_transaction_their_job = ( async_mock.CoroutineMock() ) request_context.message = TransactionJobToSend() request_context.connection_ready = False - handler_inst = handler.TransactionJobToSendHandler() + handler = test_module.TransactionJobToSendHandler() responder = MockResponder() - with self.assertRaises(handler.HandlerException): - await handler_inst.handle(request_context, responder) + with self.assertRaises(test_module.HandlerException): + await handler.handle(request_context, responder) assert not responder.messages + + async def test_called_x(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + request_context.connection_record = async_mock.MagicMock() + + with async_mock.patch.object( + test_module, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.set_transaction_their_job = ( + async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + ) + request_context.message = TransactionJobToSend() + request_context.connection_ready = True + handler = test_module.TransactionJobToSendHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_tran_mgr.return_value.set_transaction_their_job.assert_called_once_with( + request_context.message, request_context.message_receipt + ) + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py index 2a4c5c636c..61c525e5f5 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_request_handler.py @@ -7,7 +7,7 @@ from ......messaging.responder import MockResponder from ......transport.inbound.receipt import MessageReceipt -from ...handlers import transaction_request_handler as handler +from ...handlers import transaction_request_handler as test_module from ...messages.transaction_request import TransactionRequest from ......connections.models.conn_record import ConnRecord @@ -18,7 +18,7 @@ async def test_called(self): request_context.message_receipt = MessageReceipt() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.receive_request = async_mock.CoroutineMock() request_context.message = TransactionRequest() @@ -26,9 +26,9 @@ async def test_called(self): connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" ) request_context.connection_ready = True - handler_inst = handler.TransactionRequestHandler() + handler = test_module.TransactionRequestHandler() responder = MockResponder() - await handler_inst.handle(request_context, responder) + await handler.handle(request_context, responder) mock_tran_mgr.return_value.receive_request.assert_called_once_with( request_context.message, request_context.connection_record.connection_id @@ -41,14 +41,38 @@ async def test_called_not_ready(self): request_context.connection_record = async_mock.MagicMock() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.receive_request = async_mock.CoroutineMock() request_context.message = TransactionRequest() request_context.connection_ready = False - handler_inst = handler.TransactionRequestHandler() + handler = test_module.TransactionRequestHandler() responder = MockResponder() - with self.assertRaises(handler.HandlerException): - await handler_inst.handle(request_context, responder) + with self.assertRaises(test_module.HandlerException): + await handler.handle(request_context, responder) assert not responder.messages + + async def test_called_x(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + + with async_mock.patch.object( + test_module, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_request = async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + request_context.message = TransactionRequest() + request_context.connection_record = ConnRecord( + connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" + ) + request_context.connection_ready = True + handler = test_module.TransactionRequestHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_tran_mgr.return_value.receive_request.assert_called_once_with( + request_context.message, request_context.connection_record.connection_id + ) + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py index b91f613de4..e0e9ccbcde 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/handlers/tests/test_transaction_resend_handler.py @@ -7,7 +7,7 @@ from ......messaging.responder import MockResponder from ......transport.inbound.receipt import MessageReceipt -from ...handlers import transaction_resend_handler as handler +from ...handlers import transaction_resend_handler as test_module from ...messages.transaction_resend import TransactionResend from ......connections.models.conn_record import ConnRecord @@ -18,7 +18,7 @@ async def test_called(self): request_context.message_receipt = MessageReceipt() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.receive_transaction_resend = ( async_mock.CoroutineMock() @@ -28,9 +28,9 @@ async def test_called(self): connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" ) request_context.connection_ready = True - handler_inst = handler.TransactionResendHandler() + handler = test_module.TransactionResendHandler() responder = MockResponder() - await handler_inst.handle(request_context, responder) + await handler.handle(request_context, responder) mock_tran_mgr.return_value.receive_transaction_resend.assert_called_once_with( request_context.message, request_context.connection_record.connection_id @@ -43,16 +43,42 @@ async def test_called_not_ready(self): request_context.connection_record = async_mock.MagicMock() with async_mock.patch.object( - handler, "TransactionManager", autospec=True + test_module, "TransactionManager", autospec=True ) as mock_tran_mgr: mock_tran_mgr.return_value.receive_transaction_resend = ( async_mock.CoroutineMock() ) request_context.message = TransactionResend() request_context.connection_ready = False - handler_inst = handler.TransactionResendHandler() + handler = test_module.TransactionResendHandler() responder = MockResponder() - with self.assertRaises(handler.HandlerException): - await handler_inst.handle(request_context, responder) + with self.assertRaises(test_module.HandlerException): + await handler.handle(request_context, responder) assert not responder.messages + + async def test_called_x(self): + request_context = RequestContext.test_context() + request_context.message_receipt = MessageReceipt() + + with async_mock.patch.object( + test_module, "TransactionManager", autospec=True + ) as mock_tran_mgr: + mock_tran_mgr.return_value.receive_transaction_resend = ( + async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + ) + request_context.message = TransactionResend() + request_context.connection_record = ConnRecord( + connection_id="b5dc1636-a19a-4209-819f-e8f9984d9897" + ) + request_context.connection_ready = True + handler = test_module.TransactionResendHandler() + responder = MockResponder() + await handler.handle(request_context, responder) + + mock_tran_mgr.return_value.receive_transaction_resend.assert_called_once_with( + request_context.message, request_context.connection_record.connection_id + ) + assert not responder.messages diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py index 358d7efad5..c7857987cb 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/manager.py @@ -222,25 +222,14 @@ async def create_endorse_response( # eventual transaction write transaction.messages_attach[0]["data"]["json"] = endorsed_msg - if signature: - signature_response = { - "message_id": transaction.messages_attach[0]["@id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signature": {endorser_did: signature}, - } - - else: - signature_response = { - "message_id": transaction.messages_attach[0]["@id"], - "context": TransactionRecord.SIGNATURE_CONTEXT, - "method": TransactionRecord.ADD_SIGNATURE, - "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, - "signature_type": TransactionRecord.SIGNATURE_TYPE, - "signature": {endorser_did: endorser_verkey}, - } + signature_response = { + "message_id": transaction.messages_attach[0]["@id"], + "context": TransactionRecord.SIGNATURE_CONTEXT, + "method": TransactionRecord.ADD_SIGNATURE, + "signer_goal_code": TransactionRecord.ENDORSE_TRANSACTION, + "signature_type": TransactionRecord.SIGNATURE_TYPE, + "signature": {endorser_did: signature or endorser_verkey}, + } transaction.signature_response.clear() transaction.signature_response.append(signature_response) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py index 2c2a293c92..0a47485308 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/routes.py @@ -1,6 +1,6 @@ """Endorse Transaction handling admin routes.""" +import json -from asyncio import shield from aiohttp import web from aiohttp_apispec import ( docs, @@ -8,30 +8,27 @@ querystring_schema, match_info_schema, ) -import json +from asyncio import shield from marshmallow import fields, validate from time import time from ....admin.request_context import AdminRequestContext -from .manager import TransactionManager -from .models.transaction_record import TransactionRecord, TransactionRecordSchema from ....connections.models.conn_record import ConnRecord - from ....indy.issuer import IndyIssuerError +from ....ledger.base import BaseLedger +from ....ledger.error import LedgerError from ....messaging.credential_definitions.util import CRED_DEF_SENT_RECORD_TYPE from ....messaging.models.openapi import OpenAPISchema from ....messaging.schemas.util import SCHEMA_SENT_RECORD_TYPE from ....messaging.valid import UUIDFour from ....messaging.models.base import BaseModelError - from ....storage.base import StorageRecord from ....storage.error import StorageError, StorageNotFoundError -from .transaction_jobs import TransactionJob - from ....wallet.base import BaseWallet -from ....ledger.base import BaseLedger -from ....ledger.error import LedgerError +from .manager import TransactionManager, TransactionManagerError +from .models.transaction_record import TransactionRecord, TransactionRecordSchema +from .transaction_jobs import TransactionJob class TransactionListSchema(OpenAPISchema): @@ -134,6 +131,8 @@ async def transactions_retrieve(request: web.BaseRequest): result = record.serialize() except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err + except BaseModelError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err return web.json_response(result) @@ -167,22 +166,19 @@ async def transaction_create_request(request: web.BaseRequest): try: async with context.session() as session: connection_record = await ConnRecord.retrieve_by_id(session, connection_id) - except StorageNotFoundError as err: - raise web.HTTPNotFound(reason=err.roll_up) from err - - try: - async with context.session() as session: transaction_record = await TransactionRecord.retrieve_by_id( session, transaction_id ) except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err + except BaseModelError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err session = await context.session() jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in " + reason="The transaction related jobs are not set up in " "connection metadata for this connection record" ) if "transaction_my_job" not in jobs.keys(): @@ -195,16 +191,16 @@ async def transaction_create_request(request: web.BaseRequest): reason='Ask the other agent to set up "transaction_my_job" ' ' in "transaction_jobs" in connection metadata for their connection record' ) - if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": + if jobs["transaction_my_job"] != TransactionJob.TRANSACTION_AUTHOR.name: raise web.HTTPForbidden(reason="Only a TRANSACTION_AUTHOR can create a request") transaction_mgr = TransactionManager(session) - - transaction_mgr = TransactionManager(session) - - (transaction_record, transaction_request) = await transaction_mgr.create_request( - transaction=transaction_record, connection_id=connection_id - ) + try: + transaction_record, transaction_request = await transaction_mgr.create_request( + transaction=transaction_record, connection_id=connection_id + ) + except (StorageError, TransactionManagerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err await outbound_handler( transaction_request, connection_id=connection_record.connection_id @@ -241,6 +237,7 @@ async def endorse_transaction_response(request: web.BaseRequest): if not wallet: raise web.HTTPForbidden(reason="No wallet available") + endorser_did_info = await wallet.get_public_did() if not endorser_did_info: raise web.HTTPForbidden( @@ -255,33 +252,36 @@ async def endorse_transaction_response(request: web.BaseRequest): transaction = await TransactionRecord.retrieve_by_id( session, transaction_id ) - except StorageNotFoundError as err: - raise web.HTTPNotFound(reason=err.roll_up) from err - - try: - async with context.session() as session: connection_record = await ConnRecord.retrieve_by_id( session, transaction.connection_id ) + except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err + except BaseModelError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + session = await context.session() jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in " + reason="The transaction related jobs are not set up in " "connection metadata for this connection record" ) - if jobs["transaction_my_job"] != "TRANSACTION_ENDORSER": + if jobs["transaction_my_job"] != TransactionJob.TRANSACTION_ENDORSER.name: raise web.HTTPForbidden( reason="Only a TRANSACTION_ENDORSER can endorse a transaction" ) transaction_mgr = TransactionManager(session) + transaction_json = transaction.messages_attach[0]["data"]["json"] ledger = context.inject(BaseLedger, required=False) - - transaction_json = transaction.messages_attach[0]["data"]["json"] + if not ledger: + reason = "No ledger available" + if not context.settings.get_value("wallet.type"): + reason += ": missing wallet-type?" + raise web.HTTPForbidden(reason=reason) async with ledger: try: @@ -291,17 +291,20 @@ async def endorse_transaction_response(request: web.BaseRequest): except (IndyIssuerError, LedgerError) as err: raise web.HTTPBadRequest(reason=err.roll_up) from err - ( - transaction, - endorsed_transaction_response, - ) = await transaction_mgr.create_endorse_response( - transaction=transaction, - state=TransactionRecord.STATE_TRANSACTION_ENDORSED, - endorser_did=endorser_did, - endorser_verkey=endorser_verkey, - endorsed_msg=endorsed_transaction_request, - signature=endorsed_transaction_request, - ) + try: + ( + transaction, + endorsed_transaction_response, + ) = await transaction_mgr.create_endorse_response( + transaction=transaction, + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + endorser_did=endorser_did, + endorser_verkey=endorser_verkey, + endorsed_msg=endorsed_transaction_request, + signature=endorsed_transaction_request, + ) + except (StorageError, TransactionManagerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err await outbound_handler( endorsed_transaction_response, connection_id=transaction.connection_id @@ -349,37 +352,38 @@ async def refuse_transaction_response(request: web.BaseRequest): transaction = await TransactionRecord.retrieve_by_id( session, transaction_id ) - except StorageNotFoundError as err: - raise web.HTTPNotFound(reason=err.roll_up) from err - - try: - async with context.session() as session: connection_record = await ConnRecord.retrieve_by_id( session, transaction.connection_id ) except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err + except BaseModelError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + session = await context.session() jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in " + reason="The transaction related jobs are not set up in " "connection metadata for this connection record" ) - if jobs["transaction_my_job"] != "TRANSACTION_ENDORSER": + if jobs["transaction_my_job"] != TransactionJob.TRANSACTION_ENDORSER.name: raise web.HTTPForbidden( reason="Only a TRANSACTION_ENDORSER can refuse a transaction" ) - transaction_mgr = TransactionManager(session) - ( - transaction, - refused_transaction_response, - ) = await transaction_mgr.create_refuse_response( - transaction=transaction, - state=TransactionRecord.STATE_TRANSACTION_REFUSED, - refuser_did=refuser_did, - ) + try: + transaction_mgr = TransactionManager(session) + ( + transaction, + refused_transaction_response, + ) = await transaction_mgr.create_refuse_response( + transaction=transaction, + state=TransactionRecord.STATE_TRANSACTION_REFUSED, + refuser_did=refuser_did, + ) + except (StorageError, TransactionManagerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err await outbound_handler( refused_transaction_response, connection_id=transaction.connection_id @@ -415,35 +419,36 @@ async def cancel_transaction(request: web.BaseRequest): transaction = await TransactionRecord.retrieve_by_id( session, transaction_id ) - except StorageNotFoundError as err: - raise web.HTTPNotFound(reason=err.roll_up) from err - - try: - async with context.session() as session: connection_record = await ConnRecord.retrieve_by_id( session, transaction.connection_id ) except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err + except BaseModelError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + session = await context.session() jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in " + reason="The transaction related jobs are not set up in " "connection metadata for this connection record" ) - if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": + if jobs["transaction_my_job"] != TransactionJob.TRANSACTION_AUTHOR.name: raise web.HTTPForbidden( reason="Only a TRANSACTION_AUTHOR can cancel a transaction" ) transaction_mgr = TransactionManager(session) - ( - transaction, - cancelled_transaction_response, - ) = await transaction_mgr.cancel_transaction( - transaction=transaction, state=TransactionRecord.STATE_TRANSACTION_CANCELLED - ) + try: + ( + transaction, + cancelled_transaction_response, + ) = await transaction_mgr.cancel_transaction( + transaction=transaction, state=TransactionRecord.STATE_TRANSACTION_CANCELLED + ) + except (StorageError, TransactionManagerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err await outbound_handler( cancelled_transaction_response, connection_id=transaction.connection_id @@ -479,35 +484,36 @@ async def transaction_resend(request: web.BaseRequest): transaction = await TransactionRecord.retrieve_by_id( session, transaction_id ) - except StorageNotFoundError as err: - raise web.HTTPNotFound(reason=err.roll_up) from err - - try: - async with context.session() as session: connection_record = await ConnRecord.retrieve_by_id( session, transaction.connection_id ) except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err + except BaseModelError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + session = await context.session() jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in " + reason="The transaction related jobs are not set up in " "connection metadata for this connection record" ) - if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": + if jobs["transaction_my_job"] != TransactionJob.TRANSACTION_AUTHOR.name: raise web.HTTPForbidden( reason="Only a TRANSACTION_AUTHOR can resend a transaction" ) - transaction_mgr = TransactionManager(session) - ( - transaction, - resend_transaction_response, - ) = await transaction_mgr.transaction_resend( - transaction=transaction, state=TransactionRecord.STATE_TRANSACTION_RESENT - ) + try: + transaction_mgr = TransactionManager(session) + ( + transaction, + resend_transaction_response, + ) = await transaction_mgr.transaction_resend( + transaction=transaction, state=TransactionRecord.STATE_TRANSACTION_RESENT + ) + except (StorageError, TransactionManagerError) as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err await outbound_handler( resend_transaction_response, connection_id=transaction.connection_id @@ -583,24 +589,22 @@ async def transaction_write(request: web.BaseRequest): transaction = await TransactionRecord.retrieve_by_id( session, transaction_id ) - except StorageNotFoundError as err: - raise web.HTTPNotFound(reason=err.roll_up) from err - - try: - async with context.session() as session: connection_record = await ConnRecord.retrieve_by_id( session, transaction.connection_id ) except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err + except BaseModelError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + session = await context.session() jobs = await connection_record.metadata_get(session, "transaction_jobs") if not jobs: raise web.HTTPForbidden( - reason="The transaction related jobs are not setup in " + reason="The transaction related jobs are not set up in " "connection metadata for this connection record" ) - if jobs["transaction_my_job"] != "TRANSACTION_AUTHOR": + if jobs["transaction_my_job"] != TransactionJob.TRANSACTION_AUTHOR.name: raise web.HTTPForbidden( reason="Only a TRANSACTION_AUTHOR can write a transaction to the ledger" ) @@ -627,18 +631,12 @@ async def transaction_write(request: web.BaseRequest): except (IndyIssuerError, LedgerError) as err: raise web.HTTPBadRequest(reason=err.roll_up) from err - print("After writing to ledger:") ledger_response = json.loads(ledger_response_json) - print("ledger_response:", ledger_response) - message_attach = json.loads(transaction.messages_attach[0]["data"]["json"]) - print("message_attach:", message_attach) # write the wallet non-secrets record # TODO refactor this code (duplicated from ledger.indy.py) - print("ledger txn type:", ledger_response["result"]["txn"]["type"]) if ledger_response["result"]["txn"]["type"] == "101": # schema transaction - print("Adding schema record ...") schema_id = ledger_response["result"]["txnMetadata"]["txnId"] schema_id_parts = schema_id.split(":") public_did = ledger_response["result"]["txn"]["metadata"]["from"] @@ -650,16 +648,13 @@ async def transaction_write(request: web.BaseRequest): "epoch": str(int(time())), } record = StorageRecord(SCHEMA_SENT_RECORD_TYPE, schema_id, schema_tags) - print("Adding storage record:", record) # TODO refactor this code? async with ledger: storage = ledger.get_indy_storage() await storage.add_record(record) - print(">>> done") elif ledger_response["result"]["txn"]["type"] == "102": # cred def transaction - print("Adding cred def record ...") async with ledger: try: schema_seq_no = str(ledger_response["result"]["txn"]["data"]["ref"]) @@ -667,8 +662,6 @@ async def transaction_write(request: web.BaseRequest): except (IndyIssuerError, LedgerError) as err: raise web.HTTPBadRequest(reason=err.roll_up) from err - print("schema_response:", schema_response) - schema_id = schema_response["id"] schema_id_parts = schema_id.split(":") public_did = ledger_response["result"]["txn"]["metadata"]["from"] @@ -685,12 +678,10 @@ async def transaction_write(request: web.BaseRequest): record = StorageRecord( CRED_DEF_SENT_RECORD_TYPE, credential_definition_id, cred_def_tags ) - print("Adding storage record:", record) # TODO refactor this code? async with ledger: storage = ledger.get_indy_storage() await storage.add_record(record) - print(">>> done") else: # TODO unknown ledger transaction type, just ignore for now ... @@ -698,9 +689,14 @@ async def transaction_write(request: web.BaseRequest): # update the final transaction status transaction_mgr = TransactionManager(session) - tx_completed = await transaction_mgr.complete_transaction(transaction=transaction) + try: + tx_completed = await transaction_mgr.complete_transaction( + transaction=transaction + ) + except StorageError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err - return web.json_response(tx_completed.__dict__) + return web.json_response(tx_completed.serialize()) async def register(app: web.Application): diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py index 16f8e3a5a8..7ea0f5df3d 100644 --- a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_manager.py @@ -1,39 +1,54 @@ +import uuid + +from aiohttp import web from asynctest import TestCase as AsyncTestCase from asynctest import mock as async_mock + +from .....cache.base import BaseCache +from .....cache.in_memory import InMemoryCache +from .....connections.models.conn_record import ConnRecord from .....core.in_memory import InMemoryProfile -from .....wallet.in_memory import InMemoryWallet +from .....storage.error import StorageNotFoundError from ..manager import TransactionManager, TransactionManagerError from ..models.transaction_record import TransactionRecord -from .....connections.models.conn_record import ConnRecord from ..messages.messages_attach import MessagesAttach +from ..transaction_jobs import TransactionJob from ..messages.transaction_request import TransactionRequest -import uuid class TestTransactionManager(AsyncTestCase): async def setUp(self): - self.session = InMemoryProfile.test_session() - self.test_messages_attach = """{ - "endorser": "DJGEjaMunDtFtBVrn1qJMT", - "identifier": "C3nJhruVc7feyB6ckJwhi2", - "operation": { - "data": { - "attr_names": ["score"], - "name": "prefs", - "version": "1.0" - }, - "type": "101" - }, - "protocolVersion": 2, - "reqId": 1613463373859595201, - "signatures": { - "C3nJhruVc7feyB6ckJwhi2": "2iNTeFy44WK9zpsPfcwfu489aHWroYh3v8mme9tPyNKncrk1tVbWKNU4zFvLAbSBwHWxShQSJrhRgoxwaehCaz2j" - } - }""" + sigs = [ + ( + "2iNTeFy44WK9zpsPfcwfu489aHWroYh3v8mme9tPyNKn" + "crk1tVbWKNU4zFvLAbSBwHWxShQSJrhRgoxwaehCaz2j" + ), + ( + "3hPr2WgAixcXQRQfCZKnmpY7SkQyQW4cegX7QZMPv6Fv" + "sNRFV7yW21VaFC5CA3Aze264dkHjX4iZ1495am8fe1qZ" + ), + ] + self.test_messages_attach = f"""{{ + "endorser": "DJGEjaMunDtFtBVrn1qJMT", + "identifier": "C3nJhruVc7feyB6ckJwhi2", + "operation": {{ + "data": {{ + "attr_names": ["score"], + "name": "prefs", + "version": "1.0" + }}, + "type": "101" + }}, + "protocolVersion": 2, + "reqId": 1613463373859595201, + "signatures": {{ + "C3nJhruVc7feyB6ckJwhi2": {sigs[0]} + }} + }}""" self.test_expires_time = "1597708800" self.test_connection_id = "3fa85f64-5717-4562-b3fc-2c963f66afa6" @@ -41,43 +56,43 @@ async def setUp(self): self.test_author_transaction_id = "3fa85f64-5717-4562-b3fc-2c963f66afa7" self.test_endorser_transaction_id = "3fa85f64-5717-4562-b3fc-2c963f66afa8" - self.test_endorsed_message = """{ - "endorser": "DJGEjaMunDtFtBVrn1qJMT", - "identifier": "C3nJhruVc7feyB6ckJwhi2", - "operation": { - "data": { - "attr_names": ["score"], - "name": "prefs", - "version": "1.0" - }, - "type": "101" - }, - "protocolVersion": 2, - "reqId": 1613463373859595201, - "signatures": { - "C3nJhruVc7feyB6ckJwhi2": "2iNTeFy44WK9zpsPfcwfu489aHWroYh3v8mme9tPyNKncrk1tVbWKNU4zFvLAbSBwHWxShQSJrhRgoxwaehCaz2j", - "DJGEjaMunDtFtBVrn1qJMT": "3hPr2WgAixcXQRQfCZKnmpY7SkQyQW4cegX7QZMPv6FvsNRFV7yW21VaFC5CA3Aze264dkHjX4iZ1495am8fe1qZ" - } - }""" - - self.test_signature = """{ - "endorser": "DJGEjaMunDtFtBVrn1qJMT", - "identifier": "C3nJhruVc7feyB6ckJwhi2", - "operation": { - "data": { - "attr_names": ["score"], - "name": "prefs", - "version": "1.0" - }, - "type": "101" - }, - "protocolVersion": 2, - "reqId": 1613463373859595201, - "signatures": { - "C3nJhruVc7feyB6ckJwhi2": "2iNTeFy44WK9zpsPfcwfu489aHWroYh3v8mme9tPyNKncrk1tVbWKNU4zFvLAbSBwHWxShQSJrhRgoxwaehCaz2j", - "DJGEjaMunDtFtBVrn1qJMT": "3hPr2WgAixcXQRQfCZKnmpY7SkQyQW4cegX7QZMPv6FvsNRFV7yW21VaFC5CA3Aze264dkHjX4iZ1495am8fe1qZ" - } - }""" + self.test_endorsed_message = f"""{{ + "endorser": "DJGEjaMunDtFtBVrn1qJMT", + "identifier": "C3nJhruVc7feyB6ckJwhi2", + "operation": {{ + "data": {{ + "attr_names": ["score"], + "name": "prefs", + "version": "1.0" + }}, + "type": "101" + }}, + "protocolVersion": 2, + "reqId": 1613463373859595201, + "signatures": {{ + "C3nJhruVc7feyB6ckJwhi2": {sigs[0]}, + "DJGEjaMunDtFtBVrn1qJMT": {sigs[1]} + }} + }}""" + + self.test_signature = f"""{{ + "endorser": "DJGEjaMunDtFtBVrn1qJMT", + "identifier": "C3nJhruVc7feyB6ckJwhi2", + "operation": {{ + "data": {{ + "attr_names": ["score"], + "name": "prefs", + "version": "1.0" + }}, + "type": "101" + }}, + "protocolVersion": 2, + "reqId": 1613463373859595201, + "signatures": {{ + "C3nJhruVc7feyB6ckJwhi2": {sigs[0]}, + "DJGEjaMunDtFtBVrn1qJMT": {sigs[1]} + }} + }}""" self.test_endorser_did = "DJGEjaMunDtFtBVrn1qJMT" self.test_endorser_verkey = "3Dn1SJNPaCXcvvJvSbsFWP2xaCjMom3can8CQNhWrTRx" self.test_refuser_did = "AGDEjaMunDtFtBVrn1qPKQ" @@ -86,8 +101,12 @@ async def setUp(self): assert self.manager.session - async def test_create_record(self): + async def test_transaction_jobs(self): + author = TransactionJob.TRANSACTION_AUTHOR + endorser = TransactionJob.TRANSACTION_ENDORSER + assert author != endorser + async def test_create_record(self): with async_mock.patch.object( TransactionRecord, "save", autospec=True ) as save_record: @@ -114,8 +133,26 @@ async def test_create_record(self): transaction_record.state == TransactionRecord.STATE_TRANSACTION_CREATED ) - async def test_create_request_bad_state(self): + async def test_txn_rec_retrieve_by_connection_and_thread_caching(self): + async with self.session.profile.session() as sesn: + sesn.context.injector.bind_instance(BaseCache, InMemoryCache()) + txn_rec = TransactionRecord( + connection_id="123", + thread_id="456", + ) + await txn_rec.save(self.session) + await TransactionRecord.retrieve_by_connection_and_thread( + session=sesn, + connection_id="123", + thread_id="456", + ) # set in cache + await TransactionRecord.retrieve_by_connection_and_thread( + session=sesn, + connection_id="123", + thread_id="456", + ) # get from cache + async def test_create_request_bad_state(self): transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -128,7 +165,6 @@ async def test_create_request_bad_state(self): ) async def test_create_request(self): - transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -167,7 +203,6 @@ async def test_create_request(self): ) async def test_recieve_request(self): - mock_request = async_mock.MagicMock() mock_request.transaction_id = self.test_author_transaction_id mock_request.signature_request = { @@ -205,7 +240,6 @@ async def test_recieve_request(self): assert transaction_record.state == TransactionRecord.STATE_REQUEST_RECEIVED async def test_create_endorse_response_bad_state(self): - transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -223,7 +257,6 @@ async def test_create_endorse_response_bad_state(self): ) async def test_create_endorse_response(self): - transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -283,7 +316,6 @@ async def test_create_endorse_response(self): assert endorsed_transaction_response.endorser_did == self.test_endorser_did async def test_receive_endorse_response(self): - transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -327,8 +359,22 @@ async def test_receive_endorse_response(self): transaction_record.messages_attach[0]["data"]["json"] == self.test_signature ) - async def test_create_refuse_response_bad_state(self): + async def test_complete_transaction(self): + transaction_record = await self.manager.create_record( + messages_attach=self.test_messages_attach, + expires_time=self.test_expires_time, + ) + with async_mock.patch.object( + TransactionRecord, "save", autospec=True + ) as save_record: + transaction_record = await self.manager.complete_transaction( + transaction_record + ) + save_record.assert_called_once() + + assert transaction_record.state == TransactionRecord.STATE_TRANSACTION_COMPLETED + async def test_create_refuse_response_bad_state(self): transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -343,7 +389,6 @@ async def test_create_refuse_response_bad_state(self): ) async def test_create_refuse_response(self): - transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -392,7 +437,6 @@ async def test_create_refuse_response(self): assert refused_transaction_response.endorser_did == self.test_refuser_did async def test_receive_refuse_response(self): - transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -430,7 +474,6 @@ async def test_receive_refuse_response(self): assert transaction_record.thread_id == self.test_endorser_transaction_id async def test_cancel_transaction_bad_state(self): - transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -444,7 +487,6 @@ async def test_cancel_transaction_bad_state(self): ) async def test_cancel_transaction(self): - transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -475,7 +517,6 @@ async def test_cancel_transaction(self): ) async def test_receive_cancel_transaction(self): - author_transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -509,7 +550,6 @@ async def test_receive_cancel_transaction(self): ) async def test_transaction_resend_bad_state(self): - transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -523,7 +563,6 @@ async def test_transaction_resend_bad_state(self): ) async def test_transaction_resend(self): - transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -552,7 +591,6 @@ async def test_transaction_resend(self): ) async def test_receive_transaction_resend(self): - author_transaction_record = await self.manager.create_record( messages_attach=self.test_messages_attach, expires_time=self.test_expires_time, @@ -584,3 +622,49 @@ async def test_receive_transaction_resend(self): endorser_transaction_record.state == TransactionRecord.STATE_TRANSACTION_RESENT_RECEIEVED ) + + async def test_set_transaction_my_job(self): + conn_record = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + side_effect=[ + None, + {"meta": "data"}, + ] + ), + metadata_set=async_mock.CoroutineMock(), + ) + + for i in range(2): + await self.manager.set_transaction_my_job(conn_record, "Hello") + + async def test_set_transaction_their_job(self): + mock_job = async_mock.MagicMock() + mock_receipt = async_mock.MagicMock() + + with async_mock.patch.object( + ConnRecord, "retrieve_by_did", async_mock.CoroutineMock() + ) as mock_retrieve: + mock_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + side_effect=[ + None, + {"meta": "data"}, + ] + ), + metadata_set=async_mock.CoroutineMock(), + ) + + for i in range(2): + await self.manager.set_transaction_their_job(mock_job, mock_receipt) + + async def test_set_transaction_their_job_conn_not_found(self): + mock_job = async_mock.MagicMock() + mock_receipt = async_mock.MagicMock() + + with async_mock.patch.object( + ConnRecord, "retrieve_by_did", async_mock.CoroutineMock() + ) as mock_retrieve: + mock_retrieve.side_effect = StorageNotFoundError() + + with self.assertRaises(web.HTTPNotFound): + await self.manager.set_transaction_their_job(mock_job, mock_receipt) diff --git a/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_routes.py b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_routes.py new file mode 100644 index 0000000000..449865c386 --- /dev/null +++ b/aries_cloudagent/protocols/endorse_transaction/v1_0/tests/test_routes.py @@ -0,0 +1,1536 @@ +import json + +from asynctest import mock as async_mock, TestCase as AsyncTestCase + +from .....admin.request_context import AdminRequestContext +from .....connections.models.conn_record import ConnRecord +from .....core.in_memory import InMemoryProfile +from .....ledger.base import BaseLedger +from .....wallet.base import BaseWallet, DIDInfo + +from .. import routes as test_module +from ..models.transaction_record import TransactionRecord + + +TEST_DID = "LjgpST2rjsoxYegQDRm7EL" +SCHEMA_NAME = "bc-reg" +SCHEMA_TXN = 12 +SCHEMA_ID = f"{TEST_DID}:2:{SCHEMA_NAME}:1.0" +CRED_DEF_ID = f"{TEST_DID}:3:CL:12:tag1" + + +class TestEndorseTransactionRoutes(AsyncTestCase): + def setUp(self): + self.session_inject = {} + self.profile = InMemoryProfile.test_profile() + self.profile_injector = self.profile.context.injector + + self.ledger = async_mock.create_autospec(BaseLedger) + self.ledger.__aenter__ = async_mock.CoroutineMock(return_value=self.ledger) + self.ledger.txn_endorse = async_mock.CoroutineMock( + return_value=async_mock.MagicMock() + ) + self.ledger.txn_submit = async_mock.CoroutineMock( + return_value=json.dumps( + { + "result": { + "txn": {"type": "101", "metadata": {"from": TEST_DID}}, + "txnMetadata": {"txnId": SCHEMA_ID}, + } + } + ) + ) + self.ledger.get_indy_storage = async_mock.MagicMock( + return_value=async_mock.MagicMock(add_record=async_mock.CoroutineMock()) + ) + self.ledger.get_schema = async_mock.CoroutineMock( + return_value={"id": SCHEMA_ID, "...": "..."} + ) + self.profile_injector.bind_instance(BaseLedger, self.ledger) + + self.context = AdminRequestContext.test_context( + self.session_inject, profile=self.profile + ) + + self.request_dict = { + "context": self.context, + "outbound_message_router": async_mock.CoroutineMock(), + } + self.request = async_mock.MagicMock( + app={}, + match_info={}, + query={}, + __getitem__=lambda _, k: self.request_dict[k], + ) + + self.test_did = "sample-did" + + async def test_transactions_list(self): + with async_mock.patch.object( + TransactionRecord, "query", async_mock.CoroutineMock() + ) as mock_query, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_query.return_value = [ + async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + ] + await test_module.transactions_list(self.request) + + mock_response.assert_called_once_with({"results": [{"...": "..."}]}) + + async def test_transactions_list_x(self): + with async_mock.patch.object( + TransactionRecord, "query", async_mock.CoroutineMock() + ) as mock_query, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_query.side_effect = test_module.StorageError() + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.transactions_list(self.request) + + async def test_transactions_retrieve(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_retrieve, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + await test_module.transactions_retrieve(self.request) + + mock_response.assert_called_once_with({"...": "..."}) + + async def test_transactions_retrieve_not_found_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_retrieve: + mock_retrieve.side_effect = test_module.StorageNotFoundError() + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.transactions_retrieve(self.request) + + async def test_transactions_retrieve_base_model_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_retrieve: + mock_retrieve.side_effect = test_module.BaseModelError() + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.transactions_retrieve(self.request) + + async def test_transaction_create_request(self): + self.request.query = { + "conn_id": "dummy", + "tran_id": "dummy", + } + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_request=async_mock.CoroutineMock( + return_value=( + async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ), + async_mock.MagicMock(), + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + await test_module.transaction_create_request(self.request) + + mock_response.assert_called_once_with({"...": "..."}) + + async def test_transaction_create_request_not_found_x(self): + self.request.query = { + "conn_id": "dummy", + "tran_id": "dummy", + } + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve: + mock_conn_rec_retrieve.side_effect = test_module.StorageNotFoundError() + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.transaction_create_request(self.request) + + async def test_transaction_create_request_base_model_x(self): + self.request.query = { + "conn_id": "dummy", + "tran_id": "dummy", + } + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.side_effect = test_module.BaseModelError() + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.transaction_create_request(self.request) + + async def test_transaction_create_request_no_jobs_x(self): + self.request.query = { + "conn_id": "dummy", + "tran_id": "dummy", + } + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_request=async_mock.CoroutineMock( + return_value=( + async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ), + async_mock.MagicMock(), + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock(return_value=None) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.transaction_create_request(self.request) + + async def test_transaction_create_request_no_my_job_x(self): + self.request.query = { + "conn_id": "dummy", + "tran_id": "dummy", + } + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_request=async_mock.CoroutineMock( + return_value=( + async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ), + async_mock.MagicMock(), + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.transaction_create_request(self.request) + + async def test_transaction_create_request_no_their_job_x(self): + self.request.query = { + "conn_id": "dummy", + "tran_id": "dummy", + } + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_request=async_mock.CoroutineMock( + return_value=( + async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ), + async_mock.MagicMock(), + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.transaction_create_request(self.request) + + async def test_transaction_create_request_my_wrong_job_x(self): + self.request.query = { + "conn_id": "dummy", + "tran_id": "dummy", + } + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + "transaction_my_job": "a suffusion of yellow", + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.transaction_create_request(self.request) + + async def test_transaction_create_request_mgr_create_request_x(self): + self.request.query = { + "conn_id": "dummy", + "tran_id": "dummy", + } + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_request=async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.transaction_create_request(self.request) + + async def test_endorse_transaction_response(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_endorse_response=async_mock.CoroutineMock( + return_value=( + async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ), + async_mock.MagicMock(), + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + await test_module.endorse_transaction_response(self.request) + + mock_response.assert_called_once_with({"...": "..."}) + + async def test_endorse_transaction_response_no_wallet_x(self): + self.session_inject[BaseWallet] = None + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.endorse_transaction_response(self.request) + + async def test_endorse_transaction_response_no_endorser_did_info_x(self): + self.request.match_info = {"tran_id": "dummy"} + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock(return_value=None) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.endorse_transaction_response(self.request) + + async def test_endorse_transaction_response_not_found_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_txn_rec_retrieve.side_effect = test_module.StorageNotFoundError() + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.endorse_transaction_response(self.request) + + async def test_endorse_transaction_response_base_model_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.side_effect = test_module.BaseModelError() + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.endorse_transaction_response(self.request) + + async def test_endorse_transaction_response_no_jobs_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock(return_value=None) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.endorse_transaction_response(self.request) + + async def test_endorse_transaction_response_no_ledger_x(self): + self.request.match_info = {"tran_id": "dummy"} + self.context.injector.clear_binding(BaseLedger) + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_endorse_response=async_mock.CoroutineMock( + return_value=( + async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ), + async_mock.MagicMock(), + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.endorse_transaction_response(self.request) + + async def test_endorse_transaction_response_wrong_my_job_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.endorse_transaction_response(self.request) + + async def test_endorse_transaction_response_ledger_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + self.ledger.txn_endorse = async_mock.CoroutineMock( + side_effect=test_module.LedgerError() + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_endorse_response=async_mock.CoroutineMock( + return_value=( + async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ), + async_mock.MagicMock(), + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.endorse_transaction_response(self.request) + + async def test_endorse_transaction_response_txn_mgr_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_endorse_response=async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.endorse_transaction_response(self.request) + + async def test_refuse_transaction_response(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_refuse_response=async_mock.CoroutineMock( + return_value=( + async_mock.MagicMock( # transaction + connection_id="dummy", + serialize=async_mock.MagicMock(return_value={"...": "..."}), + ), + async_mock.MagicMock(), # refused_transaction_response + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + await test_module.refuse_transaction_response(self.request) + + mock_response.assert_called_once_with({"...": "..."}) + + async def test_refuse_transaction_response_no_wallet_x(self): + self.session_inject[BaseWallet] = None + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.refuse_transaction_response(self.request) + + async def test_refuse_transaction_response_no_endorser_did_info_x(self): + self.request.match_info = {"tran_id": "dummy"} + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock(return_value=None) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.refuse_transaction_response(self.request) + + async def test_refuse_transaction_response_not_found_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_txn_rec_retrieve.side_effect = test_module.StorageNotFoundError() + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.refuse_transaction_response(self.request) + + async def test_refuse_transaction_response_conn_base_model_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.side_effect = test_module.BaseModelError() + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.refuse_transaction_response(self.request) + + async def test_refuse_transaction_response_no_jobs_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock(return_value=None) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.refuse_transaction_response(self.request) + + async def test_refuse_transaction_response_wrong_my_job_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.refuse_transaction_response(self.request) + + async def test_refuse_transaction_response_txn_mgr_x(self): + self.request.match_info = {"tran_id": "dummy"} + + self.session_inject[BaseWallet] = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock( + return_value=DIDInfo("did", "verkey", {"meta": "data"}) + ) + ) + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + create_refuse_response=async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.refuse_transaction_response(self.request) + + async def test_cancel_transaction(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + cancel_transaction=async_mock.CoroutineMock( + return_value=( + async_mock.MagicMock( # transaction + connection_id="dummy", + serialize=async_mock.MagicMock(return_value={"...": "..."}), + ), + async_mock.MagicMock(), # refused_transaction_response + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + await test_module.cancel_transaction(self.request) + + mock_response.assert_called_once_with({"...": "..."}) + + async def test_cancel_transaction_not_found_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_txn_rec_retrieve.side_effect = test_module.StorageNotFoundError() + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.cancel_transaction(self.request) + + async def test_cancel_transaction_conn_rec_base_model_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.side_effect = test_module.BaseModelError() + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.cancel_transaction(self.request) + + async def test_cancel_transaction_no_jobs_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock(return_value=None) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.cancel_transaction(self.request) + + async def test_cancel_transaction_wrong_my_job_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.cancel_transaction(self.request) + + async def test_cancel_transaction_txn_mgr_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + cancel_transaction=async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.cancel_transaction(self.request) + + async def test_transaction_resend(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + transaction_resend=async_mock.CoroutineMock( + return_value=( + async_mock.MagicMock( # transaction + connection_id="dummy", + serialize=async_mock.MagicMock(return_value={"...": "..."}), + ), + async_mock.MagicMock(), # refused_transaction_response + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + await test_module.transaction_resend(self.request) + + mock_response.assert_called_once_with({"...": "..."}) + + async def test_transaction_resend_not_found_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_txn_rec_retrieve.side_effect = test_module.StorageNotFoundError() + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.transaction_resend(self.request) + + async def test_transaction_resend_conn_rec_base_model_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.side_effect = test_module.BaseModelError() + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.transaction_resend(self.request) + + async def test_transaction_resend_no_jobs_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock(return_value=None) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.transaction_resend(self.request) + + async def test_transaction_resend_my_wrong_job_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + "transaction_my_job": "a suffusion of yellow", + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.transaction_resend(self.request) + + async def test_transaction_resend_txn_mgr_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + transaction_resend=async_mock.CoroutineMock( + side_effect=test_module.TransactionManagerError() + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ) + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.transaction_resend(self.request) + + async def test_set_transaction_jobs(self): + self.request.match_info = {"conn_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + set_transaction_my_job=async_mock.CoroutineMock() + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ) + } + ) + ) + await test_module.set_transaction_jobs(self.request) + + mock_response.assert_called_once_with( + {"transaction_my_job": test_module.TransactionJob.TRANSACTION_AUTHOR.name} + ) + + async def test_set_transaction_jobs_not_found_x(self): + self.request.match_info = {"conn_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve: + mock_conn_rec_retrieve.side_effect = test_module.StorageNotFoundError() + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.set_transaction_jobs(self.request) + + async def test_set_transaction_jobs_base_model_x(self): + self.request.match_info = {"conn_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve: + mock_conn_rec_retrieve.side_effect = test_module.BaseModelError() + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.set_transaction_jobs(self.request) + + async def test_transaction_write_schema_txn(self): + self.request.match_info = {"tran_id": "dummy"} + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + complete_transaction=async_mock.CoroutineMock( + return_value=async_mock.MagicMock( # txn record + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}), + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + messages_attach=[ + {"data": {"json": json.dumps({"message": "attached"})}} + ], + ) + await test_module.transaction_write(self.request) + + mock_response.assert_called_once_with({"...": "..."}) + + async def test_transaction_write_not_found_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_txn_rec_retrieve.side_effect = test_module.StorageNotFoundError() + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.transaction_write(self.request) + + async def test_transaction_write_base_model_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_txn_rec_retrieve.side_effect = test_module.BaseModelError() + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.transaction_write(self.request) + + async def test_transaction_write_no_jobs_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock(return_value=None) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.transaction_write(self.request) + + async def test_transaction_write_my_wrong_job_x(self): + self.request.match_info = {"tran_id": "dummy"} + + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + "transaction_my_job": "a suffusion of yellow", + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.transaction_write(self.request) + + async def test_transaction_write_wrong_state_x(self): + self.request.match_info = {"tran_id": "dummy"} + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}), + state=TransactionRecord.STATE_TRANSACTION_CREATED, + messages_attach=[ + {"data": {"json": json.dumps({"message": "attached"})}} + ], + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.transaction_write(self.request) + + async def test_transaction_write_no_ledger_x(self): + self.request.match_info = {"tran_id": "dummy"} + self.context.injector.clear_binding(BaseLedger) + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}), + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + messages_attach=[ + {"data": {"json": json.dumps({"message": "attached"})}} + ], + ) + + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.transaction_write(self.request) + + async def test_transaction_write_ledger_txn_submit_x(self): + self.request.match_info = {"tran_id": "dummy"} + self.ledger.txn_submit = async_mock.CoroutineMock( + side_effect=test_module.LedgerError() + ) + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}), + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + messages_attach=[ + {"data": {"json": json.dumps({"message": "attached"})}} + ], + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.transaction_write(self.request) + + async def test_transaction_write_cred_def_txn(self): + self.request.match_info = {"tran_id": "dummy"} + self.ledger.txn_submit = async_mock.CoroutineMock( + return_value=json.dumps( + { + "result": { + "txn": { + "type": "102", + "metadata": {"from": TEST_DID}, + "data": {"ref": 1000}, + }, + "txnMetadata": {"txnId": SCHEMA_ID}, + } + } + ) + ) + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr, async_mock.patch.object( + test_module.web, "json_response" + ) as mock_response: + mock_txn_mgr.return_value = async_mock.MagicMock( + complete_transaction=async_mock.CoroutineMock( + return_value=async_mock.MagicMock( # txn record + serialize=async_mock.MagicMock(return_value={"...": "..."}) + ) + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}), + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + messages_attach=[ + {"data": {"json": json.dumps({"message": "attached"})}} + ], + ) + await test_module.transaction_write(self.request) + + mock_response.assert_called_once_with({"...": "..."}) + + async def test_transaction_write_ledger_cred_def_txn_ledger_get_schema_x(self): + self.request.match_info = {"tran_id": "dummy"} + self.ledger.txn_submit = async_mock.CoroutineMock( + return_value=json.dumps( + { + "result": { + "txn": { + "type": "102", + "metadata": {"from": TEST_DID}, + "data": {"ref": 1000}, + }, + "txnMetadata": {"txnId": SCHEMA_ID}, + } + } + ) + ) + self.ledger.get_schema = async_mock.CoroutineMock( + side_effect=test_module.LedgerError() + ) + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve: + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}), + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + messages_attach=[ + {"data": {"json": json.dumps({"message": "attached"})}} + ], + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.transaction_write(self.request) + + async def test_transaction_write_schema_txn_complete_x(self): + self.request.match_info = {"tran_id": "dummy"} + with async_mock.patch.object( + ConnRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_conn_rec_retrieve, async_mock.patch.object( + TransactionRecord, "retrieve_by_id", async_mock.CoroutineMock() + ) as mock_txn_rec_retrieve, async_mock.patch.object( + test_module, "TransactionManager", async_mock.MagicMock() + ) as mock_txn_mgr: + mock_txn_mgr.return_value = async_mock.MagicMock( + complete_transaction=async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ) + ) + mock_conn_rec_retrieve.return_value = async_mock.MagicMock( + metadata_get=async_mock.CoroutineMock( + return_value={ + "transaction_my_job": ( + test_module.TransactionJob.TRANSACTION_AUTHOR.name + ), + "transaction_their_job": ( + test_module.TransactionJob.TRANSACTION_ENDORSER.name + ), + } + ) + ) + mock_txn_rec_retrieve.return_value = async_mock.MagicMock( + serialize=async_mock.MagicMock(return_value={"...": "..."}), + state=TransactionRecord.STATE_TRANSACTION_ENDORSED, + messages_attach=[ + {"data": {"json": json.dumps({"message": "attached"})}} + ], + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.transaction_write(self.request) + + async def test_register(self): + mock_app = async_mock.MagicMock() + mock_app.add_routes = async_mock.MagicMock() + + await test_module.register(mock_app) + mock_app.add_routes.assert_called_once() + + async def test_post_process_routes(self): + mock_app = async_mock.MagicMock(_state={"swagger_dict": {"paths": {}}}) + test_module.post_process_routes(mock_app) + + assert "tags" in mock_app._state["swagger_dict"] From 95811344e4ab6fdde2f021f58a5e0e7163743761 Mon Sep 17 00:00:00 2001 From: Shaanjot Gill Date: Thu, 18 Mar 2021 16:49:10 -0700 Subject: [PATCH 134/243] alias fix Signed-off-by: Shaanjot Gill --- aries_cloudagent/protocols/didexchange/v1_0/manager.py | 3 ++- .../protocols/out_of_band/v1_0/messages/invitation.py | 6 +++--- aries_cloudagent/protocols/out_of_band/v1_0/routes.py | 2 +- .../protocols/out_of_band/v1_0/tests/test_manager.py | 2 +- aries_cloudagent/utils/outofband.py | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/aries_cloudagent/protocols/didexchange/v1_0/manager.py b/aries_cloudagent/protocols/didexchange/v1_0/manager.py index 4d3f707378..077508f3df 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/manager.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/manager.py @@ -422,7 +422,8 @@ async def receive_request( ) # null=manual; oob-manager calculated at conn rec creation conn_rec.their_label = request.label - conn_rec.alias = alias + if alias: + conn_rec.alias = alias conn_rec.their_did = request.did conn_rec.state = ConnRecord.State.REQUEST.rfc23 conn_rec.request_id = request._id diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py index a353443c85..3214e353fc 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py @@ -231,10 +231,10 @@ def validate_fields(self, data, **kwargs): "handshake_protocols or requests_attach or both" ) - # service = data.get("service") - # if not ((service and len(service) > 0)): + # services = data.get("services") + # if not ((services and len(services) > 0)): # raise ValidationError( - # "Model must include non-empty service array" + # "Model must include non-empty services array" # ) @pre_load diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/routes.py b/aries_cloudagent/protocols/out_of_band/v1_0/routes.py index 4ca9fcb083..f84af41309 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/routes.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/routes.py @@ -131,7 +131,7 @@ class InvitationReceiveQueryStringSchema(OpenAPISchema): class InvitationReceiveRequestSchema(InvitationMessageSchema): """Invitation request schema.""" - service = fields.Field() + services = fields.Field() @docs( diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py index 5dc7cc3eb7..84db8bd290 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/tests/test_manager.py @@ -877,7 +877,7 @@ async def test_receive_invitation_service_did(self): invi_msg_cls.deserialize.return_value = mock_oob_invi invi_rec = await self.manager.receive_invitation(mock_oob_invi) - assert invi_rec.invitation["service"] + assert invi_rec.invitation["services"] async def test_receive_invitation_attachment_x(self): self.session.context.update_settings({"public_invites": True}) diff --git a/aries_cloudagent/utils/outofband.py b/aries_cloudagent/utils/outofband.py index 03eb38bcac..4f16c66fa9 100644 --- a/aries_cloudagent/utils/outofband.py +++ b/aries_cloudagent/utils/outofband.py @@ -19,7 +19,7 @@ def serialize_outofband(message: AgentMessage, did: DIDInfo, endpoint: str) -> s """ body = message.serialize() # FIXME no support for routing keys - body["~service"] = { + body["~services"] = { "recipientKeys": [did.verkey], "routingKeys": [], "serviceEndpoint": endpoint, From 312439de9dabe23d346e8081ffddb23a265a1327 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Mon, 22 Mar 2021 06:41:35 -0700 Subject: [PATCH 135/243] Add github action to run bdd tests Signed-off-by: Ian Costanzo --- .github/workflows/integrationtests.yml | 25 ++++++++++ actions/run-indy-tails-server/action.yml | 20 ++++++++ actions/run-integration-tests/action.yml | 21 ++++++++ actions/run-von-network/action.yml | 20 ++++++++ demo/features/0036-issue-credential.feature | 5 +- demo/features/0037-present-proof.feature | 55 ++++++++++++++++----- demo/features/0160-connection.feature | 2 +- demo/features/0586-sign-transaction.feature | 23 ++++++++- demo/run_bdd | 4 +- demo/runners/support/agent.py | 12 +++-- docker/Dockerfile.bdd | 3 +- 11 files changed, 165 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/integrationtests.yml create mode 100644 actions/run-indy-tails-server/action.yml create mode 100644 actions/run-integration-tests/action.yml create mode 100644 actions/run-von-network/action.yml diff --git a/.github/workflows/integrationtests.yml b/.github/workflows/integrationtests.yml new file mode 100644 index 0000000000..84e3929a4f --- /dev/null +++ b/.github/workflows/integrationtests.yml @@ -0,0 +1,25 @@ +name: acapy-integration-tests +on: + workflow_dispatch: + #schedule: + # - cron: "0 0 * * *" +defaults: + run: + shell: bash +jobs: + test: + runs-on: ubuntu-latest + #if: (github.event_name == 'schedule' && github.repository == 'hyperledger/aries-cloudagent-python') || (github.event_name != 'schedule') + steps: + - name: checkout-acapy + uses: actions/checkout@v2 + with: + path: acapy + - name: run-von-network + uses: ./acapy/actions/run-von-network + - name: run-indy-tails-server + uses: ./acapy/actions/run-indy-tails-server + - name: run-integration-tests + uses: ./acapy/actions/run-integration-tests + # with: + # TEST_SCOPE: "-t @T001-RFC0037" diff --git a/actions/run-indy-tails-server/action.yml b/actions/run-indy-tails-server/action.yml new file mode 100644 index 0000000000..98b4be9eac --- /dev/null +++ b/actions/run-indy-tails-server/action.yml @@ -0,0 +1,20 @@ +name: "Run Tails Server" +description: "Build and Run Indy Tails Server" +author: "iancostanzo@gmail.com" +runs: + using: "composite" + steps: + - name: checkout-indy-tails-server + run: git clone https://github.com/bcgov/indy-tails-server.git + shell: bash + - name: build-indy-tails-server + run: ./manage build + shell: bash + working-directory: indy-tails-server/docker + - name: run-indy-tails-server + run: ./manage start + shell: bash + working-directory: indy-tails-server/docker +branding: + icon: "scissors" + color: "purple" diff --git a/actions/run-integration-tests/action.yml b/actions/run-integration-tests/action.yml new file mode 100644 index 0000000000..d03b49343e --- /dev/null +++ b/actions/run-integration-tests/action.yml @@ -0,0 +1,21 @@ +name: "Run Aca-Py Integration Tests" +description: "Run integration tests for Aca-Py" +author: "iancostanzo@gmail.com" +inputs: + TEST_SCOPE: + description: "Set of flags that defines the test scope" + required: false + default: "-t @GHA" +runs: + using: "composite" + steps: + - name: run-integration-tests-acapy + # run: LEDGER_URL=http://test.bcovrin.vonx.io PUBLIC_TAILS_URL=https://tails.vonx.io ./run_bdd ${{ inputs.TEST_SCOPE }} + run: ./run_bdd ${{ inputs.TEST_SCOPE }} + shell: bash + env: + NO_TTY: "1" + working-directory: acapy/demo +branding: + icon: "mic" + color: "purple" diff --git a/actions/run-von-network/action.yml b/actions/run-von-network/action.yml new file mode 100644 index 0000000000..dc945dcec4 --- /dev/null +++ b/actions/run-von-network/action.yml @@ -0,0 +1,20 @@ +name: "Run von-network" +description: "Build and run Indy network using von-network" +author: "iancostanzo@gmail.com" +runs: + using: "composite" + steps: + - name: checkout-von-network + run: git clone https://github.com/bcgov/von-network.git + shell: bash + - name: build-von-network + run: ./manage build + shell: bash + working-directory: von-network + - name: run-von-network + run: ./manage start + shell: bash + working-directory: von-network +branding: + icon: "cloud-lightning" + color: "blue" diff --git a/demo/features/0036-issue-credential.feature b/demo/features/0036-issue-credential.feature index d26f71d322..c22a9e0ded 100644 --- a/demo/features/0036-issue-credential.feature +++ b/demo/features/0036-issue-credential.feature @@ -1,6 +1,6 @@ Feature: RFC 0036 Aries agent issue credential - @T003-RFC0036 @AcceptanceTest @P1 @critical @Indy @RFC0036 + @T003-RFC0036 @GHA Scenario Outline: Issue a credential with the Issuer beginning with an offer Given we have "2" agents | name | role | capabilities | @@ -17,10 +17,9 @@ Feature: RFC 0036 Aries agent issue credential | --public-did --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | | --public-did --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | | --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | - | --public-did --mediation --multitenant | --mediation --multitenant | driverslicense | Data_DL_NormalizedValues | - @T004-RFC0036 @AcceptanceTest @P1 @critical @Indy @RFC0036 + @T004-RFC0036 @GHA Scenario Outline: Issue a credential with revocation, with the Issuer beginning with an offer, and then revoking the credential Given we have "2" agents | name | role | capabilities | diff --git a/demo/features/0037-present-proof.feature b/demo/features/0037-present-proof.feature index 2787663ed0..32825a1ed5 100644 --- a/demo/features/0037-present-proof.feature +++ b/demo/features/0037-present-proof.feature @@ -1,8 +1,26 @@ Feature: RFC 0037 Aries agent present proof - @T001-AIP10-RFC0037 @P1 @critical @AcceptanceTest @Indy @RFC0037 + @T001-RFC0037 @GHA Scenario Outline: Present Proof where the prover does not propose a presentation of the proof and is acknowledged - Given "3" agents + Given we have "2" agents + | name | role | capabilities | + | Faber | verifier | | + | Bob | prover | | + And "" and "Bob" have an existing connection + And "Bob" has an issued credential from "" + And "Faber" and "Bob" have an existing connection + When "Faber" sends a request for proof presentation to "Bob" + Then "Faber" has the proof verified + + Examples: + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | + | Faber | --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Faber | --public-did --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + + + @T001.1-RFC0037 + Scenario Outline: Present Proof where the prover does not propose a presentation of the proof and is acknowledged + Given we have "3" agents | name | role | capabilities | | Acme | issuer | | | Faber | verifier | | @@ -17,15 +35,31 @@ Feature: RFC 0037 Aries agent present proof | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | | Acme | --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | | Faber | --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | - | Acme | --public-did --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | - | Acme | --public-did --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | - | Acme | --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | | Acme | --public-did --mediation --multitenant | --mediation --multitenant | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | - @T002-AIP10-RFC0037 @P1 @critical @AcceptanceTest @Indy @RFC0037 + @T002-RFC0037 @GHA + Scenario Outline: Present Proof where the issuer revokes the credential and the proof fails + Given we have "2" agents + | name | role | capabilities | + | Faber | verifier | | + | Bob | prover | | + And "" and "Bob" have an existing connection + And "Bob" has an issued credential from "" + And "" revokes the credential + And "Faber" and "Bob" have an existing connection + When "Faber" sends a request for proof presentation to "Bob" + Then "Faber" has the proof verification fail + + Examples: + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | + | Faber | --revocation --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Faber | --revocation --public-did --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + + + @T002.1-RFC0037 Scenario Outline: Present Proof where the issuer revokes the credential and the proof fails - Given "3" agents + Given we have "3" agents | name | role | capabilities | | Acme | issuer | | | Faber | verifier | | @@ -40,7 +74,6 @@ Feature: RFC 0037 Aries agent present proof Examples: | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | | Acme | --revocation --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | - | Faber | --revocation --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | - | Acme | --revocation --public-did --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | - | Acme | --revocation --public-did --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | - | Acme | --revocation --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Faber | --revocation --public-did | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Acme | --revocation --public-did --mediation | | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | + | Acme | --revocation --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | DL_age_over_19 | diff --git a/demo/features/0160-connection.feature b/demo/features/0160-connection.feature index e470f3de0f..beccc4df34 100644 --- a/demo/features/0160-connection.feature +++ b/demo/features/0160-connection.feature @@ -1,6 +1,6 @@ Feature: RFC 0160 Aries agent connection functions - @T001-AIP10-RFC0160 @P1 @critical @AcceptanceTest @RFC0160 + @T001-RFC0160 @GHA Scenario Outline: establish a connection between two agents Given we have "2" agents | name | role | capabilities | diff --git a/demo/features/0586-sign-transaction.feature b/demo/features/0586-sign-transaction.feature index 2f06edcdb6..b12e31c8ae 100644 --- a/demo/features/0586-sign-transaction.feature +++ b/demo/features/0586-sign-transaction.feature @@ -1,6 +1,6 @@ Feature: RFC 0586 Aries sign (endorse) transactions functions - @T001-RFC0586 @P1 @critical @AcceptanceTest @RFC0586 + @T001-RFC0586 @GHA Scenario Outline: endorse a transaction and write to the ledger Given we have "2" agents | name | role | capabilities | @@ -23,3 +23,24 @@ Feature: RFC 0586 Aries sign (endorse) transactions functions | --did-exchange | --did-exchange | driverslicense | | --mediation | --mediation | driverslicense | | --multitenant | --multitenant | driverslicense | + + @T001.1-RFC0586 + Scenario Outline: endorse a transaction and write to the ledger + Given we have "2" agents + | name | role | capabilities | + | Acme | endorser | | + | Bob | author | | + And "Acme" and "Bob" have an existing connection + When "Acme" has a DID with role "ENDORSER" + And "Bob" has a DID with role "AUTHOR" + And "Acme" connection has job role "TRANSACTION_ENDORSER" + And "Bob" connection has job role "TRANSACTION_AUTHOR" + And "Bob" authors a schema transaction with + And "Bob" requests endorsement for the transaction + And "Acme" endorses the transaction + Then "Bob" can write the transaction to the ledger + And "Bob" has written the schema to the ledger + + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | + | --mediation --multitenant | --mediation --multitenant | driverslicense | diff --git a/demo/run_bdd b/demo/run_bdd index 9bac002496..8ce5297ea5 100755 --- a/demo/run_bdd +++ b/demo/run_bdd @@ -123,7 +123,7 @@ done AGENT_MODULE="agent_container" AGENT_PORT=8020 -AGENT_PORT_RANGE=8020-8099 +AGENT_PORT_RANGE=8020-8079 echo "Preparing agent image..." docker build -q -t faber-alice-demo -f ../docker/Dockerfile.demo .. || exit 1 @@ -225,7 +225,7 @@ if [ "$OSTYPE" = "msys" ]; then fi DOCKER=${DOCKER:-docker} -$DOCKER run --name $AGENT --rm -it ${DOCKER_OPTS} \ +$DOCKER run --name $AGENT --rm ${DOCKER_OPTS} \ --network=${DOCKER_NET} \ -p 0.0.0.0:$AGENT_PORT_RANGE:$AGENT_PORT_RANGE \ -v "/$(pwd)/../logs:/home/indy/logs" \ diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index 2f0c49f303..e17a169071 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -223,6 +223,7 @@ async def register_schema_and_creddef( log_json(json.dumps(schema_response), label="Schema:") schema_id = schema_response["schema_id"] log_msg("Schema ID:", schema_id) + await asyncio.sleep(2.0) # Create a cred def for the schema cred_def_tag = ( @@ -493,6 +494,7 @@ def _process(self, args, env, loop): stderr=subprocess.PIPE, env=env, encoding="utf-8", + close_fds=True, ) loop.run_in_executor( None, @@ -526,9 +528,10 @@ async def start_process(self, python_path: str = None, wait: bool = True): # start agent sub-process loop = asyncio.get_event_loop() - self.proc = await loop.run_in_executor( + future = loop.run_in_executor( None, self._process, agent_args, my_env, loop ) + self.proc = await asyncio.wait_for(future, 20, loop=loop) if wait: await asyncio.sleep(1.0) await self.detect_process() @@ -546,18 +549,16 @@ def _terminate(self): async def terminate(self): # close session to admin api - self.log("Shutting down admin api session") await self.client_session.close() # shut down web hooks first - self.log("Shutting down web hooks site") if self.webhook_site: await self.webhook_site.stop() await asyncio.sleep(0.5) # now shut down the agent - self.log("Shutting down agent") loop = asyncio.get_event_loop() if self.proc: - await loop.run_in_executor(None, self._terminate) + future = loop.run_in_executor(None, self._terminate) + result = await asyncio.wait_for(future, 10, loop=loop) async def listen_webhooks(self, webhook_port): self.webhook_port = webhook_port @@ -790,6 +791,7 @@ async def fetch_status(url: str, timeout: float, headers=None): status_code, status_text = await fetch_status( status_url, START_TIMEOUT, headers=headers ) + self.log(status_code, status_text) if not status_text: raise Exception( diff --git a/docker/Dockerfile.bdd b/docker/Dockerfile.bdd index eb4db18a53..0f101c06f0 100644 --- a/docker/Dockerfile.bdd +++ b/docker/Dockerfile.bdd @@ -2,8 +2,7 @@ FROM faber-alice-demo # Install bdd dependencies RUN pip3 install --no-cache-dir -r demo/requirements.behave.txt - -# ENTRYPOINT ["bash", "-c", "demo/ngrok-wait.sh \"$@\"", "--"] +# ENV PYTHONMALLOC debug WORKDIR ./demo RUN chmod a+w . ENTRYPOINT ["behave"] From a30c211814d39b63be0e5f815920d41ed4f9d7cb Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 22 Mar 2021 14:26:27 +0000 Subject: [PATCH 136/243] tentative admin plumbing for DIF cred get/list/delete Signed-off-by: sklump --- .../connections/models/conn_record.py | 8 +- .../connections/models/connection_target.py | 4 +- aries_cloudagent/holder/routes.py | 200 +++++++++++++++-- aries_cloudagent/holder/tests/test_routes.py | 203 +++++++++++++++++- aries_cloudagent/ledger/routes.py | 8 +- .../messaging/credential_definitions/util.py | 6 +- aries_cloudagent/messaging/models/base.py | 8 +- aries_cloudagent/messaging/schemas/util.py | 4 +- .../messaging/tests/test_valid.py | 37 +++- aries_cloudagent/messaging/valid.py | 46 +++- .../v1_0/messages/connection_invitation.py | 6 +- .../v1_0/models/connection_detail.py | 7 +- .../protocols/connections/v1_0/routes.py | 14 +- .../didexchange/v1_0/messages/request.py | 4 +- .../didexchange/v1_0/messages/response.py | 4 +- .../protocols/didexchange/v1_0/routes.py | 4 +- .../issue_credential/indy/cred_request.py | 4 +- .../v1_0/messages/credential_proposal.py | 11 +- .../protocols/issue_credential/v1_0/routes.py | 14 +- .../protocols/issue_credential/v2_0/routes.py | 8 +- .../out_of_band/v1_0/messages/invitation.py | 4 +- .../out_of_band/v1_0/messages/service.py | 4 +- .../present_proof/indy/proof_request.py | 6 +- .../models/issuer_rev_reg_record.py | 4 +- aries_cloudagent/storage/vc_holder/deser.py | 64 ++++++ .../storage/vc_holder/in_memory.py | 61 +----- aries_cloudagent/storage/vc_holder/indy.py | 63 +----- .../tests/test_in_memory_vc_holder.py | 19 +- .../storage/vc_holder/tests/test_vc_record.py | 38 +++- .../storage/vc_holder/vc_record.py | 116 ++++++++-- aries_cloudagent/wallet/routes.py | 12 +- 31 files changed, 718 insertions(+), 273 deletions(-) create mode 100644 aries_cloudagent/storage/vc_holder/deser.py diff --git a/aries_cloudagent/connections/models/conn_record.py b/aries_cloudagent/connections/models/conn_record.py index 4e44fb6bf0..4f37c3e298 100644 --- a/aries_cloudagent/connections/models/conn_record.py +++ b/aries_cloudagent/connections/models/conn_record.py @@ -9,7 +9,7 @@ from ...core.profile import ProfileSession from ...messaging.models.base_record import BaseRecord, BaseRecordSchema -from ...messaging.valid import INDY_DID, INDY_RAW_PUBLIC_KEY, UUIDFour +from ...messaging.valid import DID, INDY_RAW_PUBLIC_KEY, UUIDFour from ...protocols.connections.v1_0.message_types import ( CONNECTION_INVITATION, @@ -512,11 +512,9 @@ class Meta: connection_id = fields.Str( required=False, description="Connection identifier", example=UUIDFour.EXAMPLE ) - my_did = fields.Str( - required=False, description="Our DID for connection", **INDY_DID - ) + my_did = fields.Str(required=False, description="Our DID for connection", **DID) their_did = fields.Str( - required=False, description="Their DID for connection", **INDY_DID + required=False, description="Their DID for connection", **DID ) their_label = fields.Str( required=False, description="Their label for connection", example="Bob" diff --git a/aries_cloudagent/connections/models/connection_target.py b/aries_cloudagent/connections/models/connection_target.py index ade3f47392..4cdf67e558 100644 --- a/aries_cloudagent/connections/models/connection_target.py +++ b/aries_cloudagent/connections/models/connection_target.py @@ -5,7 +5,7 @@ from marshmallow import EXCLUDE, fields from ...messaging.models.base import BaseModel, BaseModelSchema -from ...messaging.valid import INDY_DID, INDY_RAW_PUBLIC_KEY +from ...messaging.valid import DID, INDY_RAW_PUBLIC_KEY class ConnectionTarget(BaseModel): @@ -53,7 +53,7 @@ class Meta: model_class = ConnectionTarget unknown = EXCLUDE - did = fields.Str(required=False, description="", **INDY_DID) + did = fields.Str(required=False, description="", **DID) endpoint = fields.Str( required=False, description="Connection endpoint", diff --git a/aries_cloudagent/holder/routes.py b/aries_cloudagent/holder/routes.py index b2f1ee0fa4..a3e30adc5b 100644 --- a/aries_cloudagent/holder/routes.py +++ b/aries_cloudagent/holder/routes.py @@ -3,7 +3,13 @@ import json from aiohttp import web -from aiohttp_apispec import docs, match_info_schema, querystring_schema, response_schema +from aiohttp_apispec import ( + docs, + match_info_schema, + querystring_schema, + request_schema, + response_schema, +) from marshmallow import fields from ..admin.request_context import AdminRequestContext @@ -12,6 +18,7 @@ from ..ledger.error import LedgerError from ..messaging.models.openapi import OpenAPISchema from ..messaging.valid import ( + ENDPOINT, INDY_CRED_DEF_ID, INDY_CRED_REV_ID, INDY_REV_REG_ID, @@ -21,6 +28,9 @@ NUM_STR_WHOLE, UUIDFour, ) +from ..storage.error import StorageError, StorageNotFoundError +from ..storage.vc_holder.base import VCHolder +from ..storage.vc_holder.vc_record import VCRecordSchema from ..wallet.error import WalletNotFoundError @@ -33,7 +43,7 @@ class AttributeMimeTypesResultSchema(OpenAPISchema): class CredBriefSchema(OpenAPISchema): - """Result schema with credential brief for a credential query.""" + """Result schema with credential brief for credential query.""" referent = fields.Str(description="Credential referent", example=UUIDFour.EXAMPLE) attrs = fields.Dict( @@ -54,7 +64,7 @@ class CredBriefSchema(OpenAPISchema): class CredBriefListSchema(OpenAPISchema): - """Result schema for a credential query.""" + """Result schema for credential query.""" results = fields.List(fields.Nested(CredBriefSchema())) @@ -79,6 +89,55 @@ class CredentialsListQueryStringSchema(OpenAPISchema): ) +class DIFCredentialsListRequestSchema(OpenAPISchema): + """Parameters and validators for DIF credentials request.""" + + contexts = fields.List( + fields.Str( + description="Credential context to match", + **ENDPOINT, + ), + required=False, + ) + types = fields.List( + fields.Str( + description="Credential type to match", + **ENDPOINT, + ), + required=False, + ) + schema_ids = fields.List( + fields.Str( + description="Credential schema identifier to match", + **ENDPOINT, + ), + required=False, + ) + issuer_id = fields.Str( + required=False, + description="Credential issuer identifier to match", + ) + subject_id = fields.Str( + required=False, + description="Subject identifier to match", + ) + tag_query = fields.Dict( + keys=fields.Str(description="Tag name"), + values=fields.Str(description="Tag value"), + required=False, + description="Tag filter", + ) + max_results = fields.Int( + strict=True, description="Maximum number of results to return", required=False + ) + + +class VCRecordListSchema(OpenAPISchema): + """Result schema for DIF credential query.""" + + results = fields.List(fields.Nested(VCRecordSchema())) + + class CredIdMatchInfoSchema(OpenAPISchema): """Path parameters and validators for request taking credential id.""" @@ -109,25 +168,24 @@ class CredRevokedResultSchema(OpenAPISchema): revoked = fields.Bool(description="Whether credential is revoked on the ledger") -@docs(tags=["credentials"], summary="Fetch a credential from wallet by id") +@docs(tags=["credentials"], summary="Fetch credential from wallet by id") @match_info_schema(CredIdMatchInfoSchema()) @response_schema(CredBriefSchema(), 200, description="") async def credentials_get(request: web.BaseRequest): """ - Request handler for retrieving a credential. + Request handler for retrieving credential. Args: request: aiohttp request object Returns: - The credential response + The credential brief """ context: AdminRequestContext = request["context"] - credential_id = request.match_info["credential_id"] - session = await context.session() + holder = session.inject(IndyHolder) try: credential = await holder.get_credential(credential_id) @@ -150,12 +208,11 @@ async def credentials_revoked(request: web.BaseRequest): request: aiohttp request object Returns: - The credential response + Empty production """ context: AdminRequestContext = request["context"] session = await context.session() - credential_id = request.match_info["credential_id"] fro = request.query.get("from") to = request.query.get("to") @@ -201,12 +258,12 @@ async def credentials_attr_mime_types_get(request: web.BaseRequest): context: AdminRequestContext = request["context"] session = await context.session() credential_id = request.match_info["credential_id"] - holder = session.inject(IndyHolder) + holder = session.inject(IndyHolder) return web.json_response(await holder.get_mime_type(credential_id)) -@docs(tags=["credentials"], summary="Remove a credential from the wallet by id") +@docs(tags=["credentials"], summary="Remove credential from wallet by id") @match_info_schema(CredIdMatchInfoSchema()) @response_schema(HolderModuleResponseSchema(), description="") async def credentials_remove(request: web.BaseRequest): @@ -217,11 +274,10 @@ async def credentials_remove(request: web.BaseRequest): request: aiohttp request object Returns: - The connection list response + Empty production """ context: AdminRequestContext = request["context"] - credential_id = request.match_info["credential_id"] session = await context.session() @@ -253,7 +309,6 @@ async def credentials_list(request: web.BaseRequest): """ context: AdminRequestContext = request["context"] session = await context.session() - start = request.query.get("start") count = request.query.get("count") @@ -274,6 +329,114 @@ async def credentials_list(request: web.BaseRequest): return web.json_response({"results": credentials}) +@docs( + tags=["credentials"], + summary="Fetch DIF credential from wallet by id", +) +@match_info_schema(CredIdMatchInfoSchema()) +@response_schema(VCRecordSchema(), 200, description="") +async def dif_cred_get(request: web.BaseRequest): + """ + Request handler for retrieving DIF credential. + + Args: + request: aiohttp request object + + Returns: + Verifiable credential record + + """ + context: AdminRequestContext = request["context"] + credential_id = request.match_info["credential_id"] + + session = await context.session() + holder = session.inject(VCHolder) + try: + vc_record = await holder.retrieve_credential_by_given_id(credential_id) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + except StorageError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + return web.json_response(vc_record) + + +@docs( + tags=["credentials"], + summary="Remove DIF credential from wallet by id", +) +@match_info_schema(CredIdMatchInfoSchema()) +@response_schema(HolderModuleResponseSchema(), 200, description="") +async def dif_cred_remove(request: web.BaseRequest): + """ + Request handler for deleting DIF credential. + + Args: + request: aiohttp request object + + Returns: + Empty production + + """ + context: AdminRequestContext = request["context"] + credential_id = request.match_info["credential_id"] + + session = await context.session() + holder = session.inject(VCHolder) + try: + vc_record = await holder.retrieve_credential_by_given_id(credential_id) + await holder.delete_credential(vc_record) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + except StorageError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + return web.json_response({}) + + +@docs( + tags=["credentials"], + summary="Fetch DIF credentials from wallet", +) +@request_schema(DIFCredentialsListRequestSchema()) +@querystring_schema(CredentialsListQueryStringSchema()) +@response_schema(VCRecordListSchema(), 200, description="") +async def dif_creds_list(request: web.BaseRequest): + """ + Request handler for searching DIF credential records. + + Args: + request: aiohttp request object + + Returns: + The credential record list response + + """ + context: AdminRequestContext = request["context"] + session = await context.session() + body = await request.json() + contexts = body.get("contexts") + types = body.get("types") + schema_ids = body.get("schema_ids") + issuer_id = body.get("issuer_id") + subject_id = body.get("subject_id") + tag_query = body.get("tag_query") + max_results = body.get("max_results") + + holder = session.inject(VCHolder) + try: + search = holder.search_credentials( + contexts, types, schema_ids, issuer_id, subject_id, tag_query + ) + records = await search.fetch(max_results) + except StorageNotFoundError as err: + raise web.HTTPNotFound(reason=err.roll_up) from err + except StorageError as err: + raise web.HTTPBadRequest(reason=err.roll_up) from err + + return web.json_response({"results": records}) + + async def register(app: web.Application): """Register routes.""" @@ -292,6 +455,13 @@ async def register(app: web.Application): ), web.delete("/credential/{credential_id}", credentials_remove), web.get("/credentials", credentials_list, allow_head=False), + web.get( + "/credential/dif/{credential_id}", + dif_cred_get, + allow_head=False, + ), + web.delete("/credential/dif/{credential_id}", dif_cred_remove), + web.get("/credentials/dif", dif_creds_list, allow_head=False), ] ) diff --git a/aries_cloudagent/holder/tests/test_routes.py b/aries_cloudagent/holder/tests/test_routes.py index 2ed108c749..34f9f85728 100644 --- a/aries_cloudagent/holder/tests/test_routes.py +++ b/aries_cloudagent/holder/tests/test_routes.py @@ -9,9 +9,28 @@ from ...admin.request_context import AdminRequestContext from ...indy.holder import IndyHolder from ...ledger.base import BaseLedger +from ...storage.vc_holder.base import VCHolder +from ...storage.vc_holder.vc_record import VCRecord from .. import routes as test_module +VC_RECORD = VCRecord( + contexts=[ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/v1/examples", + ], + types=[ + "VerifiableCredential", + "AlumniCredential", + ], + issuer_id="https://example.edu/issuers/565049", + subject_ids=["did:example:ebfeb1f712ebc6f1c276e12ec21"], + schema_ids=["https://example.org/examples/degree.json"], + value_json=json.dumps({"...": "..."}), + given_id="http://example.edu/credentials/3732", + cred_tags={"some": "tag"}, +) + class TestHolderRoutes(AsyncTestCase): def setUp(self): @@ -165,7 +184,7 @@ async def test_credentials_list(self): IndyHolder, async_mock.MagicMock( get_credentials=async_mock.CoroutineMock( - return_value={"hello": "world"} + return_value=[{"hello": "world"}] ) ), ) @@ -174,7 +193,7 @@ async def test_credentials_list(self): test_module.web, "json_response", async_mock.Mock() ) as json_response: result = await test_module.credentials_list(self.request) - json_response.assert_called_once_with({"results": {"hello": "world"}}) + json_response.assert_called_once_with({"results": [{"hello": "world"}]}) assert result is json_response.return_value async def test_credentials_list_x_holder(self): @@ -191,6 +210,186 @@ async def test_credentials_list_x_holder(self): with self.assertRaises(test_module.web.HTTPBadRequest): await test_module.credentials_list(self.request) + async def test_dif_cred_get(self): + self.request.match_info = {"credential_id": "dummy"} + self.context.injector.bind_instance( + VCHolder, + async_mock.MagicMock( + retrieve_credential_by_given_id=async_mock.CoroutineMock( + return_value=VC_RECORD + ) + ), + ) + + with async_mock.patch.object( + test_module.web, "json_response", async_mock.Mock() + ) as json_response: + result = await test_module.dif_cred_get(self.request) + json_response.assert_called_once_with(VC_RECORD) + + async def test_dif_cred_get_not_found_x(self): + self.request.match_info = {"credential_id": "dummy"} + self.context.injector.bind_instance( + VCHolder, + async_mock.MagicMock( + retrieve_credential_by_given_id=async_mock.CoroutineMock( + side_effect=test_module.StorageNotFoundError() + ) + ), + ) + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.dif_cred_get(self.request) + + async def test_dif_cred_get_storage_x(self): + self.request.match_info = {"credential_id": "dummy"} + self.context.injector.bind_instance( + VCHolder, + async_mock.MagicMock( + retrieve_credential_by_given_id=async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ) + ), + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.dif_cred_get(self.request) + + async def test_dif_cred_remove(self): + self.request.match_info = {"credential_id": "dummy"} + self.context.injector.bind_instance( + VCHolder, + async_mock.MagicMock( + retrieve_credential_by_given_id=async_mock.CoroutineMock( + return_value=VC_RECORD + ), + delete_credential=async_mock.CoroutineMock(return_value=None), + ), + ) + + with async_mock.patch.object( + test_module.web, "json_response", async_mock.Mock() + ) as json_response: + result = await test_module.dif_cred_remove(self.request) + json_response.assert_called_once_with({}) + assert result is json_response.return_value + + async def test_dif_cred_remove_not_found_x(self): + self.request.match_info = {"credential_id": "dummy"} + self.context.injector.bind_instance( + VCHolder, + async_mock.MagicMock( + retrieve_credential_by_given_id=async_mock.CoroutineMock( + side_effect=test_module.StorageNotFoundError() + ) + ), + ) + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.dif_cred_remove(self.request) + + async def test_dif_cred_remove_storage_x(self): + self.request.match_info = {"credential_id": "dummy"} + self.context.injector.bind_instance( + VCHolder, + async_mock.MagicMock( + retrieve_credential_by_given_id=async_mock.CoroutineMock( + return_value=VC_RECORD + ), + delete_credential=async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ), + ), + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.dif_cred_remove(self.request) + + async def test_dif_creds_list(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "types": [ + "VerifiableCredential", + "AlumniCredential", + ], + "issuer_id": "https://example.edu/issuers/565049", + "subject_id": "did:example:ebfeb1f712ebc6f1c276e12ec21", + "max_results": "1", + } + ) + self.context.injector.bind_instance( + VCHolder, + async_mock.MagicMock( + search_credentials=async_mock.MagicMock( + return_value=async_mock.MagicMock( + fetch=async_mock.CoroutineMock(return_value=[VC_RECORD]) + ) + ) + ), + ) + + with async_mock.patch.object( + test_module.web, "json_response", async_mock.Mock() + ) as json_response: + result = await test_module.dif_creds_list(self.request) + json_response.assert_called_once_with({"results": [VC_RECORD]}) + + async def test_dif_creds_list_not_found_x(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "types": [ + "VerifiableCredential", + "AlumniCredential", + ], + "issuer_id": "https://example.edu/issuers/565049", + "subject_id": "did:example:ebfeb1f712ebc6f1c276e12ec21", + "max_results": "1", + } + ) + self.context.injector.bind_instance( + VCHolder, + async_mock.MagicMock( + search_credentials=async_mock.MagicMock( + return_value=async_mock.MagicMock( + fetch=async_mock.CoroutineMock( + side_effect=test_module.StorageNotFoundError() + ) + ) + ) + ), + ) + + with self.assertRaises(test_module.web.HTTPNotFound): + await test_module.dif_creds_list(self.request) + + async def test_dif_creds_list_storage_x(self): + self.request.json = async_mock.CoroutineMock( + return_value={ + "types": [ + "VerifiableCredential", + "AlumniCredential", + ], + "issuer_id": "https://example.edu/issuers/565049", + "subject_id": "did:example:ebfeb1f712ebc6f1c276e12ec21", + "max_results": "1", + } + ) + self.context.injector.bind_instance( + VCHolder, + async_mock.MagicMock( + search_credentials=async_mock.MagicMock( + return_value=async_mock.MagicMock( + fetch=async_mock.CoroutineMock( + side_effect=test_module.StorageError() + ) + ) + ) + ), + ) + + with self.assertRaises(test_module.web.HTTPBadRequest): + await test_module.dif_creds_list(self.request) + async def test_register(self): mock_app = async_mock.MagicMock() mock_app.add_routes = async_mock.MagicMock() diff --git a/aries_cloudagent/ledger/routes.py b/aries_cloudagent/ledger/routes.py index f7c48592d8..44dafdbdff 100644 --- a/aries_cloudagent/ledger/routes.py +++ b/aries_cloudagent/ledger/routes.py @@ -7,7 +7,7 @@ from ..admin.request_context import AdminRequestContext from ..messaging.models.openapi import OpenAPISchema -from ..messaging.valid import ENDPOINT_TYPE, INDY_DID, INDY_RAW_PUBLIC_KEY, INT_EPOCH +from ..messaging.valid import ENDPOINT_TYPE, DID, INDY_RAW_PUBLIC_KEY, INT_EPOCH from ..storage.error import StorageError from ..wallet.error import WalletError, WalletNotFoundError @@ -73,7 +73,7 @@ class RegisterLedgerNymQueryStringSchema(OpenAPISchema): did = fields.Str( description="DID to register", required=True, - **INDY_DID, + **DID, ) verkey = fields.Str( description="Verification key", required=True, **INDY_RAW_PUBLIC_KEY @@ -95,13 +95,13 @@ class RegisterLedgerNymQueryStringSchema(OpenAPISchema): class QueryStringDIDSchema(OpenAPISchema): """Parameters and validators for query string with DID only.""" - did = fields.Str(description="DID of interest", required=True, **INDY_DID) + did = fields.Str(description="DID of interest", required=True, **DID) class QueryStringEndpointSchema(OpenAPISchema): """Parameters and validators for query string with DID and endpoint type.""" - did = fields.Str(description="DID of interest", required=True, **INDY_DID) + did = fields.Str(description="DID of interest", required=True, **DID) endpoint_type = fields.Str( description=( f"Endpoint type of interest (default '{EndpointType.ENDPOINT.w3c}')" diff --git a/aries_cloudagent/messaging/credential_definitions/util.py b/aries_cloudagent/messaging/credential_definitions/util.py index c722964d0c..b878ca0ac5 100644 --- a/aries_cloudagent/messaging/credential_definitions/util.py +++ b/aries_cloudagent/messaging/credential_definitions/util.py @@ -4,8 +4,8 @@ from ..models.openapi import OpenAPISchema from ..valid import ( + DID, INDY_CRED_DEF_ID, - INDY_DID, INDY_SCHEMA_ID, INDY_VERSION, ) @@ -25,7 +25,7 @@ class CredDefQueryStringSchema(OpenAPISchema): schema_issuer_did = fields.Str( description="Schema issuer DID", required=False, - **INDY_DID, + **DID, ) schema_name = fields.Str( description="Schema name", @@ -38,7 +38,7 @@ class CredDefQueryStringSchema(OpenAPISchema): issuer_did = fields.Str( description="Issuer DID", required=False, - **INDY_DID, + **DID, ) cred_def_id = fields.Str( description="Credential definition id", diff --git a/aries_cloudagent/messaging/models/base.py b/aries_cloudagent/messaging/models/base.py index 1370a43fff..c93debf8ed 100644 --- a/aries_cloudagent/messaging/models/base.py +++ b/aries_cloudagent/messaging/models/base.py @@ -125,9 +125,9 @@ def deserialize(cls, obj): schema = cls._get_schema_class()(unknown=EXCLUDE) try: return schema.loads(obj) if isinstance(obj, str) else schema.load(obj) - except ValidationError as e: + except (AttributeError, ValidationError) as err: LOGGER.exception(f"{cls.__name__} message validation error:") - raise BaseModelError(f"{cls.__name__} schema validation failed") from e + raise BaseModelError(f"{cls.__name__} schema validation failed") from err def serialize(self, as_string=False) -> dict: """ @@ -147,11 +147,11 @@ def serialize(self, as_string=False) -> dict: if as_string else schema.dump(self) ) - except ValidationError as e: + except (AttributeError, ValidationError) as err: LOGGER.exception(f"{self.__class__.__name__} message serialization error:") raise BaseModelError( f"{self.__class__.__name__} schema validation failed" - ) from e + ) from err def validate(self): """Validate a constructed model.""" diff --git a/aries_cloudagent/messaging/schemas/util.py b/aries_cloudagent/messaging/schemas/util.py index 9ca67fab4e..e7084afea1 100644 --- a/aries_cloudagent/messaging/schemas/util.py +++ b/aries_cloudagent/messaging/schemas/util.py @@ -3,7 +3,7 @@ from marshmallow import fields from ..models.openapi import OpenAPISchema -from ..valid import INDY_DID, INDY_SCHEMA_ID, INDY_VERSION +from ..valid import DID, INDY_SCHEMA_ID, INDY_VERSION class SchemaQueryStringSchema(OpenAPISchema): @@ -17,7 +17,7 @@ class SchemaQueryStringSchema(OpenAPISchema): schema_issuer_did = fields.Str( description="Schema issuer DID", required=False, - **INDY_DID, + **DID, ) schema_name = fields.Str( description="Schema name", diff --git a/aries_cloudagent/messaging/tests/test_valid.py b/aries_cloudagent/messaging/tests/test_valid.py index bfd8b9408d..a9b2a34d66 100644 --- a/aries_cloudagent/messaging/tests/test_valid.py +++ b/aries_cloudagent/messaging/tests/test_valid.py @@ -10,13 +10,13 @@ BASE64, BASE64URL, BASE64URL_NO_PAD, + DID, DID_KEY, DID_POSTURE, ENDPOINT, ENDPOINT_TYPE, INDY_CRED_DEF_ID, INDY_CRED_REV_ID, - INDY_DID, INDY_EXTRA_WQL, INDY_ISO8601_DATETIME, INDY_PREDICATE, @@ -27,6 +27,7 @@ INDY_VERSION, INDY_WQL, INT_EPOCH, + JSON_DUMP, NATURAL_NUM, NUM_STR_NATURAL, NUM_STR_WHOLE, @@ -99,20 +100,20 @@ def test_indy_rev_reg_size(self): INDY_REV_REG_SIZE["validate"](32767) INDY_REV_REG_SIZE["validate"](32768) - def test_indy_did(self): - non_indy_dids = [ + def test_decentralized_id(self): + non_dids = [ "Q4zqM7aXqm7gDQkUVLng9I", # 'I' not a base58 char "Q4zqM7aXqm7gDQkUVLng", # too short "Q4zqM7aXqm7gDQkUVLngZZZ", # too long "did:sov:Q4zqM7aXqm7gDQkUVLngZZZ", # too long - "did:other:Q4zqM7aXqm7gDQkUVLng9h", # specifies non-indy DID ] - for non_indy_did in non_indy_dids: + for non_did in non_dids: with self.assertRaises(ValidationError): - INDY_DID["validate"](non_indy_did) + DID["validate"](non_did) - INDY_DID["validate"]("Q4zqM7aXqm7gDQkUVLng9h") # TODO: accept non-indy dids - INDY_DID["validate"]("did:sov:Q4zqM7aXqm7gDQkUVLng9h") + DID["validate"]("Q4zqM7aXqm7gDQkUVLng9h") + DID["validate"]("did:sov:Q4zqM7aXqm7gDQkUVLng9h") + DID["validate"]("did:example:Q4zqM7aXqm7gDQkUVLng9h") def test_indy_raw_public_key(self): non_indy_raw_public_keys = [ @@ -495,3 +496,23 @@ def test_endpoint_type(self): ENDPOINT_TYPE["validate"]("Endpoint") ENDPOINT_TYPE["validate"]("Profile") ENDPOINT_TYPE["validate"]("LinkedDomains") + + def test_json_dump(self): + non_json_dumps = [ + "nope", + "[a, b, c]", + "{1, 2, 3}", + set(), + None, + "", + False, + ] + for non_json_dump in non_json_dumps: + with self.assertRaises(ValidationError): + JSON_DUMP["validate"](non_json_dump) + + JSON_DUMP["validate"](json.dumps({})) + JSON_DUMP["validate"](json.dumps({"a": "1234"})) + JSON_DUMP["validate"](json.dumps({"a": "1234", "b": {"$not": "0"}})) + JSON_DUMP["validate"](json.dumps(["zero", "one", "two"])) + JSON_DUMP["validate"](json.dumps("encoded string")) diff --git a/aries_cloudagent/messaging/valid.py b/aries_cloudagent/messaging/valid.py index 6e92233eaf..0359849f13 100644 --- a/aries_cloudagent/messaging/valid.py +++ b/aries_cloudagent/messaging/valid.py @@ -190,18 +190,18 @@ def __init__(self): ) -class IndyDID(Regexp): - """Validate value against indy DID.""" +class DecentralizedId(Regexp): + """Validate value against DID.""" EXAMPLE = "WgWxqztrNooG92RXvxSTWv" - PATTERN = rf"^(did:sov:)?[{B58}]{{21,22}}$" + PATTERN = rf"^(did:[^:]+:)?[{B58}]{{21,22}}$" def __init__(self): """Initializer.""" super().__init__( - IndyDID.PATTERN, - error="Value {input} is not an indy decentralized identifier (DID)", + DecentralizedId.PATTERN, + error="Value {input} is not a decentralized identifier (DID)", ) @@ -356,11 +356,11 @@ def __call__(self, value): """Validate input value.""" super().__call__(value or "") - message = "Value {input} is not a valid WQL query".format(input=value) + message = f"Value {value} is not a valid WQL query" try: json.loads(value) - except Exception: + except (json.JSONDecodeError, TypeError): raise ValidationError(message) return value @@ -384,11 +384,11 @@ def __call__(self, value): """Validate input value.""" super().__call__(value or "") - message = "Value {input} is not a valid extra WQL query".format(input=value) + message = f"Value {value} is not a valid extra WQL query" try: json.loads(value) - except Exception: + except (json.JSONDecodeError, TypeError): raise ValidationError(message) return value @@ -524,6 +524,31 @@ def __init__(self): ) +class JSONDump(Regexp): # using Regexp brings in nice visual validator cue + """Validate value as JSON dump.""" + + EXAMPLE = json.dumps({"abc": 123}) + + def __init__(self): + """Initializer.""" + + super().__init__( + ".*", + error="Value {input} is not a valid WQL query", + ) + + def __call__(self, value: str): + """Validate input value.""" + + message = f"Value {value} is not a valid JSON dump" + try: + json.loads(value) + except (json.JSONDecodeError, TypeError): + raise ValidationError(message) + + return value + + # Instances for marshmallow schema specification INT_EPOCH = {"validate": IntEpoch(), "example": IntEpoch.EXAMPLE} WHOLE_NUM = {"validate": WholeNumber(), "example": WholeNumber.EXAMPLE} @@ -538,7 +563,7 @@ def __init__(self): JWT = {"validate": JSONWebToken(), "example": JSONWebToken.EXAMPLE} DID_KEY = {"validate": DIDKey(), "example": DIDKey.EXAMPLE} DID_POSTURE = {"validate": DIDPosture(), "example": DIDPosture.EXAMPLE} -INDY_DID = {"validate": IndyDID(), "example": IndyDID.EXAMPLE} +DID = {"validate": DecentralizedId(), "example": DecentralizedId.EXAMPLE} INDY_RAW_PUBLIC_KEY = { "validate": IndyRawPublicKey(), "example": IndyRawPublicKey.EXAMPLE, @@ -566,3 +591,4 @@ def __init__(self): UUID4 = {"validate": UUIDFour(), "example": UUIDFour.EXAMPLE} ENDPOINT = {"validate": Endpoint(), "example": Endpoint.EXAMPLE} ENDPOINT_TYPE = {"validate": EndpointType(), "example": EndpointType.EXAMPLE} +JSON_DUMP = {"validate": JSONDump(), "example": JSONDump.EXAMPLE} diff --git a/aries_cloudagent/protocols/connections/v1_0/messages/connection_invitation.py b/aries_cloudagent/protocols/connections/v1_0/messages/connection_invitation.py index b81b05329e..907828cdba 100644 --- a/aries_cloudagent/protocols/connections/v1_0/messages/connection_invitation.py +++ b/aries_cloudagent/protocols/connections/v1_0/messages/connection_invitation.py @@ -6,7 +6,7 @@ from marshmallow import EXCLUDE, fields, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema -from .....messaging.valid import INDY_DID, INDY_RAW_PUBLIC_KEY +from .....messaging.valid import DID, INDY_RAW_PUBLIC_KEY from .....wallet.util import b64_to_bytes, bytes_to_b64 from ..message_types import CONNECTION_INVITATION, PROTOCOL_PACKAGE @@ -103,9 +103,7 @@ class Meta: label = fields.Str( required=False, description="Optional label for connection", example="Bob" ) - did = fields.Str( - required=False, description="DID for connection invitation", **INDY_DID - ) + did = fields.Str(required=False, description="DID for connection invitation", **DID) recipient_keys = fields.List( fields.Str(description="Recipient public key", **INDY_RAW_PUBLIC_KEY), data_key="recipientKeys", diff --git a/aries_cloudagent/protocols/connections/v1_0/models/connection_detail.py b/aries_cloudagent/protocols/connections/v1_0/models/connection_detail.py index cdbac51cd7..b20a8160d8 100644 --- a/aries_cloudagent/protocols/connections/v1_0/models/connection_detail.py +++ b/aries_cloudagent/protocols/connections/v1_0/models/connection_detail.py @@ -4,7 +4,7 @@ from .....connections.models.diddoc import DIDDoc from .....messaging.models.base import BaseModel, BaseModelSchema -from .....messaging.valid import INDY_DID +from .....messaging.valid import DID class DIDDocWrapper(fields.Field): @@ -91,10 +91,7 @@ class Meta: unknown = EXCLUDE did = fields.Str( - data_key="DID", - required=False, - description="DID for connection detail", - **INDY_DID + data_key="DID", required=False, description="DID for connection detail", **DID ) did_doc = DIDDocWrapper( data_key="DIDDoc", diff --git a/aries_cloudagent/protocols/connections/v1_0/routes.py b/aries_cloudagent/protocols/connections/v1_0/routes.py index 7ff4e8d721..a90fffb6d7 100644 --- a/aries_cloudagent/protocols/connections/v1_0/routes.py +++ b/aries_cloudagent/protocols/connections/v1_0/routes.py @@ -18,8 +18,8 @@ from ....messaging.models.base import BaseModelError from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import ( + DID, ENDPOINT, - INDY_DID, INDY_RAW_PUBLIC_KEY, UUIDFour, ) @@ -131,11 +131,11 @@ class ConnectionStaticRequestSchema(OpenAPISchema): """Request schema for a new static connection.""" my_seed = fields.Str(description="Seed to use for the local DID", required=False) - my_did = fields.Str(description="Local DID", required=False, **INDY_DID) + my_did = fields.Str(description="Local DID", required=False, **DID) their_seed = fields.Str( description="Seed to use for the remote DID", required=False ) - their_did = fields.Str(description="Remote DID", required=False, **INDY_DID) + their_did = fields.Str(description="Remote DID", required=False, **DID) their_verkey = fields.Str(description="Remote verification key", required=False) their_endpoint = fields.Str( description="URL endpoint for other party", required=False, **ENDPOINT @@ -149,12 +149,12 @@ class ConnectionStaticRequestSchema(OpenAPISchema): class ConnectionStaticResultSchema(OpenAPISchema): """Result schema for new static connection.""" - my_did = fields.Str(description="Local DID", required=True, **INDY_DID) + my_did = fields.Str(description="Local DID", required=True, **DID) mv_verkey = fields.Str( description="My verification key", required=True, **INDY_RAW_PUBLIC_KEY ) my_endpoint = fields.Str(description="My URL endpoint", required=True, **ENDPOINT) - their_did = fields.Str(description="Remote DID", required=True, **INDY_DID) + their_did = fields.Str(description="Remote DID", required=True, **DID) their_verkey = fields.Str( description="Remote verification key", required=True, **INDY_RAW_PUBLIC_KEY ) @@ -172,7 +172,7 @@ class ConnectionsListQueryStringSchema(OpenAPISchema): invitation_key = fields.Str( description="invitation key", required=False, **INDY_RAW_PUBLIC_KEY ) - my_did = fields.Str(description="My DID", required=False, **INDY_DID) + my_did = fields.Str(description="My DID", required=False, **DID) state = fields.Str( description="Connection state", required=False, @@ -180,7 +180,7 @@ class ConnectionsListQueryStringSchema(OpenAPISchema): {label for state in ConnRecord.State for label in state.value} ), ) - their_did = fields.Str(description="Their DID", required=False, **INDY_DID) + their_did = fields.Str(description="Their DID", required=False, **DID) their_role = fields.Str( description="Their role in the connection protocol", required=False, diff --git a/aries_cloudagent/protocols/didexchange/v1_0/messages/request.py b/aries_cloudagent/protocols/didexchange/v1_0/messages/request.py index f6fbc19976..64a55f2251 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/messages/request.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/messages/request.py @@ -7,7 +7,7 @@ AttachDecorator, AttachDecoratorSchema, ) -from .....messaging.valid import INDY_DID +from .....messaging.valid import DID from ..message_types import DIDX_REQUEST, PROTOCOL_PACKAGE @@ -60,7 +60,7 @@ class Meta: description="Label for DID exchange request", example="Request to connect with Bob", ) - did = fields.Str(description="DID of exchange", **INDY_DID) + did = fields.Str(description="DID of exchange", **DID) did_doc_attach = fields.Nested( AttachDecoratorSchema, required=False, diff --git a/aries_cloudagent/protocols/didexchange/v1_0/messages/response.py b/aries_cloudagent/protocols/didexchange/v1_0/messages/response.py index 5d739bab40..45e5e2f8ac 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/messages/response.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/messages/response.py @@ -7,7 +7,7 @@ AttachDecorator, AttachDecoratorSchema, ) -from .....messaging.valid import INDY_DID +from .....messaging.valid import DID from ..message_types import DIDX_RESPONSE, PROTOCOL_PACKAGE @@ -52,7 +52,7 @@ class Meta: model_class = DIDXResponse unknown = EXCLUDE - did = fields.Str(description="DID of exchange", **INDY_DID) + did = fields.Str(description="DID of exchange", **DID) did_doc_attach = fields.Nested( AttachDecoratorSchema, required=False, diff --git a/aries_cloudagent/protocols/didexchange/v1_0/routes.py b/aries_cloudagent/protocols/didexchange/v1_0/routes.py index 9ee97a302c..3fd81869d6 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/routes.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/routes.py @@ -17,7 +17,7 @@ from ....connections.models.conn_record import ConnRecord, ConnRecordSchema from ....messaging.models.base import BaseModelError from ....messaging.models.openapi import OpenAPISchema -from ....messaging.valid import ENDPOINT, INDY_DID, UUIDFour, UUID4 +from ....messaging.valid import DID, ENDPOINT, UUIDFour, UUID4 from ....storage.error import StorageError, StorageNotFoundError from ....wallet.error import WalletError @@ -42,7 +42,7 @@ class DIDXCreateRequestImplicitQueryStringSchema(OpenAPISchema): required=True, allow_none=False, description="Public DID to which to request connection", - **INDY_DID, + **DID, ) my_endpoint = fields.Str(description="My URL endpoint", required=False, **ENDPOINT) my_label = fields.Str( diff --git a/aries_cloudagent/protocols/issue_credential/indy/cred_request.py b/aries_cloudagent/protocols/issue_credential/indy/cred_request.py index 07dcef3453..d867e67909 100644 --- a/aries_cloudagent/protocols/issue_credential/indy/cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/indy/cred_request.py @@ -5,7 +5,7 @@ from marshmallow import EXCLUDE, fields from ....messaging.models.base import BaseModel, BaseModelSchema -from ....messaging.valid import INDY_CRED_DEF_ID, INDY_DID, NUM_STR_WHOLE +from ....messaging.valid import DID, INDY_CRED_DEF_ID, NUM_STR_WHOLE class IndyCredRequest(BaseModel): @@ -46,7 +46,7 @@ class Meta: prover_did = fields.Str( requred=True, description="Prover DID", - **INDY_DID, + **DID, ) cred_def_id = fields.Str( required=True, diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_proposal.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_proposal.py index 1b5cc23e71..6ffd9062cb 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_proposal.py @@ -3,12 +3,7 @@ from marshmallow import EXCLUDE, fields from .....messaging.agent_message import AgentMessage, AgentMessageSchema -from .....messaging.valid import ( - INDY_CRED_DEF_ID, - INDY_DID, - INDY_SCHEMA_ID, - INDY_VERSION, -) +from .....messaging.valid import DID, INDY_CRED_DEF_ID, INDY_SCHEMA_ID, INDY_VERSION from ..message_types import CREDENTIAL_PROPOSAL, PROTOCOL_PACKAGE @@ -84,8 +79,8 @@ class Meta: CredentialPreviewSchema, required=False, allow_none=False ) schema_id = fields.Str(required=False, allow_none=False, **INDY_SCHEMA_ID) - schema_issuer_did = fields.Str(required=False, allow_none=False, **INDY_DID) + schema_issuer_did = fields.Str(required=False, allow_none=False, **DID) schema_name = fields.Str(required=False, allow_none=False) schema_version = fields.Str(required=False, allow_none=False, **INDY_VERSION) cred_def_id = fields.Str(required=False, allow_none=False, **INDY_CRED_DEF_ID) - issuer_did = fields.Str(required=False, allow_none=False, **INDY_DID) + issuer_did = fields.Str(required=False, allow_none=False, **DID) diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/routes.py b/aries_cloudagent/protocols/issue_credential/v1_0/routes.py index 8fa0f37de0..a1b146c1b1 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/routes.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/routes.py @@ -19,8 +19,8 @@ from ....messaging.credential_definitions.util import CRED_DEF_TAGS from ....messaging.models.base import BaseModelError, OpenAPISchema from ....messaging.valid import ( + DID, INDY_CRED_DEF_ID, - INDY_DID, INDY_SCHEMA_ID, INDY_VERSION, UUIDFour, @@ -117,7 +117,7 @@ class V10CredentialCreateSchema(AdminAPIMessageTracingSchema): description="Schema identifier", required=False, **INDY_SCHEMA_ID ) schema_issuer_did = fields.Str( - description="Schema issuer DID", required=False, **INDY_DID + description="Schema issuer DID", required=False, **DID ) schema_name = fields.Str( description="Schema name", required=False, example="preferences" @@ -125,9 +125,7 @@ class V10CredentialCreateSchema(AdminAPIMessageTracingSchema): schema_version = fields.Str( description="Schema version", required=False, **INDY_VERSION ) - issuer_did = fields.Str( - description="Credential issuer DID", required=False, **INDY_DID - ) + issuer_did = fields.Str(description="Credential issuer DID", required=False, **DID) auto_remove = fields.Bool( description=( "Whether to remove the credential exchange record on completion " @@ -163,7 +161,7 @@ class V10CredentialProposalRequestSchemaBase(AdminAPIMessageTracingSchema): description="Schema identifier", required=False, **INDY_SCHEMA_ID ) schema_issuer_did = fields.Str( - description="Schema issuer DID", required=False, **INDY_DID + description="Schema issuer DID", required=False, **DID ) schema_name = fields.Str( description="Schema name", required=False, example="preferences" @@ -171,9 +169,7 @@ class V10CredentialProposalRequestSchemaBase(AdminAPIMessageTracingSchema): schema_version = fields.Str( description="Schema version", required=False, **INDY_VERSION ) - issuer_did = fields.Str( - description="Credential issuer DID", required=False, **INDY_DID - ) + issuer_did = fields.Str(description="Credential issuer DID", required=False, **DID) auto_remove = fields.Bool( description=( "Whether to remove the credential exchange record on completion " diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py index 5ecb5f48b8..eaf9378f4e 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py @@ -21,8 +21,8 @@ from ....messaging.decorators.attach_decorator import AttachDecorator from ....messaging.models.base import BaseModelError, OpenAPISchema from ....messaging.valid import ( + DID, INDY_CRED_DEF_ID, - INDY_DID, INDY_SCHEMA_ID, INDY_VERSION, UUIDFour, @@ -134,7 +134,7 @@ class V20CredFilterIndySchema(OpenAPISchema): description="Schema identifier", required=False, **INDY_SCHEMA_ID ) schema_issuer_did = fields.Str( - description="Schema issuer DID", required=False, **INDY_DID + description="Schema issuer DID", required=False, **DID ) schema_name = fields.Str( description="Schema name", required=False, example="preferences" @@ -142,9 +142,7 @@ class V20CredFilterIndySchema(OpenAPISchema): schema_version = fields.Str( description="Schema version", required=False, **INDY_VERSION ) - issuer_did = fields.Str( - description="Credential issuer DID", required=False, **INDY_DID - ) + issuer_did = fields.Str(description="Credential issuer DID", required=False, **DID) class V20CredFilterDIFSchema(OpenAPISchema): diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py index d7e536b380..1ab6c20628 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py @@ -20,7 +20,7 @@ AttachDecorator, AttachDecoratorSchema, ) -from .....messaging.valid import INDY_DID +from .....messaging.valid import DID from .....wallet.util import bytes_to_b64, b64_to_bytes from ....didcomm_prefix import DIDCommPrefix @@ -208,7 +208,7 @@ class Meta: ) service_blocks = fields.Nested(ServiceSchema, many=True) - service_dids = fields.List(fields.Str(description="Service DID", **INDY_DID)) + service_dids = fields.List(fields.Str(description="Service DID", **DID)) @validates_schema def validate_fields(self, data, **kwargs): diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/messages/service.py b/aries_cloudagent/protocols/out_of_band/v1_0/messages/service.py index 406a0e357f..4730f528c2 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/messages/service.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/messages/service.py @@ -5,7 +5,7 @@ from marshmallow import EXCLUDE, fields, post_dump from .....messaging.models.base import BaseModel, BaseModelSchema -from .....messaging.valid import INDY_DID, DID_KEY +from .....messaging.valid import DID, DID_KEY class Service(BaseModel): @@ -56,7 +56,7 @@ class Meta: _id = fields.Str(required=True, description="Service identifier", data_key="id") _type = fields.Str(required=True, description="Service type", data_key="type") - did = fields.Str(required=False, description="Service DID", **INDY_DID) + did = fields.Str(required=False, description="Service DID", **DID) recipient_keys = fields.List( fields.Str(description="Recipient public key", **DID_KEY), diff --git a/aries_cloudagent/protocols/present_proof/indy/proof_request.py b/aries_cloudagent/protocols/present_proof/indy/proof_request.py index 743b1bd246..05b7d047c5 100644 --- a/aries_cloudagent/protocols/present_proof/indy/proof_request.py +++ b/aries_cloudagent/protocols/present_proof/indy/proof_request.py @@ -4,8 +4,8 @@ from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import ( + DID, INDY_CRED_DEF_ID, - INDY_DID, INDY_PREDICATE, INDY_SCHEMA_ID, INDY_VERSION, @@ -20,7 +20,7 @@ class IndyProofReqPredSpecRestrictionsSchema(OpenAPISchema): description="Schema identifier", required=False, **INDY_SCHEMA_ID ) schema_issuer_did = fields.String( - description="Schema issuer (origin) DID", required=False, **INDY_DID + description="Schema issuer (origin) DID", required=False, **DID ) schema_name = fields.String( example="transcript", description="Schema name", required=False @@ -29,7 +29,7 @@ class IndyProofReqPredSpecRestrictionsSchema(OpenAPISchema): description="Schema version", required=False, **INDY_VERSION ) issuer_did = fields.String( - description="Credential issuer DID", required=False, **INDY_DID + description="Credential issuer DID", required=False, **DID ) cred_def_id = fields.String( description="Credential definition identifier", diff --git a/aries_cloudagent/revocation/models/issuer_rev_reg_record.py b/aries_cloudagent/revocation/models/issuer_rev_reg_record.py index 11be63d572..b8abd8cca4 100644 --- a/aries_cloudagent/revocation/models/issuer_rev_reg_record.py +++ b/aries_cloudagent/revocation/models/issuer_rev_reg_record.py @@ -19,8 +19,8 @@ from ...messaging.models.base_record import BaseRecord, BaseRecordSchema from ...messaging.valid import ( BASE58_SHA256_HASH, + DID, INDY_CRED_DEF_ID, - INDY_DID, INDY_REV_REG_ID, UUIDFour, ) @@ -419,7 +419,7 @@ class Meta: description="Error message", example="Revocation registry undefined", ) - issuer_did = fields.Str(required=False, description="Issuer DID", **INDY_DID) + issuer_did = fields.Str(required=False, description="Issuer DID", **DID) max_cred_num = fields.Int( required=False, description="Maximum number of credentials for revocation registry", diff --git a/aries_cloudagent/storage/vc_holder/deser.py b/aries_cloudagent/storage/vc_holder/deser.py new file mode 100644 index 0000000000..8d33ac1595 --- /dev/null +++ b/aries_cloudagent/storage/vc_holder/deser.py @@ -0,0 +1,64 @@ +"""De/serialization between StorageRecord and VCRecord.""" + +from aries_cloudagent.storage.record import StorageRecord + +from .vc_record import VCRecord + +VC_CRED_RECORD_TYPE = "vc_cred" + + +def load_credential(record: StorageRecord) -> VCRecord: + """Convert an Indy-SDK stored record into a VC record.""" + cred_tags = {} + contexts = [] + types = [] + schema_ids = [] + subject_ids = [] + issuer_id = None + given_id = None + for tagname, tagval in (record.tags or {}).items(): + if tagname.startswith("ctxt:"): + contexts.append(tagname[5:]) + elif tagname.startswith("type:"): + types.append(tagname[5:]) + elif tagname.startswith("schm:"): + schema_ids.append(tagname[5:]) + elif tagname.startswith("subj:"): + subject_ids.append(tagname[5:]) + elif tagname == "issuer_id": + issuer_id = tagval + elif tagname == "given_id": + given_id = tagval + else: + cred_tags[tagname] = tagval + return VCRecord( + contexts=contexts, + types=types, + schema_ids=schema_ids, + issuer_id=issuer_id, + subject_ids=subject_ids, + value_json=record.value, + given_id=given_id, + cred_tags=cred_tags, + record_id=record.id, + ) + + +def serialize_credential(cred: VCRecord) -> StorageRecord: + """Convert a VC record into an in-memory stored record.""" + tags = {} + for ctx_val in cred.contexts: + tags[f"ctxt:{ctx_val}"] = "1" + for type_val in cred.types: + tags[f"type:{type_val}"] = "1" + for schema_val in cred.schema_ids: + tags[f"schm:{schema_val}"] = "1" + for subj_id in cred.subject_ids: + tags[f"subj:{subj_id}"] = "1" + if cred.issuer_id: + tags["issuer_id"] = cred.issuer_id + if cred.given_id: + tags["given_id"] = cred.given_id + if cred.cred_tags: + tags.update(cred.cred_tags) + return StorageRecord(VC_CRED_RECORD_TYPE, cred.value_json, tags, cred.record_id) diff --git a/aries_cloudagent/storage/vc_holder/in_memory.py b/aries_cloudagent/storage/vc_holder/in_memory.py index 6f91bceecc..17e5277d1d 100644 --- a/aries_cloudagent/storage/vc_holder/in_memory.py +++ b/aries_cloudagent/storage/vc_holder/in_memory.py @@ -1,6 +1,5 @@ """Basic in-memory storage implementation of VC holder interface.""" -from aries_cloudagent.storage.record import StorageRecord from typing import Mapping, Sequence from ...core.in_memory import InMemoryProfile @@ -8,67 +7,9 @@ from ..in_memory import InMemoryStorage, InMemoryStorageSearch from .base import VCHolder, VCRecordSearch +from .deser import load_credential, serialize_credential, VC_CRED_RECORD_TYPE from .vc_record import VCRecord -VC_CRED_RECORD_TYPE = "vc_cred" - - -def load_credential(record: StorageRecord) -> VCRecord: - """Convert an in-memory stored record into a VC record.""" - tags = {} - contexts = [] - types = [] - schema_ids = [] - subject_ids = [] - issuer_id = None - given_id = None - for tagname, tagval in (record.tags or {}).items(): - if tagname.startswith("ctxt:"): - contexts.append(tagname[5:]) - elif tagname.startswith("type:"): - types.append(tagname[5:]) - elif tagname.startswith("schm:"): - schema_ids.append(tagname[5:]) - elif tagname.startswith("subj:"): - subject_ids.append(tagname[5:]) - elif tagname == "issuer_id": - issuer_id = tagval - elif tagname == "given_id": - given_id = tagval - else: - tags[tagname] = tagval - return VCRecord( - contexts=contexts, - types=types, - schema_ids=schema_ids, - issuer_id=issuer_id, - subject_ids=subject_ids, - value=record.value, - given_id=given_id, - tags=tags, - record_id=record.id, - ) - - -def serialize_credential(cred: VCRecord) -> StorageRecord: - """Convert a VC record into an in-memory stored record.""" - tags = {} - for ctx_val in cred.contexts: - tags[f"ctxt:{ctx_val}"] = "1" - for type_val in cred.types: - tags[f"type:{type_val}"] = "1" - for schema_val in cred.schema_ids: - tags[f"schm:{schema_val}"] = "1" - for subj_id in cred.subject_ids: - tags[f"subj:{subj_id}"] = "1" - if cred.issuer_id: - tags["issuer_id"] = cred.issuer_id - if cred.given_id: - tags["given_id"] = cred.given_id - if cred.tags: - tags.update(cred.tags) - return StorageRecord(VC_CRED_RECORD_TYPE, cred.value, tags, cred.record_id) - class InMemoryVCHolder(VCHolder): """Basic in-memory storage class.""" diff --git a/aries_cloudagent/storage/vc_holder/indy.py b/aries_cloudagent/storage/vc_holder/indy.py index 1f2dde25cc..1703c8743f 100644 --- a/aries_cloudagent/storage/vc_holder/indy.py +++ b/aries_cloudagent/storage/vc_holder/indy.py @@ -1,6 +1,5 @@ """Indy-SDK storage implementation of VC holder interface.""" -from aries_cloudagent.storage.record import StorageRecord from typing import Mapping, Sequence from ...indy.sdk.wallet_setup import IndyOpenWallet @@ -8,67 +7,9 @@ from ..indy import IndySdkStorage, IndySdkStorageSearch from .base import VCHolder, VCRecordSearch +from .deser import load_credential, serialize_credential, VC_CRED_RECORD_TYPE from .vc_record import VCRecord -VC_CRED_RECORD_TYPE = "vc_cred" - - -def load_credential(record: StorageRecord) -> VCRecord: - """Convert an Indy-SDK stored record into a VC record.""" - tags = {} - contexts = [] - types = [] - schema_ids = [] - subject_ids = [] - issuer_id = None - given_id = None - for tagname, tagval in (record.tags or {}).items(): - if tagname.startswith("ctxt:"): - contexts.append(tagname[5:]) - elif tagname.startswith("type:"): - types.append(tagname[5:]) - elif tagname.startswith("schm:"): - schema_ids.append(tagname[5:]) - elif tagname.startswith("subj:"): - subject_ids.append(tagname[5:]) - elif tagname == "issuer_id": - issuer_id = tagval - elif tagname == "given_id": - given_id = tagval - else: - tags[tagname] = tagval - return VCRecord( - contexts=contexts, - types=types, - schema_ids=schema_ids, - issuer_id=issuer_id, - subject_ids=subject_ids, - value=record.value, - given_id=given_id, - tags=tags, - record_id=record.id, - ) - - -def serialize_credential(cred: VCRecord) -> StorageRecord: - """Convert a VC record into an in-memory stored record.""" - tags = {} - for ctx_val in cred.contexts: - tags[f"ctxt:{ctx_val}"] = "1" - for type_val in cred.types: - tags[f"type:{type_val}"] = "1" - for schema_val in cred.schema_ids: - tags[f"schm:{schema_val}"] = "1" - for subj_id in cred.subject_ids: - tags[f"subj:{subj_id}"] = "1" - if cred.issuer_id: - tags["issuer_id"] = cred.issuer_id - if cred.given_id: - tags["given_id"] = cred.given_id - if cred.tags: - tags.update(cred.tags) - return StorageRecord(VC_CRED_RECORD_TYPE, cred.value, tags, cred.record_id) - class IndySdkVCHolder(VCHolder): """Indy-SDK in-memory storage class.""" @@ -129,7 +70,7 @@ def search_credentials( self, contexts: Sequence[str] = None, types: Sequence[str] = None, - schema_ids: str = None, + schema_ids: Sequence[str] = None, issuer_id: str = None, subject_id: str = None, tag_query: Mapping = None, diff --git a/aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py b/aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py index 8e1474cde5..17b214a859 100644 --- a/aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py +++ b/aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py @@ -25,7 +25,7 @@ def holder(): yield profile.inject(VCHolder) -def test_record(tags={}) -> VCRecord: +def test_record() -> VCRecord: return VCRecord( contexts=[ VC_CONTEXT, @@ -39,8 +39,8 @@ def test_record(tags={}) -> VCRecord: issuer_id=VC_ISSUER_ID, subject_ids=[VC_SUBJECT_ID], given_id=VC_GIVEN_ID, - tags={"tag": "value"}, - value="{}", + cred_tags={"tag": "value"}, + value_json="{}", ) @@ -80,8 +80,10 @@ async def test_search(self, holder: VCHolder): record = test_record() await holder.store_credential(record) - rows = await holder.search_credentials().fetch() + search = holder.search_credentials() + rows = await search.fetch() assert rows == [record] + await search.close() # test async iter and repr search = holder.search_credentials() @@ -90,14 +92,17 @@ async def test_search(self, holder: VCHolder): async for row in search: rows.append(row) assert rows == [record] + await search.close() - rows = await holder.search_credentials( + search = holder.search_credentials( contexts=[VC_CONTEXT], types=[VC_TYPE], schema_ids=[VC_SCHEMA_ID], subject_id=VC_SUBJECT_ID, issuer_id=VC_ISSUER_ID, - ).fetch() + tag_query={"tag": "value"}, + ) + rows = await search.fetch() assert rows == [record] rows = await holder.search_credentials(contexts=["other-context"]).fetch() @@ -114,3 +119,5 @@ async def test_search(self, holder: VCHolder): rows = await holder.search_credentials(issuer_id="other issuer").fetch() assert not rows + + await search.close() diff --git a/aries_cloudagent/storage/vc_holder/tests/test_vc_record.py b/aries_cloudagent/storage/vc_holder/tests/test_vc_record.py index cee883ded8..2b77f8cc93 100644 --- a/aries_cloudagent/storage/vc_holder/tests/test_vc_record.py +++ b/aries_cloudagent/storage/vc_holder/tests/test_vc_record.py @@ -1,3 +1,9 @@ +import json + +from asynctest import mock as async_mock, TestCase as AsyncTestCase + +from ....messaging.models.base import BaseModelError + from ..vc_record import VCRecord contexts = [ @@ -12,8 +18,8 @@ subject_ids = ["did:example:ebfeb1f712ebc6f1c276e12ec21"] schema_ids = ["https://example.org/examples/degree.json"] given_id = "http://example.edu/credentials/3732" -tags = {"tag": "value"} -value = "{}" +cred_tags = {"tag": "value"} +value_json = json.dumps({}) def test_record() -> VCRecord: @@ -23,13 +29,13 @@ def test_record() -> VCRecord: schema_ids=schema_ids, issuer_id=issuer_id, subject_ids=subject_ids, - value=value, + value_json=value_json, given_id=given_id, - tags=tags, + cred_tags=cred_tags, ) -class TestVCRecord: +class TestVCRecord(AsyncTestCase): def test_create(self): record = test_record() @@ -40,8 +46,8 @@ def test_create(self): assert record.issuer_id == issuer_id assert record.given_id == given_id assert record.record_id and type(record.record_id) is str - assert record.tags == tags - assert record.value == value + assert record.cred_tags == cred_tags + assert record.value_json == value_json def test_eq(self): record_a = test_record() @@ -53,3 +59,21 @@ def test_eq(self): assert record_a != object() record_b.contexts.clear() assert record_a != record_b + + record_a = test_record() + record_b = test_record() + record_b.record_id = record_a.record_id + value = {"a": 0, "b": 1} + record_a.value = json.dumps(value, separators=(",", ":")) + record_b.value = json.dumps(value, separators=(", ", ": ")) + assert record_a == record_b + + async def test_serde(self): + obj = test_record().serialize() + record = VCRecord.deserialize(obj) + assert type(record) == VCRecord + + obj_x = test_record() + obj_x.cred_tags = -1 # not a dict + with self.assertRaises(BaseModelError): + obj_x.serialize() diff --git a/aries_cloudagent/storage/vc_holder/vc_record.py b/aries_cloudagent/storage/vc_holder/vc_record.py index b4424edd14..9386fe278b 100644 --- a/aries_cloudagent/storage/vc_holder/vc_record.py +++ b/aries_cloudagent/storage/vc_holder/vc_record.py @@ -1,45 +1,71 @@ """Model for representing a stored verifiable credential.""" +import json +import logging + from typing import Sequence from uuid import uuid4 +from marshmallow import EXCLUDE, fields + +from ...messaging.models.base import BaseModel, BaseModelSchema +from ...messaging.valid import DecentralizedId, ENDPOINT, JSON_DUMP, UUIDFour + +LOGGER = logging.getLogger(__name__) -class VCRecord: + +class VCRecord(BaseModel): """Verifiable credential storage record class.""" + class Meta: + """VCRecord metadata.""" + + schema_class = "VCRecordSchema" + def __init__( self, *, - # context is required by spec - contexts: Sequence[str], - # type is required by spec - types: Sequence[str], - # issuer ID is required by spec - issuer_id: str, - # one or more subject IDs may be present - subject_ids: Sequence[str], - # one or more credential schema IDs may be present - schema_ids: Sequence[str], - # the credential encoded as a serialized JSON string - value: str, - # value of the credential 'id' property, if any - given_id: str = None, - # array of tags for retrieval (derived from attribute values) - tags: dict = None, - # specify the storage record ID - record_id: str = None, + contexts: Sequence[str], # context is required by spec + types: Sequence[str], # type is required by spec + issuer_id: str, # issuer ID is required by spec + subject_ids: Sequence[str], # one or more subject IDs may be present + schema_ids: Sequence[str], # one or more credential schema IDs may be present + value_json: str, # the credential encoded as a serialized JSON string + given_id: str = None, # value of the credential 'id' property, if any + cred_tags: dict = None, # tags for retrieval (derived from attribute values) + record_id: str = None, # specify the storage record ID ): """Initialize some defaults on record.""" + super().__init__() self.contexts = set(contexts) if contexts else set() self.types = set(types) if types else set() self.schema_ids = set(schema_ids) if schema_ids else set() self.issuer_id = issuer_id self.subject_ids = set(subject_ids) if subject_ids else set() - self.value = value + self.value_json = value_json self.given_id = given_id - self.tags = tags or {} + self.cred_tags = cred_tags or {} self.record_id = record_id or uuid4().hex + def serialize(self, as_string=False) -> dict: + """ + Create a JSON-compatible dict representation of the model instance. + + Args: + as_string: Return a string of JSON instead of a dict + + Returns: + A dict representation of this model, or a JSON string if as_string is True + + """ + + list_coercion = VCRecord(**{k: v for k, v in vars(self).items()}) + for k, v in vars(self).items(): + if isinstance(v, set): + setattr(list_coercion, k, list(v)) + + return super(VCRecord, list_coercion).serialize(as_string=as_string) + def __eq__(self, other: object) -> bool: """Compare two VC records for equality.""" if not isinstance(other, VCRecord): @@ -52,6 +78,50 @@ def __eq__(self, other: object) -> bool: and other.issuer_id == self.issuer_id and other.given_id == self.given_id and other.record_id == self.record_id - and other.tags == self.tags - and other.value == self.value + and other.cred_tags == self.cred_tags + and json.loads(other.value_json) == json.loads(self.value_json) + ) + + +class VCRecordSchema(BaseModelSchema): + """Verifiable credential storage record schema class.""" + + class Meta: + """Verifiable credential storage record schema metadata.""" + + model_class = VCRecord + unknown = EXCLUDE + + contexts = fields.List(fields.Str(description="Context", **ENDPOINT)) + types = fields.List( + fields.Str( + description="Type", + example="VerifiableCredential", + ), + ) + schema_ids = fields.List( + fields.Str( + description="Schema identifier", + example="https://example.org/examples/degree.json", + ) + ) + issuer_id = fields.Str( + description="Issuer identifier", + example=DecentralizedId.EXAMPLE, + ) + subject_ids = fields.List( + fields.Str( + description="Subject identifier", + example="did:example:ebfeb1f712ebc6f1c276e12ec21", ) + ) + value_json = fields.Str(description="(JSON) credential value", **JSON_DUMP) + given_id = fields.Str( + description="Credential identifier", + example="http://example.edu/credentials/3732", + ) + cred_tags = fields.Dict( + keys=fields.Str(description="Retrieval tag name"), + values=fields.Str(description="Retrieval tag value"), + ) + record_id = fields.Str(description="Record identifier", example=UUIDFour.EXAMPLE) diff --git a/aries_cloudagent/wallet/routes.py b/aries_cloudagent/wallet/routes.py index 990292224a..d0152877ca 100644 --- a/aries_cloudagent/wallet/routes.py +++ b/aries_cloudagent/wallet/routes.py @@ -21,7 +21,7 @@ ENDPOINT, ENDPOINT_TYPE, INDY_CRED_DEF_ID, - INDY_DID, + DID, INDY_RAW_PUBLIC_KEY, ) from ..multitenant.manager import MultitenantManager @@ -38,7 +38,7 @@ class WalletModuleResponseSchema(OpenAPISchema): class DIDSchema(OpenAPISchema): """Result schema for a DID.""" - did = fields.Str(description="DID of interest", **INDY_DID) + did = fields.Str(description="DID of interest", **DID) verkey = fields.Str(description="Public verification key", **INDY_RAW_PUBLIC_KEY) posture = fields.Str( description=( @@ -65,7 +65,7 @@ class DIDListSchema(OpenAPISchema): class DIDEndpointWithTypeSchema(OpenAPISchema): """Request schema to set DID endpoint of particular type.""" - did = fields.Str(description="DID of interest", required=True, **INDY_DID) + did = fields.Str(description="DID of interest", required=True, **DID) endpoint = fields.Str( description="Endpoint to set (omit to delete)", required=False, **ENDPOINT ) @@ -82,7 +82,7 @@ class DIDEndpointWithTypeSchema(OpenAPISchema): class DIDEndpointSchema(OpenAPISchema): """Request schema to set DID endpoint; response schema to get DID endpoint.""" - did = fields.Str(description="DID of interest", required=True, **INDY_DID) + did = fields.Str(description="DID of interest", required=True, **DID) endpoint = fields.Str( description="Endpoint to set (omit to delete)", required=False, **ENDPOINT ) @@ -91,7 +91,7 @@ class DIDEndpointSchema(OpenAPISchema): class DIDListQueryStringSchema(OpenAPISchema): """Parameters and validators for DID list request query string.""" - did = fields.Str(description="DID of interest", required=False, **INDY_DID) + did = fields.Str(description="DID of interest", required=False, **DID) verkey = fields.Str( description="Verification key of interest", required=False, @@ -111,7 +111,7 @@ class DIDListQueryStringSchema(OpenAPISchema): class DIDQueryStringSchema(OpenAPISchema): """Parameters and validators for set public DID request query string.""" - did = fields.Str(description="DID of interest", required=True, **INDY_DID) + did = fields.Str(description="DID of interest", required=True, **DID) class CredDefIdMatchInfoSchema(OpenAPISchema): From 48112c337efeacd0045fa023a476be3f279cd307 Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Mon, 22 Mar 2021 07:34:23 -0700 Subject: [PATCH 137/243] Code cleanup Signed-off-by: Ian Costanzo --- .github/workflows/integrationtests.yml | 8 +++++--- actions/run-integration-tests/action.yml | 1 + demo/features/0586-sign-transaction.feature | 1 + demo/runners/support/agent.py | 1 - docker/Dockerfile.bdd | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/integrationtests.yml b/.github/workflows/integrationtests.yml index 84e3929a4f..b1d499a846 100644 --- a/.github/workflows/integrationtests.yml +++ b/.github/workflows/integrationtests.yml @@ -1,15 +1,16 @@ name: acapy-integration-tests on: workflow_dispatch: - #schedule: - # - cron: "0 0 * * *" + pull_request: + branches: + - main defaults: run: shell: bash jobs: test: runs-on: ubuntu-latest - #if: (github.event_name == 'schedule' && github.repository == 'hyperledger/aries-cloudagent-python') || (github.event_name != 'schedule') + if: (github.event_name == 'pull_request' && github.repository == 'hyperledger/aries-cloudagent-python') || (github.event_name != 'pull_request') steps: - name: checkout-acapy uses: actions/checkout@v2 @@ -21,5 +22,6 @@ jobs: uses: ./acapy/actions/run-indy-tails-server - name: run-integration-tests uses: ./acapy/actions/run-integration-tests + # to run with a specific set of tests include the following parameter: # with: # TEST_SCOPE: "-t @T001-RFC0037" diff --git a/actions/run-integration-tests/action.yml b/actions/run-integration-tests/action.yml index d03b49343e..bcf49d8382 100644 --- a/actions/run-integration-tests/action.yml +++ b/actions/run-integration-tests/action.yml @@ -10,6 +10,7 @@ runs: using: "composite" steps: - name: run-integration-tests-acapy + # to run with external ledger and tails server run as follows (and remove the ledger and tails actions from the workflow): # run: LEDGER_URL=http://test.bcovrin.vonx.io PUBLIC_TAILS_URL=https://tails.vonx.io ./run_bdd ${{ inputs.TEST_SCOPE }} run: ./run_bdd ${{ inputs.TEST_SCOPE }} shell: bash diff --git a/demo/features/0586-sign-transaction.feature b/demo/features/0586-sign-transaction.feature index b12e31c8ae..a937c1a446 100644 --- a/demo/features/0586-sign-transaction.feature +++ b/demo/features/0586-sign-transaction.feature @@ -24,6 +24,7 @@ Feature: RFC 0586 Aries sign (endorse) transactions functions | --mediation | --mediation | driverslicense | | --multitenant | --multitenant | driverslicense | + @T001.1-RFC0586 Scenario Outline: endorse a transaction and write to the ledger Given we have "2" agents diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index e17a169071..8fbc653ae2 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -791,7 +791,6 @@ async def fetch_status(url: str, timeout: float, headers=None): status_code, status_text = await fetch_status( status_url, START_TIMEOUT, headers=headers ) - self.log(status_code, status_text) if not status_text: raise Exception( diff --git a/docker/Dockerfile.bdd b/docker/Dockerfile.bdd index 0f101c06f0..cacf38b6aa 100644 --- a/docker/Dockerfile.bdd +++ b/docker/Dockerfile.bdd @@ -2,7 +2,7 @@ FROM faber-alice-demo # Install bdd dependencies RUN pip3 install --no-cache-dir -r demo/requirements.behave.txt -# ENV PYTHONMALLOC debug + WORKDIR ./demo RUN chmod a+w . ENTRYPOINT ["behave"] From 1947af29199bc6cf99a3d1851a1eca69849620de Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 22 Mar 2021 14:34:32 +0000 Subject: [PATCH 138/243] serde, not deser Signed-off-by: sklump --- aries_cloudagent/storage/vc_holder/in_memory.py | 2 +- aries_cloudagent/storage/vc_holder/indy.py | 2 +- aries_cloudagent/storage/vc_holder/{deser.py => serde.py} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename aries_cloudagent/storage/vc_holder/{deser.py => serde.py} (100%) diff --git a/aries_cloudagent/storage/vc_holder/in_memory.py b/aries_cloudagent/storage/vc_holder/in_memory.py index 17e5277d1d..e92cb674f2 100644 --- a/aries_cloudagent/storage/vc_holder/in_memory.py +++ b/aries_cloudagent/storage/vc_holder/in_memory.py @@ -7,7 +7,7 @@ from ..in_memory import InMemoryStorage, InMemoryStorageSearch from .base import VCHolder, VCRecordSearch -from .deser import load_credential, serialize_credential, VC_CRED_RECORD_TYPE +from .serde import load_credential, serialize_credential, VC_CRED_RECORD_TYPE from .vc_record import VCRecord diff --git a/aries_cloudagent/storage/vc_holder/indy.py b/aries_cloudagent/storage/vc_holder/indy.py index 1703c8743f..84e499f241 100644 --- a/aries_cloudagent/storage/vc_holder/indy.py +++ b/aries_cloudagent/storage/vc_holder/indy.py @@ -7,7 +7,7 @@ from ..indy import IndySdkStorage, IndySdkStorageSearch from .base import VCHolder, VCRecordSearch -from .deser import load_credential, serialize_credential, VC_CRED_RECORD_TYPE +from .serde import load_credential, serialize_credential, VC_CRED_RECORD_TYPE from .vc_record import VCRecord diff --git a/aries_cloudagent/storage/vc_holder/deser.py b/aries_cloudagent/storage/vc_holder/serde.py similarity index 100% rename from aries_cloudagent/storage/vc_holder/deser.py rename to aries_cloudagent/storage/vc_holder/serde.py From 1a20002de5c9d8b852f5bcda40e96eabb1a053fc Mon Sep 17 00:00:00 2001 From: Ian Costanzo Date: Mon, 22 Mar 2021 08:14:03 -0700 Subject: [PATCH 139/243] Fix black formatting Signed-off-by: Ian Costanzo --- demo/runners/support/agent.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index 8fbc653ae2..246f0bb04e 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -528,9 +528,7 @@ async def start_process(self, python_path: str = None, wait: bool = True): # start agent sub-process loop = asyncio.get_event_loop() - future = loop.run_in_executor( - None, self._process, agent_args, my_env, loop - ) + future = loop.run_in_executor(None, self._process, agent_args, my_env, loop) self.proc = await asyncio.wait_for(future, 20, loop=loop) if wait: await asyncio.sleep(1.0) From 96e0608980656ae7711edccccf9a6285d2bd3525 Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 22 Mar 2021 15:29:52 +0000 Subject: [PATCH 140/243] pluralize proposal(s) attached Signed-off-by: sklump --- .../tests/test_pres_request_handler.py | 8 +++-- .../present_proof/v2_0/messages/pres.py | 2 +- .../v2_0/messages/pres_proposal.py | 14 ++++---- .../v2_0/messages/tests/test_pres_proposal.py | 2 +- .../protocols/present_proof/v2_0/routes.py | 2 +- .../present_proof/v2_0/tests/test_manager.py | 36 +++++++++++++------ 6 files changed, 42 insertions(+), 22 deletions(-) diff --git a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py index 8b8e5eba39..cf3cd5ce1b 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/handlers/tests/test_pres_request_handler.py @@ -148,7 +148,9 @@ async def test_called_auto_present(self): format_=V20PresFormat.Format.INDY.aries, ) ], - proposal_attach=[AttachDecorator.data_base64(INDY_PROOF_REQ, ident="indy")], + proposals_attach=[ + AttachDecorator.data_base64(INDY_PROOF_REQ, ident="indy") + ], ) px_rec_instance = test_module.V20PresExRecord( @@ -420,7 +422,9 @@ async def test_called_auto_present_multi_cred_match_reft(self): format_=V20PresFormat.Format.INDY.aries, ) ], - proposal_attach=[AttachDecorator.data_base64(INDY_PROOF_REQ, ident="indy")], + proposals_attach=[ + AttachDecorator.data_base64(INDY_PROOF_REQ, ident="indy") + ], ) px_rec_instance = test_module.V20PresExRecord( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py index e30b9262f4..65f6567706 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres.py @@ -94,7 +94,7 @@ class Meta: @validates_schema def validate_fields(self, data, **kwargs): - """Validate proposal attachment per format.""" + """Validate presentation attachment per format.""" def get_attach_by_id(attach_id): """Return attachment with input attachment identifier.""" diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py index f632e91ebb..644ea0052f 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/pres_proposal.py @@ -37,7 +37,7 @@ def __init__( *, comment: str = None, formats: Sequence[V20PresFormat] = None, - proposal_attach: Sequence[AttachDecorator] = None, + proposals_attach: Sequence[AttachDecorator] = None, **kwargs, ): """ @@ -46,12 +46,12 @@ def __init__( Args: comment: optional human-readable comment formats: acceptable attachment formats - proposal_attach: proposal attachments specifying criteria by format + proposals_attach: proposal attachments specifying criteria by format """ super().__init__(_id, **kwargs) self.comment = comment self.formats = list(formats) if formats else [] - self.proposal_attach = list(proposal_attach) if proposal_attach else [] + self.proposals_attach = list(proposals_attach) if proposals_attach else [] def attachment(self, fmt: V20PresFormat.Format = None) -> dict: """ @@ -66,7 +66,7 @@ def attachment(self, fmt: V20PresFormat.Format = None) -> dict: fmt or V20PresFormat.Format.get(self.formats[0].format) ).get_attachment_data( self.formats, - self.proposal_attach, + self.proposals_attach, ) if self.formats else None @@ -89,11 +89,11 @@ class Meta: required=True, descrption="Acceptable attachment formats", ) - proposal_attach = fields.Nested( + proposals_attach = fields.Nested( AttachDecoratorSchema, many=True, required=True, - data_key="proposal~attach", + data_key="proposals~attach", description="Attachment per acceptable format on corresponding identifier", ) @@ -109,7 +109,7 @@ def get_attach_by_id(attach_id): raise ValidationError(f"No attachment for attach_id {attach_id} in formats") formats = data.get("formats") or [] - attachments = data.get("proposal_attach") or [] + attachments = data.get("proposals_attach") or [] if len(formats) != len(attachments): raise ValidationError("Formats/attachments length mismatch") diff --git a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py index 84b6ddd033..62c2dbe9c3 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/messages/tests/test_pres_proposal.py @@ -117,7 +117,7 @@ def test_init_type_attachment_serde(self): ], ) ], - proposal_attach=[AttachDecorator.data_base64(proof_req, ident="indy")], + proposals_attach=[AttachDecorator.data_base64(proof_req, ident="indy")], ) assert pres_proposal._type == DIDCommPrefix.qualify_current( PRES_20_PROPOSAL diff --git a/aries_cloudagent/protocols/present_proof/v2_0/routes.py b/aries_cloudagent/protocols/present_proof/v2_0/routes.py index 1c6170bf3f..e6be3f0734 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/routes.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/routes.py @@ -519,7 +519,7 @@ async def present_proof_send_proposal(request: web.BaseRequest): conn_record = await ConnRecord.retrieve_by_id(session, connection_id) pres_proposal_message = V20PresProposal( comment=comment, - **_formats_attach(pres_proposal, PRES_20_PROPOSAL, "proposal"), + **_formats_attach(pres_proposal, PRES_20_PROPOSAL, "proposals"), ) except (BaseModelError, StorageError) as err: return await internal_error( diff --git a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py index d80f5222e7..4be874ba80 100644 --- a/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/present_proof/v2_0/tests/test_manager.py @@ -282,7 +282,7 @@ async def test_create_bound_request(self): ], ) ], - proposal_attach=[ + proposals_attach=[ AttachDecorator.data_base64(INDY_PROOF_REQ_NAME, ident="indy") ], ) @@ -805,7 +805,7 @@ async def test_receive_pres(self): ], ) ], - proposal_attach=[ + proposals_attach=[ AttachDecorator.data_base64(INDY_PROOF_REQ_NAME, ident="indy") ], ) @@ -925,7 +925,9 @@ async def test_receive_pres_bait_and_switch_attr_name(self): ], ) ], - proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + proposals_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], ) pres_request = V20PresRequest( formats=[ @@ -979,7 +981,9 @@ async def test_receive_pres_bait_and_switch_attr_name(self): ], ) ], - proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + proposals_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], ) pres_request = V20PresRequest( formats=[ @@ -1084,7 +1088,9 @@ async def test_receive_pres_bait_and_switch_attr_names(self): ], ) ], - proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + proposals_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], ) pres_request = V20PresRequest( formats=[ @@ -1138,7 +1144,9 @@ async def test_receive_pres_bait_and_switch_attr_names(self): ], ) ], - proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + proposals_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], ) pres_request = V20PresRequest( formats=[ @@ -1237,7 +1245,9 @@ async def test_receive_pres_bait_and_switch_pred(self): ], ) ], - proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + proposals_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], ) pres_request = V20PresRequest( formats=[ @@ -1295,7 +1305,9 @@ async def test_receive_pres_bait_and_switch_pred(self): ], ) ], - proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + proposals_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], ) pres_request = V20PresRequest( formats=[ @@ -1351,7 +1363,9 @@ async def test_receive_pres_bait_and_switch_pred(self): ], ) ], - proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + proposals_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], ) pres_request = V20PresRequest( formats=[ @@ -1407,7 +1421,9 @@ async def test_receive_pres_bait_and_switch_pred(self): ], ) ], - proposal_attach=[AttachDecorator.data_base64(indy_proof_req, ident="indy")], + proposals_attach=[ + AttachDecorator.data_base64(indy_proof_req, ident="indy") + ], ) pres_request = V20PresRequest( formats=[ From f9e9f3d1f30f18fb8a51cadd09dc651bf213f56a Mon Sep 17 00:00:00 2001 From: sklump Date: Mon, 22 Mar 2021 19:59:13 +0000 Subject: [PATCH 141/243] cover transport outbound queue code Signed-off-by: sklump --- .../transport/outbound/queue/loader.py | 5 +- .../outbound/queue/tests/test_loader.py | 45 +++++++- .../outbound/queue/tests/test_redis.py | 106 ++++++++++++++++-- 3 files changed, 141 insertions(+), 15 deletions(-) diff --git a/aries_cloudagent/transport/outbound/queue/loader.py b/aries_cloudagent/transport/outbound/queue/loader.py index 709085c987..4501f16a3e 100644 --- a/aries_cloudagent/transport/outbound/queue/loader.py +++ b/aries_cloudagent/transport/outbound/queue/loader.py @@ -2,6 +2,7 @@ import importlib from ....config.settings import Settings +from ....core.error import BaseError def get_outbound_queue(settings: Settings): @@ -81,9 +82,9 @@ def get_connection_parts(connection: str): ) -class OutboundQueueConfigurationError(Exception): +class OutboundQueueConfigurationError(BaseError): """An error with the queue configuration.""" def __init__(self, message): """Initialize the exception instance.""" - self.message = message + super().__init__(message) diff --git a/aries_cloudagent/transport/outbound/queue/tests/test_loader.py b/aries_cloudagent/transport/outbound/queue/tests/test_loader.py index 0e52f2b22f..1919107cb6 100644 --- a/aries_cloudagent/transport/outbound/queue/tests/test_loader.py +++ b/aries_cloudagent/transport/outbound/queue/tests/test_loader.py @@ -29,25 +29,28 @@ class TestQueueLoader(AsyncTestCase): + async def test_config_error(self): + assert OutboundQueueConfigurationError("hello").message == "hello" + async def test_get_class(self): - with self.assertRaises(OutboundQueueConfigurationError) as context: + with self.assertRaises(OutboundQueueConfigurationError) as x_ctx: get_class( "aries_cloudagent.transport.outbound.queue.tests.fixtures:" "QueueClassNoBaseClass" ) - self.assertIn("does not inherit", context.exception.message) - with self.assertRaises(OutboundQueueConfigurationError) as context: + self.assertIn("does not inherit", x_ctx.exception.message) + with self.assertRaises(OutboundQueueConfigurationError) as x_ctx: get_class( "aries_cloudagent.transport.outbound.queue.tests.fixtures:" "NoClassThere" ) - self.assertIn("not found", context.exception.message) - with self.assertRaises(OutboundQueueConfigurationError) as context: + self.assertIn("not found", x_ctx.exception.message) + with self.assertRaises(OutboundQueueConfigurationError) as x_ctx: get_class( "aries_cloudagent.transport.outbound.queue.tests.fixtures:" "QueueClassNoProtocol" ) - self.assertIn("requires a defined 'protocol'", context.exception.message) + self.assertIn("requires a defined 'protocol'", x_ctx.exception.message) self.assertIs( get_class( "aries_cloudagent.transport.outbound.queue.tests.fixtures:" @@ -56,12 +59,25 @@ async def test_get_class(self): QueueClassValid, ) + async def test_get_class_import_x(self): + with self.assertRaises(OutboundQueueConfigurationError) as x_ctx: + get_class("no-colon") + assert "Malformed input" in str(x_ctx.exception) + + with self.assertRaises(OutboundQueueConfigurationError) as x_ctx: + get_class("no_such_path:_no_such_class") + assert "Module not found" in str(x_ctx.exception) + async def test_get_connection_parts(self): protocol, host, port = get_connection_parts("redis://127.0.0.1:8000") self.assertEqual(protocol, "redis") self.assertEqual(host, "127.0.0.1") self.assertEqual(port, "8000") + async def test_get_connection_parts_x(self): + with self.assertRaises(OutboundQueueConfigurationError): + protocol, host, port = get_connection_parts("clearly-incorrect") + async def test_get_outbound_queue_valid(self): context = InjectionContext() context.settings["transport.outbound_queue"] = "testprotocol://127.0.0.1:8000" @@ -76,3 +92,20 @@ async def test_get_outbound_queue_valid(self): QueueClassValid, ) self.assertEqual(queue.connection, "testprotocol://127.0.0.1:8000") + + async def test_get_outbound_no_connection(self): + context = InjectionContext() + context.settings["transport.outbound_queue"] = None + assert get_outbound_queue(context.settings) is None + + async def test_get_outbound_queue_protocol_x(self): + context = InjectionContext() + context.settings["transport.outbound_queue"] = "wrong_protocol://127.0.0.1:8000" + context.settings["transport.outbound_queue_prefix"] = "test_prefix" + context.settings["transport.outbound_queue_class"] = ( + "aries_cloudagent.transport.outbound.queue.tests.fixtures:" + "QueueClassValid" + ) + with self.assertRaises(OutboundQueueConfigurationError) as x_ctx: + get_outbound_queue(context.settings) + assert "not matched with protocol" in str(x_ctx.exception) diff --git a/aries_cloudagent/transport/outbound/queue/tests/test_redis.py b/aries_cloudagent/transport/outbound/queue/tests/test_redis.py index 1beb7c9deb..c27a1d4b3f 100644 --- a/aries_cloudagent/transport/outbound/queue/tests/test_redis.py +++ b/aries_cloudagent/transport/outbound/queue/tests/test_redis.py @@ -84,7 +84,7 @@ async def test_redis_error_handled(self): "rpush", side_effect=aioredis.RedisError, new_callable=AsyncMock, - ) as pool_mock: + ) as mock_rpush: with self.assertRaises(OutboundQueueError): await self.transport.enqueue_message( payload=transmitted_str, @@ -93,15 +93,107 @@ async def test_redis_error_handled(self): class TestRedisConnection(AsyncTestCase): + TEST_REDIS_ENDPOINT = "redis://test_redis_endpoint:6379" + async def test_endpoint_goes_into_class(self): - TEST_REDIS_ENDPOINT = "redis://test_redis_endpoint:6379" - transport = RedisOutboundQueue(connection=TEST_REDIS_ENDPOINT) + transport = RedisOutboundQueue( + connection=TestRedisConnection.TEST_REDIS_ENDPOINT + ) + assert str(transport) + with async_mock.patch.object( + aioredis, "create_redis_pool", async_mock.CoroutineMock() + ) as mock_pool: + mock_pool.return_value = async_mock.MagicMock( + close=async_mock.MagicMock(), + wait_closed=async_mock.CoroutineMock(), + ) + async with transport: + pass + + mock_pool.assert_called_once() + self.assertEqual( + mock_pool.call_args[0][0], TestRedisConnection.TEST_REDIS_ENDPOINT + ) + + async def test_outbound_aexit_x(self): + transport = RedisOutboundQueue( + connection=TestRedisConnection.TEST_REDIS_ENDPOINT + ) with unittest.mock.patch.object( aioredis, "create_redis_pool", new_callable=AsyncMock - ) as pool_mock: - await transport.start() - pool_mock.assert_called_once() - self.assertEqual(pool_mock.call_args[0][0], TEST_REDIS_ENDPOINT) + ) as mock_pool, unittest.mock.patch.object( + transport.logger, "exception", autospec=True + ) as mock_log_exc: + mock_pool.return_value = async_mock.MagicMock( + close=async_mock.MagicMock(), + wait_closed=async_mock.CoroutineMock(), + ) + try: + async with transport: + raise ValueError("oops") + except ValueError: + pass + + mock_log_exc.assert_called_once() + mock_pool.assert_called_once() + self.assertEqual( + mock_pool.call_args[0][0], TestRedisConnection.TEST_REDIS_ENDPOINT + ) + + async def test_enqueue(self): + transport = RedisOutboundQueue( + connection=TestRedisConnection.TEST_REDIS_ENDPOINT + ) + + with async_mock.patch.object( + aioredis, "create_redis_pool", async_mock.CoroutineMock() + ) as mock_pool: + mock_pool.return_value = async_mock.MagicMock( + close=async_mock.MagicMock(), + wait_closed=async_mock.CoroutineMock(), + ) + async with transport: + with async_mock.patch.object( + transport.redis, "rpush", async_mock.CoroutineMock() + ) as mock_redis_push: + await transport.enqueue_message("Hello", "localhost:8999") + await transport.enqueue_message(b"Hello", "localhost:8999") + + async def test_enqueue_push_x(self): + transport = RedisOutboundQueue( + connection=TestRedisConnection.TEST_REDIS_ENDPOINT + ) + + with async_mock.patch.object( + aioredis, "create_redis_pool", async_mock.CoroutineMock() + ) as mock_pool: + mock_pool.return_value = async_mock.MagicMock( + close=async_mock.MagicMock(), + wait_closed=async_mock.CoroutineMock(), + ) + async with transport: + with async_mock.patch.object( + transport.redis, "rpush", async_mock.CoroutineMock() + ) as mock_redis_push: + mock_redis_push.side_effect = aioredis.RedisError() + with self.assertRaises(OutboundQueueError): + await transport.enqueue_message("Hello", "localhost:8999") + + async def test_enqueue_no_endpoint_x(self): + transport = RedisOutboundQueue( + connection=TestRedisConnection.TEST_REDIS_ENDPOINT + ) + + with async_mock.patch.object( + aioredis, "create_redis_pool", async_mock.CoroutineMock() + ) as mock_pool: + mock_pool.return_value = async_mock.MagicMock( + close=async_mock.MagicMock(), + wait_closed=async_mock.CoroutineMock(), + ) + async with transport: + with self.assertRaises(OutboundQueueError): # cover exc + await transport.enqueue_message(None, None) class AsyncMock(unittest.mock.MagicMock): From d6d35fab9857b27f541567b37cb2aec52904ee98 Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 23 Mar 2021 13:33:11 +0000 Subject: [PATCH 142/243] restore INDY_DID, align searches to vc records, fix API bugs Signed-off-by: sklump --- .../connections/models/conn_record.py | 8 ++- .../connections/models/connection_target.py | 4 +- aries_cloudagent/holder/routes.py | 62 +++++++++++-------- aries_cloudagent/holder/tests/test_routes.py | 54 ++++++++-------- aries_cloudagent/ledger/routes.py | 8 +-- .../messaging/credential_definitions/util.py | 6 +- aries_cloudagent/messaging/schemas/util.py | 4 +- .../messaging/tests/test_valid.py | 16 ++--- aries_cloudagent/messaging/valid.py | 12 ++-- .../v1_0/messages/connection_invitation.py | 6 +- .../v1_0/models/connection_detail.py | 7 ++- .../protocols/connections/v1_0/routes.py | 14 ++--- .../didexchange/v1_0/messages/request.py | 4 +- .../didexchange/v1_0/messages/response.py | 4 +- .../protocols/didexchange/v1_0/routes.py | 4 +- .../issue_credential/indy/cred_request.py | 4 +- .../v1_0/messages/credential_proposal.py | 11 +++- .../protocols/issue_credential/v1_0/routes.py | 14 +++-- .../protocols/issue_credential/v2_0/routes.py | 8 ++- .../out_of_band/v1_0/messages/invitation.py | 4 +- .../out_of_band/v1_0/messages/service.py | 4 +- .../present_proof/indy/proof_request.py | 6 +- .../models/issuer_rev_reg_record.py | 4 +- aries_cloudagent/storage/vc_holder/base.py | 10 +-- .../storage/vc_holder/in_memory.py | 29 +++++---- aries_cloudagent/storage/vc_holder/indy.py | 29 +++++---- .../tests/test_in_memory_vc_holder.py | 10 ++- .../storage/vc_holder/tests/test_vc_record.py | 56 +++++++---------- .../storage/vc_holder/vc_record.py | 17 +++-- .../storage/vc_holder/{serde.py => xform.py} | 18 ++++-- aries_cloudagent/wallet/routes.py | 12 ++-- 31 files changed, 246 insertions(+), 203 deletions(-) rename aries_cloudagent/storage/vc_holder/{serde.py => xform.py} (82%) diff --git a/aries_cloudagent/connections/models/conn_record.py b/aries_cloudagent/connections/models/conn_record.py index 4f37c3e298..4e44fb6bf0 100644 --- a/aries_cloudagent/connections/models/conn_record.py +++ b/aries_cloudagent/connections/models/conn_record.py @@ -9,7 +9,7 @@ from ...core.profile import ProfileSession from ...messaging.models.base_record import BaseRecord, BaseRecordSchema -from ...messaging.valid import DID, INDY_RAW_PUBLIC_KEY, UUIDFour +from ...messaging.valid import INDY_DID, INDY_RAW_PUBLIC_KEY, UUIDFour from ...protocols.connections.v1_0.message_types import ( CONNECTION_INVITATION, @@ -512,9 +512,11 @@ class Meta: connection_id = fields.Str( required=False, description="Connection identifier", example=UUIDFour.EXAMPLE ) - my_did = fields.Str(required=False, description="Our DID for connection", **DID) + my_did = fields.Str( + required=False, description="Our DID for connection", **INDY_DID + ) their_did = fields.Str( - required=False, description="Their DID for connection", **DID + required=False, description="Their DID for connection", **INDY_DID ) their_label = fields.Str( required=False, description="Their label for connection", example="Bob" diff --git a/aries_cloudagent/connections/models/connection_target.py b/aries_cloudagent/connections/models/connection_target.py index 4cdf67e558..ade3f47392 100644 --- a/aries_cloudagent/connections/models/connection_target.py +++ b/aries_cloudagent/connections/models/connection_target.py @@ -5,7 +5,7 @@ from marshmallow import EXCLUDE, fields from ...messaging.models.base import BaseModel, BaseModelSchema -from ...messaging.valid import DID, INDY_RAW_PUBLIC_KEY +from ...messaging.valid import INDY_DID, INDY_RAW_PUBLIC_KEY class ConnectionTarget(BaseModel): @@ -53,7 +53,7 @@ class Meta: model_class = ConnectionTarget unknown = EXCLUDE - did = fields.Str(required=False, description="", **DID) + did = fields.Str(required=False, description="", **INDY_DID) endpoint = fields.Str( required=False, description="Connection endpoint", diff --git a/aries_cloudagent/holder/routes.py b/aries_cloudagent/holder/routes.py index a3e30adc5b..9f15906574 100644 --- a/aries_cloudagent/holder/routes.py +++ b/aries_cloudagent/holder/routes.py @@ -89,8 +89,8 @@ class CredentialsListQueryStringSchema(OpenAPISchema): ) -class DIFCredentialsListRequestSchema(OpenAPISchema): - """Parameters and validators for DIF credentials request.""" +class W3CCredentialsListRequestSchema(OpenAPISchema): + """Parameters and validators for W3C credentials request.""" contexts = fields.List( fields.Str( @@ -108,19 +108,22 @@ class DIFCredentialsListRequestSchema(OpenAPISchema): ) schema_ids = fields.List( fields.Str( - description="Credential schema identifier to match", + description="Credential schema identifier", **ENDPOINT, ), + description="Schema identifiers, all of which to match", required=False, ) issuer_id = fields.Str( required=False, description="Credential issuer identifier to match", ) - subject_id = fields.Str( + subject_ids = fields.List( + fields.Str(description="Subject identifier"), + description="Subject identifiers, all of which to match", required=False, - description="Subject identifier to match", ) + given_id = fields.Str(required=False, description="Given credential id to match") tag_query = fields.Dict( keys=fields.Str(description="Tag name"), values=fields.Str(description="Tag value"), @@ -133,7 +136,7 @@ class DIFCredentialsListRequestSchema(OpenAPISchema): class VCRecordListSchema(OpenAPISchema): - """Result schema for DIF credential query.""" + """Result schema for W3C credential query.""" results = fields.List(fields.Nested(VCRecordSchema())) @@ -331,13 +334,13 @@ async def credentials_list(request: web.BaseRequest): @docs( tags=["credentials"], - summary="Fetch DIF credential from wallet by id", + summary="Fetch W3C credential from wallet by id", ) @match_info_schema(CredIdMatchInfoSchema()) @response_schema(VCRecordSchema(), 200, description="") -async def dif_cred_get(request: web.BaseRequest): +async def w3c_cred_get(request: web.BaseRequest): """ - Request handler for retrieving DIF credential. + Request handler for retrieving W3C credential. Args: request: aiohttp request object @@ -352,24 +355,24 @@ async def dif_cred_get(request: web.BaseRequest): session = await context.session() holder = session.inject(VCHolder) try: - vc_record = await holder.retrieve_credential_by_given_id(credential_id) + vc_record = await holder.retrieve_credential_by_id(credential_id) except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err except StorageError as err: raise web.HTTPBadRequest(reason=err.roll_up) from err - return web.json_response(vc_record) + return web.json_response(vc_record.serialize()) @docs( tags=["credentials"], - summary="Remove DIF credential from wallet by id", + summary="Remove W3C credential from wallet by id", ) @match_info_schema(CredIdMatchInfoSchema()) @response_schema(HolderModuleResponseSchema(), 200, description="") -async def dif_cred_remove(request: web.BaseRequest): +async def w3c_cred_remove(request: web.BaseRequest): """ - Request handler for deleting DIF credential. + Request handler for deleting W3C credential. Args: request: aiohttp request object @@ -384,7 +387,7 @@ async def dif_cred_remove(request: web.BaseRequest): session = await context.session() holder = session.inject(VCHolder) try: - vc_record = await holder.retrieve_credential_by_given_id(credential_id) + vc_record = await holder.retrieve_credential_by_id(credential_id) await holder.delete_credential(vc_record) except StorageNotFoundError as err: raise web.HTTPNotFound(reason=err.roll_up) from err @@ -396,14 +399,14 @@ async def dif_cred_remove(request: web.BaseRequest): @docs( tags=["credentials"], - summary="Fetch DIF credentials from wallet", + summary="Fetch W3C credentials from wallet", ) -@request_schema(DIFCredentialsListRequestSchema()) +@request_schema(W3CCredentialsListRequestSchema()) @querystring_schema(CredentialsListQueryStringSchema()) @response_schema(VCRecordListSchema(), 200, description="") -async def dif_creds_list(request: web.BaseRequest): +async def w3c_creds_list(request: web.BaseRequest): """ - Request handler for searching DIF credential records. + Request handler for searching W3C credential records. Args: request: aiohttp request object @@ -419,14 +422,21 @@ async def dif_creds_list(request: web.BaseRequest): types = body.get("types") schema_ids = body.get("schema_ids") issuer_id = body.get("issuer_id") - subject_id = body.get("subject_id") + subject_ids = body.get("subject_ids") + given_id = body.get("given_id") tag_query = body.get("tag_query") max_results = body.get("max_results") holder = session.inject(VCHolder) try: search = holder.search_credentials( - contexts, types, schema_ids, issuer_id, subject_id, tag_query + contexts=contexts, + types=types, + schema_ids=schema_ids, + issuer_id=issuer_id, + subject_ids=subject_ids, + given_id=given_id, + tag_query=tag_query, ) records = await search.fetch(max_results) except StorageNotFoundError as err: @@ -434,7 +444,7 @@ async def dif_creds_list(request: web.BaseRequest): except StorageError as err: raise web.HTTPBadRequest(reason=err.roll_up) from err - return web.json_response({"results": records}) + return web.json_response({"results": [record.serialize() for record in records]}) async def register(app: web.Application): @@ -456,12 +466,12 @@ async def register(app: web.Application): web.delete("/credential/{credential_id}", credentials_remove), web.get("/credentials", credentials_list, allow_head=False), web.get( - "/credential/dif/{credential_id}", - dif_cred_get, + "/credential/w3c/{credential_id}", + w3c_cred_get, allow_head=False, ), - web.delete("/credential/dif/{credential_id}", dif_cred_remove), - web.get("/credentials/dif", dif_creds_list, allow_head=False), + web.delete("/credential/w3c/{credential_id}", w3c_cred_remove), + web.post("/credentials/w3c", w3c_creds_list), ] ) diff --git a/aries_cloudagent/holder/tests/test_routes.py b/aries_cloudagent/holder/tests/test_routes.py index 34f9f85728..813403e1c4 100644 --- a/aries_cloudagent/holder/tests/test_routes.py +++ b/aries_cloudagent/holder/tests/test_routes.py @@ -26,7 +26,7 @@ issuer_id="https://example.edu/issuers/565049", subject_ids=["did:example:ebfeb1f712ebc6f1c276e12ec21"], schema_ids=["https://example.org/examples/degree.json"], - value_json=json.dumps({"...": "..."}), + cred_value={"...": "..."}, given_id="http://example.edu/credentials/3732", cred_tags={"some": "tag"}, ) @@ -210,12 +210,12 @@ async def test_credentials_list_x_holder(self): with self.assertRaises(test_module.web.HTTPBadRequest): await test_module.credentials_list(self.request) - async def test_dif_cred_get(self): + async def test_w3c_cred_get(self): self.request.match_info = {"credential_id": "dummy"} self.context.injector.bind_instance( VCHolder, async_mock.MagicMock( - retrieve_credential_by_given_id=async_mock.CoroutineMock( + retrieve_credential_by_id=async_mock.CoroutineMock( return_value=VC_RECORD ) ), @@ -224,43 +224,43 @@ async def test_dif_cred_get(self): with async_mock.patch.object( test_module.web, "json_response", async_mock.Mock() ) as json_response: - result = await test_module.dif_cred_get(self.request) - json_response.assert_called_once_with(VC_RECORD) + result = await test_module.w3c_cred_get(self.request) + json_response.assert_called_once_with(VC_RECORD.serialize()) - async def test_dif_cred_get_not_found_x(self): + async def test_w3c_cred_get_not_found_x(self): self.request.match_info = {"credential_id": "dummy"} self.context.injector.bind_instance( VCHolder, async_mock.MagicMock( - retrieve_credential_by_given_id=async_mock.CoroutineMock( + retrieve_credential_by_id=async_mock.CoroutineMock( side_effect=test_module.StorageNotFoundError() ) ), ) with self.assertRaises(test_module.web.HTTPNotFound): - await test_module.dif_cred_get(self.request) + await test_module.w3c_cred_get(self.request) - async def test_dif_cred_get_storage_x(self): + async def test_w3c_cred_get_storage_x(self): self.request.match_info = {"credential_id": "dummy"} self.context.injector.bind_instance( VCHolder, async_mock.MagicMock( - retrieve_credential_by_given_id=async_mock.CoroutineMock( + retrieve_credential_by_id=async_mock.CoroutineMock( side_effect=test_module.StorageError() ) ), ) with self.assertRaises(test_module.web.HTTPBadRequest): - await test_module.dif_cred_get(self.request) + await test_module.w3c_cred_get(self.request) - async def test_dif_cred_remove(self): + async def test_w3c_cred_remove(self): self.request.match_info = {"credential_id": "dummy"} self.context.injector.bind_instance( VCHolder, async_mock.MagicMock( - retrieve_credential_by_given_id=async_mock.CoroutineMock( + retrieve_credential_by_id=async_mock.CoroutineMock( return_value=VC_RECORD ), delete_credential=async_mock.CoroutineMock(return_value=None), @@ -270,30 +270,30 @@ async def test_dif_cred_remove(self): with async_mock.patch.object( test_module.web, "json_response", async_mock.Mock() ) as json_response: - result = await test_module.dif_cred_remove(self.request) + result = await test_module.w3c_cred_remove(self.request) json_response.assert_called_once_with({}) assert result is json_response.return_value - async def test_dif_cred_remove_not_found_x(self): + async def test_w3c_cred_remove_not_found_x(self): self.request.match_info = {"credential_id": "dummy"} self.context.injector.bind_instance( VCHolder, async_mock.MagicMock( - retrieve_credential_by_given_id=async_mock.CoroutineMock( + retrieve_credential_by_id=async_mock.CoroutineMock( side_effect=test_module.StorageNotFoundError() ) ), ) with self.assertRaises(test_module.web.HTTPNotFound): - await test_module.dif_cred_remove(self.request) + await test_module.w3c_cred_remove(self.request) - async def test_dif_cred_remove_storage_x(self): + async def test_w3c_cred_remove_storage_x(self): self.request.match_info = {"credential_id": "dummy"} self.context.injector.bind_instance( VCHolder, async_mock.MagicMock( - retrieve_credential_by_given_id=async_mock.CoroutineMock( + retrieve_credential_by_id=async_mock.CoroutineMock( return_value=VC_RECORD ), delete_credential=async_mock.CoroutineMock( @@ -303,9 +303,9 @@ async def test_dif_cred_remove_storage_x(self): ) with self.assertRaises(test_module.web.HTTPBadRequest): - await test_module.dif_cred_remove(self.request) + await test_module.w3c_cred_remove(self.request) - async def test_dif_creds_list(self): + async def test_w3c_creds_list(self): self.request.json = async_mock.CoroutineMock( return_value={ "types": [ @@ -331,10 +331,10 @@ async def test_dif_creds_list(self): with async_mock.patch.object( test_module.web, "json_response", async_mock.Mock() ) as json_response: - result = await test_module.dif_creds_list(self.request) - json_response.assert_called_once_with({"results": [VC_RECORD]}) + result = await test_module.w3c_creds_list(self.request) + json_response.assert_called_once_with({"results": [VC_RECORD.serialize()]}) - async def test_dif_creds_list_not_found_x(self): + async def test_w3c_creds_list_not_found_x(self): self.request.json = async_mock.CoroutineMock( return_value={ "types": [ @@ -360,9 +360,9 @@ async def test_dif_creds_list_not_found_x(self): ) with self.assertRaises(test_module.web.HTTPNotFound): - await test_module.dif_creds_list(self.request) + await test_module.w3c_creds_list(self.request) - async def test_dif_creds_list_storage_x(self): + async def test_w3c_creds_list_storage_x(self): self.request.json = async_mock.CoroutineMock( return_value={ "types": [ @@ -388,7 +388,7 @@ async def test_dif_creds_list_storage_x(self): ) with self.assertRaises(test_module.web.HTTPBadRequest): - await test_module.dif_creds_list(self.request) + await test_module.w3c_creds_list(self.request) async def test_register(self): mock_app = async_mock.MagicMock() diff --git a/aries_cloudagent/ledger/routes.py b/aries_cloudagent/ledger/routes.py index 44dafdbdff..f7c48592d8 100644 --- a/aries_cloudagent/ledger/routes.py +++ b/aries_cloudagent/ledger/routes.py @@ -7,7 +7,7 @@ from ..admin.request_context import AdminRequestContext from ..messaging.models.openapi import OpenAPISchema -from ..messaging.valid import ENDPOINT_TYPE, DID, INDY_RAW_PUBLIC_KEY, INT_EPOCH +from ..messaging.valid import ENDPOINT_TYPE, INDY_DID, INDY_RAW_PUBLIC_KEY, INT_EPOCH from ..storage.error import StorageError from ..wallet.error import WalletError, WalletNotFoundError @@ -73,7 +73,7 @@ class RegisterLedgerNymQueryStringSchema(OpenAPISchema): did = fields.Str( description="DID to register", required=True, - **DID, + **INDY_DID, ) verkey = fields.Str( description="Verification key", required=True, **INDY_RAW_PUBLIC_KEY @@ -95,13 +95,13 @@ class RegisterLedgerNymQueryStringSchema(OpenAPISchema): class QueryStringDIDSchema(OpenAPISchema): """Parameters and validators for query string with DID only.""" - did = fields.Str(description="DID of interest", required=True, **DID) + did = fields.Str(description="DID of interest", required=True, **INDY_DID) class QueryStringEndpointSchema(OpenAPISchema): """Parameters and validators for query string with DID and endpoint type.""" - did = fields.Str(description="DID of interest", required=True, **DID) + did = fields.Str(description="DID of interest", required=True, **INDY_DID) endpoint_type = fields.Str( description=( f"Endpoint type of interest (default '{EndpointType.ENDPOINT.w3c}')" diff --git a/aries_cloudagent/messaging/credential_definitions/util.py b/aries_cloudagent/messaging/credential_definitions/util.py index b878ca0ac5..b3b8b48f79 100644 --- a/aries_cloudagent/messaging/credential_definitions/util.py +++ b/aries_cloudagent/messaging/credential_definitions/util.py @@ -4,7 +4,7 @@ from ..models.openapi import OpenAPISchema from ..valid import ( - DID, + INDY_DID, INDY_CRED_DEF_ID, INDY_SCHEMA_ID, INDY_VERSION, @@ -25,7 +25,7 @@ class CredDefQueryStringSchema(OpenAPISchema): schema_issuer_did = fields.Str( description="Schema issuer DID", required=False, - **DID, + **INDY_DID, ) schema_name = fields.Str( description="Schema name", @@ -38,7 +38,7 @@ class CredDefQueryStringSchema(OpenAPISchema): issuer_did = fields.Str( description="Issuer DID", required=False, - **DID, + **INDY_DID, ) cred_def_id = fields.Str( description="Credential definition id", diff --git a/aries_cloudagent/messaging/schemas/util.py b/aries_cloudagent/messaging/schemas/util.py index e7084afea1..9ca67fab4e 100644 --- a/aries_cloudagent/messaging/schemas/util.py +++ b/aries_cloudagent/messaging/schemas/util.py @@ -3,7 +3,7 @@ from marshmallow import fields from ..models.openapi import OpenAPISchema -from ..valid import DID, INDY_SCHEMA_ID, INDY_VERSION +from ..valid import INDY_DID, INDY_SCHEMA_ID, INDY_VERSION class SchemaQueryStringSchema(OpenAPISchema): @@ -17,7 +17,7 @@ class SchemaQueryStringSchema(OpenAPISchema): schema_issuer_did = fields.Str( description="Schema issuer DID", required=False, - **DID, + **INDY_DID, ) schema_name = fields.Str( description="Schema name", diff --git a/aries_cloudagent/messaging/tests/test_valid.py b/aries_cloudagent/messaging/tests/test_valid.py index a9b2a34d66..02e3cc9d1a 100644 --- a/aries_cloudagent/messaging/tests/test_valid.py +++ b/aries_cloudagent/messaging/tests/test_valid.py @@ -10,13 +10,13 @@ BASE64, BASE64URL, BASE64URL_NO_PAD, - DID, DID_KEY, DID_POSTURE, ENDPOINT, ENDPOINT_TYPE, INDY_CRED_DEF_ID, INDY_CRED_REV_ID, + INDY_DID, INDY_EXTRA_WQL, INDY_ISO8601_DATETIME, INDY_PREDICATE, @@ -100,20 +100,20 @@ def test_indy_rev_reg_size(self): INDY_REV_REG_SIZE["validate"](32767) INDY_REV_REG_SIZE["validate"](32768) - def test_decentralized_id(self): - non_dids = [ + def test_indy_did(self): + non_indy_dids = [ "Q4zqM7aXqm7gDQkUVLng9I", # 'I' not a base58 char "Q4zqM7aXqm7gDQkUVLng", # too short "Q4zqM7aXqm7gDQkUVLngZZZ", # too long "did:sov:Q4zqM7aXqm7gDQkUVLngZZZ", # too long + "did:other:Q4zqM7aXqm7gDQkUVLngZZZ", # specifies non-indy DID ] - for non_did in non_dids: + for non_indy_did in non_indy_dids: with self.assertRaises(ValidationError): - DID["validate"](non_did) + INDY_DID["validate"](non_indy_did) - DID["validate"]("Q4zqM7aXqm7gDQkUVLng9h") - DID["validate"]("did:sov:Q4zqM7aXqm7gDQkUVLng9h") - DID["validate"]("did:example:Q4zqM7aXqm7gDQkUVLng9h") + INDY_DID["validate"]("Q4zqM7aXqm7gDQkUVLng9h") + INDY_DID["validate"]("did:sov:Q4zqM7aXqm7gDQkUVLng9h") def test_indy_raw_public_key(self): non_indy_raw_public_keys = [ diff --git a/aries_cloudagent/messaging/valid.py b/aries_cloudagent/messaging/valid.py index 0359849f13..a22107d2e5 100644 --- a/aries_cloudagent/messaging/valid.py +++ b/aries_cloudagent/messaging/valid.py @@ -190,18 +190,18 @@ def __init__(self): ) -class DecentralizedId(Regexp): - """Validate value against DID.""" +class IndyDID(Regexp): + """Validate value against indy DID.""" EXAMPLE = "WgWxqztrNooG92RXvxSTWv" - PATTERN = rf"^(did:[^:]+:)?[{B58}]{{21,22}}$" + PATTERN = rf"^(did:sov:)?[{B58}]{{21,22}}$" def __init__(self): """Initializer.""" super().__init__( - DecentralizedId.PATTERN, - error="Value {input} is not a decentralized identifier (DID)", + IndyDID.PATTERN, + error="Value {input} is not an indy decentralized identifier (DID)", ) @@ -563,7 +563,7 @@ def __call__(self, value: str): JWT = {"validate": JSONWebToken(), "example": JSONWebToken.EXAMPLE} DID_KEY = {"validate": DIDKey(), "example": DIDKey.EXAMPLE} DID_POSTURE = {"validate": DIDPosture(), "example": DIDPosture.EXAMPLE} -DID = {"validate": DecentralizedId(), "example": DecentralizedId.EXAMPLE} +INDY_DID = {"validate": IndyDID(), "example": IndyDID.EXAMPLE} INDY_RAW_PUBLIC_KEY = { "validate": IndyRawPublicKey(), "example": IndyRawPublicKey.EXAMPLE, diff --git a/aries_cloudagent/protocols/connections/v1_0/messages/connection_invitation.py b/aries_cloudagent/protocols/connections/v1_0/messages/connection_invitation.py index 907828cdba..b81b05329e 100644 --- a/aries_cloudagent/protocols/connections/v1_0/messages/connection_invitation.py +++ b/aries_cloudagent/protocols/connections/v1_0/messages/connection_invitation.py @@ -6,7 +6,7 @@ from marshmallow import EXCLUDE, fields, validates_schema, ValidationError from .....messaging.agent_message import AgentMessage, AgentMessageSchema -from .....messaging.valid import DID, INDY_RAW_PUBLIC_KEY +from .....messaging.valid import INDY_DID, INDY_RAW_PUBLIC_KEY from .....wallet.util import b64_to_bytes, bytes_to_b64 from ..message_types import CONNECTION_INVITATION, PROTOCOL_PACKAGE @@ -103,7 +103,9 @@ class Meta: label = fields.Str( required=False, description="Optional label for connection", example="Bob" ) - did = fields.Str(required=False, description="DID for connection invitation", **DID) + did = fields.Str( + required=False, description="DID for connection invitation", **INDY_DID + ) recipient_keys = fields.List( fields.Str(description="Recipient public key", **INDY_RAW_PUBLIC_KEY), data_key="recipientKeys", diff --git a/aries_cloudagent/protocols/connections/v1_0/models/connection_detail.py b/aries_cloudagent/protocols/connections/v1_0/models/connection_detail.py index b20a8160d8..cdbac51cd7 100644 --- a/aries_cloudagent/protocols/connections/v1_0/models/connection_detail.py +++ b/aries_cloudagent/protocols/connections/v1_0/models/connection_detail.py @@ -4,7 +4,7 @@ from .....connections.models.diddoc import DIDDoc from .....messaging.models.base import BaseModel, BaseModelSchema -from .....messaging.valid import DID +from .....messaging.valid import INDY_DID class DIDDocWrapper(fields.Field): @@ -91,7 +91,10 @@ class Meta: unknown = EXCLUDE did = fields.Str( - data_key="DID", required=False, description="DID for connection detail", **DID + data_key="DID", + required=False, + description="DID for connection detail", + **INDY_DID ) did_doc = DIDDocWrapper( data_key="DIDDoc", diff --git a/aries_cloudagent/protocols/connections/v1_0/routes.py b/aries_cloudagent/protocols/connections/v1_0/routes.py index a90fffb6d7..7ff4e8d721 100644 --- a/aries_cloudagent/protocols/connections/v1_0/routes.py +++ b/aries_cloudagent/protocols/connections/v1_0/routes.py @@ -18,8 +18,8 @@ from ....messaging.models.base import BaseModelError from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import ( - DID, ENDPOINT, + INDY_DID, INDY_RAW_PUBLIC_KEY, UUIDFour, ) @@ -131,11 +131,11 @@ class ConnectionStaticRequestSchema(OpenAPISchema): """Request schema for a new static connection.""" my_seed = fields.Str(description="Seed to use for the local DID", required=False) - my_did = fields.Str(description="Local DID", required=False, **DID) + my_did = fields.Str(description="Local DID", required=False, **INDY_DID) their_seed = fields.Str( description="Seed to use for the remote DID", required=False ) - their_did = fields.Str(description="Remote DID", required=False, **DID) + their_did = fields.Str(description="Remote DID", required=False, **INDY_DID) their_verkey = fields.Str(description="Remote verification key", required=False) their_endpoint = fields.Str( description="URL endpoint for other party", required=False, **ENDPOINT @@ -149,12 +149,12 @@ class ConnectionStaticRequestSchema(OpenAPISchema): class ConnectionStaticResultSchema(OpenAPISchema): """Result schema for new static connection.""" - my_did = fields.Str(description="Local DID", required=True, **DID) + my_did = fields.Str(description="Local DID", required=True, **INDY_DID) mv_verkey = fields.Str( description="My verification key", required=True, **INDY_RAW_PUBLIC_KEY ) my_endpoint = fields.Str(description="My URL endpoint", required=True, **ENDPOINT) - their_did = fields.Str(description="Remote DID", required=True, **DID) + their_did = fields.Str(description="Remote DID", required=True, **INDY_DID) their_verkey = fields.Str( description="Remote verification key", required=True, **INDY_RAW_PUBLIC_KEY ) @@ -172,7 +172,7 @@ class ConnectionsListQueryStringSchema(OpenAPISchema): invitation_key = fields.Str( description="invitation key", required=False, **INDY_RAW_PUBLIC_KEY ) - my_did = fields.Str(description="My DID", required=False, **DID) + my_did = fields.Str(description="My DID", required=False, **INDY_DID) state = fields.Str( description="Connection state", required=False, @@ -180,7 +180,7 @@ class ConnectionsListQueryStringSchema(OpenAPISchema): {label for state in ConnRecord.State for label in state.value} ), ) - their_did = fields.Str(description="Their DID", required=False, **DID) + their_did = fields.Str(description="Their DID", required=False, **INDY_DID) their_role = fields.Str( description="Their role in the connection protocol", required=False, diff --git a/aries_cloudagent/protocols/didexchange/v1_0/messages/request.py b/aries_cloudagent/protocols/didexchange/v1_0/messages/request.py index 64a55f2251..f6fbc19976 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/messages/request.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/messages/request.py @@ -7,7 +7,7 @@ AttachDecorator, AttachDecoratorSchema, ) -from .....messaging.valid import DID +from .....messaging.valid import INDY_DID from ..message_types import DIDX_REQUEST, PROTOCOL_PACKAGE @@ -60,7 +60,7 @@ class Meta: description="Label for DID exchange request", example="Request to connect with Bob", ) - did = fields.Str(description="DID of exchange", **DID) + did = fields.Str(description="DID of exchange", **INDY_DID) did_doc_attach = fields.Nested( AttachDecoratorSchema, required=False, diff --git a/aries_cloudagent/protocols/didexchange/v1_0/messages/response.py b/aries_cloudagent/protocols/didexchange/v1_0/messages/response.py index 45e5e2f8ac..5d739bab40 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/messages/response.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/messages/response.py @@ -7,7 +7,7 @@ AttachDecorator, AttachDecoratorSchema, ) -from .....messaging.valid import DID +from .....messaging.valid import INDY_DID from ..message_types import DIDX_RESPONSE, PROTOCOL_PACKAGE @@ -52,7 +52,7 @@ class Meta: model_class = DIDXResponse unknown = EXCLUDE - did = fields.Str(description="DID of exchange", **DID) + did = fields.Str(description="DID of exchange", **INDY_DID) did_doc_attach = fields.Nested( AttachDecoratorSchema, required=False, diff --git a/aries_cloudagent/protocols/didexchange/v1_0/routes.py b/aries_cloudagent/protocols/didexchange/v1_0/routes.py index 3fd81869d6..9ee97a302c 100644 --- a/aries_cloudagent/protocols/didexchange/v1_0/routes.py +++ b/aries_cloudagent/protocols/didexchange/v1_0/routes.py @@ -17,7 +17,7 @@ from ....connections.models.conn_record import ConnRecord, ConnRecordSchema from ....messaging.models.base import BaseModelError from ....messaging.models.openapi import OpenAPISchema -from ....messaging.valid import DID, ENDPOINT, UUIDFour, UUID4 +from ....messaging.valid import ENDPOINT, INDY_DID, UUIDFour, UUID4 from ....storage.error import StorageError, StorageNotFoundError from ....wallet.error import WalletError @@ -42,7 +42,7 @@ class DIDXCreateRequestImplicitQueryStringSchema(OpenAPISchema): required=True, allow_none=False, description="Public DID to which to request connection", - **DID, + **INDY_DID, ) my_endpoint = fields.Str(description="My URL endpoint", required=False, **ENDPOINT) my_label = fields.Str( diff --git a/aries_cloudagent/protocols/issue_credential/indy/cred_request.py b/aries_cloudagent/protocols/issue_credential/indy/cred_request.py index d867e67909..07dcef3453 100644 --- a/aries_cloudagent/protocols/issue_credential/indy/cred_request.py +++ b/aries_cloudagent/protocols/issue_credential/indy/cred_request.py @@ -5,7 +5,7 @@ from marshmallow import EXCLUDE, fields from ....messaging.models.base import BaseModel, BaseModelSchema -from ....messaging.valid import DID, INDY_CRED_DEF_ID, NUM_STR_WHOLE +from ....messaging.valid import INDY_CRED_DEF_ID, INDY_DID, NUM_STR_WHOLE class IndyCredRequest(BaseModel): @@ -46,7 +46,7 @@ class Meta: prover_did = fields.Str( requred=True, description="Prover DID", - **DID, + **INDY_DID, ) cred_def_id = fields.Str( required=True, diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_proposal.py b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_proposal.py index 6ffd9062cb..1b5cc23e71 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_proposal.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/messages/credential_proposal.py @@ -3,7 +3,12 @@ from marshmallow import EXCLUDE, fields from .....messaging.agent_message import AgentMessage, AgentMessageSchema -from .....messaging.valid import DID, INDY_CRED_DEF_ID, INDY_SCHEMA_ID, INDY_VERSION +from .....messaging.valid import ( + INDY_CRED_DEF_ID, + INDY_DID, + INDY_SCHEMA_ID, + INDY_VERSION, +) from ..message_types import CREDENTIAL_PROPOSAL, PROTOCOL_PACKAGE @@ -79,8 +84,8 @@ class Meta: CredentialPreviewSchema, required=False, allow_none=False ) schema_id = fields.Str(required=False, allow_none=False, **INDY_SCHEMA_ID) - schema_issuer_did = fields.Str(required=False, allow_none=False, **DID) + schema_issuer_did = fields.Str(required=False, allow_none=False, **INDY_DID) schema_name = fields.Str(required=False, allow_none=False) schema_version = fields.Str(required=False, allow_none=False, **INDY_VERSION) cred_def_id = fields.Str(required=False, allow_none=False, **INDY_CRED_DEF_ID) - issuer_did = fields.Str(required=False, allow_none=False, **DID) + issuer_did = fields.Str(required=False, allow_none=False, **INDY_DID) diff --git a/aries_cloudagent/protocols/issue_credential/v1_0/routes.py b/aries_cloudagent/protocols/issue_credential/v1_0/routes.py index a1b146c1b1..8fa0f37de0 100644 --- a/aries_cloudagent/protocols/issue_credential/v1_0/routes.py +++ b/aries_cloudagent/protocols/issue_credential/v1_0/routes.py @@ -19,8 +19,8 @@ from ....messaging.credential_definitions.util import CRED_DEF_TAGS from ....messaging.models.base import BaseModelError, OpenAPISchema from ....messaging.valid import ( - DID, INDY_CRED_DEF_ID, + INDY_DID, INDY_SCHEMA_ID, INDY_VERSION, UUIDFour, @@ -117,7 +117,7 @@ class V10CredentialCreateSchema(AdminAPIMessageTracingSchema): description="Schema identifier", required=False, **INDY_SCHEMA_ID ) schema_issuer_did = fields.Str( - description="Schema issuer DID", required=False, **DID + description="Schema issuer DID", required=False, **INDY_DID ) schema_name = fields.Str( description="Schema name", required=False, example="preferences" @@ -125,7 +125,9 @@ class V10CredentialCreateSchema(AdminAPIMessageTracingSchema): schema_version = fields.Str( description="Schema version", required=False, **INDY_VERSION ) - issuer_did = fields.Str(description="Credential issuer DID", required=False, **DID) + issuer_did = fields.Str( + description="Credential issuer DID", required=False, **INDY_DID + ) auto_remove = fields.Bool( description=( "Whether to remove the credential exchange record on completion " @@ -161,7 +163,7 @@ class V10CredentialProposalRequestSchemaBase(AdminAPIMessageTracingSchema): description="Schema identifier", required=False, **INDY_SCHEMA_ID ) schema_issuer_did = fields.Str( - description="Schema issuer DID", required=False, **DID + description="Schema issuer DID", required=False, **INDY_DID ) schema_name = fields.Str( description="Schema name", required=False, example="preferences" @@ -169,7 +171,9 @@ class V10CredentialProposalRequestSchemaBase(AdminAPIMessageTracingSchema): schema_version = fields.Str( description="Schema version", required=False, **INDY_VERSION ) - issuer_did = fields.Str(description="Credential issuer DID", required=False, **DID) + issuer_did = fields.Str( + description="Credential issuer DID", required=False, **INDY_DID + ) auto_remove = fields.Bool( description=( "Whether to remove the credential exchange record on completion " diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py index eaf9378f4e..5ecb5f48b8 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/routes.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/routes.py @@ -21,8 +21,8 @@ from ....messaging.decorators.attach_decorator import AttachDecorator from ....messaging.models.base import BaseModelError, OpenAPISchema from ....messaging.valid import ( - DID, INDY_CRED_DEF_ID, + INDY_DID, INDY_SCHEMA_ID, INDY_VERSION, UUIDFour, @@ -134,7 +134,7 @@ class V20CredFilterIndySchema(OpenAPISchema): description="Schema identifier", required=False, **INDY_SCHEMA_ID ) schema_issuer_did = fields.Str( - description="Schema issuer DID", required=False, **DID + description="Schema issuer DID", required=False, **INDY_DID ) schema_name = fields.Str( description="Schema name", required=False, example="preferences" @@ -142,7 +142,9 @@ class V20CredFilterIndySchema(OpenAPISchema): schema_version = fields.Str( description="Schema version", required=False, **INDY_VERSION ) - issuer_did = fields.Str(description="Credential issuer DID", required=False, **DID) + issuer_did = fields.Str( + description="Credential issuer DID", required=False, **INDY_DID + ) class V20CredFilterDIFSchema(OpenAPISchema): diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py index 2699ca9e76..3214e353fc 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/messages/invitation.py @@ -20,7 +20,7 @@ AttachDecorator, AttachDecoratorSchema, ) -from .....messaging.valid import DID +from .....messaging.valid import INDY_DID from .....wallet.util import bytes_to_b64, b64_to_bytes from ....didcomm_prefix import DIDCommPrefix @@ -208,7 +208,7 @@ class Meta: ) service_blocks = fields.Nested(ServiceSchema, many=True) - service_dids = fields.List(fields.Str(description="Service DID", **DID)) + service_dids = fields.List(fields.Str(description="Service DID", **INDY_DID)) @validates_schema def validate_fields(self, data, **kwargs): diff --git a/aries_cloudagent/protocols/out_of_band/v1_0/messages/service.py b/aries_cloudagent/protocols/out_of_band/v1_0/messages/service.py index 4730f528c2..19a02d7788 100644 --- a/aries_cloudagent/protocols/out_of_band/v1_0/messages/service.py +++ b/aries_cloudagent/protocols/out_of_band/v1_0/messages/service.py @@ -5,7 +5,7 @@ from marshmallow import EXCLUDE, fields, post_dump from .....messaging.models.base import BaseModel, BaseModelSchema -from .....messaging.valid import DID, DID_KEY +from .....messaging.valid import DID_KEY, INDY_DID class Service(BaseModel): @@ -56,7 +56,7 @@ class Meta: _id = fields.Str(required=True, description="Service identifier", data_key="id") _type = fields.Str(required=True, description="Service type", data_key="type") - did = fields.Str(required=False, description="Service DID", **DID) + did = fields.Str(required=False, description="Service DID", **INDY_DID) recipient_keys = fields.List( fields.Str(description="Recipient public key", **DID_KEY), diff --git a/aries_cloudagent/protocols/present_proof/indy/proof_request.py b/aries_cloudagent/protocols/present_proof/indy/proof_request.py index 05b7d047c5..743b1bd246 100644 --- a/aries_cloudagent/protocols/present_proof/indy/proof_request.py +++ b/aries_cloudagent/protocols/present_proof/indy/proof_request.py @@ -4,8 +4,8 @@ from ....messaging.models.openapi import OpenAPISchema from ....messaging.valid import ( - DID, INDY_CRED_DEF_ID, + INDY_DID, INDY_PREDICATE, INDY_SCHEMA_ID, INDY_VERSION, @@ -20,7 +20,7 @@ class IndyProofReqPredSpecRestrictionsSchema(OpenAPISchema): description="Schema identifier", required=False, **INDY_SCHEMA_ID ) schema_issuer_did = fields.String( - description="Schema issuer (origin) DID", required=False, **DID + description="Schema issuer (origin) DID", required=False, **INDY_DID ) schema_name = fields.String( example="transcript", description="Schema name", required=False @@ -29,7 +29,7 @@ class IndyProofReqPredSpecRestrictionsSchema(OpenAPISchema): description="Schema version", required=False, **INDY_VERSION ) issuer_did = fields.String( - description="Credential issuer DID", required=False, **DID + description="Credential issuer DID", required=False, **INDY_DID ) cred_def_id = fields.String( description="Credential definition identifier", diff --git a/aries_cloudagent/revocation/models/issuer_rev_reg_record.py b/aries_cloudagent/revocation/models/issuer_rev_reg_record.py index b8abd8cca4..11be63d572 100644 --- a/aries_cloudagent/revocation/models/issuer_rev_reg_record.py +++ b/aries_cloudagent/revocation/models/issuer_rev_reg_record.py @@ -19,8 +19,8 @@ from ...messaging.models.base_record import BaseRecord, BaseRecordSchema from ...messaging.valid import ( BASE58_SHA256_HASH, - DID, INDY_CRED_DEF_ID, + INDY_DID, INDY_REV_REG_ID, UUIDFour, ) @@ -419,7 +419,7 @@ class Meta: description="Error message", example="Revocation registry undefined", ) - issuer_did = fields.Str(required=False, description="Issuer DID", **DID) + issuer_did = fields.Str(required=False, description="Issuer DID", **INDY_DID) max_cred_num = fields.Int( required=False, description="Maximum number of credentials for revocation registry", diff --git a/aries_cloudagent/storage/vc_holder/base.py b/aries_cloudagent/storage/vc_holder/base.py index 7e9ff14228..bafbbd259a 100644 --- a/aries_cloudagent/storage/vc_holder/base.py +++ b/aries_cloudagent/storage/vc_holder/base.py @@ -58,18 +58,20 @@ def search_credentials( types: Sequence[str] = None, schema_ids: str = None, issuer_id: str = None, - subject_id: str = None, + subject_ids: str = None, + given_id: str = None, tag_query: Mapping = None, ) -> "VCRecordSearch": """ Start a new VC record search. Args: - contexts: An inclusive list of JSON-LD contexts to filter for - types: An inclusive list of JSON-LD types to filter for + contexts: An inclusive list of JSON-LD contexts to match + types: An inclusive list of JSON-LD types to match schema_ids: An inclusive list of credential schema identifiers issuer_id: The ID of the credential issuer - subject_id: The ID of one of the credential subjects + subject_ids: The IDs of any credential subjects all of which to match + given_id: The given id of the credential tag_query: A tag filter clause """ diff --git a/aries_cloudagent/storage/vc_holder/in_memory.py b/aries_cloudagent/storage/vc_holder/in_memory.py index e92cb674f2..8ca53e2a43 100644 --- a/aries_cloudagent/storage/vc_holder/in_memory.py +++ b/aries_cloudagent/storage/vc_holder/in_memory.py @@ -7,8 +7,8 @@ from ..in_memory import InMemoryStorage, InMemoryStorageSearch from .base import VCHolder, VCRecordSearch -from .serde import load_credential, serialize_credential, VC_CRED_RECORD_TYPE from .vc_record import VCRecord +from .xform import storage_to_vc_record, vc_to_storage_record, VC_CRED_RECORD_TYPE class InMemoryVCHolder(VCHolder): @@ -29,7 +29,7 @@ async def store_credential(self, cred: VCRecord): StorageDuplicateError: If the record_id is not unique """ - record = serialize_credential(cred) + record = vc_to_storage_record(cred) await self._store.add_record(record) async def retrieve_credential_by_id(self, record_id: str) -> VCRecord: @@ -41,7 +41,7 @@ async def retrieve_credential_by_id(self, record_id: str) -> VCRecord: """ record = await self._store.get_record(VC_CRED_RECORD_TYPE, record_id) - return load_credential(record) + return storage_to_vc_record(record) async def retrieve_credential_by_given_id(self, given_id: str) -> VCRecord: """ @@ -54,7 +54,7 @@ async def retrieve_credential_by_given_id(self, given_id: str) -> VCRecord: record = await self._store.find_record( VC_CRED_RECORD_TYPE, {"given_id": given_id} ) - return load_credential(record) + return storage_to_vc_record(record) async def delete_credential(self, cred: VCRecord): """ @@ -64,7 +64,7 @@ async def delete_credential(self, cred: VCRecord): StorageNotFoundError: If the record is not found """ - await self._store.delete_record(serialize_credential(cred)) + await self._store.delete_record(vc_to_storage_record(cred)) def search_credentials( self, @@ -72,18 +72,20 @@ def search_credentials( types: Sequence[str] = None, schema_ids: str = None, issuer_id: str = None, - subject_id: str = None, + subject_ids: str = None, + given_id: str = None, tag_query: Mapping = None, ) -> "VCRecordSearch": """ Start a new VC record search. Args: - contexts: An inclusive list of JSON-LD contexts to filter for - types: An inclusive list of JSON-LD types to filter for + contexts: An inclusive list of JSON-LD contexts to match + types: An inclusive list of JSON-LD types to match schema_ids: An inclusive list of credential schema identifiers issuer_id: The ID of the credential issuer - subject_id: The ID of one of the credential subjects + subject_ids: The IDs of credential subjects all of which to match + given_id: The given id of the credential tag_query: A tag filter clause """ @@ -97,10 +99,13 @@ def search_credentials( if schema_ids: for schema_val in schema_ids: query[f"schm:{schema_val}"] = "1" - if subject_id: - query[f"subj:{subject_id}"] = "1" + if subject_ids: + for subject_id in subject_ids: + query[f"subj:{subject_id}"] = "1" if issuer_id: query["issuer_id"] = issuer_id + if given_id: + query["given_id"] = given_id if tag_query: query.update(tag_query) search = self._store.search_records(VC_CRED_RECORD_TYPE, query) @@ -127,4 +132,4 @@ async def fetch(self, max_count: int = None) -> Sequence[VCRecord]: """ rows = await self._search.fetch(max_count) - return [load_credential(r) for r in rows] + return [storage_to_vc_record(r) for r in rows] diff --git a/aries_cloudagent/storage/vc_holder/indy.py b/aries_cloudagent/storage/vc_holder/indy.py index 84e499f241..bce1f58e0f 100644 --- a/aries_cloudagent/storage/vc_holder/indy.py +++ b/aries_cloudagent/storage/vc_holder/indy.py @@ -7,8 +7,8 @@ from ..indy import IndySdkStorage, IndySdkStorageSearch from .base import VCHolder, VCRecordSearch -from .serde import load_credential, serialize_credential, VC_CRED_RECORD_TYPE from .vc_record import VCRecord +from .xform import storage_to_vc_record, vc_to_storage_record, VC_CRED_RECORD_TYPE class IndySdkVCHolder(VCHolder): @@ -29,7 +29,7 @@ async def store_credential(self, cred: VCRecord): StorageDuplicateError: If the record_id is not unique """ - record = serialize_credential(cred) + record = vc_to_storage_record(cred) await self._store.add_record(record) async def retrieve_credential_by_id(self, record_id: str) -> VCRecord: @@ -41,7 +41,7 @@ async def retrieve_credential_by_id(self, record_id: str) -> VCRecord: """ record = await self._store.get_record(VC_CRED_RECORD_TYPE, record_id) - return load_credential(record) + return storage_to_vc_record(record) async def retrieve_credential_by_given_id(self, given_id: str) -> VCRecord: """ @@ -54,7 +54,7 @@ async def retrieve_credential_by_given_id(self, given_id: str) -> VCRecord: record = await self._store.find_record( VC_CRED_RECORD_TYPE, {"given_id": given_id} ) - return load_credential(record) + return storage_to_vc_record(record) async def delete_credential(self, cred: VCRecord): """ @@ -64,7 +64,7 @@ async def delete_credential(self, cred: VCRecord): StorageNotFoundError: If the record is not found """ - await self._store.delete_record(serialize_credential(cred)) + await self._store.delete_record(vc_to_storage_record(cred)) def search_credentials( self, @@ -72,18 +72,20 @@ def search_credentials( types: Sequence[str] = None, schema_ids: Sequence[str] = None, issuer_id: str = None, - subject_id: str = None, + subject_ids: str = None, + given_id: str = None, tag_query: Mapping = None, ) -> "VCRecordSearch": """ Start a new VC record search. Args: - contexts: An inclusive list of JSON-LD contexts to filter for - types: An inclusive list of JSON-LD types to filter for + contexts: An inclusive list of JSON-LD contexts to match + types: An inclusive list of JSON-LD types to match schema_ids: An inclusive list of credential schema identifiers issuer_id: The ID of the credential issuer - subject_id: The ID of one of the credential subjects + subject_ids: The IDs of credential subjects all of which to match + given_id: The given id of the credential tag_query: A tag filter clause """ @@ -97,10 +99,13 @@ def search_credentials( if schema_ids: for schema_val in schema_ids: query[f"schm:{schema_val}"] = "1" - if subject_id: - query[f"subj:{subject_id}"] = "1" + if subject_ids: + for subject_id in subject_ids: + query[f"subj:{subject_id}"] = "1" if issuer_id: query["issuer_id"] = issuer_id + if given_id: + query["given_id"] = given_id if tag_query: query.update(tag_query) search = self._store.search_records(VC_CRED_RECORD_TYPE, query) @@ -131,4 +136,4 @@ async def fetch(self, max_count: int = None) -> Sequence[VCRecord]: """ rows = await self._search.fetch(max_count) - return [load_credential(r) for r in rows] + return [storage_to_vc_record(r) for r in rows] diff --git a/aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py b/aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py index 17b214a859..a8cbd43c8c 100644 --- a/aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py +++ b/aries_cloudagent/storage/vc_holder/tests/test_in_memory_vc_holder.py @@ -40,7 +40,7 @@ def test_record() -> VCRecord: subject_ids=[VC_SUBJECT_ID], given_id=VC_GIVEN_ID, cred_tags={"tag": "value"}, - value_json="{}", + cred_value={"...": "..."}, ) @@ -98,8 +98,9 @@ async def test_search(self, holder: VCHolder): contexts=[VC_CONTEXT], types=[VC_TYPE], schema_ids=[VC_SCHEMA_ID], - subject_id=VC_SUBJECT_ID, + subject_ids=[VC_SUBJECT_ID], issuer_id=VC_ISSUER_ID, + given_id=VC_GIVEN_ID, tag_query={"tag": "value"}, ) rows = await search.fetch() @@ -114,10 +115,13 @@ async def test_search(self, holder: VCHolder): rows = await holder.search_credentials(schema_ids=["other schema"]).fetch() assert not rows - rows = await holder.search_credentials(subject_id="other subject").fetch() + rows = await holder.search_credentials(subject_ids=["other subject"]).fetch() assert not rows rows = await holder.search_credentials(issuer_id="other issuer").fetch() assert not rows + rows = await holder.search_credentials(given_id="other given id").fetch() + assert not rows + await search.close() diff --git a/aries_cloudagent/storage/vc_holder/tests/test_vc_record.py b/aries_cloudagent/storage/vc_holder/tests/test_vc_record.py index 2b77f8cc93..3e7457e70f 100644 --- a/aries_cloudagent/storage/vc_holder/tests/test_vc_record.py +++ b/aries_cloudagent/storage/vc_holder/tests/test_vc_record.py @@ -6,32 +6,32 @@ from ..vc_record import VCRecord -contexts = [ +CONTEXTS = [ "https://www.w3.org/2018/credentials/v1", "https://www.w3.org/2018/credentials/examples/v1", ] -types = [ +TYPES = [ "https://www.w3.org/2018/credentials/v1/VerifiableCredential", "https://www.w3.org/2018/credentials/examples/v1/UniversityDegreeCredential", ] -issuer_id = "https://example.edu/issuers/14" -subject_ids = ["did:example:ebfeb1f712ebc6f1c276e12ec21"] -schema_ids = ["https://example.org/examples/degree.json"] -given_id = "http://example.edu/credentials/3732" -cred_tags = {"tag": "value"} -value_json = json.dumps({}) +ISSUER_ID = "https://example.edu/issuers/14" +SUBJECT_IDS = ["did:example:ebfeb1f712ebc6f1c276e12ec21"] +SCHEMA_IDS = ["https://example.org/examples/degree.json"] +GIVEN_ID = "http://example.edu/credentials/3732" +CRED_TAGS = {"tag": "value"} +CRED_VALUE = {"...": "..."} def test_record() -> VCRecord: return VCRecord( - contexts=contexts, - types=types, - schema_ids=schema_ids, - issuer_id=issuer_id, - subject_ids=subject_ids, - value_json=value_json, - given_id=given_id, - cred_tags=cred_tags, + contexts=CONTEXTS, + types=TYPES, + schema_ids=SCHEMA_IDS, + issuer_id=ISSUER_ID, + subject_ids=SUBJECT_IDS, + cred_value=CRED_VALUE, + given_id=GIVEN_ID, + cred_tags=CRED_TAGS, ) @@ -39,15 +39,15 @@ class TestVCRecord(AsyncTestCase): def test_create(self): record = test_record() - assert record.contexts == set(contexts) - assert record.types == set(types) - assert record.schema_ids == set(schema_ids) - assert record.subject_ids == set(subject_ids) - assert record.issuer_id == issuer_id - assert record.given_id == given_id + assert record.contexts == set(CONTEXTS) + assert record.types == set(TYPES) + assert record.schema_ids == set(SCHEMA_IDS) + assert record.subject_ids == set(SUBJECT_IDS) + assert record.issuer_id == ISSUER_ID + assert record.given_id == GIVEN_ID assert record.record_id and type(record.record_id) is str - assert record.cred_tags == cred_tags - assert record.value_json == value_json + assert record.cred_tags == CRED_TAGS + assert record.cred_value == CRED_VALUE def test_eq(self): record_a = test_record() @@ -60,14 +60,6 @@ def test_eq(self): record_b.contexts.clear() assert record_a != record_b - record_a = test_record() - record_b = test_record() - record_b.record_id = record_a.record_id - value = {"a": 0, "b": 1} - record_a.value = json.dumps(value, separators=(",", ":")) - record_b.value = json.dumps(value, separators=(", ", ": ")) - assert record_a == record_b - async def test_serde(self): obj = test_record().serialize() record = VCRecord.deserialize(obj) diff --git a/aries_cloudagent/storage/vc_holder/vc_record.py b/aries_cloudagent/storage/vc_holder/vc_record.py index 9386fe278b..cef90b14db 100644 --- a/aries_cloudagent/storage/vc_holder/vc_record.py +++ b/aries_cloudagent/storage/vc_holder/vc_record.py @@ -1,15 +1,14 @@ """Model for representing a stored verifiable credential.""" -import json import logging -from typing import Sequence +from typing import Mapping, Sequence from uuid import uuid4 from marshmallow import EXCLUDE, fields from ...messaging.models.base import BaseModel, BaseModelSchema -from ...messaging.valid import DecentralizedId, ENDPOINT, JSON_DUMP, UUIDFour +from ...messaging.valid import ENDPOINT, UUIDFour LOGGER = logging.getLogger(__name__) @@ -30,9 +29,9 @@ def __init__( issuer_id: str, # issuer ID is required by spec subject_ids: Sequence[str], # one or more subject IDs may be present schema_ids: Sequence[str], # one or more credential schema IDs may be present - value_json: str, # the credential encoded as a serialized JSON string + cred_value: Mapping, # the credential value as a JSON-serializable mapping given_id: str = None, # value of the credential 'id' property, if any - cred_tags: dict = None, # tags for retrieval (derived from attribute values) + cred_tags: Mapping = None, # tags for retrieval (derived from attribute values) record_id: str = None, # specify the storage record ID ): """Initialize some defaults on record.""" @@ -42,7 +41,7 @@ def __init__( self.schema_ids = set(schema_ids) if schema_ids else set() self.issuer_id = issuer_id self.subject_ids = set(subject_ids) if subject_ids else set() - self.value_json = value_json + self.cred_value = cred_value self.given_id = given_id self.cred_tags = cred_tags or {} self.record_id = record_id or uuid4().hex @@ -79,7 +78,7 @@ def __eq__(self, other: object) -> bool: and other.given_id == self.given_id and other.record_id == self.record_id and other.cred_tags == self.cred_tags - and json.loads(other.value_json) == json.loads(self.value_json) + and other.cred_value == self.cred_value ) @@ -107,7 +106,7 @@ class Meta: ) issuer_id = fields.Str( description="Issuer identifier", - example=DecentralizedId.EXAMPLE, + example="https://example.edu/issuers/14", ) subject_ids = fields.List( fields.Str( @@ -115,7 +114,7 @@ class Meta: example="did:example:ebfeb1f712ebc6f1c276e12ec21", ) ) - value_json = fields.Str(description="(JSON) credential value", **JSON_DUMP) + cred_value = fields.Dict(description="(JSON-serializable) credential value") given_id = fields.Str( description="Credential identifier", example="http://example.edu/credentials/3732", diff --git a/aries_cloudagent/storage/vc_holder/serde.py b/aries_cloudagent/storage/vc_holder/xform.py similarity index 82% rename from aries_cloudagent/storage/vc_holder/serde.py rename to aries_cloudagent/storage/vc_holder/xform.py index 8d33ac1595..7c9d6d66d9 100644 --- a/aries_cloudagent/storage/vc_holder/serde.py +++ b/aries_cloudagent/storage/vc_holder/xform.py @@ -1,4 +1,6 @@ -"""De/serialization between StorageRecord and VCRecord.""" +"""Transformation between StorageRecord and VCRecord.""" + +import json from aries_cloudagent.storage.record import StorageRecord @@ -7,7 +9,7 @@ VC_CRED_RECORD_TYPE = "vc_cred" -def load_credential(record: StorageRecord) -> VCRecord: +def storage_to_vc_record(record: StorageRecord) -> VCRecord: """Convert an Indy-SDK stored record into a VC record.""" cred_tags = {} contexts = [] @@ -37,14 +39,14 @@ def load_credential(record: StorageRecord) -> VCRecord: schema_ids=schema_ids, issuer_id=issuer_id, subject_ids=subject_ids, - value_json=record.value, + cred_value=json.loads(record.value), given_id=given_id, cred_tags=cred_tags, record_id=record.id, ) -def serialize_credential(cred: VCRecord) -> StorageRecord: +def vc_to_storage_record(cred: VCRecord) -> StorageRecord: """Convert a VC record into an in-memory stored record.""" tags = {} for ctx_val in cred.contexts: @@ -61,4 +63,10 @@ def serialize_credential(cred: VCRecord) -> StorageRecord: tags["given_id"] = cred.given_id if cred.cred_tags: tags.update(cred.cred_tags) - return StorageRecord(VC_CRED_RECORD_TYPE, cred.value_json, tags, cred.record_id) + + return StorageRecord( + VC_CRED_RECORD_TYPE, + json.dumps(cred.cred_value), + tags, + cred.record_id, + ) diff --git a/aries_cloudagent/wallet/routes.py b/aries_cloudagent/wallet/routes.py index d0152877ca..990292224a 100644 --- a/aries_cloudagent/wallet/routes.py +++ b/aries_cloudagent/wallet/routes.py @@ -21,7 +21,7 @@ ENDPOINT, ENDPOINT_TYPE, INDY_CRED_DEF_ID, - DID, + INDY_DID, INDY_RAW_PUBLIC_KEY, ) from ..multitenant.manager import MultitenantManager @@ -38,7 +38,7 @@ class WalletModuleResponseSchema(OpenAPISchema): class DIDSchema(OpenAPISchema): """Result schema for a DID.""" - did = fields.Str(description="DID of interest", **DID) + did = fields.Str(description="DID of interest", **INDY_DID) verkey = fields.Str(description="Public verification key", **INDY_RAW_PUBLIC_KEY) posture = fields.Str( description=( @@ -65,7 +65,7 @@ class DIDListSchema(OpenAPISchema): class DIDEndpointWithTypeSchema(OpenAPISchema): """Request schema to set DID endpoint of particular type.""" - did = fields.Str(description="DID of interest", required=True, **DID) + did = fields.Str(description="DID of interest", required=True, **INDY_DID) endpoint = fields.Str( description="Endpoint to set (omit to delete)", required=False, **ENDPOINT ) @@ -82,7 +82,7 @@ class DIDEndpointWithTypeSchema(OpenAPISchema): class DIDEndpointSchema(OpenAPISchema): """Request schema to set DID endpoint; response schema to get DID endpoint.""" - did = fields.Str(description="DID of interest", required=True, **DID) + did = fields.Str(description="DID of interest", required=True, **INDY_DID) endpoint = fields.Str( description="Endpoint to set (omit to delete)", required=False, **ENDPOINT ) @@ -91,7 +91,7 @@ class DIDEndpointSchema(OpenAPISchema): class DIDListQueryStringSchema(OpenAPISchema): """Parameters and validators for DID list request query string.""" - did = fields.Str(description="DID of interest", required=False, **DID) + did = fields.Str(description="DID of interest", required=False, **INDY_DID) verkey = fields.Str( description="Verification key of interest", required=False, @@ -111,7 +111,7 @@ class DIDListQueryStringSchema(OpenAPISchema): class DIDQueryStringSchema(OpenAPISchema): """Parameters and validators for set public DID request query string.""" - did = fields.Str(description="DID of interest", required=True, **DID) + did = fields.Str(description="DID of interest", required=True, **INDY_DID) class CredDefIdMatchInfoSchema(OpenAPISchema): From 52e174336e40e5f5e11a85f5e3ff853bf51e2a72 Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 23 Mar 2021 13:37:26 +0000 Subject: [PATCH 143/243] remove JSONDump: we do not need it Signed-off-by: sklump --- .../messaging/tests/test_valid.py | 21 --------------- aries_cloudagent/messaging/valid.py | 26 ------------------- 2 files changed, 47 deletions(-) diff --git a/aries_cloudagent/messaging/tests/test_valid.py b/aries_cloudagent/messaging/tests/test_valid.py index 02e3cc9d1a..1a07410719 100644 --- a/aries_cloudagent/messaging/tests/test_valid.py +++ b/aries_cloudagent/messaging/tests/test_valid.py @@ -27,7 +27,6 @@ INDY_VERSION, INDY_WQL, INT_EPOCH, - JSON_DUMP, NATURAL_NUM, NUM_STR_NATURAL, NUM_STR_WHOLE, @@ -496,23 +495,3 @@ def test_endpoint_type(self): ENDPOINT_TYPE["validate"]("Endpoint") ENDPOINT_TYPE["validate"]("Profile") ENDPOINT_TYPE["validate"]("LinkedDomains") - - def test_json_dump(self): - non_json_dumps = [ - "nope", - "[a, b, c]", - "{1, 2, 3}", - set(), - None, - "", - False, - ] - for non_json_dump in non_json_dumps: - with self.assertRaises(ValidationError): - JSON_DUMP["validate"](non_json_dump) - - JSON_DUMP["validate"](json.dumps({})) - JSON_DUMP["validate"](json.dumps({"a": "1234"})) - JSON_DUMP["validate"](json.dumps({"a": "1234", "b": {"$not": "0"}})) - JSON_DUMP["validate"](json.dumps(["zero", "one", "two"])) - JSON_DUMP["validate"](json.dumps("encoded string")) diff --git a/aries_cloudagent/messaging/valid.py b/aries_cloudagent/messaging/valid.py index a22107d2e5..b97e71fa23 100644 --- a/aries_cloudagent/messaging/valid.py +++ b/aries_cloudagent/messaging/valid.py @@ -524,31 +524,6 @@ def __init__(self): ) -class JSONDump(Regexp): # using Regexp brings in nice visual validator cue - """Validate value as JSON dump.""" - - EXAMPLE = json.dumps({"abc": 123}) - - def __init__(self): - """Initializer.""" - - super().__init__( - ".*", - error="Value {input} is not a valid WQL query", - ) - - def __call__(self, value: str): - """Validate input value.""" - - message = f"Value {value} is not a valid JSON dump" - try: - json.loads(value) - except (json.JSONDecodeError, TypeError): - raise ValidationError(message) - - return value - - # Instances for marshmallow schema specification INT_EPOCH = {"validate": IntEpoch(), "example": IntEpoch.EXAMPLE} WHOLE_NUM = {"validate": WholeNumber(), "example": WholeNumber.EXAMPLE} @@ -591,4 +566,3 @@ def __call__(self, value: str): UUID4 = {"validate": UUIDFour(), "example": UUIDFour.EXAMPLE} ENDPOINT = {"validate": Endpoint(), "example": Endpoint.EXAMPLE} ENDPOINT_TYPE = {"validate": EndpointType(), "example": EndpointType.EXAMPLE} -JSON_DUMP = {"validate": JSONDump(), "example": JSONDump.EXAMPLE} From ec1c9b32f794f97c35599ca6cc5955bf1a1d7dc6 Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 23 Mar 2021 13:45:05 +0000 Subject: [PATCH 144/243] touch up indy DID unit test Signed-off-by: sklump --- aries_cloudagent/messaging/tests/test_valid.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aries_cloudagent/messaging/tests/test_valid.py b/aries_cloudagent/messaging/tests/test_valid.py index 1a07410719..cd154134a6 100644 --- a/aries_cloudagent/messaging/tests/test_valid.py +++ b/aries_cloudagent/messaging/tests/test_valid.py @@ -105,7 +105,7 @@ def test_indy_did(self): "Q4zqM7aXqm7gDQkUVLng", # too short "Q4zqM7aXqm7gDQkUVLngZZZ", # too long "did:sov:Q4zqM7aXqm7gDQkUVLngZZZ", # too long - "did:other:Q4zqM7aXqm7gDQkUVLngZZZ", # specifies non-indy DID + "did:other:Q4zqM7aXqm7gDQkUVLng9h", # specifies non-indy DID ] for non_indy_did in non_indy_dids: with self.assertRaises(ValidationError): From 2bbe63f336f2379cee4d101572144e226101ff20 Mon Sep 17 00:00:00 2001 From: sklump Date: Tue, 23 Mar 2021 18:23:24 +0000 Subject: [PATCH 145/243] work in progress Signed-off-by: sklump --- aries_cloudagent/ledger/tests/test_indy.py | 66 ++++++++++++++++++++-- 1 file changed, 62 insertions(+), 4 deletions(-) diff --git a/aries_cloudagent/ledger/tests/test_indy.py b/aries_cloudagent/ledger/tests/test_indy.py index ebd680d4a1..85cf5ea2b8 100644 --- a/aries_cloudagent/ledger/tests/test_indy.py +++ b/aries_cloudagent/ledger/tests/test_indy.py @@ -1,9 +1,10 @@ import asyncio import json -from os import path import tempfile import pytest +from os import path + from asynctest import TestCase as AsyncTestCase from asynctest import mock as async_mock @@ -266,15 +267,17 @@ async def test_submit_pool_closed( @async_mock.patch("indy.pool.open_pool_ledger") @async_mock.patch("indy.pool.close_pool_ledger") @async_mock.patch("indy.ledger.sign_and_submit_request") + @async_mock.patch("indy.ledger.multi_sign_request") async def test_submit_signed( self, + mock_indy_multi_sign, mock_sign_submit, mock_close_pool, mock_open_ledger, mock_create_config, mock_set_proto, ): - + mock_indy_multi_sign.return_value = json.dumps({"endorsed": "content"}) mock_sign_submit.return_value = '{"op": "REPLY"}' mock_wallet = async_mock.MagicMock() @@ -292,14 +295,31 @@ async def test_submit_signed( mock_did = mock_wallet.get_public_did.return_value mock_did.did = self.test_did - await ledger._submit("{}", True, False) + await ledger._submit( + request_json="{}", + sign=True, + taa_accept=False, + ) mock_wallet.get_public_did.assert_called_once_with() - mock_sign_submit.assert_called_once_with( ledger.pool_handle, mock_wallet.opened.handle, mock_did.did, "{}" ) + result_json = await ledger._submit( # multi-sign for later endorsement + request_json="{}", + sign=True, + taa_accept=False, + write_ledger=False, + ) + assert json.loads(result_json) == {"endorsed": "content"} + + await ledger.txn_submit( # cover txn_submit() + request_json="{}", + sign=True, + taa_accept=False, + ) + @async_mock.patch("indy.pool.set_protocol_version") @async_mock.patch("indy.pool.create_pool_ledger_config") @async_mock.patch("indy.pool.open_pool_ledger") @@ -462,6 +482,44 @@ async def test_submit_rejected( await ledger._submit("{}", False) assert "Ledger rejected transaction request" in str(context.exception) + @async_mock.patch("indy.pool.set_protocol_version") + @async_mock.patch("indy.pool.create_pool_ledger_config") + @async_mock.patch("indy.pool.open_pool_ledger") + @async_mock.patch("indy.pool.close_pool_ledger") + @async_mock.patch("indy.ledger.multi_sign_request") + async def test_txn_endorse( + self, + mock_indy_multi_sign, + mock_indy_close, + mock_indy_open, + mock_create_config, + mock_set_proto, + ): + mock_indy_multi_sign.return_value = json.dumps({"endorsed": "content"}) + mock_indy_open.return_value = 1 + + mock_wallet = async_mock.MagicMock( + get_public_did=async_mock.CoroutineMock(return_value=None) + ) + ledger = IndySdkLedger(IndySdkLedgerPool("name", checked=True), mock_wallet) + + with self.assertRaises(ClosedPoolError): + await ledger.txn_endorse(request_json=json.dumps({"...": "..."})) + + async with ledger: + with self.assertRaises(BadLedgerRequestError): + await ledger.txn_endorse(request_json=json.dumps({"...": "..."})) + + mock_wallet.get_public_did.return_value = TestIndySdkLedger.test_did_info + + endorsed_json = await ledger.txn_endorse( + request_json=json.dumps({"...": "..."}) + ) + assert json.loads(endorsed_json) == {"endorsed": "content"} + + ''' + # 463, 470, 731, 738 TODO + ''' @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_close") @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedger._submit") From dd40c134c51c126de1945f2fd6250244feecf98b Mon Sep 17 00:00:00 2001 From: sklump Date: Wed, 24 Mar 2021 12:24:50 +0000 Subject: [PATCH 146/243] cover ledger endorse-transactions code; wallet util to abbreviate verkey Signed-off-by: sklump --- aries_cloudagent/ledger/tests/test_indy.py | 452 +++++++++++++++------ aries_cloudagent/wallet/tests/test_util.py | 14 +- aries_cloudagent/wallet/util.py | 8 +- 3 files changed, 348 insertions(+), 126 deletions(-) diff --git a/aries_cloudagent/ledger/tests/test_indy.py b/aries_cloudagent/ledger/tests/test_indy.py index 85cf5ea2b8..c2294c8f8e 100644 --- a/aries_cloudagent/ledger/tests/test_indy.py +++ b/aries_cloudagent/ledger/tests/test_indy.py @@ -123,7 +123,10 @@ async def test_init( mock_create_config.assert_called_once_with( "name", json.dumps({"genesis_txn": GENESIS_TRANSACTION_PATH}) ) - assert ledger.did_to_nym(ledger.nym_to_did(self.test_did)) == self.test_did + assert ( + ledger.did_to_nym(ledger.nym_to_did(TestIndySdkLedger.test_did)) + == TestIndySdkLedger.test_did + ) @async_mock.patch("indy.pool.create_pool_ledger_config") @async_mock.patch("indy.pool.list_pools") @@ -293,7 +296,7 @@ async def test_submit_signed( mock_wallet.get_public_did = async_mock.CoroutineMock() mock_did = mock_wallet.get_public_did.return_value - mock_did.did = self.test_did + mock_did.did = TestIndySdkLedger.test_did await ledger._submit( request_json="{}", @@ -355,13 +358,13 @@ async def test_submit_signed_taa_accept( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock() mock_did = mock_wallet.get_public_did.return_value - mock_did.did = self.test_did + mock_did.did = TestIndySdkLedger.test_did await ledger._submit( request_json="{}", sign=None, taa_accept=True, - sign_did=self.test_did_info, + sign_did=TestIndySdkLedger.test_did_info, ) mock_wallet.get_public_did.assert_not_called() @@ -369,7 +372,10 @@ async def test_submit_signed_taa_accept( "{}", "sample", "0.0", "digest", "dummy", "now" ) mock_sign_submit.assert_called_once_with( - ledger.pool_handle, ledger.wallet.opened.handle, self.test_did, "{}" + ledger.pool_handle, + ledger.wallet.opened.handle, + TestIndySdkLedger.test_did, + "{}", ) @async_mock.patch("indy.pool.set_protocol_version") @@ -517,9 +523,6 @@ async def test_txn_endorse( ) assert json.loads(endorsed_json) == {"endorsed": "content"} - ''' - # 463, 470, 731, 738 TODO - ''' @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_close") @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedger._submit") @@ -529,8 +532,10 @@ async def test_txn_endorse( ) @async_mock.patch("aries_cloudagent.storage.indy.IndySdkStorage.add_record") @async_mock.patch("indy.ledger.build_schema_request") + @async_mock.patch("indy.ledger.append_request_endorser") async def test_send_schema( self, + mock_append_request_endorser, mock_build_schema_req, mock_add_record, mock_fetch_schema_by_seq_no, @@ -563,7 +568,7 @@ async def test_send_schema( mock_wallet.get_public_did = async_mock.CoroutineMock() mock_did = mock_wallet.get_public_did.return_value - mock_did.did = self.test_did + mock_did.did = TestIndySdkLedger.test_did schema_id, schema_def = await ledger.create_and_send_schema( issuer, "schema_name", "schema_version", [1, 2, 3] @@ -587,6 +592,17 @@ async def test_send_schema( assert schema_id == issuer.create_schema.return_value[0] + schema_id, signed_txn = await ledger.create_and_send_schema( + issuer=issuer, + schema_name="schema_name", + schema_version="schema_version", + attribute_names=[1, 2, 3], + write_ledger=False, + endorser_did=TestIndySdkLedger.test_did, + ) + assert schema_id == issuer.create_schema.return_value[0] + assert "signed_txn" in signed_txn + @async_mock.patch("indy.pool.set_protocol_version") @async_mock.patch("indy.pool.create_pool_ledger_config") @async_mock.patch("indy.pool.open_pool_ledger") @@ -838,7 +854,7 @@ async def test_send_schema_no_seq_no( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock() mock_did = mock_wallet.get_public_did.return_value - mock_did.did = self.test_did + mock_did.did = TestIndySdkLedger.test_did with self.assertRaises(LedgerError) as context: await ledger.create_and_send_schema( @@ -858,23 +874,23 @@ async def test_check_existing_schema( mock_wallet = async_mock.MagicMock() mock_wallet.get_public_did = async_mock.CoroutineMock() mock_did = mock_wallet.get_public_did.return_value - mock_did.did = self.test_did + mock_did.did = TestIndySdkLedger.test_did mock_fetch_schema_by_id.return_value = {"attrNames": ["a", "b", "c"]} ledger = IndySdkLedger(IndySdkLedgerPool("name", checked=True), mock_wallet) async with ledger: schema_id, schema_def = await ledger.check_existing_schema( - public_did=self.test_did, + public_did=TestIndySdkLedger.test_did, schema_name="test", schema_version="1.0", attribute_names=["c", "b", "a"], ) - assert schema_id == f"{self.test_did}:2:test:1.0" + assert schema_id == f"{TestIndySdkLedger.test_did}:2:test:1.0" with self.assertRaises(LedgerTransactionError): await ledger.check_existing_schema( - public_did=self.test_did, + public_did=TestIndySdkLedger.test_did, schema_name="test", schema_version="1.0", attribute_names=["a", "b", "c", "d"], @@ -896,7 +912,7 @@ async def test_get_schema( mock_wallet = async_mock.MagicMock() mock_wallet.get_public_did = async_mock.CoroutineMock() mock_did = mock_wallet.get_public_did.return_value - mock_did.did = self.test_did + mock_did.did = TestIndySdkLedger.test_did mock_parse_get_schema_resp.return_value = (None, '{"attrNames": ["a", "b"]}') @@ -935,7 +951,7 @@ async def test_get_schema_not_found( mock_wallet = async_mock.MagicMock() mock_wallet.get_public_did = async_mock.CoroutineMock() mock_did = mock_wallet.get_public_did.return_value - mock_did.did = self.test_did + mock_did.did = TestIndySdkLedger.test_did mock_submit.return_value = json.dumps({"result": {"seqNo": None}}) @@ -972,7 +988,7 @@ async def test_get_schema_by_seq_no( mock_wallet = async_mock.MagicMock() mock_wallet.get_public_did = async_mock.CoroutineMock() mock_did = mock_wallet.get_public_did.return_value - mock_did.did = self.test_did + mock_did.did = TestIndySdkLedger.test_did mock_parse_get_schema_resp.return_value = (None, '{"attrNames": ["a", "b"]}') @@ -983,7 +999,7 @@ async def test_get_schema_by_seq_no( "data": { "txn": { "type": "101", - "metadata": {"from": self.test_did}, + "metadata": {"from": TestIndySdkLedger.test_did}, "data": { "data": {"name": "preferences", "version": "1.0"} }, @@ -1006,7 +1022,7 @@ async def test_get_schema_by_seq_no( mock_wallet.get_public_did.assert_called_once_with() mock_build_get_txn_req.assert_called_once_with(None, None, seq_no=999) mock_build_get_schema_req.assert_called_once_with( - mock_did.did, f"{self.test_did}:2:preferences:1.0" + mock_did.did, f"{TestIndySdkLedger.test_did}:2:preferences:1.0" ) mock_submit.assert_has_calls( [ @@ -1038,7 +1054,7 @@ async def test_get_schema_by_wrong_seq_no( mock_wallet = async_mock.MagicMock() mock_wallet.get_public_did = async_mock.CoroutineMock() mock_did = mock_wallet.get_public_did.return_value - mock_did.did = self.test_did + mock_did.did = TestIndySdkLedger.test_did mock_parse_get_schema_resp.return_value = (None, '{"attrNames": ["a", "b"]}') @@ -1092,7 +1108,7 @@ async def test_send_credential_definition( mock_find_all_records.return_value = [] mock_get_schema.return_value = {"seqNo": 999} - cred_def_id = f"{self.test_did}:3:CL:999:default" + cred_def_id = f"{TestIndySdkLedger.test_did}:3:CL:999:default" cred_def_value = { "primary": {"n": "...", "s": "...", "r": "...", "revocation": None} } @@ -1131,7 +1147,7 @@ async def test_send_credential_definition( mock_wallet.get_public_did = async_mock.CoroutineMock() mock_wallet.get_public_did.return_value = DIDInfo( - self.test_did, self.test_verkey, None + TestIndySdkLedger.test_did, TestIndySdkLedger.test_verkey, None ) mock_did = mock_wallet.get_public_did.return_value @@ -1150,6 +1166,83 @@ async def test_send_credential_definition( mock_build_cred_def.assert_called_once_with(mock_did.did, cred_def_json) + @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedger.get_schema") + @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") + @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_close") + @async_mock.patch( + "aries_cloudagent.ledger.indy.IndySdkLedger.fetch_credential_definition" + ) + @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedger._submit") + @async_mock.patch("aries_cloudagent.storage.indy.IndySdkStorage.find_all_records") + @async_mock.patch("aries_cloudagent.storage.indy.IndySdkStorage.add_record") + @async_mock.patch("indy.ledger.build_cred_def_request") + @async_mock.patch("indy.ledger.append_request_endorser") + async def test_send_credential_definition_endorse_only( + self, + mock_append_request_endorser, + mock_build_cred_def, + mock_add_record, + mock_find_all_records, + mock_submit, + mock_fetch_cred_def, + mock_close, + mock_open, + mock_get_schema, + ): + mock_wallet = async_mock.MagicMock() + + mock_find_all_records.return_value = [] + + mock_get_schema.return_value = {"seqNo": 999} + cred_def_id = f"{TestIndySdkLedger.test_did}:3:CL:999:default" + cred_def_value = { + "primary": {"n": "...", "s": "...", "r": "...", "revocation": None} + } + cred_def = { + "ver": "1.0", + "id": cred_def_id, + "schemaId": "999", + "type": "CL", + "tag": "default", + "value": cred_def_value, + } + cred_def_json = json.dumps(cred_def) + + mock_fetch_cred_def.side_effect = [None, cred_def] + + issuer = async_mock.MagicMock(IndyIssuer) + issuer.make_credential_definition_id.return_value = cred_def_id + issuer.create_and_store_credential_definition.return_value = ( + cred_def_id, + cred_def_json, + ) + issuer.credential_definition_in_wallet.return_value = False + ledger = IndySdkLedger(IndySdkLedgerPool("name", checked=True), mock_wallet) + + schema_id = "schema_issuer_did:name:1.0" + tag = "default" + + async with ledger: + mock_wallet.get_public_did = async_mock.CoroutineMock() + mock_wallet.get_public_did.return_value = DIDInfo( + TestIndySdkLedger.test_did, TestIndySdkLedger.test_verkey, None + ) + + ( + result_id, + signed_txn, + novel, + ) = await ledger.create_and_send_credential_definition( + issuer=issuer, + schema_id=schema_id, + signature_type=None, + tag=tag, + support_revocation=False, + write_ledger=False, + endorser_did=TestIndySdkLedger.test_did, + ) + assert "signed_txn" in signed_txn + @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedger.get_schema") @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_close") @@ -1176,7 +1269,7 @@ async def test_send_credential_definition_exists_in_ledger_and_wallet( mock_find_all_records.return_value = [] mock_get_schema.return_value = {"seqNo": 999} - cred_def_id = f"{self.test_did}:3:CL:999:default" + cred_def_id = f"{TestIndySdkLedger.test_did}:3:CL:999:default" cred_def_value = { "primary": {"n": "...", "s": "...", "r": "...", "revocation": None} } @@ -1214,7 +1307,7 @@ async def test_send_credential_definition_exists_in_ledger_and_wallet( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock() mock_wallet.get_public_did.return_value = DIDInfo( - self.test_did, self.test_verkey, None + TestIndySdkLedger.test_did, TestIndySdkLedger.test_verkey, None ) mock_did = mock_wallet.get_public_did.return_value @@ -1321,7 +1414,7 @@ async def test_send_credential_definition_cred_def_in_wallet_not_ledger( mock_wallet = async_mock.MagicMock() mock_get_schema.return_value = {"seqNo": 999} - cred_def_id = f"{self.test_did}:3:CL:999:default" + cred_def_id = f"{TestIndySdkLedger.test_did}:3:CL:999:default" cred_def_value = { "primary": {"n": "...", "s": "...", "r": "...", "revocation": None} } @@ -1367,7 +1460,7 @@ async def test_send_credential_definition_cred_def_not_on_ledger_wallet_check_x( mock_wallet = async_mock.MagicMock() mock_get_schema.return_value = {"seqNo": 999} - cred_def_id = f"{self.test_did}:3:CL:999:default" + cred_def_id = f"{TestIndySdkLedger.test_did}:3:CL:999:default" cred_def_value = { "primary": {"n": "...", "s": "...", "r": "...", "revocation": None} } @@ -1417,7 +1510,7 @@ async def test_send_credential_definition_cred_def_not_on_ledger_nor_wallet_send mock_wallet = async_mock.MagicMock() mock_get_schema.return_value = {"seqNo": 999} - cred_def_id = f"{self.test_did}:3:CL:999:default" + cred_def_id = f"{TestIndySdkLedger.test_did}:3:CL:999:default" cred_def_value = { "primary": {"n": "...", "s": "...", "r": "...", "revocation": None} } @@ -1470,7 +1563,7 @@ async def test_send_credential_definition_read_only( mock_wallet = async_mock.MagicMock() mock_get_schema.return_value = {"seqNo": 999} - cred_def_id = f"{self.test_did}:3:CL:999:default" + cred_def_id = f"{TestIndySdkLedger.test_did}:3:CL:999:default" cred_def_value = { "primary": {"n": "...", "s": "...", "r": "...", "revocation": None} } @@ -1525,7 +1618,7 @@ async def test_send_credential_definition_cred_def_on_ledger_not_in_wallet( mock_wallet = async_mock.MagicMock() mock_get_schema.return_value = {"seqNo": 999} - cred_def_id = f"{self.test_did}:3:CL:999:default" + cred_def_id = f"{TestIndySdkLedger.test_did}:3:CL:999:default" cred_def_value = { "primary": {"n": "...", "s": "...", "r": "...", "revocation": None} } @@ -1584,7 +1677,7 @@ async def test_send_credential_definition_on_ledger_in_wallet( mock_find_all_records.return_value = [] mock_get_schema.return_value = {"seqNo": 999} - cred_def_id = f"{self.test_did}:3:CL:999:default" + cred_def_id = f"{TestIndySdkLedger.test_did}:3:CL:999:default" cred_def_value = { "primary": {"n": "...", "s": "...", "r": "...", "revocation": None} } @@ -1622,7 +1715,7 @@ async def test_send_credential_definition_on_ledger_in_wallet( mock_wallet.get_public_did = async_mock.CoroutineMock() mock_wallet.get_public_did.return_value = DIDInfo( - self.test_did, self.test_verkey, None + TestIndySdkLedger.test_did, TestIndySdkLedger.test_verkey, None ) mock_did = mock_wallet.get_public_did.return_value @@ -1666,7 +1759,7 @@ async def test_send_credential_definition_create_cred_def_exception( mock_find_all_records.return_value = [] mock_get_schema.return_value = {"seqNo": 999} - cred_def_id = f"{self.test_did}:3:CL:999:default" + cred_def_id = f"{TestIndySdkLedger.test_did}:3:CL:999:default" cred_def_value = { "primary": {"n": "...", "s": "...", "r": "...", "revocation": None} } @@ -1694,7 +1787,7 @@ async def test_send_credential_definition_create_cred_def_exception( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock() mock_wallet.get_public_did.return_value = DIDInfo( - self.test_did, self.test_verkey, None + TestIndySdkLedger.test_did, TestIndySdkLedger.test_verkey, None ) with self.assertRaises(LedgerError): @@ -1827,24 +1920,25 @@ async def test_get_key_for_did( mock_wallet = async_mock.MagicMock() mock_submit.return_value = json.dumps( - {"result": {"data": json.dumps({"verkey": self.test_verkey})}} + {"result": {"data": json.dumps({"verkey": TestIndySdkLedger.test_verkey})}} ) ledger = IndySdkLedger(IndySdkLedgerPool("name", checked=True), mock_wallet) async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) - response = await ledger.get_key_for_did(self.test_did) + response = await ledger.get_key_for_did(TestIndySdkLedger.test_did) assert mock_build_get_nym_req.called_once_with( - self.test_did, ledger.did_to_nym(self.test_did) + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), ) assert mock_submit.called_once_with( mock_build_get_nym_req.return_value, sign_did=mock_wallet.get_public_did.return_value, ) - assert response == self.test_verkey + assert response == TestIndySdkLedger.test_verkey @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_close") @@ -1863,12 +1957,16 @@ async def test_get_endpoint_for_did( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) - response = await ledger.get_endpoint_for_did(self.test_did) + response = await ledger.get_endpoint_for_did(TestIndySdkLedger.test_did) assert mock_build_get_attrib_req.called_once_with( - self.test_did, ledger.did_to_nym(self.test_did), "endpoint", None, None + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), + "endpoint", + None, + None, ) assert mock_submit.called_once_with( mock_build_get_attrib_req.return_value, @@ -1900,12 +1998,19 @@ async def test_get_endpoint_of_type_profile_for_did( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info + ) + response = await ledger.get_endpoint_for_did( + TestIndySdkLedger.test_did, + endpoint_type, ) - response = await ledger.get_endpoint_for_did(self.test_did, endpoint_type) assert mock_build_get_attrib_req.called_once_with( - self.test_did, ledger.did_to_nym(self.test_did), "endpoint", None, None + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), + "endpoint", + None, + None, ) assert mock_submit.called_once_with( mock_build_get_attrib_req.return_value, @@ -1932,12 +2037,18 @@ async def test_get_all_endpoints_for_did( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info + ) + response = await ledger.get_all_endpoints_for_did( + TestIndySdkLedger.test_did ) - response = await ledger.get_all_endpoints_for_did(self.test_did) assert mock_build_get_attrib_req.called_once_with( - self.test_did, ledger.did_to_nym(self.test_did), "endpoint", None, None + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), + "endpoint", + None, + None, ) assert mock_submit.called_once_with( mock_build_get_attrib_req.return_value, @@ -1961,12 +2072,18 @@ async def test_get_all_endpoints_for_did_none( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info + ) + response = await ledger.get_all_endpoints_for_did( + TestIndySdkLedger.test_did ) - response = await ledger.get_all_endpoints_for_did(self.test_did) assert mock_build_get_attrib_req.called_once_with( - self.test_did, ledger.did_to_nym(self.test_did), "endpoint", None, None + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), + "endpoint", + None, + None, ) assert mock_submit.called_once_with( mock_build_get_attrib_req.return_value, @@ -1990,12 +2107,16 @@ async def test_get_endpoint_for_did_address_none( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) - response = await ledger.get_endpoint_for_did(self.test_did) + response = await ledger.get_endpoint_for_did(TestIndySdkLedger.test_did) assert mock_build_get_attrib_req.called_once_with( - self.test_did, ledger.did_to_nym(self.test_did), "endpoint", None, None + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), + "endpoint", + None, + None, ) assert mock_submit.called_once_with( mock_build_get_attrib_req.return_value, @@ -2017,12 +2138,16 @@ async def test_get_endpoint_for_did_no_endpoint( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) - response = await ledger.get_endpoint_for_did(self.test_did) + response = await ledger.get_endpoint_for_did(TestIndySdkLedger.test_did) assert mock_build_get_attrib_req.called_once_with( - self.test_did, ledger.did_to_nym(self.test_did), "endpoint", None, None + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), + "endpoint", + None, + None, ) assert mock_submit.called_once_with( mock_build_get_attrib_req.return_value, @@ -2060,12 +2185,18 @@ async def test_update_endpoint_for_did( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info + ) + response = await ledger.update_endpoint_for_did( + TestIndySdkLedger.test_did, endpoint[1] ) - response = await ledger.update_endpoint_for_did(self.test_did, endpoint[1]) assert mock_build_get_attrib_req.called_once_with( - self.test_did, ledger.did_to_nym(self.test_did), "endpoint", None, None + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), + "endpoint", + None, + None, ) mock_submit.assert_has_calls( [ @@ -2102,13 +2233,15 @@ async def test_update_endpoint_for_did_no_prior_endpoints( ) as mock_get_all: mock_get_all.return_value = None mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info + ) + response = await ledger.update_endpoint_for_did( + TestIndySdkLedger.test_did, endpoint ) - response = await ledger.update_endpoint_for_did(self.test_did, endpoint) assert mock_build_get_attrib_req.called_once_with( - self.test_did, - ledger.did_to_nym(self.test_did), + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), "endpoint", None, None, @@ -2153,14 +2286,18 @@ async def test_update_endpoint_of_type_profile_for_did( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) response = await ledger.update_endpoint_for_did( - self.test_did, endpoint[1], endpoint_type + TestIndySdkLedger.test_did, endpoint[1], endpoint_type ) assert mock_build_get_attrib_req.called_once_with( - self.test_did, ledger.did_to_nym(self.test_did), "endpoint", None, None + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), + "endpoint", + None, + None, ) mock_submit.assert_has_calls( [ @@ -2190,12 +2327,18 @@ async def test_update_endpoint_for_did_duplicate( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info + ) + response = await ledger.update_endpoint_for_did( + TestIndySdkLedger.test_did, endpoint ) - response = await ledger.update_endpoint_for_did(self.test_did, endpoint) assert mock_build_get_attrib_req.called_once_with( - self.test_did, ledger.did_to_nym(self.test_did), "endpoint", None, None + TestIndySdkLedger.test_did, + ledger.did_to_nym(TestIndySdkLedger.test_did), + "endpoint", + None, + None, ) assert mock_submit.called_once_with( mock_build_get_attrib_req.return_value, @@ -2222,10 +2365,12 @@ async def test_update_endpoint_for_did_read_only( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) with self.assertRaises(LedgerError) as context: - await ledger.update_endpoint_for_did(self.test_did, "distinct endpoint") + await ledger.update_endpoint_for_did( + TestIndySdkLedger.test_did, "distinct endpoint" + ) assert "read only" in str(context.exception) @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @@ -2246,12 +2391,21 @@ async def test_register_nym( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info + ) + await ledger.register_nym( + TestIndySdkLedger.test_did, + TestIndySdkLedger.test_verkey, + "alias", + None, ) - await ledger.register_nym(self.test_did, self.test_verkey, "alias", None) assert mock_build_nym_req.called_once_with( - self.test_did, self.test_did, self.test_verkey, "alias", None + TestIndySdkLedger.test_did, + TestIndySdkLedger.test_did, + TestIndySdkLedger.test_verkey, + "alias", + None, ) assert mock_submit.called_once_with( mock_build_nym_req.return_value, @@ -2260,7 +2414,7 @@ async def test_register_nym( sign_did=mock_wallet.get_public_did.return_value, ) mock_wallet.replace_local_did_metadata.assert_called_once_with( - self.test_did_info.did, + TestIndySdkLedger.test_did_info.did, { "...": "...", **DIDPosture.POSTED.metadata, @@ -2277,11 +2431,14 @@ async def test_register_nym_read_only(self, mock_close, mock_open): async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) with self.assertRaises(LedgerError) as context: await ledger.register_nym( - self.test_did, self.test_verkey, "alias", None + TestIndySdkLedger.test_did, + TestIndySdkLedger.test_verkey, + "alias", + None, ) assert "read only" in str(context.exception) @@ -2299,8 +2456,8 @@ async def test_register_nym_no_public_did(self, mock_close, mock_open): mock_wallet.get_public_did = async_mock.CoroutineMock(return_value=None) with self.assertRaises(WalletNotFoundError): await ledger.register_nym( - self.test_did, - self.test_verkey, + TestIndySdkLedger.test_did, + TestIndySdkLedger.test_verkey, "alias", None, ) @@ -2321,11 +2478,14 @@ async def test_register_nym_ledger_x( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) with self.assertRaises(LedgerError): await ledger.register_nym( - self.test_did, self.test_verkey, "alias", None + TestIndySdkLedger.test_did, + TestIndySdkLedger.test_verkey, + "alias", + None, ) @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @@ -2344,12 +2504,21 @@ async def test_register_nym_steward_register_others_did( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info + ) + await ledger.register_nym( + TestIndySdkLedger.test_did, + TestIndySdkLedger.test_verkey, + "alias", + None, ) - await ledger.register_nym(self.test_did, self.test_verkey, "alias", None) assert mock_build_nym_req.called_once_with( - self.test_did, self.test_did, self.test_verkey, "alias", None + TestIndySdkLedger.test_did, + TestIndySdkLedger.test_did, + TestIndySdkLedger.test_verkey, + "alias", + None, ) assert mock_submit.called_once_with( mock_build_nym_req.return_value, @@ -2411,11 +2580,15 @@ async def test_get_nym_role( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info + ) + assert ( + await ledger.get_nym_role(TestIndySdkLedger.test_did) == Role.ENDORSER + ) + assert mock_build_get_nym_req.called_once_with( + TestIndySdkLedger.test_did, + TestIndySdkLedger.test_did, ) - assert await ledger.get_nym_role(self.test_did) == Role.ENDORSER - - assert mock_build_get_nym_req.called_once_with(self.test_did, self.test_did) assert mock_submit.called_once_with(mock_build_get_nym_req.return_value) @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @@ -2434,11 +2607,11 @@ async def test_get_nym_role_indy_x( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) with self.assertRaises(LedgerError) as context: - await ledger.get_nym_role(self.test_did) + await ledger.get_nym_role(TestIndySdkLedger.test_did) assert "not today" in context.exception.message @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @@ -2484,10 +2657,10 @@ async def test_get_nym_role_did_not_public_x( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) with self.assertRaises(BadLedgerRequestError): - await ledger.get_nym_role(self.test_did) + await ledger.get_nym_role(TestIndySdkLedger.test_did) @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_close") @@ -2505,9 +2678,11 @@ async def test_rotate_public_did_keypair( mock_open, ): mock_wallet = async_mock.MagicMock( - get_public_did=async_mock.CoroutineMock(return_value=self.test_did_info), + get_public_did=async_mock.CoroutineMock( + return_value=TestIndySdkLedger.test_did_info + ), rotate_did_keypair_start=async_mock.CoroutineMock( - return_value=self.test_verkey + return_value=TestIndySdkLedger.test_verkey ), rotate_did_keypair_apply=async_mock.CoroutineMock(return_value=None), ) @@ -2534,9 +2709,11 @@ async def test_rotate_public_did_keypair_no_nym( self, mock_submit, mock_build_get_nym_request, mock_close, mock_open ): mock_wallet = async_mock.MagicMock( - get_public_did=async_mock.CoroutineMock(return_value=self.test_did_info), + get_public_did=async_mock.CoroutineMock( + return_value=TestIndySdkLedger.test_did_info + ), rotate_did_keypair_start=async_mock.CoroutineMock( - return_value=self.test_verkey + return_value=TestIndySdkLedger.test_verkey ), rotate_did_keypair_apply=async_mock.CoroutineMock(return_value=None), ) @@ -2563,9 +2740,11 @@ async def test_rotate_public_did_keypair_corrupt_nym_txn( mock_open, ): mock_wallet = async_mock.MagicMock( - get_public_did=async_mock.CoroutineMock(return_value=self.test_did_info), + get_public_did=async_mock.CoroutineMock( + return_value=TestIndySdkLedger.test_did_info + ), rotate_did_keypair_start=async_mock.CoroutineMock( - return_value=self.test_verkey + return_value=TestIndySdkLedger.test_verkey ), rotate_did_keypair_apply=async_mock.CoroutineMock(return_value=None), ) @@ -2605,7 +2784,7 @@ async def test_get_revoc_reg_def( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) result = await ledger.get_revoc_reg_def("rr-id") @@ -2630,7 +2809,7 @@ async def test_get_revoc_reg_def_indy_x( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) with self.assertRaises(IndyError) as context: @@ -2652,7 +2831,7 @@ async def test_get_revoc_reg_entry( ): mock_wallet = async_mock.MagicMock() mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) mock_indy_parse_get_rr_resp.return_value = ( "rr-id", @@ -2683,7 +2862,7 @@ async def test_get_revoc_reg_entry_x( ): mock_wallet = async_mock.MagicMock() mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) mock_indy_parse_get_rr_resp.side_effect = IndyError( error_code=ErrorCode.PoolLedgerTimeout, @@ -2723,7 +2902,7 @@ async def test_get_revoc_reg_delta( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) (result, _) = await ledger.get_revoc_reg_delta("rr-id") @@ -2745,13 +2924,16 @@ async def test_send_revoc_reg_def_public_did( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) await ledger.send_revoc_reg_def({"rr": "def"}, issuer_did=None) mock_wallet.get_public_did.assert_called_once() assert not mock_wallet.get_local_did.called mock_submit.assert_called_once_with( - mock_indy_build_rrdef_req.return_value, True, True, self.test_did_info + mock_indy_build_rrdef_req.return_value, + True, + True, + TestIndySdkLedger.test_did_info, ) @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @@ -2770,13 +2952,21 @@ async def test_send_revoc_reg_def_local_did( async with ledger: mock_wallet.get_local_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info + ) + await ledger.send_revoc_reg_def( + {"rr": "def"}, + issuer_did=TestIndySdkLedger.test_did, + ) + mock_wallet.get_local_did.assert_called_once_with( + TestIndySdkLedger.test_did ) - await ledger.send_revoc_reg_def({"rr": "def"}, issuer_did=self.test_did) - mock_wallet.get_local_did.assert_called_once_with(self.test_did) assert not mock_wallet.get_public_did.called mock_submit.assert_called_once_with( - mock_indy_build_rrdef_req.return_value, True, True, self.test_did_info + mock_indy_build_rrdef_req.return_value, + True, + True, + TestIndySdkLedger.test_did_info, ) @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @@ -2796,7 +2986,10 @@ async def test_send_revoc_reg_def_x_no_did( async with ledger: mock_wallet.get_local_did = async_mock.CoroutineMock(return_value=None) with self.assertRaises(LedgerTransactionError) as context: - await ledger.send_revoc_reg_def({"rr": "def"}, issuer_did=self.test_did) + await ledger.send_revoc_reg_def( + {"rr": "def"}, + issuer_did=TestIndySdkLedger.test_did, + ) assert "No issuer DID found for revocation registry definition" in str( context.exception ) @@ -2817,7 +3010,7 @@ async def test_send_revoc_reg_entry_public_did( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) await ledger.send_revoc_reg_entry( "rr-id", "CL_ACCUM", {"rev-reg": "entry"}, issuer_did=None @@ -2825,7 +3018,10 @@ async def test_send_revoc_reg_entry_public_did( mock_wallet.get_public_did.assert_called_once() assert not mock_wallet.get_local_did.called mock_submit.assert_called_once_with( - mock_indy_build_rre_req.return_value, True, True, self.test_did_info + mock_indy_build_rre_req.return_value, + True, + True, + TestIndySdkLedger.test_did_info, ) @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @@ -2844,15 +3040,23 @@ async def test_send_revoc_reg_entry_local_did( async with ledger: mock_wallet.get_local_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) result = await ledger.send_revoc_reg_entry( - "rr-id", "CL_ACCUM", {"rev-reg": "entry"}, issuer_did=self.test_did + "rr-id", + "CL_ACCUM", + {"rev-reg": "entry"}, + issuer_did=TestIndySdkLedger.test_did, + ) + mock_wallet.get_local_did.assert_called_once_with( + TestIndySdkLedger.test_did ) - mock_wallet.get_local_did.assert_called_once_with(self.test_did) assert not mock_wallet.get_public_did.called mock_submit.assert_called_once_with( - mock_indy_build_rre_req.return_value, True, True, self.test_did_info + mock_indy_build_rre_req.return_value, + True, + True, + TestIndySdkLedger.test_did_info, ) @async_mock.patch("aries_cloudagent.ledger.indy.IndySdkLedgerPool.context_open") @@ -2873,7 +3077,10 @@ async def test_send_revoc_reg_entry_x_no_did( mock_wallet.get_local_did = async_mock.CoroutineMock(return_value=None) with self.assertRaises(LedgerTransactionError) as context: await ledger.send_revoc_reg_entry( - "rr-id", "CL_ACCUM", {"rev-reg": "entry"}, issuer_did=self.test_did + "rr-id", + "CL_ACCUM", + {"rev-reg": "entry"}, + issuer_did=TestIndySdkLedger.test_did, ) assert "No issuer DID found for revocation registry entry" in str( context.exception @@ -2892,7 +3099,7 @@ async def test_taa_digest_bad_value( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) with self.assertRaises(ValueError): @@ -2922,14 +3129,17 @@ async def test_get_txn_author_agreement( async with ledger: mock_wallet.get_public_did = async_mock.CoroutineMock( - return_value=self.test_did_info + return_value=TestIndySdkLedger.test_did_info ) response = await ledger.get_txn_author_agreement(reload=True) assert mock_build_get_acc_mech_req.called_once_with( - self.test_did, None, None + TestIndySdkLedger.test_did, None, None + ) + assert mock_build_get_taa_req.called_once_with( + TestIndySdkLedger.test_did, + None, ) - assert mock_build_get_taa_req.called_once_with(self.test_did, None) mock_submit.assert_has_calls( [ async_mock.call( diff --git a/aries_cloudagent/wallet/tests/test_util.py b/aries_cloudagent/wallet/tests/test_util.py index 98c38de6fe..ef8116cc62 100644 --- a/aries_cloudagent/wallet/tests/test_util.py +++ b/aries_cloudagent/wallet/tests/test_util.py @@ -2,6 +2,7 @@ from unittest import mock, TestCase from ..util import ( + abbr_verkey, b58_to_bytes, b64_to_bytes, b64_to_str, @@ -66,16 +67,21 @@ def test_b58(self): b58 = bytes_to_b58(BYTES) assert b58_to_bytes(b58) == BYTES - def test_full_verkey(self): + def test_full_abbr_verkey(self): did = "N76kAdywAdHCySjgymbZ9t" full_vk = "CWBBfFmEVUDbs7rSCeKaFKfaeYXS2dKynAk7e2sCv23b" - abbr_verkey = "~79woMYnyEk6XnQaBA39i57" + abbr_vk = "~79woMYnyEk6XnQaBA39i57" - full = full_verkey(did, abbr_verkey) + full = full_verkey(did, abbr_vk) assert full == full_vk - assert full == full_verkey(f"did:sov:{did}", abbr_verkey) + assert full == full_verkey(f"did:sov:{did}", abbr_vk) assert full_verkey(did, full_vk) == full_vk + abbr = abbr_verkey(full_vk) + abbr_did = abbr_verkey(full_vk, did) + abbr_qdid = abbr_verkey(full_vk, f"did:sov:{did}") + assert abbr_did == abbr_qdid == abbr == abbr_vk + def test_naked_to_did_key(self): assert ( naked_to_did_key("8HH5gYEeNc3z7PYXmd54d4x6qAfCNrqQqEB3nS7Zfu7K") diff --git a/aries_cloudagent/wallet/util.py b/aries_cloudagent/wallet/util.py index 73e48be4e8..d917c0f809 100644 --- a/aries_cloudagent/wallet/util.py +++ b/aries_cloudagent/wallet/util.py @@ -62,7 +62,7 @@ def bytes_to_b58(val: bytes) -> str: def full_verkey(did: str, abbr_verkey: str) -> str: - """Given a DID and a short verkey, return the full verkey.""" + """Given a DID and abbreviated verkey, return the full verkey.""" return ( bytes_to_b58(b58_to_bytes(did.split(":")[-1]) + b58_to_bytes(abbr_verkey[1:])) if abbr_verkey.startswith("~") @@ -70,6 +70,12 @@ def full_verkey(did: str, abbr_verkey: str) -> str: ) +def abbr_verkey(full_verkey: str, did: str = None) -> str: + """Given a full verkey and DID, return the abbreviated verkey.""" + did_len = len(b58_to_bytes(did.split(":")[-1])) if did else 16 + return f"~{bytes_to_b58(b58_to_bytes(full_verkey)[did_len:])}" + + def naked_to_did_key(key: str) -> str: """Convert a naked ed25519 verkey to W3C did:key format.""" key_bytes = b58_to_bytes(key) From 2c07754abb3596dcf7918c720183eaa7ac922c3d Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 25 Mar 2021 13:30:47 +0000 Subject: [PATCH 147/243] and include json-ld exceptions in aca-py framework Signed-off-by: sklump --- aries_cloudagent/admin/server.py | 10 +- .../admin/tests/test_admin_server.py | 120 ++++++++ .../messaging/jsonld/create_verify_data.py | 38 ++- .../messaging/jsonld/credential.py | 25 +- aries_cloudagent/messaging/jsonld/error.py | 19 ++ aries_cloudagent/messaging/jsonld/routes.py | 15 +- .../messaging/jsonld/tests/test_credential.py | 32 ++ .../messaging/jsonld/tests/test_routes.py | 288 +++++++++++++----- 8 files changed, 420 insertions(+), 127 deletions(-) create mode 100644 aries_cloudagent/messaging/jsonld/error.py create mode 100644 aries_cloudagent/messaging/jsonld/tests/test_credential.py diff --git a/aries_cloudagent/admin/server.py b/aries_cloudagent/admin/server.py index 5f993ad6d0..9230536808 100644 --- a/aries_cloudagent/admin/server.py +++ b/aries_cloudagent/admin/server.py @@ -142,10 +142,10 @@ def topic_filter(self) -> Set[str]: @topic_filter.setter def topic_filter(self, val: Sequence[str]): """Setter for the target's topic filter.""" - filter = set(val) if val else None - if filter and "*" in filter: - filter = None - self._topic_filter = filter + filt = set(val) if val else None + if filt and "*" in filt: + filt = None + self._topic_filter = filt @web.middleware @@ -336,7 +336,7 @@ async def setup_context(request: web.Request, handler): self.context, token ) except MultitenantManagerError as err: - raise web.HTTPUnauthorized(err.roll_up) + raise web.HTTPUnauthorized(reason=err.roll_up) except (jwt.InvalidTokenError, StorageNotFoundError): raise web.HTTPUnauthorized() diff --git a/aries_cloudagent/admin/tests/test_admin_server.py b/aries_cloudagent/admin/tests/test_admin_server.py index 3d8b6d3711..d6137f917f 100644 --- a/aries_cloudagent/admin/tests/test_admin_server.py +++ b/aries_cloudagent/admin/tests/test_admin_server.py @@ -16,6 +16,39 @@ from ..server import AdminServer, AdminSetupError +class TestAdminResponder(AsyncTestCase): + async def test_admin_responder(self): + admin_responder = test_module.AdminResponder( + None, async_mock.CoroutineMock(), async_mock.CoroutineMock() + ) + + assert admin_responder.send_fn is admin_responder._send + assert admin_responder.webhook_fn is admin_responder._webhook + + message = test_module.OutboundMessage(payload="hello") + await admin_responder.send_outbound(message) + assert admin_responder._send.called_once_with(None, message) + + await admin_responder.send_webhook("topic", {"payload": "hello"}) + assert admin_responder._webhook.called_once_with("topic", {"outbound": "hello"}) + + +class TestWebhookTarget(AsyncTestCase): + async def test_webhook_target(self): + webhook_target = test_module.WebhookTarget( + endpoint="localhost:8888", + topic_filter=["birthdays", "animal videos"], + max_attempts=None, + ) + assert webhook_target.topic_filter == {"birthdays", "animal videos"} + + webhook_target.topic_filter = [] + assert webhook_target.topic_filter is None + + webhook_target.topic_filter = ["duct cleaning", "*"] + assert webhook_target.topic_filter is None + + class TestAdminServer(AsyncTestCase): async def setUp(self): self.message_results = [] @@ -185,6 +218,93 @@ async def test_import_routes(self): server = self.get_admin_server({"admin.admin_insecure_mode": True}, context) app = await server.make_application() + async def test_import_routes_multitenant_middleware(self): + # imports all default admin routes + context = InjectionContext() + context.injector.bind_instance(ProtocolRegistry, ProtocolRegistry()) + profile = InMemoryProfile.test_profile() + context.injector.bind_instance( + test_module.MultitenantManager, + test_module.MultitenantManager(profile), + ) + await DefaultContextBuilder().load_plugins(context) + server = self.get_admin_server( + { + "admin.admin_insecure_mode": False, + "admin.admin_api_key": "test-api-key", + }, + context, + ) + + # cover multitenancy start code + app = await server.make_application() + app["swagger_dict"] = {} + await server.on_startup(app) + + # multitenant authz + [mt_authz_middle] = [ + m for m in app.middlewares if ".check_multitenant_authorization" in str(m) + ] + + mock_request = async_mock.MagicMock( + method="GET", + headers={"Authorization": "Bearer ..."}, + path="/multitenancy/etc", + text=async_mock.CoroutineMock(return_value="abc123"), + ) + with self.assertRaises(test_module.web.HTTPUnauthorized): + await mt_authz_middle(mock_request, None) + + mock_request = async_mock.MagicMock( + method="GET", + headers={}, + path="/protected/non-multitenancy/non-server", + text=async_mock.CoroutineMock(return_value="abc123"), + ) + with self.assertRaises(test_module.web.HTTPUnauthorized): + await mt_authz_middle(mock_request, None) + + mock_request = async_mock.MagicMock( + method="GET", + headers={"Authorization": "Bearer ..."}, + path="/protected/non-multitenancy/non-server", + text=async_mock.CoroutineMock(return_value="abc123"), + ) + mock_handler = async_mock.CoroutineMock() + await mt_authz_middle(mock_request, mock_handler) + assert mock_handler.called_once_with(mock_request) + + # multitenant setup context exception paths + [setup_ctx_middle] = [m for m in app.middlewares if ".setup_context" in str(m)] + + mock_request = async_mock.MagicMock( + method="GET", + headers={"Authorization": "Non-bearer ..."}, + path="/protected/non-multitenancy/non-server", + text=async_mock.CoroutineMock(return_value="abc123"), + ) + with self.assertRaises(test_module.web.HTTPUnauthorized): + await setup_ctx_middle(mock_request, None) + + mock_request = async_mock.MagicMock( + method="GET", + headers={"Authorization": "Bearer ..."}, + path="/protected/non-multitenancy/non-server", + text=async_mock.CoroutineMock(return_value="abc123"), + ) + with async_mock.patch.object( + server.multitenant_manager, + "get_profile_for_token", + async_mock.CoroutineMock(), + ) as mock_get_profile: + mock_get_profile.side_effect = [ + test_module.MultitenantManagerError("corrupt token"), + test_module.StorageNotFoundError("out of memory"), + ] + for i in range(2): + with self.assertRaises(test_module.web.HTTPUnauthorized): + await setup_ctx_middle(mock_request, None) + async def test_register_external_plugin_x(self): context = InjectionContext() context.injector.bind_instance(ProtocolRegistry, ProtocolRegistry()) diff --git a/aries_cloudagent/messaging/jsonld/create_verify_data.py b/aries_cloudagent/messaging/jsonld/create_verify_data.py index 28c91a640e..3ed5b96a05 100644 --- a/aries_cloudagent/messaging/jsonld/create_verify_data.py +++ b/aries_cloudagent/messaging/jsonld/create_verify_data.py @@ -2,7 +2,8 @@ Contains the functions needed to produce and verify a json-ld signature. This file was ported from -https://github.com/transmute-industries/Ed25519Signature2018/blob/master/src/createVerifyData/index.js +https://github.com/transmute-industries/Ed25519Signature2018/blob/master/ + src/createVerifyData/index.js """ import datetime @@ -10,6 +11,8 @@ from pyld import jsonld +from .error import DroppedAttributeError, MissingVerificationMethodError + def _canonize(data): return jsonld.normalize( @@ -21,7 +24,7 @@ def _sha256(data): return hashlib.sha256(data.encode("utf-8")).hexdigest() -def _cannonize_signature_options(signatureOptions): +def _canonize_signature_options(signatureOptions): _signatureOptions = {**signatureOptions, "@context": "https://w3id.org/security/v2"} _signatureOptions.pop("jws", None) _signatureOptions.pop("signatureValue", None) @@ -29,26 +32,22 @@ def _cannonize_signature_options(signatureOptions): return _canonize(_signatureOptions) -def _cannonize_document(doc): +def _canonize_document(doc): _doc = {**doc} _doc.pop("proof", None) return _canonize(_doc) -class DroppedAttributeException(Exception): - """Exception used to track that an attribute was removed.""" - - pass - - def create_verify_data(data, signature_options): """Encapsulate the process of constructing the string used during sign and verify.""" if "creator" in signature_options: signature_options["verificationMethod"] = signature_options["creator"] - if not signature_options["verificationMethod"]: - raise Exception("signature_options.verificationMethod is required") + if not signature_options.get("verificationMethod"): + raise MissingVerificationMethodError( + "signature_options.verificationMethod is required" + ) if "created" not in signature_options: signature_options["created"] = datetime.datetime.now( @@ -67,26 +66,25 @@ def create_verify_data(data, signature_options): ) # Detect any dropped attributes during the expand/contract step. - if len(data) != len(framed): - raise DroppedAttributeException("Extra Attribute Detected") + raise DroppedAttributeError("Extra Attribute Detected") if ( "proof" in data and "proof" in framed and len(data["proof"]) != len(framed["proof"]) ): - raise DroppedAttributeException("Extra Attribute Detected") + raise DroppedAttributeError("Extra Attribute Detected") if ( "credentialSubject" in data and "https://www.w3.org/2018/credentials#credentialSubject" in framed and len(data["credentialSubject"]) != len(framed["https://www.w3.org/2018/credentials#credentialSubject"]) ): - raise DroppedAttributeException("Extra Attribute Detected") + raise DroppedAttributeError("Extra Attribute Detected") - cannonized_signature_options = _cannonize_signature_options(signature_options) - hash_of_cannonized_signature_options = _sha256(cannonized_signature_options) - cannonized_document = _cannonize_document(framed) - hash_of_cannonized_document = _sha256(cannonized_document) + canonized_signature_options = _canonize_signature_options(signature_options) + hash_of_canonized_signature_options = _sha256(canonized_signature_options) + canonized_document = _canonize_document(framed) + hash_of_canonized_document = _sha256(canonized_document) - return (framed, hash_of_cannonized_signature_options + hash_of_cannonized_document) + return (framed, hash_of_canonized_signature_options + hash_of_canonized_document) diff --git a/aries_cloudagent/messaging/jsonld/credential.py b/aries_cloudagent/messaging/jsonld/credential.py index 20bf334225..ca5ca3ea03 100644 --- a/aries_cloudagent/messaging/jsonld/credential.py +++ b/aries_cloudagent/messaging/jsonld/credential.py @@ -12,7 +12,7 @@ ) from .create_verify_data import create_verify_data - +from .error import BadJWSHeaderError MULTIBASE_B58_BTC = "z" MULTICODEC_ED25519_PUB = b"\xed" @@ -21,11 +21,11 @@ def did_key(verkey: str) -> str: """Qualify verkey into DID key if need be.""" - if verkey.startswith(f"did:key:{MULTIBASE_B58_BTC}"): - return verkey - - return f"did:key:{MULTIBASE_B58_BTC}" + bytes_to_b58( - MULTICODEC_ED25519_PUB + b58_to_bytes(verkey) + return ( + verkey + if verkey.startswith(f"did:key:{MULTIBASE_B58_BTC}") + else f"did:key:{MULTIBASE_B58_BTC}" + + bytes_to_b58(MULTICODEC_ED25519_PUB + b58_to_bytes(verkey)) ) @@ -63,17 +63,10 @@ async def jws_sign(verify_data, verkey, wallet): def verify_jws_header(header): """Check header requirements.""" - if ( - not ( - header["alg"] == "EdDSA" - and header["b64"] is False - and isinstance(header["crit"], list) - and len(header["crit"]) == 1 - and header["crit"][0] == "b64" + if header != {"alg": "EdDSA", "b64": False, "crit": ["b64"]}: + raise BadJWSHeaderError( + "Invalid JWS header parameters for Ed25519Signature2018." ) - and len(header) == 3 - ): - raise Exception("Invalid JWS header parameters for Ed25519Signature2018.") async def jws_verify(verify_data, signature, public_key, wallet): diff --git a/aries_cloudagent/messaging/jsonld/error.py b/aries_cloudagent/messaging/jsonld/error.py new file mode 100644 index 0000000000..ffeee66853 --- /dev/null +++ b/aries_cloudagent/messaging/jsonld/error.py @@ -0,0 +1,19 @@ +"""JSON-LD messaging Exceptions.""" + +from ...core.error import BaseError + + +class BaseJSONLDMessagingError(BaseError): + """Base exception class for JSON-LD messaging.""" + + +class BadJWSHeaderError(BaseJSONLDMessagingError): + """Exception indicating invalid JWS header.""" + + +class DroppedAttributeError(BaseJSONLDMessagingError): + """Exception used to track that an attribute was removed.""" + + +class MissingVerificationMethodError(BaseJSONLDMessagingError): + """Exception indicating missing verification method from signature options.""" diff --git a/aries_cloudagent/messaging/jsonld/routes.py b/aries_cloudagent/messaging/jsonld/routes.py index a3bdc3d051..e72a8b4b8d 100644 --- a/aries_cloudagent/messaging/jsonld/routes.py +++ b/aries_cloudagent/messaging/jsonld/routes.py @@ -11,6 +11,11 @@ from ..models.openapi import OpenAPISchema from .credential import sign_credential, verify_credential +from .error import ( + BadJWSHeaderError, + DroppedAttributeError, + MissingVerificationMethodError, +) class SignRequestSchema(OpenAPISchema): @@ -49,14 +54,14 @@ async def sign(request: web.BaseRequest): async with context.session() as session: wallet = session.inject(BaseWallet, required=False) if not wallet: - raise web.HTTPForbidden() + raise web.HTTPForbidden(reason="No wallet available") document_with_proof = await sign_credential( credential, signature_options, verkey, wallet ) response["signed_doc"] = document_with_proof - except Exception as e: - response["error"] = str(e) + except (DroppedAttributeError, MissingVerificationMethodError) as err: + response["error"] = str(err) return web.json_response(response) @@ -95,11 +100,11 @@ async def verify(request: web.BaseRequest): async with context.session() as session: wallet = session.inject(BaseWallet, required=False) if not wallet: - raise web.HTTPForbidden() + raise web.HTTPForbidden(reason="No wallet available") valid = await verify_credential(doc, verkey, wallet) response["valid"] = valid - except Exception as e: + except (BadJWSHeaderError, DroppedAttributeError) as e: response["error"] = str(e) return web.json_response(response) diff --git a/aries_cloudagent/messaging/jsonld/tests/test_credential.py b/aries_cloudagent/messaging/jsonld/tests/test_credential.py new file mode 100644 index 0000000000..14d8aae113 --- /dev/null +++ b/aries_cloudagent/messaging/jsonld/tests/test_credential.py @@ -0,0 +1,32 @@ +import json + +from asynctest import mock as async_mock, TestCase as AsyncTestCase + +from .. import credential as test_module + +TEST_VERKEY = "5yKdnU7ToTjAoRNDzfuzVTfWBH38qyhE1b9xh4v8JaWF" + + +class TestCredential(AsyncTestCase): + async def test_did_key(self): + did_key = test_module.did_key(TEST_VERKEY) + assert did_key.startswith(f"did:key:{test_module.MULTIBASE_B58_BTC}") + assert did_key == test_module.did_key(did_key) + + async def test_verify_jws_header(self): + test_module.verify_jws_header( + json.loads( + test_module.b64decode( + "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19" + ) + ) + ) + + with self.assertRaises(test_module.BadJWSHeaderError): + test_module.verify_jws_header( + json.loads( + test_module.b64decode( # {... "b64": True ...} + "eyJhbGciOiJFZERTQSIsImI2NCI6dHJ1ZSwiY3JpdCI6WyJiNjQiXX0=" + ) + ) + ) diff --git a/aries_cloudagent/messaging/jsonld/tests/test_routes.py b/aries_cloudagent/messaging/jsonld/tests/test_routes.py index 5509ec543c..331f9a7830 100644 --- a/aries_cloudagent/messaging/jsonld/tests/test_routes.py +++ b/aries_cloudagent/messaging/jsonld/tests/test_routes.py @@ -1,12 +1,16 @@ -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +import json + +from copy import deepcopy + +from asynctest import mock as async_mock, TestCase as AsyncTestCase +from pyld import jsonld from ....admin.request_context import AdminRequestContext +from ....wallet.base import BaseWallet from .. import routes as test_module -# TODO: Add tests class TestJSONLDRoutes(AsyncTestCase): async def setUp(self): self.context = AdminRequestContext.test_context() @@ -23,21 +27,155 @@ async def setUp(self): ) async def test_verify_credential(self): - self.request.json = async_mock.CoroutineMock( - return_value={ # posted json - "verkey": ( - # pulled from the did:key in example - "5yKdnU7ToTjAoRNDzfuzVTfWBH38qyhE1b9xh4v8JaWF" - ), - "doc": { + POSTED_REQUEST = { # posted json + "verkey": ( + # pulled from the did:key in example + "5yKdnU7ToTjAoRNDzfuzVTfWBH38qyhE1b9xh4v8JaWF" + ), + "doc": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://www.w3.org/2018/credentials/examples/v1", + ], + "id": "http://example.gov/credentials/3732", + "type": ["VerifiableCredential", "UniversityDegreeCredential"], + "issuer": ("did:key:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd"), + "issuanceDate": "2020-03-10T04:24:12.164Z", + "credentialSubject": { + "id": ( + "did:key:" "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" + ), + "degree": { + "type": "BachelorDegree", + "name": "Bachelor of Science and Arts", + }, + }, + "proof": { + "type": "Ed25519Signature2018", + "created": "2020-04-10T21:35:35Z", + "verificationMethod": ( + "did:key:" + "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc" + "4tXLt9DoHd#z6MkjRagNiMu91DduvCvgEsqLZD" + "VzrJzFrwahc4tXLt9DoHd" + ), + "proofPurpose": "assertionMethod", + "jws": ( + "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaX" + "QiOlsiYjY0Il19..l9d0YHjcFAH2H4dB9xlWFZQLUp" + "ixVCWJk0eOt4CXQe1NXKWZwmhmn9OQp6YxX0a2Lffe" + "gtYESTCJEoGVXLqWAA" + ), + }, + }, + } + + self.request.json = async_mock.CoroutineMock(return_value=POSTED_REQUEST) + + with async_mock.patch.object(test_module.web, "json_response") as mock_response: + result = await test_module.verify(self.request) + assert result == mock_response.return_value + mock_response.assert_called_once_with({"valid": True}) # expected response + + # compact, expand take a LONG TIME: do them once above, mock for error cases + with async_mock.patch.object( + jsonld, "compact", async_mock.MagicMock() + ) as mock_compact, async_mock.patch.object( + jsonld, "expand", async_mock.MagicMock() + ) as mock_expand, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_expand.return_value = [async_mock.MagicMock()] + mock_compact.return_value = { + "@context": "...", + "id": "...", + "type": ["...", "..."], + "proof": {}, + "https://www.w3.org/2018/credentials#credentialSubject": { + "id": "did:key:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", + "https://example.org/examples#degree": { + "type": "https://example.org/examples#BachelorDegree", + "http://schema.org/name": { + "type": "http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML", + "@value": "Bachelor of Science and Arts", + }, + }, + }, + "https://www.w3.org/2018/credentials#issuanceDate": { + "type": "xsd:dateTime", + "@value": "2020-03-10T04:24:12.164Z", + }, + "https://www.w3.org/2018/credentials#issuer": { + "id": "did:key:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" + }, + } + mock_response.side_effect = lambda x: json.dumps(x) + result = await test_module.verify(self.request) + assert "error" in json.loads(result) + + print("\n>> START X-ATTR-CRED-SUBJECT") + with async_mock.patch.object( + jsonld, "compact", async_mock.MagicMock() + ) as mock_compact, async_mock.patch.object( + jsonld, "expand", async_mock.MagicMock() + ) as mock_expand, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_expand.return_value = [async_mock.MagicMock()] + mock_compact.return_value = { + "@context": "...", + "id": "...", + "type": ["...", "..."], + "proof": { + "type": "Ed25519Signature2018", + "created": "2020-04-10T21:35:35Z", + "jws": ( + "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19" + ".." + "l9d0YHjcFAH2H4dB9xlWFZQLUpixVCWJk0eOt4CXQe1NXKWZwmhmn9OQ" + "p6YxX0a2LffegtYESTCJEoGVXLqWAA" + ), + "proofPurpose": "assertionMethod", + "verificationMethod": ( + "did:key:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#" + "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" + ), + }, + "https://www.w3.org/2018/credentials#credentialSubject": { + "id": "did:key:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd", + }, + "https://www.w3.org/2018/credentials#issuanceDate": { + "type": "xsd:dateTime", + "@value": "2020-03-10T04:24:12.164Z", + }, + "https://www.w3.org/2018/credentials#issuer": { + "id": "did:key:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" + }, + } + mock_response.side_effect = lambda x: json.dumps(x) + result = await test_module.verify(self.request) + assert "error" in json.loads(result) + + self.context.session_inject[BaseWallet] = None + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.verify(self.request) + + async def test_sign_credential(self): + POSTED_REQUEST = { # posted json + "verkey": self.did_info.verkey, + "doc": { + "credential": { "@context": [ "https://www.w3.org/2018/credentials/v1", "https://www.w3.org/2018/credentials/examples/v1", ], "id": "http://example.gov/credentials/3732", - "type": ["VerifiableCredential", "UniversityDegreeCredential"], + "type": [ + "VerifiableCredential", + "UniversityDegreeCredential", + ], "issuer": ( - "did:key:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" + "did:key:" "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" ), "issuanceDate": "2020-03-10T04:24:12.164Z", "credentialSubject": { @@ -47,79 +185,28 @@ async def test_verify_credential(self): ), "degree": { "type": "BachelorDegree", - "name": "Bachelor of Science and Arts", + "name": u"Bachelor of Encyclopædic Arts", }, }, - "proof": { - "type": "Ed25519Signature2018", - "created": "2020-04-10T21:35:35Z", - "verificationMethod": ( - "did:key:" - "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc" - "4tXLt9DoHd#z6MkjRagNiMu91DduvCvgEsqLZD" - "VzrJzFrwahc4tXLt9DoHd" - ), - "proofPurpose": "assertionMethod", - "jws": ( - "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaX" - "QiOlsiYjY0Il19..l9d0YHjcFAH2H4dB9xlWFZQLUp" - "ixVCWJk0eOt4CXQe1NXKWZwmhmn9OQp6YxX0a2Lffe" - "gtYESTCJEoGVXLqWAA" - ), - }, }, - } - ) - - with async_mock.patch.object(test_module.web, "json_response") as mock_response: - result = await test_module.verify(self.request) - assert result == mock_response.return_value - mock_response.assert_called_once_with({"valid": True}) # expected response - - async def test_sign_credential(self): - self.request.json = async_mock.CoroutineMock( - return_value={ # posted json - "verkey": self.did_info.verkey, - "doc": { - "credential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://www.w3.org/2018/credentials/examples/v1", - ], - "id": "http://example.gov/credentials/3732", - "type": [ - "VerifiableCredential", - "UniversityDegreeCredential", - ], - "issuer": ( - "did:key:" - "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" - ), - "issuanceDate": "2020-03-10T04:24:12.164Z", - "credentialSubject": { - "id": ( - "did:key:" - "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" - ), - "degree": { - "type": "BachelorDegree", - "name": u"Bachelor of Encyclopædic Arts", - }, - }, - }, - "options": { - "type": "Ed25519Signature2018", - "created": "2020-04-10T21:35:35Z", - "verificationMethod": ( - "did:key:" - "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#" - "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" - ), - "proofPurpose": "assertionMethod", - }, + "options": { + # "type": "Ed25519Signature2018", exercise default + # "created": exercise default of now + "creator": ( + "did:key:" + "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#" + "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" + ), + "verificationMethod": ( + "did:key:" + "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd#" + "z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd" + ), + "proofPurpose": "assertionMethod", }, - } - ) + }, + } + self.request.json = async_mock.CoroutineMock(return_value=POSTED_REQUEST) with async_mock.patch.object(test_module.web, "json_response") as mock_response: result = await test_module.sign(self.request) @@ -127,3 +214,42 @@ async def test_sign_credential(self): mock_response.assert_called_once() assert "signed_doc" in mock_response.call_args[0][0] assert "error" not in mock_response.call_args[0][0] + + # short circuit: does not reach expand/compact + posted_request_x = deepcopy(POSTED_REQUEST) + posted_request_x["doc"]["options"].pop("verificationMethod") + posted_request_x["doc"]["options"].pop("creator") + self.request.json = async_mock.CoroutineMock(return_value=posted_request_x) + with async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_response.side_effect = lambda x: json.dumps(x) + result = await test_module.sign(self.request) + assert "error" in json.loads(result) + + # compact, expand take a LONG TIME: do them once above, mock for error cases + posted_request = deepcopy(POSTED_REQUEST) + self.request.json = async_mock.CoroutineMock(return_value=posted_request) + with async_mock.patch.object( + jsonld, "compact", async_mock.MagicMock() + ) as mock_compact, async_mock.patch.object( + jsonld, "expand", async_mock.MagicMock() + ) as mock_expand, async_mock.patch.object( + test_module.web, "json_response", async_mock.MagicMock() + ) as mock_response: + mock_expand.return_value = [async_mock.MagicMock()] + mock_compact.return_value = {} # drop all attributes + mock_response.side_effect = lambda x: json.dumps(x) + result = await test_module.sign(self.request) + assert "error" in json.loads(result) + + self.context.session_inject[BaseWallet] = None + with self.assertRaises(test_module.web.HTTPForbidden): + await test_module.sign(self.request) + + async def test_register(self): + mock_app = async_mock.MagicMock() + mock_app.add_routes = async_mock.MagicMock() + + await test_module.register(mock_app) + assert mock_app.add_routes.call_count == 2 From 6b77d2ecb3f6eb73366e26dd5350996162f89866 Mon Sep 17 00:00:00 2001 From: sklump Date: Thu, 25 Mar 2021 15:26:20 +0000 Subject: [PATCH 148/243] light conformance pass on test imports to push and trigger retry vs json-ld timeout Signed-off-by: sklump --- aries_cloudagent/admin/tests/test_request_context.py | 3 +-- aries_cloudagent/cache/tests/test_in_memory_cache.py | 3 ++- aries_cloudagent/commands/tests/test_help.py | 3 +-- aries_cloudagent/commands/tests/test_init.py | 3 +-- aries_cloudagent/commands/tests/test_provision.py | 4 ++-- aries_cloudagent/commands/tests/test_start.py | 4 ++-- aries_cloudagent/config/tests/test_ledger.py | 2 +- aries_cloudagent/config/tests/test_logging.py | 3 ++- aries_cloudagent/core/tests/test_conductor.py | 1 + aries_cloudagent/core/tests/test_dispatcher.py | 1 - aries_cloudagent/indy/sdk/tests/test_holder.py | 5 ++--- aries_cloudagent/indy/sdk/tests/test_issuer.py | 6 +++--- aries_cloudagent/indy/sdk/tests/test_util.py | 5 +++-- aries_cloudagent/indy/sdk/tests/test_verifier.py | 4 +--- aries_cloudagent/indy/sdk/tests/test_wallet_plugin.py | 3 ++- aries_cloudagent/ledger/tests/test_indy.py | 6 +++--- aries_cloudagent/ledger/tests/test_routes.py | 3 +-- aries_cloudagent/messaging/tests/test_valid.py | 1 - aries_cloudagent/revocation/tests/test_indy.py | 5 +---- aries_cloudagent/storage/tests/test_indy_storage.py | 2 +- aries_cloudagent/storage/tests/test_storage_record.py | 2 +- aries_cloudagent/tails/tests/test_indy.py | 3 +-- aries_cloudagent/transport/tests/test_pack_format.py | 3 ++- aries_cloudagent/utils/tests/test_stats.py | 3 +-- aries_cloudagent/utils/tests/test_task_queue.py | 1 + aries_cloudagent/wallet/tests/test_crypto.py | 3 ++- aries_cloudagent/wallet/tests/test_indy_wallet.py | 7 +++---- aries_cloudagent/wallet/tests/test_routes.py | 4 +--- 28 files changed, 42 insertions(+), 51 deletions(-) diff --git a/aries_cloudagent/admin/tests/test_request_context.py b/aries_cloudagent/admin/tests/test_request_context.py index 9493ade998..25e3601544 100644 --- a/aries_cloudagent/admin/tests/test_request_context.py +++ b/aries_cloudagent/admin/tests/test_request_context.py @@ -1,5 +1,4 @@ -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from asynctest import mock as asyn_mock, TestCase as AsyncTestCase from ...core.in_memory import InMemoryProfile from ...core.profile import ProfileSession diff --git a/aries_cloudagent/cache/tests/test_in_memory_cache.py b/aries_cloudagent/cache/tests/test_in_memory_cache.py index 6f718ac65e..5da6d53843 100644 --- a/aries_cloudagent/cache/tests/test_in_memory_cache.py +++ b/aries_cloudagent/cache/tests/test_in_memory_cache.py @@ -1,6 +1,7 @@ -from asyncio import ensure_future, sleep, wait_for import pytest +from asyncio import ensure_future, sleep, wait_for + from ..base import CacheError from ..in_memory import InMemoryCache diff --git a/aries_cloudagent/commands/tests/test_help.py b/aries_cloudagent/commands/tests/test_help.py index 1fd3ed4d19..d52d41929d 100644 --- a/aries_cloudagent/commands/tests/test_help.py +++ b/aries_cloudagent/commands/tests/test_help.py @@ -1,5 +1,4 @@ -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from asynctest import mock as async_mock, TestCase as AsyncTestCase from .. import help as command diff --git a/aries_cloudagent/commands/tests/test_init.py b/aries_cloudagent/commands/tests/test_init.py index f199b87649..a7c2ed43ff 100644 --- a/aries_cloudagent/commands/tests/test_init.py +++ b/aries_cloudagent/commands/tests/test_init.py @@ -1,5 +1,4 @@ -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from asynctest import mock as async_mock, TestCase as AsyncTestCase from ... import commands as test_module diff --git a/aries_cloudagent/commands/tests/test_provision.py b/aries_cloudagent/commands/tests/test_provision.py index 8a72a0b597..adfa442c40 100644 --- a/aries_cloudagent/commands/tests/test_provision.py +++ b/aries_cloudagent/commands/tests/test_provision.py @@ -1,7 +1,7 @@ -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock import pytest +from asynctest import mock as async_mock, TestCase as AsyncTestCase + from ...config.base import ConfigError from ...config.error import ArgsParseError from ...core.profile import Profile diff --git a/aries_cloudagent/commands/tests/test_start.py b/aries_cloudagent/commands/tests/test_start.py index 4c34cb8561..9f3142cdec 100644 --- a/aries_cloudagent/commands/tests/test_start.py +++ b/aries_cloudagent/commands/tests/test_start.py @@ -1,9 +1,9 @@ import sys -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from asynctest import mock as async_mock, TestCase as AsyncTestCase from ...config.error import ArgsParseError + from .. import start as test_module diff --git a/aries_cloudagent/config/tests/test_ledger.py b/aries_cloudagent/config/tests/test_ledger.py index dac9872140..07c69aeda4 100644 --- a/aries_cloudagent/config/tests/test_ledger.py +++ b/aries_cloudagent/config/tests/test_ledger.py @@ -3,11 +3,11 @@ from asynctest import TestCase as AsyncTestCase, mock as async_mock +from .. import argparse from ...core.in_memory import InMemoryProfile from ...ledger.base import BaseLedger from ...ledger.error import LedgerError from ...wallet.base import BaseWallet -from .. import argparse from .. import ledger as test_module from ..injection_context import InjectionContext diff --git a/aries_cloudagent/config/tests/test_logging.py b/aries_cloudagent/config/tests/test_logging.py index cef6176b84..478dbe8141 100644 --- a/aries_cloudagent/config/tests/test_logging.py +++ b/aries_cloudagent/config/tests/test_logging.py @@ -1,7 +1,8 @@ import contextlib -from asynctest import mock as async_mock from io import StringIO + +from asynctest import mock as async_mock from tempfile import NamedTemporaryFile from .. import logging as test_module diff --git a/aries_cloudagent/core/tests/test_conductor.py b/aries_cloudagent/core/tests/test_conductor.py index 3696f4506d..16667ac739 100644 --- a/aries_cloudagent/core/tests/test_conductor.py +++ b/aries_cloudagent/core/tests/test_conductor.py @@ -1,4 +1,5 @@ from io import StringIO + from asynctest import TestCase as AsyncTestCase from asynctest import mock as async_mock diff --git a/aries_cloudagent/core/tests/test_dispatcher.py b/aries_cloudagent/core/tests/test_dispatcher.py index 256283eab5..3c94b0f5b4 100644 --- a/aries_cloudagent/core/tests/test_dispatcher.py +++ b/aries_cloudagent/core/tests/test_dispatcher.py @@ -2,7 +2,6 @@ import json from asynctest import TestCase as AsyncTestCase, mock as async_mock - from marshmallow import EXCLUDE from ...config.injection_context import InjectionContext diff --git a/aries_cloudagent/indy/sdk/tests/test_holder.py b/aries_cloudagent/indy/sdk/tests/test_holder.py index 341560a615..1e50f9e87b 100644 --- a/aries_cloudagent/indy/sdk/tests/test_holder.py +++ b/aries_cloudagent/indy/sdk/tests/test_holder.py @@ -1,11 +1,10 @@ import json - import pytest -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from asynctest import mock as async_mock, TestCase as AsyncTestCase import indy.anoncreds + from indy.error import IndyError, ErrorCode from ...holder import IndyHolder diff --git a/aries_cloudagent/indy/sdk/tests/test_issuer.py b/aries_cloudagent/indy/sdk/tests/test_issuer.py index eac419c3b8..96b39a2b6a 100644 --- a/aries_cloudagent/indy/sdk/tests/test_issuer.py +++ b/aries_cloudagent/indy/sdk/tests/test_issuer.py @@ -1,8 +1,7 @@ import json import pytest -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from asynctest import mock as async_mock, TestCase as AsyncTestCase from indy.error import ( AnoncredsRevocationRegistryFullError, @@ -15,9 +14,10 @@ from ....indy.sdk.profile import IndySdkProfile from ....indy.sdk.wallet_setup import IndyWalletConfig from ....wallet.indy import IndySdkWallet -from ...issuer import IndyIssuerRevocationRegistryFullError from ....ledger.indy import IndySdkLedgerPool +from ...issuer import IndyIssuerRevocationRegistryFullError + from .. import issuer as test_module diff --git a/aries_cloudagent/indy/sdk/tests/test_util.py b/aries_cloudagent/indy/sdk/tests/test_util.py index b6c89e782d..cb6a55ea50 100644 --- a/aries_cloudagent/indy/sdk/tests/test_util.py +++ b/aries_cloudagent/indy/sdk/tests/test_util.py @@ -1,13 +1,14 @@ import pytest + from os import makedirs from os.path import join from pathlib import Path from shutil import rmtree -from asynctest import TestCase as AsyncTestCase, mock as async_mock - import indy.blob_storage +from asynctest import mock as async_mock, TestCase as AsyncTestCase + from ...util import indy_client_dir, generate_pr_nonce, tails_path from ..util import create_tails_reader, create_tails_writer diff --git a/aries_cloudagent/indy/sdk/tests/test_verifier.py b/aries_cloudagent/indy/sdk/tests/test_verifier.py index 55451875f9..b28bb92bd6 100644 --- a/aries_cloudagent/indy/sdk/tests/test_verifier.py +++ b/aries_cloudagent/indy/sdk/tests/test_verifier.py @@ -4,9 +4,7 @@ from copy import deepcopy from time import time -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock - +from asynctest import mock as async_mock, TestCase as AsyncTestCase from indy.error import IndyError from .. import verifier as test_module diff --git a/aries_cloudagent/indy/sdk/tests/test_wallet_plugin.py b/aries_cloudagent/indy/sdk/tests/test_wallet_plugin.py index d67e3b4b2e..f4b5af368a 100644 --- a/aries_cloudagent/indy/sdk/tests/test_wallet_plugin.py +++ b/aries_cloudagent/indy/sdk/tests/test_wallet_plugin.py @@ -1,6 +1,7 @@ +import pytest + from asynctest import TestCase as AsyncTestCase from asynctest import mock as async_mock -import pytest from ....ledger.base import BaseLedger from ....wallet.base import BaseWallet, DIDInfo diff --git a/aries_cloudagent/ledger/tests/test_indy.py b/aries_cloudagent/ledger/tests/test_indy.py index ebd680d4a1..5b879bef3e 100644 --- a/aries_cloudagent/ledger/tests/test_indy.py +++ b/aries_cloudagent/ledger/tests/test_indy.py @@ -1,11 +1,11 @@ import asyncio import json -from os import path import tempfile import pytest -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from os import path + +from asynctest import mock as async_mock, TestCase as AsyncTestCase from ...cache.in_memory import InMemoryCache from ...indy.issuer import IndyIssuer, IndyIssuerError diff --git a/aries_cloudagent/ledger/tests/test_routes.py b/aries_cloudagent/ledger/tests/test_routes.py index 87c3070e40..46b3cc00c1 100644 --- a/aries_cloudagent/ledger/tests/test_routes.py +++ b/aries_cloudagent/ledger/tests/test_routes.py @@ -1,5 +1,4 @@ -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from asynctest import mock as async_mock, TestCase as AsyncTestCase from ...admin.request_context import AdminRequestContext from ...ledger.base import BaseLedger diff --git a/aries_cloudagent/messaging/tests/test_valid.py b/aries_cloudagent/messaging/tests/test_valid.py index cd154134a6..4fdcd4221b 100644 --- a/aries_cloudagent/messaging/tests/test_valid.py +++ b/aries_cloudagent/messaging/tests/test_valid.py @@ -2,7 +2,6 @@ import pytest from unittest import TestCase - from marshmallow import ValidationError from ..valid import ( diff --git a/aries_cloudagent/revocation/tests/test_indy.py b/aries_cloudagent/revocation/tests/test_indy.py index af3bad60f4..a3a8637b22 100644 --- a/aries_cloudagent/revocation/tests/test_indy.py +++ b/aries_cloudagent/revocation/tests/test_indy.py @@ -1,10 +1,7 @@ import json - import pytest -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock - +from asynctest import mock as async_mock, TestCase as AsyncTestCase from indy.error import IndyError, ErrorCode from ...core.in_memory import InMemoryProfile diff --git a/aries_cloudagent/storage/tests/test_indy_storage.py b/aries_cloudagent/storage/tests/test_indy_storage.py index 5521000a94..cca1cb8ed0 100644 --- a/aries_cloudagent/storage/tests/test_indy_storage.py +++ b/aries_cloudagent/storage/tests/test_indy_storage.py @@ -7,8 +7,8 @@ import indy.crypto import indy.did import indy.wallet -from indy.error import ErrorCode +from indy.error import ErrorCode from asynctest import mock as async_mock from ...config.injection_context import InjectionContext diff --git a/aries_cloudagent/storage/tests/test_storage_record.py b/aries_cloudagent/storage/tests/test_storage_record.py index 528e8fb18a..52e8a621b2 100644 --- a/aries_cloudagent/storage/tests/test_storage_record.py +++ b/aries_cloudagent/storage/tests/test_storage_record.py @@ -1,4 +1,4 @@ -from aries_cloudagent.storage.record import StorageRecord +from ...storage.record import StorageRecord class TestStorageRecord: diff --git a/aries_cloudagent/tails/tests/test_indy.py b/aries_cloudagent/tails/tests/test_indy.py index 516194320c..4dc479c5c6 100644 --- a/aries_cloudagent/tails/tests/test_indy.py +++ b/aries_cloudagent/tails/tests/test_indy.py @@ -1,5 +1,4 @@ -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from asynctest import mock as async_mock, TestCase as AsyncTestCase from ...config.injection_context import InjectionContext diff --git a/aries_cloudagent/transport/tests/test_pack_format.py b/aries_cloudagent/transport/tests/test_pack_format.py index 1f92f073bb..7e6a5ea2a3 100644 --- a/aries_cloudagent/transport/tests/test_pack_format.py +++ b/aries_cloudagent/transport/tests/test_pack_format.py @@ -1,4 +1,5 @@ import json + from base64 import b64encode from asynctest import TestCase as AsyncTestCase, mock as async_mock @@ -9,9 +10,9 @@ from ...wallet.base import BaseWallet from ...wallet.error import WalletError +from .. import pack_format as test_module from ..error import WireFormatEncodeError, WireFormatParseError, RecipientKeysError from ..pack_format import PackWireFormat -from .. import pack_format as test_module class TestPackWireFormat(AsyncTestCase): diff --git a/aries_cloudagent/utils/tests/test_stats.py b/aries_cloudagent/utils/tests/test_stats.py index 014b77b729..34da747459 100644 --- a/aries_cloudagent/utils/tests/test_stats.py +++ b/aries_cloudagent/utils/tests/test_stats.py @@ -1,7 +1,6 @@ from tempfile import NamedTemporaryFile -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from asynctest import mock as async_mock, TestCase as AsyncTestCase from ..stats import Collector diff --git a/aries_cloudagent/utils/tests/test_task_queue.py b/aries_cloudagent/utils/tests/test_task_queue.py index 4ac409eefa..35097c3dcd 100644 --- a/aries_cloudagent/utils/tests/test_task_queue.py +++ b/aries_cloudagent/utils/tests/test_task_queue.py @@ -1,4 +1,5 @@ import asyncio + from asynctest import mock as async_mock, TestCase as AsyncTestCase from ..task_queue import CompletedTask, PendingTask, TaskQueue, task_exc_info diff --git a/aries_cloudagent/wallet/tests/test_crypto.py b/aries_cloudagent/wallet/tests/test_crypto.py index 7208c82b52..2edff03bf9 100644 --- a/aries_cloudagent/wallet/tests/test_crypto.py +++ b/aries_cloudagent/wallet/tests/test_crypto.py @@ -1,6 +1,7 @@ import base64 -import json import pytest +import json + from unittest import mock, TestCase from ..util import str_to_b64 diff --git a/aries_cloudagent/wallet/tests/test_indy_wallet.py b/aries_cloudagent/wallet/tests/test_indy_wallet.py index 9b3af72721..6360ce85c8 100644 --- a/aries_cloudagent/wallet/tests/test_indy_wallet.py +++ b/aries_cloudagent/wallet/tests/test_indy_wallet.py @@ -1,4 +1,3 @@ -from aries_cloudagent.ledger.indy import IndySdkLedgerPool import base64 import json import os @@ -9,8 +8,7 @@ import indy.wallet import pytest -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock +from asynctest import mock as async_mock, TestCase as AsyncTestCase from ...core.in_memory import InMemoryProfile from ...config.injection_context import InjectionContext @@ -19,11 +17,12 @@ from ...indy.sdk.profile import IndySdkProfileManager from ...indy.sdk.wallet_setup import IndyWalletConfig from ...ledger.endpoint_type import EndpointType +from ...ledger.indy import IndySdkLedgerPool +from .. import indy as test_module from ..base import BaseWallet from ..in_memory import InMemoryWallet from ..indy import IndySdkWallet -from .. import indy as test_module from . import test_in_memory_wallet diff --git a/aries_cloudagent/wallet/tests/test_routes.py b/aries_cloudagent/wallet/tests/test_routes.py index c41979145f..1de7edb1d3 100644 --- a/aries_cloudagent/wallet/tests/test_routes.py +++ b/aries_cloudagent/wallet/tests/test_routes.py @@ -1,6 +1,4 @@ -from asynctest import TestCase as AsyncTestCase -from asynctest import mock as async_mock - +from asynctest import mock as async_mock, TestCase as AsyncTestCase from aiohttp.web import HTTPForbidden from ...admin.request_context import AdminRequestContext From d8674d3e76381e81dcb431cba54d9cc0568b6171 Mon Sep 17 00:00:00 2001 From: sklump Date: Wed, 31 Mar 2021 13:13:23 +0000 Subject: [PATCH 149/243] AriesOpenAPI, Acme, Alice Phone demos: update text pics & code. Checkuto-issue before issuing in demo webhooks. Signed-off-by: sklump --- .../issue_credential/v2_0/manager.py | 43 ++- .../v2_0/models/detail/dif.py | 13 +- .../v2_0/models/detail/indy.py | 15 +- .../v2_0/tests/test_manager.py | 265 ++++++++++++++++-- demo/AcmeDemoWorkshop.md | 13 +- demo/AliceGetsAPhone.md | 10 +- demo/AriesOpenAPIDemo.md | 172 ++++++------ demo/collateral/5-Faber-Connection-1.png | Bin 232529 -> 38987 bytes .../C-4-Faber-Credential-Offer-1.png | Bin 229952 -> 44706 bytes .../C-4-Faber-Credential-Offer-2.png | Bin 263392 -> 25525 bytes .../C-5-Alice-Credential-Offer-1.png | Bin 164013 -> 40361 bytes .../C-5-Alice-Credential-Offer-2.png | Bin 320127 -> 0 bytes .../C-6-Faber-Credential-Request.png | Bin 233887 -> 98850 bytes .../C-7-Alice-Store-Credential-1.png | Bin 74912 -> 34798 bytes .../C-7-Alice-Store-Credential-2.png | Bin 280212 -> 32516 bytes .../C-7-Alice-Store-Credential-3.png | Bin 148110 -> 30130 bytes .../C-7-Alice-Store-Credential-4.png | Bin 254766 -> 37301 bytes .../collateral/C-8-Faber-Credential-Ack-0.png | Bin 250101 -> 102645 bytes .../collateral/C-8-Faber-Credential-Ack-1.png | Bin 55825 -> 34801 bytes .../collateral/C-8-Faber-Credential-Ack-2.png | Bin 77762 -> 11783 bytes demo/collateral/P-1-Faber-Proof-Request-1.png | Bin 187949 -> 40088 bytes demo/collateral/P-1-Faber-Proof-Request-2.png | Bin 218983 -> 41750 bytes demo/collateral/P-2-Alice-Proof-Request-1.png | Bin 151056 -> 16808 bytes demo/collateral/P-2-Alice-Proof-Request-2.png | Bin 207287 -> 96455 bytes demo/collateral/P-3-Faber-Proof-1.png | Bin 337259 -> 62503 bytes demo/collateral/P-3-Faber-Proof-2.png | Bin 335944 -> 75116 bytes demo/collateral/P-3-Faber-Proof-3.png | Bin 283100 -> 55301 bytes demo/collateral/P-3-Faber-Proof-4.png | Bin 181907 -> 0 bytes demo/collateral/S-3-credential-0.png | Bin 350017 -> 24159 bytes demo/collateral/S-4-proof-0.png | Bin 341093 -> 33066 bytes demo/collateral/S-4-proof-4.png | Bin 289230 -> 54652 bytes demo/collateral/revocation-3-console.png | Bin 84605 -> 66418 bytes demo/runners/agent_container.py | 17 +- demo/runners/alice.py | 11 +- demo/runners/faber.py | 19 +- 35 files changed, 404 insertions(+), 174 deletions(-) delete mode 100644 demo/collateral/C-5-Alice-Credential-Offer-2.png delete mode 100644 demo/collateral/P-3-Faber-Proof-4.png diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py index c47c63fba7..204a26cf6c 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/manager.py @@ -91,10 +91,15 @@ async def get_detail_record( async with self._profile.session() as session: detail_cls = fmt.detail - try: - return await detail_cls.retrieve_by_cred_ex_id(session, cred_ex_id) - except StorageNotFoundError: - return None + records = await detail_cls.query_by_cred_ex_id(session, cred_ex_id) + if len(records) > 1: + LOGGER.warning( + "Cred ex id %s has %d %s detail records: should be 1", + cred_ex_id, + len(records), + fmt.api, + ) + return records[0] if records else None async def prepare_send( self, @@ -408,6 +413,16 @@ async def receive_offer( return cred_ex_record + async def _check_uniqueness(self, cred_ex_id: str): + """Raise exception on evidence that cred ex already has cred issued to it.""" + async with self._profile.session() as session: + for fmt in V20CredFormat.Format: + if await fmt.detail.query_by_cred_ex_id(session, cred_ex_id): + raise V20CredManagerError( + f"{fmt.api} detail record already " + f"exists for cred ex id {cred_ex_id}" + ) + async def create_request( self, cred_ex_record: V20CredExRecord, holder_did: str, comment: str = None ) -> Tuple[V20CredExRecord, V20CredRequest]: @@ -470,6 +485,7 @@ async def _create_indy(): if not cred_req_result: cred_req_result = await _create_indy() + await self._check_uniqueness(cred_ex_record.cred_ex_id) detail_record = V20CredExRecordIndy( cred_ex_id=cred_ex_record.cred_ex_id, cred_request_metadata=cred_req_result["metadata"], @@ -629,7 +645,7 @@ async def issue_credential( ) if retries > 0: LOGGER.info( - ("Waiting 2s on posted rev reg " "for cred def %s, retrying"), + "Waiting 2s on posted rev reg for cred def %s, retrying", cred_def_id, ) await asyncio.sleep(2) @@ -640,7 +656,7 @@ async def issue_credential( ) raise V20CredManagerError( - f"Cred def id {cred_def_id} " "has no active revocation registry" + f"Cred def id {cred_def_id} has no active revocation registry" ) del revoc @@ -658,7 +674,7 @@ async def issue_credential( rev_reg_id, tails_path, ) - + await self._check_uniqueness(cred_ex_record.cred_ex_id) detail_record = V20CredExRecordIndy( cred_ex_id=cred_ex_record.cred_ex_id, rev_reg_id=rev_reg_id, @@ -894,14 +910,11 @@ async def delete_cred_ex_record(self, cred_ex_id: str) -> None: async with self._profile.session() as session: for fmt in V20CredFormat.Format: # details first: do not strand any orphans - try: - detail_record = await fmt.detail.retrieve_by_cred_ex_id( - session, - cred_ex_id, - ) - await detail_record.delete_record(session) - except StorageNotFoundError: - pass + for record in await fmt.detail.query_by_cred_ex_id( + session, + cred_ex_id, + ): + await record.delete_record(session) cred_ex_record = await V20CredExRecord.retrieve_by_id(session, cred_ex_id) await cred_ex_record.delete_record(session) diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/models/detail/dif.py b/aries_cloudagent/protocols/issue_credential/v2_0/models/detail/dif.py index 2e8a73c9c6..7aa1c44288 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/models/detail/dif.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/models/detail/dif.py @@ -1,6 +1,6 @@ """DIF-specific credential exchange information with non-secrets storage.""" -from typing import Any +from typing import Any, Sequence from marshmallow import EXCLUDE, fields @@ -57,16 +57,15 @@ def record_value(self) -> dict: } @classmethod - async def retrieve_by_cred_ex_id( + async def query_by_cred_ex_id( cls, session: ProfileSession, cred_ex_id: str, - ) -> "V20CredExRecordDIF": + ) -> Sequence: """Retrieve a credential exchange DIF detail record by its cred ex id.""" - return await cls.retrieve_by_tag_filter( - session, - {"cred_ex_id": cred_ex_id}, - None, + return await cls.query( + session=session, + tag_filter={"cred_ex_id": cred_ex_id}, ) def __eq__(self, other: Any) -> bool: diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/models/detail/indy.py b/aries_cloudagent/protocols/issue_credential/v2_0/models/detail/indy.py index d47d9f76a5..87e79a9b3f 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/models/detail/indy.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/models/detail/indy.py @@ -1,6 +1,6 @@ """Indy-specific credential exchange information with non-secrets storage.""" -from typing import Any, Mapping +from typing import Any, Mapping, Sequence from marshmallow import EXCLUDE, fields @@ -60,16 +60,15 @@ def record_value(self) -> dict: } @classmethod - async def retrieve_by_cred_ex_id( + async def query_by_cred_ex_id( cls, session: ProfileSession, cred_ex_id: str, - ) -> "V20CredExRecordIndy": - """Retrieve a credential exchange indy detail record by its cred ex id.""" - return await cls.retrieve_by_tag_filter( - session, - {"cred_ex_id": cred_ex_id}, - None, + ) -> Sequence: + """Retrieve credential exchange indy detail record(s) by its cred ex id.""" + return await cls.query( + session=session, + tag_filter={"cred_ex_id": cred_ex_id}, ) def __eq__(self, other: Any) -> bool: diff --git a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py index 03205aec50..c4af1fe7fc 100644 --- a/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py +++ b/aries_cloudagent/protocols/issue_credential/v2_0/tests/test_manager.py @@ -218,20 +218,39 @@ async def setUp(self): async def test_get_indy_detail_record(self): cred_ex_id = "dummy" - detail_indy = V20CredExRecordIndy( - cred_ex_id=cred_ex_id, - rev_reg_id="rr-id", - cred_rev_id="0", - ) - await detail_indy.save(self.session) - assert ( - await self.manager.get_detail_record(cred_ex_id, V20CredFormat.Format.INDY) - == detail_indy - ) - assert ( - await self.manager.get_detail_record(cred_ex_id, V20CredFormat.Format.DIF) - is None - ) + details_indy = [ + V20CredExRecordIndy( + cred_ex_id=cred_ex_id, + rev_reg_id="rr-id", + cred_rev_id="0", + ), + V20CredExRecordIndy( + cred_ex_id=cred_ex_id, + rev_reg_id="rr-id", + cred_rev_id="1", + ), + ] + await details_indy[0].save(self.session) + await details_indy[1].save(self.session) # exercise logger warning on get() + + with async_mock.patch.object( + test_module.LOGGER, "warning", async_mock.MagicMock() + ) as mock_warning: + assert ( + await self.manager.get_detail_record( + cred_ex_id, + V20CredFormat.Format.INDY, + ) + in details_indy + ) + assert ( + await self.manager.get_detail_record( + cred_ex_id, + V20CredFormat.Format.DIF, + ) + is None + ) + mock_warning.assert_called_once() async def test_get_dif_detail_record(self): cred_ex_id = "dummy" @@ -792,6 +811,35 @@ async def test_receive_free_offer(self): == cred_preview.attributes ) + async def test_check_uniqueness(self): + with async_mock.patch.object( + V20CredFormat.Format.INDY.detail, + "query_by_cred_ex_id", + async_mock.CoroutineMock(), + ) as mock_indy_query, async_mock.patch.object( + V20CredFormat.Format.DIF.detail, + "query_by_cred_ex_id", + async_mock.CoroutineMock(), + ) as mock_dif_query: + mock_indy_query.return_value = [] + mock_dif_query.return_value = [] + await self.manager._check_uniqueness("dummy-cx-id") + + with async_mock.patch.object( + V20CredFormat.Format.INDY.detail, + "query_by_cred_ex_id", + async_mock.CoroutineMock(), + ) as mock_indy_query, async_mock.patch.object( + V20CredFormat.Format.DIF.detail, + "query_by_cred_ex_id", + async_mock.CoroutineMock(), + ) as mock_dif_query: + mock_indy_query.return_value = [async_mock.MagicMock()] + mock_dif_query.return_value = [async_mock.MagicMock()] + with self.assertRaises(V20CredManagerError) as context: + await self.manager._check_uniqueness("dummy-cx-id") + assert "detail record already exists" in str(context.exception) + async def test_create_request(self): connection_id = "test_conn_id" nonce = "0" @@ -825,6 +873,8 @@ async def test_create_request(self): self.context.injector.bind_instance(BaseCache, self.cache) with async_mock.patch.object( + self.manager, "_check_uniqueness", async_mock.CoroutineMock() + ) as mock_unique, async_mock.patch.object( V20CredExRecord, "save", autospec=True ) as mock_save: cred_def = {"cred": "def"} @@ -894,6 +944,8 @@ async def test_create_request_no_cache(self): ) with async_mock.patch.object( + self.manager, "_check_uniqueness", async_mock.CoroutineMock() + ) as mock_unique, async_mock.patch.object( V20CredExRecord, "save", autospec=True ) as mock_save: cred_def = {"cred": "def"} @@ -953,6 +1005,60 @@ async def test_create_request_bad_state(self): await self.manager.create_request(stored_cx_rec, holder_did) assert " state " in str(context.exception) + async def test_create_request_not_unique_x(self): + connection_id = "test_conn_id" + nonce = "0" + thread_id = "thread-id" + holder_did = "did" + + cred_offer = V20CredOffer( + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], + ) + ], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], + ) + cred_offer.assign_thread_id(thread_id) + + stored_cx_rec = V20CredExRecord( + cred_ex_id="dummy-cxid", + connection_id=connection_id, + cred_offer=cred_offer.serialize(), + initiator=V20CredExRecord.INITIATOR_SELF, + role=V20CredExRecord.ROLE_HOLDER, + state=V20CredExRecord.STATE_OFFER_RECEIVED, + thread_id=thread_id, + ) + + self.cache = InMemoryCache() + self.context.injector.bind_instance(BaseCache, self.cache) + + with async_mock.patch.object( + self.manager, "_check_uniqueness", async_mock.CoroutineMock() + ) as mock_unique: + mock_unique.side_effect = V20CredManagerError( + "detail record already exists" + ) + cred_def = {"cred": "def"} + self.ledger.get_credential_definition = async_mock.CoroutineMock( + return_value=cred_def + ) + + cred_req_meta = {} + holder = async_mock.MagicMock() + holder.create_credential_request = async_mock.CoroutineMock( + return_value=(json.dumps(INDY_CRED_REQ), json.dumps(cred_req_meta)) + ) + self.context.injector.bind_instance(IndyHolder, holder) + + with self.assertRaises(V20CredManagerError) as context: + await self.manager.create_request(stored_cx_rec, holder_did) + assert "detail record already exists" in str(context.exception) + async def test_receive_request(self): connection_id = "test_conn_id" stored_cx_rec = V20CredExRecord( @@ -1074,6 +1180,8 @@ async def test_issue_credential(self): ) as revoc, async_mock.patch.object( asyncio, "ensure_future", autospec=True ) as asyncio_mock, async_mock.patch.object( + self.manager, "_check_uniqueness", async_mock.CoroutineMock() + ) as mock_unique, async_mock.patch.object( V20CredExRecord, "save", autospec=True ) as mock_save: revoc.return_value.get_active_issuer_rev_reg_record = ( @@ -1219,6 +1327,8 @@ async def test_issue_credential_non_revocable(self): self.context.injector.bind_instance(BaseLedger, self.ledger) with async_mock.patch.object( + self.manager, "_check_uniqueness", async_mock.CoroutineMock() + ) as mock_unique, async_mock.patch.object( V20CredExRecord, "save", autospec=True ) as mock_save: (ret_cx_rec, ret_cred_issue) = await self.manager.issue_credential( @@ -1245,6 +1355,114 @@ async def test_issue_credential_non_revocable(self): assert ret_cx_rec.state == V20CredExRecord.STATE_ISSUED assert ret_cred_issue._thread_id == thread_id + async def test_issue_credential_non_unique_x(self): + CRED_DEF_NR = deepcopy(CRED_DEF) + CRED_DEF_NR["value"]["revocation"] = None + INDY_FILTER = { + "schema_id": SCHEMA_ID, + "cred_def_id": CRED_DEF_ID, + } + connection_id = "test_conn_id" + comment = "comment" + attr_values = { + "legalName": "value", + "jurisdictionId": "value", + "incorporationDate": "value", + } + thread_id = "thread-id" + + cred_preview = V20CredPreview( + attributes=[ + V20CredAttrSpec(name=k, value=v) for (k, v) in attr_values.items() + ] + ) + cred_proposal = V20CredProposal( + credential_preview=cred_preview, + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[CRED_20_PROPOSAL][ + V20CredFormat.Format.INDY.api + ], + ) + ], + filters_attach=[ + AttachDecorator.data_base64( + INDY_FILTER, + ident="0", + ) + ], + ) + cred_offer = V20CredOffer( + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[CRED_20_OFFER][ + V20CredFormat.Format.INDY.api + ], + ) + ], + offers_attach=[AttachDecorator.data_base64(INDY_OFFER, ident="0")], + ) + cred_offer.assign_thread_id(thread_id) + cred_request = V20CredRequest( + formats=[ + V20CredFormat( + attach_id="0", + format_=ATTACHMENT_FORMAT[CRED_20_REQUEST][ + V20CredFormat.Format.INDY.api + ], + ) + ], + requests_attach=[AttachDecorator.data_base64(INDY_CRED_REQ, ident="0")], + ) + + stored_cx_rec = V20CredExRecord( + cred_ex_id="dummy-cxid", + connection_id=connection_id, + cred_proposal=cred_proposal.serialize(), + cred_offer=cred_offer.serialize(), + cred_request=cred_request.serialize(), + initiator=V20CredExRecord.INITIATOR_SELF, + role=V20CredExRecord.ROLE_ISSUER, + state=V20CredExRecord.STATE_REQUEST_RECEIVED, + thread_id=thread_id, + ) + + # cover by_format property + by_format = stored_cx_rec.by_format + assert by_format.get("cred_proposal").get("indy") == INDY_FILTER + assert by_format.get("cred_offer").get("indy") == INDY_OFFER + assert by_format.get("cred_request").get("indy") == INDY_CRED_REQ + + issuer = async_mock.MagicMock() + issuer.create_credential = async_mock.CoroutineMock( + return_value=(json.dumps(INDY_CRED), None) + ) + self.context.injector.bind_instance(IndyIssuer, issuer) + + Ledger = async_mock.MagicMock() + self.ledger = Ledger() + self.ledger.get_schema = async_mock.CoroutineMock(return_value=SCHEMA) + self.ledger.get_credential_definition = async_mock.CoroutineMock( + return_value=CRED_DEF_NR + ) + self.ledger.__aenter__ = async_mock.CoroutineMock(return_value=self.ledger) + self.context.injector.clear_binding(BaseLedger) + self.context.injector.bind_instance(BaseLedger, self.ledger) + + with async_mock.patch.object( + self.manager, "_check_uniqueness", async_mock.CoroutineMock() + ) as mock_unique: + mock_unique.side_effect = V20CredManagerError( + "detail record already exists" + ) + with self.assertRaises(V20CredManagerError) as context: + await self.manager.issue_credential( + stored_cx_rec, comment=comment, retries=0 + ) + assert "detail record already exists" in str(context.exception) + async def test_issue_credential_fills_rr(self): connection_id = "test_conn_id" comment = "comment" @@ -1328,6 +1546,8 @@ async def test_issue_credential_fills_rr(self): ) as revoc, async_mock.patch.object( asyncio, "ensure_future", autospec=True ) as asyncio_mock, async_mock.patch.object( + self.manager, "_check_uniqueness", async_mock.CoroutineMock() + ) as mock_unique, async_mock.patch.object( V20CredExRecord, "save", autospec=True ) as mock_save: revoc.return_value = async_mock.MagicMock( @@ -1510,6 +1730,8 @@ async def test_issue_credential_no_active_rr_no_retries(self): ) as issuer_rr_rec, async_mock.patch.object( test_module, "IndyRevocation", autospec=True ) as revoc, async_mock.patch.object( + self.manager, "_check_uniqueness", async_mock.CoroutineMock() + ) as mock_unique, async_mock.patch.object( V20CredExRecord, "save", autospec=True ) as mock_save: revoc.return_value.get_active_issuer_rev_reg_record = ( @@ -1612,6 +1834,8 @@ async def test_issue_credential_no_active_rr_retry(self): ) as issuer_rr_rec, async_mock.patch.object( test_module, "IndyRevocation", autospec=True ) as revoc, async_mock.patch.object( + self.manager, "_check_uniqueness", async_mock.CoroutineMock() + ) as mock_unique, async_mock.patch.object( V20CredExRecord, "save", autospec=True ) as mock_save: revoc.return_value.get_active_issuer_rev_reg_record = ( @@ -1713,6 +1937,8 @@ async def test_issue_credential_rr_full(self): self.context.injector.bind_instance(IndyIssuer, issuer) with async_mock.patch.object( + self.manager, "_check_uniqueness", async_mock.CoroutineMock() + ) as mock_unique, async_mock.patch.object( test_module, "IndyRevocation", autospec=True ) as revoc: revoc.return_value.get_active_issuer_rev_reg_record = ( @@ -2118,16 +2344,17 @@ async def test_delete_cred_ex_record(self): mock_cred_format.Format = [ async_mock.MagicMock( detail=async_mock.MagicMock( - retrieve_by_cred_ex_id=async_mock.CoroutineMock( - return_value=stored_indy + query_by_cred_ex_id=async_mock.CoroutineMock( + return_value=[ + stored_indy, + stored_indy, + ] # deletion should get all, although there oughn't be >1 ) ) ), async_mock.MagicMock( detail=async_mock.MagicMock( - retrieve_by_cred_ex_id=async_mock.CoroutineMock( - side_effect=StorageNotFoundError() - ) + query_by_cred_ex_id=async_mock.CoroutineMock(return_value=[]) ) ), ] diff --git a/demo/AcmeDemoWorkshop.md b/demo/AcmeDemoWorkshop.md index dadcb2a585..f9275c2e41 100644 --- a/demo/AcmeDemoWorkshop.md +++ b/demo/AcmeDemoWorkshop.md @@ -245,7 +245,9 @@ with the following code: "credential_preview": cred_preview, "filter": {"indy": {"cred_def_id": cred_def_id}}, } - await agent.admin_POST("/issue-credential-2.0/send-offer", offer_request) + await agent.admin_POST( + "/issue-credential-2.0/send-offer", offer_request + ) ``` ... and then locate the code that handles the credential request callback: @@ -260,10 +262,11 @@ with the following code: ``` # issue credentials based on offer preview in cred ex record - await self.admin_POST( - f"/issue-credential-2.0/records/{cred_ex_id}/issue", - {"comment": f"Issuing credential, exchange {cred_ex_id}"}, - ) + if not message.get("auto_issue"): + await self.admin_POST( + f"/issue-credential-2.0/records/{cred_ex_id}/issue", + {"comment": f"Issuing credential, exchange {cred_ex_id}"}, + ) ``` Now you can run the Faber/Alice/Acme script again. You should be able to receive a proof and then issue a credential to Alice. diff --git a/demo/AliceGetsAPhone.md b/demo/AliceGetsAPhone.md index 62cc525edb..25f904c72f 100644 --- a/demo/AliceGetsAPhone.md +++ b/demo/AliceGetsAPhone.md @@ -222,10 +222,10 @@ In the Faber console, select option `1` to send a credential to the mobile agent The Faber agent outputs details to the console; e.g., ```text -Faber | Credential: state = credential_issued, credential_exchange_id = bb9bf750-905f-444f-b8aa-42c3a51d9464 -Faber | Revocation registry id: Jt7PhrEc2rYuS4iVcREfoA:4:Jt7PhrEc2rYuS4iVcREfoA:3:CL:44:default:CL_ACCUM:55a13dff-c104-45b5-b633-d3fd1ac43b9a -Faber | Credential revocation id: 1 -Faber | Credential: state = credential_acked, credential_exchange_id = bb9bf750-905f-444f-b8aa-42c3a51d9464 +Faber | Credential: state = credential-issued, cred_ex_id = ba3089d6-92da-4cb7-9062-7f24066b2a2a +Faber | Revocation registry ID: CMqNjZ8e59jDuBYcquce4D:4:CMqNjZ8e59jDuBYcquce4D:3:CL:50:faber.agent.degree_schema:CL_ACCUM:4f4fb2e4-3a59-45b1-8921-578d005a7ff6 +Faber | Credential revocation ID: 1 +Faber | Credential: state = done, cred_ex_id = ba3089d6-92da-4cb7-9062-7f24066b2a2a ``` The revocation registry id and credential revocation id only appear if revocation is active. If you are doing revocation, you to need the `Revocation registry id` later, so we recommend that you copy it it now and paste it into a text file or someplace that you can access later. If you don't write it down, you can get the Id from the Admin API using the **`GET /revocation/active-registry/{cred_def_id}`** endpoint, and passing in the credential definition Id (which you can get from the **`GET /credential-definitions/created`** endpoint). @@ -290,7 +290,7 @@ In the Faber console window, the proof should be received as validated. ## Revoke the Credential and Send Another Proof Request -If you have enabled revocation, you can try revoking the credential pending publication (`faber` options `4` and `5`). For the revocation step, You will need the revocation registry identifier and the credential revocation identifier (which is 1 for the first credential you issued), as the Faber agent logged them to the console at credential issue. +If you have enabled revocation, you can try revoking the credential and publishing its pending revoked status (`faber` options `5` and `6`). For the revocation step, You will need the revocation registry identifier and the credential revocation identifier (which is 1 for the first credential you issued), as the Faber agent logged them to the console at credential issue. Once that is done, try sending another proof request and see what happens! Experiment with immediate and pending publication. Note that immediate publication also publishes any pending revocations on its revocation registry. diff --git a/demo/AriesOpenAPIDemo.md b/demo/AriesOpenAPIDemo.md index 6e6be8a031..f42a1597c1 100644 --- a/demo/AriesOpenAPIDemo.md +++ b/demo/AriesOpenAPIDemo.md @@ -280,7 +280,7 @@ At this point Alice has simply stored the invitation in her wallet. You can see Invitation Status -To complete a connection with Faber, she must accept the invitation and send a corresponding connection request to Faber. Find the `connection_id` in the connection response from the previous **`POST /connections/receive-invitation`** endpoint call. You may note that the same data was sent to the controller as an event from ACA-Py and is visible in the terminal. Scroll to the **`POST /connections/{id}/accept-invitation`** endpoint and paste the `connection_id` in the `id` parameter field (you will have to click the `Try it out` button to see the available URL parameters). The response from clicking `Execute` should show that the connection has a state of `request`. +To complete a connection with Faber, she must accept the invitation and send a corresponding connection request to Faber. Find the `connection_id` in the connection response from the previous **`POST /connections/receive-invitation`** endpoint call. You may note that the same data was sent to the controller as an event from ACA-Py and is visible in the terminal. Scroll to the **`POST /connections/{conn_id}/accept-invitation`** endpoint and paste the `connection_id` in the `id` parameter field (you will have to click the `Try it out` button to see the available URL parameters). The response from clicking `Execute` should show that the connection has a state of `request`.
Show me a screenshot - Accept Invitation Request @@ -305,7 +305,7 @@ Note that the connection ID held by Alice is different from the one held by Fabe ### The Faber Agent Completes the Connection -To complete the connection process, Faber will respond to the connection request from Alice. Scroll to the **`POST /connections/{id}/accept-request`** endpoint and paste the `connection_id` you previously copied into the `id` parameter field (you will have to click the `Try it out` button to see the available URL parameters). The response from clicking the `Execute` button should show that the connection has a state of `response`, which indicates that Faber has accepted Alice's connection request. +To complete the connection process, Faber will respond to the connection request from Alice. Scroll to the **`POST /connections/{conn_id}/accept-request`** endpoint and paste the `connection_id` you previously copied into the `id` parameter field (you will have to click the `Try it out` button to see the available URL parameters). The response from clicking the `Execute` button should show that the connection has a state of `response`, which indicates that Faber has accepted Alice's connection request.
Show me a screenshot - Accept Connection Request @@ -350,7 +350,7 @@ Once you have a connection between two agents, you have a channel to exchange se ### Sending a message from Alice to Faber -On Alice's swagger page, scroll to the **`POST /connections/{id}/send-message`** endpoint. Click on `Try it Out` and enter a message in the body provided (for example `{"content": "Hello Faber"}`). Enter the connection id of Alice's connection in the field provided. Then click on `Execute`. +On Alice's swagger page, scroll to the **`POST /connections/{conn_id}/send-message`** endpoint. Click on `Try it Out` and enter a message in the body provided (for example `{"content": "Hello Faber"}`). Enter the connection id of Alice's connection in the field provided. Then click on `Execute`.
Show me a screenshot @@ -450,7 +450,7 @@ The one time setup work for issuing a credential is complete—creating a DI ## Issuing a Credential -Triggering the issuance of a credential from the Faber agent to Alice’s agent is done with another API call. In the Faber browser tab, scroll down to the **`POST /issue-credential/send`** and get ready to (but don’t yet) execute the request. Before execution, you need to update most of the data elements in the JSON. We cover how to update all the fields in the following. +Triggering the issuance of a credential from the Faber agent to Alice’s agent is done with another API call. In the Faber browser tab, scroll down to the **`POST /issue-credential-2.0/send`** and get ready to (but don’t yet) execute the request. Before execution, you need to update most of the data elements in the JSON. We now cover how to update all the fields. ### Faber - Preparing to Issue a Credential @@ -467,22 +467,22 @@ For the following fields, scroll on Faber's Swagger page to the listed endpoint, - `schema_id` the Id of the schema Faber created (use **`GET /schemas/created`**) and, - `cred_def_id` the Id of the credential definition Faber created (use **`GET /credential-definitions/created`**) -For these items set the values as follows: +into the `filter` section's `indy` subsection. Remove the `"dif"` subsection of the `filter` section within the JSON, and specify the remaining indy filter criteria as follows: -- `schema_version` set to the last segment of the `schema_id`, a three part version number that was randomly generated on startup of the Faber agent. Segments of the `schema_id` are separated by ":"s. -- `auto_remove` set to `true` (no quotes), see note below -- `revoc_reg_id` set to `null` (no quotes), see note below -- `comment` any string. It's intended to let Alice know something about the credential being offered. -- `schema_issuer_did:` set to the same the value as in `issuer_did`, -- `schema_name` set to the second last segment of the `schema_id`, in this case `degree schema` +- `schema_version`: set to the last segment of the `schema_id`, a three part version number that was randomly generated on startup of the Faber agent. Segments of the `schema_id` are separated by ":"s. +- `schema_issuer_did`: set to the same the value as in `issuer_did`, +- `schema_name`: set to the second last segment of the `schema_id`, in this case `degree schema` -The `revoc_reg_id` being `null` means that we won't be using a revocation registry and therefore can't revoke the credentials we issue. +Finally, set the remaining values as follows: +- `auto_remove`: set to `true` (no quotes), see note below +- `comment`: set to any string. It's intended to let Alice know something about the credential being offered. +- `trace`: set to `false` (no quotes). It's for troubleshooting, performance profiling, and/or diagnostics. By setting `auto_remove` to true, ACA-Py will automatically remove the credential exchange record after the protocol completes. When implementing a controller, this is the likely setting to use to reduce agent storage usage, but implies if a record of the issuance of the credential is needed, the controller must save it somewhere else. For example, Faber College might extend their Student Information System, where they track all their students, to record when credentials are issued to students, and the Ids of the issued credentials. ### Faber - Issuing the Credential -Finally, we need put into the JSON the data values for the credential proposal section of the JSON. Copy the following and paste it between the square brackets of the `attributes` item, replacing what is there. Feel free to change the attribute `value` items, but don't change the labels or names: +Finally, we need put into the JSON the data values for the `credential_preview` section of the JSON. Copy the following and paste it between the square brackets of the `attributes` item, replacing what is there. Feel free to change the attribute `value` items, but don't change the labels or names: ``` { @@ -507,7 +507,7 @@ Finally, we need put into the JSON the data values for the credential proposal s } ``` -Ok, finally, you are ready to click `Execute`. The request should work, but if it doesn’t - check your JSON! Did you get all the quotes and commas right? +OK, finally, you are ready to click `Execute`. The request should work, but if it doesn’t - check your JSON! Did you get all the quotes and commas right?
Show me a screenshot - credential offer @@ -515,23 +515,22 @@ Ok, finally, you are ready to click `Execute`. The request should work, but if i Faber Submit Credential Offer
-To confirm the issuance worked, scroll up on the Faber Swagger page to the `issue-credential` section and execute the **`GET /issue-credential/records`** endpoint. You should see a lot of information about the exchange just initiated, including the state of the exchange—`credential_issued`. +To confirm the issuance worked, scroll up on the Faber Swagger page to the `issue-credential v2.0` section and execute the **`GET /issue-credential-2.0/records`** endpoint. You should see a lot of information about the exchange just initiated. ### Alice Receives Credential -Let’s look at it from Alice’s side. Alice's ACA-Py instance was started with the options to automatically handle credential offers by immediately responding with a credential request. Scroll back in the Alice terminal to where the credential issuance started. If you've followed the full script, that is just after where we used the basic message protocol to send text messages between Alice and Faber. +Let’s look at it from Alice’s side. Alice's agent source code automatically handles credential offers by immediately responding with a credential request. Scroll back in the Alice terminal to where the credential issuance started. If you've followed the full script, that is just after where we used the basic message protocol to send text messages between Alice and Faber. Alice's agent first received a notification of a Credential Offer, to which it responded with a Credential Request. Faber received the Credential Request and responded in turn with an Issue Credential message. Scroll down through the events from ACA-Py to the controller to see the notifications of those messages. Make sure you scroll all the way to the bottom of the terminal so you can continue with the process.
Show me a screenshot - issue credential Issue Credential - Issue Credential
### Alice Stores Credential in her Wallet -We can check (via Alice's Swagger interface) the issue credential status by hitting the **`GET /issue-credential/records`** endpoint. Note in the above that the credential status is "credential_received", but not yet "stored". Let's address that. +We can check (via Alice's Swagger interface) the issue credential status by hitting the **`GET /issue-credential-2.0/records`** endpoint. Note that within the results, the `cred_ex_record` just received has a `state` of `credential-received`, but not yet `done`. Let's address that.
Show me a screenshot - check credential exchange status @@ -539,7 +538,7 @@ We can check (via Alice's Swagger interface) the issue credential status by hitt
-First, we need the `credential_exchange_id` from API call response above, or from the event in the terminal, and use the endpoint **`POST /issue-credential/records/{id}/store`** to tell Alice's ACA-Py instance to store the credential in agent storage (aka the Indy Wallet). Note that in the JSON for that endpoint we can provide a credential Id by setting a value in the `credential_id` string. A real controller might use the `credential_exchange_id` for that, or use something else that makes sense in the agent's business scenario. +First, we need the `cred_ex_id` from the API call response above, or from the event in the terminal; use the endpoint **`POST /issue-credential-2.0/records/{cred_ex_id}/store`** to tell Alice's ACA-Py instance to store the credential in agent storage (aka the Indy Wallet). Note that in the JSON for that endpoint we can provide a credential Id to store in the wallet by setting a value in the `credential_id` string. A real controller might use the `cred_ex_id` for that, or use something else that makes sense in the agent's business scenario (but the agent generates a random credential identifier by default).
Show me a screenshot - store credential @@ -547,7 +546,7 @@ First, we need the `credential_exchange_id` from API call response above, or fro
-Now, in Alice’s swagger browser tab, find the `credentials` section and within that, execute the **`GET /credentials`** endpoint. There should be a list of credentials held by Alice, with just a single entry, the credential issued from the Faber agent. Note that the element `referent` is the value of the `credential_id` element used in other calls. `referent` is the name returned in the `indy-sdk` call to get the set of credentials for the wallet and ACA-Py code is not changing it in the response. +Now, in Alice’s swagger browser tab, find the `credentials` section and within that, execute the **`GET /credentials`** endpoint. There should be a list of credentials held by Alice, with just a single entry, the credential issued from the Faber agent. Note that the element `referent` is the value of the `credential_id` element used in other calls. `referent` is the name returned in the `indy-sdk` call to get the set of credentials for the wallet and ACA-Py code does not change it in the response. ### Faber Receives Acknowledgment that the Credential was Received @@ -559,7 +558,7 @@ On the Faber side, we can see by scanning back in the terminal that it receive e
-Note that once the credential processing completed, Faber's agent deleted the credential exchange record from its wallet. This can be confirmed by executing the endpoint **`GET /issue-credential/records`** +Note that once the credential processing completed, Faber's agent deleted the credential exchange record from its wallet. This can be confirmed by executing the endpoint **`GET /issue-credential-2.0/records`**
Show me a screenshot @@ -573,25 +572,25 @@ You’ve done it, issued a credential! w00t! Those that know something about the Indy process for issuing a credential and the DIDComm `Issue Credential` protocol know that there multiple steps to issuing credentials, a back and forth between the issuer and the holder to (at least) offer, request and issue the credential. All of those messages happened, but the two agents took care of those details rather than bothering the controller (you, in this case) with managing the back and forth. -* On the Faber agent side, this is because we used the **`POST /issue-credential/send`** administrative message, which handles the back and forth for the issuer automatically. We could have used the other `/issue-credential/` endpoints to allow the controller to handle each step of the protocol. -* On Alice's agent side, this is because in the startup options for the agent, we used the `--auto-respond-credential-offer` parameter. +* On the Faber agent side, this is because we used the **`POST /issue-credential-2.0/send`** administrative message, which handles the back and forth for the issuer automatically. We could have used the other `/issue-credential-2.0/` endpoints to allow the controller to handle each step of the protocol. +* On Alice's agent side, this is because the handler for the `issue_credential_v2_0` event always responds to credential offers with corresponding credential requests. ### Bonus Points -If you would like to perform all of the issuance steps manually on the Faber agent side, use a sequence of the other `/issue-credential/` messages. Use the **`GET /issue-credential/records`** to both check the credential exchange state as you progress through the protocol and to find some of the data you’ll need in executing the sequence of requests. +If you would like to perform all of the issuance steps manually on the Faber agent side, use a sequence of the other `/issue-credential-2.0/` messages. Use the **`GET /issue-credential-2.0/records`** to both check the credential exchange state as you progress through the protocol and to find some of the data you’ll need in executing the sequence of requests. The following table lists endpoints that you need to call ("REST service") and callbacks that your agent will receive ("callback") that your need to respond to. See the [detailed API docs](../AdminAPI.md). | Protocol Step | Faber (Issuer) | Alice (Holder) | Notes | | -------------------- | ---------------------- | ------------------ | ----- | -| Send Credential Offer | **`POST /issue-credential/send-offer`** | | REST service | -| Receive Offer | | /issue_credential/ | callback | -| Send Credential Request | | **`POST /issue-credential/records/{cred_ex_id}/send-request`** | REST service | -| Receive Request | /issue_credential/ | | callback | -| Issue Credential | **`POST /issue-credential/records/{cred_ex_id}/issue`** | | REST service | -| Receive Credential | | /issue_credential/ | callback | -| Store Credential | | **`POST /issue-credential/records/{cred_ex_id}/store`** | REST service | -| Receive Acknowledgement | /issue_credential/ | | callback | +| Send Credential Offer | **`POST /issue-credential-2.0/send-offer`** | | REST service | +| Receive Offer | | /issue_credential_v2_0/ | callback | +| Send Credential Request | | **`POST /issue-credential-2.0/records/{cred_ex_id}/send-request`** | REST service | +| Receive Request | /issue_credential_v2_0/ | | callback | +| Issue Credential | **`POST /issue-credential-2.0/records/{cred_ex_id}/issue`** | | REST service | +| Receive Credential | | /issue_credential_v2_0/ | callback | +| Store Credential | | **`POST /issue-credential-2.0/records/{cred_ex_id}/store`** | REST service | +| Receive Acknowledgement | /issue_credential_v2_0/ | | callback | | Store Credential Id | | | application function | ## Requesting/Presenting a Proof @@ -602,52 +601,54 @@ Alice now has her Faber credential. Let’s have the Faber agent send a request From the Faber browser tab, get ready to execute the **`POST /present-proof/send-request`** endpoint. After hitting `Try it Now`, erase the data in the block labelled "Edit Value Model", replacing it with the text below. Once that is done, replace in the JSON each instance of `cred_def_id` (there are four instances) and `connection_id` with the values found using the same techniques we've used earlier in this tutorial. Both can be found by scrolling back a little in the Faber terminal, or you can execute API endpoints we've already covered. You can also change the value of the `comment` item to whatever you want. -``` JSONC +```jsonc { - "connection_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "comment": "This is a comment about the reason for the proof", - "proof_request": { - "name": "Proof of Education", - "version": "1.0", - "requested_attributes": { - "0_name_uuid": { - "name": "name", - "restrictions": [ - { - "cred_def_id": "WgWxqztrNooG92RXvxSTWv:3:CL:20:tag" - } - ] - }, - "0_date_uuid": { - "name": "date", - "restrictions": [ - { - "cred_def_id": "WgWxqztrNooG92RXvxSTWv:3:CL:20:tag" - } - ] - }, - "0_degree_uuid": { - "name": "degree", - "restrictions": [ - { - "cred_def_id": "WgWxqztrNooG92RXvxSTWv:3:CL:20:tag" - } - ] + "connection_id": "e469e0f3-2b4d-4b12-9ac7-293f23e8a816", + "presentation_request": { + "indy": { + "name": "Proof of Education", + "version": "1.0", + "requested_attributes": { + "0_name_uuid": { + "name": "name", + "restrictions": [ + { + "cred_def_id": "SsX9siFWXJyCAmXnHY514N:3:CL:8:faber.agent.degree_schema" + } + ] + }, + "0_date_uuid": { + "name": "date", + "restrictions": [ + { + "cred_def_id": "SsX9siFWXJyCAmXnHY514N:3:CL:8:faber.agent.degree_schema" + } + ] + }, + "0_degree_uuid": { + "name": "degree", + "restrictions": [ + { + "cred_def_id": "SsX9siFWXJyCAmXnHY514N:3:CL:8:faber.agent.degree_schema" + } + ] + }, + "0_self_attested_thing_uuid": { + "name": "self_attested_thing" + } }, - "0_self_attested_thing_uuid": { - "name": "self_attested_thing" - } - }, - "requested_predicates": { - "0_age_GE_uuid": { - "name": "age", - "p_type": ">=", - "p_value": 18, - "restrictions": [ - { - "cred_def_id": "WgWxqztrNooG92RXvxSTWv:3:CL:20:tag" - } - ] + "requested_predicates": { + "0_age_GE_uuid": { + "name": "age", + "p_type": ">=", + "p_value": 18, + "restrictions": [ + { + "cred_def_id": "SsX9siFWXJyCAmXnHY514N:3:CL:8:faber.agent.degree_schema" + } + ] + } } } } @@ -676,9 +677,7 @@ In a real scenario, for example if Alice had a mobile agent on her smartphone, t ### Faber - Verifying the Proof -> **NOTE** 2020.03.16 - The verification step of the tutorial may not be working. We're investigating and will update these instructions as soon as we have a response. - -Note that in the response, the state is `request_sent`. That is because when the HTTP response was generated (immediately after sending the request), Alice’s agent had not yet responded to the request. We’ll have to do another request to verify the presentation worked. Copy the value of the `presentation_exchange_id` field from the event in the Faber terminal and use it in executing the **`GET /present-proof/records/{pres_ex_id}`** endpoint. That should return a result showing the `state` as `verified` and `verified` as `true`. Proof positive! +Note that in the response, the state is `request-sent`. That is because when the HTTP response was generated (immediately after sending the request), Alice's agent had not yet responded to the request. We’ll have to do another request to verify the presentation worked. Copy the value of the `pres_ex_id` field from the event in the Faber terminal and use it in executing the **`GET /present-proof-2.0/records/{pres_ex_id}`** endpoint. That should return a result showing the `state` as `done` and `verified` as `true`. Proof positive! You can see some of Faber's activity below: @@ -687,28 +686,27 @@ You can see some of Faber's activity below: Receive and Verify Proof Receive and Verify Proof Receive and Verify Proof - Receive and Verify Proof
### Present Proof Notes -As with the issue credential process, the agents handled some of the presentation steps without bothering the controller. In this case, Alice’s agent processed the presentation request automatically because it was started with the `--auto-respond-presentation-request` parameter set, and her wallet contained exactly one credential that satisfied the presentation-request from the Faber agent. Similarly, the Faber agent was started with the `--auto-verify-presentation` parameter and so on receipt of the presentation, it verified the presentation and updated the status accordingly. +As with the issue credential process, the agents handled some of the presentation steps without bothering the controller. In this case, Alice's agent processed the presentation request automatically through its handler for the `present_proof_v2_0` event, and her wallet contained exactly one credential that satisfied the presentation-request from the Faber agent. Similarly, the Faber agent's handler for the event responds automatically and so on receipt of the presentation, it verified the presentation and updated the status accordingly. ### Bonus Points -If you would like to perform all of the proof request/response steps manually, you cal call all of the individual `/present-proof` messages. +If you would like to perform all of the proof request/response steps manually, you can call all of the individual `/present-proof-2.0` messages. The following table lists endpoints that you need to call ("REST service") and callbacks that your agent will receive ("callback") that your need to respond to. See the [detailed API docs](../AdminAPI.md). | Protocol Step | Faber (Verifier) | Alice (Holder/Prover) | Notes | | -------------------- | ---------------------- | ------------------------- | ----- | -| Send Proof Request | **`POST /present-proof/send-request`** | | REST service | -| Receive Proof Request | | /present_proof | callback | -| Find Credentials | | **`GET /present-proof/records/{id}/credentials`** | REST service | +| Send Proof Request | **`POST /present-proof-2.0/send-request`** | | REST service | +| Receive Proof Request | | /present_proof_v2_0 | callback | +| Find Credentials | | **`GET /present-proof-2.0/records/{pres_ex_id}/credentials`** | REST service | | Select Credentials | | | application or user function | -| Send Proof | | **`POST /present-proof/records/{id}/send-presentation`** | REST service | -| Receive Proof | /present_proof | | callback | -| Validate Proof | **`POST /present-proof/records/{id}/verify-presentation`** | | REST service | +| Send Proof | | **`POST /present-proof-2.0/records/{pres_ex_id}/send-presentation`** | REST service | +| Receive Proof | /present_proof_v2_0 | | callback | +| Validate Proof | **`POST /present-proof-2.0/records/{pres_ex_id}/verify-presentation`** | | REST service | | Save Proof | | | application data | ## Conclusion diff --git a/demo/collateral/5-Faber-Connection-1.png b/demo/collateral/5-Faber-Connection-1.png index f79b70c0d8cded69876ded26a5a3662b67f03804..fc5f02572f9f2f23c3d736a5c6dd1a274fdb9ffd 100644 GIT binary patch literal 38987 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 literal 232529 zcmeFZby!qg+cpj;q9`ItNh2!F(9M7%qNH@^5YpXgAU!COBA_%wGjt0KBQSJ#jC2m& ze49I-_kDlg``q&9@A!_#;}~bNXV+TmTIV{i>pHI;{7ONZ0G|RM3k!?j<%?&^SXejW zu&}O@UcUzHfqN>_Vqx7Pv5=H}^-@xj?vmCeb4*%ESGL_@GCG?d8Lil9C&W%a&F1 z5?jyUc=E8Wa=$CysqPVm-V&OAP&(NPr>2vL|qb(h*`k zrR=Bd>})4OV+X0>ex$>CrW@9mrYRYwlIC91{P=MjnK20Krz)xJ$7}v?;{f!-Re>&2g}9UYDSl#$k;&>u1pCZVK#r{R->sebCMK z5MOYl7RS%PqXLNbQXhVrjM?@hn)vDa%_9}0>u;)Oj5e2W1KHQZs>6=BNTf9$9o;(( zdeV%Qa!5|dZ<2@`h_!hZ&OuyP$tl7`cJ})A6q+cBNce{0b%7fb@2lxZA@Za3oa=MFw8{%vkjX2^NiM%+M`lDA(L5ni37Us-buB(Uh_u*K@#!MA)kk6rIt zHI5ddjYS7Z2~PeXy|I-pjB&kn-5-Z|M&tVp=Qs46?+%A?q^Gad_={i1CZfCc@a_G= z*(Ewk$0UOJcaOf2N4@1UypnZQ=f~|r%GE1@5)7}gGkD18EM8)JP≦C~0)!xSnpb1qryJu~)2qLYhVTvh=H5T+8Y;5Qr9FOs&q27e zInU7U+DwrkWfy{MmK7u8Eimbyj3_`yV6aap-#qVrta(@W#*g<`pHdj{e~){mFf1h~ zBZya@px=1s(+iV3^1%w5)p8Hb?ko^#+%3ODct?>)Bv`EZ$=%?zm&Fe&KRm1oHwfxBEVf*LZpJl(W9Ph>}ay*Rvy#G=0WA)Fj)+R?8#}>zYMIl(UciXDss&0QRFh$OmC#WElzfXZuxI1=<82POiKBNh${LPc?X<4ISk#3 zm=jl0%OX`ZSmuQVRfTBFib>VV`bekt$i3Dtd8kceLy`w|{je9br}QS@Fz-%ogOX<2 ztMu+~-RYa!N(w!iJvt5_jNcen&Ke=CLQZ8IWgg4a$*`pd$f(I6qik6TSo)$FS)`fF zSqoGrQ@vjv2H?L$JVO`+q$;NsOU{MK5K^a7_WCSYA1NOx90_?AuqX|v@@eu(ma4iW zTUIaoe+l_gtNnG9s+6S^Z8>o(%&76YnF*IV&uuPSE^y9DmRF9`fJWAa#)k6wH!g)H z*>^cgDGn0oj23hGjEs7-jCt*j=N*CC6)^#W#Capy1KJBEN62ib6D5*HgL}QZ!fQ0E zEWkBtPjroX)MoUZaFy^IVIkoJ=g!5Q6>jHRXCCLFm89;qzSI?uMa<6NN@BlPt185k z2OdX)f}^l~Y)x=rsv=-2JfEAXZO#hkHa5>I~2ASk61YQrL;AF3=X)Lz*tvWT4*|^J~CODI)XdQUTjtD1+lZ} zDlI6hM@zWHtrnub56tAGeok$0sD~tf{-jdeXO=nE3G4jS$(jhNx})o@OIle{;qB<+ z+~Fkl>nJuMS|?+Srkw1v9HRr{+Sh)x?R2N()cWMwkDV8L!}C3B*&D4}xft(R(?tYk zbZ&QiY+R(tt6<-XmXh{Omr^oeU4Gq7Z^c6+-#5OGeAmuc&Wg^W&mwSc;q>AxU%7@u zjkAE8g#X}bz_mPrD(c*OsN4BBX|6lqYu$0=kD{QU*1muA5cNRr&YGDF4}Bnqh|i4={CuMo)9MvjU-&?iFZV~(bW{iP6>EdN=XT`r&hE!d7(Y$S8eO{w&5=rdY%Vxey4}5;1vmeArYZta)W^6 zR&fzox52Mki9#_#2%(9}{7OnkysO{e>OFlXs5cyyi60?k^MI!Zl!82@IaE8OHAi-U zMWsD%`zeg+hE}r9gF)As4s2+^5n=@{b!R7!wrN3|`h`C9#hj)_D-W8aq(VK(@Hi%G z-xoi0Y8`l*&{*8KFN==lCtD(B=U6^`v>AJ39ANwevu0}BUdDlp-Hs_QDAXykK$PEA zXq{6|=-uiCv5v5U&V?~UAqLXw>G_rhYZXn8BnjfyGuBJ6J=kQu znz_}|VAq)Y*t#|0_~a{yvP#{%3I;zUJkdb}bTWUUGr^IkmtI{rxMfxCCcOsMSy0s| zm-gyf_AJp?oho-5orL=M9)H=>S)20pclfqLC&(mxu(khd%8nXetlx9^aPy3zMVg;B zotE7~f?}Tk7H@`ttH2|E7n++wgQKg1-aCXV;+8r)IxuJswSmuD$CSn9pRI2{zsqz~ z*iBXtndlRS@1DiK=Mm^s5E}F4*cnG`V=r{+Zr0gvr5qz-Wba zPtI+Ph%%8f0bQr6!Ty=vo^hem26H4mvt@iptl=lU%EhZ!dI) zR%^LUjknhec>7_lG`@=rlp$=VwGf9L1|Evvb{27^^;_MqSbMqi`B-c36qLl$#`i`Hr9`*%vVUm*xyUv~-DPsmsthUR$?FgS2OFwti z#EJREyj$I!&Yz5VCUp~R1? zdRPi`G8^8;^o`r6{FqvNT|V7wzA=6{QO#BeSWLGYJ{=vMsH2IQu=2C#f1M8eCHCO8v$MT0 z2;}DG#^J`pVdrQL;t~=P0&#MKxVhPZBiNlhY@LnV*=?N|{=CTF*Lh~@1aY*mceb#z zrMtMUk+GeNv)F?N7dQIXzdxVT)ZOC0?quuqSF?Zyf-ZgmadB{h{&j8ORMCsQ!mljc zO|3PbS=gA`Isx|pbMx}?i~e!K|Mk;<-SWSks`X!|a&hwhk5m8KPk)^%3c6^*e{0g8 z{q@IQpu@oUqM(0uJ{bR*o0A|g9#j_36jgz5oQuH$zHS2lG5z@sY-49}VKd8o!NQWj zdim^$syp`Tgh$lCTq5I{qJqSowvX4pbIYU&-};Wr9nNI&qJ_ORXbHQInOpl4ozk68dR!?cX25oYxZq@EaF`~s z?`I;q;k=*mHuFYL3!EJK&n@^@D`{)}{k16X57~Hf$8c1DX-06@{|L>- zQyW#qujB(d3D;P1$f*oYXESFF2Ejxi(uoLis-e6p!6O$-%axEzHt`q+Tr_E2ZsI7; zb*pALjyBUHy7)^VX-k++G80PKrGr|D@0-_**F?-0_nCm$R9CNO3+rO3cJ-j=_3ylh zlgv4m%WQ(HKA_Zw7WF0>mQ|7$42H=uhxC|qeS$-CqQo}OmNyfjy;cM+MJ{7H@z5os zRSxfXW|BLi3Iz)tJhJsVs{F#vj|)nd5F*lD z`XoK)-M&4kvbL3obN+stV3)4^P>r)fu|D3a-6QW?~<5(x8-7X$M_L9R|F8WDzUb;x1k_{buxskf5EdsVC$=O(#=+<1S+WDD7WNA8^S$=8EK5j7$F?!1 zsldc5=EP|+t72|TW%k=Dr;EeFunI(tpK*{Crf{gNT5#f0<}s4B#I^Ma_t1PvT}o}- zOVSkosIzRHa_*K+4^A)m$zt2V*5Cl9 zK{mdi)_8rQy!m6)2y9|=yW-c$T)->+zUvdlsN6#?+vXnuI+QfpR6KSawRSURXU4Aw zJh+aln;tZk%p@&w!G+KBNdl4G<;md-GBBi6SdxQ{oFL4um6NYtlZwaI+UMj=^g_!c zwDd2r73K6QmF?)|D#Xt=`XVzI6?;yB*U52Jz@unSwNSrU8Aa@xA8kNoTV)TPUaEr` z{^;OgGZK_Cdk(qhIL2XBgD@1^uZPidpDFKcbV5FO5JgQEnmpC|i)(@ncm3` zUS>;3IQy8os{Y*tZ!r#Wj^f~{JI0fpK-uV-sj%jDvjrA1#xpzJp!TK2**hW6l?V>#2@44wGgcLTQ=n8vdxA@$088O8lowY zwWFW3@9zg-sjc;KEk#*DWPM98H`l|^6le8i32rF=M&VG9HesAgD3b_pzP_((jr&Xd zc2m|brk?2`);yg-JM%>cRRaN~&o|mCtSr=OoVTMYPG)MPH&h2~W?uH35`qxa3kF0H zymgzKa5N(s6$u|Zj+sx&GU}XWY$!iOO)BG4i&ouElwe`qV-7LQTlf6JgK_QK$Ng3g z8>Q{&$`*`@q5U#@IdbTBzFiUF6;?*Xa1(>NUS(RA566qx?EXCzN5T1~yWwDdbqT2! zTg``?ms&w=nCJ`#N#k57jc4wY@dYHga+-~7Iyh|OrlO-s`XHUlCk{|k1_(m$o^pCI zDzju+GvnzF(+9)z#x{5$Ua#=V#UD zq2t#&j|~TAMLOhh;2bpGT7AuCCqNd`Sa_0^=rm~79+#V3{c|#T7mv)18fYe()?F!gEWT3s3XLVG(~rt;YCHSuydT> zemB>rWUO(NMEP*ia<+?d$dc449~T#wqw{8cNwOn{2vX5ADGc1wnG7_HzareNsXSI7 zH_>4$Nk4t$jfzQ@f?8rpy~XoAch**G->AhRNT#UoSj8&X^?6V(fX;O8a>@=gs;5~R zRbJP!9LR-fXBcRC?ys`eN9$OjH6im;L% zW*NBKpg*=x3?=qVsIyv`l8<$GH^9kioqrjFdlR85(U8mT zPDznMAKsU(l5ebT_VcL9rfBZ`R7Lb?^E^x~f;1q_^ISd*dQMGfJrNKLmzIjThT{H_ zLyDam8KP6G900$MIf=SyEbkhk+ObmR+zj#18y9jg&b4g!(D4X}^w;92(;x|V$f|N- zRf#Uf(^(qWQr{ChpN%HWy(RDfchAfhUh-B;3csIS?oCx=COvLLOVqUn862~Y!T2Q& zxTOM0GrqucP^KH?=4}CvRIdl)qUKAl$00aW%i43#SG&Zkyf|>o0`gp*TmrT?doF^hi*M8qhY46{s)0%;o0s2dND2d&%Inn{&^dp;O|D@K3$#OcBPhs?o2Zmn zdCc$pr^^&gqWCs~yuV!Ky0p-P$beDa5bf#^(RN~WV)1Iz6d+5+)&$9!&0C71k2 zd@~zvJ0t9X&_B9ih?uiol{3M$tu!E&E<$K~{GcGYGZ*ZmELdQ*&^h8jVSK(Q?k=(O z^JzbFV@Qmw3w%h3S+q+I3TMZ0Y(1$9O*L{+kt*Io_i}wVCt%HGE=yxz>tYgXEMDmX z$zvD0RPryy_09pGD>ua`W--4!^is`PrK4k3o1i#mBN$hs({eu^TTvf3J^av1^_Ijm z!##jSNRCEIs8LugGRLM_YQ5W{FG5X^&1O28H-{{2OG~J$BBUhG!5lh?1(xbuEHP8| zGW6p+D3~c`hmz>Hc3(fruax^a0rOaZzm~9%<61Gf-%FU5dQ1i?Nhm&EB&DcPW4`L) z;^6abvljNVD0g1MxPiO~3&t+itEiSVG#JT8vtK#4q`CLmyf<`%Y(r{;+^Mah0^NLb zwsm#7)_9A(y!q!l6>@g94_@=WI~~nl~;|qs;w@C=(NEXB)6E~TINa0_STcE6T@0OY}fPqZqWT9Bq|kLi#AmG zZd&y^D_BVoOh0@z0E z7vb;tJx&e$UQT%~t0Oa>K@GJMngA zH#JKv&1$yA6IkNrs+>c=OA`ij=nS=d2F*43#N#zFA{03eJn^w?p#cbVrnIEA8ltUneW$Uoa8vcPj0@plq&ujYooiZ+O5AE2DKa_vIBc)D?XP9ER*eYLv5jCL?2N|B(M#A{ zi%i@Y>%IZd7RFmI-VI2(;K!-ip~8W#=U;1X!8fT4v6QSr+UEJW>1uoN?EkA(|Fq#v zj03o+Y1-u;Hmaanb{h9OrfD_uY8@&SK4yi}^`MkOHOXAR*HXG3D_=;Ba^4^lNySB1 z4o-^V)3M>0p>d)qnvcD*dEU!buHLH!NHo(G{`#^1cRed8#K{;?6>2h328|T^3T;q zLsQyJP2WLUNO)#{)}`lUPi(eV9Q8iJ821#VRNnVQ#A)$B#)Ik(Z^-5pM6XJoeu(p# zmBJXGQO{3_iC;6#9NFD9uUfB?^?iBvdw(7nyt|l%=+GVL*m}K z^Uji&y>k~yhoz8?q+U(cQnWjq9yd%mxy!fif#?2fn9yLcB;|xffk$YJLAi}n&6cN( ztBoSaPof}eQAc0ZCNIm#EHA+z)Qv(|YT-lqY=?qrPp0A&lNrnHI5ky0(wp@nbd$q1 zLX-0A1WUoASJ$Ij4_8^?Z+S&numFi9lrHnALTMyCk$YO$;X&3FW#xLDkFMLK*S$-`0=%OD z!=g>kFWUdo@WCqsiCWeu-i{9cLM@&oXj0H&^Wai=My&=ghSc>{$Egtiv)8K{z&~L;U}pa@q5qiB|3sVr-=YvDo^?>w=xCPR zPwx%l8#18nW$7TH1+(f)2M!-iH_PRIIKQGa9V$i;-?;P7;IG z8|hNb^=R)sr>eQhzF+cEPxXAdKWh>QG`pGRYHE{+?Kx|n-uR!R@NZU_#m$RGlpuB! zd}$cv_3Cs|!z(vi$OUq}%a2xl(NzZ)_;Go|aU1bCW^U>J@%U!dplm#B9O_r!zSA%F zS^03E7N}$@P;cVa-u*Xs_}2s2si zrt;kh=h)u_^TF3HI;ODIPPCRyq1s!%^~IdDVhCvo-7K&63@f&R)!dx%Ss_xlGED7JyIi1;wN=xHjyP3fqLTl@uB6~p+Tl+f8dX#+d!o>jZ^xT3{b!QujdUXvT#xHJ5wAs-Lbi$%-dp!P>R zgapTITcyFeo8}q{ri=@Rss70IXpkE~Qd^gd{f1?27Tp0{{5~7oVXB+RWXcF)>Ik9P zuPcywf!nq&zp6T{(6stT5a&sdn6I4|Rrh%id2hM&Ggyn01*~OTH>Xy{E+#@46eC9! zQ$KPi0wgGw?^SY$Nl5p>p8|q7W3!#XpCM|nsIqOv78 zhB1e=+Rn>HJ)398J#(Ll?D|h6$34&FAJx044W$`sDBXuwvGZXXZ-S)P_JTSmyq-__ z8ie`cWlpuGD4xbJLY4vFIA*mL%(YV1J{zRy7OWs8ZEBmRMY(deR2sBCk>a#)n!5kQ zAjsFpE9R>6N||-YkaG0T*FlQ|<#szSmL?MMP!z^i9aX&R_04;#%-q6mpm0aPJhInds&Q41AQMorx|^e zbm1dooFo(L7CXtKVIh3ho^*9QyPc$H4b`3Ca7rC@-gecSmboq4%OKL0D9U7}B^}@4 zBFvoPsgCI8VpZg^!?1bHVOLH$)$m5+ zbbbVS6+AT{yL#RG>s2tPA?a?B*?NWMiMM|GewJp@PMSOHK;O!cM6GD{Lz}xPA}S7E z#rrYAMn9&da-|-5x>RnX)?=sB{{41@RE}8-eWFZ+AkAkSGqfu?XHNJstz6i0IJ-3K zI5Xw_@(DhAPcqwze*yQu+weOBAkwQU(B=+j&Yvl;LW@V?YVKdw(_~D=6{Fi?1SVRq z-G|L;h`$(cvAfBdOB-|9nQ2?SV|q)0j`khV%5c^asyx#EMTnQp1yzpFU2 zdkOdo&(%a?X>S)%E^J;vH3Em0iqlFxAUB0OMqvc>ILSbdJj2`FRF38}7E_I98@inN zrO_n*&Tw$Dk64o5`lpKJLB7L1Al)YPc~&-AH~XciSIqH4XK+*+!m#D?1_wxsoaX`vQdIU*M?VH?b=hCx=+pUBf zFHk{@U4jCG#4Nid>S8udY$t=2m=}=x7Jsc!7XkiZ%v8%VSj2Yb2C&L1yRRlWzc+PR zzuvAM@l);v!iGDV1awqTAKtFM5V0$dJxY>&S93jW#yQMX>0=qEzT}ZSRo_9vuz0>g zef5>z4cn%&Omvm(xkmE>m;{qu9|G?Z23HC2HV;ls(Dp5;O0O>zW6B+eu9y{l7j8+a zuPUs)5|JNf=WC;RYt4YP>-0oGX)MpFW;Za%h%pT6D}R6LsTW|H|I9e1y8sv4TG1^( z`rF`v)q0Q};cGFYSLGf)q8ji#&XqT(w<8o3^@w;h<{Qc5@dB`XlRDgAyY>#EbE%Igq;**<@HhZ<#^cep6!^H_wU5uNHa=Ztb_;Jiy0v$s*TdkpfXQLtcfcsc{q#&U!#GB_X0 z5;oE-IcuNlA0+u52|94Ph&!XHfjJj^FV)kkPr|gR3rcHXui6*h2n4|5y&Tzm>+BiY zfHn4!^l5$?w}Qv~WHY^dIJX9SBLOp=!vf*#4**RUK8X-$@$sH)c2sZo@ zKQ4+Xbgw@<-8q4?HYixYSJda3tyY2`jh~3Ahi`B- zE$7%?_W;-K;JBUp;pWStUvCRCizsHpzht5_mWGf{ho9Q}?6xB@9W1ZrlMeyb{Li!U zjOrq6_j>4yM#o6B5zjz7>{?o+$kO(4%H~stsp8_Ga*Bv@HqjT-M)`6Bp2|eY!&{o( z8(|3{jT8aT^9+b_%!o>}Sw;_LVXsGMCQ@qLC|p;@(ob1ov-y-P4CSM}(sh8Q>DvV< zRQIkgU6I4GX>B%ADmQY0{nDK1Px~KfkpbcqYA*CqoQEpx_DC*1x*=5>ApkwG-0{TB zS5$Cisq+h(>576q>oL}Bb+9TX>oM{9DFN|oE+e}P+*W=?oEhW8&Z6@T=oUoq)Pb=K zIzNJzBwTFvs}(?ekN9f?FCgF_fqK)N1DLNLC@Xvi2Dr>kw^>Z{6zx$$7mS9OHdUR> zDqob9RD6JKctB>Ki)@k{{UIG6eAxBD`QbP!g<*zbBlbl8NvSn{9+P2=3>E?{kW4uw zHcmXrw4`#-D{eNy5Bd zObz?YW!cUKg_NA_?VpWgX}Y`W$yF~8(H1s3i(+aJN_=TnuwU+$-y_j+0H+(DreR)< zfs%s7{k}RJb?5>q5zqdi=5$8=S6QlqM_2z4<(Nb)Tc1`||E3!xrn?k@85q8wTQ*-* zu?tI>ZOs!Qub5@!vN~!epDZucHY6xIJ4@#>AGzH~l%3KQcC!o0ptE#*jEq67t_+rB znYg0f!&5homNk1cv9qFOOzQm{UD%jl4JtKTTQh20=ANchk?Lg(G&XcvzMpA~3X84bUR4atU zYUonO7U*jf_d^tf*l)XAdx#ct`5kwwMq^-~Fq^q55QJ={SGd}vl|MY;?ScN{HOB!; z%Cfxh^jMBCK1!V%KTLg-%@glS@3lw8T!Q;bOEj!9jJ6B#4>gMqS%-<&k@a}g^S)eA zL_9G#Fy3LE3fO#dS~k4dD~=o#ue+Bh;s#wCW4JAPaFgqsfyZje2hC-T?XCLe1OkgX z1-#}bemw%7Zc`Q!Ddhzbc?tY2IXdU$@#{nrDf?tBvmcZ4aA!iQDj!PtOX%F>?MLJ! z=(nE5@TE=F|CtqG3QysaAGzb=;lt<$TpbW@8`HpP(GkHyW)0O zUTE=)T5rH+jH;maOx<~XlzCE4yaLaA&&lCu{z=)!Yl;2eIz?bMz&R$ggQj0nrua?l z0$fz4#(!sSf1%WH;01Y{=_um;-8}tk0V&A@k|tiu2?@VJxxXj3h{XSm=?aooXU-X1ttbNMttvCun)5Cf41ETcfW5#ML;<3YVI95;p;( zC4IBUO0;yBsp?+hmW1At6^Zw#@BA1*sblqk+EODjx)8G8> zWAuMLRd>_?Ur)+QB2h^^0KExH6hW7qX4J9(5JA>5%YPeO`U_YRE>!pbX~4fn zqyLP+KT>&sF#SJbLZ-Igjz-ywFa~FQliucDyu7^6GOu__pVzOFi3zWnq#W5`j>8L( z31ce9oqA}v&k;}|;WkJwFi4pofT%w`*7@WqHPp2eQir!Mr*YwW{Ck`Fub*C10+3YZ z5SBGXJfNXZJNOcc-^^%s ziI|6WQVGwrRUEtr{}m{=-T4H!4QpixVSx^SsXr@J@|T&=`aQBe94QfG(i^h#q`N3P z$X6LDav0P5EDKA>(-Rh(2glunhYKzo#T^nzo6Z-WTuKMz-w;T2hx3@z65+Evh%EWM zfM`M00y?!?K&RI0u7&?0-O`kCE+<+ID3!RGBaB$R2MQtM@o9VBvQ_=K`Az&vN*DTO zUGh_lN;Hq6fwOs-%=c1)eN=G#0LWbDBIPK2jVJmk>zTC&Tb)~r{3o&O?ZUp<$x39o zrmTb0<&;|2?+gR0*GQ+c>zo!KW{YVwrc@c*BBs&d_I(wq@3PYC5a;BGG%_1yqo||D z?S#SC+E~pq!IIiL9=l{WA#LH63?S(Y&XHe6dgx4eFD4FT`eiS;(hU?uKat=zMs>5^ z#a1-3vi9Ay_BKu3Wqk)}!0bgLN5YSHT}m;wlFQxMUOS7E*;-w*47?1`m(m&vXD8@@ z5HrX;d$@z7C-2JVY|pYPruQ*7^3|FZ{XXKDQL6M!rWzx9RZ>g~sxtURZhbF}Ya_Vq zg3bc)U=~@*iQFk-H+@I_+%|RU_AnvA{OXO_#hUr$xT@8W)rXMzO#hK-^%UbJ&5j}j z(h|Bxp%GC@mxS7ZWrbDSW`&UAqEa|uD%bNoAsI@^amlc+1ePOA+ufI)hqOSo#NL}{ zv>8t%t=(4{i>9jviqf-=4~QQhyW)S&t2g&VW&1ulHj&1LAIXbHe9qwLD$9O>wB$HZ zXa=m!G-5VvlG(7Vq|{%_CpTV%nN^xdw5bKzf*#!G4f zh|fBq+R@ZBWcobpP{9h>J+ls&ETpB)Wn_hGd*cNON;~F$j!rB~T!&Vo&1Zr*HJ1=s zK*FEYK0boLH*-?Kh10VKc0!kEFF6q29|7CMyRo*lJ*o+xeye%1xFRK1g;?atMC{iI zJ#_3T9#1`TKAC%Yhz3b_=}_GJP$K#OULh|vU|O_U?K7LXbkI&h*+*V0jR;B4eAce- zB5#x8C;Y&vj)6PWwdv929I5JyM7Wo}$ZNe=Xoe^swfxAA`|G(hLHP1YPqm;{jGu0~ zttm`l&u~wtOnBtri9GeTh7PR`mAUTz%4+#I*B7FJdyLOr%D6|N(E4$zP-GIN)uhZs zFV`1V;KMHYnmxnu-K9nZNQPecm~F*g0#@sa()t|j)E@V<9f!lD;OL)qB0>p{W1qQ} zN>(7UUoxx@(hhoX4I&geGQ7Qi?4zrsrxe`05V>>Z&6`O?U2KVWW5wgLKMt~IOgegb zuT7iPmWh&1iJ&un{%UWF5CO$}<;xw(s=IqRI5r#t;uWqFu-zDfgxOxM1%%T`<~#KA zF$WYoPnDf@O;<-XoXz;;tq6MTG(d~eb~XsA~Kg`V?{nWU)i zc7MhC%s5e^h_ENznffAT`hQXM|7DLM@&Yr;M$#Dx68!E@B^N)`;bT*=u|A2P3Ul}J zTJf3k0(lagno$XTleYG;HWJ3!4)(4-W=BT^%+==GSG;1ZJDYC`J4T!lPx?WD}OD8eibg^cU zm!^OpsUbqvHx`Sn`&SPz&GbtSdMD0<*+sMI)TMI!gn1#=`LM9rCjJ%vTxijP#zvY7 zEXcKk8ncFtsC6A3m%QZsDft7)+ViKzkABSxqG1Lbj)8A7bxAeC?tiqJDtzSYxmKfz zQC-(;pMBC6sDUtDP$JY;P%qn>jeY>j|{B)FJknM zBV$+&xKXa5E2$Q`7XsyzuKEZ!%HD&-y@+>p_OGdW;q7>G>SP7B?n1ujEg~bXdW516 zj|c@T(nd${ZcTFmQxkmm%@?)Umaym*S3y@Tt@6d)LrL^v{h>k_7-mosnL1%)KnQ*> zAt|pbcJ|htyKgt|2iN&}D5P7T%~8wge1How0#}O35Km(X$gNKx)bb0`=n44EJlm@S z5NA?AfC0F_a0wtJo^M7i$GR<1w@W9I$v(b4mR?5T^Wsg_F4x*Gk0P$I+COu~Bca%E zAXTAwE>;tnSevpHsVV5&9q3Io@f(KuO$_LyQOSv~02N(qz^T5++0Oa(LO3z7{|?6Q zYFHR?G_X8`T)nq|2p#blWiT8h79{38&Jq|q_-FF^+UtU|3h+I+=*K~vN7(S&4dsqM$5f3|Th%5>&A>`#g$8XB?x;#C?qy2;X8fVU~Z_(`3~rlda{0*&dy;d_C*9a2l-(gDvPExIghzWvJd3UOC!om zPP!7%i6%9E9`)prP)&|E2Br>wzYE|ltFv9!7*&_(p|15w`C8AT-gf76>su!)GhE+l z)Cx=LON(X>$skT^V|1?(6 z=&1Xf=^!BjO!?9)Rm=e8@BV}fNQOwF9fkP$^z=f7nvDa8FB0!fi59Y4L^Tugg6Y}_DZJRTVR7ZtR)78aH8VGWSsvUd1dCyE4R> z!BNFsH#nSWEBUAPr3`94R{XFxlcnJ zM(56TVHTVl{kKs!e{2=AWyo&0^(2e9c{JKN^~`Z>RT)9bJG zM_u;IJIu=h7r7nct~rwDUp;J4C-V!&9per~2ZxE>s;Y<(UiFL^tv{-V&36?jq{IHK z9;SJ;GV(Hl3s4MH&|B<$kT0@Fd0>7jj6UB9(P}3{Y$nAUs_LEa;?ApEk6Q!=6$2U8 z>c`R>S@PJ`!2$kyIkn1j*=enpnQQ;YNga)=_KC?l<`L4I z^s)W#Dlfg{fmA_(Qo=<9kd_dz%#qHi!#Gt_Yi$^J85lQep7&am@@_s!wx>phvQ~z$ zW;>dfRc8Hvtv}B6b?6Qv=S#7JHzTi`Xy|pq{$V{L9%6 zU&y7ES0OplC8J^Z1Skglww_LcYEv;ScoZI8%YV*YCt&*W7q?mE9!Y^}Ca0dtZs{B5 z)!mK)g3#}$?X#81=Z`I`U7+P>ceqyH_h8l)U6H1*Y(I6J+mLdyiX5#T^z5V-|H%8$ z5rNQBv1NHb(bh*4bMv+zeG4h9$tARpj6GN>AXRKAMwPZ5w*^f0hnRQkNmcR8XX6oE zgRXd>$Wc}?N#lCX+$dqlXl5+ppnd3<#+Pvojv#umvgX;Mh2}3Of~kF&xO-F)Bi;f& z{~TOy&?f^DN-Mt}U*!Lgq{E5+BMq<-2ZUQ-TANxn&fq(FlEM@~&ZDgLhn(lIK}kI? zgY}A0JaN?*C54yjKO_gg&DH{ROQllW_RPWNeSBGP4$b0H;6h z-LTf8-PhC5yKXPFH~dp}Ho)Q@WMELw{^gs@>KJvY{VIZ@&9Klf&?f8jl^~vi@c1dV zJVSLQ7cI7vb^nY(0%k1!3??ksK(!NS+~{3dmW;k z0>vqv0QGJM-ciWaloFrO2&+2cZ56|Ot|$R+HJSunRgYCnC1Zca%Z@=`~{37I(_Pe?^qwL!zR7O06Z3LH^`7U!pMq|kHgh|c6g<6FxK zBBDHxGH3T!l0wasPXgU{$`zYiNU=+QFsHdV@a86|Wc`fJ?k@e6Yb1Z9(@PX%PE2j& zflSkMS(XZ5pw^-48*cj)+Y#||8~{Hv?2DJDY}fnnCmjXWM@T2xX@%QNzh^}^vkM5Q zxsI8}W(>9K0}IiE7ElFG-9!PGk^0~AxD^#8mzQ7RQ!rvdo!IJ6P*%MpD63c@r-=mu zZf&?KQq+fUwxUv6DRgM*gusSZxh!RMx1R8kXPY}!o`@lzSrkEjL|Xv^@E7OWo$P7*bbTl+n&j?b}7LvIzN@ih6m{{1^tu) zJ_^}xJ|~tx(lnzAQlhgn_|MndXOqnY)EGi1E!br#hk9##Abf?r4BWDfN{?pp$E#^J zhcC24=I|U4Etok*cXQWy;*MRvD7Aomecc^fRz;+uLU?rbI(M4=x~c1Gqxd7MASUtk zRZZtXrIBufrWi(apt&wB<#sp^$z=Z7*3m`1{dX@wLhyH)wFgjUZJ!K9K)QnY?B=SX z2*lZI`!FL6U)knWVx4fc9HGt3`lCUkJmO1}y&?CS+;0F4S%4Dj@kq5tvlDu{U z_>k)q&P~7%lR(}*XzrpGp$nrVNQYEl4&Y&1w$3=m+e>KKALi!G_L{O43 z`l3UL>~bS$_0;sPdjX-;QNiQwuJsSHG9#sX7Nnf*yv!mytX%U2w}X;33WC`Kz!S;` z>wCm?W6H}3NrcpDB$DlA&s=s37?K%efiOk@t6eaI@{`J4))1Vx@feo6yXXjEIvTyo zj7{*!7+`imrLv(cL#7mIilHn{m1DmX+P!fF-gaZf=-vm!JHDmj12y`2Km|>Bptjjm zB|zFP-f1x1^HWQp@Mn8Lvoh!{tIMPu-SDQM=)~A&yCa>(JKmv|a zJVY+1k1HcwZC-nW%em3i0dwPuBjJibnwzDtcF8VH2Wwn9g(Dwfnx%zX3@@$UMG%3? zy4B}*V~fzs;!(yc@|y(o|Tv zh<;GKn`#wzr=qCRfm)>qMbTEPt=(F+N{g7OJtJn(R?%he+IvRq zXca|li7iI07-{m7+Q~^@mXf#>M~X z+x}7-7k7zw5Q~&7GS)MGm@lUECP!ATYj5@8u$hrlV}Z|B&XzN&csgJ{OfV+uSOmL1 z>gAQGFo|wa?+bmp>D-bWbUMzTAKvI(h1zz3ddKS>o>5jgi@h8sAZK;f{mD@OJJ!AsvOMe?0_A~&1 z)yk5CJH--NU+vKXun=$F3H$rE3RX^~kbLg0ul8no<&P27Mmvj}<&GtNa%nR93C=EC z=+AaIBP~kpwfg-<+iyNWu(!5c|5zM6NkuG5EyR@_gS`_~$aP5)e$67l|}r23zur$rm{K z^X|)>8>Mitd0jjvn(pEzSxsksiE~^cc*2kbl!~h-yoVe?ENMVo#yO|;T>yW2 zyV2AfU9A`DPBEUpBf`jCAP;Ubq^?4VaiFS{PVqQF>u}McR5(KKY4W3hn#bg!nV(}! zk*#^533*@DDY0Xmd{#vT+~IfQ0(9^3r4ZN30ZduI5EJkZl*Y>=JI9FggGR%}$}>c} zmFwu~c}k7=f58&}C+12up$I|ncm`#<5(J&pn1no75BWZ+=pWn;YG+GWzMp!xu|N}5 zvl4&yNkdb)w1?#T-2>M5;}lT)1N+(-Lh*S6+*z%2!lZ4nomZznm_YADuHIH#sk>ye zv*YR3FZ5GGsb+Zqq%cUFT$tDoE2I4_O#xP-P?hBj;`iM5zq{tS-H7r#e877D=j%Pd zrFI7S!q5K@7WVh|k0T%X)1{>90tQXbU<~l^4`7{tMx>D-AN&0Y{_j9H^8qd>EUS9( zzi<715?b&+=Wn^=e+L3`k&*+DFioFn=AS^>itMg*{|y4nL$Pz0QpIBH_EH+_BLO8V z%5wMM2=#72C!52A1WFo+TOxo=>?WV{BmTfPD;ALyf9@<5xBBh1`uU*f>aPA?evZ0c z4yeT&Uo^wO?UoT(-=A%ozT$ShH-r)VyCllxlf@f3;~L7H83b`MluROC+KBYP!lbY6 zLyGMqg(AjRrrgCp+@qX)Pc&`5UzuPYz9CyARFd_8X-`_~1LriDp6_o^yDx3+3^1hY zQJSf;t2TEBOVnMr_U-YS>X%c`cjg|28++TI?PyYRR{L^X+6#eb_Wv~Kw z9|XWmCM%6%zKWjTuZ6+lF!%oVK>qtk?nXBo)f(*)Z?8TwP+5twQ0v3%k7usDG&VjJ9i631 zCu-31m)(_^n*t{VrNgg$yL<9`k>o_<=^TMq{x@&Y`8^b}9Thebd}dd|!zp$q=qux> z*69akW27X!F;XJ#Mci2IbqE79*a5!wCFz#vYWM^I3u&=B5-XxI=j zfo-6>T*yQ}GMmo)ShY(RfjoMHZ()AJ&AF?VJbljgAvY~}!?Nr8Q6B%B=`34qewUa0 zfUk3|ketkc_x_^&{foLj&wzg%%ULsX&P~X>vWLD_YfoDS3>k?^yQ9n}5;J;U4gKE%*)e-~T)4pjj!4 zB{9A@EmmHp5qg3tFd+s8ziDNeby>!U) zzS=1oI_hM-O`}6GGBOGl8qcv0oEIzaGKfM=&&Mb2#<7p0Tt@Zsc;Ke z^u>q3z?T(R=3X4UW-U(I7{*xG_H0ahM~BPm&||b`0F6XGB=WqxD?piD6Xix!tVonck=$CDZdXBM=|}uso7P`d3#+JRgGP-M``u}@m z(yXXo?>1pxR7S1De^^)FBs1Z8O&i{j7VLZOGxnqy)9M!kfV4c14j+xZi~I2O$?y4w z`YDK|N~h5t+W?ChJKrC#RN^1!R^)(f@YTL-HrIM;?-)(_jE)PhHqZdE{lP7-4 z_ke}}hRrCS<^Z@Xm=1+|?$#>-Jlb=I?r1FN9X)Ux&4FuD*Yfvgrzz*FTCTPPrb%@N zW<2xa?p~m3fydb<3G&H#&C?fw>(y$ z!yJAh<=_P$l{BVqmSYuXIY$xT7e`Nug}tT!EO`KtD2uW+q3+huRLAutzygvWU?}yK zS1!l{x$I{DDIPQB#)8EH_ti5Lk^`wbup6B!;=m{WqK)}AYe&P;I11nO^iT-3&i`%i z4+tg5Or5q2{@IJd1py}yC~bQKVM@%O3GZgK7WbJJ*0-8Op}a(Bb&ZqEibH z=k<&@&73Bbk0q6&-9wZP;$N!T)}tOxjmgvX2+G1}0%RFtoB8eZTdu&xd?Wg~7hcI| z3LsJ|7_6Pc{($K3E>k$n;Bw);xj@Qz_o?IY+1=Z`0vEr?>lIgH)zWpurYYkO4uPYR zO0;9p!xB(nFFdq#xEp5fp6RP`U6|NYKXT$|f!+UJ)Ox-HGI>hO&N(cZQ<=hvMyVRK z;GgN8tZ_sc#5Z9Hn({leU^r=L;lx3*11x}!O8483`6MaE<7AFXYULp?SIx1WErVPf zCp6P#D3FT)+7CXFA5WX|2cpcQ#ZOCz0wllf%O`D$8W3O@05{q%=Lv_e^!Byr7p;`H z+HCA*R=QBl;6ar%azcc&mQ} zc%P<9Kyoxk6NSd%`l*|=;77(t3wcSL-o~X-9$0qFlPU97XXZSV;Yt|? z?l!8GJ{Wl?uYq|U#~Uh*OI|eM6yhfSf!R6vnL60rA8Qu20GV$#oy4F?=> zvFN|b?;N;4jzTK8hPyktP+YH@FoprQ#sZX%m}*9#0Zd+_g~~I(*U=>mC&ezAfsKy; zI&YnOsYO7EsM_Ij)>Ve6M1@@P*v=ch2ImY}?e84Go)2789xqiI;jG8msO-2!hr4W+ zWu0khVdLl{fxT(TZ9P31EITLHbm~A+0+_%}kUCt_RWVtLd5jOdIZlTXuI^GXQZPV_ z59x_~iq94EC~OgKw_(f}yL9l7R4a1HjP-)*I~xj@9n();r3D`wd=Yo)_i|17RPs2L zpEz1o=B`q7bjKB-VNHBmLh=vhO=6@FS}&XFO&7(R$l?KfLV+8Ws|P!n*6~zM0d+=o zn@|=B2WBl`y|&1Buu$=QqAH`XoWpGvlm&-S9=)IdntKE6<^V-@61bQiu=;5Q%p=rq z>Rjk40q(AmG`sHruf8q2vwLnuU-Q_mQ(aM&qcRf8tDl`$rKym2jAqYH>7BwstdhD< zU0FU7-EyD8yO&t3wP?z>dfVHoG#}0xd_4DUAS6r)lcA;C0dssxET5!%Hx3 z>|E{fS-fnI;7+$a2t@;QC}pWKe}jrS$VA3|A&JdmKRPbHV*e%i0lwBayipx!V)tC-=#G-Ulyp`v6f1$P%KmcE1T}jAB!@RB4Y1nMG$5 z4$oLv7Oi14d(7GRme6g|2_9AzS7)t8e5wVZ=)UqFcpyM3Q*RW;keAa6;^O1EfSXID zeM;pVtpw|4Epf^0awO5B#oD2x>(VYGmY5eTvg-}6eY2t3eRo?>LSJYOIC%A6=9#Z{ ztJ;a8ytHo!V!-G!?kiI5}i2Dsa zDV09nGx=mt)=F2mu^@;cw$Me-6)<^CoNnFgg>WDKQwt7xc`IVND~8qhfv5Y?=O(h! z`c3m@q1kc=sTb>)zvSSnTSp>AgkGMuj-`qxC z4cluSTpuf!k)4Ii%D$}Sec0df_oEp1!U478QAwixiVC~6MYcrwW*ibkZ15U!h;JEt zpD}!?p*X+OA|51-9<02P{-)m4y77f1??#pKafw!N7UO7iYkw4H#<@dH2F;=qoB6Yu7`wpV*yIMceY{ZA(Rv6&>;;NyEMk~}}< zy0j0=RKq#xDh{J?d^+=f{B;M}zkrZms<_Fp6vYatikCM7LRiGg|4L_JyOiWipY`n7 z$o=_-oD#0-AuELK@-h9Lud14PT7$rK4i2;OreHxBudEPkW8lNE3t9-{9*&5TxgwWm zs+O2GI5z6ovYwE)5_v-Mb4mM?)suPwXRgQWiS$d_)UWR?b?4?If}HCU;|u=oSNLIB zti~z~u&6~5L+S=Y9SRSl`ioQf)~sE7Bw5B@tcN;x;kdkhl3Hr_w)45czFO{{^QJ-Z zT!5^`aqAzTmwUcZrP}VhYT_t`B)BK3Q-@KvCDnzOm8<)ufA`+@WquzZ_ zjpbMXO%M}SghFd7i!1amB$RJr?TjKIl6+gx0+3OjL3&zn`~~YBVJ3m8Xp9CgdssquC#1q;b7F z@^O@^4QBOL)W@E#W*c# z!O6g4E33X%kHlhHVYmWJW<)O-+9On%{pj9_N7-}Rh8B764cK#O`t_~7$xFJ<)5wa& z@Y`;B>@9)L@q4!FLDM?0!+faIj-PEKxONGpRNa4vO9liBraHeqY z=aSvr?*Jwr)#%9aTlNCZOqlA&ZSheZn*psYWmgR>dVl=a<}0rh)UxAd&2cDd(-OPdRV4zp|B$UWjuT-ZA-7q zHLhI!L2v6w-LrR6emZ#*0xnVRtsdVU6ZOkk=M)U9X$>Q$yEklJDRp*Q1|v=KWrn$B zi{bmF^eB}2g6q^gpBiiCR^?#T=*I*>o3<`No2f3W-2GVkYp*0WYz-BW`OYz#J%Naz z(C>R3A!{N223J%n4hRlX+o%pJ#)3^zni8iEMBhyRJGMDePoo9KXQ;a^pYP7T=Qcdzr>rE9_wr4 zz46nCbagmJ;g*Z@(b(;@A4d*4V%!}n%phy<*!4BVb>|IGW*3t%(p0F2Gakq3rS<{34W?z&6_*n*bR(`2b4!<-fF>aGZwdw#AN>rj`=-D<{7 z5}*&}Ml||eDtCXx8D2|E5#5@*qFZ{&u(0k{ne%LxW-l#s0|!_zP2EZVHo=&Ci@4sP z#;XX1z!#wg=E8e6ird&45V>ij(mPJ77GEt(AcmjrdT1qr^102hDk9Ex7Ye#$$!la0 zqIBQrAO(~23$8#vxnWE}xp*c|TPM<#$IFk$Zgtfxjy@E;itN)lB$uC#=kCq*ziR$W zZVCI`J~xoKpC@XB&>eL^=yc>1t6G{a6hjpYdM2P=YI3~mVs5DR4t1n%1>uQSebDi7 z*`JUK2+?FgKbjTq{?+f^tqX zB_&Xzaoi&SRW`x(d5kly57g;iVi_Hie^d^ZC46QTc}#vXexmc}fkD;JUs39OAi=ITv{6lPBzq(lG&u8-`O=X}&Wk>;#N`1(@T>uYABHM3w0kc-g~MSwiHL_vR`&3ussFDl`+n*_NGi9C zhF>cG+>Ok!z&@U1GJk?dwf*AFwH=G+6gCMu32gQIwdQ}IRPLzn)aWuua{A0490Y~4 z0i0#g?&CIvS5Aon2l4Gv89nN_!+?DMFo(p;)4$Sqzhhu3xdB#~W)onhNZ>^PU^jTn ze@1b{{+(BfOBhO=Sxoh^87ti@?SmxG|K|5!E85Qg$WHNtPF=m(h$7RtElAy*vC7PI zSdQvC!RU?}++tH$cldf>Gz##-kqguaKIn0d+G&83URnT$+mJ2ct{dF~m_E5QXGn^? zMm|;)o;33Z=Lw*b6pCTAFoFc?UV%V7Zoapo_X}hxs;8YWu>)0RIp9nc1NdM(z6Ee5}0AwZFz?p)& zH-PS6()a^abEk%?;odbU$8l4no}y&~Z+sfEU>4)N+bDeWpN#QuSuNyO9zn^l7{x+4 z&HDiTZk-PkG1CJJ#_~S;EPV7&81~z*ZLR4GNKg;an8L910BG_HQ;k&7NEz^Z4pSB~ zl{uYp?O+M`mCFPYclS*asA*kmG0NWL^Zo}?4gG%wsos3?OA4k`KQ2-T`wo!Hf-I@Wb3WFNt_Xu^1HD`PUc8Ths-|PnOL`Qy{1jU{<}_J@jj|lQO@w zYnQDBA7$16HZhLSagL zu5tCEb_LIT*z0iGt``G-8D7dGKD25}IEb2$m0NXI=BJ{MuOsWTgKlANnuMz(-wB9W z`-YrXsnQc9J!X0j7LXRt_A&s^?le3mi}H}V-<@zzvkAe!=b$F7)RG&J$P8uG^M45DWL zpti*N`PAJPy53;Vd-J181`;4p?K4hIqe1M+-AKu9u{ma|+XjW{Fb~*{!#!7=aYc=X z-IDzF?BZ=MA;FD?6Z1ffV@$GL>wGk%_Rf;1C^BP^(TA`oe?#5ol5ft?0@&9)QDHASId;G9_)b#PbWI$z zGDTu(zT?t8!4pH*N8<%Gn&=nj@Rjec`sPk+MlMDo$qq1wZ}K>;wKP32{j00Z6%UDc z<4jSQ_C~}GF_2j{+d8w*>sHWAy3X7W-|zC)m}M0fzu4UG_dLA2b;&#*w-e@lRqt8- zsK7b3um9Y=huT|OLTls_T634s~lH!YJ$v$a}jX%$~mSWlKKS^P1If)NUhSgx~nb!Q>sO840apfPA5E=CASsS+#iiF7~oE zBgI>hCb0$jg(u&3S(~(XSICGhYmYnO_G%_+O4`4e2hAa^^Vm&h5_K&vNRkCYhXCFT zxt>yWfvKW*dko@X;$s}zK0N@!e54^Xw8LTUWqL@w{He8Dp;KY-F7_t{%kQ0;ZPhA+ zInqJTHZO)RVS9DrnfBYI)4n|z=1=5qx!i@$w}AypOImRqmf?u5!ElDC#O}XgJ^tLZ z6t;Lv{;g#3?X#V>Ll>O#qSZNbFj4CF`QfgU7AvJhjt@ENa(n_9-!Av%D?3Rcnco*) zjSC6UU50e(09obJ*$(g&#@*`!+bJL^p}=7}_EJaU>2R;jdY+Vl{oL#2A;vV1wVkes zY7@rCfTSFYRUyEu}6c{`^Mc?)Uk zTgWAN<3~KJLVT{d@4OO}xq__f>&LvF59I89c$IzuNrzvcZtuzGW~gfX#-s38r-DMG z&XZIxCRG+tWO?a&<90q#u;X$5!^=!3V*TTC&A_*%nAN{!$vzFmb!D^+HWLR*5{k5I z{Z#uVpMZsK5b}i0vSR5v6Glx%MEA8F8e)s&({ye#=92Fd{)Q-UJ<_utkG)D0nL4J^ zU-Rf8&C|TPjsEpXR{b2I$v{Eu&SBKKSwR6r49*sO+akrbv)gI`FB^L|vma=}Q(EBWQ91RogpV~JalbjOvLkL`6hyG=2{ug|C>e=$5ZH2?Z$Vn7F4gpk-7p9I`wuA>O;KI<-KgXf6Mkqc_LgSs z+d}>u^Vid*ed`}IC($qQGpvlyB!Vu?T%)-#)8nftm~@5vU#%36zrQ~9$nei5DQ5L% zsyF4x=Jo3HZv@bIh$*MTI~Z$*04VZMg(I%ecJbWgr-r&MH@D@}**RgnI}4ih8Se7v z!ldD=T9!M6O{)r?T_v|FScR{zg9ixd*$XP1d$gb5ZM`v1s&E}6c1F9b66Ww}iE5U0 zT)t*)Xs3!J8E-I2(k8`oS;hVLh)be7rRO@XE>b0uecPE zTq{GI?Zw)4l@|%#-*oH=09{h|7y9P=PJ?DC#k#Yj>k;{}eod#-&Y{9Y!pF_T=lK=9 zE}*R=gSNsQSnwBxqMH$-7UuaE!J~cMBb#nP!@wWEnsp_;nrgka2fu5v)`h|Xv+UE_ z67}WpPJgt_lZS643!odgL>D(m^8+&zWHH^Mky=HDvrS%7hE1!Qx>&r=c&v}MJhZ|i z(yH>}jUNGP`#(4frS1^K!HaWqtrcctryVvbUJSDv4q?|k7Q$OYZDyYk#U>OXYS@{N zTR~TMlqEv9k0=YY|2)C9S1i5J!RCx&jZD_}Bp}5=9WU^2N@og=@BMsPwCl@V%^m!j z={U|T&9#YGD<@QKaI5%%QBjXl(>RtGX0@KJ$d->yrGtl+PCFfEN!cnd>mvmvj)$uC zZH*R5+cisGvzsmV(6^fv>if8@y*{%#m>*nSQLx1fF)CF{P;@SgngH94vaA+DI@UaF zw=4*6o*Cb&a+%*7)K1(!=KXD-)AeWF_DWexjS5@jYG2?+WuD!f^lIDPT-eLV1&)*3QKx z=(KP1W-scVZyt?&k&8T3+hjROaW>zpW2sXw!(^b{Ew}n9v(&j8s`L60{G{1PpWfCC^-D9q(lcm)D1vWc`$>D>1P?*tNzMrYMhH>Y!iia zu+K?aN5qV-Wbx)-2Hn5QQ$9Pkio|AorqNA5$9LH^RPOSb_M;P0rH3juWBLc$K9GO- zPRbqq`#xR1j>QRq?IOv0=mo4B44v$2ejU5sJ2LKqZfl=@EZXWMQolWX6i>Jl=F!zSzm@s zUEs)X@&S*TV^Qw9N6KlzqChoE2*25!{j)&*;)KcA>bv(A4P@$An!2nvdQxm^aU%s8f5I;L2!Yief&AIQ1C`M}buvq;YoRnfyrTMlr5_r4p;*PEf3aFWDQ)p7==Gui%&0pEGHxxIQC35ix{=Q+Q+ z8>%NZoaG1WHZG|jmW$(=<=YU)$_trQnvfrs(mtN_(J2}Oov`~XRK%kljDNQHfCVQD zKenY{#M0M-9Bs3o8p*yLxyjt@#R+l^DK2{)yblQvg3X(wq)Llc0y3vz-8Sv?fN zfPy&h%eyZTG1tp^ms$iXEuw~Z)+au?;_*48;h67*piyW|V9Yfo*4jK}L;0Av6$AS2 z{+L@rjNYN{TxXEkuZSW)gNIPVZ;{BXm6y7!C(~p$nPM#)@}90q)xW0~M z)`#v>s$BoYuL>}uMjD5W*b=EZ;-g9c3!Z(v(IeSKCn}|}iRI{d+O8+#a&PtL3cgTl zuojz;DUiG}I0jKcxrcP`uSj*Wk4!jVn&~m|kmDv#nUE*)d}eY{x|ZpTMi$3o>y=%0 zpnZ^_NZPEpD?2F#cYAl3XKG^W6a_8W+D1p>y4#Gwu|Km5gFJc z{)jm{^1XYm3-wq#zW_h9Ak=8-`o^&O&MS}ndlE4LMb(}oZqh8J$xixT+l`QS{A%r@ zj~LlV5ZbZVOg}tv)UD*S+xcnFzIeq))#D9xqCa>EFEUf%_L=8ylDB^PqZDHB>pdfO zgvH9Y^RtYxabmr9nEBT9su`_0U7+z#VC#DG!>{cs%9Ew0%Fk~)#%-UDR|ka`ij%Bnflfw#qDgK-vAzvJ-bxk{^wxtbaE%}o)Lm#R zgEyEaqLUs@?4NMm!4>U16!nNIYrL7hGAzeP#0_uw4MbsA^5jnAwX!iqAgkcx{P8!j zF}HkO3aew{uqN1OI7?83Uc%c3WL6S3UTUf*sy{k+vc*CKdcDmct_vp=`@t=l?Z0Wa zf8HAaFbn{Ih%dhAO^N5@tAL2|o6%pJ?bm~A=k40FiC+1u*Yinxr75{{GmL3oc_D6R z#r2o!bVD`b9lI@ov*$gKuf3v?< zJyj|R@kHv3hoS~vw~15Mf z>^**4cU&Y|swjQLoA}{I{$3N9Sxacqc7Jzqls$_v*`eMbz4>cpKfaOE!ZuA6v$+o3v})pjTidU?5f z0(l8vt7J51hw~=7*Yj0Wb;z3n_0@{L$UfqeLa(@dG!kNI^w`iOc$0L@SZU%xEIx~Q zV9zdi_jLAd-k0qW$KSz|AZogxAj|IM5(Sgtqae*|(f;y2?-1aO^ZoV?jlvEjI{DcC z?%ItM(VKnBs)#~;(|KS2_bztzNW-Uj0YzH9Hs!%%M@LzmpN>_Ux?L>S9jgcDUnf2f z@s0BGarucK^Hu!(g%7lX^{Y^=55o-cN84_RK*Brpch*VRgiBTdh?@$l1+`drB++=5ag3GM`+?>lzMq$`AFb<{U}l&#=%($`8| zD}#LvUX8AGyG!Mr^F@DmZ^mI*<1)cvC~KpkHv8N-aOHsH=Znyx{L7;K_MBDPuQh?> z?G+=aDG^_=li5IQ?Cyj`+3qgCGh7+g=sz!>CvFBl!LXg@>!n;$taJZ?-*PCgPqH0Q*Q zes$NXvW#yjAO;^L+1rmoo~#+X_(?jpmpqg;b3<56cdw;3f9tSs%kL^La^k4KAjs&J zF(t9c!vi!fAdW6iF$rmH4h7TK0YB|*z%1!D4;g`*e=L`MEAQWT!LoFCq)T_IeT4OS zclGm{rI6?@&M`!b{h@7@n@0t{8X+9;tY=x-0U>~XtC!D)UEM5NAu@Z`ql>agqpghF zLppk45@{c`V?+$VodfpuRsHt$k1t5LJVKt8H7GuuVDxrH9P8O(M(tTQ3#u`kDDM3tM?$C`OSF17%;B0b%rVe#-a;@TTs*2%L-&*zbS6$@XX+5( z+tb^rKG1i(^1N#JxqBeA)__?I+6ZJ%#2mE<6U8+;Z+Yg1bio}OL?y;b-<2#3YqZh1 zR}&%%O7VV;gmNNVy9aK)VIJi&Hd9|N03Jm@U4`h^)5tGrn^!fxSWjfvA#T2ng0S0y zkOM@Ft@dIE>kmdS7;ki3o2xKYElJj7X{C#t>}|WU6gJQn4HXtpNEc_8wnqz&m_&)1 zK}K3)W-==AvboUEO(z5h{e{u_V{8pZE?M3TES$AeGu<*GdOXQ1!=`66g9k7*boUqO31t0vy# zYQy;zqWK92Ps4!jgKn3Z2jX(#eN>vwjg&8gfZF9pX>~m zT^qkVj&9>xDARqo7I88qL!Eu*%#!?5$PXJxiB;t{V}*x85Zw}cb^FkL-PJV&Y9M0+ zoS?*fW5hD>9>zU{@#y1?gVNdnn> zMQ5!$$LVY)tua~0t*FLip~M0nX}h89H>y6{Z!BE3u+AIklnjs~>P26BFwq_=j$}xG z&#ITBY?TrU`y2W8vAt&a**^VJ-p~pKIcd)gMWe$? z`@!?c?uv0+2h$XAAyjbOfID1l3i+z*2iBmFQ&u^lK26P~*dd${vbd7~h1VJm?i{YM zm)gW$*#!l3UtGo)gK}185k=?j!6#SQ!A3LjNZDAkSy`)+zKx|x#1Y#GdHH{bUV3<_ z`C_}bOfe5Am>Q)!MfiPkNSrF-GRb!MI&+3ocgKr+?&NHxAiS$XnDvCix2^Jh`4t7Y zl=`_${*8p@$SX52{locYQJ-wji7iO$B4K0o=q!+k#2lxCZ;rcS)woVoO`rV3rM-FY zOXj6|bBS7^UmwIve2R%rQ7q1>+O%D%=4L)AAbce{UX?7ol>`t7^-Nu zRjke7^j*K?23dhVp;yzby;qRuUMcq0ExUOex-s3N@3ys!kbJgwX9NHJxc_2C^zlUD ze7)%UyqJ60B|kDg85-wf3XL^%oAbULa#-9@WE0%1MO;bq^YHM;6-Z^g={*wHZoKLrr&F|d z2*1=HHn>0!tM#l83{Ff`YPoE?6!D-7|K4q7b+}E1XkWS*r-N`BiAw%nC~3)BbG&Xl zdJU}+w7RaFTGr(tJ?c}mpYyDzynUN3E?_#mdCvmYajxnG%LEYZ8#Fw&s}bbR041dh-ZoZ1KxX7Gv!8#V5bY z&06C_S7sGMl(Lx=rJt5vX-3qyjOUHLSa}b7DmMz>1hH6id+c5>^b~slfgl;Y92!#T zQ)(V1OvKL}(~?!`UTE@=T6{N-T|dmD{`O~&T=Bwqr07Bj_e37|Mpc)c?ju*7(UiDi zF3Ur3dyE!g^t%D#QE!7~q9H#hYiDvD)T*>U||ok|(paHSFUYz9jFjEGJH#(=;#_9CBOp z=_VcWnp#)-O*In-aJ2)_Y7lNC?;;9hc^WN&jGVi{kPugeQafXLrzIP*JB(35-_FSK z`&$Nt51}hyf+wVYIzr71{DA@G>2lAK+YU2nFoGX6-*R}AGMd3cx#Fo``PxvVwenUerrA%M^(6_VkeMyM3LTX)=7)x|+qOTAZKx zTmGEFF5Vd{#7zmv&nAcU6CMcg&nP(bH1FhG$BV%B3P%T|F_jLfGWa|dK6!^gNfVNy zGjU;mX4t#WdrAL7J2H-x?kju-HcsF(dcqJqwHq4S;j*qitZ{$Ha2zM*Rx9FK?^p zZ_h1u?dD>b8NwI8g6^JvuE_-3=aa--u+%-tk6az^#^{El6!&JaU4*OMFQU&^+*bX0 zVaqdb*z0QLe*Ao0(_S>4@B zJv=YChcg85leY4P$T%?5KuH5~jwrUenQKV;0kK6FOvm)G_(}wH7t45 ztA>Q0ag$rQ#=Dhug_}*x^%u$xEoCph6XCCuE_0mES8=4j#ON;CyJdwX`09~@tixlG zIy0w7M(4opI>I;11+RJua>R+ycCrS|0Dlbq`ZiOO{yoZ#lM$clITFhH>eWp>N%XEP zEu&qAvD+_BkJJe6J$8wGI_D_%=Dh7lMbnRJ@29u96pbnUM12feO#W>T`wfMjNJ}K zJZBepXIS^}t8;=w#Q121=v?!z^Ky2JbD6l&5$TlIhpGknA4>_j{dxqjw|cL9K4^d)l#iL^`PTj#P=#*&ZaSFEuR z^*$yqDJ3J@oHr6I5>JzoZji2%;~`qy(xa)XZn}c&OtDD{MYqjQj<&NNqyG0MAe82RS?IjZ$0((BU<N{`Fw-|xum8s3-9n4_y+YQ~l>7jcg=5wZ_qP0+`Cs`p~Ifd=kaCz;W zfA5J&^`-h{`B;`#Yv6EhUOEF5eVjdS%Pk)#ubX797ME6hH$S*7!1GDAI&bpuhZGO} zU|hFjgJy*4L*ip!~(aP0>A0)VgWLb{9_=p^ai z8wGkMe^r4whD9?_9b7)Z!R<@F51KR2;{dkI0V}?1_GQM-`HWv`wSa0}+J|4gF)<}a z+OXoRB_mo26x-PeYl>IwmI%fcZrO-_(D)gwomW#9*A})nJIGY=o)N5j?I-)c znWF#Ls5?1S*X2}=WE?B--5y7PI-o?WX0<=4VfsRC`4_HZQL>{%u>p(#ZZG)Ok@jDa z{r~wO_1&*p!TZtThyY+I#tOjhV!D&x{lTob|9k&E@TmIa1($<+?Qb&wLfT$kg+1q_ z#Mkn`qi`#)#pDs|#;p`QtX4S;NXXO8*h)MP=?~AMEyVhSD zH=VJS)sz1eJl(FU%;PIf0@<5s!W}DfGZliu*;e-U?GYRrBYrElHed z${Ncm8r0OToSpa$#TzxLS$O2(&z#ir{Q;<;U-)=yBqphP+pVhFS8q1hmy`1p*pfBTFq33WrQQ0qE)mqmOntd;t1-&ew_=6l*jL|Lv)~^vE}> zlO_r=9U|&Z-=n5mR;M;DVQ$sa2ABaAYLPJF2*ik!pT5)Y;R#;jndQ9aU-Z*ZeROZB z-LFUpgl>ZN5E$N@O%^WnK*##UE@e;0!hQJOY+qLMQ)Z$^6kiYM3-ac%Nj|Q(mBFE~ zs&LU9rdO3FsQCh~ZRrs++oa`JT=#*=oa9+N_3!C43ZsWmg&h4@%9!e$ngKWASZFw4^l{|k9UDZX2TxlR3!F!DfxXqKHOZxlLj(Ce&z^Z(gPD_RgG_E^nIJx)%w z$-DZts~)^Mci63D)_RC=!h!VSfIY)B$cHhE#qso|<@FChV6TqS^KFnel}rmw6QuKj()GF1eQ6C>bNYt$XitlUBY4%3e znijKyp4RX)*jMYA#W9!gai$pGVb0_KJ_YpbG)kxf{kHI5&8~c5|`R$Rb#d{^P z3P7Qb7^I{IVK*b`mME7whTS(Pe2)7R-Sw_(sasCG;%TvH9b4aCp>OsCZaLk65Y`U$ zKpK)9-|oozX{rrveD%%jRv+B=7rpryso%97TLSoT{PkD=@DC=T=3{YowA!$|b2Zl;(nGpRAVKU21zf}FKr2!z8*tGK zkku{?4)eyfEmz}Mpq4#zg8#G;+mE_anyY}GIc$TlU&3jAq)u8SBji6_$lUV~pbNR2 z7vm_W37ySor!{nX)goEQ2>eF;A|csYAMhpp$ zmRbifvbc13?R?$`hIJX!h#5m~;-QflUn7Fz6pH_rL9t>%CEwGzEAm43Tve@_MPT-D9^ma!cma=%WfX+inzh643c>W@DWac^e30(QH1UCWEx%o$kR2b98Ik zuIpKGZBeyV{R;(bL&zo{MZBZ0qEd?AWOQu+Ocp!ptC_a}on4Vk1oY?2-|Np`O^II& z#Uv^B#+=Nd+|}@@ZB~K#QDZvFK3`_2vJeckaX!dZ68R)g!x1`Rpr9Ovt;`F)D@5sT zF3gA|%xXRS{E)fGHeKUq5#&Nrwq}CX$WhZPkbi0hiJ&6ID9E_XFDMrMaIKbSQXO^} zwWrq6b;W^9FAHT>Peh$vgy3 z&cD5DSG+%4{mgWSuCwi@E_^MqcnLYKez(DDjAeTbBif5yjh{6M+LoKM1F#FBDFYWq zH2?aBO|pK70r_Y0hQkr3kNH)`wk(hnTG6&jxciVRIm3iwXplw9&>cu;at5X{f(yLg z89zL~y7R+z)kWpWdTU7o-gHEeb|geAPQdW&EU(ZY1+eqO-bne#Vkn&zR&Uch(}>M~ zEpq+0cft+)N)owMRxMDjrm+?TnEfLDLF@m~;rzfgQFnhzTU_8YL2>b)250Pd5-r#Y zzWZ}GssW)RA%VaZRTfRYlCB$oBs%wf7(=J4z+szr3VpF~bxSp*)5u!Ye7Q43Qx$`Y z^lADUDTWafzx>*4BnUh zwBYiEz02laDG%Lv0!_>T`gfLZ7F_(0A^th_X_uK+$()AgUpeo3mha1iqpkcI8;gkj&gjT(nRrRBLKoG?OSQ!H4G|W z4?T1Y^$qwu=X~#Z&*Sg?Z*I6_$J#5db*;U5t!XBCwj<2#hLH2LqRLZ=z=bbO!&FKQ zzjd`7rgG_pU4dBS8h{kNmdO^nsi5crHb#dkDAG-;^6o|7EaUzEjsyM6`96F1NOiw0 z{2=yF%t}!9fChQO4qJ*EDTualmMbNEGeJ&v)p6_Ea&FKD$X6EklSnXKhAQOWD8$=@Lu4}I1SME zx|@qdaaWK-wK5^kx6Y%!g!`VH1%MA z`0XoF0N~yfyff;3oA$w=ruR-ODA9IuiZW^<|HiOLCL!A|E74Pr_u|tAh{*%SaW!fl zFLv6a>KP@@vuM(pr$r)pWTQ~Z1eTc(fbJHntVjv>E;?CVVMZV|`WS7?Z3)2XT&ClDF7zaku})ZkRSuYb8@!K<{39Z{NR2{u=zkKnGfNK}xf%a|k9Jq1u|a z^|*mI34AZZJ@op0756zte1fgnIcAHX*+^RxrPT?>+C`^B-6C~-LoV@Ot5|)Zu$}B+ z`@}U*6Rkbey@biZSXS%&V^Ro&4Hxr(2 zB)uykyKfFv%taB`UBl)&J9t*rHcDTh^2B@+DT!c<(em$;#W%FCui7nNlN$~sJJ)U+ zA-aiC&^uZStEcOr$i0z6B-K z`gXcS_k4$}5mVl-Jm6qMZ(eP) z7*{3YP%faHJiBzB;3jFlkFMz6{{8NPaP?yGe6flUdYk&xW4isiDPMa{G0hRLx%DY` zQC~RvNsGzx0yw*P&EYTpi&_1n`@*(3Ih^u!VRq{dnQR%_qG&N;yKvnqhf^FUll<(P_ zV*)5%xw9dKf|`V~8h5{-o|JNB)%4WzxFj4Z9Wosul(B5y-_BpTL7(5-Kw|2o8rFF1 zIfn`~P*~*(Xj4)+zY9#~QlPVOkR`Q)ik+U>tm85{Z2iyVj!v5l4K;WE{_wyw(sac5 zURez_`<&WwVd2)#C1}apTZ>h}sjgRIwB7Ze9QsRXr5%A=`+WP199Cq1&du(qIj% ziG3Fh0(j$)>chgvs3x$=i+~>*)+TPBM^5gL&Oi@mJ=OJAi{ku#yn**@}98w zR{b^_@seT7h+%fO`Pq~a*^rJL{o2c^Xiifl(~>cGcI+s;mysH_)q&NAm5O{l%CnI4 zXxLeQJ8V+{++FU%#If2Nm+BY`e9}m3;8TB0xLS_K%)cUYd_aaEwaMoT_-sQBmo7KXu1xZw%ew_Aat0G;!TVBmLxJ=*8_- zqI8F5T8^j0aKYX$9Mn`Yi}9f!bNv^vDUh8MpFBy(>qdEIzMqM(_;F;}@Dko+W$@ls z@v?<-2tVKwP*wM=O|iGdPhWCLtb+J(YWd0IwyOVua0>VI!8$yTKQev{D1W8H>@WfR z)X~Ob@bE-?+PM;K%c{tK0s2?BiWM6hGFD6~`FpZb$Dpxu`37^#``sIp_!{G867Bo+ z6Yc-nj^SJx;rK%pba=c=1*Pit-E>{Rc0r}Bt-eCf_|n<*r%E+LCDlYLCcw_N)yZUs z_gHn8Da`-6)wJ5wU7RkZWciQ{sZ!DPa@Wg=B4v#&A1DxBRp#Te`q`2RhB*sS`9C&-&-I z-ntt!+&AJ)OdL9O@3ptxRF;}oFMc}=X5Xn!o0h5gGUQY!=H3On>v+fBT@8oSyF%l` zIqrSER_})95lp6dg;Kn;TPQ_0FUZr6LD&|d3SK3J&XZmVXQx^fsoE`0rZDamq#-@% z^=LjHF2iF@<^LYz`#$^QJNauA$~^3H`c)Yg-bF%$K0M=4I@HJQrVUfFp-XH{{Kz-OV)VMnivmTs+MVEZzE>N>g|AzrILbF>b_H@4SI z+wlBlsKVcPbb@EU2kfiUIq#S+O9OL@UA1 z>JLSthd*%5B&-F02OFHx99K4!+c3cmMHWTRr^gY&udZhq$J>5b+n#zI72px zk&*XNJ**NyzZE4}`; zK*&+siRZV@#$?paz=9)MkWa#$Ok&1e7qn@I$CKE^46eT1&yrm36G9fW>4*`LN)Yaa zf)D(wpHKd`pNEvKKKKYGcbkY8pB`@VL4$iXV5xtk@bJt>vJuSw8b+}~M`Xvk{N+M> zGV%`-Bfm=(>j7vDZS{aagQY3D&MFlWpL$-~Ti`tEcck98fB&8tJna2=Ocs7$x}+ak zRa=IL$J9`kW>X5%>CDVizYIBOjkN$uS-BA&)_~|mg33kS=)J1dKx{`clpm@vQ|Y+n z2{~pWH})(_nK9>N`|2XyN(ZhvK({jPo_c4esrz!eZ|v_)c>eye2`D*NJ(>@9evpP; zCvF%v7<>NI*U2t+6{Fz}S3Kc=80>#ff#6d-Cd1ZHy{C^8^DFlWg2~y_ z_3bk(1@3tITTwcr6aneAN;5c*n+7iRE_4%MqwCB6ZSwy8zCW{T?flrUhS?T`M(>9= zpW*1Y7A^%4{m04wKcDwg_JL!4HsI%IUQYM$_@KBCT*c-|p*r-@Tl?3`p*6`#!Js&kNEDwM05760vt>IR|)=iCw|(& zBnfshn4Kw}crHxVZLyy-=}*OAaG`o4or}!Sx6TS|t_VAdj}2$o_D@P*F7JD2oAoKW z7Ky!lUJWL+Jo^C86`b`1F;T(?R-*iLu>V0k|NZj+@l)^}?A={H8t-Ii(IsKaYk3n3 zHq^*zE)%xv#^^#{waZu4+1YiaJ8Ofr`gw4dq$Gt*KKWE}z8w{~GgzQ*W7|+Unl;$t zJPm~AVBUp&mGADVTr%^eSvL*sNN%(tSfM!&3f&sTjc~e4UCAoA+-uV5VPxJLV@JpX z!Hy<5^C$rMRq?f{MpWgyDf_@F0pOgf_gI|G`>z%#efSQ@RxI` z7V9YzoUMDuc>v}Z;cRqoJl3OFPBZ0itLyKQN1MOlW7fBg{*Rr74M`GALQ&({YPkB{ zA132z3hY|;QsQ50k|K_`?h8DQj%?fJDD!c#BD_h*4J_D-WC6UYU$~=3FC1=dCV)2^ z?UgPw5TP6nt9?{=R>^q;@C9Q;;jAQQBP#Lt*MP;U)Q&T{(IBVLH+2E!W zG|&+rSXH+TEUNc2Md+}?-;r7Ji^v= zm2OXAzHk#jndqrW9m8IYP!I{Z--pKjzON;{-x3!$=qgDSQ6`jpg|FLZGjK_SoXFjt zB_@1XuDCPZZYou~b!R@j$RzR3O3X3#YSVNNl2u)jT@4*X5-R@BBTqrLdaFL^Z5%%^w9Kp$vj!AXLKzZN%eJ!Wy_&qOre;jYbjB^n38v}6r zZOJ<)(NxH&edFT2mkOyL;IH~^TKaJr7f&y&IXz6)0uyXqv8`mH%C}Z0e>%_?{WxXT z=;%b}9N{VPqBa1nx201xO^y{)7{?s$!?u*_kFeaFy<@FH8`$0$6DGWDc1a*Z!q2An zvo_0twLFW$ldo3IzwWA&c6dK2%sEWDh0=%HoLp(Pv^0IyOtiB|x#`$AawNY;tY!A5Ex3`G!&MLA!{(glQM*w9n)~h^D{# z7d!_=c#`oFxhS6mN2UU@2?JD?2?7EoU=I=h3qx#D#W+wQMd;KUm))-&g$bS`(7BqK zd$DKe6C)Z$AB&Bhe*8L+a6cpwxnqJu_zba6Q&DO~^_{T!;sF?*-YG)#O0IJEK={6M zmcQ({`2D2=EBPxU+17P!Kz|98v<0f8l03)ICUKo|Ay&NP7nu^K6Q3VZ1hJF4v~LeC z%L(^}nl^hco*A`P6c!yhfb%RnhZ_;yc+!fdxCVN|UBTMqsau<91k}@vG2y;> zn%%9b!zG<#B302pk2SXQFn-igW2E8WuK6u(4`4=E@hBBIq0laTAYjz>#B2};@Q~6N zwmK0+rzUGQ&BtDM1YMbK_0i*v7af3A8oe>a3OUD^aIIQD!F%eeO5@eJCk>bymSS^q zy5PxCm>6nvoOs>3EpqTE3AOA%NN5;gRE+!9i_i6h^>YagM(28O$PD-zx9S62ylN1Q ziIJ8QYOkwU`YBF%+bK^i_b)nkJdZga?e>4N4N5N_ZG+Mfhi(W=skWj~!-#20{HnL! zKd0}yy->ST2R@pq2)7pI(uvk7YkeQns6`R(GU>N>F=tvkHcrcaL5w_8=kRK-XP+}f zpgs7$5ruiwYD5Ugd%d}U*~s#H80(9@<-!kTRJXS{E+8_##Ns+~eMR4K@7Z9sf)k@} z{3rdR@8BxLZ=Tbacm_k7qYbsH1!qCd1{w#Hn+O{^1Fg!u7bgH?8MpCrie_ksCLMqf zj{`vDh2y}eDJf22I%_)9?1)^QdRP}{o;g|h?v-bB@Y)d)L{z#?VS5(ih}kO$7i)4P z)TVVn?sn((ei+6Kpn0j`y9ns=dch{-_?WO15cAtTWA#UBqL27zw0;?!;_j?9WcAoz zfvV&I_IvV3NAnam1Uo3gV<(v}@7LsNGXte@exiQ-x~s=|2fn@Bw+OnzUP9S!xkH3H zH;8X$HfHh6wYA`681Dj%zx2zQWd_eAV_6e0y$11d6ScT=i)|*bxUEkr`l&Ri8SMXF zQs>b|poc5(9yx4nwF|9kkFEAz;eII|h;^}@%& z-)Zx|OzFMI9oWf=qd6p0p_n+igB`wD38b01hFvd>6SOu|0^4u+W?Y}+nPuJ$3?Fn9 zRvMjd7i#oN{I0`hTAg6Uq8sB0ty6GxCDnDK)%(9cVk;>+K9sfUl{gYE9e-@Pnw>2^r%ZWBoD+_%acsR95h$H2m~n7lk@kryr! z__S6}KELf)xLB?CfV+a+p;?jaWrcYode0|N-+`!V!oHFm#WQ6HaEs=*_z%&_-Ru^W z*lDd_WbZD3m>ovwJgB-w=aX%G`4~62{f`#Ln@0Ip(F1yHa*yqG@>-z2&X3X_sfm zI}bNnKY4KCp=3dC+u^iF;6I~_R7W^%l!r=l0U0IQ)++8 zaa_5Gd z`vtCzF+p95*(_;WzB+gw!PA-P4bi56tdy;*t=Obas@@wOK;)@RtQP(FtyD@rYxp@V z%-*FMWAHf@kao;0zAO&myu605Y-ZFJas#cF04mB39pX5HNG`M z?jNk8Gx!#Tap-6t1a3i)WC`xZ2lgskpJX|v5T>1^xG*Gfs|00$Gs_o_bFVHH?g!E1 zo;ZX*jb9X7x>i|2*P-sWHD5fEfvebClrRVLe*_u>vw>mvVRn$}J3vNwyZ2v1kv6hN znQUXm)0t;y>i$ZAnK3u~1|&i?ws6w#LKYFVSq2BB3*9K?WiZx2G^)#SsNX zRP+2jsu}pUFl(zYfUtdpY)1|fn`JQ+pT4A^3EJLe${glf8aD3dxXke0VtkYCZE{1X z-YNqbFeb`_R>Ksr`>k)7UXx$_g$Qc$I|Cu)AUxe*Rxv}dC5|9I*_wp+#G%j3h(k{c za7eX%F{O{sYL08(>CQHwE{3kK#7TcPqhAhsOOW;Ny#R(Xx5cFd&GH?|uNB;E;?s&( zh1FBea2KE;okR5-!>yl{I7+%$wgm6sa*>R$n(d&+o;#GkIDui4_m^BIB<8SKZ%i;S#6@CMa zT)IH+6$MI5ydoE`h5)~g`&O&{17YO`9=>#@VH@dMx|0M$-AyHA!D_RW3hk_yTPp&F z!3?Io;ysI3-{|o1gT3tBcJN;Zp_tyTy%MhH@>EBc=g%8X9V|c63RlPen0M zyP|Nh7gFwG+Ia6K#WvCZ>TH}m2Hh2#92OeP4>I=#c1_nq@-=2{iy&f~T0pqr>$w?N zL!gu>FxO~QilXh^{l&(0f_gllORJHLDf6k~`H&|GelSgBY7?4#<%z~|;V#v>F}a!a zoyzC#Q)YF5vQEy}DBzVncqdK8KzvTWaI!&xx~dl|1p_@T!tLAs;&d^6!17k)_XUch zrEEkyWB@C0wTSWHw?oG@S>pyplYHMsVOY3Yh zYt~;{9X^d7lIAoi3@{Wb^C)qA>i|yB?$L`2;QrzT|fc2|F$=e$_wfQHae27uq?_RyI zs38k;vvU1KGde3av?TFg4jHcZ1flA7tqZ<`$~BF4z4!e$v@s4!pu1! zisg)FMngF)6&DqHO2{sCGW@vXPA+{qmMUAgBlAIDC<_(BI8T#4igqpf@Z@93* z{ml(q@9e4L{z8fB*XxK$Fd{PKT>c<}!DZ2}oUx@-EsinsW>+ing9ZFVkk#gL8cc8% zRsx=)O)?s#JLWc=W`1&2=U$vVpXWK=;9z2zBE(^sqh&8pAI55_ zcD?CPEWldtyL`Qg$DNPw8R{Tg@}3V696&HB7)nWG9G?cY>uULpB|{KNkxn+;Ut9QY zS$F4Hi6S(Y9-vMm{Q~`rfqIKemi=bXZ4G>2HGlTxo$*yy}Rw{yJ8w%vKic9{C8Xs#2 zCXFvMXX|zVD?+w%Et6dr93@*U;Fj z?XIyob`6U65{^O88H1CTj7{KPPL~3j5C<}1bM)AU?~MH_&fw(*mM`&DA4ilaWstmA zKEH@#uxGqK{2)tXB(0|%Wv*>v-ni= z-FXPuno4kadK(J)t8E>WeMB`9=aY?_9{fE&IT$$k6F{EoxAQ{C4PBWX^<(6BKTBRV zQDopH#ynoP6RGl=KrGfFp1<)J^57*)s-8tFojH@U34cLQY~=<9pR_vxQe~YLYUGtJ z2#*f=gT5;0$Z9Fvz1A@(#xe(~f#kg446FtoPashc`vC5Mduo6t|V&!_86R(av3Z@MZH>UMD zPz#M`Y{n^cRx=+xpZ~r#b{l&QZ4X*%3%gK{YJuu0@wd`qe+<-a;68tZn>F z;o=9wm0ZN3SMCN+y?AqGQB1n=w*kp=kxjdO7T_+1eCrSl2!gnYj*4Gyw$zhJ=_S@2 zI}qKiqVw)~S#Qkzq(A#|gU0OK_kAnUC(uEROiIhCLIh~KIDhU2LxnE+c-ePUFao&r zbDo(^V!VrNwq{7(vdsmngU~#=WIbCpt|#S3?xt=V>kV%q;7os<8zs2{ss{3pWiKng zVCQ=xnQOkSz#_y7hI6QKMLq2Yq?I&NzFJdl2_oO;$=IXktH$@wO=wAjj`o3S*N^Z> zrV(qZ8iQ6dyfZ8ogm<)m48JgvlRr-w?{cX7E0AI)_Xwm+C2!JNWW&OSmoczw#0^6` zTw_#&`1YqOi_DJ89nVWRzZE8X6wSv5@GgxDkp%f9F#Dv_sc~osacxq(p*STY4y)cF z4vV4fzohQC&J^w!8i->MXilJXFlDoeFG|c3HlNFzdWsy+m&7zY!u)G)6zFp5X-90r zTO4Gz3?*_%O(yTBq$yDt=$j4T*F?$nqpJfg?2u*E@036;fi|6<`s60YC4!_@_)4a| zm@=}u>&RC#gauyW5ivvJ?%=$P+a$Zq7HsmLna@%b-V%32O@_7&@2BK@VY=dxbez zkc1c`4^TFY?YasJ@H|Mk$KGSliu5k7r`9#_KXe$Wc^pgiLpM_nzsFT@Ar7@ zsNbL0;l9?p!Pi=%77IQAi90G&dI;>u$^RNXP1J9KFO+4I zjV7E^y;tf&Eq_HU7Xvcb@1EkxX>MVxZsLF|XUPE@7Yn@lvdgaTbLScBB!*%SHng8o zQ%`Qf!dUv`yP#oM_Nk%R^kqlTHejEdwxvL+5~R}c5zbN!Bf%dnGnPVWlEJA9{HoQK zH}EewIn~P_k3c!%2Rm0Rm|cT=;R?%1oM=9s2QusD+(evY|Hh@*d+qnj*&3#-`K#V-Kw#d)*updNpKn<1bdf3DvR)21moXh3*>kl0B(&i3-wpVRA8 zy%^si!s&Ob5~ngd192&=DJfSfZvNM-L0uUev9!;>)skBA`KwBSlUROI99oSc#q;YS zX9XH8^pB5RH$M*`1P0L3-)YyM_xMf^8IJFXaw=rtnw;1`j$B=etCchC%{SZ{EAFvH z?k+zu*G}@NZ-_QV*S+jNZZ1{xezFE&G`H!;Wb8-D$?HeiG2Lw8oofpHdDmQa&+U%d zO{=tuY3!CCCj|GSrljO6D7wDFH;h{m-p^Shm*JGhz&5|W zd8V8JU5%afKhm?8nRj+^6B3czex;(h62o;Nzo*NB!ehk1Q~yj?{(iRn^mFpvtr7|g zl4s@HDgn=2X}t0XoS=zw6^t=zQYz`}q3*SPYvCm43)kj~q4E$#0o&}$C%PXPQs#u4 z5u{Hcf)wcBX5X5YdfYGASiI6kI1oMZ#o_SUk{vWUYMTOuQf~}7-6jlq-dPl@N*`d^ zN%}SURk!&qb@_*V)|4iP?7bQ1Mh8ISmoyT6rOo*{F8`6CLqbK@9qBjg=pqXMTupp# z&$^+R07S3{TI zYzV|ky;`bMX}hq6%mYtlO3tCv#V(}N;Zs-u$ zWd%GHa~FbVOWxoPla!bHee`Rkr=MsYS>lqXKBv^b#qf6j1g-LtM{G71R8j=p;B8o& zcD$`W=W*{Z4{;!6CU&j`ZeYtIv5zFBW1$lmK1ZVN0H#2n=!x+9S!+^K-zwIdf^gL& zaqF(n7QOCw`gz1CuM^U!x;3|FD&H{>BYDC*Q*y|*UJ_Z=NnW8_MnZfjwbyyW@(^;| z;mx3dnbB%}EMq((sRL*4+NF1aZ&$Y>h$z z>s6Wo)_^oQsf*U__<%)Cmk%47?#ou|=2!IF+DeOE`Rf;y8bFiSH|Cw0Yh_-V0>ZyW zU6bprP~-9AUKV*})pyV94BH0$z79+QZ)|DNzcH=N_@b1M>3vZBvp$0N-ZV`+Bmpq( z%Dv?V+XSAi|EqZk)A$Gzlq%Ii@1`yQWsr<-1C{M2kD<(xgzSe)(;*aM`c|qzM%0%s zk0*PRf(M}vemMQl^#AXfQ+3S8{4niFK=A54mqO^T_ z;pMC95*@!Htmof;FsKt!WEqCOP=3`MOswbJCILE-97`}MpGxQ&73SuW#Sdbz^6Vh# zyF{F6v?p;klg|Gwt4$3THHW}k93_mG&?p1E+YMK%9tPS*mA!pu!sRUEO=98MLDwa` zvw;44WHyAE=D=&*GY&^D3SD&xT}kv>ZMp9CRjFEwy&Yg}TEjXF$+5F>5Ao|butym+ z_v^|LL4?gEMn>>Jr$r_pfhgqMbgk2yvM&nYuEu*-|NF{<>2q^Ep3y+-(dAiBn)KJv zn`E6au7lRDSoQPjIr?7EjbkiH+ler4U7Yj>=U8|K1H(SXvQK*UN(?+U)7G6|KK5ob zg&4VsSJB3OY9Hl!odoWh#uCi$Dr*qp1-d6XnRN=-j3amf*+_<-s zK)1ZnL~`^~W0?m&I^HH65pg8Toj2L}(){6m&9rUNDG|TTl_78DZ5KX*a#iq5zJlYW zH`DA4=8(eo?CYwl#*DRY!>a(VO^}_Pz*R5e!eUc&H7M}Lsii%bIV4MZNhj!g<1lIY z!n(VX6@Xx{>)oq|^c!l_|ghXLNBT?knUFYBlhBIC6kTp?$;`ki^VHjVts-B2z zJYZKy5-p{42S6I;>LoILV8+Pxfs*`}x~?CFu^0P{G`FZ#KYq6J6Ni-F6O_5iySh{Q z)8>`FLYU*3d_wCD^FP@&n=o|%WbDVPG5r@8Q^zf9t)p`{!lM-z!e+#Zf%#hV8BUXK zH%GVfJC}TAsx8MnW7|V7VacL4JI^bvtGmtxmtaTM8>xe)bg*+)z%dJNIHj4GmiTeD}FBV>XA|>999>Ryenu=Z1W~_wf*4@1_y)>fYc&Jm!Jn z!kylW?_mo987u{V+k_&#khyrIckhN`U59wNx$up9GwilOWr&HPOcRzo?xaSW#HTNH zcg1-e+y7k^EHpkk=FTTWUQ1jL0Kl^c{)F!vE>uLS5kdH-QeIPDZtg7BIq!gs*masS zwLHhoB>r<17ci?Q>HQKaJaL)F_2*70HIX<+P6ySxmskYmTlH$xi)BG&JgN$^h}(TN zY$$dIX9klS$u&D|9Y6DHCboc}c0%Of)y zoV$z$$F(}u?#P{P`fP_`kXOx1dRjv9- z5axml!ixZmuGD1H0!B#QVtxe`hOpuk(gfz-vxyf`TE`66n$DJdSh*XBk~(z$fAK4= z#bB+0(WLOfe2@g#eS-e56ywy-WTJr_LC0f7OT5wEDUCnY+i;hNWFhn^k)12WiJM1D ztRoX^(;Y%_c?1)y8)kUY`N`nmn}4&Jq{SO>%tluQ)`9n7-^UmuTNrWi>%^^}`I)#y z^c@fBrEzu~>Q#8S(Q2%BbY#+khN$<{y8uNr zB{sL#K!a^8&P)~Szy1FT4n5|5Y%5S6vZ%9zcf`xL4|JkmH87Xr?EU(a$AAALBj{z; zqlDpPDMcGU5Zlc7Vb^SFroW~B3N!rI%Ue?)J($@fX5K%&&qrp`R}Bl``RArTv~Bs> zqp_lHfDIM@ZxR@SBZf>SZA)Gp{7lx;Ok@7E(5tGjynv?y{52z!D(V@G!S4*r=qTd|bmBvD(M$ImqgcY=}wX-8~Ib$nj_ermb|ZDypqNrd4lVQxC|B zn@{1N$fdb3XR5)l)boQTN{(zp54rvB>*OU{8^TFS9~P?#?8T~g)*RXyr=9rQ61YL} z#UR$bTgvdX=N}qPFRteJmK022bf2%0U)-g}jvH7_Z4b&@P@d^}j|`Z4!_FpaK0J`X zUm_LQTf)2ussXm)@Y!5=XZTSm#kGi99GJ%xRac z!>5-0_#5c6uZ+UFq}94VU(5ur|B{~haU*S6lsO&`vE97D>gkR2(WrGRiEUN?H+P3p z6FDoPWW)zT0P7(){nWS%lzU*yAz~Z8cx;?=+dRU0MM|dUnue?PSqG5l@SwEO__3q* zWN^fI9Coia(P~?ubuh9FwE<4J+BNy%!z`*bAijK{gd%o=h6nrpj0brIOjm(EK*U4XUMIM(Xyat+z#p`Kf!Fb zv(D7c5iY9V$y+H~-1gWr1+)@P9!31{lZG#kor8!Hnt(@QwU}~}WIO~)40pxWrfsgb z_i)T^KeDFXE?CkxMCmRC*p(F-w`tcl#8C%N5it2zU1{`FTw(sj#yx67>PM#MUQYa0 zqvXR#ggpS=hC9&kA|#^01HyO3L0F+mN?Q{T`nNgvy=Gwmpte8|4y;nOyNm{ z;Bg`)EvAgdWOG{R9*_N>><;x1?aV!!hEloPxt1&s?^uNHpjjA4uIc@7tIB_qPh{^I z3x?GM=AlOh67F8FR=pRHT`GTo178Nz-UY6CFGYZwRUP=CPUg3SB*B$2-A6{+p_IJY zq>w*&_^nk{i|TF-Pg*R>nJh`f#|XZF=i<+`r;~qOP755?V5^N($YWI2-%#U_53>%A z3Z|-65#}3<2ROcI^m)1$BNuG7&S?S1YSBVjr41x~q%{9$?dMCV`G_i8Zy^sQWj;vb zs|QUISbjv1j%5=0vUfx3LN53nYV8dg10hD_{@2TdndGT{(~=ddUL;p;uFN^NKFm>J zoX;I*+oA7E=HN~4xNW#lYTkM6B^@|~-Om(t|0_vNFSAapgz_7&U3JHF%A;}Zv>n>S zI{FdvY7jii9GkIAh+N~CSY+cvdDnKjz_5|DP zcwPYy5Ik@iG!`1CT%BTil*Fu5Iy_vSrOYW$0vv$&;=+ zb;RZAF$a2**Ztc$N!2kG4Rkd#i*KdWCDQ6im(qKOw^(LzrOGWt7N-0Nt1V9KpXU?f zm?jzWZu8o;sQn|iQ!{-97*FDHmI5Dr8M4R@Zg`VE^{LI=z=GqK|FFJoJ7CrXX2;QZ z>f8(;tZSmwgCUEmc1hV<&z@n*h<1-U!Fs`e^E|u8r40swj|yqAAyyV54M64eg7G~M zm|v?Zb(1%o;l+tK0zCp2QqqOHoomMAd6St5SdVY$>VA=q zJogSGqx$(Go5J`Y8(k|9w1NJDI_@;+RwxqKgp3fA6??rQBsr>qj1rVCJdrZTf2HL9 z)G&x4e=2g&l^znmH11Ke!{7Y>OONl^_~N*K>-#x09?z|xpO+a2sWJzUvbs~KqJ4qz zXT7n&ygTYtj`+ATG%Mj*6g1?9gAhFhuDCS)?j5tTsjWg)06!OCuCukEqWamekI9lQ zA9RvG*amfR7v`_l03EB{d*4 z6KB}wXGiEJ8`?IqzvQ5sVnrf2zcYN>u=M=b)M)Vq)%wt+KtX$WWt;l$INN|L{ct>+ zj`I1mQ=^SU$z#U$?J(cxdt9~E!0ySq^gYf5Hn=s17F%x9$;0 zvh(C6y@-bUb9oFM)sk=zDL&w4MXz3c!0Syir#<(JsI2hfBUfWLnu)yxoK@5!&`CL% zT%1+kBq@~gK?VP}OZ9*K^qqSg&%)}fw&6#&uGJ6b^x^y{?jZY<+Jfh#VR%X9GpG=%U5Y2{UK#yk zw&iGJ^uBF9uKEg%29c?DLn$GD~FA^03wi(6n>;(dRha^4qI#+ zCZZp@DNP?q9v60f8SYa#CLxjbn*1Q-evZzY?xaP_*GS^8r`TbdAd<$R6d`W!Mxwo$~^8c z<6fmtF$yhUTvLzX3?yosSQq8A-k5mCoAbUSD~`iJyO3aLEKOA8M#fTZH(N(1)$luS z_gi7+mBmPwMgi_hx=xSn_bpo+0n-CBzBIl2+N*C{Nx z^JbYi`^jNo-RrD5HggbW&_+Y~%YyYi?N}JXSTTB)D2!uIr_#Q4|^^zL4z-aXRcON+DdbZUv{9=cFm+`QW< zxxSf;_)5ZpL?}kvg28Zgk5h`JSm-I@CG`(8;HULyxBUP?<=hVjXz(FAdgCFHBN&H5 ziP0P;klg%zNWkr>z`kLPP9-gzG& zk0gLH+z${}t>J#VzoD10d!gBC{9;i@XeI7G3UX7!S!#_~oyz1=QNdk*RBN|eO_t{m zy;hhX%j$Bd{cB?O!4If-46xb2SN(GjtLSMU?E2#o-he14^mG3Z@^cQz*>y1!2XUT; z+F{=k+twyB=M|rFIr-AY6LF~?qby1z#g3!m@%YnqWuh9LVSKzel|lo@r&DPCyos4E z1kS^ros}oHU1kG47WF;}deUHum{mDpTY36Xl}h4>?8a|jeYaI3^F_mo7Dx$+GK>`}*)G!vyDcj0!#D>LXTujz7+)>9)4T zN0J0SXLS^huArf)jb%b4mAd1b%G(sd-bDQwYF65=Uz{!O5la=0>{N$e8?c5S8js% zJKbSrM&Xw$2t}V9*Ofe`tBL0p7YT}l@33vX{N*t`VTY)&898CD7#yrH#C*^Jmj~s8 zFefoFmWchz^R-5wZEylkW&E#a^4KygTq@(Vld-WpXc^mrDVs|j+$(sdrtb}pO7;Pp zfSWTfUFX*8KQ6Ofn&Kl6YrZ@&gva}U>HOyq2v+{c@z^N~YX{)j1IqB68+Pq?5Lx=> zF<^c3GRRG<;^nj|emxOkl(@cyZ(!|oJ(peYt!@v*8t zz+bJ+K2Hbiy+Udaaj1BzNxqFA?_spD{sXWk$olFbeNX{EvP;C(E^AY;1PRHTB3 zq|-<|{HPAk>O%o0!d(0`c;;`dgEir2-XGW@4@^`d4!d3sdYH)|KvpB!KdilfA&(=E zu4Aa)v&Y;2tAz6(KKrjxds+Es{Z>Xt2R^P}hKH~-j`BD6KZXE*{M6z{-8q}W%A5K) z4-bLC3EYa-|6AK@4IUf67nCs2i23lyL&;dhF2(TfKTIoZpdNZ4X!z&=X&4SOhd*F8 z%R#sg^+}|5cu@4cZ>3s372X3K!CT>3X`(B@g1E!B`K#KInCwH%k8fUDo{-J#Ap41T zVm<8zvXn9`w^X-bxL$^q;kyz71v|VW_kP}2@)%($$^S+XJ9;t&N_y;@x0w_@%{H$1KHido8I5W62##4$g z?P(R951xll8yq}`d_~HPb+b9T6e9s0RF-Oa2TXtttdBmvZsxu~9-3SkpE;ZH)OFsq zBZWK{9=85un|iIhDQsLMOm)Uf#ot%3N6Xdx>wL|Ecwji#chQFGvwNlRb^>dy?d=0~_DpclmbrgmQZk%P^D#qH;x9KxC#=#r2f!ZEYyKj`j` zE-5@WlJ$NX=}3i$V_#({z+jrHcfl9FWby zzAG=+U4nG~(n@%Mp90a%^-G_7a)smI9D2D%#6DPMzUtNkXNefbrdkVLn#|2wU6)>$k%2E$R1YVsVEG%~lAt|{MU3$b^>*?f{s`qzUw^cnzUsZr%>cn6L*sU>X_?kfB*N{--<3rYY8 zxAS;d795SRH7R@fwFA49-t^U69|cOe*jjdhVHwQtKR&=>C%?ziBCM_WguRpil7=y- zej#pU8ESoGPfaZEhuEEgwgvQ^?Um}Ek|#3gn_PSOTk+5Q>c)JmDV)6A(iU}-kkY`g zsmNx^GQG!cc3ceSZgMy>*EFov#1v~0&4cu zt`{J*yFnV79w_}?DW~9s^F3Pp1|^e*;gJ`A=|!UtXXD*c$k$`msPcl-Lw8iKygRar ztl3>Ah654-wY>JWP&@VbTo>jF4SCPa7BuhvGguwb=rO1m?clJ6l)y^uSR34OTV&uaxUzNTs^Oz>+loC#i#$rnHa*BF7kmawj zVHYYHKly|>Eb&-(rx|$UomIkYrg*_L6%OOGWFbL5u47;`y;0r&F*yOpdVN7?dD7<2 zcWY|88pv6Mt+63WbiGA-sVn0mj7#pI#-AB>ESN&^|1tK~VNtDZAEv`_{-IXdA$4u}ta9zDMTm}g6LS^QJJ8e(Gr!2;V_iycAB57$WJ)5zZoL+dcB$a*T zYf|pxaxU(fzRw7cRS%Di$s>({u0(d$3MlhI;e1&Xr`6Hae)J)yM5<_U$XH^0K;{8f ziqc2vsu*##m|NbKI!5V3O&h!fI~ArhiZWO$YC8>Ax{mlt1>4^fPvcuC`A`1u2Duylpnq9z5k)!Sg!R-LF(_L>%%s&Cx9x z<+8$;v9`zarf3F_HgaLg7ur4w=h0CG_8vDp46RpS4#5j~hNXi)ZN#_thVWUT4z?-i zOPg_@F%iwTTiB!A^o*xSqT{t6B)hAFIAB(v;42+Fo9UC!{;EFov)axvk@G?ZLACaH z*lqXtj+y5T%0JK1CYz+bLJd65$zJ#snDx4yxU>pIs9m*_@LWQVgzqF4qy-Ux4Jycz z1$#TOr+C)zPDoGseTuQX{=+#N+c5cv`00G3Hj8h+WBKK~fq7WCWc*zi85Wyza+7-2%#Eh>OYQF?Ai#3wy#~9A)P9~}cMMwZ z$*4QFTn9|avr!LWOa=S z_!MqxbQ-;p{g6Ac?G(N6GSstAvB%!6*TLf%#Z&KI`5%FavE@5dZlsO(IIp0}O$2G* z$ov3Gygpu&;A425c3-e!evUZWDyrkQ-^ZNC*lWZ7o4|B-INsunqfg3_Nu~%^XltWk zy-MMZxM;&)b$EB3{!@n+>;0nsR0m9dN0>T#PG7XAEokDtc-3V($4Bf-4GpFK+OBmq zt|B$&+zVy|-;;#6jTYV11V9R&&%tBPq^hY&zX;_Se>S&LP7|s;Kqj_Dd?NJxINL^( zpE!kFyOyG$rN;8ZLZmRq)o;kS4U)5>Gii5?eB=)MilDwg9P%ZL-eYNY$JK}K>j(}z zg!~VSMj4Ybf;X?BCJ(^9XJYG>=M^s1HbR6!M?n1kL9$6mqM4wBK^f$ z_%_ASjqeRK03uahmIOT#sIbNMKB;)+E`Ne^h$!2ec7@?xl-=h?2N>RfAx@WISqG$R z02Y}hV38SlRiwY@ntYEXJ0R{;U7)OSr5ukN_gftxi{_Sgzgry@;&z|%4wRW3yBr;` zM%_t{{-k?X;JHOt*%O>7s^+-#kV(q2I!eDcjsF!5@Dm8;RemE-(fTa3tGDB1qCk4% zj_Tmd^6Am#Zu$MbnSEVP1QbNhVITf}zfSz>+}QVfnH;pR``7YqLR*iRC2LfKGXc3E z(w5}?99#PdqaoM$UF(~q=q9g;k?We@cgQUb$)K`*c7=pGsI$i%b@*|N5r z^r{GB39%WsvHW)hSejY5RXI{McZ1c~sC%Dt4)k-10XT}VI9@V&UEdU3)YISS(jRi)n1_6JIA0*X;KQoZR z-lbC~32=WwSv!STYwzc#Dq&V~b{*fk@te;h>!GVm-Gb1}?LAZG7G1;1kcGf~3AZje zw}oMoF*3{hjVj+*jfGy3NpHMtPcAgneaCL$Uphj$eNE!*_vxa;C<_B>Th7b*@M&jb z1BncTE-kS(B#w7AXNXUD&di*wpK5Jlk*31oPD;(C@=yEQK86jc9|Nk*)Vu~yM)YC5 zFC2NHzrH7O*sW3bxz9Y32NGhj?T{-*xOi~xiIWkt&X2>jPkEixwFmEb=F-#5nuBn` zXVtWZ-Z-?z^*?_AnRT0!%e2c)flZO_OY(cTdXo;PRP6~L(5A<-+M*;HEn3} z7W-G;@OOJgJy|_fus3`LXGI87_-lHCgkp*8Pe7c=mP4uG0HT z>$+FSQa@!X^~v=wfDbJ)vE9J#tXHzl_zhQw4 zQ&9E8JRrI4m$z|`+=IQl0XF!z`*N1KVje5C_;pRBL$BN;sI;J(-ts4`QdYtQ->m62I-q@<1(se z$f(yor@GaKvl~+V&H4vcbBIOJwAc}6*p=MED@pW~U1beVspZ-5k(c|L<*VP@A#%Dp z6El(_Ta#Aa&)gcW9=Y2Qnn%wjJ2REe!tXM>z5SG1s5f2;bmM~0@eB5O6!o03+|73u zE&pX#c`CM`JNZLBj(5hprzyan4c3-Vz1#L3+*N9}R@go&$l(!HCH`;x3pgCj=i!)U z0bXq~v=}x8GO>Va`a~J7{Jj11XR=-UR}YMbP)W+6x+mnH1y<6ZXsaW~ zObJpddd%Kr=H4E->ld(L)g`e<72&$Dr@HXT>1x8x?>o-g3j5c>cpIX{VpXwCw}3nj zzmbja5A?ST#-rz!4$Slj%Pp2mmzQ)ad-h3z0u-^>x4i_>if+c`if#rzqN9~uXW%J2 zX+Trot2uCrFLW6mkZ^NZeCkTyVVOFtqcpQa&+0A|*yh}9!%~u7wV1j{zW<5T!~gOo z-HS^bA(q(;g7<&Ea+q|jQvT(0Ps3QO@R3h|leKE>_f`J4lre;#iXFDMPi)lpuINNK z6c3OLoE=wg0Eg#0pXiher$s!}&2PzE-6Vh1Fm&C0Bh0}Sk0t7>W5N59L$oRMFY?!K z{yej%$2g}<7Hv?ApI3?}eQ=w-{fYIyL2TeXJBoLgf7X8zala-|aV$uxq`jeE(-Y~N zEGP}+XTv(nY|9u-pt0^=OIcA5lcRzOf&yHnJ2y`k`^s+a#J+H4R=rAv_ZeLk<2f#G zgzk?rYe1{oDiigVz>nV8zWa{Gr>!7Due(1<=p&=QL}=uoz_lsV4ON7kRGJbu?Ln;R zSu#2dPwqe*c-&(+ncB%&utMz!cun6zA~#0G-jqI=eH9rOU5^c#KrBx!G4sF6?+CG< zbbIl|I_RMd0+(Ph&9&Sy{ei0pof#;gWt?eihLWT`nVXaXvGY8oYlLNSP=lpg`w?ZY z$`GO1?1+u{XOX}sO@mdlZI5$bwfnpN>V#T(Lv<>wKMq9f8@&oI>o&WD6nxlUISQ(B zdqmwPOeCc8PTs2g!598d=P)uy8QG(>k_&{|Z{E8gqqjP5}k?67K zAcr-SeCVUMK}?VQPy>7***?^XUdXJbZ1~V_!5jJ@p<5z$W!nB!7Z4qcYA4}OVqN(Q zH~057jOrRz3xUSz$jj_LLbIN{ucg>p3TTptD2Knr9lh09#yZasvScq`-Sogy%tt&n zeq>Z3iyt=(y=(?XjwPT`onh*BuaFa}*L? z)u^kqyXX}$!rdJ}X(6NK`H*1NASG~WU-H4^*Y_qCTMGjwMUU;*gm`)k-s7aq)p@nL zo(G?{ImMIy?gellc}QJLeSqcBQnAl`qmov#wasWXve(>_o{UV9%8SB>4@8pevwh8b zLZL)bU@9u9C0rd+x|KJ<-FBBQI3YH6wN#$>|&G{kzuu`+!n`l-tQ z)fzeB?FT+ncE7dphV@68kOZGntpnHx=)}-kHLX)(uo4u0;Iyi^Vk1CzHrF4w<9$h7 zV31*NDm2RI=L^@beVztyx7^>C*Wla0^T6w&l-{qUN}}xLJz>q+0n|UKtB6V|cdIYm zjj&tY5)ROs1WK701|YmYKe`0_Is(gh6> zh9{N}GRhBU*^*41Pp^76M!q0FQJs8(s5l~We~#*5l0NMP@on~=NqI+B)5Z;ZtctK@ zHqsUdN@e9de4>Fr)e#g>4axS@K+bVcMs#j`=bD}ldbN!*Dy9(r&Fl1WgkM>JhN>5Y zW9Q?{HbD2tEvB7$s_`1F1_PGdPT{%-V0W?{!HcHXy;ekpiP?6myXY0bKXx6ZmwR#nBh8e2Mo0=s7I~f zIg}viE>E_ucA1m#mzhMcM;5JG=Q4|14rEHWi#-dLBNxN()m`764!a7icjh`h8F4wB z5OLg9{Jvft5l6_6$@ocNH==_%CkknTv7&29q5I+a%yBq(Bem+BZ&2~1yb+ol0~eIG z@fwV7SA-osPU5nwby^&#r9P|sBWr0qnCo~zeZ5K3{64nPl;)^xtz{(@gs>q&3Zh<~`^ z9l&qr`CXAiVt`|VtiESKMl-kUm+Dx93tk1eWtnP3nf1@VDr~@si8`7VTaU|;PA_nR z_ez=^nYM38>cXvqQBaMK8!st2*gUa*l|O!}|2PO3rl?KK7CHX%+v||W%%({M4bDd^ zKWL$5z2bUN{CBlpI$h&b4c!Oe6x4_%vVQmoOB!fFgj(@4C(}XXWf_qfBz#_j>}C#= zhqh^h>6Mjcq03`2%JVrk#51-N8sF2e3^-errLSl>c`=d-QAcdvOeIblaNi6=SLoDO z=Nzgs?TBuo!afoDmBn;LZ2>^{KZ=-*%>{l<8JigU9Q67T@Kb!a|OKQlQyA0Bral0LQLeY&^UP07(*I) z=r~Tz`{J{O@Vs!h&Gnm6>WE+-hPF0oSi8!X8~fXoXGNht%^REPi{mJ)w7Top4#^a$ zPrf-&qJw9iG`HdQo$mCOqA(9(l`PuZZxQP^DaIR|NZUX$Uw1qyVqAH8PIOq??2UjT z7Zf7kwp|=-^R2R-)cyyF67$DH4kXh_f_^wpBgnT&+z`1 z)UOmlmqvP*<(Kp3*1y5q5N{@1mNU;A(``-57Qu&hVDF7%yf+Q*FxxS3!{F#EDQf4X zK}`GGt?BsUS0$bO|7L>$jS-VDQq9G&*K3L!Z9(G#5ym1c4*om;G2HT0#bRzF80D5~ zVsGrRlIbs42>mMu0z8L(j*R%y5h|TqezB-?bi6cG) z2qNKHLToiF_FvsLbw^pz>FyecuHA9+sH>R9tms6-sJYBWk^Zk;1}MFEb{EjtzqG0q z|GT=QX|7DoEQGYFtufKxWYx&DBjhT2C1@w}UyNVCrFk%hiM}$AEikO0Q^{`b0w;0h zg!Z-HAAb1Poo}X{qZfS6ZseHfECRn@x_$ho`2Al?;!VK(9AWO5u#e95O6vfYW98sr z@aazrKYu>ZAr{>zH^IDM>nVD{wtB#}+fJHw31af%F7VkfulH}IE#(|y7X(m^j2}_S z`UR3*t2n#|^s23^a{rOI=H258bN$1frIliQ|Dw`)(l&Gx1p7gBU)=W*0vFYH;8|IG zlau`4Vh#m2XM@f%v9CQapqS(78{ex_*83C>h?V~I+Af&m?p{y&xrJHm4B)E96TL8Q zxbb(z#_a!AY*^u9L0)8aQw6YA`h?&Bjrn1(AF!J4$`+9iOtE-6s0y?$Bw5JMt?;=R ziHzXe{@(Jp@y68^9-&q;K;no*X%H8A&Ddy8Ri;O?t|)^Ax_A)>To|jk=qzxu`Kr<7h-27DNohOw%bICM@y} zvoZ~8wX`+_u(CX2*q`=`=X_=JQ9pm4?-x)EG=65Xq1cpJKy-2jG#?L4AkQ@lX#Dt) zoA*H)vw?PSm<7wb3BA5cqB9w|vL^Y~uEZB<9sKN)lo=`4Qra^fx zfup`MK@*h8YuG+qaZOVsq-g8l2?<2$eP!R+n%owT=&X&i^L&bgt)uF@(RRJ-AN#? z|GTwwb$jJ-_D&z^4a!Pchq&@2_hgYZYKgCPwW;yn?KB_-cF46#R!3?)MwERBDVf(D z=HDW+YnlASw(5?KaeYOyEgNfUA-YHTnmYKLgv6$TWvbPKj?lrUq^{gb^+~78lR443 zNh`Y?B=yL2oyoE0!5AkgYTM31OGmrXI-r2v^4F&Ka$l=3;jDXWeo5nj?6i$z@@HgY zf{0t7iw=4C2>n_GP0iW56I7vE?_+E0i9_;}Q8Lt7(PTB72L631ctdS{Xu2`?Zm(_4 zvIB&}D%u^l*n#q3#mZwZe#Xl_cBkQCYU(NZsR!t(&kR5F6XpUQThDRx-iP;M{;wfEDq?JT%dG{y=g67>fIG?^68%X9L+U0yQWpz6PK0O z&RaoVlj?e`ka>-Fx3T>=9DCfwBKCaLdZ@K?EL`;{&E2LGJ|=tu22b)7sg;nPc9G}^ z&r^YUunIn4^C&`k%zRKhsi2$$Z;z{}x0Uy8t$L!cAo9LzbUtlhtY0-E9hKY13$PS7{Lx?fWQKG8$2f>?$fRqoAJ ztLZq5y&u-e*Iy=SwxpLgx6@)TCp&(yooNrVm0o91U<$Pvu4?xrj3MB~-OuIjrG`c< zqa3&<4)b$%h#2kPUo<@Gf$|p&iE{VcC`M1;x%M2GWykz1&r!L%A5?Um)bt2jVI3=J zXk=2-7Q{d0>1=F$miXFaa{-`z`k$z(wjDnQt4y?Cfe2z zThBMbraA_RuT1e^C&%LijX&FIMa^4=mz3CJaVj0I(;}C@F~^79?^%he==Bz>hO-Ta zs>==6LV5Y-sm&H%hV1V45vF`zf7_6Vic4V-dg$CakU%fpnOev=&SkiNwhl6^UYsgI zmxAOT?bO1N`@j4JhU*~f%lowYOB1>LUs868@<`T5ZFUi@B@C#=A_t9Pte4AQ;q0OPb<1IW3 z)rM$w&!>t|*}@qO_qZtD(mh(oOBT>0_|f48h+$$!ylcMpy%bsGZn$G*m9#EF)A8QzgZ zDXdI?4J{A6h@|yCU`E{Nf7nUzdIh3$VPd-iVPS*=d;+2SU)gX>A7yYPV)VoF4qw%gn?n6&DuR8 zFXeHQszF`n`_T$Fov-1-)=jH3m}}BjSy}ljnQKv`qLY0GM*O_&J|#e7C<;xxRR?$0K%D> z1m;i+@~+=PF1HWlDA3k3#Q~;FJz(MJb97Ayg1XvOJ>0wP=b{fppn*f(*`F0SdnzKS z$FWW4Pzq^Qp9T9&Ziplg1p9r5_TIi*hHGXmUh%t_oF^^zbJxCwiT6wBFpwGOdF8wD z>6Ygd%f97}O)VVb7AEQV=#g+H7SBlS^sYup(`=Wb_!5gl>L)GMX9v5X%+TE{mB)Tu zx}vvIcH_%meDN^M+@|&Em$SRCURyl+gaztfELZ>VD`i$sQ#nOxggaeH!c3a0pfd6A zu4-xb1{+5ILP*QHkM_J1xMyjpR&_8uo@nKGrx`RXRKl^3RIN1);uPaaP?&s>iX_EOjaXnF3-bitUbX&gXy(bxaX!y)1yD`ux`v$Om z=rN!F_%ZYBCVIHs>a)1ENgQBGpS>c$pvkJI zus9aw+*rvmHS1;InA3sE?~-tUC|RC-LGd&^In2!I)n`+OvzDo#rjG5vr&(X-L*;md z-3)unU`QVyK{>gQ+U0Bo;^M6e*YU~%d{1w1NCn4e6fU8!bU zCjRn+oQF**(^G$GX}o&62$y$B5>|?e_yBryBd)r91JUEL(WLEMH>Yt@)ivCFNq6a$ zjh9D`#zyeSH2EDa9LMCLaM!8f6t>c|K$z1{?$>8BW-?`D3rA6J_q`6Ww! zXTh(Nop?l<);mtRfH{;3?09wBj`@e#3O2eDe)O%$ubBIw)b~i1$@{0*$n~82K&C{@ zH6@#9{{QE51HNE&!HmIX-P^dd9|1^|AzeUF)Z5mF}^(T)wu}T=FTW zXKCT6r|GQ+m`W~=f536Kb5++yVWXWg+af@Lj2%*9zCa;MxkI0@A;-MN8{Igh+UNtS zQ2~v2ZvTRsdTJ9-{0_KCo<6vVp>SsQd*@TAKPUj(WNjO!TUh8_`zohKOM@7)?VgzO2WL7*F{th4$B_3dfqx*QPXmT6WP}pQ8#*jjob9w*~?0+hC;iBe3jvkO1l;i z>ZL{x&y^v1Bc5OPh(E2keFSgJ$Yjg99E%eP8-P4JUVsLk(l2&=1g(V^t4{3qbLbC4 z{WoglB)h!xwG;hcfnUH~BZm8hjgX%VZ;Ys+CS{VAqP7N#q3|n>ZJlPDK zXLLU^2EogqI)=k~J;aS>>-$wAQwEi)Z$xC4Bfb6IrJ_|b-cFKK8^2le}GboEN7T=bsk{d6I5`Vpyc&)EE>d2w6_>< zB-K3*yrpvGqSvna3P{jf?6qIb_*{bk!sPM;JYYJpoDiv-<|XvJ%*wowsDv){CuZ4l zA7x}>)cY8_Efx2_CaBW355B3pRz8sA%oN=}Ae=I@SHAUBpw;gp;{FkWF@Lw7lHI$C zmfll>;cBo{JD)ftuB`g~II`PUxZekW-XwoK zPv22{&{AYnvABSEv)3QGNO=2pR^!<|GmGgJ$cH+Hi~R{-u{z9MNjDs$w$Rg7-?9M? z#X9vZoC{{${Y?%ZUSiz5ySaqJ7^#h(1bKYB4&#{o>-<~H7kcLBMjwE5qR=~;pocd4 zz6{b_FgW+GJBktGp|@e=xoVg#@Kis1O<&*f0F-q#=S3%nJ}t4C*JK#w|N4y3{tU3j z#OeXk9ZqBq#?{G(`BGUTDVH`=uR~S!xfkj4k9x%@qzuV;9Nd~IRwq2|MxkUZ z3JF>BrhtFhyU+o~m%!`{zA>F68StPc{yPAY@ctlwKcC(1>urVDxmryN=V7t1jp50p z>fP-)@lGZ@(U_?2CpyVriZ81dFu2y4l28#DvbPp4c%nF_T)u0DY#s6(i+QoM!reZ5 zT53&OnQTWljB20EuCXvOB2!0Cr}*n5Y}Xya64cf63(E9RqLalL^)VaI>JWBomEUtO zvOX_iD`3n|ZDIxP8uWRv>H&nVaA5rZ?00qukPxP*>`FI)FA$~Ud1kmHyp zOSAM3O29pEYwUXND71@?rTK@~o$!!zI%X9&?o!z3rWB4^Ui%S1$hy5JVKw4R1$SGv z=f@VZD`O zENE4YAzX|f!*u^>*P+jsF9<_a$={cxN70)eKqH1OJ27^M8Ci&k5;Rt=bBLl66;vz< zt?fuk<`R!LyzKv!Mq-(F=ZbLB+kgejM}A44mYq|iCcHcQ=)L^-AlSNFj0kRbxn!GK z{O1$i&%?B@w+K+l5#R8i5Yxpk34y=b`$CuMhwGLp>JOh4S4dVlXesol*HXPgSpb;l zH^{F9ytp;P!dg0T$%xt*{;dk?3R@O3V=5&Un~{yoyQy|30^n?yq%itn>qz%5sBA-e z#F1<50OxuQj;TKM7+Gz(&=DKY@>;WZRMqE5htl@IFF~+zpki%g81`$`+sgf^*Tn(` zNWw->Fy%&AXVRlt5Ss+xgeamBYTy5ZM>Qk>gh5!2GibWVRDF6GZl|vTxf~6uk_^EY zDI*eqM$F4ssrU2@zc*E9^tQ{@nH*56AJAz}?s_764o2>j*X#UPLlq#|b)8waZHAYG z$|WV*z@P8av6va;Drp|bUYX9Y5&eJTjKCOEw$XS8Q0W=0Ga2<7ddZ-CHd4o;4~I7T zFq5!GsQGd3?dZiL9naJ4oRl;D^zbV|#l1MK%crRZwCeF8Jqb%8`!SYVrWVKDTSqbr zR!;Hb#r@iQL^fLG$}4+E8^SdU6syHyM{iD>9CcK*)Ye4&=Q4zYZH1m7IJw`ti8`Cl zrtr2dgsK|)Y(+P~=LH_G_;7vPzjb0n8$y^e;+I_uu}D`%rNCTZHjiuElRdh zjhLN2T$6Cmeis(NTht)fFsjv9%UT76Q3*|x8U&Z0L}3joJjgSH(t*i3gGViA-k^d_ zBP%v+=^qd7MykqDXZs8x#;d7v<66HYWKWB7s^rt%CEc4l)?>;E=X}MnkvrUKuvHzt zYzf_)U&2=4>yfpMuZW&}=+iJIrqc&>9jB4jFEt{^bzsRNYOkk0*QWAkL~6$D{l#Gex}y z_rxQt)zz^CPZL$>(Nwgzot_%#=_2SLZK3mXt1lzWL&Um6jvUdFnBo}Yo%T+FdI^=x zImDX@)?Vm2DZ{P#{NJ$U**R?aHibRC_0^toChGeOY*S}kLYrAUmyTP1P|oQXG79L$ z>&58C3_$0RKGq^8bB$wRu&c8xo+q$gS>o4g>fRCGkMwYU71J#hFz+m@YbKgDxfW~L zT9Cbrn5gYks~XODXfgfYkYnB=26B|GA=ddDa=a>BuY2|(3uJewu^fv~8Z|tmj0Ww+ zH}HXUavN%%`xlk|cNUXAipy-kaf)QKI}X1muD%)a z9}E%?z#!F{t`M1oO-)S|A!v`ky@Kr&}h=V>C0%F$j<{XQw!;hh}9}_9V`jr9uxKF9D5Fb z6Q=5N`TRYmh=WPhUGvv@@Bm%}K=;GXN3+ThNR*p=drsZTKr&scn(4>V+= zZVGer%dP1Iu8Q9?=LJf84TGJ8{O9Y_w(9Gctg2nlqsIBCof%q&z^nLmyB1-JGXVgTEcfZ0Ib~Tbn=#deP z_34NBqg~Ih_gFeA#j$7$29e@>Hk23z(-oCpB?9lH=kVV%?~cq?NR;weaBjI;!)q08 zM&Jkg1M7;V5n}B3<+z7lp=dWlITqmEn)kgY3nOBRkFX%yztriDp)H)7fdp}qT;c3` z&Z8>@b0si!!LwiHIbqvnUmOy+%XG?LY=hTHCLaz?OCr`hL6#QI1k3uzSG|7eCd%lQw2^yJ<8Zq;J0FL zCmoVqFL;IH@ub=-Rb!q^T^Cf?yQlDJMVfju>)3g_jnyr>q>O ztQVS!gjScNPH+omRhtfTcG2z(mG%ZD%x9In-641iAi>5I&Q~Di>5%f*QJy9u06zF` znV|j(ZX4ExVyx*9vw7o(>`M1&fh%v00#fbQ&Q_L5_;C3v#L#N@y~jCvg)tvb-)bzH z%ft`KALaaxNDy$XSF`c#kX`fKX@nkqQB2@uMHJ!8gZR5dM$b;xm{}0sdi~`aMAx)& z^w-&YKV}*xY$|7{=o$nGJn= zgom!LdGFXzs!$+nXX)U`FuKVKCp)IFGo-QXnRxJL7G0MVzN36?^`0h8P%$^>f|YLm zM#ak3e0x%cro(^@%N-0trz(8SoN1_uo;HP}u+DkcR!K*tTpZuQaEN}snJ6(fx4*u4 zcXxi$PQx|vw*i9XO$-01%$nPR{@UTd``N(7Ha92C0tgHRrp&7V_Obfo2W2P)P$6`$W$AI@LlDcq>*yG-WlDfwl9QA zZ&n#$u&7!iI!@kqfTT-e0tDZJY{Q;6CmlHq7+~v`>pGpfB~g-2=}6AdqWeVaf87eeFZ&Mg+ zzGZ4?-&53wgx}yCZt?y?8lXDChs0t*A`0jH?-IhTdJEh;&DV7MyMzWi=HqdnfjG+V z%0&Z^wwST>8KXfui(0{(HtJpF_TX3H>)JYehgAC1TCchdVZzkGP?wJTHoG>?0_{cb zd8R6FCp4-pqCQdgnkp^emqp#ugN`qi4fGYvf;&faP2#^l``PzD4rH3hJY&4CBJ6z}Ni`Z3*>M zA29jQr^rsXLSv;cq0s%;KEc3SP~8cwwnSk1tV34CXqe{Xf}-u)(7q>>Q_f#Uw$qWY zIrr53E-r8-?|W^HI$0cg6t?YxgYs_JMc~?lzBCLsaWB5l;K0BofCcBmA>zD#59@N4 zMgqh(`>9Y@)|ECfyMh<$1k9$1*!s15EWp_l80l} z78i)c^X;6;IFEH@#4S!f0-gl)qPg5nt{Pi$5p?y}+w^8*fYt?v(|%s`mWu=EgjHwT zm@Ei)SGjQGMbMdAUh;B*xTwsqYj4UBH80tcmMY<6R#Y%=Dgcw|iIg+o2AJK^x+D3Y zQ~akhHh*w_vgVBa1n9?X0WWLy%`DX;_4*DjQ@@jTgJ-mc=8d5PgPxvvIkt#?YB3!8dAO)$GCUD{IiVlFPlsKvxjl(YZqhWL}*$!SAr^?uE^R?(cRQ;RyT@g~?WX}F(Ia-uPb5+| zuZ(nGw`eJJ8vV_Jv|`V4F|I6;+QX|(u2Gt`7Aig3Pdt1_)m!z=vGH7mIg+qjO&%KV z<78j{x7A>l+0+6gm!Ojw_%^D|0BTDU2c#W0gBfKQwEv54ihAWE$h&yFI0a!;8eUvH zNjKvj5U3{rsYtKYh$wPmK}b?a`T@}DOb5Yj0n%5`II1g!$7-h+a)2^ww3U7ykSlec zh7=exAt@;g0;l()+(Yz+ghaJ}3&CnY&VDe1{E zKlj;nX#mtHVDUewQI9DaHPVvxAR4r#$UtojYzYUCkE1qU9A0eq=xUkmsW8Fe`trHZ0q^# z66L2YZC+J`&dBlmY}tAt(+?F>cTaYl_c?yWBgy;w*Ei06uJZWzOt}MV6Gy{g%hN3s z%DbBO@kf=O%e=!o$o=j=N%&GsRDl%Uolc6TIx!%FP22ZjF<~H!yG$nNCzaXKRmQR1 z$cAZt2@vN*XJYntV8ph36Z1LvrHndAHl^r2ZMNaFasD4TM_HG>$&^V~m91j$?e(P_RU|>*3un|7})ac@?ofYUWtxjKUIz3m_uL_Rkw60M(Bvh69R;$E`FDX+# zZ*_2r#?jEHFkXhc*?pE=6y!bU-jpd8l0@+nQYt?=YX{<%}m3~L!; zn68(F9q;5O@NDYno}BAkQSR{_sB=scPkAEWP^1oH-lmnm-@URcqZ@odCx$5iYX}!eCE~7{|?%W&fnk#()%j% z;2T^j0oB?K5A*_f6e+>kwRO5q0t3olD=hG$49;^oxBOVuWMQ|Ia{6dDDZ_;zc*qW2fm zBM?7@r+L8i-7)#!>vVG_+NdWIPwGx#qf=C7f08Rq7&xNbF>o7mB@H0CpNajNFAvLM zP6P|W$17RO2{+F3Fz+e^Gr#z4n_d{xD5AOc4v6R1t!5>e_LP#cd@itwT-x9q*aOcU zJAZG~Tnrn}gu2zbIzu*19@bfEEX%$O2tWL$b!)^j?RCHVgcqYo-(nH}EgND>u%@GO z(GiQJ4vhT1BPGK2olUZnS=)RHE*KuJ123FPM9Sib7+OK@{~>gFGXP^1y_6>l#zbo0 z69W*Z;@qU+3a3RR9kM}cPWm(>c8agSMIQ)VSzgtT^^i0YZ14LN$$emqVy-R>ys?=5 zdmE$^Z0H4^<|@4@0wNBQ~?i3BT+R}iOL47U%(DSEV!Q67~IKU7=(PLzt|RX+Rt(j#Zg zOK;*;MM~2Al*hoC?0Wtaq8sWc)3d@WUt+I*GmAV5@|e&R(KXSifdATf^1I$cxmPu9 z6@(CU^EQGCp$;fehY4$fLA_6zz9QZP{(5>Q*Vn*pI$V2vROCVC08hFwTzw4~caIMJ z=>Jb#L3+CFgPFm=hw!O2Cb?i9bMf_%qaTlg0(-g!7Y#H$$eq@w)4FBYaLFriKTW<$ zB9?CC`U!rXUD5DOGe-q50W*ZOaZFj)JY6AEg7zAecGc>l>kiKBO&T6r6sals!?krx zp^}r{GB1=noK*y;+%-KLxL&1GoJt7SLXiRRKV>VuRI&ytJcQtZMGqEKI@b4hE5DP} zRLBuIZ!G%Yw$is99DMVML{ThsmnQHOB_<^EXa0z?8h+Z(rktMn*hGbMDe<$Y<+7e< zQweOyBw++)>GKNaxz+j6Bd_VUFTOrj$*t59&r7qh;L$XfsY~hIjLsusSvF}&|7;fi z#{{}5g^4J$55AMbFi}4sn?s}umpTb`%cL@E-74ve@<)LzK8?L#>V#={TY z9{+AH;)%A=ATB&dG921-e<~7TQV<#dnBAsPP4*tUq*dFvzu_?aOt0}CpJGV>Yqfg4 zQJCiaC4LW+J#YmK4CkK^F)t#P-c7l6$VX(Qan`}O9U*xA>=s=V_rsf=+q^fo*9Fq9 z`t0R_puB@^9-KisMQB%c~sKC@8 zT#-Cg%v%f4<6XgkK$buNU!xXQedP3mlkUM#f1{=9A_Jp(*({OA;#<_R>bgpDkYayQ zYHncw+oxIZlFE4h$;4Nu^pQhN+ODKDdip(RtYh*(LqzyeK{2J*s6M04o?OqweZ3pZ z1AB-Qff_T5pT9kwKwW((`-ogEtJv;-sp)0Cskg1$W}ZFT+)DQvSf1)9Hf+F@2N&>m$bKN z%e>gG2rT#+z7oXCrP+a^UV+DehmQ*8EmIDJJKXiC?auOa7#PY^%N5s# zW1c^(qwlRpXHhNjzQ|?Fey(b(sW4YC8de0d6PC90M7XJEbTYDW6c#2A{M5g?a^D9@ zW!3ok^JJ&$jFtsEfu?6z>j4)JOgXiYB6SnS#5Zq#><@h?EUN;HmyR}{?^Wb9 zGrQH_y#Q8rZ8j_`4CgLRjq?@b!rWJq(~uzq&01)#(!P6#mBv@>{xu+wf4bB8LQ#2q zeUAJ<>(%|xk2Du^Ws)7{cFA^*FJVS+t1E6yuzMg`8C3_?FHhJ0CgZ`i* zFJo{Ce0f|#44J=1>y<(jF`u8tQ@cEW^l2E~dSGPQY`*&a zZ$RQ`{C@$7Am8{2^X~4*n$rQhavS$zgF+^IGP@K27->y`y@aM_-CHqG*@)Sb{R_I@ z3pwQ!I{8zA*3fzGl7~EX0Y<-9VYWc%Meo4TaioLU|HIfl!GCfwX{tG)R|7 zqY~26-O?@Hr8JCm2}pN$H%JcMFd&@+48u?}a|isNbMHCV?>lF$AFRbNzkc_-_kQ;C z?AIz(EpmL#v~MTQo+qg)Ml%ZjxTMIOCXe>z?}q)?#@o29?Wr28C9ZLY$;~-utKBK4 z%@KLdEwqS9w4oE(cBZ-IgH~=OE{e8XRDF`LiQs>T9xMLjAcM^r&u&JvFA8BzdXP1S zwXogK3@p@&*60{Q8_G@d8bupI=>YLPxcDpsh0IS8YfS-MxNKUh8e_v~LuX}EIx*8T z>?^L2@Vev4j+sgFykuq$+XmHso>K*+jhefA88=EiSiN>NK8Y2A_;)6E3lyQmO^#zo6msvkp4<*Vxh$FrDWckIRhWYd3 zA+oG^v$4_IG}RwLwPxG(D$!lp$3uIkJD9*GIAB{Kz-b|0eiKU|kLH`00ctUeEZ$Ik zfdVfs)6No$L-SfGkgAuwHGejJMWMC_vR2DtLM3&+nk}6Vy4st^&4|ouzeAaZ6)%L7 ztWt2^l4@ZuEew^iq<}HK{!eaBow)>zNtV>PibW+3Cpl>fikYUme73gB`C39lr<4uy zF?U%Ke`rJ{sw}d}qr^ZLBhACz56$pII66tUQhQE}bX^W__qz{UL3nSGhl;>2e)Dmt z2qM_TS|~I2?xt?v)R(ecIgMk@r$1iWh*kX(xW81G7jK(d>U>z7a<%afvf&0KUIEVc z#r#7FEl>X^m(4NT{2=NT+fp_bu;tO|lmXoP)FB$7!ypK|tZEcuOD%SwYdrqCT8LNrW1d>pR}U< z58Cik?VD-}Uy-ySecM1aXdcumokJ5OTVE14pQDS7$7}Fjx@)s&tr^vCi*?XR?@@xr z5mN`~>(;y^^DyEYVwuN(G;YF*YQ7Dz5Ui;NJi+q3)xrrJ3R_RY?BGF->OlD2V$>6; z7h2@m;6jAlMgAk&%N7DKO`wWx&lX{=+_>Bn$Z!HH^#a|)o=E{#&*s^%?WjFJ+v%B4>il(CHcB*LBQ zsj|$bIhruf#&oD!*NZK>{*=)hsdYG4IgTQzw0V6gZk|I06U+rd8;sTVyJpNw8%ver zQ9|QZsoP-w`roPm^daYj`wQ-pI(in+HC|2YT}LuDv9R78^xoZPpJd@|vj2~;?%wWy z2Ky=uc?^!A@C`SARj92%B|-5UiMo-=bKt|hIQvw=xIt%uqGKOf zo}!thbzT_y(C1E1Y#_SJ@PA0~Wd45%p5qHEt;)!LcdzTp1g`v4k4}xvl)Pd3zO{li zcmQga4fwZQ=sSMmw`|(tF*+jB8;?wQBYi&i?2J78a5}lpRAad#8S{D*FPxm6x@25~%YTsBRFS zoY#sBAG_^w(@!;ps=6J&#-(2PeKEvWdIG0)ePizRQ!aq~ZFH<*ugAV)K%KT}!1R?P z`T&{mmHsRJTH9fI+1V4Nmc|`j;I7f~9aTeRNC)Q~>GmOumrueUbXgvrOtYuXRxApz z+Sc1%b3lsc8`9&Pq^Gwx^GpTeQMZlFR@MGzUj3JGAFbwGk3 zd48v0-C@YXaDk3A6wXmM!#`pmt;@mqsX>jKKL`JQkY(zlk2#;^c(h)hoh}7S^T%(P z&6|KRmD9rd1-UmeGAuy*J~jF$U%a%+PI5u)xgZ=pm%}=goXtT`xW>}?qXVJ4+Wo4) zU}byt$CY%JDMUqG#ksZfR!iHuse>q%TX?aP)m_dBMETv8SnXDMMo8Fh!@N34mF&8b zpEYG_4tQ^D|6+cPR4(S)T&JMqEzCwRTf=<@<<33Cs)A~v+^BBHX}(FOVpTBN6{gUO zm4-(Ws`~g`mhD!fWiw`;JYYkAr$Y`K)Hh$*pwhUW;Vg`2-D480*2($nD{;hte*_=0 zB4(kFFy;c3re5>@flxTexuo3wp??fX8K0G_*F?Fp;1Lc@eqdzwqm;CRsm;49D+4wyWHmq6{Lt4b_7|9NSXa`k>f za?Kn`xMvqDvYMzTKTY2GkJyO>p*oHL?!#%-qz}kpZ1(pzN&_tG`DOP zC+CGvx8hez)meTy`%Sw*$=Or{SwfYxm{(mBp5&*TAZNegU@z(2Z>)>W}X1A`QhsN!{CZFLqS}M18{lrzrpTwB(iC zA5ue1!7sL(3>$(H#ApZzH&H`Bw!Pz1VW9CYx!)9-$V|28&8xVu*IR_6qUsi+@pL~H z(YmK!0^QX@l$#^ff0Zjf6fjU#-rH|z^q3R8oZ8&>H~7P1p`Bajg0=8eUOgjvUy{er zUm}oB&R9bBrKsjNFPyFR;`!8fQtQ~Up5jzBje@Qwp~5rm18eRM*L~7yw`tQ|4%xkf zr(<#WW#jGr&?m)Hb5wu8yuaTL%31!_`ICgFXN6Y7bm$uVIf?Wj~XT}}Lp|9~^=OnV56AN-EGCcpC=C#(ky z7`wf_fB%c?$8CY*DNl;oja;SvBg*~gWMic*i2qv}$4v^xa>Iu~8)ES{A7Q@14I)rg zpJID2bJBl1cyAB8vUoc?I3Jpj3*J;<2!n4xq4jrPNd6a~(A4edFM7jJe;bxOPetv! z-Aw=QnNGJ~wL{!u3(klkRq;?1BEquRLw`H^XQM}_O$?6 zt3IwyMBTBd$HErqJSLWXMHmWBa06Fglk->GUqzYOHmwf!y-g?ae$`5_$DKy)bhxZZ z_l#_^Vj?O6wK5m^(&7d&cTu6DigCl4PrZ(q2k^j!vob1uPtl$)9mxF{u7#F~6w-X1 zKJnoe{f)ZCXp~i~rIa~Ctyli9S(Sa7H0t6U2Hm{I6tnuwp z;*ye4dod)R#@*da3n&6BNy>b5fu3SFiVA!^1^z1sXX^RSqU8_SYKE4=C&vuVJeoSiW! zpuAch2?;G9bH|frhvXUSK$(F*OEb@aO9o}NY5LW0_w6JlbmyeDl<0-+`FIf2^ZXzr zz(g)EmNVU@^uR$$AQ^1*anC^hLmPk&vGXi?e#_0PP56cddA{;oC*2D9n_vFrC&cwl z-vPwZK0B8LZb?bVG?*ZPe7B}gfEp(R;k`mKx8P&iE0G(f`t|q45v3jol46A{owwsUL z->zW-CH`SJk+6k13QWI}L?uZ}+;b;b&8s$C1C|xFz4DHVouOIP^NP9>>yGP6DM*@M2De^Lq; zk2JG{XJlLx2x}}QIeI9KJk~?8En!o&oh-Ogb6XZgEEMqA)~jZO_Y(cm9G^B4U(?#Z zuxJk-H9O4pjmamf$!glaXh2z`6WZfM2AAz(=Czn^)>*1!ufUGB1XhNC;e2 zEY>C|G#eT1C{FG}s!U@pngm@z87jk|W1}I^aVt2N%ArxWe}_nu-tO=gSY2YW?j`7?7S~o*udJanX#>7QBAP$1L@1= zUGQ^GAYDwp6ki>n}ax zWIxz{HtRiIw$Oz}EPGO@E$rgIDkzAdFO_&pwkJH#El&S>^Ni}H4<2QNZZ+_}yxF`6 z%)-SUk4-5Y(lAzSNF>iVtWl>(G`*3IBDz&SO8kZta-KSw*(yw>0~yyA>+tHy!*?v5 z>Q~V%4zHyaYRQ%VwDF?wZ#sSG9edM5Of!Hbw-6#7w>w}_l-=;mdaTv5(gH(?t6O-W zj@=-_G|R?kHk#Yy!CP>xFZWVC_sfM@2=DyyB-f_hjD!I0rkl#kQ4(~`oe`Te-z3QQ zN44RWi){H$HDz{dPj$nXQ7sgb5{9m;%LeeRCcIJd6fKLH;o5nPxkyxv%QYi!<)<5K zqIE`zc!tB9d2m(>(#~|X4G?EiQzRYxB6^~jfb!9dexjw9N%AMq1Ibx}{T_=q`lL-Bp|ob#j_kl?i1%6j|i z?RCmU%l`7!<*Tl2c7V{n(eBI|(-DK6Nqcf&~RUKrd*^>C4}=z%wi ze?NabXr=IW+b?S1S^-@rZ6$i*+QBJv&+_16FvT6=@~wjzFY6Sxs9x>!b_kOHQ-&?Ub-sCH;_wd+juq0eGFb;)sRV>2C8BqRAB+EW?3>xvQd z2lq^(hPPIj>lD(5$X(^6F~bT4XY?D)0GU_b4O(EUPJQ{Hzzz$HL})$p2kX+N4{KiU zgm)ZTel*F^vD$A>ntIe&C%`;1*VEiNUKbReYAMN=Ut}g}AX1 zxHa^F_oRgU2x*oLVk%aq-fHi$G*mdQB^D(l$Uj%aDaG|T9jYd}H0_HbK3kL9T`nov zx;khDWL*i5jv1wI!%z*3wR%#IFt79d94@@hNj~YQK1-p}Ef?#A);*Siv^dB!0h3U?0XY{brIlSDq7B)ydid-aI@=+>K zrs#C6yV5fZ2Z+6QI$jPy5wpVL&w#U+aeT{*8izZ&tw=2QgUR8`GF>%v^nC$+RW#2@ zG^hDJ-m39QXzRuPvquLWFsuQcdZ8oEpQT`<x2+Cfcf}3X{KY)58yf9)b|*rB|!67S>C0 zlS4%k!_D*Nn^WP<5>850@?4hd*CMZ&x=@0UzABt#Y1<*P?4E_CUxx`79$w>bBes2F zY-w6B4;GFqMzk-za&$nd%$~xvOEgPbN%Fs7aBaX5%rExz>h$On2&|^^Pr(g%y=36M z*@&!V;XlckUROm5V~Rqq)3(uZ^$n*xN@Z4^XgO zf;IKK_gNY!t^@?i-!%Ohu%OHO*5UWMM|Io{Edw2Ks^kO##t zBUQ(D)(q-8G3%m(P^#`K%8{_zcj!p=Ip;ZV#j{p%tTgaN(6!w`W1Z{5A9gMI_ajx8 zB!mqNN?58}f1Ld!(WVxo*zJndWze|ClH2Z!opCx|mGSJnX6+NDKlQafhWN83FL6F^ z7mXZ~9T+fN+2U2yN(1qA*F}S>45?}7E7})?{h=xZNPQ}Wmq|w*D2=M1R(TvD>rBhH z)YAc@owJA9=v?&uHR8(DV?+QB9Q{|Ko_!x`N4kammNEQhf&iM~lx4xw}7EZqxl1g@lHo>eiY zyIg5;&bSEY_yI^q{Z+yyI|NeIYJJqGWbSm3mfPDF>?}VV(ropFRhi^a$*+sTH%r(v zXut#dJ%i#q8N+>EEwttx@d@k0od2|7BVVqJ81ymR>}pKv7)?P|9tgfAV`w}JC^Azq z69aji&VO=1W-Trt-SwIhWVtBr`F!fq4l@)2;n?()^Lguvai`fa62~2kkx0yM%PkaI zy(8a)yk0mi?)5qPumEgcvdrC9yXYu4tpTg|Z1EKq$?EsAu6x03H`HK2yo5KAMA-1ClW!ju^IrCs4gc8ROo?Fx zvoE9#6c1fQn;Of>pF3U7iM*KhP-AJayeA~Dd|8|Mbn(k}bIIP7*C7;)s%s|F z$+)@PrWFi$;RlEtE;KCHxT%F{YQRjFKgPAcDGg+8WxxKedDU7 z5}&Ykvp!teD}&+vI&<&f2R=T*?m~$r3|W^#$*m=jxyF{WpGkvULR2qwi`{y7r4z@T z)By;qN;k4;HAYTTHTTWpq2|_^p*^EC0B7~)fyCsznq&F}nY^73AnV-g=e*0(y!Fa# zv3J8h_V5W@CVUe{?t(jYnZLFr`E#NDosN(q0Hc)^dpK1j-Q@B7%c=(@S1z=J@dKrm zK$TsYN#nyi%SmgO`h$<%J5PKvgY&TluN_^s5UtlEo<2*U!+Bj4j$IAmoHgNUvqiJC z|63ysyTe;}gWshJkah#+JiaLaTnqjB(`#TwIJZ%P*ruo-57$J4pXJ5o5h!YcNgaRj z-jEdow^Q&J7s;tQ2F`=zgQm2LE&1U$;WL*-9?OHyDF?%35F1;99aqXr^p5Y(0jQ<@ zfXfXcYAQN=NRq5qlXkCPPl{qkh+q$N4P-5ks~4?M5i&(HVi40~zPsBKe4_k(odP2w zxEp5_@A-44U_)%Q0{GUrCO&z`Jz_Jfr!Oq(pGHsO@?A_@#SIG--B{9 znI*x)1c3Ai9PGe`0cjnTxT)W^B2}l4i|P5rxk#n=pH~k?rWw8z70<;autx+7e^^o?W@v^Q2jZl`$C-%P@D0(AX6ML(+{VR_aPoC5Y(wwb%0I@;Qc zIg)4g7{4-t7p_LOMJDH&#@vBtS|Ju$J~?92NI=d@c9Y# zx3!IwOPB>oEW3Rs4%XhbsnCS6+vNto6Z5UkwX4USV?K$`a-~4Z;f2)GPRG;zuys(3 z3N3@Odp+%+#m$LQhe~M0L@XG!2){L2nIaecS;|eGV?C9=1QxIeH4Krfv+)-Vd;Ey^ zz~-uSknrvqcgF`9-1(8Qm(nsmA1E3ymsR#i%i$^V3?XFaSFDCrKi-~fJ;3<&3Vv6j zf*K}g_1rIGFO|0A3ZRg3=xzv`N5~HKF(sL`ib7J4ybJrzIAuun7HFY$iql~fs+vn? z)-Q~WF7nv*rWt|cS;Z9e)|0;k!4Z(N>nW)GnywAC$i2UAd31L%hv?b(1qBmSW9~fq zE^?nz#82ZsaX5YMId#rDzROVe6UGy%Q$WraBiO2|v5n7O*EYMA_bD0PJ|77dA!|oX z$q<(1S)X85(ieW>LaC*`T^iKWTyCC;^*tVW4>e6+Jvv@{dsasK%k5k@ z@!iyW!>{YRJRU1Oh$F1zjfME%r4Mp{m4X8vAGbfXwthL=q^)R1WQZe+kb9u(g7+>G z`#7ucSnOjR8l87YA|%CJ-Y_Wp_hXyXKqKjQK8%-g%x`4KLTJFrGoCGhMoU>|+%%aV zqY*1po_RlJ&l+b5qWK<(o+sks3Go@r^~lkM5Gd=5KQ6?J`t=+;M4)2Fm@aepV~Cl< zsIdfbrOi&jGiz!%=xKtMTBPCLfSO%)NH)3P<)b&Pr?tW7L(I$QjxO^x-5VvZV+a!) zuHSVB7;CXvoQ~^vlNqrHUUcW{;s2PF6s`ArYnLtx+BGfX$H6XMu^CbnO{zFx z@7DZK{$7-6Wb-7bd#`IjILge5H`UG)SX94f8@TLTC7^(EIU6joRZ1%Ra94qJ&&Mwc@dDZo{+&&`&Wc zJ+(bA8b#3bM+icrP15E83s*8va`@w8SSkR)g3_4eQClm0M^5CyIe?|Z;9mngBfUDn z=7Y&a6VZ(9F1&a38Bc1i%n#J8(*phEzva|AAI1hN1B8PNmfrscoeV3&luVZT=d+Z_ z>k#_95nE~iZCRi4amw8xiK+B1kehOb_BnSGun-^)_>x;{n|tSx84m58n1(1}G?Ime z2iLmG=#$%ef$gq6R2S+Lz?Bgk4a+nfBGyy6O*p*oFl)r!5M+d;-84#&5zw1#RSixD zThMqn>ZAh57ILbnt)FmFTAM*!RFcj`Nw{BjR(#X2 zw<(^Hmct_}sPWuFwL>|3e|j)8fn)ZNnoo-A9M(#2uAS~ux3@{=cw&Xno zObsUO=s40vI!cQe&L%m5D2KLP3XCf;GRV?Hyo7hcibi+?)#3#ra2Djbujh)Hc#)@8 z0Au@UL5S#(Wf<;I3_m%!pN4Hc)qW2tE6sS4O3B6AuETm_!+^{+^= zekfJqon;*CDLgurLN_%lkL*-7KaDSYAAU8?0`ZE%$AJUmu+jXrI5rO8!@72beRwf8 zp9wL;n-5PMH?zQel4_PY=%ue2ddWwKd=27PhJ)klenX1bXXaD zFr*_yzHQPPix%_fVDA;cA1nX56c(sP6h&oO*{3Q1sC=t?jB(ieS^abL(G(cJD(##+ zik9P|R;+#^l7?|+qoi1IIrv7Bc;E1t(qrBar~95!cxu*4DCNQcw%yRO^IBF!7c0K7Bs|(p zcXmTW|IKDlhV;YxkJ+3;G&N;z%_jWDY^+2w6SKVAA0uaX@zjK#&%_c8N({<&NRJ7% z&%yHF2Z;2rV8=UlMv#VMAt?=mV`@iZ1Qmm3zWDMV#Ep5&LKQAVKzPF`c^V4L?-@8E z_Ifv4ysMhwJY!y61f|#={tS*`y;{b^GLPsO+9$Do>Rv3Ixn8RD@-%z?v>*(8ng$kK zRk$M5o%UjiN+Kf-xo8^NHnE3Ogy#3?By2{BZVrA2{7z4|FxD6yI&;-jOmnhIZZ}zV zZ|dY$*Ca)!BK<7v@>;e@-06uwWpIJsT3kezSUbV<%@3rTV}n78mj#_9TWg+2xzny+ zCJgBsL66-&e4>sj8)BXm?h*#WCpOgIbmF`WrDx&bOYus-+-pHtbs-~UDUDhv$9AaG zwCp%DXP&rb6V+OglZDT3NSWq+sUBDmUPV}?1NPF#rWr{+_Qf-^2Ny55zt^vQ^A$B^ zf@SIOb3Q0kP>DPBTA^YgO3zk!85|*2m-3qyu=bt(V+@glu8{pM2a_4s@ z$vOH(a6DT$L|Yr*Gm^Bcaxp{QGK@H4vM+^t%HV6@#rJFy(gV~F(~gXU=8g<}gYs

^SrE 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Ðpakebnu8EF5;*|sa| z!%bF9YFCm9kh|H3PS0!4(T&_{z6n|(svV}~myAyb+aX7pP+rKOjuhTAH9OXaM0diK z7W7J+sTIqcjh>%#tIr>PmM!u-i*oSOUEi_Wn|TWxMp!9H7Wb4L9=QUl4Wz{x!qrK`#KG>sf+>g=pPo!6FrwBw4Y)=#4A)P z`yp+6kb6-_KXwz~daqn1K8m-pvYdi|1Gjn+4Ex_&v9lN02-+=Nj;krF9Aq>miJz*n z5?LXL;nFz|e1&bu$_nV`RX3G`n7Gc&1YJe-PQ6Cy>YLe0fodzENkj;*_Zw$Hku)9s zb7&8F;-Jv-8OaG4cg2`Kl6&X0^4+6qRW+6hy-U$e3oK&f5hy#Lf_{Vy2x;hKkuoxw zn+@0F|Je4L?5Q-Uz+t$J7FEeuUw2kRt=&WbVgC6y$71`&1dDFZ3`>9{z%1}AoXtJ- zE(0Ai@ek)5)mQo~iNp9Bsp{^JBX|_0FX-I=a`=V?3OB=#ifPST?Yyg-@tejCQeVsu znaa`L8lpb+yBHi*KJdIg8qqLI6rR1*$gqp6Ync!oN`R z;5y!REj0)J%96bqWBa~g{&*fu1|5B=#USI`)`2)o-Xh z)lCkbiuqFTCj={Ji+$${|AYG*(u7dpFGvh{X%zbBv?5ONEwsp%v&_F2C?lA1v*^(_ zKgCjWk8Wp1id&!aA@nFs5OO(kfKVcuNL{lGtuffkj6+T3NnJq>x_Fe*K|{y;z4EDaPY70Jlj0_M^!V-D9iOWw8xkR!T5$zO^RVUw2xGPZ?R~z*h(?*nJCy9!b&F+ zh(ry81b(XD51D}Mm@U_%sG1V$WY59D)u?}i1OC%T*Li$1tZqP+8Qbf)2oBw=Vhe1n zWsKqvF{{6BU#C4MPVZ%Z)H` zZDT=oxW^V0EeP;;BeDwEoDleW-%%)JFgMCoUDyKKg6NxaJ%~8rzPrQX>C?f9zqWDX zw#(q5cJRG;jv9PG2e#busR(T#JJtsC#j-qJzg;gF75X-S9LAuYZRp?9G+bHQvm{EE zF*4of*q(ukmRV9Z1E1-9-Q@gB(+vN0M=? zg>mUL)5i~u9$QmM9LpLV%>c-Ymf;7Kv+_R z%kLhc*x1&j!KQe}gyY_GJ>RLH$yd`aLbV8uS=G1odI0KO4dOq+X}?BTd}I<#){Cxp z>5qc;n8&G^Mab?6gbz}IIdr__N^T)@oBog$N^H*^BmVwqp+@}n1 zGbK?WJU&}0p9PU8_l#2lM|#>J{zEUisuXU8*v6$fqNgG6y_5O-%L{(w(?_}tH`|1X zj?Psq2mPtbuHnn~1!0Rb=unV&PN|-hNO~+dIe``1T{>Y1NETcp|Gz33h*5q2W?0t% z`(5t^{3xetPgC~%WD0f1asc$dpxDYsrK^oA3?)lj0l7Do3B1R! zqqfmiS!mbg;7sB^FRnXrSJ0D9a{vZdzn#v;!(jMz#Ff>Z75tT-I}=@eRZgW_PpFz? z(8KfBhn0J1cP(hlb4=!yEecZS>1Mn5KVR8b_O-Pad4#lC?XPspN~-sOlcV>Uoz|x{ zA8@O$Z!~}fzy&}$71YX9newB7a)F8h@G+ByBT=htKU#Q@ZK{Bt?)Q+IyE? zO+nZDJh_ivJ$522f!6+`w*y{a{GVC2~qt z(s1!6%o%Jizlzbx(;oZH*~0crI8IA zZoNP<8D@XoNX(Am_`uHfF}-_5^zA$Hi6$)Vh2ZkQZ7xWWxnM~>@JH`8iEg3JD%8f3 zcAkBd4LI3uY;uZ%-KnFHu{B5* zR@2N>XMuujfsAUja$4%C4&rR0-qt25WI5Sz$1I@eS)6+6<1_d!@J!%>8T_wJ3 zwjt%F8QWiDssGBxIjco|Z|A#YcOQCI8lr!j50|@syTHWU7N&3DvfF8vTunBx3^GS^ z6(|mF?G^9Yy$d^U6xrZ>Sao?{@iAGx*eqt2 z{JusQ#WdBd7H@0msLVn-D~OE%s`frTja{f^cbu+`ckrcG)?j!r5zU`IgBYtQbMAMw_<4EUp7$(X5;T@8(0qRz3s5K zr7|9kFd+qgU#beltD>*+Gq-()ySBYYNF=uYHq^r#M#2oX$06?X0rJBkG~A1uLWr`x zw~T>JgM&%6pD8jl?#lBQBpW1qRUA z7N&5WDINw|gV>g<=5EZdLofajA6B^uHfi-n6XK}>s?yFEQoBQIw`BJ%*6)+=eAKx= zxmmT8)@LwkGEs`TY!pUznW2TNoRAVv;|cDAsoH#YpWM#a4YYu%V&6u1RA2U=^hO4R zMr~Ef07Y&LpEKL}e4|QQo}Zr^YAmEayn+jbjldK~jnCJ>uMZ{AuS$L&hOZnit~ncA zLkn9I9Qq#qqp*sw8Z^#rZd2o98DS3W0Yu2gY5>(SBDZe!c( ztd4uDjzTx?6&61F>)!HvRlH#(J`&|!9*3mQ^F{MzrjcCgJ{1x^ZOUU9B@Y$b0v+mh zrm~Z{rSb@;+&UG&&$LNhnYEe*JqmMoRX(od?+(k`$Rqc z74CVJ{T&1zfju4cVJId~{AqY67EhW>^_yN`E6ECc{Y81336w`R1OAzaz1?5~bG&=) zG=Eb@)sHisj;O?cFd*3Oiv6nx*#B%3_73~aM=k^G%GpgH)ft0EmKg)9fmV-|nJ(;G zc$*ts?`N}vNF^FxHr$%w83HPU>zKR4?!gM(2jD6dhfM+R{9;e*)x9M3p@+}c<1;Sp zI_i#;)cI?L&mEc9xA0(dU3xNM(>YG}sYFFQG|E)Ms`!#;~Pubz#~KCWAz>-_YO*KL~= zr`c_CEv<*Ip?Srci>V>ep3(NzQC&X!aws9Wo6=7+VA{qwY(|ot04NX+f0fq|Gg7kg z(?Ipr7ha#lorWj*8v&CR4~}cSf-0fwGH;!B5`E(ae1W&m-BdRuQJk*x740P}dEU%! zjeP+idEjnIR_0un?fs39iw@Aa_-O{GWbY0QMJ9e3YC^%EAke}WjtLulucknOGCM51 zRrRw=2^evjT(Lmh!hh77(_n{0pb<(keD7|*lhP<^+=_hVk_4%+JaEEPzi??6u7;tH z!S};j$Djekk*%ippDjipecFDv9r^UdcN#HS{B0L~iyYI$6knke{L1|KAQy>cH%JgJ ziDR=O=0>kT#ZOWc(g^v)^d|Mhbn1!mWbagPb_a{vYVj*_&5vcjTEhD;^~8XEP{#z? zs~TZ*I&SVQ0QIZdL4b?59aD*+er;gH&a;>O4IiR}A(g#> zs%zTm*z`R1{BE6X7GIp1uI^qFjmit&eNK0pmR^5e^oslemX?epyqi0I1AMwKEqi`^ zyqsX&qhn%HFrL4|HlNPaRoJ_}2$y`3WqU|#?orA`2mB1Dg-;QO_#Y=FTg#{qMf39o zX;T;#9OaUzectx+v70@tXeG|+SV*I-4JC$82{?`>MmDI2E=74M!sx44Gf;JMaHDS2 zL^!BKd0CAm3ItlL>hqN}v~$m7?{{XDdsy^;W`K7hKjhblLTaYYJeX4V{LuJz;HRB2<5|PT zYV&f_E*+S$I3FmZ(J{~Ht{wq!LVi2SnT+go^Bvhq{_sYZUB10vRyi}T-*7_dIs;rn zaKuf0%$nV@B3Cr-(bsrfFeGZHcG=>4qSld8X6p=dZ9VH(yj^GQxS=8K!#UG58k8_Q z>56oiLSmV5XAoSSHCFzN(yJex4y%(xp~zK_Wu5|Fd9Hf--6NXqe%1h}^P zr&=|LrUMX(_CI!x)BL?O#fJ%pK$*s*17&~Ajkjp{+p+nmn*zf!Z)hE-m5G{~tTZ}h z3o;j{gY@IUmFoC}ffR7^GKI1oX(Vo-qFL-3wFdFHci5DUE5j!9bTpcEDBEEah25x{K0PXp zWV$J3-f?m(bIg1@dZmq1BOFc7I$4kjRO!z%S;j~kaEfW2aEhsgUifJs0aLrN-9_-b z@8K4tKOUCdr#s2sVv`j|Rq|6wuQnb}tI_F}n_lcOCl93B2}mcVq+R@mwD4ne2g`+X zsC|QuPd(w<`itBvG*6A=yG(8wapXu^b<@rDviq#0h5ni*raO6wvEdG?KAz;1y8n;8 z_l|~hUmJ#ZgosE;B8Z-*MUCD`MC|AxdbEhqd+$V$5Txi`L^p_G^wAO$z0T-E^cf7s z7>wb)WuLRpKIhr{WIt0eu?q2if81#%`fK4b3n5UC>&eRAf;Q_)7lafMyK~s%^Wb>- zi@5K?-q22sbB=$DM~5owfgQ!hOPxO%oA{5horOLm>=enXU*jg~1G6an_TQPh7Km%* z3ZL7!1_^Gr_p?jbm#(vW#VFDUp$G{#m1i5vQ4(m(2~KPNVC%D$aDYA*rA8}w`P8hc ziOG*FuHiGBN5PKwG8#yP19!LGITSc(6dKy;6(|Gdh$&!tHq%?d$CW}9$pA;!^AT}- z3ARk5n72w6%oO1Aitw9u&+Ut&W?!Yk2wK!CG3kQ0vP6V%H~c#^lwp$}n|qI2(*5hD zkm(<&tkarHs(=w1mjod|qV360u8Uk6z~o2Qdp{h#BGf=cCwsT= z{iQ^ky?>GGQA-a+PYz4!?gCT3KoW+wuG-T49K_cAS^=HJv!JEb3_}Qx`n?4uOs&Gs z;eLh6LDuSlC}I*<;^~(9PGHZ`r53lejDg!vVcEiCl{~m8J;*4jUhd6&qf3F;vDep} zepNsDVgp4g;DnMr%sqNfg!D-@l!-ggue5I7!hmmnosjy<(VFEB|+h(F+5n0#$ zsP%mDeG*{8)UhNx`{TjT3y^r3r@HL*;!b3LIkGeK16kKCbFV$7CJCZ0aZ*K*%xp`A zHMtn>8AbhI{h(9G>WJ7dn*tO6O|}mQ9azvj^`D}D%2VO_QF2ut!#9{t?Z_=kbB)Os znsOiPU3s)K;%nr&WtOpT?aUX+06%ga;#DdlUYki#W}rl zxm3LKVYxH-QE6Bp)Gm2CzgV{f^gNogyFTu#zht7ehLqdFuO6>%fT}kE$>8ukekova zanZI%${BrH{Q!bqjjFwDcKu|^R(u37&TUBR85LL219(mN`7 z{y}yXY3aH(-jUxgt#7EF4*Nf*bNy3vUc1Oc(nkV9a1)RF`0^LBJXaK;(7?*O&Ox=q zleQ(Z6uO=dw=dLhkPtvA&_^J2Z*_TdzOHd#4*R6|Oifb$u5f7Sz;0ZqVIuS<^cQ1vnp$KP_8!ZS zSd*BtfTIlaRokG%g_%CB?U3d|97B%(wt8|wzuvK`YjC5Qx}x|M)+;4Me;m=CQ?$}C zcU2buD-<4-n(Gy8!#wrCoq%e#J*t16Pukh2-}>tx5Ru%IjLx zQu(`}L>&IUJSY%+fvK72Rx+KJmqRdDYg2}o-iJQ>C*Ai)K4wu_t*Xwyncw7R$|U#` z%YxJ~D_KEbhdRK07bub???W%#GzYcM@&QlRG6Z z={hJtW1M<_SHl|k z@RCU?&6JuR(7+WxlsBCnD^M>aTQKv!;{DFy)nO6;NsGPho zGsPxh_!3RnpF*%u0RYzRfu{*>MF7yk{vBvu%t@u+z(xtK@9mORmmI#1Oyz!K9LY)C zUl{y;#N9RK$!!0s_Hh_A!vnWpFd54_sPEidENTc2WPYISEN9{avoA!9xcja z9L+l|jj+|Z)2|kAPq9i%Xr^?g8YhE$!B`T=?>S9)NkV0hLw9YiCHr#qUt=|ybAhyxP~UnBs`OSe^|HQ z1nyUTzjAr*>t!leAMe6zaGNImHacUE(2BAbQl%bo)5EC=9QN}ij8Y;H1@h*~O!?BY z%4|>ISyF0v@8d8O{4D<4M6C)nRYqP$Y?UL?Q1?yHs@2|7_$DdeS@o-OB_8r$J&6E4x z9)a`mV;^!f_+E?PBcGp=PimH@OiP{r3z$ovz}%WI)|(xGdGw#aJT0*glUu*^j%j&k zG)(ynsydWDO_LxhjT7U$z1a7l55w!HVBg(n!O;S6OT#c$n!{64!=D^2^UK%{im~sW z#PFsam?W5=X@DUC8hJ88gY>O3RdqJwdTWiiowt*fr-d!>V@%vnFLS)g3O%PbJB|$< zI#8pG=;`u1YVpiC_Rw!O+8Hz+uJ={c8!USZaSh#HzV5eqdt&c-=hW!@3}luzTKb(> zV9`(?HTB&^2T{DQemp^>f5HvhP~nyHJ{9?j*o*mWc{Z=USoxvf(K=z|;~T$9M4vXE zJns54y|(4+Ry}GLRHS%Rboc$7C$6a*=(h2L%Fx^?aoB_DezQb$n$1yzJyiUVC445> zWp95w4~zMC4*mP=$% zes=qhou+|Cj%s1)e1OKW{dJnd93+*z=%n53L>+%mIoGl_i31!zbigZmpeXL?IFA$C4`PcP3-cXx?6kneZRSlmfrMaZeB5~s2THgd2pbg0!zcKqDPI@%X!M=N7$kz^|XBNa~`LobP7g{J=M_= z-O(pJ{+*o%YDudz3)n`kx2GVVc^c5W%^o9l7c_KYieXn?F1y6SCJ(69nU0@^hCFG2 zaa`#v;F+Joz0*ZZODnZnL$M~@|2(9OYIj^gj%29wypBg4b` zWDUmQdOaq@9Bg_M4}svhD|4k3`c}$QuG8NKQ7lR}MH%bu_t{tWRgsQJLk%uHpyZ+c zg%N2uyMys(!%0}5DDa1qb9ZGF3(hRVaYo7*vT?C{rmi}HVy!``WuT*h1j!?MjB8Qp zviI%pOv|t!bYmjR`^SXYBqPW;(&{!W&D3nBvq7nBTP!7H{51Rd`k$(*K?B#eA0zq+m@USnLWiP{`KFc!}PE_m53NFCyq}C6R zMxBETb6FN?r|xC;e?>;-5WMu_8kVm&<{}aoEk*Xm`xTRT!@ZqQu9*3P^mdct8XxANN$Qmy;=x0Vz3*ufw>$Jgas+(|6D=21_jiTFS`fvR-V9? zLH~!0ZcO6UxbR*5Y&%;;R9rbH%R#v#&s}aew1C+!ihfHm1*22QY2_}&_oL|q3lf>P z^SQ`JFnCX+rlr}I^J>DtLr5mmhkTft(umGlXw(^y>Sr<~hgV$25{0c7Kx-{+HJVlY zUM&unl9{1O<~*`u!BrEtUO0cE=jC;d%v=$F%yWA3Wqql~7uML`zzOiCx5#5qjJOh-i#nW2n?SCQh9SEKw{ z+oVQPsGKoPpB`2BJrunD{dm=kN2vNMX{;(%_lc}i;1nF=byVRm5Qe)zHsdBrC{C-c z>@;YCBPRML@DqaWFE^+Uy=`Z+@dd-kEDO%9Q-7|AK79;WzpwdwT)Cn{Qv9EhfHrz1 zP6MYFx}1nc=WkNe;ySryk~{{<&gho*)SV$_&q5XnX4FMmXp_OLJ$BfVF+`W*%uuPo zuKfd)qfsL5O4U;)=0&iqIUOqG*_owvL`R(bqurujPun!e;pAL6iIRn7ZVy`anUn-h zm?a(P3i6p-);+Uc?EDqE@^mr{{8;uFuygHQ5kZv)xqoUtI^LlQUlDyM{&nSQCV#b9S;deBfhQkq97%HmgYq6a-R_NQYExu*g+sApsYs1f53jACtPI< z%0fxjQ+juIONhmJNiMmpj-zF0JHjGWs3Mo-LV0N&$42v=Ql|0DYDy8O4uaHiM1!Zk zn`*GRTBVsj$J!`+b#yACJpVK@AQwZ$GSnJ4ny}q+ao;PEa+C)70rFtCS?vN-dPzj} z>6}kt6EHx?e(z;ISeibsZcy19iTn_!r;c7Kzk_(;d_dMNzQsaF1}mIKrkHEgQgr<6+u9{2Z(7|Gp+TQfyu5dWB_i z^V`fPTUGq$4^OW&4@~%4ir59&bhppz$CZcNkj=HIl>}j<=(^6SC5(CJk5dhk+Nxg^ z+fyJQt;?_GZVW5Rg}Og}w~V|iJNW!5%swKjI~r0Z!yK^6;8rexe zR5=dqXOqVTeWC&7>#^P`5@2X@ytpamcwSvb(D zs0NHUoQArI^$p<^6-CLSg`F?!aN2lb5_c8DVaUp7$usiSwde!NjEXk`UE4vFbsyW? zT~+*j-uYEI+6YO?qtkE#=uGmYGl>4VTX|BY$0NQdUkmVTy6>c!?s8~KYk%iNYbo!N zcO|&gnxI=99st9W;#%>MY7is;-5Xv>-tn6OkfitQ z3cc1Pg0VT9ex=cq_EC)*6}2y2cjw8F%c$PS16${~aelObgwCLH*KSZW4BGBIKR?nU za~erFswrxJui|fzenvf5k9(Q?o(_n9_yXlf;OC*2l;g7CHxHcEeGtvE&pLsiWll*z z|C?1Rk=^Rn%Ez{cM_F zUi$3eSXk+fr1_9kA+poT*f!L1u-*I&jqa%1)BF}&=Z z>tF~Qr= z6!B{#1s`$J8S+|jcxyv&`KkuKewEH}IQY|P`z*cfFwtt%y4;LY+NAoJZ%g{uU!ECQ z{T1HN@ejZcqvu8K(zRQGG{EU|BW1MZ*S%-7S8U(r@RES!Zj*q*<%9x4PpFvn2NfsI z&6TQ|1SgFab+CHeVR`dTo%~jC%U3zmI%yGZ&%&8INWgy1t$W{41U(i54~&)IFz`bA zfa_$wUTIqW(??pG>8#1}0<|n-9g>0S%F%pp_3h>>vA^7KvNMpm@j zZfaZGMGEi;I)X~&>-YyrETRx(O-M`vWgacTy!I)fLCIT0=k*Wyx;6HP3wa0afx^?H z&S_nPlK>s~b?_aT-(5vwK3TOfu7>t>dMYXMJmXrl0uOJFyqZ{8=}>XkN*}WB)6>Uz zf#Hp;j!%S4@jd$*?}ZAAaki31+bs&cI62OxI-@Er{SlmrymQj33ml1<gO+2n1f1 z(wef#&wQD3`h8+b;WR`8}K6tSJpcOTm8L9*vJQl zn69UROsk)gGWF70f?Yx7!p&(MD8inT5v(x|KTbtf(OxolBC3D4q5pOCm^IWrEwlW^ znWN)0&&4{vjgMDDqm9K8$0q)^Ik`YkyWsk79)7^}n0FcQ_NR4^w>SvYwKO+<90fZN zIvk6KR_=)wvDn>Ae2>ecQ)ehwN^@^-djga05@qpmiy!z1Yi>{W^k^PW#E9{!RC&f! zQY{CS{41>>pp_k6;f6=`zNYZ=uqQX3?aJlDG=0D~%Y48dd(`naZI;d+N*YR6trgu# zZJ0rbcCrdWNPZpn-%SNG+ZR4;mzr743*g&8nlLo1wMt?WtefF5LZ;Zd==Ew!er%m7E}3{7~z=m2m>-{jhL} zfcdf`i3{E7%g97{uB@^A;1UbDZn=_wwe97VT|F07!^k|J$hs0`H}q;g9dZn$61*T* zEzuMuql+%GHRl;1=8)Dc#C3FW!ICVB9T4XJc}N@$6&~Ck^gY zqAZXMKAIk#Zy-lzZK)d-;X_WT*wP%xGdh?Fb$FCSO|cG>`mhkO2G5ss!22xX2VddA--CrrOZ*9QGzSaFARQP%xr_?U%xygxT zBZ7*b_mrLm3Gra6@WsJVu&P|wH6Vzj)pMN$G-x6bb;6)-pD?KU^oK@!yMZcP`Hc!( zoH9MM#E&r?w_M}oZw&??+{5iSzh?-n!W4Eo(D>jsdHJ5meH=3?6(+&?^v8;4SS1pq z81_NYhr=E`s-n|fl^@TDpBE0T-!#9!V6$p0`&LGaM_rjqALm~q$tz);qx@YuVV_9n zxBe9N@*fEc4kJG_{!!QS$tj*DcJR?7d9ZB$2d$k!eN&%ba^G_B`5CdSagJl!X28Xz z%Qa?*Eq{7k8d$Ki>6w%VSv{Ll-Gdpg;V+Ka<Q6CWj=cbT)U)Ou)Ab}r*^R)dQHl$ zKRlazq!C88cv=~n%qK(+Q38d8W&Jq^Fbah*i4ID}(D1AiT`lKGk~ph%v^&M-$ZyJB z5{&+3EBMyGbAX2K@ybp?^;P>_Z|eA!Z=qXWpYcP zFei<=BQHx{y@itlL6Z$r(bI|3^+AGO3~ zF?ms?H?Z}toV*uPGt&zG(B3@%S0X?x6w-g^I>h~KiZ0YMrZKDg z-2`eV*6}7a{hnG&=`XMFfTM4PpZO%BeLDd-zG~LD_dun7VCPPEKOz>Fg(lqVa&&1Y z9X?f>ho8J4>TPJN=u#B5QPb4@DM|f z|KN+X0h06YchovE4ouc1M$dXsZ!hq0B6E+O{B&#NYpb3kuPy%hqyOkUXQwxi2u>_@ zF<76dZjuM5+-QHQ0g97ZMwkW1_)X*}!o*mbALEFsyN}3OB7q>b{5SuEt#ycQyU6Jx zQ2mYcfbDNH{&9^-mfVpcS{rPPPb3v+jwV#30!AM3>Gn2zZ2y)QKwB=HoXhm=zeZ&NcycEHa*}btId-#u z{UqfePXMrXcGTn0ueUNp(BVf?lWTIT`{Oi?9trPDR$A!G?OR^bvp8Ea$Q*HgD*k6L zfV#^~57jb0j5qbWdn!*RogWU7{Ng;kY^QzZXMj_v18kw2=6d|ptn@z!;5|S9T~(=5 zsvko}TOGR0CX;texB}=UJC5q2#z8xf=9tl34?zfIll9Mp;=jHNJ;$SPk{TEu=)=tn zeEpL4L;_Y`9y!t1|D~V(>5K}6r2hzYcGu5oUZ=s{(o^KVF94* zlAyE&tC!Oi;2bU<;IUTh-HktcCII_Iz8@?0l@EKu23%UWdEzuUyzF-RZ(JMx8yLUl zwp#pfFckpTrmNhc`io`$!Pd?GK=A_ugPDe?6AU~($*Hk<$XK z&4V}=-(ko6X=|8pr>mWjFazH8T132g8JUYoBo^jikkSXMXAo9YL=-({3MlJoqv(5Wn= zc(Lx(k` z;I3n-2B(W23{da)=0p^8Qf9y=%*PIEr0snvKReFP?Z6Q9>TCR=~ znV?0Skg?S+)+ym(%i3O%JNrLY@|Sm0$ld{bihy_s$C%2<{9P-A{W^OoN;PJ%1 z>yiR2G0z+Ex;F>o6Zto&#`VY6FOksXNjPC8v7175 zYSLIG=CSPP{1eRQ%u-K3kFJ0w$i94D@O9AN04w0!Zr<;8eq7^ZVlq~rP*#6%TXcUK z^K^stK~wO%n*6PGisUa--?e_m`2I*!TA2V;yL7Vbf5xr;2!uPl3N5@5^pQhJ*;i^UfJd~|zcdE$@n`TMVb z%Jo7N&Qk(@sktvXB0t?YzwdH|Y#Cq+B^1aZ9{lUOpB_Cm0C>!K0jj(o$yk5Bnt#5@ z@4qer>Aa;fxH_@F4~1(N+X2iz^>O98@V@{!mnH!4#iIV|Kaa5e>Dz@~r2~xj_Gm@h z{|&%>&s`Mc(F`n$`5!O)*LV3`aiSucGOL_qX8qm0*QEmh+!y8U__wbB7JS zkh}HQtN9%}|2XCUk8RS^QvA+;~fDDOHm$U!wv(6yVfcdzM3V>WWXGz98=R7(es z&{fA;z$zs@CqMZ2xib*Ot=H(Y>#Jy1x{P0M^9gsm*aB zAv7F9D?$u=?M1NRBBNV}ycpBuOc}>OaUE*esn(gDW&f97}D743)v)iVKt8KeeEtVz&0VOv#@y>Mo2(^(g1%L z2Ac969hFzFMwjE{-TR6>`?b62UR5S7G`v(McsaqBf`f1BG}Vpkj8;4p7F8`}^PJQY z=ZB^VI=7z&*=jy3wqJJuA3u!@62cM1az6FR3m641snOeia$dGxGOhertJ7%W1HNJb1gz72*ZZaQXcQ3GD3tqOI~vXW9NV1r03)Iy zQp_Hms1Dk6XDO3KHQ>(+{2q{2w$(VC4}V2vhkNbnx66kVdu3sjfm9Oa+<~V+r^cY- znWLM_Gt^9UdoHg11kqxBY3JH+Fx&^mn!zvfjsu*8ldOOSsz9|GGe3DIX}gbl zK$P-alYMc{a3>e{m}l>lraXi!&$~~@Q{BxTY|46WV8744upwU)P8;g(R5zhZ@ZLoSA(7I zl9+q}rm_cgqpfkG*?7wde@b*qAE2S5{dp z$~#UMYK)o)FRxHbmZ!N4d^dlHlfH%SD_dUere!c{6qELm`SRkGwtBJ+@pWkGX5#T4 zLw>{fd)X`A<|RUr>OPR)I{B;D);f>vn^?4?`-~fk2xv0YO z)y%~{#P>Bm4newldNjN*9t-`fNn|5%Kg9=mF;C zezk1xCly*V|DC6w{K|QvbI|x~)p-JvC!3eF?KDWqY|d@iYK;~6qok2xWI4;4vSH$` zj^{7YNf~8v*qR0rzD>_ix6ZyLCfkYW_8XT!YS?wWa!foESi7EGoQm~WVn?}slf1;z z6A%jJ>DyL%3GZhCQ*@u66XrRKtAH`n)@Sn9tE;lsi;acym1@vjO|v1fr2iaFUW+oz zC^HP>-=aNSZ>aa2<=q#00^5qgzwn;0bAq}zZbW(2*V?KFZZAbj`Pk_$GQXKHLF)Pn zG`QBac=wV7)0vtb^(~@Yov)28muT{r?fWEUiFh8CXtz1%A)!OFcM-tsgF%>p8KNnd zK5`mQ=1Radu6jY+*lbG1EkZKceDnIn@RTvlzE3JjGQ`cjay{ZCp_9S#CTz*z$;th! zbHlA0iRR?eW+7nPkM`R{#x!_ev)5ezBiDYlQ}?L;_wb$~?McNm=RIsPLPN&$A){Sd z);yyk83k$=i$J|u@$=NTeC-__psoSM1-rcU2oH8h4E4;{BDI9hSa3e2|`Q zQ_bG)Gw3h=0vBR;0|@y}%zMv|AruByGi79f9k$WOzh+w+ZN4DxZdh`RiS&EiDxqba zMeW<<`-x#qCMT#o;>W2*#Ixkz=q*xC56fOjKiB6tGvYAyI2cx$=4XoRbI`Sw3aazi zG8>i4^JOzN>-wxVOjfpe5X8U3^Hka;AU8>uZqmq;#7r2Jbd{1LiGgePj4FrRlZoYa-8aw!#? z9@gyMl`Q<+%<}ZfhM4U5aqECr@*|C=h1gD!!}?7sP>jD^DW|_EWz25!F9uP3zlbe+ z^=>eo3&x4G=4FNoCVJ`_n5%6E3N$^fFYTRPPZQ&fPdpB%NG2n(Kgv${=CvL$|L{T} ze?|C5Oyj2fabb}vVI?cfr2d8G_v0%Jf>=jk6tPkv&=U75t=dQIA$Dk}dV-aNS4)x0 zfWGogneVLO^mv(u%T8)!y*;V`7N^(Z@HFj0zUp|_EMBRJ`=TJ0{8BrKHvpgyWna91 zDsoz0aR7d;`^K&t^nfM7WqG1i&1V{IKX!A8euy3-m-jcdwbUn+Y=+0R)q_S4ArGdI zdQxkYdAgE|SN6rKWQvOmh^F-EG%KnJ<;M<3_nG7ll8#^-SraDLvf*tnsyepYX;q`Rqnyo5<;MGtefRUqqmr_r&|7uilV;n`QLy1T#f31yJ>l#*=Y zgTa~z$AO7pqI}?{ZL5<*uX9%EhQIX-sRl_eis?*DMq0=?jT?kcR4!OWF$>AuIQvB( zKQhWrxAdrAFLVA>M1=spuFM~HSg1BFpaCgS94t6N z$U@b~A+IR2-k6HbeONqtqdU*s6IvXC?SHZieQx2oV#y zP6sw(g*PjQ*T4PdP`&qj+-^``bzv_*wbtVUf8hpy3+-_ncRjl9!VC)SeKp(gX1NGP z_P}Df({E|Uw$;U$xbUc66`S5rRffrc%(88u+#z)8H5wF7x<=Sa4+wFE9oC%&R&E%t zVHHKY+?_I&_3wUTUIR&GaT3M{fxUUOQZ}CII0X$f=f68)gKf|eH3n;`^6K44N_is}Qk=1fMTwRxbYQ)Um2h0ht8(=Z~NeGjfJoM>l zP?~y+!;V`pI|r#4hC;O0sLVKmk4o430TXV0P)|OnQLP&eB9Ai@@<@#^yDht)Z=r+qq$suy{PdhChW z@n4M;*r`#bBbW9v5n8x&L2lB4W_9e#$F&czsZoSa9JYF;(%z2i7kx;0MC`+126=}8 z2$b-KmhWm>DrNsMp9{KNzCWBy_bVC72nvtJ?$EM|Y zja(z>^Kd=(os<#wzM1+3FPdoWAqE7O-6?^oq{noU%-PXoE@-zV>o36Gyc1!CX3HBX$irBcR8`#W^`NKJGGv#Wy zu9sZ^{%xy<)nK_c!ow`B2=2fnDL5}lZ3vIpN|>QWD< zP$Z!rmh_SNgfk{gQ)0st+S}0xYx`|1hW@I(3F=*Dn5S~NYE!G2e@kglB)?tOai(5? z9r_8#b0$^f@x$dYypl{I9wcA9%0t9klr%3XeM|KS))YNQCC<|3kO3WH?H#!QTSyVt z673=_hWhl2XEf5K@`?8PW)ib(clS7}{c6CmEuw0jRXH~|w6vdIOI+??7kou5ARIKp zV&ON;(90TwFBU@`9|j_t8u5-%$DNc$pC-*Z_dzjipWtJSyTLh}%CCpX35Q5Sc{?K( zbWn*TNEYZGmYE-BSWel9kp&%2b+QhhGsa6`=<|gqGU8@R>{C-_Q+>n9dV1VzT4cOi z*|%d|j(U6|vE)Bzlp*>dAq>YwhcRUMtHc)|v-8n45G?uue_z?P0_97qPL1Q1+G`hWS?$ z(lF}j;NsX+KMm&rgBVm~XQD&9NptV?F}SkQ{c-gJS{5O3W;21-9=5ZIN@@VCzK>iE z_V7{fw#A%^E52I9=-EHC>iT8<&gvknyjjfNobO)D4a7CA2CM2$17G?ZurfyaPfnrk zAC5dWd+y7|h5cN*QrrflE2)W((}}ZJ;t?s3bNnq|IC0$XE&b1-1u#4bpb~MZ=hdSh zPoh1^^(Hfs==vLO)|V6~4&zVfulxvgY3Y$n(oL7lMdN)6%EztZP1g|hrTkz1PC)AH zV=3TH2~H2|uAeaLP{C80WkC|j%d#GBF-FC-`s{1=a=&wx{{|3+IY1RVS2OpcwEl;* z{Q1Ax7l23A>z;tTc-#+{+TZ(kg&%MdyD-7-{x6)P8aBXNa_(%qWB=Pb{KxbEFM1_~ zaf-DA6i*WoJ~^>BzTDN<2N!5Q)b^sc1pQP717N(J-QpaCWf}z=>(fJ>@=D5JD(XS_ zhU5lHV3*b0y7B^m%;SL2MFD}~@8Qw6k78WN{|+3Pl|wVd@!H!l+?`udU(BLH47VP< z{t@+Xxvo&#Lq@0gciitUFTSjP!*B}nlI;7f&XuWAiB&#LQ=v+_kfCiE8_BURxteSP38Ecq=GwWlwW`P&axRxPs_z0 zEM^`E@~rvTx%2&eWuaX_1g@tQ1(Z02d_KAQS_H7BF9T1t&ix$k3gG~ESu)=T8ipu5 zJqw)w&l+AJZ2QwkXWs+7(eAYYyL>{_Y;rwxDOA%}Pl9vtk$^6-t+kx`HxQlh=o;N= zP(iv|6wt&V|GlOhpoe;B7gc6?EPQ=yrYdyv6y#l@E7b|8j#i-fJMVK3 zz;V0PE%T*|Q5L}Y3g=If+(VVJNq-8?UqV%`1DKo>0x)^@i{J?+&zxYg<%ZS|b>Tla z?|*z$$OBfnIo)KpTzvkFLC`v+0-8)k*y7^(!KUIX%F+gJLdt+zdUs! zJ1fq{|J=U-ROSGylzj5wq@?2q{yziOAmpk6>5oeKKR)JPoZ|PR!YjZknfY)2-elpa z!bwb&mxTRqNYuyYPSBk6_Wx5fYnig&s?sknVJtD)JW$>loh-Lg*V|NB^r1oiY9i&W z#c~|86i}_#EqAEdGiCf+uNppQS#lWRUYge;ouP5SbB3%Hwr2MXFl0MSO;Z!`z*LJYq?KXG0tlmb)+DcAb#7O{$I1R#mx93IkDm0~E3>ZR zUgKi>304)dMNam_<9{auO1^tQd3jZ~vnnPuJtn0-Xr&}apnJ|_9BxSh!m79MUO()B z_AuqQVtF34^b~16YvHvXbqN6Ye= z1;fQY@z&q(iOR^^4a@7J>#TvYWbvYhoH0xRb#^J(;>WVZKqL6liD00F=vB3qmABgw z_EUaLW`5kw3Gr&Qw62a{I=abdW>ydFd850 zcS|!Cc4(8AnQ1DA+bed%TZb`q*tNDqH*wO^3-WXmaAn4R`qd7P`x`Ve6_NJ6##zN) zXl$cBHw(O=TUZ3&e(Y!OS#7$NZ#m{>)>+Xgo3%2}hAPR!`)&fMnuyhJIZBQU^9jk4nJKpQsr!nSOM7OGoq1XasI%y5aj0Ks@r~aaTlBoQGyP{8ldtIB zNe$}1(pUb+QRvV~lvwNCADEX`&?%sz*J1E#brDlww>+CVY_)P^8evuRP+V5NDK6E3 zukb_DHf(h5?dfV8i0l&@$L!;=P*0Ti@O@_kp!PUdy`^|_ofIrgXXiee?0>>TR!;S3!!^LTH~+8rML2w)N>x=ctntrin&*95aGy{Zwl!7ZPc8>wywB z6@LOV9&Od8+pS((Jiy28*sr*U`>i~g(Pu-ZL3FjgAutrY8CoXyk3wOz`O-I|g2B_A zsn@J{V$vjy9v)evS|$utf?N_(Y7#OH@0j)yMN3n>ART4fWUTY$Y6$zA{CJZ|h+=y= z6N>s-N6~ZwhsfR+#z2S6yBMB1J)kQH_f^5%uoPtY&%%cBA5J88@*kvE=r*9Eam!j} z){A`#@0Qt@dLu9z3n7P+m?WmIexr>;wJCh|Wm~Ms3_*T4U7|)z$v=t+{U*~jQQhtlUtEx{j(WkL;&{)Y zi33$2RL<$~?Oh{}oVgwpU-F{QNGdo4H4%kRUd~aWB|v5gLjJwOjCJVSy&Hj3`plr$}S(0?Lb`%pU}~LLF%j(7dDAcDm)HCDA*&dyg&y zw_tgCp*wS*M3~1Y66#XbH&*SJ=oCDKTD#?0=UlwewDbhykB;MWkFeRi44F2cl=BO8 z6A!M*4>Q^t$VlCtEAqSM9#OXG%zbqQZe`;B?6`ZRqP5P>K>DJDRN=aDv$(%QYX8!4 zAl4~@gLizXLBoJp2UIm@flBe-@u)FnRn~J;#y@iN&hy-QoCp-1&(kojHbxZeqj(nj z8-L`2`-F5c8acF-zQ)v8A-VmEm9GgVmf-Va243ibE*N_ZH+CLyy_uh^4*1{{?3MAP zJjwGtP+8D|ePa(ze!@8QRA^Jipgl~$9pjv0ExP$Q`B^RnN4`(ktJXX00q=hl(_(q; zRWQO!86C%R{$H+oW*yZzFI7yO&QU#9n#@NxeM=(9-w#-pw`1nrlU_=_lLWA}_T-Tt-8d=|@rPd( z9yP9t>`o{^z}dcw4(WO5$b)+hGpC{QZRnc7ON;A??Cl~xu@w0U7P4?FAUjfbVxLSp zXk4`tn$!psz3wW`;J=XdbR7iwtDD%sZ}k~R11(}qri1k=I^va=Y_-x_{8Bb&188Kh z&FN)H-nG5Rqw};lnLU1*f~rW)BIU^lj%T|NnBj5dhObKz-tgSWqjy=aK*sQKIJ7j> zC1rIiu>b|5^3RvfqIH;(0OoOix);+q)>_)^yX1e6!J&wqk0_5fZ;deQnXfBpZz} zViX%-z1$^yy|_>BWfvV+*LbpR+tYHt{!ei+=aa|7fF3tAwS|FCW({_->in=dL4G@m z!=k0<(VxoJffARhS6uKQ`L`T!Edu^h!Gi$aabg5n4-iSS$kGZC1Tr$({IEomg&U~b zc1?{+i7oPLOW%PSRfoI#O$pk(;rglLWkS8pCRV!5JynuxY)2CP?#Pht}ZgyEg@TB zlT)@C*FR|`^#+Icyv8Kro}-<5P~Xh`TZt$}46xOhqM{TfROFDcMR#mDS;;%!L>Jyd5B z+rRDkOsF#{ufQhaUxf_h5^P2#B6^MT<6txSvd z-9THsjXpX?@rqo#z2$Gxo8Y5n&Q80INSM}J*@|bQ@lDp{7Zz%il!4n5<88 zF}_dCBpMMm{3ogqFGl!le_fwUN0)yaLCPy(Q9#GCyH`7%C-P$T4n~*1&P$fw7G>hf zfjaxE_lGteaCGJtbBt6kgAHf0^+R#D*9p^ODwIjokDi15G&7ZT?e^YV9nC9|^+Xw! zD|G~KPn(R$Tp#$xqtB$@m`#R!!n`ZP^Uv}s}38+i+4#(eYr$qs?W+T(2KlD zy>e^dEUB;9^ScV6o9FM{y!MGyBJy{*vC3}fq2CEi)zgoL|^6Kl? z3@}nvor$_wW7ESsM`6+f;3hfo(5Hs6o*yfjOB!G69`9tRsP^CZsAOCPk9Bq^ubGo3 z<5DP(N?!5wqZ<*441(+w1|ZAn1dv?akD@P}hOv)%lvM>w6N zL$t6hcfOpPb<0v-1D)m9@ArK4J`Z`l-PBs8cKko=y=7RGUE4M+A|S0G(jY3`CEX&8 zbV(y2ozf*GEsY`#0z-EW9ZC(2w16;l4Z{G#Fz?`f-S6x5JkRa*{QQ1=|JY{RIM20? zb@YDh>%5<9Jz6(HpsxWjvs6&ou#8RvSU)kE9-E5oM=C-qv`TbztZI;g(Gmn?vFnlj zI7aiw70!V%z%sZS>h804Dx=ea%noY2p|npFm6(Q3=Q0-6Ct>a3Ri^u@-dMxKakIhg z(9<-I@8-N!4x1q~nRD4K19AM{ay=~+HXf~IJ} zUvScy(;RoR-d_-7X!o_MtIc4`tk-Q|)hCfSeC8O!98CN)&&ohgtRMJ3Oy{S< z!j7cuwu`+nH!URrIpEdBe#b=n-QCpJxss`m+6)lmm0iQW6MKd++tbfXCr=RG@&Rv3 zOJkA8Ez+}gyFsVb9Wspzfl*HF%`rn8MaSL{_%VEWCw&?xT>&&4lV*bC<)N*!*d^T- zqYWbXI+zjLbho_w)ttDpve8s0J_B|)p8D}!2*IVo`4LcH5u$&XQOnuPdyjPE zV`3T0T*RC0esPZvT=SyX`Q(SUVCqvZr@fQ_hz-|BWhb(LqW`FH|JF#!kUJ>pejE6k zbn()+)10Drf_$CurDR89HN?t@kiza7sb5Z!IERZQ`>*R|M4p~%>W7EObsViUWpzCF zJP68;kUtr?=2!iCj1C=WMHUqx!MonZfvp&mw1ERn8Vi;EP=J5z^O<@3-mnrWW)n1C z#3zacM$xiZh!%K=LZ?~zu<}^!i!aqd%hKke7G&ei-uEI*`dEjU?EFH1kd5V=;ltzU z?fma1z<{`HC@R@5s@C_uDiT#(Zr0yl=P^U$<& zcrYLGWapJ0&$2%Jfx&t6Yu|6G1qGFOdJ3bUibdsratJpM{{g_}GPO$lgvOhsX8!{9 zL+9<=cyxXn6uk;Vno(;Q&Zp9Fh z@IMIoAAI&-FKFVpu^^!s)J8(hd2jyb;mw+EhjenF{+=z9>@FbRBE6t~26`1LW;wfO zS+)L$K=7}J>dM~;_QU`5$j%r^y_a}hKMnL%$n8ll-V@; zxwIeWVxGzs0CbjbxU{oCe&Wtc70KgH8v(d0|>i z?$}CH^ipLOwhNO%9HjL_icJFTtKaBdNI&kDZu8ZN)Gm>!%8d&ugBf3XzJfg;&i)Xi zYBox#w1Ve*fnAm<&y;|ulcV$A@&nq8ADR}hqU!jSJFjPtndwa%bZ%RjWu@6LaHVn~@Jq5hqTS?p zgZV(bhRsgUOedY~K=#PuE-yxyLY-Pb6>V2&0Oy)~`HR7D`L-H=p%y{(XZ%E5N>-i2 zMM;OT%V@QL_1&ZMbCq^V6S-Hrz8!oIr4X0IQN#5YUVO?W$6$nQC-7eCdv?3Yu|fEU zibK+B7Q`ES(+`vM-GqNoSZ9x$@Vq_pcOS4Aa*rLYR@(<<2Xx{62QMvXSJ;PM>OOy@ znELe!nt8Xii15-QY2)FBC4(vED=Op9GnDL{fgwgtuPt5@hjHwPt*}i59&%GPJ*9op zQmh0aarzjSQ0c$6)C(086~_mOJ%}9wBjZY$rCB8}zi!1@f9OD4kYhMfV}${0Hq|g1WlENHO@1u1a-0n~;dM zzN?P65QnMnfh|>cpoNx?=qcN)X*2A|j(^&ObP{E3z9g2<`l?<2E}%`q@*} zUMH*Ydycrl>owHcCP*x#=q0t!=|SAXH1WQ@DK;v1p?ax_V!qy$KmkX`%^;&SOuD#A zm!F5NM@6%5*V>jj0E9LD;&L<*f+J^^c6^V^=4Z(4djvH3y~YHEFiZLIjS0)B?xhz}ro;Rs@=8T3&sJ z-+kn{HHJCy+C63qHp$}iwd}8;GirC94gKAk$K#CG1mKy(%rHTtUD&0=`v4~Lo~-w> ztw$O6Ck)Fw*Uu|(z;Q_Yx!Ps-Oh(bS&T6xi_P&S95wPrFkNiV7M}h}jnyDW$#DD7Y zIIgTMI9WOl@@rkWu|9M-r47Z|4B*?%hpp`SO)g-qAp8Brw-B!Fl&nlb;sY@Q3^`+C zj|>k!f@5IA8;3{bt{HqtW{zwhEM6U2t~wowaL@RGCOYgU5e;wEZ;*Wvk#=zyeE@|w zY4?$nvhRs(Pp#SaGF(aLHbU!wbJne4hU891*QsBvLLY$LwvWYkdqD6! z(Bb~NUzW(x^ftPeME1j_TXO4YfY9emSoXbT= z2GB`ftWrYjA?qo5R&XyzXe%c4GtN5IW zOj7&~jsIMr1j+t#;P?Kf+$}-+x@~P{!Y%b@_3o(z7JAaGEcYupm1L6LJ_;c`ds-1} zIx6Js$a6w3&Jrt|jcYxZTTik+@8V&H!Lk{GGqVm>{QLk+1`%k)u|qWq$XQjHMlJ=T zbDz1FtMN}5%;n~$cj7Bm&zB$WK?#f+6t1~fc7=z|%;0ITJQGqV?FE!qC`!O0bNzUJ zABtJwSz?vMi_N<{BZIjqW)$HZuoaoIP?QT4=X|=y`?6a+%0egm-**A{ic(@A*hP&u zpT7taQa{rbP56XQAGkVMG(*1hOCe>*S+Oy2(l3PLjrth_PBWGxk`KF<;=9i8h^(BB zVoW1n_@Q)C!f#g03i?OFfOZ4kDJg=sW(^t+G#nP__J-iz6#mTyL+ z4hs1zXQ1X=@lrJQAJd*` z`AOoV&d7cI28qFKhvSdmQ}0veFdnR9+5ChRiE9?T(|4+W_c4F(777YtT^*|UI`}bM zaNo(b?>dF-h^Q3fQugPceEnGQO)UFq`CBZLoV+tEosf_bAD~_lIFj0}!(UvCW)MaZ zqCBnlBsYqmp89C;Om-_T;{5}G2pQWeJ{jH~I#Y?@ZwQ9`DYeya^7d(uRp~0u_`i$O zlg~vcV|MPzapkQ<8%(oo2WFkFq_jBal>JN&jh)Z&Po@xd$!au|wnqoAExb64KW5pz zwr2^lZd!hdJsC6J&38GTvN4c~05_%!|4{W$f&kZ!6x&=bJS&c3kLAdDK*xzJLaZ9u zFQoLHv-)u?`)!Rco6oEX2c|MjwoP`S2WGE3-sgqT=3jkL^~zarFu41b`kXsFHii-6 z3FNm}Tz$&BkNdR1#_uD3I`m`W6S|m%nAW^O@I+x-^f`wd0B;z4=LWtvZ4h6H zG7$K$&kLo6h0-0N8v=J@RZ}cOBDP41lUbcXz6hUpfrJ6=7dYwK+9G3*wE}ZQsyw^y z4PQu>^KEm3cha*Jkx37KS||&6G*3#-=3@=NqpbXql)Kw^ZR}YCvRBUH6~J{W1Xuf>Umh2qCmvJ z-sKiw=cYjOiXExft`0Ewc-bQYA*RFC9V{hUu#S^HYtJ|`U&c9&Q8m*F4*mr7IDkb%T zM~4adbtxT@(6i9}*u}GV#1{1lr`dqx2XV<-Pqubb)@7Aa8nr7}oUFO?4{b`!A4H`! zR>}!jAA#sdzVR56eDjG(+<1Xyv%c08#LsDI8cWu93hM11udb-}jO&s(6d1-z%DUtq z)NA8(Q=sLy#2($(O#Iv>1yn#RFFc~-N6VaF4vONnc0QP(*9!1{l4wkY#gFxqz?5l# zaK~ph3$F!uOfif(oa}F3)4K}{v8Gd^#5GxE@EQiU91biJZG7GI-{Dgb%u>cO1N9eN+|`eCA1TheNQ?bDOn66=^m4_)`Jr&xw$Y?sYtTdoqS=d zCbEp`b3B;wjEnINaTZ@GkN_Q*YM1PY16C5`cRc%yiySk}9+sCvgj(4bo9bQ4fmymw zc%6u8pgvipnfwwG(CAtZ+Q?YQx)F#${?=RHGwC*H-#*#1CeH3pCcVCu9Nh#TkzFxq zV1zad!cHr7EtUv&j*mEyS)hzvwMPK(4*5-110~LT^*zSV+a{0%EbIe6%j7hC>9@85 z+NTe%@nsE>?OS9B)~oCLVr+~77l%K(V^4H1);g*;_R&Y%nZWp)hiMbW-m-+Cgbglw zCdMwyS=w9sZWm|U^2VEi%%)(pbJ{=T?KzT9a8RWvQQGf?p~`(ONLiHIL&(#zx&a$H zvoe)h;&H&{ori_0FNTyoG1%qi97R800;=mn@o=8L&Uq1I7))sKsH^JpYA5}L2D5y* zmc>4ZS9=SF{)$vngC}QlLT}3Hmu;cX zuc?hw<@~-^iRR7iY7qWeS=2~Hn%n(Mw7@<7LrfQ;pxYM6>#R_v;>WvE{SUPEOG(vU z=8xwa&kUY`Jg7Wx$;>?%hKh42m18a}dl*!@d4tR>L=d&dhV9)dS&-%fxJ$g&F3ybH zwvsbM;wMKdox`CZs!<{P+pbb)&@7S(XSzyfC3?RQc8qnzcd=9)+95Ql##TQrI0rvLa zEIOv@4@xn6U_={2&I#J}pza1^twTok5JbFw1gT%hN{25*>)b4kQ@6=3<{4=~*^jX; zB}zkUHa5;q{o0v3KJLd)%s^}C&4*I?Jl;(1#2;&!r@9fe2F!}zfy0JKyk>eVc?9;G z)XUWXDRFEDnas0=Vco!&Ul0H2++N(YdY*Fq7w4Axc&Gw@_FBsDdfYqoD!XBdv9;_a>bnluEY<sO|I#F-FL}(k>Wxhec_HD3U-*bV3h^G> zz+YX_RJ5rbx7^HrHc)8NYh}kOq;)@?s(zf7BAaUMcZxJA`J*@BB2@P5444Q=s!w(lr-#Yg+&&e@;^Rm~PH|XUFcx!roo` zR>9V{ea@M{JjQN0@FB64DVmvSWP0hT-!0)EDf`i5ea%nH*gTjZ-OX3!1ms&w_v((D z-a2H9ualbl9WJOt`&O#2ff{v(KBRg12mMCsjZHepNm#4TZ0TDLVaxD4k|~36w#`hu zx&4w4q(B1Tt^%SN$9kev7Xn{V5dF`~G9uS<@D<K!M#=C%{!a~sjB#}@5x#UH zb8Cg~=Hzv4K-q7c13Ts)+4b1=*6a9SBs+k5b1ZEOYqr#D>^E~4_!+y_>W6!BL^_Y~4_`Cd z2GbV$^AjA-$C^KXyqW+PZD7rfzq)t0fp6z*KZ`US*&h8$LCxw>JcTMm*{)9p@yfmz zg%8IdgDOr-+D_kv_DJ6&afxn_iw#{!q+hhUitxJl=5ik{@jdzp=}+3#!waX=y&2Wr zq*Dno?2AUew}EvB7#CL8K1*0}8Ob4Ka&>{7v(Ml-pS@^az0r%ENMs3>t@psN3W~1j z{V`e7YwDcEif1PN%8#MJvbRNqDI13rZy<(nu}dnRcEs=aZn2=V{o%s-Q7>%kd>89j zlGNYvwzg%FT9v!-3>Dz)u1RsxU3XxX89wj6Z-J^ze~)M9>N&xPLFkjR6a%zTbr&>i z0F@1g(zDd|4kFE2#U>5o@#81l9;O0($ODnk(3QxU%L30h8H_Qi^DjRu(|MGzC4DYt zJtTA}(Y-ePKKt|NaNv0bV$2~&b&(gQoO4mYnan zj*j-dH+IM@s-jKXiCHfcUe|6hMzkzymnXAl1uFqnoDaK31U9_I1Ep^Zhm~}h781%X ztaP^U!n{R6W*tF|4_`lmEh2gEJRcbbWpG(_;l2mT9I*BzHfXT(0XRE=@Gx!$r+*dm# zvok!bwraIl>qoM#8loE7+eRPQnb|O74iGOr?I=OryL@D{O`~kvsnLIsQ|VrI>Gt4f zMNjaj)}vuwgwd=i-eY0TAY|^Ja3e$68?4ft_qUe&4OS`Xg;c)4as-*Gu@k_Vhqnao zhn>h|D=2Y86GZIzxgD97>d9mtl0N>c{d%5Mmg$XFC{ZW-ycld1!B%onRa5Zggh%I< zdZQOY7tm6mIL(4hk-j4_x)zWAV%^Jp9X3#!zuAuI0<1tE6yGg;tdic|6>vKVuF@}s zXgxb1e{poF4mYTC5zaCy$IN?oylBScVi`Ts+3=Cj=d)>G1KVtKEgBl{E86CMmjk;~ z!4`1ZueSJn>En;q#IpkHP)sl}b4qQhT}rKCL@A<6O~J94%|l?SdCF+ts)9X^IQ{7R zYwLOe&Ff2q9w9AQC?wsf>#XBAn=m20(ObwzNa;}M_4dM3{mU78eOQF>ZL9u5Uj+5A zcBVQ7-!*gxxD`3Ok{Qm#?)hM5S* z6y1aMo=YNb_cob^G$FEofIS}A+`c)*yuY1d$!)8_!i5$_^Xp!zt)BqrypXA!y>mG) z2ZLug_-1+O*A~ZDV=IdC!$y{}b3N+*XudOSU3rbumNnglfN6>nTT6Rw?KVmb%SFW(|#DUWW9P;5Rv1Tfh?W1r2cFkqI8**zsNv143YTA2W0C`=1IAH33 zI+>B_1l8nYz2yH~91!*iYI zS0VN7T4G(lGU{cl573A7=~qZQ>sQT4{u-(y3K#Ma97JsF-h+2Gasi&BAli@;? zfS8qOCD`s~%zP>7LK|RK4zM>b-?1FL=z)V0a6Gt2E2u`vL%}O=u^>A;CjO#5J@bNu zzU^gbDMPj%Y!AfD4-#l4t{=v*y&3h>=5mQctN=*aGtqI)$rcIE{$fhlEg)ng_)YlB#`XqFsi8b_Rr}cZE@P*v{c@L- zJz2He)JHq5(PIjPdK54Zzc}xBmCpKmoFQy>rC1v*1eLu(q;DxIL$jIx3H-gf%VoNW z)$hxTZngaQO7#X?Z$Yh6-_xFLlDDJ<8l^?wS{mkQzRBpUT)Wql*RTi^eW)BiRM z@n`A%dywGIIQ^eWz`u^C(}NBr_HSmde`|jSY2UV5U4s8ujgt^~?-vhx>m+OT(TrH) zn&}S8kvKcKD}n2EK8puE@fb#XrG>TVucQ>ZcsKnGGGCI<@O71V>^|+@F@Bo)b$&U% zk9*`h#Ay*vAOQWK=zP()^x4X&0z9#EADw1+AYKYC0(N^3kw$?Dvvl2K8BowUqs#aoG{ACaov|EAyW_Nfn1(f$yJRp7Oc3 zY*X&(e~hK3@1o6RKC23oT^pT|@W{GcI7t%Rr>;s|vAB&`evsMz7;GQHt+e^LMCnz0 zehP_0UvH$h;9)h%RzhNMOmN2wJsaM5lfn4I{=MVMwf6%$5R(d0-K<_v`RO3H${fpB;%=AJ62y z=NgxTKYE_bMg|_;=*{A>9e!~nzD$}!_gI`p|L74wxSb$A9(JFrlz%il^D`}{x%TDc zcQp{4#S1Ce*6vG`*VdZr&$-e;^o?^`;FJv@O0vn_hdmtp zUaVr|%}~5fB+E|N1_g>?(=Fo5Rj|SC@cJ!_Vv8e)9_pG~54MjJXu<`rcD6(u z?)R)#iio2XvJ{$lE(b86he**sHz0S)6hZv6JwUailA82*8CfPL8xe5sznDoOORrN% z(1m$u8_tkhHj}-TOnzeDUKzJMB*q2;_Re*Q5fVNW8OsM&<9tR=e&0BhZmYbNhcr6J z{j;JyDAo)@s}+u%!u%WBI*+=F^0I)S{|Rh4ZnG)oL=)?n^9mD$-?YHIPR$klH=JE1 zSg^gcyLmlO=B!M>Wqzo3;D}x?ePXnE+PIB`IUjN>gF>{){TuAW(}np-!ikN*qEGGA z-Bvbr5;+o8zdH1xw0(DN(1~!YU+nYjbCJ&(N^c*|?8xn(1vk`5UGA}6wa+>nyf`CH zA9Jc1YzFT2a4Ziz?u=6T||O-i|(#r$`AuhadKjj8Ii6DYN$;^T%EJlU|>G z%0;UCf8alps!QhOvkM@XrKNdZYQmVK>&|M;RkRZw@--_pHbmE9ze(+N#mGRuLCpXP zpnY0sr3B@k%SvO^9;q8kw-4-YHUiKVa`Xb|21OHC+X33D`~~a=?Iz|v)nD5|9Hv9v@EEax~3fxJ$^E*S17@I6&}CSz7hh# zLZNu^_l;~}*2)JAPi0FWD{$|vGn6-46oVj`2`)6s*}I_@{AW(y#D|0EMMK0LG8&a4 z^(M)_Ubh|ngqy&tjOD~!RnekLR4Ia2;|hysrCAkYrn2AeQ!!%*U$gY<3!$#>arTI% z{dXw)594`~VmAgD`L{_~2Hf;8XxE@btW1tHZ@;8$6I)~xM`z-DuF&{yxYEM-b=pg< z@2pWXW}VO1C%lc0Pv+ljJ^Z5Ec|t)2XTEajeZI#8nUBlTYxbv@-_7M50H?#g-{C*{ zxiq!snQ`ZJ16kTPchke+r^6-W(J(N~L)-ctTYR%^kQTqjJ5%*YFMoZCywd=$?4f{% zrC(xFs}i|CZ!CR10-B~y8W@+ppt24^i z`v!E&VnfoCb9ni%>zoy>)(<v{XJ`2CbxdS#1hdrFqf`%WK^iB_sX<)au9XmYEnv~|=dFhi< zLEt6JlHtJ}K14;(9A#zm#U!yNL`yn@EoDs6|8(x6_JKXFOMNBvl^SU7E;2T8(4yIA zqgt^nq43shleEQwtyYk4j6d|T5kLcBT&jrS7f0^Tm@}r^)6#&ke@HT4Y7xLvG@IsD zR>}$`OrI97G0E;f>yRF(^p_22AnOM?14<$Q?$%A2DwLW;2}JK9ph!s<3rKyyTjA^0leV~hD;c@kss%;Oc4%w{zJ0q z{A*O^+wUW>!C&sCd+YkLEOij*vx+|-xF+Tbkc=snPUAMk#P+2xV93#2pj30ZCj zvp2};^n4ogNiesJdT~NX}!*g&Z z`g<1eo|C_eNI3pMbk!y*=9WfR^?3XFS6%|KPLG?6IoDZN12N)gr?e?Y!K}%Jw5&c} zacmLHDRocvwp)VhK^qH2PrTfs`syKI0Kw+8V6KmYxXPxyw}U=>;mzPX{XLeE9zjVSTaKGx*LkC#pQ zSFpTrHtenD9T{U*)IU)HZUTyyvf_A3?k4Z(-)G{jycKUdJvUfLWN@OiW-1ur;;n9R z-m_(*n?`x+i_U6Ts1%mBVmE}#f~X>ON&!6gh8`w%^~ZD&ag~CuPRY<6*ruxt5UmGx zAYoL(-w`|j^H4!+B<}~Abg~(wjvE!S<(GmRQIq%UFY4cAYaun?70Z_LS_;Xo11moB zpTmKwf&1od3*IIc-%yzD*(Xo3L0iP}fye$~zqPWqdX{Kf;~-JTx9`l_c(Jl%P%#+C z!h3jskszz^Cm=1(YmML2CN&Mhqa&Z1}fM>@xh|1M9P4h;B_n^A37HVvD*}&QYM_G&;ecAdWRRj$%j3f=%lND zK|yoA(E@q1Px(!)4gyX^y(dK{Md6)Je=fMMntn|jF8?hDM%}-Ztss;@(#iNJAj9|6bD74&dEurQTHbH>1u;+@`5@k7zAg zN`l$bI$ZU7SZ}~g*g+Dz?L|>I*7)m1fik(nnH_~adW~QujQ}msFb@>|H@p|vQ0xVJS2x;$r7t0P zC^6OUtC}fqn!9L%{QD9rpE0GQ9nJEM$S~9@` zt4QTIZjHmP1bp7w6@@KOG0DH|#u00ySNYd)frzakue?yQ@sLaCYO@@>t(g1!V!9&&w68;=#$@M?SazblA0arqxv+J`S;#R$mkqs5BpCy+_u zdu5N=Fyc36(TJGq;r1x9W*W+u3gR3u!L7D^Z&0r6w8=+?_yXA-v&`VC%cnWec*Qi^ z);w)fg5z1#9u0y`7)5ixcA@jjL??R9ipXVu+=hzwj?f&jo^1};NRKPlbMmM^a2_b%}w}h+E~QmJY3HGQ$956#5kPw>h zAK?Y8U%_*B(2N1mv*|};4L%oq4T1Lt2;Cj71EMJmi%JmZ!oBgjV1SBr1;*t>X+T`_ z4Z-u+fM9kCVN8fTis(1*D_F_X=H2h-IW4gdq`?H%O;`0H#%&QUFt($jqX?d(OI$+C zHmqdHy=>gkAD#+b5`?7F1w(FA)OyhA49q2qc7m@C|KI~8iBVHHKecX#t^Q4;k<`Q( z4pPJWEKc~w#j^!4#6-1GNLsiS(`u_78JZW)oLhWe?d5G~f^AARhN`U3zIiXsLmeGj z(Zhs5ru_>C&brEq3^mvHcAK-ccuSeY;zn3EEkbnmm4yK1zK=IwQiZCPi=i7TLTjTY z9+$mJ40~sw#PL>AXW712wiqrrcxGn4ljp;kK+ZujJ|i#7w{DqwU=&9OfeCVonhk1* z&cao})=&w8J`dzCYzfZzjoA4HcI=6iIFJ-O29=5hee zf_z4U=fY5F*f`vB4e0jRICFE?n-wk$P`_$aNx%4J1ofdAMV@e%Wso}+?`$n)+qMa~ z-FfJZaToaN_@8Ld#ql?7>S zeOIx31Q!&H1pahN#-Ds;|HVN~?B#${zYkt&4*o1cL z_Ac$i)Q+VVX)oYHZEm`CNhG)TKa9PyBqtbz8kgwaAc6C*@N=~vY@m7~D=8@yuI*a~ zE?eZ~p$_c>x<&Ek@iCD4V*v81ZUV~R5NJUwp*KYK(aCek(d|IzFV-qIIyHE3<xx4`Nt5d7l7jbrBcZwtFZ6)gYamb!-Es6*!h9_+!pKd~&ytsyRs zZ5V*8%juB`r7vf8ti80bo-fW5(G_?kG#&uY)!RHCBr;vQR7*yhVBBf<)QCi51#oU5M-pF18bX4$L!LyN7# z<3^rwkN(@T`D97EAK#z6EUF*9a)5fC*Zjma{HQGdbfTyzcT#1=6f|hR$5i4W3=ZF# z3e)5N={Or7w>IMCb(&FesB_8n7Zr7HV)e6&*R_M^y$U&7R2Siz-XMbMm={)BX2WRw zsfnm)DTCsa`7)PJ*?*H8b-e^Umv#?@Xv7%p9>li;t5+<-IlCs3-;PdF4S|xyrwEoX zCL=CESZl9Di-w`ggeT;TVj^r2 z?TDrU?Pt8(_6w|LU zv!Yx3=7vqQ8(ZScu7K^3E))$AL}Ksj-{I3CuzD4l>g$s7mhwKSDBD6V%gU4W zKv~CYRX+oRD2V0sCZT)btNFE~wYp^+?+eO3pC^>Q6cic&upgJ$O5HADgTKt&C)aDT zN|HDVt!buhPQy^L#LW$$57~ zLvE)g^eL6L;PE&Cn@Pi@1$M(<(2NqLkR)VN5VnfL=0i!w>yH;e>?UF$-!f=?O#Y1X zb3D2O{9okMnhCu(oM?H!kyC{T^RAr9QS?+g7&?q6GMoCb}z?X`2)}{I5_K^=(mQLNCd)h|mgp<&uSd!L)#MC&mX=>cpq#d@O`yT5Q z#Ehcb@6>pwad;c$v)_N!P>`Eqm=8R)pt|a4cps?)?$a$I{E-q_d3o3Rn@5bI%oW0O z-HJKwb()vK`*l023pmHsHh+)b`<;-oYC`GAaQ@$rt~AKGXoTgp)4v!tAj9|con}6HHXKBzqqwxLD}K>V9Vx!* zXC>!g9k%%`f@SZl@t zcHAeCkZmMaRS^k}=Qe#SX#Ih0f5!vKys7(x@>KiXsI*^n(DKL0uz)ko^Yy!)7+JYP z&&+J(WETEHc_1nk!2KGk^%qy8wdE&vbK>^M6XVm}wdRm~FJ2lN#1}rBw(DMBHo`e# z*2b4IzQD!w(2PxmrZ@4sI6LrMeAMj#6idlNrPpLH>8;+N0R?|5ePEUr*{i-%rrP61 z%_rx!9(J~ji=n?QlTMAHGBxDkVbi~D_)-YnO5C$dFzEivQICkvc|^yTHGI#vIhIA{ zK<3lQsM_MgRAKq0 z3>1w!Yxn-U)5Rx80v3{YQ7|;z@xH=U%&%>FWXyY}%q)#9_U=hpIBkqEn@c1V4Be{I@0y z+PO@1NT~wF}+#D-Yi@dP`7hB%_#WxuYF((b8g zY8l22Z!|4F;Jy#lNN`P}CehnBC|t^RYd}GtgRUUh_Ac`qDe-=H%`{%T-m*Kx#+7~# zEb5LvEH~^p)BG2XC!W`8AZ5Koe~`WxlAI{38I(^5uZ^(S84bsX3X;c8XV*oy3cn?< zjKmwJM&#(s;i=uWqFv?}V#)?fAnM5yqJHvvU$H7)leDlidPTNWE36Sf5v`ihx+`^rSi9~spZD)2GshkCqd>K1PJ7ed7#m4!m6 zJ^-`_hi3erJ{ygnJ=1J3>^<8H^V*GG;I?-*3FYs24>L9jrKZ=|Py{?Gch!~>jwbh) z8zOq2>*Wpiad*S~NTrd>BvY>DPI8%lI&+ce2IQPQ7?e_ov4tl;m5^fcXXHH$5BkXG zDQNq%L%;{as#nm?W_NXu65ThThT|wXX_FRxpJc@qA36c#wBX#-3Qv{@L~0@ z%et|{Z7N=T()f1FW{uT$FS|wDb!+VC!`XFuxUrK`e>BUX?gaC-hYH3lF=-dJ6s=}n zL>f4&N?faWaXVr7_)@Rb*PhWiY7o@WsE2565cMh$ko86;A1%0ojxwmM1Fzkcjdq>3 ziUmK)bg(+D)09s$_5bhu>&B96A8S0EDj&=O&1AFa#QHqniA5u z&)T0nQyohrZBUMpCMwO+j?Qxs($Iw>BTq+()KuF*ABnFH5it489Tbvy?s z#A=g7o=HW+{=^ld8*d=OtXa-vU^YI#eTb;AX3xYIyvkC|;&J!c6hLjGSno(BcBF!5_0osPY^N|!8gPK`Wmf82^hg{v>}GM? z`@GJnT!*9#Sc-%X=ur>pc9!L?TT)r%hltajwqx?Iye=}Gr>s;jH{Z${>c7yTSLzUV zG`u94NtdXCK7X-kVWW+jC0_O;#!3;QB8k8HoG^wfLo<}dwP~=T^ncpB&akGkt*vyh zAqa@l5kZjZhzLWmP)v|!=n#Ssz|cX;P^Aijp!A`L1r!n!ngr<)m5hKe5vil0goGv{ z1V{+&JD|>W{AT3-{J!Vj{K}K;v-e(W?X#b=*1O;LgiW=s6R#`SDz;A`{U15cTC6@` zSR7fHE@f30F4xF?7GZctns;$Lv02i0yE@I&r7fkC`0pcIdEUvT)9~j(V)={WZ2ekD z%Y`hETC2}>OWv}wo?veZ$MLi_%T7y(3U*A36`rXIiA=6TP8^JJN_i9B?_YXCWTu2I zHo4slie4`fxVL60s~h*=(D<6d>j}c(3xU!nQebBUDg#tfW`lTeOpzVgS&sSZ~C)%_GlMr>v-Bd__a& zTwbJRnSizln=Mi=;7#jB$+DT znY|3v>khsMk4q{(n^7m^k~(+Vs^1ump|qdXju@t4c<$#F$4$J=GUpR;%&xOT+r%;K zB`#^Z*ptGlTTz&ZiM5`gm@D2MwoMLqz=|`3eKE?ldAEw>6A}6KAZApDsHJP8*1_>i zIY3WNZ~0JgL?8}T>Fg=(TC6XsF`d^&8!3%S%D?9r&O5Z-4!tO|xkH=&MX3QOmokza z66PAc^?L*&@eCS>&@^qIkWzOzNca7y4ff)`j##|$^Sb0axml2CP`0dD>s_O*1DZN3 zl$SYD=3RDz$89CB9vA#sJMN^x2c2)X?kF2PbJ&%1gE@HWRV^mG3>ukHrQfEKl4Rem zHrT!w<~L<0#OcFFiAW=B*R;(Sf(YWALz?2M3a6UcKaoh%4X(S%6Hb#qKS}Pxtv7O8 z1nfrj@gv4FD+bXinaV}!pOG=~W(m#;O*wIF&d4sQg@Bsgc2I*9^%>tgm3XdV-Ouna zAPtqXDpM3Bo`LzW; zr4y%`^saMRKlHzbHFO2uu#kn=d17TQAVIYGl`Dp)e|k%WPk0RzUd_WKk>d&k}k zr6CU29OIAmJN<@gF|WhVcY$CZeeM$PLrJVu>KScgfDX-+e#}hJ_oUx;qnH1sP9;G?D>ydgul+}1GZ;Ecq}rWJj-EK z6kAI1i51LRl~Y`^L#mu)|3XwFIh8)wy5y%+U1PH!Bzot559vs-vz_|KsYN`0VWOvC zMTlkoY}~GRr&jh>u?&3I(Wa|9lr+wXZnCO;$GDF5Bx_jE2yaKIqm&W5+SzwSLe83_ zlO#c;@9c;DZMWOp$bKncGd?-lQGT@P%~(uY#YmPjpvHC0$dTcf)*~~x&emH{yAJ@% z;QMCap9yv~W=y67iGw+E&E}*}nD;VSO3)Tb+Aki8x5^}dLPa;ESRGOff9d)TMSE$uw8*&KEJB-=8uwGb@#A6S3&ia^}B%UY46*Uc+?#YckfSG(Urn%bD{B&)7`W-Kxl7Ia68l-;GoSXBJ3 z1_eoJMN%*BlVs~AR-si^+X5`ak0a4?+`H^Dq#%WX^7jz$9+i%F;aKPGW_m4T`Jgyg z{S*?twta$*W1e_BD9ogBd}rr)Ba$00t5g6G0>QJlP6Ol$^wb!Y`ooNXYiD>U+q zV`5)J;0%7>k4k_*sco3Ce>1(a`aTb6Ego1^eu^}{5c6sMS1W192e`5-I_VmrpAe!H zNYR?ydvv+~RZz9a6}Ke(LwQMp%@96_IA=fTbsHNJAWbr!axJ})sm{XA*gPZ}qN{?=jC}=) zbW2Jw>1q_J93wxk9D{#hCu&A6Ff8iaD_AgG@GD)zsb!Fqye&GP#_X+P%XH^S^D^G2 zP1rNNl%51?bYO`W%y?))n6d*O*w^2WaL}wq^xCp6lVH9 z^U%<%QnIq9O7H^~22w{I%8CZOVTOv;ZN19Ys$L#wIO%O8#wb!*C9+#P_z#Fd(@)OQBYaq3qw@7|;^G%W;tJRXi7tz&m6B$x~ zP@ZK6o=q^ur}Pb05BWq;AB7A)#npMW#bg%Y7td|HiKInLcuU2)yt{<3ypZ`&(>)7D z_(Qrtcqw#M<#a^8>q%8h1B0`{vjzr)S`X&|hq?2JK%CTh&x)9e(dG4O#{H{zAG^sx zb92TYspKcm+6WFQoge|Fhj#w^4*HEu`RXD|^Sr^~Q_cs1&Gj!uo}>*;d$S?`yy!0QX}HZ!Sk`~Bp%?j#WR4FrF>-Qg64da-HtORZuli?z;xOeFQ#t0D zg)LZZ`PM_|`2s4PKTn(UQr2iKG3bz@{mSv4T}j03@hOmYR|bsoh$V^)jj;a+pVd$D zt9;W!KB$6%?l%x!+qRGkv)`)O?fFa1P8Q~}Yx9sFeXvLI}O ztMKE>3qH`CuJbp-ufiyvM|%r)_Y?b+nY?%D8qxweDk5*j=-&i8F^H(S70G8e%T+tm z3l&$|f}}CMy#V3CChws|uz!Bb82%^&1Eus7PIL-?qH-q|BusKDXZDzs^~-IcZkaMO zw{XVrUrUuy)G-XmbMFUxB^LjN?8giK*LO2;Q&|<39VW zv!-qk5SWwXJK&VBubqFwAS-P_*eD?2`3)+*mrXN-coVB#HKGTPhSnuS^6{%@9}Qgm zqw6~0{K9iS+vPcQ!WN`b@@>8RcL<`4qodj+J~M@?(&x-J?~8Ex+s&_iMV;8lO;&sVU(n; zvLW&~BiwhLUOckxJ{+>CNisI^?LNE(mPPl}i?y%KWRNBH)T*3I6_)wUpoMGvO;P;o zRfDMMGh)N!+%<)RUJ#P-IIY9o^Vm2D$8={L;d*5?b zail1S{*^^1SV_1*j|k`NXTZpZC!gBC$xIOy!nnIHrMr~S7lf0;MqcY#>%9$-i1=|O z5x~=)QnnII=Wicy0JHxMwCW2g^nV+V+t&WA2HPm`Mr|}VY8ZG*a51Z`!_jh?nX2?NM1n~$^N@U5A#pamL~g5XyVepT|RCe+~CzFS^a8yp=M>U z)0w#1q_Dxw#KOTXrUSe`>~FplaC7JIVN78b9Ap*XZ-|(f5(>td@(->5?C3x0vhv17 zu|X_)_{g?yVZmT@x_|QZq1WCJ2wrTY(S*uoJDk*nT472F5zV5F#O9%mvU5xPNiPfG zT81!ea&9OPnsSjSR}Et))jah0$Q{t%$LUYcv#3ibiKLQd*6U@7dN7NZhlHYmz`p0E zmv3k_316(AQz35t@UQlN6Z^*(hCfn{h|K^6l zW^$-4&656tDk`O$eVK=noq3(z>KeZSgT zUB@Khr-(JWAa(iYL2P3_`!eLm{s1i3WzBtD@svr*~^a8tS+_jzi#Kt zuLh-E!yPw0xShpcdlM7j&LJOi*=|~2%{O3TsygrZPxtWmv5vCSfn~YpY#YBXt3-^G zqk|_d>g&|DTYr8#qpUHGN54*On@L3-5mN#mVEcCs{f(97zfS)?o>tSB_P1NdCfH9C(u3yc0AYGCfq diff --git a/demo/collateral/C-4-Faber-Credential-Offer-1.png b/demo/collateral/C-4-Faber-Credential-Offer-1.png index 87cea9f388d62b0bff5a72b8357b289c915a1aa1..234ea7302ef1ceb17a7a279779e8735b7160191d 100644 GIT binary patch literal 44706 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 z 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 Rdo2I}002ovPDHLkV1nPAdPx8P literal 164013 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

@PE8 zUzxEXdHZ-L0V0D9b&x*)awbiv`4YCnp51Ft>fMbn5NKvaA8XhVx%onzvNlc@y@Eab zagK+*Kqt(0BMKLDHMA}IZ7cv+X<=|%C%-fVgY)y76y7ugJpBm}>c7c-R#+lnG{X12 z6~p<~Bl)0>QPOiTKh32f0`>QcKKCFeK0(dZvn*eZ^8qHqyX&k6eyi8MG6XR$U+@~e*UArc7^cvb*Y|H)EKUXS@>bvC0_GiNV*<~P&wOz_@NhHL;x16{; zp9AME!{50Nvhhus!_S`JYRK2ea6_^iM< zEnlO-1bp{K5tq|FT*g5~)Kwi+KlYEZD!{Y+@8>w_5u2X7Zt~5g?YH0hIsa~guYJw# zqA!N|&0Tq@e=1jFH9f=s(xbeFz=}08ILCXz{PMhA%wj+qj|W?~jl`@(&vT6N%k*HZ zkr+?u$O1*^lcLVTC>#NAQ<`NY)2PXi;~J~rKkXy@Q<^>2j%P|UEg-=q3P6IxF#aWg6ZoX+#q&~j9agP0wZJu;O>BLHJy+3olCXy^k-hfHAu||M zbp6Mzws1}-)z+#+y@%<1T~Q4FwkWhA#6c0%(8&rw(N8@b&zB+39f|1#RX}yme!10w zCm+3LH(CUez!CEe%45RQDou^Ag))Me1O0?T7Z^PJiNpLXtRy#{F(egT{mR3!>d-4D z9$gcQ;rxE3^wM132ZDC>aoF+I^!Sp?6#c-FQKQJ{Xu{dEvnXa5 z9i7Q{i7!rqg&@1BKkh6$MzpRS_P8ZiJy>dfAK zzV$+DfVZ5dF~FQkL*qy8M`V6a#?4)%;c7|c+F-{~_UV#*VUlz@!J;CS@+y zr-+~m_dD#oCe$-GbuWfMbC;HBHV=XfB|nW+`Q+e6)1;@01WtFCp-Y*KzXD3CK8^-{ z$)kNyR93A*o`MqP%d7aYq3)O<1Ok1z#<=`p(vi9BW zrcNY{;FgjB@oMkR#}*BG3yz0qb_Dqsv`kffGBDm%RU2@#j$dUJZYZjxTI{UD%*>T7 zLCq(uSa_eb1c>K z6^=C+lAfr0xK+~KDLx4a(S>#xijp0OO#UwLhu1i)8`$YHimbmjQJQiNh%vNV9w?7jJM#E zVjYyC0ebqE8tC8<_iatR29cgn(dL&|TqmP-DQkgJTW2U?AU@gwxa~r`P>_C%`l81p z&#hMLqQ!@7PhMH|Y>|7nMq9_kutXHm1Fnzjd34(BO&srnYfjyaVK~B5%g0wiK!tTk z&?P~j7d7GY41xKU>L!w%>8`1q|FimO;UD!=waJUa*M9p!-RZW<;9SSlN>rdKs@139 zPlof}Ods5TF~z+^VFWJY+VGM{r7A=j-A~;uJVq)z`aU2u-`(-seXWP$SoLTI8-1)) z)7Q%Syz8)Ay>?ZndDU?(zbF#XNs>YNwxb4qiYY9mzGs;1X7y6{Z9<<>wfz-{L14$) z0rw)MacJ@CjAhLwmP###Xmjlb==vAWi7h&u#{D7b;)9;gFQp@l&~AgxaKl~{aic<= zg?NGX56v}vG;o!q`FF%1ukN=EU@<_$!n+52v$#`1Akwrh%2U-~YKSnU-YZ@PJF@!q zNUeb$K{q`*tLfQ?u}{rM0E!X8y`+TmbrHk4S)D#qL&18E`Dm+Yt`^QFK&CX%#M&A< zKt_%n@JlWZ?s*;<#qWT2m5>n${1hH#KVM?6KnuKy&|IYaw&|HqQB?&DGDeYA=56_$ zSPpOQWXv2t_gyP&vA>ryQ7_PJat0V*8rLaNxm(P;RiZ=3j|>a(MAk8rrE4+=7^{G9 zZS*_zvaW^PdRD|jneaGnz!2q`1WdRU?97ltKrezk%(^^JamwEu0zA0I+{VS!rFSr} zEt3=GlIc65txYvWvP>B_W(Ik;KEjJd3SYwXZ}xyXj5Li_#rK+YJ$@p~osP*$dmz7g e1%taqS?Bj{?R!AQ+MDkHKIW#@CPZVe`2PaS9)<$| diff --git a/demo/collateral/C-5-Alice-Credential-Offer-2.png b/demo/collateral/C-5-Alice-Credential-Offer-2.png deleted file mode 100644 index 4de1206d9f09b7e5527fbec5f5d17fa6f27f8e2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320127 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

q8KtDdMbAiN?9KT?RrvhNir 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

!pH-30cWb0|zb=rl=I5WNyq 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 w^U@@$*ksTAu@XsR-1*;1gymk@diLoZmMu9|Bdv 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

w2c)mkd4nkgG;c2*NQBmu5y92R%o;)Fxg_Yx9nF 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∓yDi6#GY+#)loKNX$HG4_WLcv-w+b+}9_O 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 oLcf;ClL>exZN-stc_*`>hPq>_(A?f0f5 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 z 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 H0 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%0Af!fzKCK#oBA(e8%eelI`V9GRw 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%0ATRLV*mgE diff --git a/demo/collateral/C-7-Alice-Store-Credential-1.png b/demo/collateral/C-7-Alice-Store-Credential-1.png index 6994e4eca7ec81844aa5ae2347fcedb5a22ab9ce..de40b6c11dabd976e437f7e4e838795f0c46cadd 100644 GIT binary patch literal 34798 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 Co=)-r literal 74912 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 u`Xo^g*@J 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 SnY3d7KG(DjuNGc$3i~Gx6mi7> diff --git a/demo/collateral/C-7-Alice-Store-Credential-2.png b/demo/collateral/C-7-Alice-Store-Credential-2.png index e1a2931df52d1139acca9e50970242c4a812e984..53c826af3b42aa6a65a5c742ae4b6099cff4a102 100644 GIT binary patch literal 32516 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 UE5`!B;o-TWXL7Odyu&a51tIcv(EtDd literal 280212 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

eflP{a%Uzb)i~n5xh-m3emxh|7r|30D2jf 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

q_1M1-IVpd2YX&lPZ@RqL${;LW#t^ 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 GhW-aW+x#T} diff --git a/demo/collateral/C-7-Alice-Store-Credential-3.png b/demo/collateral/C-7-Alice-Store-Credential-3.png index e499cb9d6c919837bf94111bddfa5d0968433b15..a1e36cbc7f11d21899409fd8f774a9d2afaf73f9 100644 GIT binary patch literal 30130 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 Hti%2f6!gdf literal 254766 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 A7#;@)f*dAD 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 Z?B$kyeV=$5oPkbd@O1TaS?83{1OT7Py3YUr diff --git a/demo/collateral/C-8-Faber-Credential-Ack-0.png b/demo/collateral/C-8-Faber-Credential-Ack-0.png index 455927a69f8735dafdc65c88a96e7bad399eb32c..e52dbeb326601029b6cd075a9ae7148bd3223472 100644 GIT binary patch literal 102645 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
Mwxb-}? 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
EHQRyg%JTh`JR1Hp^KptL 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 N)K#>V3lv`l{vV9BR{sD1 literal 250101 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 ZznNEoLie{Y4fA^wbC%cp5=BX8 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
^EPjCa*JJJHq8C|zM| z%3OJJDL5kJ{7_!L)#=xPSxMD8!-!*4Ipt7mrvw$CEE$lEh7toL(4ZwAeQVR}@K4QT_e~sO#ie+Ok$g-^% z)j)cyqy?iFe?t_-KOJIxZrn~5)Ge9i{sf**_sL6Yovb#6^tq(o2+zTumUc?OkX6gu zy2BRl{kmo0v)w9NyTh(C_4A&-sN@>GtJ(rmHPlL`Iuyx^_^~EmtyDsAofP(Zj&$3v z0seM}v9e+j%Qu*j!zb+FfsugYYt*$+?p03K^y;WFX}MBeHnGh&QZ?dX1!aT?c50TN3~?ADvsyB)xpS6rxZXQrHB-} zu7KvQy5G%ZB0?H*$kQAqc5v5;$bwcY4|jYPIg5IryMJ|b+88_+MbTi(9Dwh(=a44N znb7**8}x5K8%_k+1z2_Hoj_;p&8C|~W^=>E3);ZL{W~C)036knpPvsmv}2eRoaWmF zPH}(Q4{asgQLI9)Y^52j_Kl>s`bTzLoR%s*bIFTJV|MYuCK6S3Kfw>9iiNiQOHqPy zRXRdX9>heO7Y*p{xVKcV@h@h(43e=}sEil+RY25a-Q$)cmMRt$_4Dg84l?_&#ySSz z6RJambD3%0saEVxHBUK&*@wt(&B*&7?5~~fm+UY1lCs%cN?)O*&W9Z=5@umZPt6h{ z*ujlONC-A=>a~q-xG|1W-3Yr|Ax<)sdDTu2EwpZC)z}-XFvswwav7gmuqiaZ*FpV> z{rWvTep^JFpMc7mnlP7rdUR!d&h>!iZP}7Ysu6+fncsnvylgfb3L}a+DIBg+sw^$N z?LU&6U7usqL4PWttq5#XQJxm2PGenKjC=mlc+=is9{>ws3~4oOol-mHUILr#pjaqv$Gf~%x)##iN^F+ z)uGb^u4Yth{sQWxMPSuS26?sJbT{?g_K5jx*Dbgd_ns7h;~;t-WvPmZ;!O(Hax1L2X8`nBigL7 z3n0}>fK`@jpHhHT`!*%DA+?~MRxWx=2zRnmr6a94|^fLMuwRL9@dCg#~MX=3H5JoS7WvOYK27LaLf=%ST=GHWyf z-$({#hX$QR!=%{%u;oY5Ra170lDhr?WH1P{){N}3#)yAtE~|T`1b>mK#iq~z9MS-1 zU!%E+8v?1y1R z_qVaV?qYe1(uyt0#8k80tBxAaJkMQm3D3RsN?{bEHDV;QC78-6QT=s}Y5kna2g%aBoHE6t`!KH;8 zP4E)yfT-{H*G@07U-5=rqD^wy6?anXw@>bAzS3=wwTwusmHp@w`b*1d1SbFI-kvxE z6&1vo>X~aDro`wwE)N|dO@q_2&tQB&EI?yLrDlDGiSo5v0kSJ#;aoFR#CRiUg(CmB zN4TdFgX?*RaC4YF>tt^r6@Q~QGSpGvZEsdp2OH+Qzu}CU+*49AH<`dFE~a-U zs?#@d*+kB{UX}o#ba36AV}??e6Jg4i!H8aFpD>xJL%3#&abuA9F(O`@~$= zo_JXgV-0E0YTv@0-9-;^PG@K=)jI4JM)DDPAR727-Th93C->8-27tj`n(}UL=0Ge| ze#iKcO>*kaSeS64Qvs^L@!g%EU3jvCDyA=G2Ea=36pB4DZRSbVqZ$ug$8Af z5W~4;w9(RnwX89TP5|BuUr$%~_KhY?*T^RU%RS z8zuYR!$XX_{Y&Q>9$oQk&7yzN#mVE~;*w>40w8&vA`lv8E5r-fS=a!#x4$DGA1i61 zOg5{49TxPnn4196vs3mWHu`G^NP@)vV$s$tE7-K+v)2i{$x0ab-UJ=Logk31lNnk4 z3zxYsUvW8egL-*)VPm1X<(dUJ@9k1%7xvt7Lu0uvKI4U8;qr`7X#>{0l=D86LcgV@tFqBB@TR$H*YL0^*Igkx8 z8nlYuuD0P&Jk?8EL+W%GT9iQ>S7QN{#TDl4#s_SbI`Rdj_x%w$=4`%R3Ll zC9|Z|g0*&HcNj~_N{Yco*IbQ9^@wlt660)AJS z7smo|=g?qz&Z@)y3Ue#Nfa2zv z%6!pm%A*~z<~O95Z7bfbG)c{@HI4RMxEMPrZsvxi%K~jR@8!s?9C+s%b#fwp0c{f#uVf+5DhvfqY4l zZSamEU@JD}#}Nf~d5y1Z;oxEA-gm`Nuqqx3(}hK-SSf)7HGd7mRK=~U(iHnE%c{Eo z2(((Ww+0KmvcyK`C%(}Z@Lu?sy-bsxyLhdj4D6~+z zZlLl9mentQdNi9hl><+s2GP&SI<>GZ3bS}g2EZ^(S(RUQVAH$E`G+T0oqzcoA`owK|dUo87+VR?pd=m#;Sj~I^u=C<@}f2!7GL?ka8Ea z8ZdZe6kl}(GVhBv%?s)f*_t2KIS`_k7xtbsL7F4>nJBP8H&izR&&oO@Z1tlBEPdEg zuqE{ieLcwAyae0*GwXM5a?m=$)BtG7L6&+7--0^q>Fsu=4jCgE&_5|4P>RkG#JU)-S&8 zJafTgY-n(&G0a7G-V1RvXNoJ(tZCI(mp*iTU3Qe?tzp9dTzip~pT4}p*aSetI){Nw(4 z>+$`ncXCW*7ccL)N!F0`KV9v=Jk%rv`55B;G`n8ohj_6(*3~n`ayp26>`e)*ngZ9| z$}@SsNf7kTP&$7;C}cM9O~=1>wZz?{lW~rc_a(P8U8fbW6K5cr2)*ViZyZ!_imKkU z>rTDXOVnff?7z%i9~N`^87n3zA1w%ahowK4jJBvu2B^Q=c526+n;>-t?@vEWqDMjp zIJvkOj5ljsOmh}(?U_=yVL#)tkEjie9Q=3}j2HdPz4^b3)beY4~2b8=!r)FJj~*dQF}#+{eC{Tr_$&m;cvuMn%+3(8fHwjZY-P^Kl@s-UZw zn)qjN&L2sQrNZu9cG-Or55^?QX}LUrPmxcTc}KCn+F=r;GNOYzJwIyDZMB$8<;qpo zNO#m++G`UI?(;BG4Bl>fYt|Bm)X8XB@r;Bnhc2XQ_obcMe-IB=l)Ta1d%gb3>;ZwI zn(HPlHp_@_b5fQ0mnc)@zu^OoPpLUdu!b7K!;A*X+G{H zbEKIH)}c^1CU0I^I`L@*a3sBsD@0MIMgL-qC)iul#$bO6A_>JF+d;lg&Ak)LS@4l9 zGs33@r>ibrgZmVVkN?KfbdUw9u5aM;1Jk8xo(EPH=M53^aZK5I7=mGwn<~o7B(GI& zEV)J8KPG$hR(G!HsIAU*gx-^!7GSk(dq|Tp@Y+RQX&pvn2OJ4B(>_cT-MP$Uewmw} zi={AxlT~%^GBBXvt7Qb69SF?9=2}K@%Mq%=FVQD^YB@no z-8cF;-DC8-+{lafDPAow+^ESwhfS8n<58G8gLA2rUjO4C@$!L%0C0TXMD}>7Rv+Px z&O*)o`M$alTo`vELpLj(hbE8q8>e{Wk?UsX%2zz0>F_efL(JBO|T88d&(3M~hesN0SGfsI@}OGM38T z@(}@gqFc9){<9AY(LlhND_9gIutk95GDG{{?;fvyj=30A-mVpcz4cR-L4XacP#oUA znpeTzhOlJsS(eY&%C%a2gt+o?W+QYlDtG1t%xJ??o5A9%bhOZv)4y5Vf1cQESV1sd zY(LcwaR_SOR66b6=Z?J3pNgeeC>$_?K^y(A)HLSTc^@`GHN9_@TnhvJZEx@&_n$DZ zJ|e=zdk=b>`gmm({)~}k*#AM$)5Y2uWrp}lhCu=KBUHnL*urR~+PnH^X_ohoUx@?3 z%@)7&I$q?EhwJMPHE!JGt%N##lEm>E$nIib#*`)YWLE*x^Jte;+cTkKG4pjmd6P?E zf=ADWk;((7S14-l=DtjYV#^_BSKr>hU!)O)St*AQyHS<J5L?C!^S~I4!Ci@)S@G+g5YbXj3!j zt)3$*8C~P$6*k3IR1>2p_l=SUoH1bN^-u7SHt1I6-CQk-YuXFK8K6&VmZ9^<@(TEkpTL3C@mx8`Mebr zJMZ=3)q$DKA~OxovRsql!642)I=2!tWN2V5Bn4>7DiRf?zhIVkV5zB6_#LBp3qrG^ zZ1%k;P?^3iTkvgKkkX<;J9hhUWW1N@F@&vgVXiDW{+80-M7p-Z`89{|RI9Y2H`8FN zr#~%3DJ#wIuF%BxLD3a2ezO)IMH2)6?5w@%Y*4HFmaVwCctZoO+ur+3)&IX1;=3DA zL`U9b3OW!sSV0NzSHn0vT!?6hn@gK^gkFk764Tygo;x|7ekjP?Ho!LN(1DQb^83w9 z`Om14Mi|>hJO}tV=x8RHOe^|F}k3Hwrus>zg)Wl{k~(>jv}d84uLvgF?%T1wtlCg znL7@#qq<`I0+8$!sGRm()pqr0#-ut>`9?<*&CEg?uO7xln&I|h&vF4uT9#XI*V!DT zNR|q0NaOC^v}#{T*<{nu|6U@M}?8&AONSaq0h9t@K$GJ?B`@c@N8;Dxuf1hq7SAkbquF1CpaDl>v9diMV_vk*W8~LmV!J*tvL`b-ed#Ybq-l8-?WMDDB z^I3x~r}8eTnP`YnTbggM{yFx#`;@KCAtuv`;s`j|o?w+n^~lt^`%z`(voOcX8aF{5 zVG8IicJ4Co!dT@~2^fdy_bFQFczFTaW!xBpvDq9X{M*F_9(7>VxM@*;?GpuX2vSfv zGs-$;#g4EQNyiuKD#oVW@lLiDn}AbO*G}MbO>EHfRmja6sS5J@pFtbjb9dIOdmV_3 z+(%w|E;W!9DcoUon}Fzvbu8W|A?M@!m9o{qwpy&gm-fO{0v(`z#Ki4x_6qG=e)lpk ze=9^teW^V}CI_~ux!Xz{#T8LOT86}B_1`VP#Bl(Jj zM)I{94$(4~IlS4@ucx$hq ztL+z5uBLa6`BAlJ8N(jZhkn!?w{S_(jM9t8(U)S;kN$WL9xnfnvbPS4bIG=cae^lV z2~Gk8cXx*b4Z+((q%5}C!FnCBir_uPnK9hBR6~Nz9osN=Lu;;+(sUV^32EU zXKDvJ;>-YtXGQzS^39_{er!sPiuM*N_z5^dH?ZR#E=H_HDQ1M23$!m zxjvx2yGK$#uZo+v_UW_#6{1z~-CkdRB9C`OEm9rF%t=h&qp4@AAyaE~M^5h^*^tH& zlbTvth>l${(In%6vK>aCJj#!SPPXx0yQUeQ9FNjR2PzL;v&?<;D0-SQF<;c*!3|n? z_x#S`6lBx(juxB)h&d=DjS}&6A=4@1_@FbmP(yT9{$PS;AB6aTP`@$JJONJay$+j` zq=t}W(oqD5GQbaU=4kL_C6RIIrAx1)=5ib+kDJVbz7Z878R&ufTG;4j4x0 z+`jzxw2Gfi@*TT?7oW+P010^8#&fnjP3ClKtTm|+E+vM|L&-`IdH3gY$fbu-Ab|W` z`>oDNIg^yEJXGBX{I!QlUvqgpBZKRb6sADJZnjGk56gT24-mfvSNlV80{3tlpWG85 zWJy|mb3(pC_+D$!J_b^f^NbPnftndHJb4yu~}gHSV-@(ri?<4oA{R6fVUd*M2GE=&1ML)@>no`x3`|i2$(~ zxgx|>zQWicSDR^}Y@T_+B|4TJ)uFG}WJrb(XL@MnOgr((Z`oEtJB{YjDLtR{yyGZs z4XtV{nf8lw9Sq`lEx_dvM7^yF7-Vz5xlyo(^?4W1g=L~YOGH*>>Qpsm=w=kf(0bXX zNVBf4wj85*w((&7#kP@N4)TcZq0l{$1JCJgL%cPEy{qg(DD`>}a}ya!Zzk0`1BLT;UF%6$Q$>&ba~Ik> zWcdAZsu4%7zzu`4w`1U+`a8ng3WTD?7Vn2IHbx>p)RBAf-)sG7O3`;Fzl8h_IYkC3 zgI5YcZY2XrIC{Ay=I+Jc{=kjT@s%7w=mVh^6`Jd{DbJ$HMZCFG;{*KT@j>^d4kc@B z*rW=)jIxE#o3rh~vHqCjAV-krVZ552p65+BJbS5(iel_k)( zpPzMmO)K5eeRKw`FW#`-WX+8LjYZm-qvkUrB=0e}-M4FY-btW;@e7PW%F`A%7ylE2 zreQwRLC1(VxP2(;;?_Sx4O zF_s7)xW8jaJ9L3DtC~D`dL~;M@G^7uOJt3?_(o= z&+P4~P!OrURuiu?HFE_7noQ=am&~=Eiik9Uf)n-q92hI5x z5PeWU?s^}e1)tJ=*%!4csrSm}6GF>toi8R#pmi9+IsEaN-Ns z|GM_4r-NrxJ#I^+zmTV`l6g-IXRL*x?@8jtrCWneK9@(vLsoxmU^rQ5x4hlp4iDep zfSgwD{F~&eE=1I*sN|flH0cFKJBLy5^Ql>*bB4ptS-;>klxRuvx_ms$1retGgO{`% z@5j52(M){5UA6hoEb|7X)JZbcDtzw4qum>ptH*pAh$8FgYUloztbzN~I2Wscn_pwbxaqzXK zlZCrH;7UB>$09+MA(hSJyRLX@G}GC=1gp}XmBE`T<_TLZCNzSmRUuVjzUOD0(q$7^ zZv#xrp6Yw{Y^6R!FlWheQVi#;wyKVPcwxTIrF~YXQU?M+n>$pf@I9c$C;5ljQ1_)b zo_1-wxHd_#iu0m(ftC=bC!;B|G8yWtu>_rzgCYab+v(KX&hQp6JaiK2sJ$#-<``t*;OsB;j3O?i?mZ$i*O~y}vTZbUchy40P z<6%;aPJeJQg&*G!-$OPqVuo+c?TbP)+*Lk>?gwwwTE{%Sug-`+|H?3>wdk9!$7ZR#RAy4R?kADY&%#f-*6>hzh8H0q2s^^LNM zm@JJy2P}+-1F*P(>jlskpf5Q5V2ee7zz_39Fx~w47n%HbeNfrRDkq6wYI0#(0CS|8 zPb|fg-cb)>gkI;rN~lbY@#$Bh0XH74Fe0Ku<^A4J ziH~IT35g!icD$x=hbW8Q8y*BVM;t2b6b-9BEBFM#_F&LA0qaRSz;UqUHS411=& zeph)4GR8S-K5bM8m3FHQmM$}=P9(D%1k2V0OGPW^OGg{eo@mx$^&%B4FCX3B>CI*i ze8FYa{_JK-7I#(Pas6!(+|ezj$+FKD0VAUX29bLAc%3sFtl&G`z4-nl`4Zeycf^O4 zNpv&pi?vcEfia*F_F*DNIU9~p1x{v6dq?-$Z3U%%bEl!;UmiPvIf#LoNo1?T&&J7nhdN=T|zg7({V z+B=IAIec#N7c~J-%49@+_V`CN@Y9Fj8eBYcfG>HZuX{VCDc8HE0+33S@xrVY3^ESc867w739Lo5103|&cs zNrzG>@H$+4e)E87!Vlr=r$+WVBuaZp_4k@R%V08u`hT@a-KGMg8$tP-eqB#-0 zGVF;)MouNW3Xc~pI%C^@Xlffgmabo%tM zKssAWMl>ecY|Vh*beLTbY0!s0&fn~z5eosZS|pqL&2Xw_>F5P)yqGVKszTX$2E2w= zyN_hr9c^itKaGIhhzVbyi)wB85J>6R3u^q?@mz?YwJNyr2#LBJ7OEvx;UdN|XVW27 z4r4}w@J2?0s+g3Ut$MiljORn2+D}S6u0Wayogu3k4iP#1rC+E`A?6V8!x_W@Bt4!@ zX9cWv29HbOv~w3YW-F~%PMRwaH0FM<3)hRIZBG4jHwTN~fgQewld)aJ{H+GiSh z^sl+(|4};FP(%3ssk=>Vdzj4~yCh+6BSEh16%$w+dK0Ac>Q3F-c3tM%i#6{o{kVU5&&9d|fH8=iIUU;1!hsuv^r5>&K zWE5lRrdIPj&myYC$D-wtvI&yM0`P`zE0nKDpy;|7EKvHZ9JDEh<#fTakFtyz6jTmF zb@BFM9KYk*LsrJ0w`BoFPDN2PH~~pDW~0UAlTX%K`Kvrx#!ZOuSVi5TEZ<~m$QQGQ z45Xq|KMT{(k{#GkKD<&pB-;*TJ2N(VL!~qpYF9c3Zuf<~SwC-Ty(LO7;Yibc#J}J} zg3T;fyR}`oSmFPv2+~K1(|EoPIKl7Mt3;E2&sIDaSTGlhg;lod?;o3Teus6k*(46t zo)Lt2cL+AJU!8*OjwpBIuJ*qJ>e4J8(VTkM-EohoBL~QVJbr9&ODX5MWo~7}rPesk z)lu6f;;WqZLafZRrg*f_#{1)ijU8tI4UPwb;|e4X7elPl-XU1E{2Fgp)&Bis*Q%id zUd9e%5)dXh*mdqh7CHFVvz?kTM;+{7S%zA4y*%CdAa>Ma%k&yo{z~G&A7@s&b z-KuY&PA3~ra*0G!V6=cY0nhpnb9FqlL<#lK-^`w&=|F3pX42TZn^hToWbWsSF(<}F zF(=|m!_ZdxxMig|;VNvh$#ax%k}tD(9Yt;17?Zb_+x*{PqmOv2h_@T5Lws)LCNUKsCUeXZ zZZUvZ^3hkr_tB8$-f@*cBg%B~=y}yR;aF8K4p#@9HEQ$@V*hP+zIN-5oA$GC2>3D1 zu~5le_CGLoDOQ^(F#WL0z+SKNrk?Ol?Y6aUmJj%ymL!lzrR_@Yp)UxD?|&|rXUHRZkecDmuladQIA$Nr8o*}MW?{FkE^ zt?nCM@@o?&52m_&@qGNpqsR`Q6F1pUx0jWQ`L?N9PBW$zFWaGt$~jlYckj;j?vK0W zQNG)L?NFoRBFWuhG2;rBZk9Yg`ixY3Ie2S$wS3Z<#Q4sw2A*;yg3tTv!OuodN|`moF^_Yb*X!W z$t5XuhFUkv_qPRoPCo3p5on3T8m%u4EZKurzVdFL%?D=5n8@ZU6=|@|KWC|NI=bmgnIQL8o3?zk~RaJe%?VHRhnrYBl z6jkah#zoiLyLh2$VJ5i;ZDQwMWyQ`{mzD@1oOr--b+I)-)?|8n65e06dm!IuD$tjS zh~p`=T8o^fHE-0G>@tvf#}zT_aF~p;{wT;P6E-gRTFq{rl61V zDXEJu&pTV46wy-t!Yt>4Rc7F~-g?fL1@c{4^8@C|Jo!b^7{O`IiuLdbEl0Z>Ie=&k^XN)C_N*mu?pAYUNZFGIfxY7YT-MOd{pWW1-8A$aRi5tz(uKv+aFr`IzwGi)?S)$7$$JcHRpaV*e zXcYL2XO(D@Sp|K>aL-T5K-XEHEkd7EXrT+hNY^v2qIq|hOHv&}M)&>_q2!b8*zn2zr+ayIYcOVxl%h%lO(L$98{Hk)fa+5L*7m5~zj2l8D2aInB(^8d z2hxcD1~#vUXG7S6RLTexe;Td^&RN0etCu?czDFw&J+wrCyQNkVfwQbDXopQ-J=y8h zYEY1jd+vUiV^lsxu_^_u&2FqV>Zf0NU{PUm6EBu78oJe=Vah^M4PhlspQi9@C&^6S{P(73yo znUSUvR6SJ~9zhNXVVz9`dMyz;6Zf{z<(hU|`fVAtQfOQy-d%?cy6Q+XO!zl=RBYYL zgU*{9Fnaqiz8R^{bt_(Zm*9}<*A?-7x8Tw$mtD+r;PD(a+8LYhL5KQg;ta=qOE9f; zR8a`P#an5Ghd!6=O!13)@1Ot=XmTszlg?oGq;0=nTL0mzYqJH1}_eh;jL#6dOYu-SH^nyescJnvx8 zCKeDCAz8Oj+mAaw0`OZto4@<8H|qIK^vl_A$JYd`g?s4;rmGS`bbc-cr9 zw<|X#pyx8E%&6{D%Mgr352I~6O9b7vL zTu(t)Z6;}u{*AjTM4N7oQU#WKYq~6 z??8Q6o>b8eed-?zaJm{gyVSeaw2b?@M$%W;4#;e>8c)ekHsiGt#lafAAf8zA@>sr2 z?wFrHrRuw8$@A>X=?0kgrbV_~mgqqA3FZ#F{{{EXJDTj*IpEM<9=kSF%caOf8~R51 zgZS=+^TyR+tnD@?qjYMOT84FQ(G6$;Z;VN|tRdmol_vrWTg|7ICkpeIP?3KWf&Daq zY9U>>&^(WbRjF2$V1APP(!A!{Xv$~J%DkasQT&8ZJCkc~9IjZEhS43TBjjb{s5`#X~g(XkDsfpRQS7w~Ws$I#vGOjfpf0$9$5#8cba}Zl|o5M0bF#*><&Pe*#&o*Tq47kQ^4Y_3N z&iZUy&-l$+&q#!$UMx;A%jF5-_1;(7f{_G<`RUy_9Hepr=PI9wP=Wc z679|avCH-wGq#uv&Ue_V86u5H+<(#y-p~#bmPvB}W7{||L*7+d+!`5eZ~AL@rcrL* zd@mE8no}KYl?RtO#>Wi!tVh)%LJaN5rh|$0^G2bkjIv?4N7#MAHL4PW=!a~B=&yRy z-+2d%YaXaSc^+un2uw8@U`p`si{DPqRgv=F9ij~>$fZbaDch$4Smp@(ru&Z#?f$_m zxI%X^4_5zVS;CbUny@;+AX9#=bD9TRb(}z)Fd*(jXs~ObyVmNGw27ci@@AExA~FcL zBp%8B7Chcf@1|S5>Xf3->&hm~Vn$`}W|K=+w2Uo>aZtFMt$;$BjnSlZI z?pR!(FKs-IxHUewI%|+6W)|-n0&+k_fl@y@8Z?}uC*dRHSmuXCj_FD{pHwB`c?N2p zb2N(=h(B@73URHVQceEwpv$^x=^l*eSV^UjfNt#jc}f0WOO7hC>fK}px>tOBBK%8{ z{LNX_h`YH)0^XIYi3LaS38?h=tC+qPZTEcQzW&!4*13)=N!xT2d z@Lf7y3E@>kMU@=ERk*{Po9FVCWM4^l%mvjYh|P0WY-cRwEonaMS!JeLw6jMz|7r2F z8p?%saNm!+yhi`OFztXEuxSTeEjFEkK2F0qI&6k?h)1w^QS;{7441uSVEb?+?jAtQ zwX`N$5QoR!4F6+>#o&9v!8A@E{Wc)9BNye&;YMeraq<<6_-6ifD#Kh-;zp2!#V%d|uxqVGsngRNH}`@+Yw9B$waT#F z?7Q0BJ`su#6R&$*KCzp|Axk_<7OHiKqh%@85TlS*v;ZXL0}gLP4Jdcdn%^0>uCJ#u z9^#)X_BFNmY!oV7Yc%;xZd-QwAv1q)@=`yxa=TP-+U30t!wbw9qkhM4Q~d}>utA4A zYqP>idiNiZ=-@=P$14Vi5;S7V{LV_u^M;)4&FYzcUP0d#@%}Wz+q!K&X-5!dE3rea$K?zjTzO&02og-noc$9}*;DXIx zto-jBWfnb{-vcD;Il*|B5B0pKR$9Tc*XZ;c`7z44*T{qPJCp7u34W@{509@mMOHcc zazNC;h+b%~%}H-6yz^+^)aKaS`Enyo(b;yeRB*VD)17qT?O&9p{$N5Vf|(e_aEX)* zK42tO_}%8M>1HMe-GP?23%v8sqhSW8OP$f_7<=VL5-=~p8!gkTLp8ssWTv1IN|rmX)JasS7mW7n-HHwGqJuOahC{ViIZc}`kJ)eEu{-iu zrdU&-CT$5W6&4aS{bvyFpD%U)NX@_VhC=u9UmE~a+;7^cI9N6FLX=#w9;@GCK1N8}(~?B#RyN~{NKSihL~5oxZ})Pgagm#J@5HOB1jJwQ`p!}u{b!uq|ENp+ zVJZQih+&(!-L&sc6K#C4-18o>k>N(iPw1Z^GM||PHUT%noBEG?%b**KdiSLCgTjz1Nj-#+=0T*8)3_V}yt9j+2DwUSh zHwr4fi1yLS`ypvVlNumeLa@DRUSDqgEdo~O0M@4u5GBwrYL~AZ=g6G0WO;!Kw%mYM zx0mUhL6_a=-n+CSq8ILAPp@&$qyE+owB|)1#q@HJf~u^a^G5@fw~(SG0H>-AO)7NG z(Y4%0NpLEMO2aj(5f~tb`+lJP(^LJIt@ww7d3OOd235KDjQv>QNhRXy+$^M@(v^`x zXz%CoX=m%}slWcU|O`wXh~QIF(wiMF_d#%+N}$u}iL-uj|kFORUC*w8P0V zo4|eda<@*#fPZWDvN{>CCvx&!k=OxfFZZFzu2`j~YjU4jC{ZYXWDy$V8TXiazFB`f zp0}3aPimqlQHvC{JL`G3Sg`!!c@YRM&5l32kZ7I9{UWOC0tV)*-3Y!FK5^a2EE8n3urNQrF5_>`MU_ zeTO;F5ftg^PcMTe&0J{Qi6|?(a1pq!^WxO*?+NHznpa7A+Q>};ox6`D+s0OfoV|fM zk?yZDJfrj|BWETO^}Kj(DJu&rR^Y?@Moj18*Kz)TKMlbnk4Sz*jQ3v)s)v6Y;6B0w*5a1)VmQZ zZ4@HOJb?#QSV1Q`8v3=u7g?pMDI&vvh&7Erbb*YrYxQvQ!=!U4oU;GzG5#MNJe($Yetjj5 z6HAqkgjFlz9KqFMZ~y7(cvc%MUs{e@OY*S*c4N$V-9;YRwDhKwzjan&yfXzyc__t= zM8>2LN0n?RS*<*4G(2gkp@BxO4B$e`=DNUosyb!+6Qf&(bP>cz^4}0LNJv z;P^^MA08U4Lh>p?qIY4&psTzT_5QF#PU~&R+K^WJ8_9i{dN$j?%3}PR4bZp;Uee~h z0%8FCV_Bm0>8(|kn-rW8KMVZZv|g*;iX`=a^H2YAp252Y@(p;PUJTXff6v8jbW?zB z0Bu`!pYboM*Z*$Sp+9VJKpe$qKJkXszd+rMtZ&Ygi`(d1(f_e&|0$UCsb2-*Z#f?D zyKK^J@IV{|!RS2s!sv|Bc6Xc%ivI$8f;f#{{^qm@qFdv80aFY*)o{nWfRck=@k0=$ zf?TYn34hbpPN68B)_E&#v04MyaIVf5w4e9~h94+_T!f*kGdY^LL6b%vyK13`>6p8sn*{yPWtFK-JcLM&=} zplJ4R+-#~)ddKp06r$AeaYLSSA@>x+_aZ_jDIR;`*?un+o7Hr=-7s5eNcTM7{n*%TY`lqHbF$w-vZE2c6 zL>nw&?w&Tp!VUjr5dZ$yfJlL%XQG!{C!u*fj>}b6j`P$n{YuZbY8d=1lOtZUk6RTN zQ{0eYcmzGYp46hV^tDfXzS1vuWGfi2e&SS?+g}qW@evZ?j3cY;9RRh(W*=4?DX4kC zo@h9|*y=L9NbG(S8@T&8r8$ruV}ym{i1Y``yFW_%gGV}780Zl0%$1`(+BO{s?u25& z2R@Fr>hkB$jX;=LHE)xC{ulx6zc;%eSM0HofPW*8d%6zh zIFB!TNIT~>p{#x#bsi^YG?NhPLWDlyd%V%$)iO8l;*P;Xw+(hR8WEXmr5U*1jFus)A1ll4aETjf zqKdX{htP*mM^!K%s)qG0DcM0$0YMtP9^^lN}N;N*T&sO?ZmE*1bg>g0MKEtI+NBm{CK83x{;n9th?r~8mq6#t69ij z3(0D%k2xj=mJSYTeF|u9Q{j~aq+e}cv1j%@43QwDoa?wOuIrQ=6Z_Jp-`05UzyGlb zHa`*dE6=Rc9ljZVJp*7{8@hlxK5ACDVryFwmii50XdR^jU=r8eY!kT$H8@0_<^Y8t z(X`4Wau(34v-r;?n^IwPG;gxT=f2GhsS;I>_pjq_4>@3jURu$lk48c1y*D%A2u=sd zh_Den98-3dSHlLiZ>JM!uWyIW!Y+I4UV?rUhfDrw__*?XnW0}(OKO{@-gf46co869eiJg*O-^as&bwA;Dn%KAmqiCDjusKc`y&baQ{ z_JJB6k2+DuRz$4iw_X-aYb-lj2_HN3iS+o!d6Bh!_#b*=mI@?i!mAlmwcDcX{l;*g zoSCAT`$M_OWqTGF0j@!{1WdFMSLCUz^5oznauJ3N7Yv4`Y_9|ArR}R4Z2gTSH z%pX|zF$bQr@4A!pfv<0;Pwws1#|SdgZtCGmmz&3FGL&m^Gh<4nM(Hy|MiI74>3;K^ z6Z%I^fO_>9TJL@$H|sts&ZJlSnAC&}Rhnmz*Dim$Ck*AG0Q~m|R6s>QQh63nQh$EZ)g7>eVst|d zRzmxFsJ{w47m$m{R;zY4iOkmLn>q8%su(q@e>>=cjf-ArqQ*U#|JeYt5@cp!yr_D`{aoOB;c; z6ma}&B{HM3!&=75GV^5b_Pml{7wV!4#p4tR&4cutSbWs}Ex|lKe$zbOpQ(K$lDnPM zvrXj2?tEPPw_az#b%4HM15#ElNzk>u;qlCkgA2b1VdjaQI7u-ZF9E8ALchV{@b0Z| z836DX!O=gx8Y{+c05TAQhPIRH+BBvJ##m>5@(Emt=z}PIPQ!0N!}yciwl0IzchE-t(Wg5zPH5rYcpb*9wS&#)W%G0H_AsGAcEsbAym`N+y(Tg)z_+FY06C=? z7Koo|3`h7Zg}Nt|u5*k5Jl(s?q55p=?@6HvE)5M;*|V^3JeHh1a2}izMlME<{D5Jd z`@A?0+=94fu0HWPLzWmuJ1QaZ)o!Mn*Xur=s5K9rJMQel*)*%lMVL*!Nx=ziy*D#- zZ90fn?0@8$Iq5wXao*Lz&qT(hSg%G?`=nk9;+6BF{Ti;;Z{2EcaMa zIDFJwEPynD_Xs{D6OL+_Sj6_qmO^@Kwmij)Jz~e2nu*LE7WnM5>P_E<`T2<&VkQ;j zFW~u|!K+_A{`c##w;`-ks_^sMot$|e;it7x9o!`7bFtvJ@0#g8 zPb_6jtf~^yED&GBGZ;xAwMczkrue$a#h|;}j^bK@e?%e81%K6rYECnVV z>EOl27ElEN`EbLAUsy-7zv11|>L|r3m~utLtF+9lgJQv-i?;a7Z__oy_u(GlBYgm) zlLI{#x8;W!a3Jj+?hPeObY>PO*&=M4obx9mSSo$F*&NPhK7gd&7-CNH(` zqJP34AQ1Xc?OqS@E~)@kP%TdY(BwDx49w3Wvj-hC@^vR{4g0j(zVN5-LK6=Gek7X* ztF;d~LqA@zToRMN=(^i35e$5i740XY-&!Yo8~SFfMxwfFgsG+rX43WEu=N6f))xWi zzJIfsM2Jj+qoFk3@7$Dd4VF$@;oCk9qTJ`QR%811&PFKX*qvrDBlx=HEaw>;)RkOo zP~9}UTk9ipM(YrnY0HBZHww9@~2}an%DA_U%PFk zhE=VEbK!9Y-QZIIH3^=^wF+&EW-g#up|AQ^Xq`4`dEEl$Ea(3yi!!l3fmG4FOs{!= zo&J_tK(dT+@Q6&qpl}Q<{}`|6#d-@Ze(PWT9fx;Ztrq{@#V&gCm*VF(^WpsZG9FpY z+O(@98_2$LNXz&9DQjlz|Df}U+$;bF<({5uA$$)>ge<`jeK|+Ao~L?z%V7X=)8mn?@kNOx!*L`~ZL#7PUnJRL&zhFS?yGlER{Pa|m|DHk#`{o^o#00yEf-W-akw=iI%@vq=3c`Cl zoen&2>uBcQ!|9#_CsY*?YdpcWdHN zZl4{-42Fvxcx%3Rx}8C3iN^1_y~Iijp`+`QYOKI@({ADl2CaNRq4lX>m8M<|X9l2+ z+3>mbF*A(~Fjy}UK5?uT7#eWg*t2I$8=rHJO%|lfy3Lp@&E5E*nC<}HzJ4_?5C#dw z80AOGy?DP?+*V?G(q?w1Fgu3wh>f=Bpql9PG*_&sSn>=kXVFID)964$Qs`WL&!Yu%d9~`L;6BjV*xSjSu)_K-0DaD_YG z=l4^ySfIgRGM7oz%H~rVeyR9AB`yf?VsKy$-ktQ#qA;U zd7sT5hcl%sF?Ad?xV$==ug0sWxnj)e)t*`Qknwcv{8}{LeDPDzf>jAksEBS3a^KW$ zk>t^AD|Bi8%KNNBulQu=>DAFOei@dxoHl`lF!?pKjmXo_iOn2QmL5ZW>g$D99cctS z%{~-OK?aY|J^x*gniN3}pK* z8>Po<{^tNR*{2;?-mp#YUURoM`@#xL4@T^JxztvFEbq~4t+g4H! zVT*X2xUiT_Rm{1jEj=M<0q9HnCX#}JswQ6R0*lk(kjQ~LekUQ?C1;-~IOM>%dUIo1 z*VlR7SCd*!Qu%tTI&&5|l&@A*)SWh@-_*8}%RS!xhFr+U#ZZ}1Rkwr12l)pC zMs~3zg3?~R$QPK@+8lc-A4erVT1q<;t_TPIN6{qx@5U0$$jbkJYpMU;Z0i4gvVr^l zHA!d64e)I9S^OFIs&8irsj^31X&c+^-0J0l>DhTh7@ylH+F56pIq7t~($RVp&)YAj z0ES-hZQt9$zT{DrsvC!@&%itVJY~|Yh`i=TVMcDbln*@4fL=AbC0gEub^2-uiz2bQ zJ#)zfku6wxnC-3Iij2bK$o9O)$xGn&5AtUv7?tP@AB{xW&$F|pk+wF5i>$93Vcpj6 zj9V)yXBs82cmo3W!>TEjAzHN5BCuH%{X0IXJ<1&?Qarm6_71g#0MCt<-$q)?28nZM zR$#||W#2DI(`Hm%KCT?gE2q*n_z1+ryO^=VyG|Dk{m!418{B4a;J}?eCp@rHes2a0 z$GTmJD|3XQaX;=)VjoKCQtV<=*tjR+#XcnAKH1irj#zxlL9LfvAgq_Iilz(9vH8lr z1vilxkT8T+dDs+%R(>DJ6MRon6P1$SUwd9_%WG;JwyAYAZr1t^8vXRujN-4RK@;n(eAFq?3H>c#d)E2jVbQ$rZ$E8qp>#07_Zp3S)- zyoSO~OwFr^tp)4*qY-5rVZ`p4Xov6}XoHX7< zz{p*Uy>!|wvG`Qq?eqH>uH(Yz_KGIXo2&0ZDt;q75%NQDy$Yu;{dw>xB}`C8s?FD8 z-lIR(jOnZ>OtZgZn%q3O=wg(p^iBKHvAHDhE}@ZE4@ki1QI;IHrAr~xq0n^U!qX!7 zwy`h+9vp9%Ed+DF{a$H(Z#sgPKdXbbjH4U-%c0VLu*1fqEiC5Z2NHfCS)MMBc#pJt#~)r*!rrQMi#sHb=GGXY<^@UI&(j1VBqq=BBNX+$!^4M_pxh@{+RT)IREOR%!p*I|`a9iJ)5zSM!;pM# z0X!x~*GCG2K;HeH$k`fkD)tUPV{J5947MY|(k4%;EmPQ@+NCzD4RU&Orf`kB1=(J1 zImd6@&R7*Z&n$eC^*yl@OCWObdhNy4>3e@Ur-hF-*329%90n{Qla{l2JuBEzvg|d@tW4waK46Kl!{%4p>bngD4?CRtUTJ z6H>j?3$g5Ux$T-1Yan}A6Y~@kE`R}WEd0u_`OElEhm_7B+Piz z!SoM#I>JgV6qio5cB9WwGN?nwUT?A&CASEeXVmQu1)-5V|1XXE$}N6%JL`Q=Y&95h zJ^#GI&$?bal_JJa1y3^|c~kcRuCf(+c01iTqf4C$C3SCbyI@O@ibnLuMflNqC`$7% z9?#`;-aBLbsH_BMh#>GXb>&Y5p4X7YW*<5nqPBV~99c09YCPsckY zvmLz2eJ-pgO&R-?*6?1Du}}RzhsmjR@k#?fHGy~|dGyEtmr8g}&d<;+;p4eq3~{z4 zmjdkvA7lGB{~vK*85PHx_lYGq1a}A!+?_xJ!3pl}?yilyLkR8!cM0wg+}+(Bf@{O} z-S^$uGk0cp@0~AuPJgIVU8m}?zst{`9ScnlWJ9%0Hx{M81_|h}^d2O8BP-YVJb*c% zzP{<#j9T%_JD$8Rf-f^0$69v;2dNIi0z^KpM*gOMru#A@r#tyB`7+2tOueX6_iT3h zUJ+IH>==+iAx5XshK`yXOsN(fRU~_lk;KSOt0%}ld`z-JlU~XX< zBF%%_?9B7dKyC$(b;1hd5nXgpsx2U_x`-G{2DxnW&Orij4x&AExbUZ%H*5g`3bqDi zm!&2a^r~HPh~I`HTcW4#G5mmflc@u|RC_Z&;kUa8-hytQ*lT2nebKg@@RU4PtAC-I5Xe%i!PXLSj~7SV&c3UKv!c*hWN-aRakjq0mPdmNK&G{>aN z5g-a*?H9q79aoadE{aqAdy0ysN*yEOo&8-`s5=n!-n;XTs$cdx46e;J+${#jML=Y- zh^4LK1D<0W5x=pqXt+okZOwV;L`Zulrom<2#z5URY0DrzuKBOWV~oYibzlaqW=z5G zY?SUuQOc2J{Xlcm&vE|hqi|^fYXOx+@6q!OEnkVkpHFjIredgo2Etb#L65O2dK(*w z5hgzYwcGH52tB_?)QVodco5tyao1CJIoHaRQCYHBm?@A)pa7Fmtvx{wP-mfpWXMRI z;)y7ROb|eL20(1c+3y8Mp46(+))V(%zXVxekOx~ZA|t`x8x~0j0~T7j=x){hff=85 zB6FGoq-1Qm$CI-I3&}4hG@}GkU24sx*j)}F9zyrhx96AJtHO%vlVYseIDt1i)TczstoQuC53@7wO)EGc_8flzxW>+F)=MMidxl8r>y0ALq~J`r#vSYo zWqTvWq0m5a|K6`vC&5+%D~ETYz^?CZrDlx=k26eK-5{TbvNGXyr}FkYCfDd4v|L&v zvqLT(0UJA=KCyD(IJ%o?Kb#E~gLX*4HA15B`f$;wP0M<&rY6=&N_#c9FV^4BzU$1- zriRB~OSM-;6}wsFZBHF(^yJ0M+%%)|(X3a|qdIAR%Nn2PrypotO=hC+LO7A!HvOa& z@OrcLGl=+TyTAVP=KA>Vad$tAc&jpM;3c_;M_A;C(Ga7rdT>XG6@9TJ<(eVk9!YXS zCn+!tzF(i7CxdKcVT3KUjoL+F)aiaf(YJPB@L3lvTn}0S0->z|`YvGH-3&9DB+$*9 z(2uc<@~q`Z3-et`w|PCOTTTmt;d;&NECrkF?M#_Mi<`116_yF9NA%h#dbVD+Ez3*k z6s-F6^nY6Ae+#hu2OjAET>Xi8O^mya$4;3GOj5Q!&pz@E;r^nxm}G$xu_I`@8sipL zh9t5s+DriwhKqJH;K=k&GJP+G)V_hltkk^xGB}0gQsu=mkQ55;EVK1DvG(Hcq^y`s zHLNkI`KmrC)%+}SW3#(0-+{<&{zB!#3r#~_Z#C|NmYv0$bCR0-*;lwRp*D;6T9$Ob z*L?w@_eg5`Ka6iWMJa0SpLI5RcMYa=IocBCzAn#M+Sxmp=qu~H3^QG3QW6^_eY(NL zz-rgxni#$blnX5)kxo!(bDbw6uF}PdRf}WLYHI*(!jGn#djzmepC7$Md9}Z`(CK|J zyL&}TcRlYN2bDtf46emKqOOKM&P0wK;YX7Xy|&aUrN6Q_1Mdy(qTHuB(b7v`pj{Sk zyVKn-D-KmD*J~v&y0huqgxd_4BCG1?Tee@6Y+@JOa$*0Q?o_af`{_oqyQ%hL#-D4K zp)WS6P8gUx#b(LIu9wQ=m&3kAhoN6SOo9DHjREYx2J7|g7^R$Y6=gD4* zJP#Jvaf&&YQV7?v!1(56CNJDu*IT!3Ep&)qO!8-zlfsgGx!)X42QrdsI3Gk>$OTFrTD+JnJXw-EBc42xp`{#&NC6L#F6&D5BP59ity0_q(QjIJ(W!9U}pH46d#k z{+XXJk#e>iSdpau z(kuTrE!w+)K`T#=ORIY475x%ZVteu!%s37EmXT3}wYsqxwW2+OHRe$&{~~&)U>+16lJ|HH7DOTnl2eL67ztlGi_(GJUd5<%~l^(zU zJ*xi`d-&)3e8PTEwh33B0_u1yT@BOJ3BMCwiXc;eFp}o(9S{H9`z^UUV}5fA@R#-BamkvjV)Kk z`N~ZF_m>R<{stXVhGFiN9!I2*svpeg_*ZnzoU9=_ot9p4cI zRODD&oh)A@(y7UNY{R_tgm};!A-cBLK{1^t9EwI(1CI#pv4vu(@uL5d&HGOtsvL2+ zeEOHjJ)%ZA+J3mVv8Lu?2n_=}^^m60JOhDO!@IyqX9d}$?6;Q#*?^^x5=LM6i8k8L zSPcDX1ty1f1QEP{#d!OtPlCN*Id&f;(AaqBmCn1EI04bkJ+<`US%>~cWh3s=Qq2jn z!qlhe?Fsz5JOupw!Uz8ZSe)?_cZVLa0*Q^Di+ezDx}wkwxTzE}z7q1XO=DwYUQG=e z78aJo*C}?Lb?g~v)o}MNUApM+Cb3Mp(4o{dZ>*-HDKX^YG3rTP7oA1}O4o7NNOu7cbYX0sZ(+%Li++|PWI5(6^YjdP5K<<; z{u5HurTRvO?To8R|G33;8Tfp#{WOaL<0^vM z4D0VpHLw^uEQ3)*A>#RzMknQNQhpx-QP%Q80k}Sv%@HXi^h!}extkLcZv787T?po> z5TZ;1MqP@g%aHsp#UcKAzYkYno)RF+wliJa&nxn7{N@^0kSfUk`I)~WN8vCIg`vtJ z8u&U1nJ#cf4k06v6aGGD+ob(C$pxd{{qb1f4U?(D8*=*%K@>6B;Hd3a83c*Ur@ue0 z2U?6n6G+ua_jXORD`3IwFTPk1rd#x|>YaV!-yfeJ%oDM{E{=X;B*ck|&9b1zi)cZU z_c~yd@Ic(s9OvyjSP%KTzc1MolOs^{Tj)q1KfsZtq=md%BV^aw(S7k|B<*PNtAZD#7+4Na?vW zv#!h&zHak06`vh;hS@xYM8g`Ev&q}MBOx{kVp8Cqp7m)7rWwJlp6lR8^Bk<+6NRyH z*m7ND@|T_u+O~sVBC7Z@exgdW2d(|)=-ASecWd=uSiDXFuaqNAbYtxtfWV=hMKEl%*0#pF(Tmx5P+ zT`}B+E~`(W#(wK+E`^JJB(Va?EBXWTia*K7e7T6hn=QQ>GtOMLjL2NLHq5fIb-CUL zemu<9abIk%X#R+d4xTUbs$mROiGw4w`oB+Qa8K+G#U%I=ohf5%QbH{~sxAmTKA1FS zo?b;Uoj1Y4%8IxsTO6<$O>quRQvV^lq9LAfmhyPWNaR~HhuHI z{T(ZS^!Aa_y58%2CA*ts3$qi=19cg(idz0sFkf2x() z)pKWgUtN!ey=}v261}WeL4JBdzkO4WbL;pw*1~U|*9X+}{6UbesF}LgPFgoXTSWG8 z4;9G>@=ie9<5H)|`~)VuUW-+2W&iTZa)BxUMp7*m%Ko zR`1Ya?RhuyfoX$&J~sH*>{j&K6~oJYY<-X0_JP2gtC-oIUftcyEZ-qnaeN3Qv0c7 zqhBN4+PLmVzD&xZ>030QCMK)&dGDI2toifSyy?IHrWBoef9g6k4irpKs3VyvRCfKm zH9}RiGdKk)5zjd%A5YPNZ9G(hrsdXBS3e?iG7S@7276z4&v)I}6%LJxl z{yDkDd%BZk{^?%#obB2CnSHriZND*gUf6Mgd_D9=^7$;!rbJEMS*lQHva%|b=jum| zDSgZtvH#Nu_9^@0Z==FURDrZIQ$x?kFKqtqBt7gZeZcJm~u(cYd;d2XSN=`43EzP+2=0S(-7+GnoHzQi8yEenlC z_66Zj;kWmB`Fnp0DhMgXK2i)0-jY&jAMa`SX5W>QxLNcJ@^ao2%V-j1?Wdh
|ET2crgw(gFZ2mf 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 Y&xGK>gCsBBrM#gb$h`#vFq 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

Q#t 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 vfMAQx|@0abHdBuf!pI09+?+9gpLz{cimW<{Y?D diff --git a/demo/collateral/P-1-Faber-Proof-Request-2.png b/demo/collateral/P-1-Faber-Proof-Request-2.png index f1b55b38b9fbd95ed4672dc0e907d33b7036cfbb..ba70afed0f3e78a9379eb136ccf3cbd1e9d4adb0 100644 GIT binary patch literal 41750 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 literal 218983 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 diff --git a/demo/collateral/P-2-Alice-Proof-Request-1.png b/demo/collateral/P-2-Alice-Proof-Request-1.png index f0436bc4cb8fcfc07023b2a50637f0000850c2c8..4622c82e8b57cf9f662851e43d2c0c9a9f4aebad 100644 GIT binary patch literal 16808 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 Lzn_24?B)Lf9+ndi literal 151056 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 z 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�rYswxnNcspvsQnv&aA9O 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%0AU=;&w)@k`VC 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 G`~LusJF=4i diff --git a/demo/collateral/P-2-Alice-Proof-Request-2.png b/demo/collateral/P-2-Alice-Proof-Request-2.png index 54ed5e17e4042e9ab6fb462778e7437f17604c62..7ba934113a4918868b39bc4d203d22a85794f62a 100644 GIT binary patch literal 96455 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%0D@d|Xjp^`xgyA~GlYrSG)C5xPRxoyx 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 literal 207287 zcmdqIbwE^GzdnwL5(+2?NTZ~rICLv2(hb89Lys_obPp}k(#_VfY?; zV1V<*Kl~#O9`lPADy58}1Vy*V?mr;Yzh7E->tow{{rfjOyx1}_3PNvj<}}FO&_&vu?U-T_J1+Av2P7Vlqa#tQ2_qQ+t(nST)RF^zEdKGr)z=LiO3tQXY7)cyTE z_ZMz_(7g4L0qdn+*w7cCbeQ@V*M?RWmTn4T9;{9ca`}(9ef$yy0r0fj3v3^RCw~cx zNwlUsIx@^I7rH0ur#QA}&>s|`t{2uF;Ew6gJaT(CU1ehH9vJ)m|q(lzgzS4=f z;+oLO805eE<5Sihzl>JlZ*^P!sbuW!8Xt6zpZvUkFJHRh+)96qA`h8ybE*q*S`!8xq|nvwx!V)2K|SXQ;M0 zvnHA2Ad;?9cIg(5^j%RxakY3u70fzkz7c0o@8A{xtQISey`p2M#hLP#70 z{Eofy7#QR%{Vh!I$n3WiOmKFAN+_NdHyk7~Haj;?>@5qy#=3(iMfC%lBguT2(csy)AkJ>wg;kTDuj*wH;O;cFId8qs@Fudhy|TD^|wI zLt+8bv|B+~zb?bMA0TU=it(F3+Yb$O(v^kv}oH3foB>L8*Fr=iJ9dN_$te#+w9{-Wj*pBpLPN$7XRRfwoMREEtQ8 z;wv+!J*@-92I#VceWR`{&8=Q5KiM0a-SKTG zme6c7IsP6(WY_sFo)7kepW2`C9ep1?^*+~q#`^Ia-ps+#Z6+$A-n{KO{Co4So^a^?CF(i~$e-^CQQX zq=V97_vKs3?Ou!B^Jcmm{DLIPl!@>s<6~2avIkFIb$^sI6;%s5kD!rOVodm`w8*{p za7}vlF`aTd+#nzF&-nuc6}M+X1wLgDa;z#=Pg(ssEhxY!fi@1Xt@{l z#`K0PL8B=Y{<2RgYbh(KY!4(OP(ZjFS znZ1~LVh%g27P0I}l9aib5@OIFl|R;ZqPo7>%h|Wv7unypr>U*A&tG!x=I_yu*@&ag zVpCUmvK{+S?zR~|!mkW&AF=1Nr(|F-D>eHH79yq$EAQwDi=~URgm|b;5gCEE*U8&&&x2#|HNe)SF1f@>W zRI*ntSkBxHGit#zH|5m=5b@gZO5|_kc;q{bXy@!`@2FjU;#K-4@1L)lVJEea)ece2 z%4#ytS_bvK?h69d#0QQ(D4YO|fL1C_J8~l&s5|JipKTA+cueM01v7i_330;?!dR&L1oH&zAe@j*t5lnY!DGK& zTvGKI*BCRFa26f~eg%KUI|>_$^ofJLVtw{~mc2HKqnZ&1H@hrD1 z=_;GBaPZFPZv7Y>NSeZmtgI|Co6?$?Ey6u^nM=s znV%Vx`PHt;1RfKmUN&T&J=LGrAJxy1##47s&r^@QwxY(<-pR4gL45HvAtg>XYl^O# zB1VDLj&&<_c){jJzx~|y>{j!^o1^jN!L8h#uDya?&v~=ew%y64!|ADM(Qh8bXed23 zy)Q}?PK+!<-tkmEF@pKRm|xOudg4?v093rqMien_0yD+5YqVS3BOl`!uE8^G07R zOl=nF)jy~|&el+LBj@L}gbfG2bwB7`6(5x5mEg@c+3rYg3o+JRc(9PwHqz$x0UgQ{ zx}%i%v4r8LT!z+Tp3*15u@4d|I4s`fT@4eedt?hMaHKm!>(&m0hj{u1lB4(+juqOH z3X+0i@Vj=qJffRQ9s~Icnqz;&_C2|21wMLx#1TOO5zmg?=;vCHPZc|s5A=#vnWaU=3pn$ioc@p@GD)XZq(@wZp6Lft8Fxn~;#%9tFwMqZ?}l(nGc z7ZL<0)*f(iub(jgN;owRG=9FjWoFY;#odvxA75QuqFZXwR!ySRwWOBveeXLD#{>t@ zmB{W`2v|l7QDh0;s;P4)v?KKHE38b1x+FYFAd5XLNNFfC5_j~P+tg^-fRRp& zW|?nITwVcR4Y6b@LIu2X6^a{lmeidL%a4}HQY5W@TCL?B<;^x}LZEA-s43T}Z7bsG zSrrpCb)TA2d#IJ*^K^FkMdZ_hz5MJmR$Du}{9^pG?UfGUN}@AEBISpdNdW-C zekI{4827<++y0Fel-@7oyS^*o2IHgfyFJTO9eG~s?qb-i@>)9gD?31FS#*4Gj=FVmr=?Up? z^l}oGu<47glc7M=E*wsbx_oh}wmWhT-LD?7C4OBd^V%MW9lyxt)9jm-h5f6F91HYV zOwaZ?{lX-RI!)A&)#{)ND9BY_^j z-fdXCH+F0*v@I__<0i&Wz<>8f#{mnA9OEpIGvAO^WBP@Kbpvjp0dxc^Du|faT5}tj z+8Ud2yIQ})+>M1L<|=|Yv^H}zVsN##vT+b`6@UE49U_?H>t>$E41e6>2o-+}R8(P* zwzW57;OFM!e)?E~fPsNQ%-+;oMD6A4e|5*4i9dep==e^AhsVXmh1&(dZEFwV;T0AZ z=6U*z=h-tZ%pF_~ZZ?iau3R<_jDHUDU*o(qb1<>Dc;{$gYr}9ou92~=lcV_K$JY<~ z_urrMG;_81?2>DbK&h#&i|CZWU3na5b|6zO=A5vvI&YL*f}g z_?g%r9sZw7|NY3nbk+IquDnkHPygEWFPHw+RgCBQ75?%{f3DXbt(XOqAQ0pE_u@+s zuno_oVep`_c&V&``Nh5l2lI1{DchgFnByDoPD)T~Z?LeWuw-98*KobDIYa!8X3Xoy z34Q*{pdatwu?1FWmnD?RdbBMHbw@kB(kEHBVJPO(>ZVE$1)b&mEKKb473+8_>eaKvSYsg)()1H5M z&Npz_n4Xjln;8mEf&m^9edWpPT-#n7+i67YI1%HWAI~ON&${=Vu4YCqUZCd^HpYtO zWn_YW1!7_2G5GxEKZdgRI2`Y9VB_&2zRoKOyUgp_>w}m$;0gWP*=9ZB&hivXd$sC& zXJh3Vvmbd}(mz&lZ6uf7arvTpXKZnC45rwwv1BcyZeL;DvnRk)y1a7Poh;C>fe69TK&T zO9*J9{3)!;Zh2Wt@&v{o35anXy@wlvn(BlTXDyUJ5UVtrS7W1p0&|axs)h#pSC=6q zBSThRNBCD0F(y!LPpxkNXnC@h)_=@52568;)+-REo6kX#=46oE+@-oEG?p}D?%(nv z{JZwszNEc|6Z5-IGKAAWSh!CFk}vBS*Bz>f((@WeBvG6Fx4bnaB^s9$d)$gi$|(3@ zPG@d!-gpRw{f#LFuWyJpulEVgRUpxgJ35g5)Y9V@ST}HzUoZg7nO|}qPHTG4kG^fU z&}^6MNLw&Qv@fR$x>nxet9G@tI#Fy{ABqrkI$s~?UyG99Frdoc9R7z5TYDG;=s{ zdwMt>B#S$1=`Os!(*5<-<&Y?MTBBu0wgYmXDpxPyZ1mUxK_p3RciPVJx6S{q8V?U& z%SAqCjTM_ifkD)qSswoueox=c-Alt591gG^fAvd7l7eg4Liy~@Ev;5u!Drv`sdr-$ z*=W=D27Cr1e7dxoOI5&uPf(=RT%$6-x}?!!6*xYDep3J$ zo@)BkI2|xzaN5guFd>QTP?Kj)J4yA#*J81IT39@|WYz!rsQ4ao6>CcLDSe7Pxn1Yx5Tg@%xgS9{0{_uJ)T9Jtyr1Eg`V4 z4`;n6R_D;eB)AZ(1cUrzv1j4ZpNRkz`)2~~UReum6?$CUh#Fz)kyhn2==Q{ql~2tV z7&xe!t{h){^e%ix^cqF6;GFCw@z6uSJvFKBVLZTVdvxC7(kl((m>1C2eYO27j%`y* zxBmx{|57h^cjb}q#UjJsASvm-^`->0bR)|HuK;)hHef<7(ie`C&yL4moD*z#dF7S7 zx?Rm;zFbgSs{^(79A4j%1x2s!_xdedG670+ zLkts}%mhf6l8F0{Dzw8SA$?(luI80;M~ZK0wVUt;%suz7o{hkLGRP_vP9aw%wS!v+ zmpsc~`1ypPX3ORU%{Jn^xieH_=ICeP{uaVhBdq{Iz@lu}#wK;?vc|Z>gbq}wkQL2b z$Xn>GWv9m~;!)uHSruyR-kzMMzF=kFE9YT;8lvNm3=@lSPCh~@CE7ul)XFUh33dGa z{bwa_`j4)D@#cQw^@Y4jrmiO@`+UK}#(tPeWsDpsl$U+6p9woRj0Aj?;>82nMEz`oaCSV}~|QqV|Q}k~GZymks=XY`*rbf}g@h zdtQ-tG@HI#XL-x}Iq@iqm=zr^bfN4Y2&d9w$2gz9NSG^RfmON+90|WY+QC{7dME)_ zSTH>Igw~?#krmLcJCx22_#wH&R;#G z!0G12xhI7YkpKGkg9!hlp;OS0T=E+@?065nrCN#I*@c$uwUjQNcs&t>ShShRmgH4o z^rYm1v-=gU1H}86f)t|WfuKErQLD~&JbC2Ba(bpY-T*9dQd~^eokMhRrQaa#fW>-( z)vN+BXgu=`VSmIEGDGQStmSg`fuDC;y)ItzMjKa70%`u_B}Q5fX(b3iRj&fl&G>Zc zC^lE#jFr?MWLVHB^tdgkG-hAQ`?!APRALmjQHz>w@}#-hk$9ohPqi5q7tV7e6O)&tnC*u5u#^e;-PJe8A;U~g7UaWBde!qJSABsT!RjWS~&JHAYs zsb0oxALQ!%IGQj9IQ9Hh z=YekN$aWL$TYz97v!H1pieFl@MW7fng%WEM=c>&QPxKqkelE0mqVxI1%o99QTmuhw@E0p2Ti_?)gnRHj?Oizi#s-eyO<|)xDgBnO?hYr##YZt(# zUA$7H%{Q&i)oXFE^LpnnpB}!vWLaZNI4|WFC#kl{_&0kg4zok^tXe7Y7~Zksgpq=$ z+xx=^LHe?SH=32oKD130UaHR7gH9fok4h;gjEqcJAY`%%dn=MvbM)aiWcq|+>7Jam zrR(Y%LG4Yyu5;!CES%7UprI4WpmXMDqi?+<nd?sryOIXKKhrV7*BaCd*$M}NY3CDCXv^K}G!*LU3vJH$`K?lYeroedIPK=>nrmwQe$4veV5)mRXIa3ltx<9Uz5 zA3~809lMd7JPrd4IlB+sbZ(h1(K`%;N#IoU30Djs^I2!Ro!@QRu@fQPqaw%MSvx!t zD=VfX$5p2oIvcH!C=PY8&E1_BAF8j`s6DMHKRr%zPlh#_y3^-InPPT3Pb0)OSIAZA z?l?a6*sOYfqrx;#SzAZFZepQ_fB{i6h5sKom`jOF1Iijt8P9W}-K*)B)Tf|Bv zOvR6+s&a52P@G+(d!pbJ(_=oo=W|5jOSv;1GSIr#T%;B)Q-(?-;}HGHLef@uK$#ap z0jJ|+_H3)WNm5cFV4C-)Vl@70(!*_5mC^VlywPu8q&c*p4X3|%< zRioaOYZ1Oc*l4b-wE~W}glmte$ElT}cycgk*h**qo&kI)g!Nf^)s$-J^J^Pb3)e&qc<^8kK0ttPDr$_Ft8m!90 z6eDilW_yIo{V8w;MjWaw8|mXi{B`AjX^q#6qKYJlT;?&#!|TJWDm>CA<1P+k!fe1*pIFbs@UYD{VmNA%-^=)Wv^u)V|KJ zN%@V;Jajq@`zm*@(-N@vL5`bEarq0ZLJ9%j9T8+DPasGd@*6wibs{A>NiJM#}oOVi5VU`l24K< zhg<9kLv!SnJ41AHeIG$hO*`e>NGgYkPiD?>HDROcPx|fSl;=ZSK>nEvqpK=)oS$3a zhGvV#ATZ&s!^Z=9Ci2tdA|d}o^{RF4Z_W{jG~Q90aD@onHRG`Tt=>p@4Jg8vZ@yP+ z-8;!6-e#zy>a59NOXR!zyuS0KoJFwv?BYjz{26}E8*L5V;npiP@ob9{cgjYkJXGdC zr|0Nw&(rC!6K(4(>Hb{m6$5B_ujyn<-mFX(U#K2RE{Khd?E#wHJarg=A!`DACoQhN z&K|%9V5*v)+jZ!Vr%N&@AAWuJBj|;*0A!l7fn=>^Uz48HXkqG!fxBkJ7UFcO5I^B% zTG?GYU>Q;^zgsXKp|^0B-N82L1r;z**nm3L?)gwea>`FjLmk)&PsEcRkBHpG)3*o~>Ktvp2#q6p z(|Hi5=hS3V78sf}C4aw+PIoa*jRP&uGg<^5Ndh%Je+*c)yzXT zPx2`=wKblo3p`3u#d@hl=pPo)|;3)o9*A)K>0p{Fvs2 zJ)rb1zSjG~A#bUC)__=R*0bSr!4a>%@T}=^Ikz$eXZttQ^_I0gFY8Apk~sVH%*N6* zdf43UrLpry^}ms*Sgy^bS!NF6c>E!-bzz{fBXY^%LvNacZ`Me!EN$p`aZ$4yPG&{inJOSjs_@O@&D!Wr7z@_~p z>hr++8h)W%R%#KiA@8oGSsr)YRNkMlcphnk3Cjm4z8r$JF}`qr0~f^Ufy3d}68qTd z<=UYzZ{9X?#AKVL!L`Hk0Nj}BA#-UYx^k{Wm9wG!x7Wgxc;aPu_SiCA zz>Mul7NT4BMqv52W^R-Dj4`sM{pUQ{w%Py*#Yqb~$wsHZElcFi6P_iy+y}Tj5S;^5 zCY#+;r@@}2+3LY<#xdo&JoARt71617V(C65*qPj}eE_JzTc31BumKp*3AuBXqT`#OH z#2UB6+YoC9_9jmtER>}OI2?_74=5V-VowhQl59L;WQK`L`EiG!qxq@Z^Gv>9Zp#z~ z2irkw=Jc0QuwsXSlva}Q_q~Znk}_=sDS?*mo%+cG7j0nxQcyz5(}zIWpN9OBp9(9z z!)+nGRGk3j8o+(#Q;jm6(RGf#ZOvDHnsIh)3xz8E!w&YJ8e=(^l`YF40Q9<|+vwJYnoJ=#Ts7Y-&54*yHbrP5iuc$~~{ zkN%v>`z3}6{uDuWDVZ#n`|;o@s*>8%r&NG`nzo!R$L_dBtq=YVFs{Q_C!X)t_mNtX z5}8#)Vz62ANsm9|PoC?S5TW5yw+GBbS=^O#)v7z041?<(q1BE{_F3G{;w-!QGv&Of z=fx&QsB>5j4Q?ZnZDEodLV}x(%t29Pr(RGMrkP(8q;@J!d}mlFbbJ1YJvm#qzg)A; zVax#r%Pzx2El8cqEh)#`=`&}mor3*mv8wL>#UH}R7%^-npqtS6b1dID?xz`j=S=Gf zE?uTAa!j7y^GYv5fKON%pDUMy;P%FTX`Gua?t5v*iWf^FB;qA69|&C!RzV23DvcFy zFe#09=_yV5Cx{MtA7`-wlWG&kR@USQMJKGA-r3Xj7_#LE1_{b>Pvao4EKBjx;5mnXOm!{F#~(&x>b7)x#`A z6?-PQ`uh8BaU+tFXgI^I>kGGTfeoHW=G2kHcJLJ2DemD#* zIv_OQ%`5(0Lgi$Nleug4DI=|)iT>aW^@@$AsDz@PWiWiIrA3Q>4t?CSh|Uj|rj>}y zXl))xjGm4Dkl0Jn5;aihrmRnFFV;fc7RSAaKSHiu+~bF-wpW@_;f~P9tb}fp`4hB3~lJ#xgkH5?AgE9PK(WQnnAm=$laej`&b zuf!4Oe?4`kx!BWG7IR@k@&WYTzO&qPGL?UPi-~+j?dTS({c;^la1GOfUlYd7Lw#I#yT)UqVB5_+ftQk}NWKE4h;f&y zk#FtL$+0_u;TVr8eoRH5W?dUT<%f`oUu&oh5T#X0bPc?bmmk-bX_Bg%Tye z=hj2$Z&SH&vIg3tlY5TNmFbvp^Ybmoh@`rg9NK*jV-`{9N-9*l1Z!_cWi=#F9OIJJ zYE=jcAzWYmcbMe*2#=JZnO))i0v+x&Hx#jzIAf z`?G*XcuGZGswr+JPQGbpm^5X+`?P zkc)aRJu0sfT#VWQ{M!|jXV;)BLDhaOPrrF$p_ICk4-)vo=MhJ>Ka(4q{5e1SAbUpE zwQ?uuW%kI>jP+sU?HNE`_jJGtk}~a%&3lK6Wucb^s9Zry4BGs8-lwj-O}6rlj)H#e zq3&bX;S~o_wQ0*$*W63D!5h181A9Hs>IcSJtjn~I=SXbZh&!UXC?Pf8!D$f zjNrs(5G`Q|#i`tce0~^4Ei7z-D0T5Jk-yx6FMd+4gFiHf#Dv;-O*&YgL_}f z(2QVJev-M+ZYR%L-sK6WZ}$_jQ)K*`1=-Da1h<>kC4X#C6DOCysV|aCr0j!dLMn9g@z#>t;ElIAR6i$SuB~0=sb?1shwn@0n@ZP2SNJrA8q1$5uu+CkReF zf2C$R=h0$(+ycmX-U+f}3mhOcyu067*i=JC669X1;Wan9=BB^px+|)o+uwd=X;wn(8WB4C;45zM`|rTv&8>p6P{o2PoNZub-G-q<(Np;Bi*-X@bn~5i<6b{ zU18|B)CKVy@^X0^2^tnGw5-qjbNM0R2Q>>CUjR>a`Y~k_w4>3bdCHwb#XoGc_e05s zF8S-yW)aU@<-Rlo^G)CjDlOsj4KAptgcrJnZJZJHyyw0OWfUKQkV3Uld+mO4OHZIbC*v(q*4ca zBrGT{tC*n1&mpJoPZB5uB?trNUC-ZkXJTsxt{w%$}^=v5TJRt15}H_A=+QP?o>#K`32a&-HFid zsTVS!3gyO_lh*Gc-|*f`!ZmalRX)4WJJs(aE=>XLvLBSZYT(MBE&q%PrfRRO_6}@Z zMO%N>j1QCkdO~xZGW<(S437*W>SNyv-jgz9Cg=^X1qcNv?=ro$`Rv(LRzA8|AuuQZ z7F$!*C>WiMTQ4U|bo5Ni*J;_j5Wf&Pz38L+TK28&QK#R$BCE}KVb16sFwrmxc;SwnnylC>X`*3MHb)8;547n$ zncHwKnAabDIS`7ek^&|b43HeI zB)MHJJVVY@@jd;Dx0WeHd)-2b50O2s zpNJlboz-I}Ld0wm{*j6tdh1bJ^2=^nm|sn_Z(A1=RM&!=VbT1Z?QoDEFP^7;X6ECPW2Elh%{OLCF7KSR)meKIpffi@YIdqQthLR)5hl>GhvbJ5)s5Nqu7EG}<3r%1^<{m`;?$QkoY3@B^0^BXt~?CB_#pgUQ%WQ> zyKHX^F>iS4$!ndBvG%gH?~92qd5ZS%_ABTs^i1gIozzlymAj>r%7;V2Is5e^)76!& zk8+eE9{pV^1l;*(NM`d*6r=ke-)aEJ$rcPzQNgR8)uzVv_38j(Oh%>Z@;@ftldqMx z3=NOGy9mkL<5owY-hJt2Rv&FGkaOrX zE8KnVGD_}&kBKqtF=M~(f1a-9^?an<`j3lfnzxiatbj~%`PwiQHjL`R_ zs@tb$g-E2t4%~5)ipGJ|@4U-Ac>4y_o;&lse0ws@;VA3YO`8@4QBmvgy9aOaoz`Ka(NDLYndG*ND^$4XUPwFFT0qUs+mj#C zmes}Z3Z5v3D|^plVhoDi!dnW?h=S%Q)wlzZ%t>MEaH1@6^v3|sU`zDK6@o`Po@yxi ztrzS1iW@u*Ng7(uVmDCypi&~+Dzlrv&il_y+!qPa+u__}oi$^7*Ul*mDi|c8tuPM} z>Bm?;*Xi@r%Op$=CQNzAdDQ+Y_tsrT?>Q4H+zzHyO>fwlWTa)Ve^*V_6a?b|jIJcE z5{-DyCdcPjrYSY{=g-=BpKm%Sh*MwC@YT}O+&t5C$$8KOYOgfNMi!3kMEbAow^gJm z)q;?=BWLPeL(Xp(g&a;P4)-yIAL8lt7>nd0b)cgRSy(+KS#)RR)fEjO+<%t)pZ;hb z#_r4$VeNl`aY&h-3NCXOLs&@zF9t~qo|z!PtGJgX>dZjqkTHCBNm1dPJ{D3vNJB@p zXHs$-JNanUyq!mU-uKOCZ4Z0zdXSd1oNA9Mky2=8+j;RvB$+Fhl$DXrw$^a^AQxPzacNjA_-VuSnIos@yflD+9{xg+3-?FA;{!2)J5KFfC>)jB7wWmN zaNBH<6ac|We0%(hSFivkwaJyxL>4BtWtvN1!V**0_&o6aQ&YmJ7$%YVLnu)^fqj(nG*vL4$Ckvc;Q@1a_sBrM4;D9>a`>;;dT&-OskLvpU(OjN)0g^j#w}}!iW$^oovL+-$YrGg2+M zfau26`;RVtm@6~t z9^?xa@zk7X()O+QY)(iHC?4>S+|@c!%1O+g^e2T!TgE@}p6^+df~+PUgi(ylnNFsi z>};C-5cP=!V=px0kq$# zddtx8IM>#ee)4F%hj!-o*B>abDYqoA>|Z1a)+r5$qf5r~LMB!K<~lxHq|hmGC7Dv$ z?v%F21J|E|vv-Pjk)~^O8*nyx`X0D7&mc(7rf{#;7!&8QU^$#Hqt@A0IzXjsGIo3E zp1B5V!AYBPwhAisGUp9?_6y>#^SHd{=RLTLplK*IWN=DHo@QA6@gDkCB}^hQ9JRVt zuqN^B7@1uqR8u%o9gm>}KM@NGk-R>avaZEAlSWUT!JI@aTbwvIm&v<8;7 zObKQ!;_i5T>aSMT<$<40YfS)i!$b3IV*-(d`g82WRuhk@w{^;>(2Ar9pmhhRL7c90 zuWj#n$t0=3>ImCYaI${4C`6ncmOC->v&P2iq}p;mb!$Eq8oyc^(!DYvub z*oOUYO_jDzPFG%f64hSNL-b2W@&%GXaf+p*LY*$tXVE7=ZjMwR?yccgYet-8gfwr~ z=jmyM_qDj{c+X{<_FPaSk_Rap({4rQEG^s4#h(uiNCmo3&e5wm#7sm;gHUthl zC3;`Uj~q{10}r27jqZ|EO0W`zbFU0fH56BdC*+`l{rpc>pl)J{0;yAwbNVj8zcqE%p?^z|4y3!ty8iRMxbQf!6*EOLHp17{AG;)|Gv)C zd%)BtuJV1Is7k2WxA);?Ml<5KwLjzit-R^)cHUp>P^A*F@U@Jd(a0Fy!qXF;VyPFI zeWy!ho8UWa+kHu!GHqh@4-k#6!57bPOePa|6$esMhpg@uOS#$)3WV-#Cygcq`(?>TwUWmxyyHY zx7)AY9PNy+iU#Zd-g031vSF6t)!@7yPO{#Q$rFg#SxmNEVHoS=(oa;*jQ8tN)Rw|G1#RSh6gyd=A*4zZyn$DodWLM|-(|L_|dLo^%M~F${dc9y1VqGDXVj zS-24;ypi}69v2z-o74T|_m%1pX$Id<0*i6bmR?2Ts@H9ee)n>anmG3bU z@-Auki%$f;f%#>{%q;#V>I={KF0%KI$<^}mJ}x}?y%lHBFznN{Z8Y;b7;KpKMDHxk zq;TGU$lgYc$5;DxK77n{%padpdn?Q(va@aFh|ew5g6_8n$}n(_-G-C@?;?4Czvg~N z82RISY)`!r+8`I&uBL=HkzIk`L~o+@Y4lQ~hk`Bf!KkT3t$Hv01GX%I0?jgzEcd-Azdhj!4{bImwIG7c6XLc?!lke#GpxwsQKs^4aI z%Q`3^%$&P(`vr1j-RCpK@9|uU5F4tYBfq$^^l}GaZ+m2$*qnD;A>{Ep)>{WS`89GS zbwEYGkrp!H@iKXXC;VcMOxT+(S@E@)?+g4E)IYY#*;s%Rcpgh*O&83uDcl);xnMPnkVGBR#HoVvX|FOsZ^XXUp$0f^sa~ma>8{X;NE@%#v7?1bCR#E+z4M$SnIG%Th(?-Fx z?pxwE+zxQ$s@2c+DpIWm&b-w6Tc~P zX_{7lC9Cwilq2`$&&$+8mV3bCY`rYX&*g%u^u}j0q$K~qtJ=1^S5M1cIBN7vpywjx zG3U0+Mn;7-Od<84z;`WmbMA%v2mvhtA0~JI8`OxGWq=zVE)K3Naa1gOe<8xV!vn;_9o(o|3{M@ z%z9sW)xy$n@>xFMEB-I`)<0(L%W@yMKdNi1L+|y{Pcx>~-~2yQ;y+D5iWF14JMyym z)05xZgx6yX=v`||ZLzn6zeW8&Cc_tnv4j*K+)eiTPqX;XZGFs`FuFsV|LC71gn!NG zolB0ZCAKef-g2*X*=NylQ6A!pc>f!3%ZJhQ`L~~||1smQa`%BBIaW||=&prlLfcif z5G$pKt?5;|e^z+>C-L{A=pIA!dJ!HVO)m~RRB&lJ*tW~bBC5dCK%^cX&vi24ME?JN zKJ)_LX0Cx{r-9Xe?liRl-RyoceNuaK&aTVv(o4)~H zzAk1FMrgtA)ycR16vfXHcTDtN11QW~B+w=X?o*(pPU^t^?BN1YnVXQATIOPjeNDG@ zh27R@%@?=Z&rGi(Zubpm9x|p=#e~YZ#DmoK+vmAz#q2d_6DrG=;OE+9P9}_i4ojPh zJ@6;GBcri_h|t6^)Y1+NNSL5h)s@LgfPMwJ%1J%$=AP)B^fA(-k@-)H{I@o(MhtcG zC0ZTdjSz6^Mfr2pFUEP|l0J*CWe~;Kiz`Q!-Jf49$KkL7XQIo`1mtCQQyDTV;nsP6xNIEg>O)5_SA3LsC)+!(hzcqc+js1)h6m(HN@u&K!9KT_<7f4+jiG~AjpJ9wd zDiUDP(RR%Eeb##RC(+t@h{P66RTaCC{8J%4 zL?MoZsLp+B^w^k*ohtbV*-mYCjUIfxLxP_)A#GH12PeM`x?;L@Bz@^SJ*nSe8EA58`dj>4_Gq(Jg4gSdEW zWim@^`j2`$uqRm}UBf33)2SH9G`SOz+;$+V+)lmiL#sYz*_~Y5?kM%ZSA-)Oj?tSU z+;ivcTEZ7!8TX>=zDPD({v3_+|BxpO2cU`VQ&#GZCGp^7g&fhXv%X;zv0P>QX|_~ z`D6Ip8KIkdWX!5LsA!-`SG!;SwEjvKw%IX#**$mF=y^mD(RrDcQsIy6%h?6cz}*W& ztBX3T!9qNeYNb|P=FDeZJe|Rr)@pRTjT(hhOu!NLH*Wu@Dl@Fa$ok63$8z4=bT_P* zSv~Np277N!q=9>^4BXL`A?4Vgye%5?SBT^`RUUQaHhRBsCl=FqTJI%0x$UJf9sAfx zXq0QnR+1Gt4DW0Y73Ar<#HHiv3nO#BVe2>2km^;VDU$jn@8b)7|CqgVQr*y<+4yqk zc3i|qhl`+knU%%b8F#lS~gwWs#I7PV2(R#m0qP-db13 z?CLT%{&H=ok$JIer27?c*K5eWEgvj=QL-sw5J9y=sp+(NRQ0(A@<8(2Zmyu=Ww(yS z4B{0aJ-Rkj=2c`O4CYmZ`Q{{&QTzY4C$u83#S3fv!J^H-yeG9cadO?jBeRJl_@oT; z2O6t5W1_e(9RN#<2G3X0%p(ir^52AykXDno`nv^BZe|uU;bQjFwMC%Eyy6UJ-bdxnM33|*JXT+RPCc!MzTrwct^s6fti7usw0_TO z+Z39B?;*KaqwW!iwgr3XU;a819KNe%Ns!;`Bs{DN2gAY9P$#yH589NDERY3jd|r(wktI3Rll{V&gpxi3#>cCYI&}X*MveMS)(h zcy_cY5m|Sehw14&@Bhc%dq*|7ZR^8(+Y#Fa0TB?T3K38c>0m`56e$T1N>C}%A@mwi z)J^XMBm|}R-b)baU3w2vLTCXAH3@{@%Rc*@d-u8LUibI^_XlGzMkw!E?^<&{^O7wvsj1DEtfWe;R9_~R@PgWa5R=Kg|evldTvE0v<`@H4#6*FSK$ zRckHz5M-$?n!HPSLOe@kV&VW$MCNpUV5Im&&SRJ;%LVZH#-fMXN8TSE`}6|-bp7x4 zblqp)dHfBKX%cfbSM#8F3#%V%p^FT%J#k6zoul&QgRPk zmHFsvW2G}IO0>J5Z9n{S4sukasy|lm65yX#7>J&WVfg$NcTvWe=#sd(I-)Y7m9glP zZ@s_e>Te^Gd7>)z#T!FfG+vL(;kk;so3}P?ladteCX9(_=wA+KFXpKUH%DCg&wl2= zqid5G`rI+6!p3nns{j5g#6#LH4uzKn?w;(t^ST|&H%9YQ7R98jO*n{8vf0cX+I_Rk z^2jcAL{#(Wje#$&LBSWt^+64t=a-eAJqXYW+LSPz4?B$y`ykvgA;uap47G&lcGimB zw7(qn{7uK0<8XnIK*Mr>`#q1XCN|eQ+e|3aV#or4-YczMY`x8-sDDsTF?3k8OgC*l zy>PcNR3;>M3+seAfNe~U&t>RZ6xS8r7Ln2iSvyHZlnE8vCDx>-v~PEGbirdk7;p;o z7%tQ%gnw?IMzvZie{vFT{%arVf8^l41hV`Ss&7Tq9@40YgTrbrj(So7)H`DlfWiLs zm2}WMOX>=|_Uuv^cyh0ixxH~u)`=WSmq{AGb+ei2TJj!WA&KV!nK3ONgM_}&z?@xI z-AH`wX(-H&({wf7rh`_bRS=D(X6JQdjI#Fcr}^iR7_i(ikqJjHdCd^pPwny8v2J#< z4oWhH4A_a_BEd)+iiEZL9uo1Z6k<6>OItg|3E^Ck*2-D;Pb~nqma_hYzr*`XiXX$B z$XOXlOG%l_Uy|i`^4;#T17mI}uGQ0YhxoEs0I9^wM$~RsY-Y^`pr`5XDdMD3g6Esi zw(q&T8kYqHjGkz`ApwBF+h|y}u)^8+));SV(m2RK0;$SV0iEA5AhqGXZgyzr>u`0P zgW_D%-z(w?5aW=KVgf%_8ZSPf_4Tes3b9$msaetjSFNX*uuaePNKuwmpD_MIn$jaH zKwEm6b#88mb%8whM3S`jE9YblQ5FpI+)RCOwYv4+fKLwrD*mkB%D-#=ZD)RYPMmG{fjAo!Tb&wg0gvTasbw*!90v&%ag*PA zCJ%}a^$?p~T`#D%(Nj4|%!ajmr$_8qsQsQ&2Rw2fAURA#qs&(=v#qorIx zOSWgGj4Sy*7?gK{m;K#)GYw_SC%l%wLZn6+KPPlnEUt z{s;FI!*9-X)p*Zf-J1F(b!%-pyPh~UJW=H=8k?baUS@ptnP3Ee3WLYimWbR1+&upP z;#al2I1}FFn#Td~`?e7mg>ddh7dWJaHuLhbZ4~Fl;3yP)blow~yD#u$DX-}9S*;?; zzeADaN+02KBc-KF$6`*{wUt<3i`H%)s8$psd0U>p@6*B+kw3%gfhE#ZSPV%A1}OE8 zg{KUz zuw$CJUV1p+{O-+itdjw+&6I)aXr#M}xyUsk;rPs?v~m`^_Q9Inwqc>N9_v(I73CV$ zc~AUjExw85TH31cm{;~MDK(kzE)Fq-<~8%Or$ldVH{ymY+Ev0j0s5{(T{Hwf_U_z; zMP+C5?D=@jz!RXi&ooc`)Eesz0Wo~u@{fM06K_s#=?4tfYKls3a0Dn6LTR%Vho{H9 zybJX*jf9p)49ZjCKbTOG*|8*<+*lH*OOrQJ^?c`8K}Gv}vH-cK&$j=0!G`WWunV$a z)|MKx(sj0C>&{d0^>_G0TxGfV(dOC3o>BxDSr+G6)Dl~riq^wx#>A3ZP&OF_f!h2{a$mzS*v zkZ7V8LjVwaHw+uirnAN*8cTl{(3OUbRw7)JR?jZI>Rm*$PvmWH>@Z1rujgw4@wwKT zoe@K>4mJwQp5nD#EQAD>Xe2kmcgJG9pcv+TT8C3iFrdr0{M$`mY-ju`F8)N$ME`_q z0eewN&x{l*ZcvL0_gS?jDG8Fo#uD^{mk^&#bbBnjn})Wt7ewyUAE?)O1uT^Lt;i$5}~ zO#sPA9805Mxwt=EWAZwdnF_n{x%IjmbItfO#9c~@7-{Q* z%sVA2td_UHhcLq1H`7&>R+n*au3ep+wqxJsCudM+e`QUr&KFir+~!Sc9)}!a1(Arw zJ5n!q3pBRZE!RmteE9Sp1?~xqthNz2>LAjG{5n%AmjnlTKk}1*l>8Y|R`K&t27|RU z2vOL{x7#>U&!u7U+rs=i#Bi6i_?~4W&XGs|ddL4O75B;&upuAi9+qD8Gh?pwaZS#ROnctVLQ)}I1A}C8L~K>Zy$5I+$JkK|BnoN{Ke=dm}T8MV=hXzPJ>0c6B>UQ)D>!98WjjoU&N zqpEj;lPq1_vM2Mv{AQae{2kdBRog%^L4S)3Qad7pm^CSH@7JBw(dsVSaO1JCFnO}q zf!C=X&OoY^+rdJEQ_q~&&)0U;7arrQT&p#drGiLt_RJ;4yu1mY((eBHQ!{hlgbW1q zFyEI}_f4MAcm0EY38q|HVU4K>Bi<97SbgVUxpQXdvriB`g1Un?m2c~qos}!D>R=sN zekO+cUw8h$K6u4-^bT%bxqH&j{Bm6VI4G}(TTv}&H@Lm|rA$c2J+B*vf4rfeKkF}k zlr!Nb5YDIhZ@vgJ>xCOg5J=z?iuyd?jJXQ&xb9-dDY=}%Qz*z)z3RWCIQ04{kY2oa z8mRdDk67?Ok)E$XKy$uz1M|=C>c4*bJ5Wl{(b#a||I4qO4L8BV3jfX;{`qg*0mMUc zDExbz_CFR}2^hvI=D!mi{%e1(0k2Y)ef9e5`vYfg;i8@RvAiQ`Pl`z%ORK1xA!Hov5nq_Ltrw05+Um+T&)@P zqDM4*HFq#KPZ`$e^X9U!*0jQqCD~bQO`egdu;GXuPsq=9GuQp<9|H7IMdz-@# zWLTV=%~>^IG9Tp{maW$112`Oub0S6Wl5NRVUQVPIpq;Uaj^JJsY~f|r%3-K>_vYl! zA1da?Q3=BDjCqg0ul@N@a&*w3pyJGA*Iv2ZNuQ#emtpqUonYB;$&~ynQ4R4G_yDuG z!tBuQ5MO~qNzFOSq>okI>hz@Gj78o2JpX(734kcoKY3Z(f8%9?|Kw$JY=0SIHdpzp zl*j)xH}_qDs|X=9=>xf&SAHKEWf$-yvb@KJOg*Te_KvZY&n-;!0d=PXdjLczyDMUh zQ<0k)0|@+6{V~$JMnt78I7`*{x57I+&0);ORb8IEC^5e{x9wQx zg0D@jrzXv}`sR+>Q1R=B#`0A9r>2KJYU2+qN=ADQbJ^?r1y0lY4!JEbheA>tkzy~k zRHX+*RCZ_NlEXwZO1u7xV!lm0QEWQmNM4XA?^rs0Edn(d00@^z6x8yGU>y|I>t2Yw z(Ax`ap1|*AS>V6e$*lz;vUa2Q?Inu)BW)v^N{ouVq7-KA9|-UGf@y|{Q4oSRUbn`y z_h6ab)-ZujPY74dHSIf7yPx@_Su3PsmB0Qve`vY#sFEXv0q^pB8DcrMqw`sb`g-1T zH)x749DsY-o&cZ&m+s zrQ0xkimV#ru{1Rz*b``yRU{=7bG!1pMM(fpP-BPffJiOTjq%`Wv1pfQE7SG z5#FL2vf_L!VOHy77Tq~JrOf8cfjPx2iN%=5mv<4gyvM!2qZP_CcIGeSanPi<4op3D zjOA+$6m&+1JNR|DMlG;jhCL^wnzclCcQo5O1$zgmoY8aYYtP6KUU58g=O`(u@ml9V;cnvL-il1Z{;y|yfG2}@WYM%Z=EWt)bZ zr54%6U-MEgA7xc3n?yF7|CvsjRLrIjbPljJLq5|cD}V3-TPj#nuS5T>Ywnp2F%zg% zBJL@;-Gltr^$-U=5X=0)^*=A^KRxX~oS}moeXizIh4Zma((1B(Q3&wqU3HV0Y<8Of z|#b=Ip4u=%aaUI;*$Xj8lSI?X&GdZd{*!CZ?AqkSjWZ zfA;jo(oKh3qmUEL51J1~>UXqBjS4=>7-`KbRXbfeM{Ihf97u<@5{veAFNsD}%_fSv zFSFnoE9ymzyu#cW-t4=;q|{XS+67Es zryQt%c*r=$#3j{)7`l5>3R(FC<81$KR($($x6+V<=+BVDB=MNn1y{XZNl4hL^_bS$o3`ef-k2HG3J}8WuGSUqmd&{) zTBQqWj4gd$dtspC#o!YQ^fOmMh@L^5IuDQED4o!)u?=u0&P|VC z9J}?q%~41<*VGIh`y&~Q>9sAn=OIJh$0=98{1lB%G94owl}gxS$?4m5>ps2Gn|af< zAZayzpjpp_zEYV*upv9#NwcaE_BEKls9At@2kSbie!qi|FKI?9@ZFv!Yo1DbI5 zn2>BoMQ}P@X0Nt!E;gW;-W{fp$7{pekK;++4~W;45V(mcX15zaU^<3E**afi_cZcH zu;!N~nO8kaogPc)DI-ZJmEREz1B0S((_*U*e#^0F>JzN9t!nqf9jQQM#1`UX2lJY) z#%(pbm@9$5spusV?Oqs8qAq8`OJa$u{;{g&{CbviDX}ZdW=5zu@$g<~Lg9GgW3iZT zaoPg!edri+oyGpW8RUP^7}u-6Tm`^JN|=1)?lcmf53d*I;NWnhrW$W?0)6R~K*6bx z)mUM}3z6CW0XJ35@2&HG8aA=#SI}wW-id>;-rCCIR;*=-IL5EIkcUExei=naFs>jd-v_qg#^u z5pJX;WK>}wWMmWr(%{?-8-~%N| zABq!=OHi`st|h%6(meOGcydh(2xiv$zYN%(fR=qBf{*Guo0W@5TjH_dgYAr@ZGP84 z{%&RP?|qC0DrSwq&VdP^OyTYihhxq%-IHxsJfh%t6{lH$b1kC`c0EFDjADwv+WFjJ zMPqMi*!00tV^F5`rf~UZ!^Q`1?2dsSDlQ1OVT#jxJEZ`db2E&{_aHuYV5PibdquL{ zfabJ}Enqzvda~vr5$#?P*yx0ne6?OP@-50|wqx@}yoJM?A=@R}8r{%ZO&^URgohw& z{w+Pyc!PMPdvjgSw_M&Zk(lQM%y_iH+TQQVZWIBJxi-h5c%ZG1L>h3_GWfA))6w(o z=FecqE7(!Ee(&yGU<0ifDt**?d{&ULEb4V!@1%Tcb%OwUb#ybVMj5)PYYJb<_tuI{ zxReq@ry8dT_^L(*jIex-;x!paB~))V2s+T80Q0eGm#=adl^BQ>^jRAFfbY}pQB}k~ zX44=$LVQ~zx2x!G{aW%I5ANyAIc-F$UVtmdl< z;RLpTALy`0=^zFevGeKQPk`*J2ES$Q*LEaoIXyh->$CT{O@R_`RBZN^|J}1hFK|z} zZR`ahO%TNTE8K+ss@pdXPFNx)eoO~3E+2!2s{XE7m(Nub3ivXq4J^&iaTFWd^Tm|xuQ!a-NNh-dOD{Zj`vpoWG+2URA>K+j(!LorF}O1qr>0*~#lD^&GQPVb)`icd&=% zd^xjk)Eok3hNoJ#G|cg@ox&^~!}Tgu>krU2jv8kFrmFKFNVm)*ZMp0?Njkt71${{y zpz1^_`%1HI^zfy1GhEgHFU&sInC<^s=G0$&@C?(S=B-)ddF+F8hw0kMv1Mgn{bypb zWzpR~Ojnn(3c%@k1Rpx?20D#2%F)83)qmI-YPUb1pl5wxb+XCQV}=gy*^#WGYG9zG zTEeJju5+yOV3{EuUt3lX%zNxO$0KwBP{^bAT$*<&p{--!qK8;+dJiX1qcU#ki+e0z zX9(l1<`4!uZ+3d@+W%RnC3$5%q5)2c;K2y0=P+xuuQsR5Ca89L{ra}9nXRDn^P>zi zY#Ah`=XdXg6%vV_Dz_WcU?%tEPo^>^lvgVSF_W3Vo;6*u!+?=0^Uomcl!ArT+m{|4 zYUMK<+!K+Ruka}6r`6yM%}yOkzT6Q)xN|f1 zT2fV!a~8Tu8}I0nADvjnm$B`bhl}GVpY6F49Vaen`&7Wti}42^#=W^MAv0x4hSY z;^{~WCX~BSD6F0@g2}X$AP=;XRYEgsl`xhB>r9{{>9F#(&&K z=}pX4wt<0xW(Bd~uDwqQ;e$APwceg+Tv8F$4hcb=^HPv_US{1c+dfz*oUdiR=xo{favK6zK~eE#?>)EXh{NuB!)eSp zU*(3rn9AGhj{cPC;bSrhxW7H21N5<(h|^`J(Z-MJ6T!Oz!*X2q3KgwRkrq;SdS!4N zF?-3eHzxEYC6P~d%GM&kCcnjP%6eJpm&XUSk~#?=VLdiVWq;^7R>>2pe=VRP5I`pl)(v%;`O>+Y-`TZn(b~3?H-iux z^DOux#%8R`1tq9ZA0ePmysQc5Y7tQ9AKZmO$t83!_c`UWFS-09f~Yh*7K?M9&NW*} zM^Ej(cE07v_>W9dNJC5)9J>31dt9#8`=wCjuk8OOF7scM_@CeTnF9)C*<;*~sh93w zPyUi@=(`<_rd05o-o6c}rOO@9m|vt#VIDJPL}rZuV)S*`d6ZtwxosZ^ZT{O!grXTM zFSP}a&v3gO2vn(Bz{)#W%TTK4+g>VoKe>=dGWTqfq0YzH%L(m{aN9ot7pge#w&SV} zpM;_}T<_w>3YKLq875h+KOZudQRa__9!MIlemH)KRPDZ5jNYSg&#u5|t80FDmd5L~ z-&9+`dMsQ1QQGHW#M)VVO9pkLp(C#`%Ozms50rC#g&8tA!aR#n%JHvhZ1$JQSo{jX zvx6i7>6JZNH<-XfUc9lPD15``kutfnPGh0-&tw!D#B9uB-)=okc2Radk)hull}G{; zr^AnXm3PdBYy$KpKRy0MqNpSJq=!;(zMwIAIp+iKj?RpyYx3lTpl1FxIK8%@hjl_! zZCZZZVpP|=3^Ue;nZmwcW1oc_QuMm{ogzN{BlFSOp%qrCI>B2Pv~zU@J(Y^9mD$%`05|E2_f ze9Mb0x&nz8%2s_w3eN~G7elVR@7lkuee6m#9>0k4wBir2HD z3P8=K!d|ugB940h`FJ-lW8kQ(^GbN>+h&F2*|8d{X`_n1H_;w!YORP}w z=W)OCPaWzk9Y98_7>k!5+YeAH{v4>6EBFX*VK6xEC}#vCk-_ydLYpN$|Mk6fAJ z6!_eq2|N3<`rI#p3_#D+lXpQaTu0$_Ts;B`bF=J>c(VBH4}QHm_5`Rq*Sz;-O<7Kn z#|YhI^-bFZPLR-$ z*F`^);y3=P`7ZaehZorB{Crt+YVu5VW)S#ldJ|ZvZ9DBuCWE%0)@<6B+{*B%-y0F+ zU(yUs0^i)L2nU_ezUN&2Ys;mmlhzj}nHEpn64pB=a;o=~?(1WES95=XOs~W*t&PaZ ziA~v`dbCe|$gAF~TJO8=WR zwwSNNl)tf?vo+af^~Boy^*6bn1rzr_SpgR(n{WOn4*S2qr$XpaMlvTN?FjMw%+vq* zBhSi!8c_%%;;-xb4^Z{Lc0@1ds4ifrtzYD)i}=^y$%GvNUAn5j`BXjpJCnihfXc_YPsv9AZG4SZ}P=YB{&Q%SJz)xC|gV^*n?c3~2 z6QdW1Y^XH4PS3uf{`%~RDxMOz^mz*f9}U_DFx_hWdXo1KCsNyvP$a#@$@#H~5&YEd z<7<`nnmFnYdGgmD4g@m#4O2cFZRgD-mJG*p(k4ETE7;bedVOg0#kK>akOI8}16btA zZDdt}*FC%7dDz-j+HQ6L{9JD~ATm58`!lQn#F7HQqJ+e&09!k#ZbAcy(sAyCDiEKU zsh!de&R!uNwYI<~2lDKujECPjoWg2tVOJglp+TY-U}14J6ym|HtA>KgXqr-$+Wk&l>tA4J{ z027lgm&eo!HkkIW^?dd8d#wy&=R4F=C`xrOjbSD96yplBUFSErw*f{0q1AFs_m+gZ zow2v^HRVLQ=ri)RsP<+QeNN`d=^*N4DpIiM8Lu7(=;ezFu0AQQb@V7(#e*jVT}B0N zjYdc4po8&$o%;XnyV#=~sM&pdYlzF6PkM67BdtXlX3n=3N|dC&@yctFZSZdwN#AtL`?*}_i|+p> zyz#GF`(JC$O#Je`5stGzaGxcRHe%I^mjFeKdRl{_H>NgL|+ApQ7ME~`l?@byVgDuyB1Nk z*&Bet+(kagYbq0|XV6W4`3&cgRrO7D;PfV~iVm7}t=-sN9Z<}VjRsjo8dNcPTOFPT?<)4z*shQ~s+C&if9CSF+16ujPy*jNmTPl3JAz-FRGV?dV6v&D}Liv$(OL)?)Mgt2=CX7emzZJTh2vXLP5)ePV>`9kse5TL!3 zW>qoXaT^(0dNF9541w&m4r_$T7AZPP?)TJo4P@8o`}#*CZ4h;9ORIeL(n4@6Iv7 znOT!L%vY-?0<7^h*S(y;^h+S7fM^wTga-sG0GA)a2_zk^(IZ-ve>&W)OPgI=_ahVpqL;FEVY`J zwcL?_N5_9m^)?Lxco`#NDoJBQ^Y>a zPpEFL|DY>{i~w>!n+vT@xV3i-9HQhNaPgE+1M;Zt|Dzy}o{*s~osrBYol$^m*~6hu zKc;Luqv+Oa>iAh^fgT#)WjV3+B#cQ+#M0-2_LeaZeJ%03xO(M#()zEShzs}9r_EZd zR;kX}czE_gepbM1Qb%V~=}j))-e~3QJk9BSU4pijT}s1o=1Lr=07?oVO_K+C?1OrG zQcC@zALT@9hO!?E<|*}X*hN0P5bAtXreQ=$w|m#K2W{Grj$3O}vLa;QclN^OC-~t} zMd3g{K=u<~>i7C+IF3wD67Yc2v=8;AT&wFHBK*&(hIB+t=sbjOF6`fP`;8%Ct@a?$ z#z(f^$Y>>UV+j< zTS;_KV;h$F?vxPHmi0I<;sYQy|3j``qy4dLl~BetFC}$mhL!5~M`7OA^0)LA^Q*d? zvBM7+WjS{uCa5huUDHDw%u+1+s+EYxlz5HpuOET`>vp4< zxW*S7$9}DblAU5>O&@SP0aq4FkS1>KW=3^WGg`vOzmnoq7FPC%Z%Lyf>)~qWIopue z7Gs77Ler=2#uS=o`HNG((L`-5unuiWOtXaO--%0?=YRVtQr7c3!pC1eed9TCDbw#Y zaJ3hsm)z8qqPwSJ7wp@Az_&Z$=g+mvXghJKsr9FR6x+3{Hx#ttCh+LBC*H8cQTz?H z)+@F`!MkE%9s5Iemg7#hrv01?OnVi$*~*B$k%@qje_?-KI(|;_DsS)J5)Qn3 zx1%MbPs`V8__ZVpteQ7tM|Rb&6}8H)!`uz%7t$$l9cb&5R}#GM^JwHt;3b6` z+9<~L#*t{#|GjyBOt*kyqq7$-s6G0{Pw)gF7|-9A^%b9AM^5I!$Q#Yvig`T%R9%Fw zX%VJkwZr71HLh5#u&fMa%x90Ey`6N)6wW8~GKgR{k|$x>$lbe;&t_O8usd75Hy7&6 zIVsqR0BK}hsMzW-+!bR`o!?-{W$5qQ&NY(%e13JZA^l^XNtwgudCOZ( zEukY{nkwd%-Gb`$tK64=PgQ5WI@K={G^Nol_lIAB=Nm;lLbbJZ$+Y76fv%?QgMk&S zi)P-Jn2v%kF$rhUQpWSzgr-H5P5v0&t`%ar3l#iQ3nz4UiDUUk>4=bP|?MYm?JdCZo=c5e24 zhPG2U$h+MMX+y^S**}KT%K7#?Oh4Gjnef|5<=mE9&quX-c+4%Lba;fw+VqV%K+YHXr4TvJG`Qz&@KHhmqd`$| zX`g(TBIwawn@Dr{)-}sAH88@6`FYR^I#O_AVqv%nKu+NX=!XuIz-<&{~`lZJ!p`A(~|6!%0o%r63-J*i>N zmGUw0QSznJgl1eou53w4;T;UK?u3(;hn<`HIax*J!mH9lw=~eD6S2<>7(zR=C*GV7 z!oGlhqI}CJTTLoBhDQ`SYWOC6NreenFIHYIc!&r6wxL|RH#8ykf?x9d|9we-PydlN z+Peu%djvu6gPZyolU2$_4BC}!S5S}%3KPi#y-6r=1rK0eR%KAOV*$MJ{)0AoWI$jE zSqEnzHX`t3eap#gV~tdv?fdmxIqaCn)K9gWh!UsvY)+J29q-f7TCPnswPlzSSJL4} zG;;e{U%3}V*VNmO*Ml1Kh*X(q7)!O%E-zpnTSo2L-?88?3CWzVtXmVHAL&(|>*0Ra znI%LWEDvsozDbx@qJxS615F;1bbCk9vK638_E?36?8!iV^*a1D>oJ8o%owPkZNW!m z-dM%;Lg%-D1Ionv){Qv{9SaS3Yph)d=&7%6K9l*E+SNz}atY(?`~tZLPxn(^;L;=D zxLo<8J~c<_i)4eK4O{&LqMUrgZAC$@K}AQab@O}=Gr}V&6zGSsL_&?dS8o)#U3A6* zsR}%vADmY)k7hd1)Sz_4sJLdu1ceU2!Y3~hZ@Mf%$~bVCmsZ^c{?c=PuB?Z&PSUF^ zo142_74yyKF9y}|#T^XEi}H)qc>R)Xn$f5>d&^-+UXoWt0%d&BMw$1e_~po=>Xu@} z-8k`#d}JQ=6Hh3f@k=DfThT48>%Xeoa**T3rA0YgN`re6QBw`CCmS=Vk^oRw(59G>D_2xioKc3BT#~TaRze|Ni zKKdCFzyB#0AcD+1+<}QQ(7gMTCqO>d)utbUxAsF<$9(I%rmx1>m#;-d^>C@4Z97PgQtbx(vhXtdQjuLpx4kgz}`4X>EgVYS}`ID#Q@N<*<#+f^X5FbU-5q z5Mzaq749sHxMkP4Bqti0S@4&+C{GvQL=+AexsgSOv}v==0@{1ovI%f>f0T1{`BoSb z9C=Z^ZF)cH5O$$5=XqJ?P+|4)oaa*!pCz!M!-B~Ksy(f>ptERz{3UI?hUcJjxASS$ zAuWENayWj=Kqp`8wzAMrA3u^L1CJ$!SW#QuX!hhO9}PmqREfb52v>Iv%@iWm+WzunF!1^5p}^;6fo>r^ZGBUML28E|>$$qssE>&)dNUva zZl_0)@GI8J@700AG6%*P6(+UzA6qBK>eB|Pj>cir^_dtW?g50e{dPz&ENRLb2`tv4 z!MOSGQ((P>jb4LbPv*Sg&(74%BR0;G4F`C!p<9IxMxpoCF3S)Fro{OOVQbl=3276$ z^QN9j=nLkHJmaRH2q01K`HjhYHVrF6nR$y>=?(hI{y;(Rh+|t!E>@+K2wcFs1bd}9 z?p{xkG*2DGh!g0=$(#gxd66(#pB8I__>@l;v_TnC%VxbmFNW?EH*eibIZ{{teMF4W ztC^319$YM&qC;5~Z*t&5?PV2MArX#mx^GDNCI!CR>sVi%Yv;52Wk741wX~_L(jX1F zKGVP(E4IAed~(9zJW^4OmpcnF&p9bsx%&`Nh zKA;x;WAYP&-|l}BK2}m;*P*c>uj3-FG;lmAf;eIIQC}M+pBtlMZa*FEhNOh`f4g3M zGbvhRb@ImUhy&B@`hho-RpJ5)i3VNulMYF;d*58gioKasCTZQhJssYz>I(}CrguiV zPI-JUx!75*R;HXw^3tK^VlleLQa7oSLOf4A`HM+ip)reEc_94HqRCIVBbM6$P5Edrw24QE#n1fnQ~qtoKb)GUipaGu zLqK<-cYjiT;Wu`6t$k3W|AjdlF;oD)vvN_AI^u^arQBQin!AUqOqF>pov=6OB{3rU-QdDVz{7d8e`_bVZ*5Ga`M){SJ1WS>lE#`;l6FK*O{|5S4|% zRN`ohQ^;EBZFhNPF;sssfKjODui5d; z8+ssHDhISwD-1PvZt-~g)Zo4o*jy1covPzAz5tF19FK%5+@e z7>Up6pIQKU!|gMeNcr~AUqLyE)~waRE@|Eez0)FJ4Tr4Tg>#}q2ciQpz%1bdr*ZK+ zqbXAt4-UX(yRayE)z0j9V7Xa~cu(oueyxEUPQ77LoM-VZ6q&roi)am4ykGz3J-hub zqlH{dG}7C@J3wb74)mMs?@VsuDcO0wFm#b3MHK7xWaJe&{;JFcNKZXlGuU<5hsGM# zd$mb}?LHGB=}14`(l)14a$q?~B8+tM348P}a+HNi@i zf8|+!k3;1B+`wqFv-ihXC#uEHroT}wc9(9`wb}@BnrVHL(tc;5hC*)xQP5~gs(?M3 zD;;pI9ei=kQZ4lA(fn0JETma7i1GBu*IfBcT61EBo4sLcb$uL7zA5DR>A&Q4zEBv$ z|40yYgu;s$s2}qV@j-BXhSN0T*7_#&Pz0Dqde&dV2|UEzkbU$n zxj>S>?}=!(ZT@@jc<+oBlx?4k6!xzFax3vn#F{|jFEfhXj+0i71SJ}5X7l-YhmKP9 z;#nTStGfl?DvL0&qyUZfU_5w5)S0#0pEo4NAurm5sR3AaA@UyKG19=JbMnfo3O<&p zi06m4zTn$&h#(VAX@px9E<=M1usa@pXg#PrR!QZ&&LQD4sZNOkQkz(Lx0e=O5J z{J@sxJ6s08cu-Xq>L>xsfWad+HF%?%4#?8*{GQza!SSV1iQOxBdHbYSm)r(COm!{p z*>{gy${L?ruW>yL#B#MX0E4p70It5v8Qc<-2Mm|+I8_-S<)I8=XJ- z7u06LL61CQVn9(8cK%I#mIhIh_?>b-pf-h?zgE7M;{Y z8(xl$`wl;U-S)hys)3W3HWc{*bG!dVh-J=o)?JM@U;1IpK zL`$%i+%mT^vGbdm`HQCIm6Zw#HRzD@3VWe6gYm8Yx;fap<`0^(Ax7t@7FicHYaeSD zX(b*E52EET%z0UT^3&PSrE3Mqp~^uq-xf^sOi6N6udul&Cv(Or?|}QZa*e~mXB%I* zj$d8vkD?nG&b$|#FaeSZyzXf#FJccWcJX!MH<^&8FAlX=pQP`HEuyknWSi z;04>M*0Py{wA=EV3SkA`kylVj$M*kPpqqQ<*D++}kSCc<#DG8aS~>PpWZvG9BsSFl zm-@v3=J(A{tThh+NiqowK$S(gFc3Bk=m9;KVaa%(myda14NGx*X>u3@BR=X4ZLnMy zqTVc3rG?PS{cB*FSv<$7U90Y4UKkAenW1^V)d)kDSL^m_7@b@0=*TP1t@68f*OLz6 z%jMgOdI6nl;Rlf8sQq_ng%W63!fHChlsDL1iZIWa;`y;A)AJmKV69vI^xz}zP&~u- zxA?^?TlM-ReJK>Br9e<44=K-YTRUPUzsNbu^9YK(y0#U`vF$N$tt;&b7~0Z{Hz5ou z@)P3u;g1F?N0PDrLwzzfAs1b%cS~n0@d-9pKNwoRC8Man3>*D+%Twmj>oSy;!eN(@ z>Rg7)Qw~at#~3+7{azsOHhm1AhQY-#6ct6y`a|-5f8RPIBt+w_q>dAuWSHFg;7MJV zZk2~ldR#RqmQwZUqhw{kjiR+0b7HQ!_tlC4lUf~dd2oMpXwuObt&DqT#VF+Q^<-#u z$evR%`Dg;R!Wk^36G!M?t0@m^-`gq!O)<_9Oo5RNVJvvdyJ5f}nB^C+{Ck@>dUkr7tXZ-DllvINpB0kFqRR_XL=e z0ebcpzNH$nV?eZAe`_xjz!PCp+^yo~Ddw{K+v>P?67u^=Xe&W{LPbCuF<{l+@nS?Pu*|JBC@UUHU8n+JBt zWRb#cLxcMDgTfuDf|%9mtxpyG8r2o%8-WY6rNW1ml6{2jIvayzFN*a|Uub{Yp3XEV zjUpkj9CF%{b0?-`fTB&lP+~}6P3_KOxc{VUYcozS{>mQ|ekm-U$PQ`#}M-jxk*OEMsfzj(1Y3WRIAUR{G z`Xo^ibuH|Lwj~)?9TzLcX<_boJFmACnZ7xUGGUs-8tl3X53E1h>g&Aoml&^b_{2UP z)S@T1jMm2ql=bHwTV|2#QBmC)w&h;y7os5_T%kQ!MT>u*pmj~~btx;Un7yC6*x>Zo zi5uFl1{IW_7T`~de8$Y5m(Og!ePh>~_%Yyn2YcF@k+Unrj zp4q&L9>4Yt$K}wYKuCtf$bbUDKM<7chl#wmh@u!xvtAR9211(Q8^XyX)H2+45*!XL z{gC@id~DtK8EWy2@|UyFR1C^VUwNY>;aanp`hKm`T-OIy+XTt7lb@({N{vGbao^xb^exb-P~>dGvgc~ZuaDYt8$YttUXXk#(pVGT{d|;MB`ag1C2xu! zegy`L^%QF1tjm%Bx2D6XV6P5A9tJa>))*|Fjm}|LaMBp?(CMT;#?zJ%Gp&xY+n~o) za2bN`L=R%KEsJ}#$WUriQb!@|jjhm>`sT*c;U@*k?gx{JH@$Pgs2V1>nr_FI3|y-g zzSawlPU7#XpZ*vMO#WFug%j^u+w7aQ1AL^>7EP+PZ+r>OLDRFU^-m(!T{XMb9Pk#H z*C$nA`~OIL&wwVgtqpYSViyHOno^{LROwL>kS-;m2b3n=(0fEwq)YFh(n;vOgEVPD z2m$Fz2$2$y5&{9jeVO^rIp54TbM)T(FO($j-h1uU*Ym8+2XcO8QV0&T@ypp4*{3*q z&lLJdCoGU|LUkqoOu8_V4y3{C1ame|2UOmCi-A~OCcdw#PmCd-K-Loy^i9k=GTb9w z7lDFJ;XoZ3IasP?_pZwb{7K`kEz9TVgw2be&MIqlR|(iXv-q+|ct&lw{2-%*Ms3fb ztavJZpsqkB?9HN|mCf&kHH?;qQ*ykcn3ywmyndf3MGG;(`wBcgHSd&bO4WhiH z2P_cGJ7z_U3^QOmW}-kP(h7j*(-AK>YWacN2ks5QTa#Dq^g3wTQ_G@Q>^`Gr>xP>< zi4H_P8O6{ZK9oVGA9=e1%N%`K2v-;zv)B`vE5y&uo0#~n8Q&j=#EeqMC+2br(^fw6 zdGC6lSf5%u`sBQ3n1RWw(u`13M<@rz-HdHeuPS8mL#2R6-t4$`Vizm_i05g`m4?Lh zR@=P+)%xuLbUJuBgH()hXcLhACM<1ZS#iAIS=qudoW>ZUw"w!y~ztzTL)S_E6 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 z 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 diff --git a/demo/collateral/P-3-Faber-Proof-1.png b/demo/collateral/P-3-Faber-Proof-1.png index 94058074ab81a66616f7385848e6256eb33ebeb0..2845b33afef7a6e878d976a7cd753f559525f1cc 100644 GIT binary patch literal 62503 zcmagGWn5I<_dcwGA|fH6bV`V%QX(;+BH}2BMR#{M%t(tcfS@1^BBIiv^b954-8l>( zox{Kk^PGeCegD4ySI-MSIw$r%d+in1TI8SuyR z;yK{TAI?_^z+Y!wpR3$EQ_#)20{kGgRC=m(=1g%k1>X2P@SEJ}k+$oZGgOV>pR+BF z-^|XO*{xB1p!CwqV2z+#!XxYQl>#GiBaAyI8`}N-#c%G2NFHso?byU)SkDue2saf7 z_6#G*TY)vErZWdTJG|*VG%i%~K{l^K&OLjDe^cM-pRdJ0Xfk(nt(XrpFcLew;A786bCPo=gQ!sWTWWKz0NObhfGm1N^P(`N7V$jUO0q(WqDzBwB z4i}D*^!Jh$Q%7=nDoHe@$WX*}Y__=m&gxL@Jxwg^@fP{(%Wrs786imTtmdib73S8Q z-^)2*Fk9>m>0L$W)erKr!}mqA%2#K2JAJolx_dwP+9U@xv^?Hf_p|GvJw9pcBd0^1_H zZLVxC@nZ8gNnm5$S_(2yC|gpCe-GSi*#hnD{UbVyH)}!@nmZf!rhycZmCp4!$lTnm z%>zYq9OengM(?UlT7boz&nK^p00@4sxu5~F@{PRVGD57aqZujl7XH&@p;0wLMP=Z^ z-A%onxPW!)xX3z^r|kg}2rzvk=gi@ z6K8PzE7>F&F`IrR=tVYB6UV|(Aq3*?m{<6wH=W5%PA4~#h|Arc&;?qK@|f@~dVVJ3 z3%8HHu|9i2H!pKDETWbv@75H~Yt9lrM1Ni)eznZ|CCMA|0hz))3nBLc-LQFk|Ktxm z>LI$)WJdQ!*oytHY7GyBm*e1H20EGTL@2Kl+_GH@H#9qGd!@)~u0=xMuz7ma)Lk~q zR616CP1b(&aM^NZp2l`223p`Nh!{#_6U<1`Dm^2=hp1q+;=Jgd(?>i!S&yy}j$!)w zVqR+XS&bMsE8prCP2-|5wZvT|Q}-q4LT38#n=N&I)rX@|gh|rHPge2JJl|b^y{NJ6 zKzoS#%eY&)E$=L(#$7MO?#Ur;x_g!#FuG(hznEi!>%`7 zlS&8;C^|C~7x%Cb@#+_1qiCT!ia}A_#xB=M?9*8C!{wzvJ~WDj^OAi!-BDMcb>Z$( zTs65aLdJZNdkWB%147T{%ub*nIYh*H;_+uM;|F)1^x?t_7EM3NX7u5VQlwg4B$@C7 zs`0h{3Mf@gby)?^f{xS zT5NRteLJczgsHuz7e^-bmix(#U1!Izi?j>sD>rZJe|)&KUNLuQw0tf^CQqPNwASZH zlnhUwt!D4_RNFA_4OA+QFdD@YWx7_8q*zMBeKYu>&)s+u%3$N4<&d`9gpGAw{qLDy znG!UYEXGp4w*a!Xs1ePdNgLZ_wq z_xAfRMp5rR{3K!vF`hHZDyo&qC`Rv6TI5fRGl}s%bb;kUW98UAk2?dVF13dL=~g!y z(?s-5i_l$#A8^laROerDa4TmWY(~QBvmdJ+npiiIJ}dm8Ej+R82=g(NL@>#B{*jTm z2dRcQ!aZQzZ=k$$J5~Ze@2a^**76PqNJ1mzy2HZB&b7L0OfJ|JN~|x78Mt2N4n(-S zDh4O|$yt-j9hr@vfl4qfD^~BCCYlAWPd`lgu)x{I=VwRG&3({aAr9Mk9hccBEls9e zf7w$1vkLZ7FI|ZQG&Z{aX>!og+0kbn|odv60pD4y{z-?D}kpwCC7` zTf+pZ_8IO|MCh9!)@xY!SQm(b1I zlh=<^6 zmNlABBGvl#N{6+@>w;!6*|TOZ)Y+L^h2f?%#eHr|rsB@qavLMmjd{f_9k<$V_=yNR zmi}_I4zK(j9G9LxOgDNQZ8Gvo(batokfzn%_W^-S^UqvOpX_vobj};kJuywcy#9)X z!S1Eyoic^@HDOWPys>QjqjzGq2bje)0tRy91H|qQ3k?Yr5273W8pJZQnZEHST3xVx z;;CS8IA*BN5VfkDM9`o-!}nyV=6P7N(30Gf3^Mi2Kq+P;icb97V)R1&Ej9fs{N=Xv zgWvQo)t}9JA-=hsLmF>qgcf}S=^)*ugq+_&hJJp5jyyBaV308>HU<4<5$6q zjYiT&5@8GdXBjzhza^rgB=74prl`|noH3Ry6u$^^8h0M@p`T?1{B`F`@7)qRy~UU= z%sg*qD zY-(2~>~<|=;QAR#i`q^Z)mDL*=|>6Yj^i8V-dSjUt9N^K$ZcH8!|e)~(zo|MxWPU} z^?j;$YY<_0?Z~X0_?Iixq^Y8$Axh7fR9ccY&b_X~z0~{El9Q(E3K~%%hpM$;CvSlQXY!9y#7Zv_EJvwoj2y z-%^&!J6G_&s;rNo)hPFHRme^#r-`#85Sh)%mKl%d z@-eg7sNv;WbJ}Qs1(UZ}PS!C&JSkdwmy?r&J{yIWiu7gqodOC+!77Rggv*Xf%@x5nnQ zb2eTtm0PlrM#GXZ3)_15NsK@@+ErDdxbQLUTs-`>mq<-T_D$~#a!q-@HsXo+KI{iV z{pK5vmY%WYDH1nnOegCI=Ow zBxYV8juBWr!63xblL}k|Kq$(!7k)zmd@Yut5kS|TGoK6}b)s0oXWBaE+c9-hx?GU| z8D|DYOg-THZ)9k45C1g}mbf&k!s56AE+JkF5Dly=oXkKS)*Dc+0Akv-wdjD_i z`ZwQ}FHR zJvT<1f0h`z(O>brQd&`pYgBi{A0Hra(j;B?(PccsYo^LHC}=Y*rpr<>Ft z!ehGXD+7RAv820p(q#CDV|YsVKGws>2Xl^Ts5_I`JR>dQwRh}DrA8f`Aw2S3j~AF& z^gXasEyR!qej#y!i3B>IO2y%ayEs|oG&MrpVS@F|svt9)vV=3c9hF+Jw}UI^C9CV; z95vi&Ef`L3p{;Zd@TcbQk6i)P=B_)>4}<)~xruh5!s(5%;(=iJ@7A^eYK5JFW!1(3 z_jtUWf!luAu95$}Eo}(@UTY|`Gj<{i_uJ%>0G~u(28{rY3ps#YJj{LLm_ABL0*OS) z*U24V>MEQ~EjhMV>}`s>sh)Y z{go<;U1EVo#hAUqY`0Q`tSmS&Ebg`3T(eaQPa7aPhIIIkT8_ZBmB+b}8%Gl*{nM#? z2>Gh@JWJ$SQJ=`Qnu-Kd37S4ixy;lwhpIB80w%+I zd(J)Q==!fc6)$_RjVu_flGv>ndUH*0|E$%o-19j)ZjaJgl=BtrTKip6q(jVBZ;JZ= zOmdslW9I%-7{4&AaC=pO>ZR4el?DEDO9Mui`Qlz@AWIW2R6z&&c%Q$B@}8sTuvinp z6C=;=w2Y<7Y3yhH`CV^bN;v*`W88H7|M7`%BQ6 zUKK(Tf}s@Gl4Pd}18GgB4-zwfmxxpk7BH=jgnMr8*J2**cByk%&52Ny)q1r;<6b52 zoDq3+iv|B2wKeLtk{w9d{FYCZovdN1Pw{Gv%oZ##;O+G2j%rM<%~+)M-jNMY6cyRc zC;BB>(obYA-VP0+NJ<@MOAlT1XcIR)Og{J4-=ytuls^ve@=Sm|q{DVt)(MYBf0xf+ z+k+;P6xn44e5yU56A{+3+HgZ%dh|B0#$N_Qrh*n;AF6#$2v&{fMFP0taEWnBwzv%=PXFgs!T2Yli7%3nPXp~!?mTf`rz~?L|D&t!G#4e2Et|qM zxV$qKE7ueyOmVWZ{pD$F6X?*B4Q+uM>rZB;#Eh=AEKlz7P5l2VW|zU5j#(lh7n z2qavKOj;BW^;lp*zTKZ=mDn)(U1so}-~OTvbz^b5WZ1I-w{1;PFN8)^f$Q>fGd~QQ z>Z4TeeY;qu0e{ID)B|J4NU)#HAFI#50{G&jsN_voV%esgURDH&`Fg&ya_aAzyLS5> zo9?xHhkI@o;j?!g%tciVZuXeEaxRIZG!|5RbZ8?V#g~P7LIOnmq!@mVwTnGa@5T2 z7d}Zd^i}eR4_~Glq%#@MH@6L*^=o&3&jIA9(QHMQElT~DdU@|u74Nm@Hf)=|o$^o- z|B~*|e3ntR1T<)mD8?*d&Dff2X&o3&z_<0y=67zhbE_JNj3~IqBnRnU+{{HApFDog z)28wTF9|x*8kc{9Z1@7;hqmEMzh|nMqIPb1+VJo2i7m6w&$B%iUSBtD9<&#h^yM@7jhSFQvySZBnViSr45n@LgYFvD^qDmqPXK(6)5tDq_|Hc!>q4y z*jK?gBw0R#a$^%OjqI;7lCCJhWbNmEvip(@Ys?qf`|wrvnxj#vZlP6qmly~+ebDLg zvl|=S@3?_YDU1Q&Q1sqzn@_fO{=$Kai6NWN3U{%er!Qo!mryH&RP5GwDK_oUuDQQ9 zS(3o}yF7i2Rq>ap%H3Qc!~w^2Nioj$>{=QKk!X8d$63W3oO9eKk#rL7&&*YFP*@3Tizc05KKQM(9amZ?ahA?!MkTwtX zNLSbrdsDM+u;J8Y529Ha3l=)V0AVE5{p_kQEW=)}r>HuXb;>3VRTZ4L{9Fh_*|QaW zfCe%rNB@3Wq}k-EwNwpRK1Z&f1o(htq&$)r>fsj0TY0xVt5Sl^-%Qq{;ZD)b$tHD^ znwYEro!Ne8wZV zK+w?E!S}CP7Z6GtuERkq0Y0*2VVsPX_{x_b{IxUR+NA_u<%!C{_FOtLJ%dN=PAD9> zAF9?-a9pi9Sh+X2+AL;_J>Zo;)<>Rn$?rXVWcz()XXcPqp?47J%vsk&dla5{IEFM@ z31qG-cJ#D-NAmS+{^qddRnIC8^Y60O!d(msEkgU3JF*1oDnIbFtz!DgXd(WyU1vpg zYhF$r*cbDI!T(8bYLq+u?u3$ro8+wR{abJ12OlwHvcWUH2KcQeeB+(kc~lxiK#N}4 zTU|WIcntFlMa&le!{hJ99i?QpQ?LX0d)n$|Fkr%>b5r z4ET#PMwhoGGr#5e+_T;Pc!_2Ufk4x z`4M4<)(sZgGRS+Kk^)c0&g2(HJt>phbFDj8RgE*qV>&5<^jJm{9$=*$@&tU6YqFgnSEcS;IMQQLwu z)=eBXux$vNtW{5W_g0Pck?HPCe;)Fj!!K@#qz|N?rL!3S_S)e^B9E#|o$DCu@_egf zz8g+_mD5lMT~SzS&gBqq3hanp<2Q4yq+&iZc!rGJJ6D?Nd&9N|9B_ zcG9{{OB{@al$eM4)6 zTmg`~;kr;(o0?I6DYB5_kHBL!V!&0{ZZ5nZ0PFDM)pe)nitU9kYC=F0C1D6t=hkw? zo}_9*^hb#3cw)k|e+;s#A10vI6}d~%^}hI6HOcf~BC@!z$_;ltUAZaY_GO8VSZmbt zijyIwxE@^zOIY_s4NoZ~k=S!Y)V&_$L2?ah8ev(7XtmQbT zbIuDf%WG5_EFaKSe+eaX=8ApkhFalxu7#J)is*ZK;W1bEHSSIg?DfOAt%GsSjON=h z3Y8Z+s&qN$`())kWY3B`xiAn?@Zs(}A}KV8S$K!(64}(7_#)P#E6p(1DFL%zmkoGT zcR0Z`s|SvkT_@07hAJMLa}m`788SRHn}2Efd0{bxo_&3&pyT4mObDK8GrGoiZ1m81>3zCfeLtm+5@KM~ zINW&QPH%lU;Mn~^cOQm=XVr30S0fqFmo$bscQ=9=9=i%fyw!j6Fx7*cYkBC`O|Fhd zMKWXluC8ym{43c9jc{yQ)_q}`9;@!gdS+Re+wQxPRZDbSzu%QB1|x1iu)a0N`l@t5 zPQt<~qdkVVcB6T)%er`iCniszzBa{IF2|s=fe_9Mp$REBjHI*bAb!XmQ%@ai?VTFqC zIdP$RjXP&YpM()|@9g#OMUP?2r88=ob}#a;Oz zJaEc6@alvC1Ls`N_a|_Qy^ww8tQki=Ibzp z)ZHJLc3z5VOOZtU9mX4G;X=Oj5qej`idmKdFvgzhd3=A6?MqsBR-ealU(>h`NkH^w ze@s9BEs>`!2y_$WDEuZMhz!XF5#3;Y$)jyE{{Y0zNBW(|`JWp*=9_h|tv2E|>^K7N zMx$P4bk*C1r;8Hw>An`wRAu>@d^3%x+7Cpq!T86Cm&IJIFSuKubY5UCnfpPacY9A$ zV=Zrz_>M|qWQrsxz2cZVT`9mI|N8T(spSQ&cLFM8l1Zb*PzngsooB&Q3bMShJThS7 zodDlW7(c!;Xa2e7{2D{}ub6#P9gh0j^${g|*($Xk+8?)5`;z^ZYVV_DTp7CgDEdd` zlzs(LMl35i^{f(AQD{GfNDagQ^uk`dv#dj|Z)O=Vm3n-LBD)U){>JdJv9yaNSoW!T1o~hc<~>|N#*XU9kg5)2bm9pk zXdlZO^zDj*SxXxf4Q#C=9H%*c{9Y`Xq>6pSv`EINqqwhVS0I1@e?6)J1*Ndm3FS{zRr`k!s zns#%?95Iw26IWf7xFn*uy3QPXrf>H2lJ?wrNm$dyA&%Jnd^juvuUAG~AvtOEWH zlYc_c#`N5f_10nf>X$3Fq0(yI22_&M9;3=#;h#;Pm#)mG*UfLHazC9&jh04j+End1 zmi<|N=V})?T2{AzT&}k_ti|Sm*rS1b@59q35MYJ)KMB#lqh9$4r@+rWyQq#CKt{ul zNGt9Zcw9}$em&plsEutq!-wDP#5X-hkqx!q87kv%{4vn1Rk+(PG-bXAbhb}~ z@r20pleNN4nz=%I(CSKbhvf9p+I_M3;4#)1en$u%Kb&X9$AvhSA)c{Qf73E+D!V{o zUlgUf-w#`?V0rG@3@5*0IMcQ*$nI_?Kg zT?=gJAE;|^v|396r53`MYXa$B{rdAAKj?4Sog`UAFSEJxV-;%ru>n3GJ=`YLS8K++ zmvbMm5X@vQdSppe;8x;%AN^ zuibZ&j4f?&g4hdr4qh^C@VwUSdU7v9%7$f+;IYm4PV^0u3$_J z=-6BZ-C36*WT*D(26Y$D4>uV>GuReJ@hge?75HP^)fY=Coog_?cxZ{8ze?)aw2VfR zT4k1E)`@`T9J-D>cV!@VO{+Y8O;r*8`izp_tJ4Cu(Plc`Q_sy~HaOcnE@oCJ5zS3s z6uRK!-21JhmKKkW!qTm*y>u;2$ z_TgNAHr@1BW?4u4-qHQ=R9HyWW*S?HS?&yZ`!l-Xi&Uh9;CPD+sr#QSikjV)7DCbq zui{?yj>dmK`gY-RWW@I@Bdr%HLQz8q_c?9zv{H%3=kLkN=ZjQ!Huf2cf}U|#Gup2M zQ+@r#3roesuYlPZa(I{Kl};wT4@_Z^>#}X#g(Bd_5@U|CbcSRR5U@8`FEb^lsCku6<5Q0 zEABp~E0>}R{r=gm0(9k_VBYC$Fa;|+&E-xu%dV5Wbyjd z3xFXK%h7AM!Y{;Hz$ZTZKJjH38wvkQl|h9VU*&;HEbHwawSx^Pw7GnNhXZkV1bW(B z;sM-xbE%!<(6RNdvYD=8+^Zallxx|2H3RMzZVjzyzW0md-qMq3DyrigL1<)wXEuXE z#No5&N&$uEHR9Xje9pf1DrU_7Iz_%@*&!#3N9G$ga6|S-35|Z*(l`OFle^6vnw~c4 z(F($0sXBqBlOuWYDLud3jv!ZW@BpPt1)ARm)yc(}3YR<7wx1^zDLJ4y2Y)!9Zi^3J zr2aB%y-)-cE*R{N$<;+hZ*{Y)LW> zN2L}kd~#aO9zJj7pwbi{9fzB4uxx2BF&eT^rMk}S`>1n?0t`kd!U*vNu$+sk3Bd zV!@!=n88+N!BQyY42$_*k<6WTTKOkC%EM#W(Ggf$_;T@W^{j+=X-KW1&QWlgHd(A3 z8{74hApdoWc_8sZ$zi(!Ix~lu*qORJ5o2*RW)A6R)V(hC^^e7CxD3`-E>Sl1C3)#u zm8~W93HB^T`U*ju;~f^fEl=KOmSwE>QOu7UQl%Y31jXz(R}Mx#Gef((cu4{d{zcPS}#37M6ct1rFgY*w_)V{JLFv&YU>*rs5zmXz3)N2@JKWUqNUz z1V8?Np%HQM|7n84kEOxR5YNu7!32WpX#+_ctX*PJe)XQ_dX7|`macqB)laHjJJ8~> z7H-bZQ^IDbY!J%!MG_o&x_40oZJz6`(L?zoa~43VHNaedqSOsGd)OHV?@B`wt9CMOr;Z*T{y0#j;WydwB9e#;p}8>A#<+OtT+F@sDr=OlBbCB zyjdihRJ2(AMeM|f3?p$EPJ{Ked0+MMp(#Y*L;j9!;9L4K9s4d;GKUKlj%2?t zJi8F+u&}PlTzV8{cbMB}{3i)Y*Wt{W!W&3G*ze72{XTOfuRou%HpjTsNe6>K`fK*D?DZBL7K<%sK)?cv=DXp0B|(d zJk5F5m~ZBy*Rp-N8G?|kyFm$dcdCRY-IWS+b~I;yO#=>q#j3hvjzYR^xstGTo0!-hf=|3pmoHPl>bQSGbhH_m6G)h@Wdg~^8^ zLWh^->}r>doX^K@kQGyp6g3XYB*e#`Sx5$y(lU7iJI1;<8co~JJZTRsENu1y!N*?P@Zv9?d8^WWgJH1QvthamEFJQ$*iR0B9ld(iLiG=-EpgsF0YxmjQ+a-|_ z{kiKV(LyB0$t2?j=xAAxA5gxnBTeR4`O$OTML-g=e@U8bHr7y@H1zBDXdjsz3J=E* z8ymF9VwurE;&hBG$Z|w`7_4A2HZGt8#|y?f?UPBi`2GLf#=oCck|Mizaw@3GL_idq zDE~2H9?i)cN6~2lBf#5!HTo?OFM1{0mxv81k(C)|T_cvBo6b1R$H)P{i#*1NuM=nm zP^;b4{uD@*%oef42$ISvd~m_j{)6ny%B|DZL0cEFfqutbIpeb4Hd|8jR=MxNA)vqr z3b=iU^(J~ne*905tZwe z%J4m2;r9u4e3bN0-EsQfz5lH{`X-;&9m}srye%|hw2J2)fMq+~mj6=Swj`V+4zUat zODuLOU6I#maCu@wYRdlxYP#?suFK(0bS(NKNIT>pZgY$uOWwDo6n$7TEHu)N!x)9k zu)YcSrR|xcx&BIA?&n^@qj&LZl@N+6m~Y2d@N`%Hr|yXKwH3Umvbi^EKPB3E_W!@| zc-p^lgl`*`VQnq6Y{#S7aOFZZ{gl$~XoLQFhT)UYwi=Lpz$hFTu$c77HrJowY8vx5 zUq%WFT7%$*k+(I@YYwGk=7NJ)3=kFxH~dXLRZ7$`@oD=Kf=DFS-n!|{WZIB_eKYzU zit>`y&Z|tV3f-sk;1AONv=+ql`>7+uJ20E2ERZ>;xRJK8**PPKj!QMR4$R33>oWj@ z%0!gsd?o$I-`zEow1Kze?IXs&i5FGM)Vom*zd@o+iOGpXQb$JU>y;*$=~Nt# z49FfSH$A8Y zRu)H2+4f7uDjQ{G*%auN6!~Ie+oFR4?!~v3s1&zeb!Mz~X18MZz&6=@-pKWf3Mmzl z6fn6Wx#v1|QC|nA{U%8@mNhOp==fg5dwmY_YPpc?cE~yuQuw1~(`!^A(w!atT`@Um zj22>eRLyt(PPJU{hP-20lc;G<)Pc$CC}Y#GneYP$NvB?tl714TG$7Qj;?J3c%Y;|- zvVvIDXOb>=Y~3vX2C~)iS%&87+n1iwM|a{)+WV9cd>(844eA%b;x1LCOoez2`$udN z!DjGvr^gdAlNap!JCjG#xYvj);#FfzG-$<1)+XsBQqi&TRF3-(hSO3nuNV1N-rjDU zuBJ7WIQ~f{!JM#m^;|_+^WQ?DMMIwl>F?=Mv*UYRbl>m8<~KMyv#PL}(L%m5M%SYV z!&LzPB^2yq1MXrTOcFPed;aq-|9kx;S+wk5uLA{0c&`7j>*7!2#PRcgo1I=)lSv5Y zv|xo`%}Q0uOCBzB7=)`mCE5Y#c^q(dLPYJk#_GR=x7|umh&hx)3*n#DWWsF}{4-K9=!3V%#3xwmIFxQ8 zz^)E3Cpmcapbcg7FMkn4XeSuM|HNPmv`>cr$Ifs7fxiKct>Pe{iDAb+#MhB(*}7V4g7WMrD}DR5dMY25 zzhuM>&<*CGytz;@jM8KWh1iqytK9&lF@o4pk576^G6XOE6idtlafuu^xC#CsOzsR% zCizUPRz$UL5K9Bs$Pc$MIoN~3^G6JUCo1Rue2dpLlhO@5@f(N8Gu|ELxA_$#-Vgtjb{f0IODhfA4yjUKoG~5Yh(_OI(q)oY`_8wkpKw- z{PMO4paIJ1So2{k>=u0cz|#L<)Nis6NNNr40z(<;RAIXy6;k{lf27?f9>q zHXcV27Xj)|cQa;IfdqhbHKZUCBJKgi%SzE@+E++nZT9TGUt9NK4NOv@9=>C%>o#o( zJy=LBlQ7w+{H@&tU2o~aq%fcs3fn!2KC-*COr_%4jV(XPf=>3|Wga_qJB%)_TYgRq zQird-a3`Z~OQ}jVf~5QT2(vcLc1dF)pK*}`sPv_^&Ss2J`<sC`{F0-GCLo|!&^)=Wi12bt&m-smA@^)Bx3!Dvj$~zm_^6>kbw`;39a!A*% z0w|IiQ6bAlo!%yz(7EjuTE0TG&`_Xr8YG+$^Lo>U7b>CjClj8IWB-w|~|2s6PuybhwWqc%L?)-ej3B z<%sP2H(s$zG;{!Rh#`RTj2==-4qacB-&8(T!Wt=nyVbe1+1JsC|2Qx684ewd_{_Kj zG>mw>L(rE0G=e}i$0?uqxqy~XqxCNv4Cqj_4Ln4O#&D1W8G-i`D_6yl;}`h(h@M?> zGHMcd?ul@fv=Q#>$$dCaFMOs@%-x#0mkrTR!fJ50R_4vo8}S+Kipw|jj$Kxi1bCgK zWbwscEv!*&KBjZPa8sw2t39ndXPj|9wUD$Xqq>9ZC!~3Vln-#9{d^h6^YgX7`i3O} zE(yg^jF(zuNlKxg41Woj{+aHN%uuv(@J@IZR8{N*e6jhFAa5)|*_}3TK2v1f$SNt@E^j~qjo%!XFB0?H_Uc^0lezJlrbu5}kB5aGJpCe7 zm)$re8a4(;Q>+g#RgdB~jvk9@FCo6ZKZh$L*}weep;iTVzrp;B{orc($_8!2VCJnn zzBC3$Yl;dnASjN38DdAzE=hRwGRd%WZ(h?K2nSl@tDogzcdlK(M|MqWf0Wlu;-a+C zWw;clUBby9x%79;YmQXYwZ!|m7b^#eX?-Wby^}^%o)<2YAHX{}L+bw(mIyxqU zs5HT5ILi8rftV2FG?ZfMeRkgPfxa%m%;1+U+dNq+f5 zrZMWDyhm@m={n026XrNwls@$wGGipgG>{rFK}m!58_Gf_ltYg4EkvA`cnh2KDqe(ui1f4lYln-56J-z zT^&Z~`QLtSA#ooL#I4T6o@y|4ZgT~WP5g!b$3IK)m{Tk!r!GQR1TKE5HI(00IX)%0 z<6Kw7$xv<7JU0(j_Q2WDGGH@)#SsQ{hj&V)a6t#)a1`KhrRuvXF(2?9rx9xhgqQeI zJkE^w@6n7JkQ9SF6mqQj^0%Mt?G1?c+D>ld=>X_{h@f8*5cmHkzcpGS{+!!!ctw-{ zTO!UK_7R|D0kH@ypTUWq@ZA5+gj?YFu>XzJ>BJteYR;liLs%3&+zrCL2nAnu0b8TQ z1vqi$Cw6x}dK2hXpB6}>zz;5k90PfL%|9GIJFtwqM4TXgtxae6i(XffF zE-C+o3uZxpz)^>V00$5v`i~1_0k#Og(*@*uOTQ~*4sq+EutcmL2ux{D+qr}V$lqHT z@rEb!UFx`zU~p?!fY;0)-xM5wntnzh#|R zN&wWs{$dOs?^9@d1QMT5pE3YWZ+iV|)fC<*a*9ETxr`~+dW40;HtfcReW`|fqy@uwruzkkB+?CSJl z?whFt1@J9uyEZ@>M$$)g#-hy73ct0{b)1f4t0YceXG)OHz|itKPTu!4BfoI8rDngk zttJ}rtJW=D>z8!XNuZ6MPMC}{d(jFob;xugiy}z;&tig0CRmb-6enAO)Y(67LQVo??;(H?~4=H)= ztjUttG!N59b+OsJ3lrZ9E9Zw5x84daDF*1Dw>+4)t!DatJcYZop_Gaf8-)l(^1q2M?O*a4SNNEs#r%UOiRV$_7B&6Vl;;2H$c!f79{(x+Jv&ReSa~ z=45}xbq5j1D6Qea9zs_Bk1VV*aA%=QeKR56!)>>|?L-=np=F)&fK+%mR5#hFn6WNj zLBP7(K#<*bA7p9lCjju%va|W>4ex_fBSK#~g`2>UF<3KT+mgKs_ulJ*dQDd|eu~Xw zc|HN6`Y)RV`9zyY+~a?<$^WRcz=@~_xF6G7`2V#fNqCM1>H|<&1Dx?CrX@q>Le35gy?(QWFYLG=OVhC(m)=7z6f^{ z5_97pD3j0%$f?|LNs}q$Z>lQ#9txLfExdj0u({qF`xTrx`#mwwi4J%D5ok*t*C8>V zz@bm6@25v_fFHobU=a>^xc1^-wgy;d+3iv2n{HDHhEU-m$|0+zEtrL72! zFD$K{#NH1`5*%Fw*1p*?L3<@5i z(>X)V3HJog3-0QQExrtDC>cfxb*KM9(>&#|>A>)j43BJ_QN8#%d*H|d?_o!NP4Wop z7OMl*=;7bi^!-MRONTTz7{;NKXg z${`6|0m$WqJ|M3>{E!I*griTfic`(uv=W>2?@)bDF3mnq4C7 z*`Fl8w+JeFvPpHFa{-a_q7l#ie6bXqJ55T_Ji ztj59Xo5wwu)~)5!s+)*4k@i$Gu1=VPQasrq? zT>lr{(%}cT>#2SZ(585tYHjs44bCrv*?c9A$J+>aSm7A038qN+)RXdRPre%B)du*) zmPpDwE8tN7o1F-X<$+Y`Mc3FW-@%K1r3=Vx6g(Dq^#I(>on$zmi~gDBNpPt*2`kat z$Sq?jvhoLe&&Vr%zfi~AU7Y(M$l*NWK#y6Rt;=zWF5jxkfZKFN>PHy33Q{oNO~ z*F}HvEdO~PsR>2l8otQ2Yf|FaY*;>f|4tBeB6)bHcdenZodr@KT&1gNd)>_%!(T6& zC@9jN)7$c6rj}Ku<$JPqd-91%rJKPvTxyxg1NG5bqI&z}^t_@OkhH6_=v3hTG-#gJ z=?a5}RBjnTb+(fcV~i7O)9Ic?CZZb2oNO3fxRyT$?lk%Mt@yq7m!)3vsl)sE^R6e+em zq2j%KKFAu znuJd1A`n^tArxu)j`x1=d+#4(Kr-0toW1tkbI!Gv#A$=JqR>*$+n_QUCOgUH^(Fj| zS)4^pDDK|RWY=FY|GLK-<6!`l171|)xdxfy?Z%VHED?s6(gP8X6M~hUmU%5mY zWqxTKK(EUG0yn>h{4KwzO8qY}|3_T@Ahpyh{ePS1ht&T?yZ>ua1Wq9Sc9e90+*jzr z5{UQ(`qo!u_}(fk=p>^K*mY^@!N4CVPC5U+%>1loq<3VuNyeC}w!PhV`|tPKX#v%~ zv_Fw9ugyy>&t~C!!v)4O_kwRiXOt5w0gyucBdPZ<{IeAL51Fg4bguNCKMa&{iy!>T zB0Wg?uT<5w2>q+USY8AE2o;1pe)>va4vaTHD{H-YXVoh6Ew%pJYq!3?XIB4>zk1IY zd_NVFNWQ=_+)lVfzzMkV{d-~o83S-P+HGgcOI$2oUb#30sLsSYc#PsN^^lC!Fu;|_ zG59Z41Q^(XZ%F|_?e{(V`m=yD&(~Xv5ZhN?Zr{py|EGQh__t#Zpbo$yd4%JEpwjcd zPU-uXFajX?|97)rF=G7p4nY1t@KW<{$@j^PXiX2hUt~GIODfn?66H?G_Gm)=-<<^B zTk-RP0=a2_;X01;cX(I*@2hdX7hoRP8CdODQ2p!%)#aBPH>JFVvFppOC1`=``HkmX z_EIU47=81nS*V@kVw>c5yk*|*lG0ILc6y!2vy-f$rqmR^1ydzCs~lb%P-)1m-9Y*Q z$-$Wr$+oStcl$E#ZLd)o?3^%l-Dd%*duc_pEC!fXVd(DXvT4kUwVlS$d0>QmhhNzF z$`wiNBSr4)sXl4Ra@M0U)!G9VR3@+-pe%ds3I>`ZJ7P-I8aSbPwFa`x++1*u1GdKOtNqwg#iP_&JlCn>ZIM!@ksV(LGU1u3P4VDzL z*{Tbi%PF-vK4S_UjF>S^%GcYI584lscgA->>@PK~mg9Xn8_vEbQ(G8ki&$&c!2@&# zPEJU(Qo9QtN&xR`X=y|5do=opw!`1cf5Mx;Add1TNYErflH5)6^d;J=N+O?W+3SGe zOsi&;o`Xd$KpNY0wQ9-^$khLjNzyv0qtwo&o9Mia!%vx2|ZfIxKG}S}V2hw4+ z&ysN~d_X)g=FYdn)z(Vv=g!^0oQO09F(F=SuhA@@^SruKneA`|OlzYZzU3LM;Kn97 zxS1GxAE5ogN(On@2N1~{_IYp)q(W!;9KP5{A?>+ODrrtjSn9+vO-6o4dXBoU2-0-F zIVEKS6j%9p<{h?Y6l-U-uA1tsoXS#=Q-2hQ2&H|ina$IiwKzF@RqLHwm!{CoRGTq2 z+IQ~!wCWUS1V#r3O2|(6lI~p`aLG3M*Uw4blqjr`bBnDCbsC^5ot#P4r<7oqY@7{Pvg%tNA(n`)amPxyumF2i&%xTkJ?tROhfqhXdkuctTo#6L>zDkX-P2K zUV4k3<+Snj8TxcqBcRt?AmH8Cpr&W1l-K0g;e2)V`&zx*Vk7PhIo6MSTNA(5IIe znA~2t7$9%}+RYH9fwg?(@*QCV6C=13&BHc50vB9NVPcC6`&;fG3!BFr%K_TOD3Q?% zpb^31pYz|_aCR-FAAY|}`txl+w+=MCrzj82Zto0NOM0$gY1-4>VQ4^Ez-^a`R5<|k zxPr@Cg&Crhjf7e9~YDI~b4rm{h75R`~_ zsr!!>VeNwZ=}*omZ8>10>Utt|7ENn@E9&aO$pRUAv~hcdY6uVAH!x^412^+*peaT+ z?XP>RrR`N4^L>azTf!N6lf;!0-cn$~&)rC0P)jnaauA*5wD z^TpQBS)d&irEJg^pQQ*slA?8JFmOaqW)=8dD+a2glmY3gBVacFP4^h z4tDs?J-C)swVPs1Zf4;m#_Y3+N0R+62bKMaK1`uJ+%PfaSn`j2Ec5kM64sFL+s(|S zhFyu4Gw!K@>01K)2Ol$Zek98KBQi;?7HYz14f}5VFG_=h&nLA=5$`%0Ih-|8i2>h6 zd0p~kz7>sBAffg02T4%@oKP8Y3>6B^mYc`dE4D&+M!A;!+1u3;aIFxg01_%?#UWJZ z)5?cOu$-^^jyq zMOoHFOPGToRYF_+>$p))?b7vh}YWOH-pB8T0Hun{WK9m74b`>KeV9>_n_&zSqiNE=Ts zIWXrDG9=+X;lzQdVA*<9tcK{j()fhged#0a;K9qX&@T1VjKDi_C=t{OXL^4MPkGU7 zzNpAhWK_^I&(37ndGXUmHAk%2G?fI6*mqPwO#uHt<6(DTj9Wm*$k%c@C4_z%Xmqx~ zyZBGdEL9R@$y73%c5~J$@4kZ+K3U*-{U{x6p#4Se{^HIg?3}3gB3%5owN8vCv0(?z zLU`}Yv4&frb6}eEq$DGmFa@cXQaaVLj|_;dcoNohxuw^Dhu!1$u#d-}Y6i`iN#bfw z-f7xa8a5EUnkr;FP(f%CE#_E>LJ7H2NDbu-x2}}GGGq<)y<5Y-!{vG)d)tFDOzjbd zty)Xi?zZdE#AiwhP#mL$M0q=d91cqWO+D0Lbl)#Iq{?tZ->E1nD`sp>{9#^Anl-C7 zVYb-@VeJOfGy1#IpNo^t=c-(*d3lVFR?xP!HX(PolYtj=)y_5<_vcpZ85gn`XZES4 z(i6<%J4hk#Pagkyi@{*JILzrit{%hT7`)0-K>7lC{cHD!u%~7x8MKkpFF;bkzf^k_3iz} zpD9afdxflb)*TqP0C+j|^%SLAv~+{x(w{EBk<f42wcbQsosN&0;md=Hy z3+3)dar0)TTQG_H?4QL}(JxX8Ys2OrN;f%FoK`+zDWi^&sM~aA?6B_r!E+xkve7^= z=$>6a*GCO+W1gWnIB+s|vAXGoV0lxo$ICa~hGmA!LUnsDBkq_(-tnQO(q#FL{D~x!pRE5y@8Mt) zE*zy*t|$C7&;J#`nU%l3h~(1$2a$665_7E*$3m-=MBwL@?RhPd^qR@iCLh#(Rkk?( z^u1W_Si%hNT{XG{S7vaSP=~z*V{X62+)(99!AAr{d_>aVI=jY~U%6LBj>MK>%maTo zbR-4w5tujK6btHZ)#L6W-%Uo+-h7T4{ zuW4J1PBq@|8QEJ8g^3w9wPk)o5b|t$f0_Ia&(GQ5Vcy66DAEU=3$XOM+J@_ne=g?l zeIvL0l%{dyAr`JFAT1Tbca$PdS1i?Bl4@HKI@HV*9#X*@TaUJie{Yjg$FV(|%Bj0=>v-qoK3YjxaDcl1%A7{W;=$y1`MHreRx zbu=~VpeZ;i%!&DCI$jaNEOZw{SPNDuX9^G0xhS;!qGnkLZ3PITv?iHr2nL%8@ z@UDY~>^Of>rpyJgRa5=Dov5^5eCCftw**hZTj=v?FXwPEtwxC*){8tXJ778-`i0n} zwOKQYXKn)$v%KA0#mmnPDpH4ZtDc`uN|3lBR9JM-2e^N~R~WKX?TkiSFe3?01bJTq zGp(I>e`Ps`o!F6k6uHRXDgRQvVlr1hlw+B-037L_?gI*m0unSK(#NcZHig)|li z+;vNJdtEtS_w97tP~)u_-HilS3dbtiFZ1e~5>6A*r?j{lNIcK2O>4Ts$b@h>L(V;H z+&}1JM)=Q1s@GS?(v$<*nZR21VJe`+g}!%Rc3gF))Z`uxnG0*3$DLHvCX1%uSBXh$#Hm+*kG!>|vCloxb-sxEO5Fmc^*^-nyhm`?u{UGA4V z9XOkV+G#L59ic}bw;YZfb0dxKDM9j3rD_w8*jl@ePXOU;F1o=|#h$jFq>T*>_!t-F zx#8fsh7ae)P%J+uK#{0^$*M-RD$yf=dO4M&(DVQexz4!Z)z<|KVZpWaPszO8O_}BI zvT+=VBahcq2+)tH{(FBv5fE%S&9c&Z_b*Md^8d(z{}IT#_MS*l>~GAS+x7jWEr*zR zeK|p+HQyWG^G`L&xpz{~Vj{t(Qe3~Ue3gCsd4sV0o9cQGJ(xo9;rSNu|{-*5dZkTyKe&;^BasZ#z>yywZSBK=0)KueW;KU5$muq&sI z%og9>w=H(Dzcg{b>rX6bGJw3;nOex$#PD!RMr zbg#~53{dx&vN;fVR~u^``_XdSOCEN=bNy}y0Iv&i_TAs3#AkOJxq;PyG` zF!D6G{+Ap1)U{RpIrUGT3@!&c#&@h2R_T>H<4F9_?n|%hm8&Z#?aH`rT$tNa|CVYB z5L?$hew!&dR9sBkRMX%^j7O$Eel5$|=QNs3wUhpsY@%^Mb~2JP|8j;5?!$LW>+~ng zNTQlFFEb)FiD_97VV{~_^kw!t(+2^)V}muhZY~Q6R@Z}>3*)gY;bpBHhn-6A@$MWk zkHB(UQ8ui0I!-PtvnL`+QECcqT^c~8a{fLom(Y!4c>@#%(rx^sYK(7bzN08~WTPeF zv`QovB7`Vq?s=%-7x5)+hKm%mayi3KP%;~>=Z#?H;mc-<&83a$#xFjPUo52p~obs6% zn*z$4GV?NAw0XURf2pw}Fr7BJd2-MqwFG1njHnP__lRoIg7a*+@2$Mc45Jl|KguznZxyN7)Hz_;rxSr{)8CaDmv7$EV->qn)xgBzwWjGQI9Alb}1G# z`3)VdBsDY$^_UxQz#lKclAPf|K{}o5cCqN9{wf`;&!YR?fZ@4>3oQsa)S;A{cL|W) zfA_KS;=PGs6DlWjQ!Qd?r?8QV((KWSp3TBq=gCrj`o84Cf!9TOYbS9ig?gU5hqLS= zlj(r*gE~e1n|B7Wn}=&BPNODd*HZqG~`Nn=WS_N2R^zx8`a=!sns#x(yJ}6nHzF ziIPO-;_*88PpaLCA|%|nARQNkN%8ET`ANrK0Z}M1sa{&>9olDfRDnl|r=&$Ase*LV z=z{fAosS83kNwY%vPVLKv4|?9YmCP=+o%`w%ceEuWnDWRJx{W3-D!3r&KP^@XqJw- zT@W(eUpFyxoI$p4bQU)0jrqE*-aa=DeZf+{B*+iD*tfEsuia6>aB@0StbQid#M!*f zcG7pq`h5_`ECGbW^-)b8v z6f^Y3n2#O^16L&ox)=+O2xJh0Dk*0weG635<{fWkWS-WH|5w4=r`s9WIBEukWIJtd zik^)ycfb0|aAmYG9mtUe0y~;XR$d(rjux#i`Zp-Gmq|nV5+JnOFPTJOUtB!;qUJGI zLZ8rT4PHB$8+lI_RBPl;TsV>3ZGQVO1VSxA?lF|5TH<&`ZTDA-=OCP|yBHZ*Y2v6a zPtnIqT+<WM_w<(4l90twGG9Tqwo8+WM%8M~^{%BddgefR+49vA zpB_)ScR&=sOeHmEt4GiwZ!N7USD?~Mq+5kusM~%6H8KB6um7(<*Z-B1UVY3YJ6T!F z{*$rxZ&%M8CU*BvgGFcD9#bk709h1pN)~-2clR)sSMnyr^%;c5JZamBM?GseEO$3p z1-^n0)a?!we;zS#l((BJ^EqK&i7ew*OW@~c%GZfb9pkJ3Oz6NLU+}1WxnG(wRv39x zBDU1mSI{i@`aXZjjBgL4c1(T!vHVTX=yhx-K9jG4rsLF41S&jn@rX|KicFDA(JM2- zPkii&;QUAlC0N#Nuu%NW>J#E8bkO8P!h($(08y-iO`%R_remU%DUXypaSOAI3&cIY zJ76gBwXc;28`X6&mHGp}qxm&-J<{>GZ1wh8S9Lt~7Pc2+bTkoUUS)X<2#s!E?|gvi zo<3gri&u`Zrrh?q`3^A{q~LY7C|iE?{R!F^cY@-vvD}r_%*$Ac~NL6p=HMm zna2|PWVsgg&lf+toh%axRqJ#TM9Vqa2CB!+Am^~zAo0*Ep&efm)!`g03CB9n=It=V zxU!^GC4d7vM{(H6hVcF-w7!Ui))JRqNNj1@4V6JnqRQv2DFtlPZ2CArSAUnAXVK*e zsu>&X_hhQO5tN@a-F!T?TS2Z4&7-^^l6gzJAF444x)Zu~;=3e#5Xy6<{emvkhA>C@ zsMgcvs~_zygC|!sl2uS0)|i5f}oU= zKE4hl$asmJ1m^l(k>wb%s2~D}&N1vGe+Ur^x2@Us;>3fK->c2s)Cehx z`}0|CpvPPZ9T~O0QK8lj)Yy2DF~|krKRV1=8C_Uhq1wFVUg7tujb41#{(xB`sb235 zN;d_V7c%y(LB;I)ODUa~Y=;iIYvdwHz060$vbJ(alntZwWTOhUO_y7xF*b!BT| z7M`O%1-QXqpWXG{#-pe}!sVW>M@GAuMJ@iF*>y}i$LM-+9x5vhIdJ-s$8}f8xCS3R zgML|FtY<(I~on+=^+4HnG#x9*$ zM#W1sQN`rp3+{;TrCdY)Xta$;=uVfIj(C>8G?Q!YD;SA!@v2r*R$sG-k+oFRH=hgvy@zCZ_Szu27V&oIL6CnY)zmwF*1cdX(A z!Tp`{CnosPvoFO)1OYHJ1a;_ow?2VRS z{$+TmOMvyJ;jV|smOphib8z*Cm;Sw)^Ho5b9Ffe>b{V0oYwy@OusiOQ z)k?B$4O3KQzvN3K@H1Ts!9!YZ}&mvx&q84biehp@v-#ekQy= z#5+8A<#FSXx0Dj7yxLH!PoVi-=IbEo4>dep$9s5bPKKKnG=+bl?KQix)_FpPwSfr?k=n?Dx-S8_OB^34_4{pKw|sLykEQ=>}s2sp!l%DcQT! z2lt*eTyLixSK#sN`{Z6=G*%F8Bjq2YH}7^b6mmtz`QTN4y&8t5+uZEqbTr4dC_Ma! zEWf@@cPkH~Xy-Pg{c}?$k%sI~Vvr%d_ z8&=v9%G6sri4RmWHsTdRbe6Vp%)z6|U>C$)p2%q`|7bH)?~gi#0ft#6_+~z6L)s@j zVT!nU{&5;ms^}5^Eoo!<0dP|W(2kSF9*WzM*D7cSk^uw!0*l?Zc$hSrsJO9yQ^zAr zi+2nBq@YxZXEb-~7rNgb5lB4k1 z)`wP@+4C;>lV3{5G)b($~##gis3f1PE3Rc+yKA>9Wl z%fBT({|%U$`X90-ZSY^?qr>joz{e!UbGj+zUnk}^@EzEsf~MuIs{NUNtK%#rDZbFN z*9)80;&f}_v)H!VV&CPLEV1Rk9RCdT#<*a9y6gVN=LV;1T85@-~_{5kfOsGj92Q!OaU&+INF22w*aq2qp3eLw* zOvu)LE_dj>xu)k=W;(O}i$T?QD1yM_Bm2SsY?{RCm=mKB7yH)79jKq5k7SzWnetg* zW6?d{Np@HydA14d)ue#+F?8SXAn(Oh;}o_VP?z|lNnAQ(fIPdsi^H?|-b2}e5{9&+ ziAQwM-MzF>rzAS)&f;Ohub1bmS@{k^{iL|z@_?H2Fg`zHuuOONtXR_SHLwwyB8db# zm(LHN<*E*KeNR@s?>WvBDz~`(^UdT9M;l$4m^F{*Pwn30%1{X63yxDajhQySOV@iP z0f*h(3z+8*&r?NelqVXFLD>RDDFs3<={qjm1)p4NHGsyKzb&-|zKkmeZiV41HZ-Yn6CyP9s1-IS?D;X4a{rPMr#Y$c(li2$8 zoqp&};2IvjHkvz~cR%LEjgsLR@@LeX_Woz5cg{>0B>K|}3t==!$D9n992%jWhC4Lh ze2LJ$*0(l<<2;IqUCrVPO&$^~zK}jDXsj)h*-N<+-}(0Xy^p+L*Bo_wFN|T4e9@n` zfe-F`KNoQQ#U$D)eBhai(@WtJBcbAANoT>5h{qMo_9bcqx0_4L{%lglT+GC@KkSI$@`5R!GPj>bMfit#^Sy$ z^r3O0_G%&Tg2e#&MoIPdVD0G#{K{R;xrOY3gLJwpI>Z9GaqkK~&Z|&OdKdm*3A&!N zayW)Dp_ggWt<>jUQ04@QXj!Ln-V7OSI6QDj-$@T+D||vz%ZFp!!ealDQiQ1wM_FE z-s&m6>pFsku1~qeNS+ShHOe#~5T-G=vQqu6rB_R+Hz$h-J$mu)OZ%}0G-T>qC8RHt zQIVw%2Uj}?$d+Z0Zy8-hLc=IeY4^z&Zyy$8ChheSK1J@)oniQU9MZ4|lg}}0ss;t_ zD?fHw@Ej%Nwrj+%f$zU&>Lp2f+$n@Geq4xKwbUQgr!5g2ybLp)r<}`68+rtiAm1N| zCsy3A() zV&138%|kvDCbsP)hXozcbyqeNW{(Io@YDo2I?NcM$JSe$4`NQ_^JMnKuNs#2n0mb( z?`gaOURpnRFK}Vr0Zf(I)UdVW4mnL7Rfc{@g6Hy6>{aI3o!{yERskzC*_PU31Gtq_ zneW^)RqrMau9_hS+EABEREb8&D|KFr1e5*XN&(6O%8SB;_hH!p|6gNkD0(+-xzlNn z44_dJmcx_T`LyL%dRYIMCxJb9pJd+`>`X|eHn#ICsrG2`Ea{~~hL6BIdM|_BiMkkl zDnf8i)E5bv`+|?Vp;TNN2IeuoeCDfTu}MWbJbv#j|99Qa^Q*7K(ufI{*62lpc%iXo!;NK8uTN2ITuEWqUoEn~EVPb25P&h^4XdKynVC2`s2+6Ds? zXfe$v0sizbF_6TKm$Jzj8`r=f^lW~@0iy`XGj3fYMS)*`ynfs61mAPFQw8Zvx1%L} znBtBMj;Kw0Lnv#kWt5vF;+v)r(6rK6)VGvCF6hNe&IySu6f6MwA$M|pdknAnXU<%9 zG;6AFD2BS8J!iM~#2McH-y?3}8+hQSKNlLD>Vv`oGU=1F3c^t%|2MV#dU*AdsCoDK z$f%dZ&pY#@HDzVQ69BhNqnX77m0c^=l1En5MUZ5NHG(t_kTpmrsF@SyKE+O=V|$XO2Aa1I83! z(o~CVHWd-fYxj9j33B3v0r7hzSNSm8{e%9d*H?6McKd67xL2`){Mx1xwhI2*R{&UH zTmM7Kb*3-zi*U14trl?;0d-pj*ozYQGr_}pIVx2_Pde|ga6vp z0WcvmxB8z8J-LPDuU)h9Z~fJOEzhH*EKj5QB43f7y-vB30s@SyX@5&n_G967Qs06K z3aTDgYiJ_=?Dr6BdXH`hYAZtCJ^%WP^H-g4;I|LWeO2*2J^Om}E2A#8_|6jLNL=hu z-s%VhWHWn6lK#yscBCx3hu||9i}SEwYWDH{Ew2SdaS2r*DHp4|IPhy2PZg-gtef$fO#9< zgLMh`36<2igcqjNVBg8-?9CVudpXQ^k;Q9sx+C&pQv)%TY;e+xxztNGs@?89mz_va z-I%J#?;e!wuHW^LII6(#<#KM(a*aghu%2}=0pK4X(I1Si+u1gl(XZBAABZX7;!EPy zrL(!p^$}wDvQK|xJgk- zg0xGYRZGAM4@&wdzU*4#1iY(_5ISz3>3L$_vp|-Y;2n|FW|q)G2=syoFHrgV&wbQm zPzbY<&XeIiZDen*79VcoQ~0Fk1-l+k-SZEHw)kCOiRJ})NU8Ih%K?)eH!g|Hi~HXD z@MhJ1jzwCVtS;qpuP)z}cJ7FHT25 zdDgO{ziZzt_1JtHk70`)yA!FG%HSq52wE28=k)f%TKh%MGw)2^H7G$R($TEZIaZ4+ zz-9)i#t+WUH`}6#?w>U?ra{1y|)g|^w#dx`KBSClK)0)N+iytC&tnqEx z@QBdsYqo$C(PhaX!TbF1antcD@*w|ARK4RujhZW41l}(f<7pscQ6MH8n;F&gCvGY$ zUT53cHtxkRh6zkD6TJ~s3dh;Uz?5?+ptHl|(4E}=Uut&+N?~Wn_UdrqhJVm}=4mRu z&x^&nu!5yXU}qi9Uhi>uy30o2WGCq!oS%8;+QH`Y)0jK)_@_-B#*%vji}dKVCSIDR z!m5w9gEZdthgJr}Y$*)~g(Z$VPGB%m!u!BJnB8B##G=eeNF)%?yEkBM*}e5@B*_ zO6i!{%e_t!-%A8709vIjM#DaMLF(wo<^!L%rZWfMjr<(z803NvwgXLruJ;mBU!ItE z1Hi+9)TqST+vrt*l5$)qQ9C%e?-P>Z_saDFGurGUO7sf7Ra_8Dw!)JDL<QV0aFD$V=I@8i3|K0|nfq&vPXkYwOPjZRN zp_~VKaAC(cQK8JLTskf-F@`IcoEj2 z=i#_#!FQ6p@!Px`-yY7$Tef-f-Ip2yjaT&QSc@g)MGVt+SUmN0DB%2VqVf~=g-e&N zNg}aSKd8Zzn2a+dUO9B3(@bz{r7J^8K9`Y^LO_g6_K|yK96~Phc{>cg>E0dV{J`$yt2^3t^zfe%7S_2W@F$G*6t?1vNb0=G7UxqMzY3kU{T zFHRMv*>35(Hvp>!8Mqs#xD&@&PyGN^ewMvW@WGW^e-i%O(>wWT8JYLJD2dvq@`UEc zovwfszK+cByA(`=fJhuV1CwNB#g^bqFtF61L+NB&8XrujBi8|PW_G9ExgHq5$$`@k|TOb@Y z(coSILo&TwzL+2;y`mGDxkc3OU%4+(N!Qe zrM8}%`iZq(YlV!1O+n&YJAKlNFgk3)!KXtHKiL3Kr zWnH0jx|)V`W-sS`UP`Vw{nJ8AyG|{;jt|JQp}`D@N=E$Ro#6w{Heus4P)%DiY%HMmXYXI@G(ATQp9wU}u*e^BHqhhheADtAU* zf9h$W-NAqw0MRkIeWE#bd?yt8K)=^E@1-o1+(SU6wwzM%;t?jemMB<>6!O^ujj^U1 zk^uG{7{oW5uXJ;aOEU-3nQ>y{r|^!i{~rtRMfbj9)l;cwRH(^mf8dSU{nL|4_V~(7 zB2bu~yIqHw+4B(Dt zpv-vaB!10zb8>g~5r#4UTk3WV^V5{Xi+Xip`9tU+y~fbG3&(8hm%f6VDy*HyhG7e> zZH@{KXt;4OYxh53cL?mw;fRFPMHku)0Z<}M%Fw*ko1#M3XI|`-1p2S{xyYS1sfk0I zVU;h0xtR9)Iy=7D{wkFOSs&$r%Kb#rIDFpb;j8RvADF2o*!XgbI!bl=d70d^Zo3l}!Q+dpOA z=Q}MCLk&Od#0f?L%Y<`@zeb&N-QX+zD;8qBjhS~5VJtrutL_h`PCy+)Rr#wL z+z|q}lincTZC8tx}iJXJ3>byN0j9(raEil(yu3R!$Fz(jE;XhEi-u7)~JOI zvHU5pdSggrBd*D#%xFfUmd%y2hHsi6)2i$(p;AZ4?79%I)-1#2Cq>*CD^n!z-nN;(&AD9li5P5p=98v&~LIPp< zj6AjbT*ln%pjs6q@uzEii~!I%N`bMkXf}OB%IV5Q)~cs47o&SROdRS94#+RnpV0_j zc;#AcWL0t5;YeU!aSVUE7wu$!lliP^(X`-l>m7L5+gMiY?b~v!H@!g`A?h25z4F!o z)*B922Q5!yj(EQyP>w)y8+4twCiWKi{$YGZEv0J#v-5_6p=B0L>))O?`myCjU3b5j zJ2u!uKm7b|!!OewFy!d2^$wR-IyJl3K2QBUxc!+S2^^D z66~}0c8g)Z^3+_z>=yT7s=WV)V7iYp0Zg zauzAXd6}nti%8Pq};o+g3wQJB|(+cK=sE>OJzb`wY#4jzBJW zyLP8;u+W8UUNJ?4kz-}TkNAA<@toy$e3lu_SJMKeEUVEUh)ATgk9T6w7Fk{Cnep>o zmWPfSH4h#NZdyR)cH)$g-*DpIk!Y#8bq=5IGz3Fwmm$-JL)952)Xa9=S~Wh=X1AfS z3!9FPq6>Zi0gk7_)Ob(Qo+JhDc=a*=ok)DdezVY3a)je|ck#0G?8x`LtaV{j2Cx;o zhY@k5ly#gUm54q$^`&GX$a}No_a;S-B0k|cO{QuTQTpB4avzog?`4tJE^eZQ9ap&D zg5L&Le%z2i#85jH20!itGuOrPr5JYyv(RAId{p)&u)MYhq_E;g*N-Ibluof?wcT=c z5tK_1Knk+HE2r3F*vkTQz;nwq6sd)awBHo;DUC*~{nHCBG(AF(&#LJuBMnVN9Y55e zVq#exm7utB)-KEFf>8Y3X9?CEn;OA@9mxQ?Z2sWoRcah}x2g)?@~K}3oLom0Xp-Fo zmta3Y-Obvn<@ENwTTZQ+=5HrB7sSLyUl4U?V5Kr_AlgdsABLzug9c;r_6O*5g2PL# zgHDTG`&@{Hql$=6$ib{TXAWhU*J6_aBi626?)4}@0~*F_38!8@2@A%SGfHg3!d`E( z7DPEmpRMrQ+6sStR$!unfYfs*3;m>y2}J<}M6SM6R;E1E2~tq;s53hUxX!tD4k74y zB3A<=y}#C}ktg9E#|KF&KO+99DVO^?u8>Ay5@AJ;JVYTqZJ zXg9U6eLpTPMz3_3)=yHLE$6+2NGllANSAa^g5z@m&^Ug#&>^c3RD=J3?EIxa_zlQ( zH&2`^0FfAD=YO{kiS9$WV{!W%0$c9ON<<3e0?>lY0~k{lEZ?O4UN|zSjy<%AR2~p~ zDv+@>p58RYe;o`9h|)N4*$;Pt-eqsT%nbN70r36Xg}gREY@6@%4*SUilXYqbdcmvX z?=5F49l(O;Ru>y9Po+J)qZuxUzru6`l^5cJW2164>H@$KXwPFCzC_1wDb-*{q78qq zD0?tt6LoFs+KEgVA2wOfcs%M1d0RT*fCf3!a1%r_tj^ z!orS$#an01Zu1)@HFx3zBC>Nc0V}IG9dh*(62i6TM;lPEnsjz_C8iD1TBla*Zl30- zVocY&5GZM~8CUo4dSxs`3lg&0hLZLvofZksDV2-6Ag)7Huhg<^wrzvX5V855(SoxL zS!Oz{<5{ZDA9|p`)3+p0DDl6m-vx%}o`?=*@|1;r*z4b~JufUOta5G9U1+awb|9R% z`b9ZEk9a1Q_S@sLL-_ufgVuG;db+5+NjS-(M_y^ENi66Iz)S~Oy5GhD)Fm5_v zen8ot4;~6Md3a^{Z%Z{`ZtZ`))qwKwsoy4wZU5667q$ZU-IjI-?xRMBUW);o|ZEzx8W=t1Qqa;SCh~$wFFd?~>yJuMcreEt*pVg@bO^h+pPLP6j1vrUI>S+G(dwh4{b9$fZ2l>@EO0NpCiV2^6K6oM+fGF1${_G{(Te^wIb=;O?K5O>o54Md8 zS`W#U;7~|Qd!{JzQ`lCfc2{VhJ2)_4dzF*<+8HFm1drU;24Yd2!6RQ?+UAhEn z#8*MoT=$fQ-Mk>UgT}kGXw9>JN2`Lydr@8r&BrGf7st5e~0s(cJo{OS`B8Z2ETY>G*-y~_)c-L39pZrjESm~(m zrvSUf1+Ch}WoL^b{A^T2QFxr@Jmc=oaU#AM6@qsgvO9dr?C_5sW6Iw-*tO(t zLu@yI%f+nQwh?3eVs;+dU-&p^^d9vaTDw*v-X;n8@C%EmdCn1q*1h9t;hwhGj3|9d z12&4o2b>k>H?4h8{T1}-d*TIJOc=FviGy)_YHUhT)Z!~6bSvH{I0CO7&n3zQR2!_- z?&LdUnN0L0CfIxxMNOE6kM|KKnOL(}N6W)LSILy?f$x#KTq;0d&H#!_b`r2+boato zF&=uH;^N9jh-Z^gIg)?CWbye&x6yDg_?A9WvB4py^z8O~ywPBr^c?4rW1t9BPGKRO zH^2!*He}apzjM|&T3CY2??}ff9gtMwhfj3=8bwBYlZ$``Bhp`GhVRuYr~PxsqYqMa zHNeK8*8FC$w8;$cSggotf;MTV9`Ky5Q(Jvt>KK5t^MUG57>g57jNYS3zuM=Ua!KR( z5|~REQVQ^;i1)Ced;qD$N#av;oiza*Q_zWb8w62VGi_z~W%7ZsTpx8iR-X;Z{J!7Y_wPEldXIBn&+&NN9~Q5&UYk8vI?QhA6EEVH>N-n!`2B(M z)yLI~5xV@go+f1*qvc;;?-%b`9<6s+eb&0$JT)$CuV@yu>HehAfvwsu`QHZ&?sHs# z)J!xreJ}Ll+nYjJur(LK&`v;y!S-!!#5ex50g+so8L)CFN^sLcT|xHyl2}Vl4`(_t z%pfmS!bP9QzJEseXp%ONVZIN5wERvmWEInwMhAVud@9yLe(lSG-^1 zWN?MvL_%qy%KcO@Lpsr5Vyj07X#jYbqvpTT_)j{4?Sf7o%Dystw<5vm0$4 z7vOOrdM|Dy=CJ5GyHzmVCrsO84=pYSh-qJBVg0+i8xvT88wsbwxQ|h^`t5_#;afuJ zg(7%A%-kv5dV8!Bcu}K!#Yi&=tq%SvGH&gRQ;7o4ETOa~(VGm?pwJnKz}!CBAN8aF zdRI!1K_h&0P^6pOBw-a}J(+>cu98nIDfPYH_zTz@{)XrGaV~rfJ-mVKB?fCfF_bZF z@Tldd#@NS$0S6`W@K1EUU);}jR_9kwmPMa4tj8PddIke9l`D&Ni_1+ktC!uJx{?#s z0znRX)VJ9>X$o}EtZ9D3{((WK*r~G_C_c_2@7HU19QyNxoM*GsTLGB|VuV;Ywdu{o zdjJ4M{kWvi0Ji-Z?EeePd3}M5{>!PjMSD2&e}X$~I41sMJNze~_>YQqjGE{FM+dZX zN(^Dnqp_%61B4c^K^j2TV-$P=e;)G7_c%X>#r8q!h%}bVS88|!QBuHXjHCV2OLr(R z+Tpnu9tuY2IQ?2k0erZs&_oE21cQC7{R<5Dt1+Ftl7Fil1WOveA#xV)*L5*bV|l%{ z5LS9K1BZFY@M=bD5(vyI9B!`9L*i)xSi~u4*bBar(ADAn#ia*;rW$B$M#|?jS8rqW z0XyT@B+&$G@VBSdO87cv6eLpgX6*y@F1sxs|9f2DB?1&@pIs|-zxQI2(o@WzmfPj_FZWMP6x#NTK!g-~{iS3pPA(zpWQ1sxjR5hV5pI={`(w#; zwXF&roi_-kTXr{=5wW4gls$eEpJ(jHx|$}0bP?F_Oc|^Cr6mCfIJHe9JJ$LQDu*4J zPiogL3AP_3f`dFvT8yi^?lb4{NUdIeG>+4ZRW41y21~Iu9;Hf{*Ohn)8U~QR!irGiGVFIZLl#yz zM})-|PLw~}_Tx&;pB7)5DO%)}C1(ta==l@=jRY_m&wM_Bta==9O^i_f)=PicB_?K1 zTnJU34@>lLoOw=X7Bn)dPVAIE)ZUoGnxz>WP8s(|yM?^ix=%P&hK|mZvkH#Ie>mrh ze&-t8w&Rh!A_c#m;Js!fq4#uA=2g%Kj>!RT<0~a0?J&OZmX<9yE6&hYkI=tR8;qqHqQT=`)$k}i6Ci|zZr&3Q znVg1H=RPEsu+4E)?h)yH-McyA4l%vu}dydbdrMmR9v(5i3E6^%_ zPUaOY>X3{58amyy8WSK=?cZ2L|Eaq__oLZCpFia6s&TH(O5tg9BGZL&OfPJwvQtli z^yJSb1=#?+_)=2Qr{?|J3|*S_KY*8?o7cl|;}+2SOqzKB$yTyfanIaSLZKh*{1P!AzurRnN2}y^r#fsI8pq(SVSi=M+usSK(w}l@ z%;Hx+^Iuu{GlHC5r@eyLjB6oB^oo*xPZ{;I?jRMalWqjKeaGf#?cQ#^aD7lsr1W(1 zEgoN=e!zc>OkIj-x!ey(Unc~by-F`lgUil1ZLH+CB(9DrL#ssvY|B-H;;HC)%e^TP z=If!R2i&6OsH%2 zn-)}3evOYVM!+L=U*;7xT(%|7@- zr{t4Me;UvF!Qr~%%xS#sTdOV#@`U$2r(j?g5b~0coBH z47zy~fA!7~$af1cuLPT-t^^I4I51H6vU+ge+kZFr3_sgu=uWp8d(z#^jF}S*^BNqW z-3(xKEjZyP5@}X)!gm}X#Ym$T>`l(K&*CchYF()Yh9^_;AFE66Lu2P4ng2-;UkkQX zezj?!?|HkPl>^$YDp31P4#dosYM$q0IjK(>?z~jFm!acLfS~9UN zfcsrWZ}D@6w9lM!w4T@^(knK;6|9;?Rh)>i z5Y>u*F$OGHQbNr>R@GprFa7ycq2{mcEiT*T536>+G(9MxAEzY~+2O!MR{{D25*tCy z7R--7y&zvu>;EU*`QTp-RPL%8_VGj(p|Hi1DSmUgs_zD8cfzZv_eWyi;lJdAUA?jN zf?m>Z#};C;sKlfevu*Fq6D~2bi=W`%E)XrKzM-03!(+8&mhcq=OC&G4?55XS*o_k$ zARAWsPHE9|$}spKG^mOI8}QmZQ4m{o@q6Jt`M+p{UACt0(Eo7g0IKi*LMeec#KJW; zbW4XIf$(~~70_a1*Ijl~`kKGU0Xhogam38CcEo+%>r2;Ucmco2*nj~TV&fletCMl# zFP|eDOQAOJx}}XZ_J@hyQ_zy6fR>gUjR#v*G>v}{Jnurd(tNf^K}5SXaxCIU^F&9b z!>6J9MdKhk&%10}0(M(h6&DqH@S~b^7$R}eoiL)Zf4GtD!2vNE?7AcPnEhgdC)T(Q zgFq-?MK+GOH|IcNw3)8pa}LlEj<>GkeC3Dh&CFZwb7lvlDUYnvvD5fz8w7%7b{xY9 z9?pV>y`%U+?isQl>7t%jN{opoV$cry;I@}-nUjAPTL&%kagP?36&)?Pdh-Nbf;iui z90fE6CvT1G8dIg^tAq6{E(f(n+|XZf+(NOnj2B&V;M>sfK1`4SgE#^G z+EVLR8XBpdH=a<70(9vypT%~VpL2I)w#cmswhY~{NhO{oE z%1s={sHA>x=@V7`NqIF9%HD5WQR>-gfSX{zo8Z&b(}KqRu5{kQBAve?7AM!gHs9(Y zwe}cEwea_zU3<;v(pJ){fCWj{N7;wcX9?!hZULpCf? z28YU}ta`e@R-%w$dyJ1NF069?k_VSPB(|iqPm&bl1Gy3*Dq%v9>$$DBI#Udk7U&y8 z#^{m~;AiSY4L4;hCfz4XvtXA-*(W-D0?Ub9cbL#lmSf`g*ssl3PSh47YzNrHCr&t4 zG?}L@nzKU>sNxGA$5S-=Q-9QrPxqK7iRXen$jJj-Nh0c-h`d&n(a%6Y!mK;|tA)I; znS1K=2h9;#K+L{Cksgy+khtalJ$*F!*Ug;=c?l1jO5|;%!1?xXz<}YuRZ_Ssecs}G zBWTnSp~EAx%HC6Tq^A5T8HG_%_yt&35s%U=8-KiHX(>IHd5_-%USokxw*F$K<&CyI z_OW||#PJo&+2506uJc4)6zR--#*pJ-H=_SGo+6>20xKxB22C1+^NR=BkDz2Trk9P) zO8d7stVENrqs>83qN}^N^(_6ief(2Ad*JB>e5Uj<pbqJo~K83_f z%1rG8qV_fQLXnVw;OZo5XEM4*?eW|<>#mxjT0T`TzgYos582L7KE-n3St%T{?+`~B zXQ}iKcaMG=ymG3rQ`Dy$C!Qiy+;31P`^eXs!m{srcFrZeyhhUsupPf0$4EubZce?Y zauCHM~xRPYpMAX^&a_;drWpjrPR?+X#l1{!8|sqo5YEryshu##OV1BV$C-VXD`Ye zc|(>!C7nPyw?^&^J|9aY23=IS#49co)CL0qvRh=!(S0G#Z)VaO-`)vY4nKPRC}AHY z{!%C*l{B*NkC05r_)OJ0i~GcKcxJ}blVq}Q|CH`=pRSI_H*)3|W1e=@{;jO#QNqnE z7)QuN@l(2gtAXihGLebLwc28fWaGq{=@l{n+R% zY2;$_wS1}-uZvFzL{(BcM-r?K)Q)7D5Au#p-80MHqDvY)5|ICWRff(4 z2!dUZKkhV&-<$+~6dV^%IP8TBC9-z@PTS9)-T~xPT2cXZMHVtrV^UVn1FI}~9SrO} zO!PfzVvy2DIOS~|&jDEZL;kMuFvqElf<4JZ!Jgbkh_YRg36V9KQ4#i@4C_W5O+I-2 zssmJ~kUz$Ziw>qgy@07hB;>$Anp$)BuS?yW#s@wAJa7w}M=9q`3NKg1V6QqL@+qrI zj&41~9K~k`8a{K55rRQ|^) zg0b#8DuBCkd!eg<1AR9|by(er)W-EO2fO75ub+>l+@24qa(#x<|oZ zf75jJax7xj!++&cPu#L~g5I4r4Zyy6R2>rlb>_+R&g<${w5rgvhFzJ=cAfAdFtb-s zJ25*ELu4<&^3AA0*E@;^=ZoN9(Q1j_|9y4<_-y6h&mMnS`5%qmMiQ8b{QrSP!A(HK z$KOeY?qBn&ALk!e3LKzo6hB&}wmCx36W!M2ldJz$JcpDBCGJZl{bS10@%m-~!u{LZ z_DcvxaHWXg(@?h^=Z{XM7EmwMQGVs|0=gh(!M7`kCF#ul+Rao`{v+M^)JJ`H;#>t( zzr-ziod~Zun;Ck}h5gIMev{ zO}AW18(&0XZU?eyQK=89CE6|g9&>@-38~&%+7R$1Pb;OWi4o#A{-;oJ7ReRvBc5+tZjPBjIzcAiFeUsmB}S+5mR;9N*?-hp3yT2D2%$J&(_ul1NfD$Ka zq~6AmJ)A5S(BveYM|uANYXgLq*KmgXgU;ztu2!G}8-j}C%v#4u&L@d9QFhu3+f%{{R7w89)hI(_wuwM@=Mg|%t(JuU zk%i-`<6a+iHZ$Z~cB%0<&WKiE+Ugmkb3mzt8uGUgjCQUVq@VJN%VKdwt7Z8xU3QZ? zp9*mWseGG80xzw*4EpZ$`M4C-jbTEWJ>*JUrw6YX22e0R)IYuEOE7(a)zD9eaSWTl zRk8M4l*1m}d~MXjpDSlNFohEh&O1Wsa^k#7XTjE6AFKIFXpgPEGxSV!+7k) z>L%W7<+xUslPz%pv~K-Vm|J+Waq^}kIhRNNYK@9I}SUCeKBFJS5gzIQk`;@ zKE++#HEyjWm1OdDhn-H+#_-zNl({>B8UYNX@>KIs$P;0aRXFK{z2C(x%LJ}jH@Z28 zHcX#z^^}C9XkV}DYTHFC^%is2ce@9R?&tqp6(gxV6K4M_r38m#sEF>E+*LqgsJ%|B zsNUCh7ss^#N0fz%`$l(DXLT8L8l&Gdq*gEy@cYHv2#i2o_|@~VB0;5tw&{8p?fsgo zq^5eLfe!TV8^97#9wf?c7kV$WbHxFSI z%*$6QoDjMq=KCH-chzzc=<2=+i1q6On};>G1B)==9-tB7z&(gX>^q2Gz4m~~+g#J~ z+J#ubES-mS;@8YOCuK-h>#8yvy z0auK2x#|^6Sbm0tR($9uZ3!s7dtRWj7Omi4N_8LbYggVP7YARfvj5<2E3jBIFSR3W z8eZ}6Wv$SG9O-3l(f5##k(l3;Fa5eOstbZqWT;)XPR8 zBl9kUm;~vzI{I1O%{7-@de9SyuDcmQN(H$Ud=vPsNX^%c%_df(`W-mG;|-=UkUf1jir7&XNOyf(99HR_r#};yz#_NreN! z>9CEDt)c)A{N#@h{03QS2EhA1;=*W-IQa&Z>c;gIxu}0<1S>!1#N~5+k1e{Ljz&-I z*Rk=^#2e8$r}9sLZ~&&%-{!Io>d?F*?s)LxNQwGI_rS7*HwNk3f4}VPgw~dNaaGLX znE3%axJ+};f#rAvwkU%YkWPK+cPH?yf}B1Yr(`TFc(GmK`CuXjs6%4jtjY!ElSjXh zG;$+aY4n@YJq{?>3g_G{kKGe|T@{heY1_rEx|U&+lsvV>pekvdN@EPDZW4Lzsmd>K z)TcyPS?jRddi+lv3!k#1X-U>_WPrN_wO@{G) zYW7bd(oOTTsJ-ZyaWp>I^4jo^u5fC1GYFT|m8=!5#1-+c;o4M&mz%Yhyr2>e8X)(U z3J&q$M*nqO1}n~~C;p?rF_y`rlR3${%YZwZ&3eH~ zkljWT+|B($Y^NPWALSke>ynPt&J8Zpet4F28R$+7gjAjd<*xunky1cd=?_N=L1QC$ ze`z`rT`~I#Jn_zTo#13iRJRAg^1unAIs42zQM(7pm9^@)cRG2cod^skF(>I04`VU8 zl$pY*nzn8squsUQ2AM;8Nfh>@Ho%*;Npl11symgRXD3Vpu~@<~0|jF3qk9{)WZLJu zL`AGJd$Pw2d=&t8XAJFs@OpQEUsIi_anqMh0{;B2FcwAz+#C>QdGg=-^f==GO}J^9 zM*@|`e>)D}ztzKj^#7O^K#1FQfN8Pk@CUv=`;tHdP*d_)o{-&Fz0LEn$1j+MCPKEJ zT5TMFfT=@jAhn%=N?`f-YQ}ycQ_*J=DWY4$i+FA=b;*NM&+aSGduGP3K5ofUOw)<< zv$P)qJ#B;^u=C11Z3?4bdQG%nV9RSUh^_LU+K%Q7QxCPi^MWZQG!|MU#>ZcqY|iZB zF3u>tkC!IGzQ6LnLh2+BD|kR>%Na{ljYs^DSHn`@hko|}s|?L_yW5l}-LBzLo5wq= zCQ>+B_kQWx`@i$rX{NK*_9k*^QegGlHRoO$%&} z^ROsJjoFM%kKUa@mG9K64mw*ym?=D_5h*gMQ_C_XUG>Z|&=5t-cj+YGxnNv83WjaF_1I`xXx0p4`TRG+L~_Nq&e`B3D{`dzwZl!SJC zbgAzT&Ww9e2R6nhPNKI4$EzE#e{orN_d9N+@@q((A(@2hU7Rn$dEf%?*2TT+@j{NU zMALv3KqMjSAVI(&CFI}vM!_43<0yp0vO7V?{*&>*eNuI)H`W78BB z&$ls|At`?IrlNZXLWp1riO@5w(-hxW#1-v~3<}?5Bu!!iK#!_bv6*(Kq~U-Y+ih{# zK47_zl=EOF`=`&-`S6+mKrBKs0NV2HZCRibTn6z$mP=S^Ava7fYvqL;M?obEqmgf{ z@G;=7gt_`z26rDOV?U$kw8Qi`gD8d*Q@t)%A6?X`vw!0t#@vE*8L~Rkg+)*5=ADMl zeeH4&wpl^f;17VK_)6A)*9-J8HqwC1#t_c=WZPVcHRP;;rJOu!2-fxN`e9QkkChy4 zuWzc~CEC(*>oi@fz&*cc5h#?JiT2gqiys=coOOBJ{n4wpu(;Jb*cPym5VIV^Cs>Esd3Uy9iB72%SlI`r+rx@< zUS^yV5*Vjz%R-qaY_>lLxMkO8#t5b$PT}uudnS4%rJfw-?o9#F%?XEr?}>7c=AXRk z8OLjWiY)<}xIMCsa_qGY(SV!mJ=#P}fV81Hu&QlO^1^ue2rGDYRXX<5T2MxS9 zQF4XtH~^d2R;}Eu1#cVg{rF;~&cU88fDGE_3idfTZ3a5sLENdNxC6?2Bx@Ny^cjXa zp)mn0?hms2H}iwH!ZWGQPdU=|Czh2|()IeywiqtMCH7Ad(k>5u_$(p4P>IIp=QyGo z-wMd7?=IKHc2C`Ub<9K9kZ=9rq+52WcHekPTn0MZtZD5cft@i3-xkTK{di6A`+YQG z1b?;cEGQ34nj`0nh(?aAylWg38+O1JV3-WXVj8ilrHC?Fl=rRza8gMN%Z1aW0+2#B zj|*i@)(7ir$C&t_(r2#}s8j3s5NI@GIv4+NAMabLtGhDrtnPhQ2i(`{@C;%lZxY{j zfno0IvKm{|WOPgsUZRz9p=T0z`yZATkKOh)?^VyPsyA#q0D+u10Ek&$ZZ`tFvW4Rp zg)fA;a64rrhd51Y-o(?BxcKSTDaOnL(`v(H#=%C(0!=~{EhbHC!Ur^y2$??*#WgLRf_ZE zPEa&W3xke9tP+78U?wFH+0ecCHE{ORiIp2yNBu8&+vC+!M4;u?R$^%Bg!MYp&lm&J z!=LLUfM%I5`L>(Z6s!$w4}XGRR3?$SKymj-TD15Cb(a5F zN##>+Q@ub7+wMA@N{Babu-8VO+-lZ<%>oY7gLx#b^@GxjUl($HNm@!Qjq-4lZ-ZS zQ>fdy$yE&#zHhx@4l-Ivn^Rf;?0 zj1V*RY6hz^Ejz=S>CpTKUi1V*cg}rqP5Ps0ACo_UxDu1<>t8$t@j8~lqorR9iBGPX zgZXTXZMN@T+}E*v*3A0bEmi>3K-AOJ&w|l*jXa>4#8~H`zN5aB6ltlQHL|(z!Nvfw zwHc=@2q_vw_akCv0no!siv#^!Y)lhYb1Skp74YSCK?;KuokK8UCo>7zJUY?l`Vg*v zUEoOeHL=0s?vljc(fmCzqDV@PPA9PF=!B(<^!jd%5u=AVq5|ebn;Kx+U;g?tUc6?> z=omcEKEzczd*X{DfTaSU<>fnH2|C|in8%$$kwY6C>IP%4jj0QG*)2Dsde1+3P`MlG zAl5tftIB>^JKO7RzFTT>>FS>~v6DzJ8?msmy1)>g4BG$;4*O`pRnjI`vzwOYGn%nf z;B+2EjI<+XznL(yPNk^_OU>D>l);=0+q_M?PTk0N~8%lVte1NuTEv3ZdH-X8Y zENDFTcfWSu?@i{Pe|cS9zpLd!-Gwl`CR9+vIOpo-=e*yT_&;Yd&-0e<*gMih#X#wc z&GGuqJI)93;nZ)6$N!0^d`ER&qK$IE{+vO@OrI| z23ff=8RNMlTYO&uMn{8L`h?bFE^f+28PqHxcuQ?HoprSsp?M z9(#-*H8u=VN;AmO3Gh~Z>M$$#TzUb}64Xz*##@}j#09xQ(4PPrlZL)IE>yo3v`IWn zHC@C^oB|qez5`V{h%X^PCm=jmrt_zkY)ak}`4Muv3HtL!6T6b{m`KP> zz)!MFGj}=9H?bVOrF#xghCCHrL)(A|&FMDdjNs;-;*RrS&FKK*T2y5`YnlBnS0<}E zAr{MtUT|$HQ{6=uR?RQKS6uG0)Q#{L3BkXen8ah*T3(yps79cQkO`>_{>YfniX^rc zVQ61bVDYV=JhdYn`zJH;_Y!Opf@5UT1_{9ev+|_S4WQIkCGi8YjT8rYd*BW__8tAS z!VE4GCX=x2`i8i2%T3aSXdydN;o;{G z=bie-V+1Rpf~}a}h$C953#l|FE92aW=b^5gWzKKoglRUJ(kDwYSjfI9kTbyV6pz2x zY7+EpB^b3&b`eoZv=_Ud%HXht!#=NcFmPq#L*~Q@#7n0lrL!?qZzPvRgQqv#x$!u* zX*v5Y&{KAD4<}&XHEG3T;;8VP!dBoS&DqCXpP`R2CUxOzPV=8vJoh~Qt@sCZ>T;1e zc*^Qp^i~NhQAQP=IB1?kHo_IJli_`2cU8ORl)NqUfG$%et7} zG(4jzM@_+*>=D$`4=)`a{Y7nBhHtz0*-|VH$PI&HKkqsZwY4Eic6kbZ>p84w`5Z#zx z%+;nYq#XUGue|WAf!NXbgS2CPzlsLbd^%6qu0Gf%#U)TCy{_ z{QksNVD+gaE1{^ob<@Ms%WQ7_gq*_elMDL6KaQgEK0X;$st$Rl*8-EGgWe^GKyp^m zvV)mh>*hE2kLroUX<+z$sjuxYQcMV?IB*6S*?-Fu8-BU-B_IOK`oK6|aDVWHOki+# z(ve`6&}8>q_6yFCH#XVWeJ$#;)>g_~nQp6R+4*CPi_|CkdFR)AJ=uDIWpJ>NHN)D^ ze?=`BmcCg|(j(u`c;2=|4_&ZgIIrt4%m}gG=N(+Ut60USi!YbNhS9XPdj2%R zA?Lub0TIUEyoz)j7*xFmJ$62W#m>mlDz38`e#3I{etp)Vu9n`{CdBxCC9DWb|0RJ# zU2{-0Ef@$yw(WIcn#n4U(_v4tzIzF9AqI(ekuSS9PZ_ruFSY!l7-iv_%jG^eza6(p zwe)biHs20_YTKC@gW4CvdQI6mNRa>yZlliR-k^#57V>)M94LhIcE(3vHlSF0mN zWAz)ZBs*pQd*W`9_Ye-4$g?cG-Tg?iFJ=JdKLcR%_SKETIq17gkrD8Z%DPfz!fT`3 zlm9MfxlEO=;ESHUe)wqG^z}2KfO-Y)w6Wn-&s5)u*<|cI#;69*3pa$#tp4q4C+~ znxgf5A$MBz0>y}PW8{v$Cdr}tF8?g;YPZ4N&6vR4)na;gPF1@d(PAU3^|^=dF#|i} zFIkRP1vV}_G+|+$ZW_RlC}!5xFJ2S1cOPAPe!FMR|3bE&qI+Dz2Tn^@od7|rTfsxKK(3=#tqja)!3{c=hdHJh3f*(k?Rf-1#zT z%TO6t=Zxjt|43~i1Qhhv;^&oc@c?yNlS3fwV}9jZiCU~5L-AeQxQ2Yv;G87DGK z?Tm-|#P(PdV5~2wXWj2OuT@oWGXpP4B=%gZ<0_l@&fHs0ccJg>n7DG*_|}uByj5c* zKa;I|0f{)%N0Q|=1f)q7g`8Ke*81KA2ope5`P#guUY8i_SY1&8<8xsu4e0#Q(Cf`_ zI?h^z{Rn1Nfb>xKpTkve^*pnOUWw2HKe6<8n;H$#E{btuus|nc`&#M?{3m}I zVCYl3N%k}<1IFILpQ=ioW#KKP_e{2K8`B=zO-rw+-^MgYXWt+-(j1W{1V3eR+N*bJ zBtNzg{?@~I%AR>CyYKbmTnlc|Mb{=Qv2?`{XF3~;~`$=OLE^i-fVeg zAP&sz!$c=RLTkn0R*R`P5B`3!R?q-#e3<-Md5266RiOL)o-=^2N!eLPb1p<7c(9T( z4j#VMcxmUbTH>vYLlnKEXprEn=C)`a;~sk#B|7ti#T!iFz4$pq5i2hD{`PZ!Du*lA zC1$$sz>q>x69x49)}!W@liNPUwd-pRTO|AP+@4QvkK)HC;U))D!58dZ6ungwAA8R} z(h1e?0c4*tX=`qrwnSKga^FdVsQRA>Uj$SA}$f17qD=Srk z{>qvsseOQnDloONF58@>F}=7{>t5N%ZhMWncraDm|5IOH+IVW+>!es|)~&GxFw^R& z3V*hX;H#RwI~eSz)4FprNxuU#E8P2-W51{tSUMiOt z;76HjGy^i5#{sSkpw_hx*Sm=Y#4hl;X9gg?c9=XL8IVL~5jA3FhixmSy$X}A3n)T z`PJP+sd3($HJ%<~O{r}N`7x@?poD!>F??0caZ74?U%y*oVZF00^m?dc&O7Yg1ollb zrX2of1S+AH@#TNIMZch`(A66|{r}}s-%SMsi=Um~fNUW7^K&4m{Ifq$g9QB{k3?K?>j{9fBdQ=Sj+{n7sga_n^|(R+@mRk{A^duqtL>--#4TyD8VK%$ly8P@5yQd|w>XbtT~ zVp;s0mFC4TYX~j&io+(;0~~E?l9JhaL>5O|7AkbW{>6O|hY z5F_{4HBx_%xhfy&e${5)V;?LGPW3^Bi{xN+@Skjkh@3YAOELVvgL>Hs9+?r|+2*O-~ zjoeGtHNBdG4){o%CP5#7Su+LQ$&7DXFJ?>rTy1fAcHNZESzXE zf(uH?xCk2*nt{xY@@}aUGxGkOmk;xWb=M$54>|*c>}D{Q!Zq(6OmhH z=o20?IS`Ou?3tCGbGh#n4TL-ZvLn2r6S7o_MFJX%swvb>Q&GUr?2rDeEx>Wa{m`f@ z7_^>!=1}=leRex*Liww*CrYK+xi6~8_#h7E7xb;Z`ow?s*(HW8FJj_OJ7jiW{J}R<%6yajzfRa*>lq#rGB3$-1Z#_eex5J7l&Wkx?jk> z5qw+b9vIm%{I;ZNM+`9S2+O;<9S$FyniwX-T%#x_Wva60HhBXc>MVV@`NQ}5Jj_0S zoxROexC>{H_%Os{${b)VfZ zT@0t0%&hJDr(;Rk+Fy{-#Be>isfn1!z@TEH)hYKm>GHhq7s|{N4=rai+o^uB;edn_ ze^zDIr@wx>v@3S-ssrV|hK1Z52H!wFkqZoa^}(&7zxcb+MNzG&+u@yB)Db$i@2E5m z#lVPx_?LFMJV9od9E7hCUe{^4b27d?exKma|&cUN3< zZn|pzxr8LVJ5FMGSX4yj~&vEzNlGQ)vf53lTju8Ek;F>r#nH7Cc2%>mo z{i9^|G3&WR14hg-@|B(~EA*%h`{5?`81r~-@RF5&oKP=UiGUUdHc;Sf_Dh%3Tk+1H z_B_X9-r%YSae#t~eXNzA8E*{GhRq<>D6Uk{cvnlG9WfQ=Lj88pK)aDo`T9%_Q0o}Mfn?``rT2xdZaUGW zS5PM)QcQq0blA$$Id;v#PEQHyp!K^^y%i%eAog*GAR>*rV3yaHuTjLR~nsvV} zaU|LXxPGSRdIf!NVje>>SDI*Uyx>4U&FC9ogaZzTZ+v&(GR$6T@<@KT;>jb(fW9Rh zl#PlT&LR>sgD(>WW7QO~+%UK_%I4mZ@@sjR#NTMJyMdJc$$fR_+0P7x1D=77bXs~a zRRgyBnPI;O{a2ss%RqO!?-6l2LPUaC|7eEZCY;JMNNf3(V*h0?Ekexa`|5u?j_Wc1 zCvW5b8Y)5%t3MM@+{i7bbrkC2P5alKrAe$sYZLpW;Z>t&bIcwr`-ruUeZu8qf~ z&PM+o=StS@Ii2dsr{aC9=Uso7>%U#}I_01=00|VlNWl*GDk{A(oyD=6lI&k#B(7Wu z1DtA`h~ISGNUy2v9&kOf+$?B+Z>i7I^HUU!bA7~>K)ItW z%;eNKOdMOwc?M3R9%FXbUjYS&n>QK1qoq|h`WRy5nyR+Mykim-7H}7TdGkPrrVGsPQFx|da7P5mr2EV@Y76cSWAUQS?k$Lo@c3uxYrS5n!m z@>$1RxCHyhwP*erE#Qn#5NbB9Q=L~H-zxQR5tYsIgX~Adl<}>4iX9c)x@e#pP}(;? z0m@-CXgKqBX;QN}9vc4<1pZMWx{J1~__pFEFYz+-=ZH{X(LopfTDUV-LDI%gr?pNPVF-&jopQ5rw6(e8zH#p`|L)j#o6C+wECCTvnx*-G6)))RJ{^4w}K z2$w~~6_NaH(a)EB=(?DGOQlNA89$wN32>RY;GuFc^iBk2>~s>gX~W&R_VA~UG%M)B zV-wPH@lIjFctx=ND%*7c(q;j~#X0slJIr2b4-O=LzLVSZmv>1}kFfU<8(4F~wLGge zloPV}$1bu(FE*?-BH!Syz(e>g)VI@GhIWzP8Pssm#RjbC{@7Y%?3$TA#c0*Twu}jM zyymPSpLLcpvW^$j;y6taF1iC!e7t)A=6MnmG{&cd(?&V5_8?VWOldo_UJWC^@d1(Xfb((jdlX(V`L?k0MxS&aP6Li~nC{+K~Bb$K1cbH7Qd-QMRN|-9s5p2ltV6lK9 z_5h%J(mLo^>yOeq@mFw*0AQpd(qRwFUtT6BZzfPnBg44xA$qJCBmiJ`{4(>N^H<0DdVQSzfvm9$NHfHn8f|mqTp*nM{TyW$iyZnc0qeA~RW-Zw?QiZ zrlq~4K3CiabIPP`umH;<2&Wp&lgP5^R$d4pB9rQ9Y+Z}NVV%{exa9a0`DCm8AWU?*p6w*mmT$mDsEO?03#VzKL;w8 z91p^lJk&&y|U+f}SScE+9B#{o9;wB|o1K`>S-FqM53bseoIt*~(Wg4Y}F4{7sS-4^{a8iaN`HCd0n%W6~%g2neE- zSmcBen;4m^UhKjVIfZ0gu;D7u^xYhd&7Fng=k zP-MWC58_zzE> zy46__zI6f*JtsxvqR+p30{qsWJnG+T+#BY)bjLIh=++#@9wpNm?~a%H?e&^mJ^1b) zY>|pV?Y;Qo7N?)HlbLdqw#1AYa$;>W!uZ8qSr+&GxOZ)^`~;{s5r&KM$Nuz*pmVG~ zyX_m>Nc|0lP9o2!@%$x*7<$nB310x3>Kq3({mulyeM%j*!Xs-XZMd}{5tn)if^Ow% z29}l`ha>=U{Z-wn70?$}B6qfnW%gW_LIfU$*-yna5)wIL9Nci}o1-ImC)e;{J2&(N zkk2BLv|HFd2G=ZdvC`G;848Fa8djyKxF8pZ6hpE~w^w{22$y%QM_nD#Bf#WA&laKK z8ZG{{lroB5+MG81517H*i;p~@_1cNh3hDgdxv1r~da94=o;&86a`<1l)U(N73SK0h zRttN*L|rHZY z?5^^|7iOV?4CQ0%X0F`QIiUlg0!|b&`dJ9L{b>8qP6?)A#C>`E9@i*VwZ8$`6xNP$ z3q!pfxQeI&tq%7-ywUv?eC<^6X)kj~AdJ9_=U3bY?pokD1kqzY4>DZBb&cpcvpo=- z_peTV5J#bY&nP(prZdZ+i4nfxnuDsQ2lJond;}XeZ9E2I-m^t%1IYj&898tVYNFAD zvDgl-ikQX6)Ky0}&h12;<_3~l@9pJ+N2cqRuHF^;Yf2xB89GH|pj&U2N8bbt`IYEK znf-zIK(rJ(aV!x1rij*pJ)FJ*{X9A|{BWwAF`DWK9OdV4Y!N{Iz{)GrV8}a4<-4gf zi45&mOPnn7@u-hwSZ^x#dOcm4KS1P!j*o;G?(F>)isl-=7j1GPn;o%Z$RlJgd{n!f zSnmT>_aF&=Qcnfy>`3#i-=3uSyxQ>P8RItVaIAp$>CYO0WEHnU_0ELOiKF4qHK0k+ z5;tN(z6Poh&_-GWYzcU{j@HK>y)?8&`EpzD^|KugttR1O{0XGl09%dYj zw@Viv&*^CAT$Ym3Y7K2{sdJ(8&V86H75RAL^T8MfauJ+HHe+n-xGqDTj-5rnmJBErFN%6lrAU7cj6(V+jl=G&?#3ySu|tIDDr>%hW-3)}iEh3Vt`=LYE8|QD-77*Q;1S_d!>f-gR6=Db+6PUX8(7 zLIJ)706HNbnlf0E_J(e`C~WjR;bu9~U3;s8uV(RqS>I3M>AKR=lx>+u>860;a?#d= zu_P99GkO@#sFjOIlvPRCFpc090JQ{oI3%ZhM`$6hy9r%tDfT4)!;Vodzy{G+PnR2E zj=T@T}+ckO+HJlc>CS~NDsdR(E*R}n}`cUW9nSD{9p3iqw`BOvNTIS z8>xG!!5rqvVId__L9U!vpg3_{$JNhz;5n?B_kB&{#J z3OKpGB#pk@0%c4?2&jK$_$jwNPtG_jR2NwWO2-xX#-gSM>)B4OYsy|J1;Pl~* zFX;EU5`t7@0B>>1G(7RO=%<&=1ZG2 zs@($7JvB&R-tZD7abAz4syio^*0V@ni6+FjQKlewt(pt!et#T_LMTP7^khhG%;33t z4I%c)Zja>*AdTq6hsIO4#;)-}WLdI>=svvR1^2pq*yulsTajwK5*Xcb{+r09L zJYVdX6($vz)m?YEGa65<0MCgfZN$k=l-VRU`P}D}g!>GWps|Lw5H9XnJnOLZaVmESpkWY@s+XwHekN_{Pqj1Ud-MjfrA{EjWPcEzW~IPwO7AauZ|^_I z*w&hZ{t>h$NlKE~6m04@+BybiAWweAogM1z4ht;$9!FE}4!#@U_03zNT0#73dJd$A z(kI}D6M^M(-=$Mt=iwBVtl0d)PT7PA;8$(=QXc>IdF1DS-^7H{%?typUY0-7sYU@C2?SU+jv z>qW2LP`?)xw$p`byX_OFLx(fia^goIrc~Nd2{UZ{rH*!&3`xI4>5nnHb@gfa&Xz*b zr%~nvp5WTsC)dDk_dxvVO1iPf(|HpmQ>qw6TaC7x%1PQw;U>eCFOepvPiS|UEiwe- z@yW@A6`~kAMjZ8E_Th0QCJ_ke>bG&Vcr0q?;wcF$^-3LsGvRXNdehe+U4j?+FWV?o z@W0!m!IJ${$Rd03_;uu6+(DgsKaiCEvr7qX%l7fUusl@Xt+^PiR7@I?&h3hE3v$Z2 z1wT=AgPsQl2!d{#f2{|sg&7MKFA|0;fTG{ui`PNi?$&-C_c5&TqFv8ZU(R2ppJ3iU z58V=~V5efu8NAejWDT{5ciQ)7KR$28gH8SNmDB%xi38Dg;y=MEStKO$;5=34?LoIZ z)S)X`q~_p_#l5`ylzMmkID+`F0#I!axflL+ScR~g$H!o$DuT6Es8 zrq_eN0KE$?X2M*$NGJ%W=d3f`*l~wf*>Lk_peAD4G%_ zfbP@bP)bRB$GLwJau{9JBR_3S3R-;-d&3E)ULWxFu8z$#tv*QRJ#s|fhj%E~Qcy=W zah04S;z|N6|iZ^cW{!OrX}-LRlo;oArDHr-N; z_JPL69j%p~Y2TKCjLyEfTYY3l$z>Uabk`sSlY2jA+WFt& zeTizpD?wKIExi<6P(WBKlYl!U1(P@YMT9`!;}GSnytaIAoYRt6I6NRl0aTGZA~HXx z*wjTDe{L6>qSkbmYBd=vmWlQIh5tA(Y;;%9b|PZA)KdR-);@p~d+-R|-LF*BLHlr3 zh~In*=B@C@1qElA8VMiDcZ;i}wR#^l;mIb?!FUj{Zt}f&T=WolrnlYI5>Kh}l-d^O z;8gW>cw8qEVch#7CMdtiCm8F1&r?T(502E?3+8D=ioCZcNpiOFOXH4$az9x*nkhg+xCdW2zD0H*s;_c9QN zWr1D-dLBPpO=4S&FNgWgWGnkrZsGWmMF<0KyZ=4z>s-Bn>w+dCYFkb7UvbroeJ@Dd zNz&e-(L}M8oICNji6Fc8yq9RCD{>f;q7w@^agrDN;h*pZIbPE$nk{Ifp%Mp>4FID^ z#GapS0W?d()yHwH)1TQDN02z;$)-`H`KE0duJ<#0m>I6;Jc*>d`K-85PeHWLi5f{{ zFnc~~L`=$-h)Aj}g=+>L@)bpdwuLA2yhM5m z-Q%<$BwHp=XEZrcq_WnMiM?YYQ{4wN5q;WYRD3`ehqUOeZ-wb`S+M#9x8J{djKYk8 z?o|!x!uWTKBSH`$EN@BBVjD`Vt2Y8X~y{FZ>npq1Ahhx&`XW41+mBD2a!xq++A*o`CB~R z7_yexGl>Ekg(3_<`Ilg9A!r9NCmFHXzmrY{4C-7R$R$Lt$jDTAKCql0HQW z@2_&`l71z$ijh+FJfcgmxIcGOYf!QVj8DW!6ie+fkDfm1Wmrw}t@@maO``OZwicT% zk#6)L5Dh$#4+%Pfq~5+sRJV(`jr5h_B);zLej_ZPlA5obWlN^n6{?QrH@d`atmxBQEer$wR2WSg{L?XGoUrh|XzYHoz?=Jxh_I~p}E{{C0z6bwV z%!fV`IXB9RZv@>ifjnvawTRS|9e3X!I9*}C%RHgZ^))F@5{h<;fyDz( z%W|(%-Z_69dO!&3vl~`2wSeocv zs$C4D%5FL9#8bktfSId-hfN5vzq1ujIdVE`b`WC7kTMsR6RqkveSBf0(b@SUmUetFka1 zl!6b*YNckeXVwDh(Xcw#rfFQ*?$@FIq4Z%uTZ;V!-bo`Ji>)m36DSn`@-dt z=#M!y=Bowk_48-2r96Sg?~g4p&w$YIuQwlOncM-3exF_{oGX#yZYdO$d#+2re zY^90v+}=F7)C49DW1t$Ke+nQ0-fR(M3mN5UfFP_&^oK&B_70+z=om`9q~9+10`E=v$KIb;W|mk8VeXkpaE z0UOubb7^D4KQdHgDc`ul)HBJA23LslFbF55e%kNYd}_^LImUXcZv$V-?2gp>?xhp8 zfz;4~ZkxZ3)=RMyg^We&%;%Y%$o<#sWly!!ERvc-wIh4Sc1;}-Uv=n^&((_B0_0g& z^7cA1V$1Jx_U)y4hoDBCvi+?TNcUq_qm$ zy=6caubGdE;6J^pQR<3lXdbU@+!8;4qy|wEzw*~lx4-J;hhj6)34YLD8F5XF0wwL9 zKDa3HHNmuGU}ako%uuH^6uXlVk(oW;<@5!?aym%dlc9jM|0 zCdH!o8R=Lp-igbYMid15Td0C!wBOrJ(wr(Xy+Gnvs6bFA?TFInpROdq9>k zo=l%Mr)X^##%|0ZHeOG5C01@$C`S(Frv8Zbum(&!-<3bCG|X26MZ|Wb74DjwFbh7+ z1MBLT8*!@Vi+o8=Ok66S9>__HwklEmtR9 zvQ%oP#}gw6?$fC`^}AV-#(!dlY(J5a-`|pW(9cWzk&psZ8wt1@G6d))W#VuLYFd#s zI9?fIa5yA$h)d%6r)!@2?X#y^TVJ2@rb#f4xxvc7Wc9+YH$SE>1IJtmU~KDT!Ot`L zlPpwCjO2#KIzOU&y&$ZM5oq@>6osQe{FaL|TlBU@;)Fhk1G5I|7`riB8TbB9y1{-I zoe&-B{jT>^#o<(0f{3zl-Dmbk-J;={rY|HlfL;x54YvX4N&SB}0ZW3Jfb0c8)oE}% zV#y&ogu`Q*QKZ+&VjU7MUOCeY)=9)Z_Nr+A{ja(4!Q^}1j%>1IVyjaMZh_C8wf3#y zu}!@xnU*Y1E_aa+;!_RcPvP4idp{GrsC&7kTRq^RK9kTe9D%ie4ickk`Rmh^)BV&_ zFZ0#345GuJG6Z5PshVMpz5844_6C*@vM@xB&~}PhBU2~YD4t~!!x>%jA25x|xn7iD zjQcyf4gMMb29Lm`&nb^;vU8sQKrmpLEE;yL8oT;ruUg_e%q>MCo9_I%)D zQ7z`izsK&5yTP zVjNr!6J(7q&+IP}pJ*ES)zZeLpbGvr&S)v;L?Cz0so7lSW9I59T9I|dv#rCb6?|{Q zGz*+#U2zmn?n5rQB&hpV^}l*{p_ek6MlT0W>}+QI zpIdTt6Tjr2{da`;aWjmlAHHZ0{qI10*mLar@3?M`4h!zRe|DRxS5R*f%6_)kw>I+! z{%n#=-|;hNR=wjOJ=im$tvq%~yg#}J$FzUfpO9$EI zmxuaz(Zee(5i`=xU23CNdaXhbM*ESY{vM-P-^s%fGx5LZfZIYZMqwj1}0 z$#u;zsWcm+7n~aiqC4x=XQ=D&e|;hPr1Z}1!K7dn@*#-q-Gh3@-N%>R&(82*OS%X7 z@M(mLaGe@+!4g+>=`5^xmDIM%#=paTJ;exLG&}T$uzX1+54P*vsH)>yO;x`mgn+l_ zQ;UYTkq8<(12V zZ4&9ibn&CAgwmT*j70t9O~tp1!>SfhJIa)VWleN1WMzN)e}-LfMoApe(n>sfcIL=~zWOm=>Fh;2&&8+4 zpk#OYC#Jc-GU1dy-WYK^b_v*zx2+q_>EF2>^q5`P?@9YOIS1_QsVW#a%M~DX$zxmg z&MSG|{aN9zd%p#L$X@hP2=JU^fK}dA#*OPE=nLAAhl+#CEu&GwQcOkp^Kw%C>7%N2 z=1f`l{Blt4u_U;A;DaV!3ZzHgk1!yJF{Qr z7!wk%O2?8Q=c?o2N`9`D45#2uMpCG({fVa5nk7~i8h zf9%AeT={5bg5#IfwdG$tSJ~unR!Q)|p>-I0;WU}TGvkS}5+p90na7zZye$5&=K_>b zszTpvfA&_ZP(?*IEgp0|)y~jH`7Of(VMp)pTysnaPwedd6bU(Pv$HVq z*KPP-e+`4_3UAPxF@(>i!Fh`715xp+?vx1Z-O%6fDqkbyhyd&JR4pvN=dkzB?)eO; zgR0Ce{3kf$FTK>3R#{MIkyhKz$lm2{$LYd)z*($d!~uwKk9fy(=@jmDf|Zgc73IakSEG#u#RBXJt%p( zkO$+Jn|lOrEuR|J6Y1%$ZShA%`f{rvhQ0Km@tyc96NwipW`6~43p%vy;9XtqS)bAp zK4@uAUwocH7hRPAaZ(<@Nfx)|S=^H@0n_Usbf^{N3h)}pM+~yrVK9ARth}NQ`-{WN zx8MP&>md<={5W4Fy5vE#0-QHawyIUF)220ni6yb&w3M=dTFW+x1V1&i)I-LK__!_{ zyqZNHj=xcq{yTnwHQ>b`j;Mq=xUHUn4|mbp!?I~@{!uWZQaNBypd7;?I=7Eu1KX~@ z=Lu5JSc^=;2LA?U;w)mQB4D(`)R+HhOC|d_PoL$Q;67e%8_Lo=c(5;sVu_eB_Q{&} zyf_p>@zcKo)>$aKwf5_RmbVy%w=dxbS|{jJviukOTuyG;e$!Cvj81)4cBT$JbEuFP z8y%PQvD3u}-5v!ithW=vQ0y2FZrdnN(H(lANRydW5XBtt7RT=du|$kce7mul@mG2s z{H+rLirf=S?Q-NeThZ5hBp6BriBUv^4>>%wqDn_IQXx&H65wJTrHZclbIx4BGZkA)?`@h(YNX2lAeVJ3gTlaFpnDI++gfQ2i|F@y|bE^{ntHmbGH@PzVKV$yTtUN5ZO?GTx%%aJtCxyIf zC!GaTUhH>tb&+e}HoA7^>JDmP2(_95Jw5Ss4X!l%1Q%>oUW)olQ^O*VUXx14A@W8P zjYBZ!n9H)q2`qBn6IJf{Y}}I{ZrCHl1WgsudCyj5FzDJ%Z`Wwy;*yl$Cl#O=`cZxYWexg^ip#fctk~;@1~~riuaSumi+dfZyUysMTC~Vj>KaP ze>q-w{gt(Q*|##FH$yv7?~eA*>uH~ig(p$bI~79dnn}%$Et9?8^^YbVjbDWd**(*A z3Dh?G5#7S`%jEOAJEm#!{pNeg{o2Xn`VCW$+I_pp`qwwz<}YeG%m^1GUWJLRO<%7Q zos_uCEB@@{dFtd}8mrI_E2*z$Px@(*D`B2BK4QFXyo=9nUew@gtB_?&NlQ*b=?2j@ zv09ATy^N_85zp}uFn&BYawLS$qM`AU9(lI9ka(lV_5pun&vBmNxJku0wX%lR&l@Zp zLF@%N&I#=X&HPS!Gt|yt?fwOm31sLU!-VB(-98d$RWD7%t9fKlPNYn`omkd@pPdBz z{7ZN7Cib6>B@OHh@5?B6UBYc`Vnav&V6+E0KpXcEJm%@qPt#Ew9Q0w5qoWmfrVGo< z%F9A8^@J15q$-furX~&}V-w@EhLgXGM10h3=;J2S4FBeXcK5T5g~?HJxhbv}?_i2+ z%FOhWJ3d*)e1jvvft$t|P2OJKJ2ZQQrQ!O)QJ&L3XVV4H8MNO? zK*XJe6B22mJ9TTe=}Z>de1hC2;%^6=HkSzthv}zE216aL>Mza%#wj^2dc}fZHZZJ$?&61y7l2{Z@*f@S%)Y4Qn<-p(^|Xz zv0r1C#txs@S=!S#M~!3AGkv)fmPpmc!^(&4H@!-k9u2sEn3?=LFfkn}TxzdRTQ$7k YpLhA&)$5;sk5K?aO$nx0reGHIKfvFM-~a#s literal 337259 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

1)3njeD|`8W2I!4$~(Yo^(7*ilAwUa#VC=)}Q*K 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

hV)LezIojU-X)E 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
U|yoN}*a2P};T?{vLyM3I)k8S8Fj)>=ci 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 z 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 diff --git a/demo/collateral/P-3-Faber-Proof-2.png b/demo/collateral/P-3-Faber-Proof-2.png index fc19d8805f80462f023ff4d823442acf52649be1..980ee313174c99022f18f56885aceb0f4ce6a2b3 100644 GIT binary patch literal 75116 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

~uTs#=5BKu)`w1w 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�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 literal 335944 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%0A@EbOfbpQ) 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

yOr1zJ8IQdc&qaZtqMv{7Jk=qSa;yWo=SK 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

Xcslr_Yb<5UO8!m+s2 z;QH*U5~`m;PcjS98+FSFj~(}I$y z(Y`6v1F2|k3X;UxA}MfvGGqHw*}<}@Uk$@A9ye%4`YsOxoqO!Vu8qra)?E!vw!%UZ z+q&5Yqx$wE)cTW-bJ-~XM($(pR=zNeIlu_X)9Ol_$30HEk#GJD8@NyZ(q2&cnZiD( z&aCD+?-OVHi(Wf4j@gSde2eE1G1>`PPhdMWG&bz1tCHisXR9iqDx)_(K_0mB4m>K# z3aOCG3NF0ysq4+6$FP|s)=Is1B-(?_gFymgCF|UagbFgqITGZbsRF#J&UR3C{0eHX z<%V5VXBW7tbC{KY5qo!Hd+L?KgP&>8sVx&0{(y{-t8ZN%p>S7b0)jT0Q@^{g9EVWA@0E23I4|ExsiqxzT=q?(Lo= z-iO8eD0#iV{+w}pL7=o2-8-cCG}aw8Cb90{4-q2c!}>E)DVJGoR^bX#Ds}?a`sM=* zVOND#gZ!qJ`*Is8&KeI*2Bdxgh}S!=Ur!<>DQfa&{-ER4^+W$Y41pE!kYkH)o{lmv z_&k;Dua)ZdpA{F3c3xkaDNDxUIx*NcL;J`bG|nG)=m^NA$c?vqNJ1z%rspb8kDQbS z|JV$t=>V*wI(YXt(0NaRq?13>qQt%ma?9hHyT|QM$6wT123$wW#Y96iZQ*qf;Ga+f z0}GY03yaudKjQ*sgP8cm7KBtr3DiO3&U~MG+Cm3+zNcN&vLE5WcbufZsc!pRDdMd1 zUC~9nC4M%Mo1FrtH&=k&NwBCM9dJiA2jlWF<*GR8J8b2Ng7wE=5+4Dv)n*6co5P4+P z<5JpOmXI2r|L)+j^$peTmjRFmC7sd}Wt9X{7iX5m$s3;`sNJUJ1e-dZtoP1_gjQ|=zEORqBH!gU#^o?Mfxhc-`@i&3?_ zkfdD21LLSZ9#=H*4Hey*Le*uN7hUWk!mPEL`ShVCV1h~KtpQgs=DoN)c#i5h5o$6M zuOd@BsaSQ8{G_z@_=s&;)82AEL0sMkK2(e;vBR1YG!SvK*zfJ$%pr(1R!?Oz2df`^ zeYidb;nvxMpc?np+Rj4Qqp?~e_}QAuu~;NfgGk_%c_sk_XX3Droy*u4MMF759_%z< ziOK4&<1&+qKrMq9Zl5)R8ve&ZhWMqbL)gEw`{4z9hB*hry;6O zP!6BH%K+t+Z5KqqytrU^7h|bV)eb-@%#(7N45(_4Aok7{Luv2jazy)n^l@BR5d#f~ z?XZMK!G$7drNlQGD@|3R^w>ML8~ZNjb_;Z9OxXb%7cKta5k*&>_=J#D1aGv+!xY|} z?cF1-Rcd-&YwWxrZKa87mDsc6nfg=w1^wC3r)Z{koqTjs8jJ1jd7LJhKLTAq%tq!| zsC3A{;W*6wo57lD)_k@8*qVEEZcYs|Ve&p-A*;|LT)%qui@teZ9Yt8j-0=@`p@!58 zOK&9I7q@gz5(p-fxheZNQWbJ=_1!WLQcng3484t)WNJbbyyD=yfJK=8VEH7E9qveY zO%(pY@HYHI+vzXKQ6|^)eoEq#uwUI1|(Ks$lLJ=M_!4U{a0G@v=+&8{Gv zg2pxWFpo0uOYi#A$n}?fP>?9Xyr1)*wVnSol~Zd1M|}#cQNy#&oSI@WY5}{~j)yrz zOJz%NLOqzkcJBl4A6M7gx3DjOcyP$0nda+$a)tWG`AXkfsC0GXKFmw4Bqj8We>rJ2 z$cW6h5-P|H*ob9!T0C*<< zt|Rw17}ome(@L)f^{MbTubw;j^zx+8Qz#~wyi6R4UA_pFFq`UD(_0CI-(91G?;|pY zo%IjOWh_G8AVyLK`Q1@7vDOpr)KsIEI;KC!FR>%KkCA-f=UgpR5aq$$GM{4CxKC;& zZX=ivSsmJiE9ym>5d0lBTXhKc1_WzhsRWRBaISJey8B&E*PaNGx`QtwtUm~859EAd z)te6}dW1WK_ob)PXmGbwS#uWN+(7ONN2_lBFLa3C)@cgM|{6)5lxF2-v{(<<^Vl}m1kiI>n@@Ji+wffpo zxN_y0=_uW<`I~TjgJ1wirZ&pt(M>Tpb!d5xyFYk^fk~#N?A|n?e%I7$8095VBCy~; zD?MDC0+vw6yzla#wN9^KR`M^CEcjts!OkH797$s&f_=~mn#PyYoXy$6U1dqtLBP5XUj8b$(}2$fJ?nidukrx%5q2tZf zB{6`I7|HJJfgfTtmR!=k6EfeI&5^(TGxt_-I&}aSzk2;HESmjhzcqPmJlm-uMc65~ z)P@6(v8?EQ9Q|Z}M6T90DpIO+Cp>@l2501aZQgjy#R}XOtYWN#!+^u6WT10gv_ob{ z9eEoM*;*A+&Sf(PPPS;*sTtcULEn*@hmDY_>UAhNh=Z?Q7YCvkRHvR;eDTqSjZnrA zmsUR7$g_;wt)cT{c}FT6ZzMx6=?Xlf&f2qmNCy{9;g?9`W5_S7n}gZW)&_$LPJ|@H zA9He9z~T*Os#el3s54)GNh-ph8Y*dI7*s7DwbLtS7utWlWk%*v0&Qh*XN@@+59u^Yy0aODC; zbe>-gM zijjcg=NF~rUrI5-hKmPX-x7t6v7UaR3R*r-=OklM3AvLyL!BQH95biCe}`GCv{>GW zF!4#9JTX6&H8LU053>>)$7M>L4XRkkGoO+TKfjC18Xi2swrkjzhrO=FIF&s%L|lnU z&k^;9s@icOX-Oj$eMf@5OV-%|m>;4HzMDFH%(B&K25PwlvV2Q0K^naTJWewuRPOQy z5mu&*OzVjZY(b9^v51CWCYLYOwSk{aX!4IKL5B(-&|_M+4m5yoHQ=zC*((tPFqA(K z&F>|HtCAz-5vze~8N(W(SmCk7#eJ3jUQg}`56V8`P)?vt^%fU)dtW6d854kBz+O<4 z=$nkFn*u;Vrfti9wW8yR9;+*z6reT2a208ltV~rSYQ=A76y;V(ZzTgj&Z+fNKJFXZ zr~~);n9!FwLX`UbF#BT_R-tOg1CM+A?az#cC}GKEB~z5^q<@JpPfBKHjoEj9Z_xYn zPYyS~{?Q?GnTd1SGC*L&>H;4e-57vSydSu5hxaV;gEaHfqSy;+JGJzb9qtVu^R<@L z0v~^aift&+8@-%d-bOoc)sYI(RTs8 zZX<1sqmj77$wsH9@sLJzSmUKgFr&*&wqWY=FPYY~+L&O=t}}{{l+9UMeW0amfm-G7 znXNgq6tnL95a?IBr9r`!%V=)FW~=>zd-QxPmJEH+)tQtag$GY29dz|kzh2vmuM%1d zAOsKy{sfdSUe@2UD?MSf;l_ewko|#ryvv;XEPc3Ozyk=;_p=#{)=0DLdJWFH;{j{r z=rGltB7gcZf?-vP?V$bRt^*~3>`WTAc{&#^BkBHEK?>SR>B$c(LEqUl1&ZBduERP- z51jo@>kRiI8NY9MYqY>Jk30v~Ph~@hQ$c#4zX| zJf4+!h`%*36)ZPaH+5%=XM(51#xqx{dn(!SjNoxZ`vCXe{aWzAad*c(@mj8^yi zLas5_u$I=}B$@Dy)U8;qW|VqSF$3z+H>s4!J0^YrN=t6cXi80pOLzl?274RsQT+C6zM`4>DZT(g4Ay(s}lvCCE zYkHeZGJG^SSX5*!R;Qhw^I>(xOSqQO&h4v5MJw4opWFMR3|nWQs_Kz1R?R z7A4;x{ovM;{PP$T|@_Tn-vlS{L=A!)C8`cnJ?xzya-*VBY#E9$3t zSq2C=Lbs^%hndszm6b|hB^x7&JsqUe==oA*(+QM9XF`ll=(yy~CxV|6{h!X+mIEOH(Ws|SV4WPZu`_y7%o zI91U&P0lay8#Y-J_;l4;C=0cnxWXW#AFF+?yEG+3NM@}!7g#X+O5qmm1W zTV9*<8n*^7B!#T*zLeO$7Hl={9-3jb<((PDzJJJ_$wYJM$NUG)rn@f9Ias*9aUT6` zTrN4o9OsdF2TjMS(Q$vYE4D_a&Kk~PB$0B!J0&-9B)rA5Ac-!nDX^QrwgmU%t7Bf! z)>W5*w5_VwQVBwbJ*HiLw&zZ=&lv zu*cv=jcGdOZwLaq@s5ztfYVm99e#8~e%P0%#MyA*?y|lt%LntgGd0R-8D*zKy2#K< zujnn^#uN=b3~s#$e4QF@dtcK8>%1)9y^1ucaptfLY=0z^-i94 zIa2kS3&woqM(YAE{n`)n^#Wz==w9r_-B@Sn99!nUOP?pLxzjhp&=BB^mH$M10)L(e zpD)c?_PQZBveC&>x5Dx<9{4-e=VTX+o<0cV8eI)`LA~d$R>V#as65%_@nX@q1zDDw zsldx45*_e@L@yrN@%RINm%TpovRp8QTgbC#SE6Z_H~1 z4ti_Vo{8W;gWkna$*V_t&kE?jsCqd1py&PuJz82bPcJ)scdv;bE2q1UKgg-i!y0|) z$jwn~6=#^=qaO(YbmHQ&_(nGAnaA zLGdNvSDfZf#lgLAy+Eap1P-x4{E*%^#P1Vk?(J@WSy;49E{VCm@Lk<^;j(GxkRB56 zUvkg=kZEU{9eaLO^&igWm*;W9QoTP_BsCn2st zz9nXTcAeCVE6^-9f1@lG|4CL9SMSF-W;m+)u`1xxV%p6lcGgz*Vj8I%u$!E1AM7c0 zV6>6GUv6Gytcy`QYoTqqOlr*8Ib8md?b80N^p<&Z&b1WVcRSDSX+<-1KH}u6 z#6fSL^UTtE`soF-#lZu%Sf}Ra-f~*#3;Kprtb)q|yS0|W8uuDqWK2!^v7o5EWAQAN z`*2@n>jkRo%eDT+r}dVOpJIljjYa$$?W610uY0-h|w?W zu}*on;ooN$X6-S(O>g1Xxu%G8_dK_?bv@91-rwPD|Dcw_2E)gL6cVjBzjvm8Y*SFc zJS`PeVSy^JV>$y5BFa4)FsNx+X< zyMs!$4U4_XuilS-xHd;$oIm%*dt#SE_Z4hkzP_pp6Jlk0rfs}gPla=vgyoWPLtPF5 z{8cg5Vq|}+!4aJb2Ky-GymhL@TJ0Y6@p=^?Pv4+Z_1x!w^u0|OEJ}xDdw6UAXQ_Zw z)}=9!_}sg~;o(<}mBRMTSxAS8hi(0Yn;KxUrXCZ@8;1ANuXE?IeD7TBTmST3Dy5Mh zvU7PCMWL9&V?1ETHEmlcHmzhc!j>k7NTj|Vuzo6K zcdMTa5zew^6k-ph2q9#oIM|2gS?(GQG;GY5Cb!bIg#SZjQi@VlepGLgj3>(rs;HWl!djuRbnD zQjG>=syf?S!jHs{+WMl`_~*OBtUU`ME_1tZ4ljaXA!Kt~m^Xe~ebrr7E5*z+6+-7r z%+v{p@jJ%sQ|R)=!37S3$9{P{L%;g@#RNd`gC2>tKZInqT0eXAZ^nAX35cg)K@Z9Q z+&L8z?~}vSS05|0>v5~xfV|Spt2le9hO%aW`obL_9|S^uRmbF1B4Ij_kyYgiOd&*hK15K8 zOFy2`KBdaF>qm0Jz{{RHBwqHYb6zAPsL!zUPE+5NPSf&FE(lO<>{rj+gz{69y9kA7 z8K%tWnT&gaBpS1C@#!zMd^yKrmUaeszUJ^r=*hYn^|R;AqM7y<8@wkOMrWAd+QSuQ%@5fx+U=xy-5CFN@2 zAo{@Loxt&vggaX57K}{^5IO;WzKvz8?IofZ;Se(#$ZfUQT*eZT)5B`TtU)fbBUvOT zD~ldiF)~>%Qf7zUMzdz9uk5vy$|t+SvN$fxl|Sy5Y)x77g9tQdufgBOZ1z+`RU*LBByxZox)^^FnYDh%MB5Hd3LawNa`HZH&S(Lh!Y5d{)p+bks(@}dNGh{uVo#>j zr1BL7tp5~KP4GF}=hDH6Bqb^KG%KDzqHMpJ#IIZ&xnsF3sl-r&OjXdI9(4FVQ#JCP z8M#qq!0ww{Z#+U|%UfDMQ0Mz0%u(6#J`~+FAQq@&h!cR=dVGn_H}>LUQLlini$-{o z+Y+?p_yP!bC{s5Lp#h%}Mq%iIfaI?}B+#J&U8r*LGIlAaK?vy}doc2`8vp%0u4eo# z6R*RdY)yd+E2cl1LSO*Xw^QTxVi?-NrlP2ow0Rdn?8L+;S)>e>_=-n!5_8Knt@px4 z454o$1;!~i2I&h^o9`P*QDP5E-Y>d_TFJrFI<;bTc8Krn$O@CQ((<(4qXx?!?k0>? zuSyHDG2q_Z$^ooOeF#2LOd5+M$mPGSOLgdQsQ1CYV{7>$KRhm^c*SgDZh>LYYWGj; zGEu3iVKkn)aCeUw&23fDwI^-XO6Qt#@1XCH*%XR~Xxk^&q72IhBm=w&<29>q_e%BU zrlid~4Ks|RQl%lGVo)Qn!_xtoPRe979DG?N^(~K;>}LyS#RYzEVp9ODk0mKwK(=75 zV%%L!s9M~kyT5O~O)k6J`vpH`as}LRTpw+}i=le@Z!wqEm6MpOfigY#k6rZi<-mSZ zxk=;&m1`6cyu2CqWzAlbm!;F}iThKBBF_ZrDzq%tr={AjJm&er8yWtzcUxD?!Qu>8 zl9E<^G;`zb$MgHPTh9F2syQDk6Of@V!W4WD*d3rLufBd2yvVP#nJ{VcbLY*4N`DMH zyIO)mooI5YR{xYc(*5|+_%WTtZsXLqS!t%Ii?E+BrtPIryAiw^Q<)NSgI}h)k~qEB znK-#GQ7&)pw9C|tt+d2nUZf#~$UGVwIV0vc{*8E9wGG!NN}L(tkDTp(Usadc5))r1 z=c-srh){zvR*J3=LKPJ?5?KAUN#v;L;YTS8(X(~}!?u$eI^@Uj`l)Ob=o94{Uu zu=7kxnz*HkCTckKn-qo1LBnLGnoL|I_%Qf4BSyd6K~*!Tl`zxAO7u2-GLcaxLWO_V z5zMV<_U!RdT^kN6Cp+OSr5R9=Zzaq^iHKco`k-3lB#Q^nk?+elkSLHkdSCcsq5leY zfz&v=%?k^r=RpU%6dl{&g%^2fBhoo`O_EH z@19q%dGxQD{XgQTzg~Rh41ql`HR`!AQ{4;7I@iJ2l9%;`tQipANIR?@yw>*4C+ge^{v0Y zuGbe{oIy@D9us>xy8XWA3FF$fcQ>P<=`R=P#YaZpWyqBlLS~eYncxA(j^`@w=>Cas zoj)CZfAji|{bacA0*{6vw7E&B6DNZ;=yBWns9$J59NE;TT(GZkr0Q;AB408BwwGx` zb-$17J(|$75?{W@m`t8$MXoD_!eGUo_84N;>qwyH`3S zA)xk#j2wiisAr?P*TnlVTY&E*qY5+2IH#g|23ukBt)%6eFjyUgS+|w+Q80*lW3s(v zz3mKM*dQu{hEsMhOit<@o^BqQQzR!)x_u9cgBQ-`@}VOb^l)!@am*QeIT|J==ovI?YHFwZ`xXA+pH%L3K?NMq%FR`! zSQ7=cBq_0zN-?6ADtCBc$u%1F~x=!7&k1viS*z9<6Rx z%wAKDHU<1Y2f&c~kyorTqfLj8Ywm(+4pFgLQu z$=-0RCyMqi3NsxzA41{Zj{Vxa4ye6WtJLY!O>E@cU8<-W9XGg zcy^M-iiGF8Gf0H>k|g=M!T;gxtpl3wzrTM0feR2Y=te}47DRG{D5xLPGj@f^{FN5 zu@eGDU}QOi5mAxFB`hIrKO!QRqcv8DVh14^tWT&MwDBf5TtYfBvH2Rn2BIgXDCX5b zNXk_YIlTC#^6OunZmTpq0x)(xRw6V*dFhuvi>0<{g}(JCRq4ht2b~pibm-Zu4=2@B zmAd8aIdrQO&l_3qJl`3^2G=m>Bez3TXh(ohWJr_pzU!Oul`vS;5r)1~deWWBjmiFa z<$@LtS}NwRN2bPA+?~I=A+e8+E*}&^hxG+WG>f8Xy$VY6ka6DaaEzzvvCx~9qjkBI z^IXW)GK7hzy2TDI+W|U5>K|LM)PumQG?*nsuVh~-#}zno7^fS?BYfOV-3_aCUXO&) zWutAqB_@P>6m;fo>m2I0Ik0!!I9xgr;d@FgzEODjZ+}P;at+_L>GEXr>fqL+q!#~y zc1(-7PY9vS(ps^S4;+1(wTHSQ;l7%#$%heRKUuZB=4{44-ra@6chQw4r}6=g!L3<& zL(MXohL8G|8r(6^O#_C>N)n45jfB!0j#a8GVe~T^b&mL4%-(;=*`6$<8Hmfa1!L8C zEacvSH$P+7xssZUaP=eUfcMJxOCOa$(PV>HhrBbTl_pf16`Q&Ugz2?xdjnN1plpn0 zoaFM%IS!ku@0Q!DtLqd+7<2qLOa3cfWzbi)u7aUjGqKw*m1u!LAMW_wmatdTx;J76 zv<5<)&W4U&Y&4GscI57Cq-MLG)Um68h3rwwy|lgdJ2v4j&$T+Fb(695I-p;4QRqMskYc)l!Dc zu42W4h%11GzVz50Z8_%c!@gPv*+22|PfX>*A>O~hOhXK=RCg>Q$G?GL0P5n*(c8Gc z%+0R!wu-k8*96`}i;CEH*Z7re(VeJhN`TUGA||hn^dW`G#y&`e}`t0%TW-q+Sc$k*2CSfboKu+Ub-1Z6q+ z4y7xvN5!RAi?&~_bw1VQ{R$C8_n$9@h?nRMe~cx$9YLHwhs|uAh9voOeOgIh%A{Z5 zb$#tJPchOo8(Y4#?gemXD61`5ce)>H1c{fM>L6tXFtYs zgi3Xt7bP`N)$y_SeLvwUvT6|RHCn_k6%@S1KjZWXz?|TI@ht&~bts;U@~fM7kSS{y zGabi5d!BF_X0ZO!R4PD=M8Z%1G2=8OB6a*Iz9sMYa#hb^=DcLi7HbE$7glrm z*ZBufBMJv+tEGpBysu7$fZ}lHM8U9Y_K4QORv}UE!dPA-_p?8);|WWs&!Io= zy011izn+45lBbq7`3B$N$lPgSetH}V@+uiApB2eVUE z#O-%GNnDH9?+aw#*z<;WoDC^RKlzGDXM{py?mo5ke294amTspxEL57lwbs5Bdo9Po zcZGG?aQ4HDl~gJjn7SjZe%xHC)@sPIbPa@?l-4!FZh zj&W$HO32l{vC~V3J3I*( zB|M<)D>EB-at7d0cU}-os;>I*l_+|7^92*Vc=Nr%Dw{4H zB3J{#izp74RQ?ZXCZxin-j@d^#~B8HA%MkC)m|=x8ROT@KO4_qB_M6FmKoBwaTa~Lws2ir&ee*dK`2rbtSRK=56{bn1JThamykP|W9~oY~tBG2t z(S_ku3R`zP2-zsm9{CLR92Y%omtfYr;V`C$H*P z!v_VYDHZ4%26`9UR;3YkP7-*=fT*i%zIOAC1`(d8)!m#qN6zbvE-nA(xi^0GXC z<<^o?-8WNaKH<7He&?gD3*c(yWW7Woa31xw?E$!`vBX!<^_2@kagQ-`=VKrVd|Wy- zvZ?U8T>hi3m@tJ+*Q=1tkUI9JgF1)FY&%F#iRHW23a{r)uf>yg%H0T@FW_MQ$VOdm(*{iYoVFhJh(hzpFX?tHPfD)>YnH4Cq0&x_;UsvcU}(^9G~rb zbS-lrAc4k-);l*AcdnJnrp%t+*b)8mRD%~v9E-W@E&f^6DsLg0ceX%lQ{kGUql;`pxh&_UEv@s65&`tkYy3IT zx4rg=x8#8lTcCWp$#S}rBHypN(APrp4|AXZ#vttF$A1CyyT;d{PZFbqxu&(Qt;;%_ zFpfiRiq09CpuQ@o)HzaGSgvLDQ?EN6_e)L9eM$)yR0d4f(gbplI#(?wqI0cOx3vvI zQ|YOUqfRXrbgOIdxBIjZslwL4J*`rvXp9`mLfwD zYq$Il%v{pfrX_cbGcyUQ(lDZHN@`ovwx$vF%gA64W$XC2QAc6UL}{G*_8?4J%KGZv<_l-86Un8molsaA z1C24|@bf48Vg2lwOCdw~UD&fy3EMhJh0qkmF1}|evrt`~ z2llH)_uJPcnwXL2A2PpC{FjLE%S34ia48m!J8D3H1JFUkbTRXKH4}!32{Mo8OWWvu z7|j>P$W7ZA*hco_%OBf5a$?H3Ccr&mvUy?loR-A=d1_)!ui0y_e|8oI?Uv_OeVv0F{zf zyE|uDrfuGJH6h(c4#z9KlkQz&^^jD{%Ga`3a*;yHUyA{suw*FCpFcsDY-;*`firgC z@GxD%+~V8!2^@tj|9Oq@vz3WG%TVfCD3uTSP#^~xp zynxcS1n=1`#xo9r#TLgX(T%ZOWd)1igwl(G8o$%9tlZ%z%3`P8G;9L4eQ;>|qo69_ zV+;Ap6tr8=idf$R>XF@-)5DiS1`s(ws_2YkD^b*|nE0%9O75~g8t}lDyyQdvMOvxs zxXjimQ-v;6j#G8acsILj;!(1-l{DI<-FWAyY8VT~Y+fib@G)r4Z6WJg;|p6=i{_C zDfQjRmB9iHFzvrlL9Q>CTet}<9|ARgqU)EDe@i$rdVp&i@kSzd99)BP!Y&- z%LHC6nkpZc9n@D$;ph~6J%&f6K>w?C?nUC5>Og_Jr>70Bu^Rl~@Zdg!kQ$4scM)Z{ zc3mr3py~?eLSAC^ThFF&LHE?mg~aRUmdm$iBwhY$h@fk~C77Cx8a^3AtW`$^QgK(S z$Tz%i4s(ukheA+%uWzo%a{nc0+r{5IQx;i02k!9L$*~x!P2Qn_#`Kgthb#_`2!*83 zz12~zVFKwrqBjlGa=*5Yaimv@$+>?EcP;Q0Ow>7YGmSx7sM=>%Nq4NC>L_O1X4bz> z&C5G(tMi~~{^|SU<+Fir68l4PcYNua&K47wMeQ><*np4It412KILthmoM!ICq4lO$ z&}}~uJv`5#3JlQZ=CG0P=yMY`yI??MNS(5P>tQ!_hcvDG4=L%+GzA6#TFNv5 zPw|z;tImV?;j-qk%TC`7-W$`NBK3=BP7GpuLz!m#OIw?Jz-2H{_L67GvutcsFW#uw zzv#ezXF;$mC?Ab}%$CQSTeUki(Q&@Jas7zbh!U-drXyYCEj;OSsz_4=$;)x z+@*58SJUP`kfyoX4vHV<{Bdxst*i@D2}auh{IA7HNj&Y76i z{IQ_|-hl+^fsZP^a1i-1oMI@g_-2)itXXn$L=v^8t#wype%;-)Gk2)vY)X&J+6kkk zLpQbN@^0N60299;4@(wI~_c0kBv#SAC^Hyt&NV%5w=sl&UkkK zWpi@AdYYnPceUz>Vcr%z)dYLI9IN0>_>g$y1SrmqLace#7?oR+rkX=$7Aj9?sWHo?-t59YrlZx)1-xQz#s)`i`i&MMo}CN89~bG#b; zSuyz(1^i{&a%lzWhMS)icihy!IQjKOi%C^O9F8jo;+zcGs?i}q^t#Af%n zOIQW7KVn`B)P2M{H0l5D&{Cha679Pu`!y1Pu5ida(c}lk)D;?@D{N`)m)%rGb4P>~ z^D*52RLe3-xVs&bhg0rW+L9g91`*fzMea}s-@8q*d*^6N76`;GtiHU3?@G%mVFSUm z;;Xsu6E|P>lb8USG0cW9 zd$*$4T*~x%m3rpq9Saj4#m{>F?D3qr`*~V+!BO<=aU}}NQIk1k^a~mRyaRoPUAO87 zOkcimWV#Y3tJF>W%(aEZvoaHPs{HuAxN{cjjTj<%ZJo>0r`q5I^@DGxF?ZIISDhZg zsLt0C*}BHmfPBBmWa;Q<@XeG~%}nu!J|`qGkp8*bYHriKTgSQl-IWs4(%8|@R=q1c z3lXW%PNCTSmNq`@0NVUi;P9Q=joU;#?C%wa2FBykp)6b{XO~TO2(!wpqD7||S$oxz z8zD9=s_Uv5uJQ=j*brUvp!h8albZ)~gwtIzAmX5NA13PV{(#G@Lm-kk%Pi%5J%Yc! zrB=}NL0D*Ml2dQ;o`u@*@#u0UB5k1*x#jw`_l>0frl;Of_j)y>Ix!*=@OL29yV-e$ z#1XqRQ7_`Rf*c?j*3JjVqPf?Zp>9lVAmRzo=-(03*ymOk_4m#untDEy0=se9@iQ#F z>fN&1YYzv;*Xf6B@jH8=zDJKF?>U418_m2h$hJVV|8gWQOgDlYrj{iGS$w7YnORspT_$ZdCWFVL*$$iO zu@8?N6W5oLUt8`nyp$vAPej`2NxUdhj?T z(!_9XP@q@?NSuonA&Fz~uxq`##EejDkgv|NML`6GXf+;nQ|E-LqSRtn9To@Ks%#td zHk>kVN(y&%pTM4MycbfBz)w>M7>eFD>#a>OqJY?QH3SIo*^p*`OWX^o)d|bwhz|{f zMDZ1&LLj0TFt+Bhqu_I2R?~&?1s!!mYdoQP5)`_8A2ZP1yu*8tX3Zz)fE{BqGE)c? z`$?unti4}EcOn7`bGtkjE`+rP8B<<|lzCGXwdAFF5HFgY+++)bmC(80I1mDQkv5E+ zdXGzn7!tbZFa5Na$xoS{pz`gh?mUbUye5)CY}c~}6_fQ(l=_`+x!m?`y~fY>z3*(E z?5y4k_1I>nmKDdqC2I94^{*Viw(qYSstY|MiLKE-GR3~!=2IuQVf$3Jtr{4@ytZ@- zu_;^|vt^^a1HnyBxD?CQ{4Rdj3X(JEabbNK;gG}vn#`4z_RLv+) zc+%1)F~jvS$oUmvV)JQB{K{cXngQ;0v#K<;IX9tzh;agj$AQ$h7dn3)$h;h?@6E;U zKxzZ&*OUtS5J0U6lT#W@&lXT0#HFd?v*^b&zl9Ke>TP=lDw{7nOZ{p@2#fswu*QZ)|GAH35i&PV9ow`uzs&O#0UB@(oqeK#~ zNRJkB0Y`*NYnD87=gm3^;uvMuPq%Z*^{9Vq_rL8aD+o&$gfr;|=lquR`?DRFCUjR~Um>a}%0=eo@Ssw0~2~)~vrNW^U`(&P2pq zmV*AhoL5x%F6ht7cGOj)kaN-Mn#yErKK(16xPHy*dF0X4Wkq)1r~?(f+5FGD+uyWY z7zFUx{c(qX7T64(lK2;eR=tiVPwtOQhVTw(FHG-6O*1P*nEkY&Lm{WoSmG&n$8g*2 zVb+xFYi}&Mw1&sC`h;{NZ@XT#=S^gu-o=+=delMnKDS@KNXOjPr;j;pShAZe%jk6|?KR8CBtL(vQN zmthEg9zFv_U9;ge30>g*c$QbimUWlWar)!pKwcrYuEpDuU6RYjUSx}dx>CRr#t`0k zYkza3?>c{$iPs`3v@N=V%yhb~Im%M%r?Z_D&+q2MyiUMmLUx1K&9*i;r>2Pn2any# zYPVTjJUu1KTIM5KPmQL%htZvJWfAob0jYZi`VOgXX<65*j$>3k<(+qT^sK*o{FCYY z9=*AK2Mfo%<@*P#kQpZWvVmhPcYmK?RdM*NlkVQj?)0lIF)IirFAJzCUz}k%ae6eT z^f=dnNB7F(3^6&j{tA+5Gr1&>G|HHU6J(O^j`UdXz29+0IxUa?h0@$oU7^y$z3lh6^O z$@Mm(#htu>+ia0BJNr3DX%_OR#=aJCN1f&qB4V0ZE5h=WXXG8<$|;uSJjRMJH^7<# zRK1oeEnf+QzNh`@!MQX>)z~k@d?pV!Xue?wz&2AIH}$pAJ>+lYjfn4u^FK5xaZG9R zy_0xi?xhEmt*ID$6r^dXbG1g#JWn=CIWW8nM}5kP@iXqaXTP}bU8yEunrT5RrFCp~ z|IG02?U7u9cePlQ{#tx4$wb6{w#Q#y zYYua1hD!3qxg1!(!Z(rVg!VDeKbQ|D|zv#WPkxku3fJ`Gz- zi(SjS!)onzEz(jgD3**#>S01mS~~kfS8P&2hkZ_$UukNqiF}# zbPF0lU!ahm5je&fTcZI>Qc67#YJ2`Y!?zYzr`RuLExzXBB`1?{ONRA7Etpr0%L2r# zem5JTFln8#G;4kR1z~i&RUFf#IPe#NquRAs$Z{pSaQ%l12`pDuM_9;&cTCYYvY{x< zI5?Yrxb~f?Po>ubBwk>u<3RI{v?fo-pfGlvGU}&LM$5GtSNs$`2r~|}1rE&!?#iGg z>m1}m85$arToqL>qsKt?%vu5RW=h`YYy;TcJ*gb6@lZ+25DTfjKWbrd!Ws!Mj+fNyw z7t0mJpS=42`S90FHxCa>(mWx-9nT=m$m13Ja@W;3(j-V6gIVhO!3y}{qp_bxz#~2f zK@RE`3@*Mu68yc}{57Suk9kKgmZ~>+SCQ0Es3vorNymDFmfSW^8dO%W ztBTWs0TMit##)H_+07QZ_<{XY`Mdiq(?)d9ezjk< z(XQQ##?(<&zk$LwMHHV+>AooU9l#D^yM41|B60+${Lw0prj{h4W47+7=|;^Wb0JD4}u%416b051NNK+{y_E6M8}05b?T;uSE|r z#j7nTBJo$wZy;I~F%K&F!n?02uDejTSAR%UH1#I(Tn#MthHf@>UJeyNQfv2ubfadeY#BcQ>ND`L^fLHr5}#+55#SI}0^*JFu~hV0mTXR)QG}HV0I$cdl8z z?Ea3)-!wCo&iB^4+}1)J^eW-k%yS|+*}g5j-_Dv&)19|rJ=;iw$QKLH2g0(JO7EvyL8tj4F7uu;#`?PMSj;)Rk7NqN&9*C*wUW=DB#hfHbS1nLg1ieIKxsHg5= zDk8VemWmZGw%^LrcS-g#1vx!q1oQn2qEwq6LGV`A)yR5OSW$hzxd>3@^HS0LQ&cP6MUvcY>bv- z-mhfo#L6E%5s&>gu=46&PpSPsob*a6ap$;rYWqTIkX`acliM=EF2wxhQ+f(r)vOky z=~Q@HxiBKx7DH!Dde!K5hn>6`&m?=Um5;yaQIwoqPRmd1S<{Se{(3R{?G623gTjW6bofsTV=;2p#o#cGu&kbdjA9HiWTl_ zU5M_XN|xFqArZREz5Cy@kODfGH~Vu=1hjSkYu(yf_S3@}wsD33p{r>aum9+gy*!Mc z-N2l;7}@Q^&uTI#UbB;DG%n$}UWMgH)mb_ws8;^Zul?`;;sW1&EadD`Zf|1#=k5Gy zE&MMa^Y4VJBWWb?*4y1N^L078E&J^5(hu@Tlt+_`#M6`zwlc7$rpuy-c-!cheX&r;A;1< za*`3l|Mf$DXib%CCEc$-;Cl1ei|PtxROY~ZzGQQ`%SOK7O|(x;@L%k*==C2obPP|D z2D@WoG952zwo@H%`^!D3kZg9m{ZcTVvAm&K;7x596=2Uj=rhhA^Fd_br3+&vS_h%N$*tk^tufcvJne9}m=nXlM)BNQe`1kNDBU>ZtEg4K zPjEkq=X`cYEKg4*SPaKY%rCKB21xBaH5;kxDE06lIY9!TE8P;ddv@b|X*=(dDI6qkQ*vNLs9x`clpM zK-7JFsfN*9*roSNgP=mj^#gFy>sn#5J>7lI z9N?k+_=(=e>E?(KhqO6bnCzz(VaQ(8IH$^6r&)Z;VO`%^zsI6H`x^W;U2l(RVAXNIF~oCNmcyUWs&1fOl`=yXp*&I#DcCZ5WX3)A8yV zZB2UAkv6H<<9QDfdM*)Bf5}a{VPObzgi* zH#1*iDrF3AFF$-94K%m4lx?5{n^&tU;{?+S;shIpZ$-e&bI;t#GM2xOhrx^ni5HYGg!I-af$%6#OQsA+!ms zHT}yBhKEjtN}!Lu&~AkUWYfiGk&Br24VYD_j8}kR z3(fXz1#Am*;i$VodLP|iCaD1IGp0Ea!atTi{Z{UuU5K*9pl;!xeyax}YxmcSv4}U; z7$$d|jw@FiyE#vU?wv`}rp4z;VL^HI|oz+S?y*Y4mH6vg_|>G5a`fGZWk?#Gx}lbCrV{ zItgbKU9ChkXA|73*P6X;=1GGCDE)g?!8-zN1OKYDlvmPzO&_yzg(^9<%{cJ4In`T# znn-%@V&X44njvenNIQu9RoaJLMQc&d-jl%JY_y)3bmcuR6+kHiIWXDpU^&VavD(tP zsp$Mcjgsz^N1>fs@%wPJgcK)|UpBFG4z++D)E;QpwKcR@%`I~sRNr&D()lI&(k;g` zYA1J%Rm``YgPQR{{MWn)-3yy$Z;T2jmE;xXzSZZZ&$1t^z^iF7>ZA1VBvADcvRyvI z&T5xHdFqy?QyZWMYyO5#bK>8dOI08|4PZF?8X7w$$45Pf_T5fsdYX1LJ4ywgi&9#dKszW>ZH zd_S|w;26w9P_S+35Pifj1$NG2JyRp*%^#n$tAX3=Z{Ws~Bid%Z*gjst%+b=wm^;8q zXd?I0&`u!yMRen^5IW{ydxbw|NsSrJk`q@z-^y-(@EyBW-ZOI2NWX)r_hPMAoZM=2 zw)ZE9z_Qq?d~EQvqr`vBO$&1T z&6(Sqv>?)IZv>H&aCwg1Ngrt$So_@HtJZm;7e^8b=VY<7z0Xos;>|%dVAnBP|3L9A z_`c$T;9-0~NDE8q(<>R`XpV+s-jN@Xcg-*#aF>b}%653PB(c)38bn2Vd?GA>NVs6w zzN;~yq}pp@FVyI0S`x(OMIHIJyA7$%>svM5;#U_vd)`wm7oiM3j+eX9!K!t1@Nk`X z8dQs>)a46W4C>gOImRkWjmOynr?DHSge7U%fr}~MY33`;&E0gYB3f)Fy9PRf0rVu! z@}D*{+wYAi@$I{2KlGVVR$ zF*x$V6FX~oN%e2XAs~3Y|61uCtiNvpWVIIQBxG+GS&f-D{@5&ZJs!JmvTvb27n}J{ zV*KfujN4G*u?!EuXRu}aTWc{9=hePsSkrj$2^bQ&En>US6&`$6yamiKZBwdcm9l~L zv>9CPq(MRorO~wBZeG_!25Rmv%&vm>zc-S1N?eYxpR_88jRdEOL+)@BINv z-@4N+6~NBydJS@_m20(b2~ni7ueml+gE#5ffGhgI8!ftE7H@EDJFp=+cfO18tmOEwv)7%H)%gGg>W^p zxrXNQ|}Xy{$lCi&9KA0Ejn1TyU2&<-ByRIvBw~3CBWonJmK3NAZ_c0cB^xRIiNyoO5EdgOK!T$ z*D$A2?15dZDzO2?9h5dyf|EJ*N2aVc9dYSF=^#%+7f&Vi7hK$^KzQ}XP^_n z-c$cSu+y)kdFExbw5WF*_L@JBXuAI?9R=wA8p10dC*YQgI`!4&PU`<2w!=aU);@|~ z!)`Zz-8$&Dn^y?WJkPJ&57cG1uYNBSL3`^4Yw4CoxT{5T@*+`>@5lm zY`s$wv-3>1ucXx)bE7iDdEY0>~tr^f)0nchHTA#PYdSu{is{8^Kqcq|sauSuag#4T|z46%9U;zU2ntX(m z;7QiJW-s1&hR9q??sxc%v`t)l@gvUZ^i7QE-&MjY?N~&I@C=R0RqdN$=8VV0& zlrPizUcXK0JSZt$Tax87Aht!EXUF%6(cyGGFIIzw=|5~xhXAIBUFH^aY^qNVf}LU7 z^*L%!DNE3!*Z5PNf(y;~6hBP+?p~WUdoVQ9t46yA_AQhxLHXHe+PPo5wP6wFFs z1!*G{1*^56`p8PO4R;mfJ?eH^mzM;G(2{Lf-E4^;E5!a3!qW6S0Zu#J>pDA5Lu>0y zSfU5Xn#MTe{Z+BL?om+kNkJK7HX{5zEAkRl?Hd^E92b4Bo^g;|aW)TdkjnTaD7aVL zbJrzjp|gqCR3%{8W$f#5Udm9wIyoIZ+5Iwi4}i(Xum0Qw_RjM{Wy?jkHL6?-EXeLR z9p4wn)Z-%($t=eKin6y%)>Qf-wR$sD8>~C5#8DMlj$A`!W~8I~8!-i!So2+P6Fbnm zl3j2OjTQc``Nd(AYjnI{AyGa>3yVl&R{=^AY0FDhs2tN0|0Vep$M=5tA>E@(%xxu( z1~%c3gVnZ6t?&D8_R%?yXnNVSMifVSgq`>#0GjV^yZr>QZ9a7=)0RN3^=@?F5jITi z_hZ*#e+qx?#_MdOtt7T{*y1q78sy3+#spmDKjqd`(agtxsrf+eGiy>ZP!}vDu+N#r z^NjKJ4C{Z<*P<25d9wDJ`cUXgpZHx*mGPXg>OodjRsSg8#kYdObyUNP zu|SMqueq^V8`6veOgG5&#s2(EYuIQZH-+ zg5+nOcYXsZ#>m$|cxnnF{bkmmu;LKWQ|Z4gJ2}X!zmD(Wapg3bc;K|J1$Cx$I7;r5 zcMJ*uyXb*OTet8$%ktXoxvj>xQYn{XP=xv%$mptfhKz%!;lk9y7WknTCojC~YTdUc zBViR2+v%@{09}dX=ZJ+9Id;;P>eZtinb(~LKW%yEz%BCJHNqz?pIC6mECjqd+MLf| zGJ71dvP?9UBQYt$gTbt;3fvq6C&rS+CFx=iQ z4aZsV@s9b9-yZ}8PubswC<5UiReZQm}Y1{&Z(@mF-srhKN3AvU# zsx#HD$CUmWzw?&B@A-sC`tB_MF_^CCizegN=C{QhyuoV!;6sO_#;D-3tPpIk^x&H$ zJ2;tZCnighB|@ZmX;bV2m}0?kROT(AXg+z~gXmd~Zg1uWG8$R%Ei{K8BSVY@Yc4}P z){(OLy#JfA9*ZB9>JW^1AgS&|%2Y@v6?8r__DQ4}I;a^nr|fBlgY@-Iu*`0KW=!2% z2LItSUH&avm0L}XwxtP>TThu#9}!SxZNU5s?k-8jl1S#BMiHg%I6LXp2{qDHUtcpl zt}}|{?`kwT|J%YIRBMKIn7UNm0qG>_PM)%1$Ee}diXvzfG2DBUxer$Belby)D~3?< z!Bp;&7Z|-1%Y;ykd55@b4j=0X3%$^+DkHhIb1ggK1pT~^Os~b6cEbz0a6*kM^plHT zj}6Vwtwz^MhGNIIKYt-9*_}eNmNLd*Dlf&^upG6bGQ=x5!z>Kt|HD%LVDaLT76wyV z6+IEUUgtn{>lD;U{Z%@sc1$uGy9jH?>26l4AQb}TFC;VIrpqZIidOvhV5aZqdv6I` zn*er1po>tm)L0Qi7+AT;v~OBh#$pJr7F<9?dn!BEj@;fFV6#?vpPv+$-N-*MlVNG$c!jc zbD4)W3McX&3hs4F9yvk3UAb)vD-M{PNSlf{;2DRnuQryqg3M3za73;PEuHF8wRT#IMx z3BkDp-`%$A>peX0eTneWvGioi;J_CZ9-#^=tr-THrU?qV^Ja$`DB4ATZAA!Hv_AWO zje3miF$F3?YtY0d^y%s(-0g!P4jqm~SBgO-KVOpdpwkyZyIo*S+Y38ts#bY0gxT76 zBM?WNF5O;afCK2jgPqwF`@udIy6n*s{9~*8AUW7&AtUHMu88|Vhfufuk{|7^c^JcS zWwq;)-UE-xI!)qTp}QS1JEkeuN}EH!ouzk*a)S*Bw5%lFO+6%2y-+KV=v<89-aVs$ z45!xcKo(E5ti-xUq3w24vm>9qqFexM%%;VP#4sh0DqOar{=^Hrj*-(ljy9$m`q*{; zp&!=e#du?lHzehC*iPD%p3www7{*m^9RR_)#;<%&zsmKaKF2Z6l*^2i8pCu4Fn%B9 zPpH%Eyv3xb+32~}kx#9li4V#4#5eHXL+gti*X6t=IMMIVt5~}${Dr^J%ttyNzw;tf zt>x_GlvMZzyTRyGH?h3bJ9*gk@JD?ivG(evr2afyU-}$F+ffRTb99P)WJ_X52)uH* z`=8ye53SE{mtnVIcw=`#oKZ=k)1a_?#q(Sd!w!zQN{_xNP6i+a$BPxb#ZTYs;ncq7XUO;@kK34k-d?SgH*2q|!ZM8(KGbSe|aq6m1CFyiOBDg47 zzTbswOS(|S4DDVVakj*?KKN-+r8#pIzwzoa2M;&F+pjw@eH`UYtB+#M>8H)GMRQ`4 zidrvKcpsg4@<^jceSIPcB3;HLOGhhv!nrItWFiflrIA(Wsdnd{VTo%?yxvv*zct#( zX8^K_*|Cy-hnV9quCJHR7GJzFpB2$LrOa;0JfkHI$<8I3I|V+K__hmN$1Gr{p29cM zcmO2trB8*NzA$&CX2@5_U7|imFdEqfOV}F2vOZ##_G?H~SI+b%PD1;l14S;k(+5-l z4(oCh5_#y2Gp8_^Q_*oiX)f0$@A?J9Qt|uLXDd2Z(qQ$miZnL)#I7vJo?Z6L>q;kh zv2A?jJ`YB`%>cAxD5fy$Mh_=b?tcBRPQa4|GM0twu1&9G4g5>5t`Rn4g3iW6CzAk& zpMi!LW0Hrq7ygsBy_ElyIV@5*?5%wR2__=R%dAX*?}Jl6cs{2K5H64TLzRBe!y>hn zL9yoM2Em&#_7>fqx% z=;H0@Jm-a;12;N!_C>?K8FuBKtU>kd;Fszg1Vi4whhVY9vmKF+NIZSBGV3d%iYIRR zfX6&ZpY!{%kR)|U*12+2b;+cab?U}}MlaM3yYRX*%R<;0J{%V!|E8^+{kZ{(uX?Y> zVP>poIwa{d*68PIoY7+5Ser3~9iIRDv3mS6e`Ux^I0bOoW*XZmFVSPYE8j~=q-Y*&} z^SN2m83JfG`JjE2e+|^0Y79GoO!dQCRqFJtn|hcGzmYkg?!z=I6E)h6zEs*tNfrGp z_F?bvN`iY=Wg1qUEA{tI>Jl@PdRir?0@N6+I}5Qn zytLsmrS#}4KL~n^S8~7At2U7?G^m%UeL6pRV{5D33%j|9V}n=xj|^Cg`b$(+%ZFaY zgk0#7)xeg}S}gv>sk%lD+0_ACh05c(xf+3|gPVP`Im%cWxRDGyz3XSDAfh|#vA=;y zUl7!In70St%RsDtU7FkAZ<=oQMRz&-9labal0)ACztw$h-FNnIO>f)OQlkE*gx=rl zqN~|@dnqQ;W{o~ZPS~176kte4q1em0FPf+4pKrYh6Gt|s-1khNDV#j;s#3r^KaWjp?Wo}B`VNF#XQjRK% z9A4GdBQ}!egDn;LKYnqVC&7H9XT#YJMZ^_wCOl1sMF*ZsoWA)8wFy{w9RXuCz#)Sf zoh54Z?FikcUiPs1eo9tD9_|FE?2XAp@@$E>oopB3{JEdfq?FrU-dtCM27+ZNs5>5)niaF^!(N6>qC~~?tijSNbGGrQ% z_ii$%jCn-}x-wP?x(e@P6uoc0_WyA9ol#A-UD}Ew4}zc~pi+W@f>fnSjffNlr3**^ zk=~^fS_D)?O6Z7mk=~@Y5J02`2uKMXgh1$lP!kgJ1%2L``DU$|^}MrIeq<4Ha-XyN zwXb{MWezrs=GgMy=V1M!Z#H=UiQ8i9Ib%()sP~JFqV-W1h;*Z!PSO)+UdUzLl-)ulJ=jYPzu_x`4ZU)u5o2l0m;MCuu737?1fsqd{V-Xt4emYm)S;xY zCOTkv&S=;(cmuWHGR$o;Q#fxe-ON$(2p#<23qZj0u- z$JdeH^XbKpqr9Vag^8sBh6TR7UOhG{QS?yaj2UFFZ?1P+oBmD2SA=cP5Fcd~Mz=WIx4`-cCXC0yj7^JXxG(+%{N;vq4P%4HKK|zi~ow zi4uCm^e4lqL(x*=jLd1%2dM7b6R~~teGfJWC5Cd7e+fRxI>3dGjktZ!dXaxhg#Pbg z(Tnl_IV}3&|1d1NF*2Af_4$XIg<3^LkXbI5aAnrn)lu?kg(o#v+OFyaIie1ZtbsI%ip~`bG1(hpZ4}pjx^70%O#R68UCEA=h>T zWu)Ig9LbUlsiHsc4GQovU0QjlJ&XF+EP!E>FW_hVd8gh_Ji_cVP%pQvM0WR?WB*+0)e7va4rNG3MRxo4WMre1Pw@On2P8zBzR67l1T#+ME23mNdAuIFf;SrR!G4V&H1SYxIY zVxE6LA)m|Gzig{`FK@W4nPvmGAd0Ce#vmWjf2?}DyD{g{v5JfxMa2miOl@y33C)`M zkWRNJRtDtW_rjFfqFy+Um#qgkc>HeNbU8&En-|=-XJS7FgG#cq~A5B zN9>$B$fmT;-G7zr5RV0Kw;Lf};lpQrJklov6Hh@;S_u|+Q?aKduW%f-Z#y&svG+1K zeAej9G&f1D90?4X>V*_a_2T!01&GMfPDEpRy*yiv|M5!6M!ItB5M{5EY~AO_kN?{| zs36%G3T13M?D?g%Kir4886HZjbAR8SvSWX}vV!$G|SWla*}= z$Jy_BymXIyMR#@l8=qSbSX;70KK>~pa_FHHb(J^(an?e5uY!(temoziaqtVB%W=Qt z`K`$iM=boZVPg}gJ8xrhYQ(`GO7kaUp>OeNHzLIpp6Kg)$m_<(*q5cn@V|7Vcqg5G zVTrcuV_q*Ok>Ad=nMM3UZ&qI3ql}chmfoZ;#&{^UZFX9%Se-J+$DK0BXCas3jnKZf z0z?xXTM4>O~G4lWd1$PmO~2dRXNbswMRPe`wsf1h1DyvkcB+smJsy zuX-pA?Nl&Zr`df{vgFHR5m)p_yMrl7De-bsqXX`SRAWh7lZuJ?VkXy30m>G9QUsWc z=o7U#D`PnxG-3uj3dxGxZ}{LoO{-`<3?YC!`s4FHK5lI>$V|dOFXy*MVk~@EsKw0O_KC0?oUnMH+zsj=LyuXh|807yF_b0wh zrJU7~uTr*%t5>$z9}Ru%!9EeuRt2$G{HRh4nwwTBqihBtuIxCoaME#E#k@E$(jata zEO6!66n+)zdptIq4b0uJ7Zbzl<>@6ssEf7o${a4 zqDfgdw>65K#~<*pPcKxzFkG?3TCq=$yqeHArUn~>1v_{D9zneib9FGzxogt4 zF;_E3c)I&rfg*n#9s~VcPC4s)P9HHS{@{9Y0UcY*^w4>0;HR75oji#zv^?=+SCzP* z-UHydsu`Po1SAZ6dkPGjKm}Wh`C)+rOY%Nh@5*-VH-{1(HnQVcA_fNRzZX^2bY8v1 zlehSU2Xn4}!RO`9(hCQq1m=Ywwi-h$t495rgJ8lPN}Di-7QM4q-FrRvIeR6RrCn0S zuf}?PU^NSv2(dyWEP7|FLaVmR2YrWoS%r66r8M6@4_bS|wYJu5Z9%tT%WU%|4NT;k zA>hgwJ4~VeOHMXwvP5VZnd*k0&|QNkwXp~C)}WQZ?j4n#8{^zEl}`C)P~6e!Uq1zF z(w0hW;G-J!22daE@A>TCl_%{1l_b`^-u9s#Y^WCZedv1mn1x17+>Rn-2@^_mE!kVm zcJd?174G4df+xp&Fm^WEvZX`zC^ zXKB0b$?|rMX)A;7A6*a0)9i-!rzQ!Mu?s2b=XeuGM7=a+zK#Hde3IXw!iL z7*(@7Ot&>I*508TyY_G=p{QrB<$)DEs}OHv^R*iV`4rH0BLT^H zDhag1G9X1MO@J@%Yy{qAMON&*1owBbqCTZ9F1Grwoe^({U7+6s@YCGu7Sel_-sMy@ zORbU!Aa-<6LJHM?zP7x0TByouvr*F4|DO#0t33Y4_d%Bw-%y)!e}5_-dsgkuzxkTm zP@{a=MYYVm_dl2OUzhg3zUK};MF&%Pn_|mD8-42Ee6>u*P`*49Ws3Rq_}^Xio3kos zPqX+${v|c2_J4R_wcM01H*qxe-;4WqSAB{$;x8(}t?QSZzr_3>9+- z&#k#JBcOWps5B-p#tz8aOk6>BAvHNfnwpy2#;uZ?IHX>X^HPK;~zdHwI^1MI;s%jGPKM4JtTTz1Y>95KiA1UD|$x}@Cj z*I8(vXPZ#`FUI@7S_seGsk3@PC@GP3QWN82q;Ak1RCi+Ym~a~QzJLvKWc)Vcx!9X``9wBBw`7A&cw||+3C!;AH0@wt*?U|6xw)aa zGS9={uD_bgh~J7Qv0e$CoPNC}+4sP{q6q}+5R`hJ$<=u>@Oa`U>8+ccptDT^h6FbEN7ztQ@2yn{U3jI zE0UXX57+Q9j`$qH^N+8|6*PLH1+~Jknj`N;gHbuQ{lM3#*&bftR@8f09}=Q@w`X~9 zstd?#I?B@e>hNpY?MO9HrvrLz(VcexkBR>8H}UtULF%y&4Cg$v z$hYv{Re>TRZ!AU@XX3O~Nce&x5Y zT3%niFQj@vdgnOJ!3=Is^bm@RRJTEl9bS<9=fYE)+fe4>-)eZRNH{)*F6xq3wtEM? z{Z|!?w!^WM0m_Vjd;gY<2l`O}yzzK-K<)1McaCtYg^wwQb5>&JDgQX8%{eJkPRI%K>`YZ0b`Te&z8ni%D)18}Vs-xoh_#ih&RC&Z}TlpWm7mD-Y`uVLzfDd>6 zxQq_op8*uH=}$EeVS`>ACLoh2}A#$V8cbNwvf?5>;Ih>1`l1>n-)$Dif17fk?l z&u&L@jIbQ}X#X1~e^vM-1`6Yb)qgMaBGU&tm<&b1&(~6wEzn37nKYY*m6g9<^i2kO zg8ci>{o}`YiWYSKEJb7Q_{3P8=y1@bXPMqe>v3E$|0r&(RY3TBQDlJjfp4xM@qV(^T6lH?F zv16Bu{l}pdbn|4@VfSO({;c|O=8J@505N-gs>&odRLDyZbVp!G)AMRiG&^`+dpt0| zY_wLrK}tB`js?e~@pu1N!6}K)#goK`%VtpTL|%0sf6*73G(J~u^fC%**qc#BC)zEP zcz+fz;zfrYjdo{EbegF9TCQA3xSfWV{KwCVlI4I-BwP>AUOds$yTP>dJ&O8sdzM>< zDtm<<9^HLA7(}EPzbL=2z)rIguUY(NwXA)>k{U8s_N(Y^-M4^${_LV#KAdE~msTXN zKRuC6(y5@;X!;BKIWqPU5gZFTqgEYL-aaXgW6b)YeMU7eHb2Ra|7SS)CxH<3@I*Sa z(s4>BDNIl;T~KRWSq~j~H$d7Of42U(!^o|~EMRPsnyK^gKeoKrv=?6np>EARVhH*- z#P_$~ocnol%j!dA?9Bg$Q2xHxmRlzwH0ceK^x1#IX8$83#8K=(_-V77-rrvEf6rh3 z|4)-nQMAv5>KXdtzYzfbmE8+JrAi7|1MGvw$h&6hv&O8JJtF=O6~sMZpt{#Lh>+?R z7oZpj@iTEeLtdnF=Kd{r%#4R!>|Fl;;kVT0ZgNxd9xt=QrVKMaP3rg4a8m|Sf2XBh zVM~$AtVP9Pv%kDJsl1c3vFrT<_dma&!WmRZpUN3sDC$4_$yL;OJ>T}P5k+bFyH{#D zqu4|&>|LO+ZDyP8fd|d0oW(t#$``DNb@$p$?xPY^K9W^Frq!n^n*TGA1gWP!IQ-C& zME1z>-&8*u(Zckgj=i#pyRz#Xu>P*0<{ei&2{Y2k5sofrb{BEwVdwmUni2rU7sZ$G_va#`OW7JMRdVoG&!mOqMRiLZ0C{KE zH*~d1W5W!dMThCm@B)XV)pPT#LZ2bFu^dToEJV}Ppi@dvm?O;uM^|axRc)~m!!sGe zYnFg%c2zTd-Vh(Q>X`s*UbDs@s#vY=>~ZHvkFT=z{RE>OEsD^?Foy_DeqKYt0^!E$V&<(O}`jlBSt-JRLtPJ>$HN zmVZNsdf$cByF8sya=d;S5Tg$Gnu+LP2b-vCN1rItJYXvYYk1siVUrx##Ux@K5eTNb zZdP0@*sOX!0ORCnT@tjU38?p%lgCmztAsvo?hjq~8Ab+G(AuS&3qutOfhf_|OEEi@ z?r+hG?Nk)b<^nZRJ)hi@u)|?C<3p>GXXXTh4)fcqT5=|xjx?e`}vt_;%E@`=#y#q^yF)-E>#UdGxCg{Whnx_c(QDGJf)!+F=LpXWqHGn$VmH zIGCziJ(?^i+cXMP?-!q**El#Bq&d3b?f(V*T?G4mVd!ovmL_09usJQJ6~2=-=+8(8 z>*tsiXx>7||I!DN6PlyRyIEmNmm>4vcQTqcYSH?8E2%ln0^S}?0v+xDN)sNOeIJGB z-+YP-zPt$<7D8a2(TWUtzs}>|IzPi~^z}S!siH+dc&kGC-JAD2K<;)({d#dv!2((E z=)f_7q}^w(22*0@Da~i*$u)UBzxB+hR^a38uFW7gbgG&loGe|hEfLoYU;g|F1i>nR zZ4sLt)`i}(&P}R;3yCYahMlY6`DIR{+C8H+jv^x?o;AOvk0zg`eTZ+0C$4NVJ9t*5 zFdL2Tq=+`YQdiE%xQ~k{o`j<|9jhDBGpY)_L#yYji-oI~Rtyfh&p=bQg+T@9)$($8 zji`h63_i@*ncA*kY3`e9$=;|xE&c6RAo$71cD27g3;!$<8UU1|oZ}wCndAb>K31yF zbQ?U>63$P}z0P5bY{pTbB(u9W#UTX538Hr?ULAh88_7BidB6a4ZC;o8iriRWUonM* ziZ@2?reUcTHJzZ%X^Vu@&?MWp$6zWBv#-dEy#2Sevk94G*vJI2{!#3)8{Vf7j0KzJ zsT$^{l1VS|u4&Nl=Gj4?pbhpL;EO4Y;05YFb*m$e5t;}Q1K2WOWYh)>+A9lnR5zY1 z@UsZqLWaD^C?gNx-}KnYB3?jyYQ>NNqJaP%7R|i{q1^z+O&USu+Woer41SLN^A6)-E4{_nL&oY#U!8qo>kF`Coye1>it`&$fH6vO z__456W=Sxb(e%JH`L3_l@e1C=jSoI5XVkRfmF$R>qh4jwbDsO;*htnM^mK4%nYrU` zeM|#hn>CGTo;ud6t2Dj4{_a5G=1yLu=EY^~boTi+4OatHiTc;I0902?N&pUt#6DL} zxkhc8@GM!XNNGk2{3W8vU(1xdWQLeY@>m>TUm5oa)hnK;T`kCVoBdo;eoU>tnV69x zY8usCrRpVLRMM=^8Mw~UJ*8XZ`!K!EC2dUN)CD@V5}$(nwDuXu9&`ETx9w45(SkK5 zQAo#E^id{Y&PQ?MExHi58U##IA|EGywfz8ceFv+CKn(NQPOX5dbePvv8t7dUJ6`B<&!CD%bv>XwnhJ`LnIGx5SW^E%p?wZ=yu|7&n{AR+OYFgzt@F53NV|l zHR7B#F$T%9beRA$N|$i%IP}Z}A@k!ifVOg8w?2K!i7HR^yOG{>(tS1?*rtA@z9%d0 zk`QBie0CAH^=P!Yh0&_V{2*kpQ=*r8SC-u-pRA(B`C~~b%12u+3#L~ys~xa>==MYX zZqj_xP=F!>d2#OY5^P?n3qzgaYqEBz&Rx`U4Lr^mv$z>VgpHSy18 zxI@Nrrf^MhkzcNnGY6TojakQZ{%_D>Z?VBlo%iV)2y1PmXkLYwy|VRfY66#R)*j=* z85uyul3z*7S}<%s3EE{7C^cqcUgPhHWxtbg(X2C7lkK(AJM@2#HJDviOIdEjt=>q3RoNbZZ%dZB_1J1SszB*XY@(v+)k zBr$&C^si)qMy#g)VTh<5h?pre;-qEjKQB!6-z%?@KlwpGVeq*MF?hK_ zjfc=mOpcV^!^U7TeVUJU18UhrcUB@rj*ET<`o<3#~ zNS7LyQ#$H}_#QYW3KiHlJ*PGe_mk{?%G`J!2`Ve4CY+996)0_5f3&!I&T-~Gex8Do zbl%ugQQmy9Gby_BLSPfIFS|@5UTRJb0u6xQF3}qHzg4ABZ6J4~kE%Fa-xC=7GV)XV zZcO*1V>cbsY`U{RbB9&y=Rfyv$9}@np<6{}Z^wP#72~0Sj|urAy9gl0QVWW%ZLm87 z$DF%AvWjcAESv#<0duC;(#lR_xz#aYGpGbXgJIIk#)a#VV#C;P?5oX}VrhO6U(u)) zZlu%5k7md2oMjiGm6h)Z?NI;Nv=gBCq+h}FAVU>i!<=7JnMRwwNtl!SG=TZlJbbu5 zq>=8`sV8g900S!R81+aVRS9_oL&&WMH}0|yFwPx1ZmxJG0_Nm0J~3|Yh$I8$moD|( zGPgO}YjsWhHk4+A$J2*9jP-lmHO3gZULeb-ZH1`9K&x&n2bn7k&)V?RY1quP*ZwS) zc}`x|Al~_2dCg2P?LGkJJi#-yK!4nLuRz!}afN0WOG^f$lY)IF&h)YaY26Ri*`l~p@0zXHvN$`Z$dLo4NLoGXtpiW8w zG&z24aan2&`IOeaIpIOQq7|a>vygWwzM}WZ8(_i5y3zN_pp|k4P6M};FZTrN93rPA zD-|6NAJ7u^0SOlvof0y4h44zmO!ldoC+YO|&DS@+zrsuUq@vI7-S1W@%VG-EZ=Dd{ z)6NsDuTGAt8+tANKfQ9>b}ch%bi-iEKVOux&z6?k#T zpqKRWX4kq%D%*7Po4}TiJi#-2S#EV{V*xxeE^!L#=~jzjmPquq+ev9OzqS+By~Rzp zw#~O+`SoJpEs5$im84L&a!;ReT093b3 zZ45yRUbl&<_gfbl@CPAZ9V2nPw_0?qOA3gRNIYi2+9Mvdrz4-RgO?@V9u zF}cs(2wCICZJoA4s&dAkVRKHf&@73uGMmVrsWajvHyfz$`H0ZL1ij1updY6$YXRe( z)}p-BD#FzW49;;E%#~Fe#+25s>8%a%gZc9ZY;m7!i&dR7oV7RxhZJ@6J zP0E7wFkk!@QJ7~;4zr)@k_ygZqrr5g@gzdIqAN7h%PMELR|+bj3rX*Wi_C}&A`^2h zLRV{V4wmhY&)u_H$WE60TqGDR0iC`bR*~AuRAIB$@E*!dkCtJb;m*hanq0Or|3;3u z)ye4i94ah^ENQ%(YdlA3y z)^{h@Iets|)Lv|%T|3e0@FZf)(R1on5x|&#HG`_Fr6qG>Tihy9qm~kiGM5-V;nVPvb{s`f-5IK<#?##4jMN`j#j`;l6eH8Sik-W}kZp;T&#Q z0<)+P=+v-tvaCUO6j#`qLFcP#g{doLj1;Td;kD0`Y#uCc3RJV-g|g1d#SF8iT17H0 zh7p?Tz~OF+i}WbLbiO3FMfx+uz=5s5UTl1Hh*$sFFz~(RnB&wWm=@hyjMu`3E~h=; z4qnRf4Y)l@Iu5igW0zC7Yf8`Bd_={akq4wh_e1g>2MUl~hY zJgC^qa%G9&#=HHpBg7{lztweYXo%jk0nayZYzKFYtHp?+cS?tro&@6CyR7iYU0iwP z;UWF{>&hWR_A1J`^<(J?-r)%Kju}C+IruxsSiciYI*vBWC}G#5k%5+9 zsr`&ucvJ6P_%D|^4!W;LDCd|v_MF`VcG49XsO8a2 z*LHX#sz?>^xuW3koJsq*Jm3o0*P)6nu?Ds_YE|*N)iF6*ACptqswe-c3tx%ra1iN6 z)vg!z86T+;4z+cfPd*>dUZpeb)@ou-1^2TSvw@sRDW4UA9Ty4xR|>xg|Knt1nI1O|o>@n$lU( z+3~j9CsM|vPdr2cY|n=|WQ#jm5s;f}z3nVIPI|&H`s*2iZZkU~5^5PddOSdr3{BsvG;M=%Wc;D(a+`dFdR!(6`%q&!Y~f__fO}9gngL$eEM1?!@lN6Z6V8ZEO^`X~zmSBBRvcUfoQqt8;{;DiLtvB2ZBC z)7lYUlc!7}TiO;(Xl=tT`-}MbQ|i`^GwS z>MW0N;eW|m_JcLfUGGvGNA8ELW`mW<%glMb_3Ci{&fW$SSS+JStqVceoxw-=muYa1~X^*3l=I>(%% zcqf8n;o(lJm(e)&VD{2@wYeYYtKrIWG~B?RIiTkowfBCPQ{}p}<+PThlw5Q?O|yTB z#uFs+K?i@Gy6G3)L{G?b>q+-Ef}1?wzzfpiq*X=0(-b@V(8R5YQ4C?*WZ%CEqv#k; zIOCSW?@yP0o-&DQZQ22ym?*1Xf0UKQiP(St+a@GL-RAVi{mBdF$3=p5#=g!egZT!# zrpbYthQH=RsVK)j>84fTGB&a8%5(+X{H$i*->FZH+xv7G(WhcEa_%_S2=%|Zuy=uS zy&cWRhZv;V1%3mYuZ*n5R}<(;f3@7wd-o&H)2Y_yT69QZ%R%?c?w{1~#2Ml0xV27I zh|;JNV+WypoyQMV)q)cX0^GYYzNVmsqS5vbCy<-sO7&SzQT~+eVjp=%? z8Bx;#*sxkgIJqYgaZiEI)PAATf6>cq;6u1?Sq}MnH~28?qO8eovO*yEZYcSBR*+A_ z;psm0d{B04_0ThQz-!171Q1LKpSVb5Y}9AlRO+9jsl71GsD#h;BSe53%UvjpXj%im z?uEtDSbTWi_AYNl_nCsy!u9H*@8(hg^9}KT%w=TGSo#Kv^yszp+KXg-I|7oQM*V~L zl}+E&;T#jHJi5FIJQFE%R0b)JC8*?*2jsMMElehb`rTI5q5YkVrh%#$zwrg7jfe*< zEH(;(9|D#|0U8-9Yt|JlMZVAXOB#(f$(4p7_JZ+gkR4;u?e%LcKI4XCf2b2zt*P{{ zv0v3<3}eeV<`uQx&6KP4j6BOGQ`PX;Lvo5geHAoS^08x`iZ5oyMzSlhNpZZNf=79T z=1&y#wu@7ym94vMv%s) zTu?{ywMw%;50lSyX zlbky&U!0_h&9I`X2iunoL#J3jX^)qT9#{IU)m(G00eq|&dJ0IS>8oxc<+&QFM&uz# zZ>?;eW*AdSv|>f0zR?AN2LLz7QUKs2lp9@)**2P2tgHs;P!X>5>{$2qVH#J?Ah|_^ zt=5W8??#DTm{GVsnX>Z;yVhGxBEIY%(eOlwY%Cil}m~(`|p3cB`sT*uFBm}O((x!A8!IqTq+2La16%BpCjn)hg8*3yuB(}@Ns&OY>peFoh8R+AEbkd5xuQwk1lZRy=o+5u5+ zt7dwgP+Pr^7{M2}O|Tg}7|j4x`Be{Z(3=GRM;4-{tLIsYco$cWMthE5a=A`X^X?b% zlXz#ND=CxGO9H_p<4{YKsY%XA=IbXUL~Posc4*2;P#IYw!e`#Nh8-e1>VArxhQm{GX9dGy(FoMU5S#5eSTDsXt^ z;exVR7wVZ_|N39~;dhE@>Q=*Fbh;6p?-Waz5VanG9QxqLJLoSX`5U!OOWJ~YY{DQ9 zv!mtP22(@__tbGEy2+^H5L}+lo1T&J6@;?csRVb*fBSUsvWSerHeTFjguJSftMc-* z4GM&L`vc<3Ls)B~+Rv0oRN#c|ZC_tqmbPN|0U82qHX_#87mCEL>@|jiV!Z6zL`LQEH{6pM8_EJa!dS!eP`;LHgHEjE z75IL6nwxTz=42|fi1IN9W*+Di7vQlFHr+ht>oIv^6XCm*pHl9x&^328%hQ(bn^CA4 zdS(p8%(@N){MAF9KnZBZ;*O1nSLF`Bof=sMcPC@h!2?qNnj zLD2E`2gKls@ekoHprlJ8EUaa9oOj%mXEYC&SOMh4Z%m(6z5EH|cIqllvvs2euX~x^ zE#6`!8@ZPB?shYck+@1Vb;VW9fQN_E6-<3h>2iH_9tbN+{`N%G+;!TNU+{zv&@7cje9we>Xn(tNMv@g6r8bg_Rh}v@lJ9{ z#+rSpX<+_Sb~(_V8YEERxCfyi&HGW$Rsxf7_2!G5#vyL#m9nmVlD3wYaDzc2GHvNE z+Cf&(#M6G_R>{6y(}8(1u#X=p{Rg6w&%GO!u{`mct@+))h@m=r@?!(X^t?^6deX$8 zbHPxQBdO^Koh8($B+L>1yoW-xYpXd%4iuQ;T^wpY-4r1y=BO{}6RgN|_MM47c`|!h z1k}82BTAWsnYy#aTA)gEZt`a&CwEBavC61p*uJ3g>w}PrxibrvCtQV&z};+kAmM&K z=i@qlUmo+dtFL#Ibd=M5%1hB!ytk!>y$u_r*3Z97*&MYtY0$2G-7KXuFAg}D^Qlg_ z15#2a&YtT#q{$G5d{7wz3fd`)xGyF*O$uGq^bGyt6+fXh=`|pay-w#zw;0@A?>@LM zAtM>7dEfN?Fl-}gH2X}z$h&-^oTJgK5EG2^h*R3R%pV$6c0Zto+UUS$ z>^IP01I>k}Nx(f^YJDE7{{qiA9WzTo9T6$+cm5PI+Yx++v#2Z(uD!ZBttQFA!fEZm zhA&ASRQkkx0SrQE+wPu6GmUq7nNs1<0`+1xD!o8%DUR zarPPebLdooQ>eJj;51Gh(D3Yb#E8D`X84y%yz6$nT6Sl2+U7Jj<6CO(lJl_ZkeLaF z(0lEY*EwdWO*z6XNgwNDeIJ@S?952YvlF9VW*uAM(t*)JtqWgd=#_&Z!*FDn6ttgKfVuTC?K4X^@bVfsgg~bkV9ajA;a{#9Uh_S-USqx9_LaB)oIu zTJ1Ey^AKBOb<`RaDG$DGD-XDSVN|t0QoV_VrvCeqS+eWW09^)1Xz5$#|1bweXVDh$cK{c0&^G(iw8Q+z(QZBn`Ml%c1D8+ED0H85&eVQBYN%Z8{3qS}vXB zw)e}`8hYElaa-JN5iQm>B+{Jeb-g}wF`XvPZKZO4q5bt>!_>U*qb}x(XP7>b&knC0 z=bIm{@205M=e%$C$Ds@N0sQW-`NLMy--DBwIcz5tMhsK^! z>Z?(05#f1{Sf-j(oKsw#9uBM<#tXh3Oq+jLbX(ScC9n_5Ko{VcU2pesuS523^4gfJ zPcP5NgH!{ypH%@W>VvZm1wCZd*DN6Lr$I5SgZr7lhHZusrh2a z#8c<&iSmBC0VOvdmHPpQ|3uuci4J09%$NI9lY%zT(WT%eGXb+as?3S<>L?^TB2_KTd%F01H0Hz?+BVC zx;wTCKHc@M1*)rD2E#;wd;LUW=#r+M@FI0Q9T%qamX*!4U0hxNB@tezoRC8;7AheG zJGfNMW>qp#^{1gkzudvcZh@q&7}jm4!yYjA2)7 z@&;2q$zlD*0iLsU{Q|5#em~S_w(a~THz?cUYNzINek-zV-{g;30qIS;;v#`~@Uf}u zoKAdN)*u7na)`t0SKAtx)`!GU+-~%V6HdxB3{ImB@Z^2E85a_Kio~e?gfNqPF};65 z-E(&;z+|%JanZPB=y}DcYLdr!Wg{JrLv_cop$!mUYI&Q zTKfDnnoXz|VWmMA4)aJH+k21~r6A-`v&kqFO8%q)HJ&cs&}+YGUJymlv5Mn=f3NYb z5z^qfELiS~S4$zO>Z;i-;i?8cI#@8kwl~UF-B+^bLP7_#w7rt%HLJEL)elk>dWm34 z`cJF-92IU0=Q}wvUZ>T4tsmb2O>rY!K60L)SoRGl{L5a+@NCY$luo+|dAzYspsuhH z{`G>e+y3)ta--AK`^{PO65&ndyHebDU8)4wc&AFW3Gn`?A7`R*t}*nW zia_1xMoQP=OmFC=vEsdo3OfJegp6039>K<{A>2u}@sQnZmT=TUo z70BuVU)a`>_te`ou9UcLZ589Vp3KH7kTR{Wyfj^};+$diapxDFVM%ki|K-a?d}|bo zT>qD%It;6=e-5GP6L<}AYb8>0=PU~7!I|au`1ZchC@FKgEVWM9*?%)oGwSD4h8hY9 zuk{UWteIn?!kTruoXgrS{wPa>f^cfV<_@SOnE>Q*H|gec)L?W--58mr2?uWv&GLdN3UI>1@%A&8T za)GIG2qbTd|KX`4df&af5s$l!2HKL^NCuBgaocBBy?x|^eQsyBJ5UHhJ*+kpF95RD z5z>^0J=6%-XJ+vk(f#%JHVD=`K@`L$U$x?04p+riI*rxwZf1+6+B5cmXQNKj9LCd$ zR3e^xrOF3A^Yuf+&<|(aJdh|$hmw}B4&(MlGJbBwW>T3{WfaafL%~OWeFib>VLSY! zDyqv_0v+}4podj~pr9{)$v;;?pIXc!m?Dn9`n+jGZppsZkenskI@M+~82Ka1dPFob z*jdW;L(icj;n*JF`ZRx;_wNlURMqdAVkh&iPtxf|A3Rhdxe@(%a|&y&vPsx$nT}N} z?+XC+mIM=#{oo9OfK0w`;}d?}+wIB_k_a{?6i#p~26s12>(s*vpF|a->fJ@HfBNN! z-q6>eS*9yH-<2kZdpm*W;eQ?*MP1>xLX}*&Ucj)A0B({S93hfptm;jxUbZ^QATxip zFPENM4$6}o{SEtCwR_%k`+4>3&$))JCZs}E%^sbFzKjP~SkCN;I`vrA`=;{m7c%rT zLk`FZK=NwbwzKihrVj82QXKe$1|_pSFIGWT#U_AFP~Ebfk-C!b8>;((CSDt5%ruf< zjTc-gffx2T;x{j7zIPGXoZ*woskyo)`|YVDY}dJdX8|anE5Kw0^Cdd8pcmVYERQy? zi>yTZaT?ti8X8G`0~nyNwjM3gcMcUEVuRkdLvo?c7vg4513z%NmVC{`M^Vs7`{Ort zd`5cDLW4XVCCC~mw|V*t4l#)m}emz2|e~ z_s=*JN*roC4kQjr&0_dpbu7uI1MkU}AND5mK4d*?SLdTb(>nSGNk;H~#<=$xzfs4_ zmE+&wek|f<7!#RL;0~IyTCG&`K)^My7Wi}nkj}+HybvKB;#YAIc3L$-Gs+XtnJBU}HFDBaQ|UmDHjVk5P*m3RL4XE*UZm>|SX8 z8bBycNK*uokAiQm?}n{S*uIeqTDsK>2}<)x&yN&!wcTij5&VhKohLm9cmLDAz0bt^ zBPs)kT5(iMN?hZP@X8j1Pl(WO>UU6hYRf=a+s`KFr1A=#m?vgtRYy>;l>WxUThm&&0=GWxBkFE0l5iM=kmJj`nw1G0AtQtBu6 zHz|bK!9C5r%{U2T4Ob9%2?w1)&qus2Tfo_7?{Ze33!Ff%B1!p?SN`2;ouB{%Z8<+3 zxk~{-uF;^quX66QFUB39&-!j@yLZF*-B6zsC?u&$8&6ZRXeT=~UF;fO8H+S1halpH)k3JvY5UWjU2@U~UpTO%#J z;E|QQ5R3L#rSz&|IPS7?mG*VTl|0|kJP;P>ze~O&Fi26tk(NW(LGcmqP1Bv4^*Twf zTw~#F(XU=_{PnP>lHqS;GQ2S%{AQD~PgT;Q@#(yfn_jQBlSMSodiXEgidMwYNx~nb zRFpqzZrd>#4|`4f|JZxasHWDg?{`~KQBV<)t|FocMClMnR20zd{F zpN+xIGm{~0!Cl&v-J07c%v}$aFW<5q=ZxhBOfs0J+RH}hc{i@1F66|0<3RCz3=!Hx zd5S#U0rX)%idAdGiowGaG+Sp#7w0W!Q40NWv7xwmlm_+U6jb$c5aMEJ^Cjfqgp#TP&Y{8sy4+Fh;?MH8fZCkt}@G?suCuz*#St>0}X$ENI)JcoT0`wpgfVN=g zIQQKIf2MdJ{T1M5=}o)`Y|J9gmD_##$tp3+C`7vuV%k7-CW7E#mb-k?&vsgbK)s_;~pr_`rD*j(#$*=JGYbNvtff2UbKJ@X_^zpTye``@P$YG{M!#-4*k%-0T;v?(i5=m-1a>Uifw$iAT8MoC? zW`?DpIuoGi6#*&eg{oCI+ucXhTmQM%WB-)yhF{f_T5|Fy9#^vV!Wb#-?ea z92zwj7%QPq7!vR-7nVfubgMWE{|#r;)I9xI-Hu`ITzOoyX_)?rRAyvQd&!C?ApH_&iTflr`e^MSg77;tW)r{gYWlc{ zv)T6N1UhIwd{Kt%xvmyaU57kK-@os+&X1qu7&=bCyfUiS2Fr)dEEw&f?BvHyCt_@y zJpT3j_?Ldfkt_v_gtTo@qA;JRakaO|6l!#1}{KALmtKPtb<*jnJRi(cJwYd`%7bxCh${#R5B71eC?}% z#v~<_wMZSs54G=>D~gT;w&@)Mq>ud=#j<2NR}BAg2rmaTGq0i7Z&O4`IL8Lj(PGFY zmaVZ|(Y1l2Api6gwVFhs-!^eRv$Z=1qY~#PwhMXTlXvm2V{HvEGJ8xWa#Vr@EVs?ab$a zI)OnU!c(q@d$m?loix+}rxk{U{1gc*XRIk6QjwMb-~fUs7PoKF5`k^L%TnYwb>9!T zExJMH>^jkiSnxim)^j;+Hcj{X2eG33u6z|Vof$D3veC#h*|aPH?RaTze-n7nM_znA z_K&|jcIl?CUWAZpdH{p!i{qDMjdWUoVkYukjb0gl(WpRL#900piWYxe{&5g=jQ`EQ z2-?9{HRN3&e?2;uE@e>;2gH8C+uwh*CI}w+Kd0c{ivn=rQ{;xjzl`yjSBqKL8J&Fq z%url^gvjpL*PU*(G8Zot%bwdkDTHm$mj8LBT)Br9LQZ$JD z?}5yhhadeRGS5EI|6c%^e;ua*EGU*!^1os8|GwP6Y2mZSzyHX-H)!x*QQ!aJG9duk zI-?ef{x2-pt_-41K)Oe) zrcR{We31Za%xz(Je`ngu3sv`PpnFKP`ljPs3$T%u60!}E0pgK>hc!H33YFchhe49| z87KKi`J#+Dg`+6hAEG_5t!yr3kJH0++ArROZ*-WS(P727AOO&+9ftIc6-0>K6}|v^ z-Lh~Ut61W?Kjc8{4~|cEMa}l{G>ZUPUI@~-^>99hRmXDLddRG31>Huq)5m5ubx!9^up;eeYR zoI^rW4hPp^#&%ST4={FB&)(ZmX%ux$jG;isnP*Q+_HfD#%$X@TKJH>rUdBsbffwOw zy2UU@_o(w~OrH6ZaFTZ_Rle)Z@WPGY_K_d8o7rATJa>RT5clrEE=4LiXZ9ei<3O`qwb#jF zEjnrz#0{f&i2@i?1d%>tV{>SL(^icwFewV3kL89SJ4X`f%DUjQ%bT-$3#_$=(j^(V1t61M6qQx-ldhx3@H%-M>PXZl8~)b|T)fS~_9vRK)Qka6=_8CjL1q zDYt+nx?=P(;?0fc4a}_BQl0=hf7G&TJ?2{(4koMm0pM5t0<(g;!ZCixXxyCSd9M(E&|UqT@tESmut3 z_-Kc~`T`#NBI$Y4(1Y&ahR}-R2dEjU6wgXDRmV|xDRho;`T?T}0YSf#eJV!M{z5O5 zP(qQutcSFZYyh$IEI(+FRwR$9p6kijQrEz$oY_=yo8~nwMZ4-LLYAWZh3Sc!FrF84 zCQVbY0lwUod*mZAJ?9zYIwyl!A9j_2kt(0cL9ytw*n+*&^X%|P!M|}$@gUIS6yZ^jX5dr$J(a!ZM42mrvO9YdwUry{)HlvM_ z=%-EI(?A~ztyUs|7cIr2)qnUa!4TDrif;$MUs zXz$iQA;C?Yjbq6((PB;yjg?qlqQ4IQocWCT0C_Hc#rPXeX-YZx|25K%k;$nA{M?tg zX}r%0k}#r86?~5sP;qR$v;%7fN;7$f^fg}Nj$vOo{n+V3&Vv1*k0m8$(s98M5HmpzF)Wm@fEe%yYj8%N=Iwue-J$v zMpCrcPJfQ>eY?oa%d)Tp0Vt4|QsqXE-9o%VtyS!_1a${)=yXz|)NYZH1%5p%(n`hA z#u$o_;SbyQl@%_Qmn|uk>PN?xqcH&irB9J;~qnD;XY}KR!)kFouR~JB< z@bxI0F>(LXfZrD5!|TFpk$>FwePN(egGUQat%-kDG1O1zxqhdg?bVb_FhumkP{?e} znM=W)KC*;-q&W$9=j)~Q*Wo(X50Q`b^PKDoP?`<-4^TP%TGXetQ;QeWWHl^OnbhY~ zQ`%A&IeIw+?bz)l(Qn|WI26(dP~$^yf9rf&sRsO`_8`SNDY$(4olFqBQ^v-jD65uj zwbP(?xK|caGXTYS_yWjoKWOW^{v|2vBu*0`GHSl#{n{Nlt7h%UbPoq?0xKEZC;0CFoaMTPt$N6v!G)fYT_+<-$69~HR4UZ1wC*qXw*d8mR^M?J7*^>h8T z`%mhg)VYBV;~w?ApP`exqIM|Sj_LPtLlh&=CKCs6n&oyIm)1i9T%(&fLkuP>T&@Q7 zhGYvA5i*y)xX&}y09+<*I8KD{7#zd?ksd)vK+XoTh=NCxfRjy^oC>}zweF6i=n|(V zvcfiZ@MjOsNyg_LiWRBV{=lvbP{Hu+y|WHt0wASX@L7P%oG4SD3yf0R;GM00(hTFJ z7gimC2R1z)`KDD|o5f-3ITyY$nz>lX==%_kU@=yB=?+ zfACb^r^Llbr7ER)n;>V|qNllp_megG5X;7xU(KO9sQcam@81*7d$}4kC>S-wBt{{C zzUl3^U+jvO`adK>EMwNm&b$C>axH@qJU#3P3|N`CEdFi>t;L;rA9^(1$K&KCQTR}us0e1KBfayReobkP__kJPs)JAfN;x^j=<-66#L|Uq%Gi{xjMM4ExwHN{0Pt)TyU#4=-P3K-M!L-`G=CM zgx(nC%(_)R7xFbZTcCoF>~0ru2e91dBXOJX4G9?n`%lCwRnSslk{Cp|@h~W)a2x3E zgO2WfxbQ*Q4M(xF$k-a1i&MG7s-d2TM}FT*aRLL#FjEcKC+)z#S+&L#qe2pL7v zE1TWveT^?oqoaPEBJQo5!<%ReqQKy1)x+H#19K@Uy2NLl=7Sj1+auN)xR>ZDt`3-16SloD>oX&H z)Gf9j{dfV!kHD*~r%Fv+Gj3$64Y0{Vo}lNI-_DMHyo_kFNe%Dx8K7xq>WjruCAT5@30&I_l*>_N)dtyRsYz{ zF@ekdUMWiZG71J|+U=DIUCI?!DX3j2`e~ zS+ig*uJi@*C7r8}&Eo*D5#jpN8{r2*#>xpVCqdSq<|#oi!ZDI;O}xy#sG*-@!2rHp z!irj1_Tt)B(|b52aic>QI(Py##nsO?8&XhRdWU+rt-5C$jU0_+#Odr*SQ_d@nutSWF_=#S~=@y?5G zA8RO21Q+w8Zp5n^Neg6;(Eg?dCqYjCAZN}N7jwKPhsz&%-%Ah+GLDXDCtd*Q+-hktpzuqu8NeeMv>qi{p0w5kwy zmZVvh(11c;!=qg`k{|eqRR5{hI>b-8paVBm+(NN_N>uIGaV^m3M&AI)UtZ-(=ePHS zjt12YI$lL;)G_cWs5+ID3_T0Vot0d!{*in&&wJ2b%otbfY~`L`$kbp%Vqrb?prTd$Z2|D-u%huJshR z+3Zd+oeK%Qsqmdh!PmRG=tzQ#Z{OaWg$L{S7$UBlHfaC#m!vGg{AV#apw<~ebE{b{ zVlFQD$aZGz+2RrI2goPMPt6U-I|{g3K{LAt3VUoPdGHMlp-&8VBC{o^x@da2oyc#% z>Hjh9o-YobZSkDx)mFshKXwh^rNC~1GhBvT{Vcn$B4jwOH%g`Tz07AsPAv#RUFvy1 zx)HSM96@pqAgfXDxmlzF^Rf_Nt+(L_q#(q^1O!R(<$sK=J{lqeg((%yvf zXf+Qec?qZbXGBVpPYPI>Meda*;BoXup22SB?m-Xdak}oNa;!5#RclWh##)HTvbj+{ zHPv&?C0MwvZ*SwUcrf8crhp&o^`hELOGyt6G~~cNkcnIQOlcngVmoeC*O3O9h2n{} zFeOKHGli{FxJC=K%6d|N_Yhg+f z4Jyb!^O2jHR#I)u^!}ngJ}LIBj-WQF5$fOj#Y@~avcUJQmt>Sb%}7 z{aJgY@cCUM9QNB${VnUuKpvMruj-1`cmeFPxcA3+(o?EUEbb=H($Pz~N;lvw{n(QB zt+(0m4q|je4{-UVwBD*+4vN7o?zZ>HjR~95*29k2ve?R!nFwq@_53zo$ohpujW+ne z$hSamBh*pz_vfRr2eopMN2}tihItX;p70_@m+yh;mUzq>5&KA3m8^W;RnoY5?_Lhbp{$L~O6oICiODfbKli@g{wmMSj+;`)3m3Hu z{^QhTuc63=WxGaA%;Sv+xYXMZ2{>Ra0x4iyi>=%oda}QN6T9O0WOcSK+B&g@dZ36a zTxO+uI)AI;H~@)XbBpCgWC}a*5y>(c5Sg2$Do+?ovG_y^Z9?Vo1*~=A^QO2!NH`Qy zLA%t%5L(J|eb&x4h>??9KZT)NUa->3p($YABP&7hBi4)ylyk&E5B^N5gPJI6k8%vcBX356uEgQ5X)55|8 zu3Z6TITlZ6rN}CpCS zM7>p+@sBjkusrXl4LRmXb{V+)jqJ*hUWyPyV%7y&J9zG#OWyv*iu91waw);MG|(x+ ztBthdQCQe`5xo}TXkLOpy^@2NIFJ8macljl$@9IytlM9zNr@H?zNvws|5|j&D^VTk zIknvEz9uDjGM%s)Bbi~qXfmxo5)}xjhnTiw7Svk3^pD^6PUkkAGdd|}A#7m$4v}12 zQR0D`?dF*evywtyUUiaFnI<-2K{`JIzN_=dw?@eDpzZl_q=B12g{7L%W9(nIVZVoJ zo`bUJFBe;DjFyQHcLSltU5y^fo=|LCvYCgv4MNbPi2jH ztXqk6$GRV>&lsTTLVJ%QW-j8rdZ5+!7+qdRqFQeOU7>eOE{!j72I9O@Mx_Zchk*nf zRn<9%yD+@J-8aK8k5Y5ub7=|AnQVWf+d2ABe4dTcp7kxC4lZ5d{H?SIN#rb5Sk|>T zB#F*Q_8T^(C4(f#*9K`myBo`4VH*R8r`;4%@};18tsC2mbN(VqHfmJ5?pKQyGlI9@ zAN@CF;get}Ym)Ju{y_#WSG%|fH7~&-uZv*diAUhYh@^;worm9?sI^XcUpT*2y3>$$Jm#pJ;ahG5gv zY=bZV!f6+(CRRkV65k*X-UKYZ`ATSNAy~R4zML1xY*djxGZbr>;ypMnTd0#orq3f>+}QdBi_UI zgZ3g-Q)cW7BC-&hK>T=&o*3FBNfCK(lq;C^^0p);boHYZ9&B05m*-F|z>E&QLfksp zgk!KBT~mHLl+`_=k+Ic(KC{@omDj2USX5&rbk0()ZU3866cyLH@553S$%=L5CjD`? zus?U|`T$dpAp8Q{*Lj*Ye&9`gXnqyYwAPOx&%PYxz zyO%wKI_4L+ez4sqjo?&n{cg}ktP;3_p-*#15TD1?Im9<` zEmwHw59J4VUZY-Vl6{icFX@`{YyoLjTXC^%o{Gsao~G(UC&FYh%KC3leR&cyQ*E*2 zpOf8hrz9MvW!5{2nQ3HiJF?*~Bo+S^67Tq&Zn;wusqJ<&yt6-bBomk9o;1#59iSjj z9|hT;U!1qk5am_CF?n|6!~5O)X%0_UsU=q@lpt-KucWT%On=lbn6G%5a?UA^iP!DWQ!-vofOg=ba1vi*`<&WG_eC?v-|Hyj zNpjwVvhYn-3gg6w8}^pn0xLG=R6X^5q9QxdNjk*a&<{v}lq^SVZv*@%(2we%`{7*c zXT*V}sjLaNcU~aF13b_ZT4+T?xAcM^>xvR)5xikM;?wj-t3f5T`l*XFocQ;ZGCH8^xFiRhnht0E3c!(EKi)0kA%?>eIGXJa> z0G5({*y{SqZPFg#sT9yaT#03E zBbS-RZ*lPtzt|X|zU}{koRY$q9bFUq9EpR#8)r()c$HZ=`_cW~0OPNQe>P3hJHnd3 z3S8(il7=M6IDM4|zeQG?a|W+S0BrF(@SSwd4z5M3qbmmB#znB=!eTm3h>P%7SlPtKhe-Z?LXMn7WmVgod528V?*qNlENtoHtg54 zUI0&(rt{D@HzAF2pp+}A^i4yk&3@44q{U)wL)Kq)zvg1BB$V zl}3RaNebM0!bJ}`-pf4a5FhY-XG$()u5u&7Kb7Ysgimk!n|d!ow!1|s-}W!+C_?U_ zx0_Q-Y#`ZOp3!xUh=$N#OT`h~jX)AoZL6Gqr)#UKgCa#euw%8bu6Kdwl=zM635(6X z_U>+qdUF3=vZmEFM^r^5`rZm4V!|Z-wNW_(^%bNR^{DffJZ6ZsqMNQGZcH#T{C~J7PvPy@T>^=KVrWun-IykLDHC25q+cBJoT|AXr zr5|&~Xd-P{$RN_ff?L%+zi*mv5iBvv@BJpwxdI%+=sjl;B0>Cz7d!N?q>*YxzWo7% z@Qj{%;V2#-@79Qkf#OHO;*ov;MwJj{2&hr|xx@*!S~6}f>Wwg8mwB89^pQ)(JW@mdgzfCCMhBNHbBr&W z6zLhY;o_H1tY;AD7IbO0`$cKG3K=(Y#Ix&n-M!Rt^(%0duQPrFfs0LlyN_387y)P|1etOTl z=T976zTSIu!6t#MnH>@-^3cku$k>8ED~ztoVAc(=6>8IS5`ZVzkxm$SFm~#h##;gT zak+%~`6RaWzr%_5JSdb2QE{;~PVBArRtv_wu;Coie#f}t89dEuyE=K>amC;WtCgRd zxzy30KcpNBfcAl8^ef3T#iLU>nY$t0yC5JvH=eJ8-wqVP7MU=Jril+BQtIK^IQj+* z8SvLi+b!475bO^TmnF$`&grKI8yw09LmI^ZwHd^z8&1j{!2;`1{ht+GmB+cN7IlU% z1~-_xVVXpb4grBqq9{QqsVp~P%RR&=emHJEOJ@x{QZ>njXG#!uTvz$9LU;X4A)*3}Gzj9rUrTW)&R0Ya&@g|F}IYw}R zumjsle@ZUQ>sj1Ah^gi&ji3+O?*J6wRpVzUzHIiLL-9bWNbcO9WYNj0qq$*!CyWMu zC{vC2mt}b(&0O4Yv5#;H#f6#l)e4vX#_2s(6E|u}m5ToFI(@7PC*u;3QF><2g!lM{ z_}8CONGf9u-*QcuTl)A^EGh3$6MdYgew84{ob}fmeh#@JnksWoDiYWDc6R+K<1^6p z=$m-NkGU5N?52O9Y%lhk0bj>q7d4B=E+CJ<`y=#+fLbb&9tZkqymR!3E_eCvN1?b| zV|>WpMdFA48Db%7$hy+B?HsL9XIZBgnG=$i!Y{=o9(P*gVdV#yr5g9MH4Mj{=jJzFnz z04SK^ug#&x%EnMhuA+qIQ*}%kWETScgUr=~==2c=_xu*w9<2Vc77k3!)Kq##as;o~ zMAM2Yr(3vIN`d%Pran{=#2qDeG%at3TWMdtx_JiMI_M}aZPVyKJt(s{=AKuP@8}M7 zqM78{E}2~NKI+%y>xPwCPi>mE` zqv!n$B7{%!aDpdk5|`mc#Kk6J*=ZFP0$W+ z#nqTf0ulA`-gpl8HQF+9Iv9a_`Mg4!oE=-_gt-!mIE)o`V?{Teaq1KOqHRHoxh;f{49IbX65wf zTip#E$)H83kCF_~50=$*Ucj<(Zj$X!&3COrZ(7-T-AS3Hi_T1ZuK&e$(mOq-tjWtv z+HI^?+h4HfEQvbm3S7x+B{Egjo0iVXX!IV z?HqJXpHq=Y=D;fP)6JsQXVcuiS#wb?OA#k@rP+x9_jNZ$?}g^*_bF5|*ro5`xkOv^flKE%JpPTjSv;XC#{ zf`yCA5O3=Y6^6me0kB8x&qlEAz>t8Ig`76PuMG)Xhm+5%_~YcSfskvxB{63aW^u|9D(KjC!ur$Dpp~oCCl_Xg zOCS^LAqzL$1wEPrz4lLxT{z(W1Ldk{5M0(F=L-7{n18#-0IfEZ))0y%dCweoR9)1q zY$0T>h-b&is+zfn>~5q23C;#JDazhG)BRRQgqpC~K8zvQNi~b);gRfJwi}9jC({Q7 z@c+ejFpEaBcXou$J{_KwDT%eEL zyX;r_LP@qmx4f-83!^;3^#4vo-t1k@cd<2#f07YPeP1}icE)mIhKj}&*c39xZZgC^ znt4#a(BX%A2iAVMAXDMJcQ}NE89s)0EFOgwesGjRa|C4iz&8XPAy)=`dfHtfFZXY# z!rN$kB?4tdQLsEtkde|Y(%=wqdk*H_08LzaBSGE8{0vQb7) zw{|Z^$i1N!#Ru-OvrJQN!C*PRbN_tFajlJ#Dl&kYH} z6iXO?@?y9D{`&Bl+#!=%H?H7q=Z_DsiL0wXcfC4)`_Fa!t{#u;L{(FLSLu(4;2o0E zP9jwa?_s;TbIPOj_NNX>i}zbc1c5qol;uoM(uk?vM9osvv-P5GZ6^J}jWt1qVvCjT zfY#yN`TsCiwX)$u-i{!m4$MPsx*JxP#kieH3% z!J&U48mba8${UmP)mTn5yb|N*n-P0i>g`dl(Kib#wqlJkU(!nY&O(9cl&w#uH7l96 zRV8KmwqI5Rv?e`mQDhq=|9c?oRtQK-^R!krhBA^?NHkfnE?|a?U+h6e-k7sW&E3_$ zvSUS`FZ5)gmWo4<sUZw zk*?s+zYz-+84D@?2=kqyF;27L5XYyeFgwP{Z=v<|Gaj3{&TJ1>B8^Hgcxf5rBsTTULYz5HgL)n) zSLj0;au9Z;rWiHk+ZMOeS5r9BQCBy36&{0cC8hXk$M~g-SPNS&vM&lVEZ#KMY~K*- zEHVPY9aEU|XM>3zT3?(|I+eQvma+l)biG3w0a@%)c7lhicRJcz`1jp*rg-PAT;OAC zr83-J(d=~6MTPt>yGXE#)d^bV8~M%~0cP(aAwXw?go{9zGO(b?C&ZiX1a5Hl1-CSm z^jt0$%e$qbbaG@P3Eug29M0WqTJe@d+UzlPtHvpNAm+e^ z;Yq)BD#vJsW~`X;bR@2FA%eHZ{^_!K6_O#Ryyjj}7P^DT&?t3Hr5EQ}5*tGclH4sm zr5Qz3H-jCX?+9KZOi?z5hi{1whF+~b^!q1$_6;6o>1h`c7wT+CPI$r81OO%}bKky!`i1wm7c zS(#6dyzREWRO?v9Lle^TSLPxFQx7eAsW7h-KFr3HJG4GG({{vSB39$T!H`?gJpNi? z-O&Bf@h*JTiz}@053LFtcZ=TGUgC2Rd&}N|9b{a1_7bF+^cm9drlONJf1Pj4>k7Ru zesa{)>PfajB1j!;HTD#FZe05l{*Kr61AUyGgDMGp3|&&P`&Isy-2EA0X-H65!e_{3 zgNToZ7hPVn3_ilbwto5~;_o2&yR|=o?(82x9sh-$FlBbb#eR{n9i+Qr`wRL-sI|h) zpK&rs!mbn!ysxT^x;#Qoo!!!yS2QZ>NGuA8X2YWe&x(Wgg9p=u9)<%&I+4Zy?*h~DYQ=JPzauM zk0b1mbmv{_fpC0H+TbFO)u;1^d5TDfCl5BN-v1SeD8uBOD(*4oV3Ga`2g^si849Tf z#XN@YO+~EBv_Y@1!Y~a+JIarj^ExYj{;~hySz(~I6Y881fd%C~2Ir&ZBwn+m-iK?L zjPc2mCx0qeEfEX2(Avdl*%cRh1oi&XyT?A=)jmPJj>~kxY)~2QGfCFF+4o!&#RT#_ z_qNaz?Q`nA?XRyst3>(~pe#*{>(I~g3fc3yYD9xT`CFGz$7{H{jZc18;wK-0n-?5`X9xTIDkzs}2lbs# zcer!$2M?NyLVSLQMQbSKnnm2U)cees;!Qy4s|mLN8u$pct-($vRakhC^jE-LhKZ;I zTbr7};VuTRx%SW^mZAt%+mKJkJ>sdwo@RY03!c}9#6nlRF0YIdJU+;~vQ*=JG~6gg zz5+M+KjSI~vnm+t!`IZNnR8rEsO~no_T>|=2eV`^x@jz-Dy7J-bfjny;+Rw>uI12I z(zSAL+!j5!@lw6EsQJF<45FF%7jK5zCKAe%VRz9B{_rx>!2Me1>2hxuamQaeO0HX5 z8~OZJU8qP&wmIQuonGi0XiMR}e(Ekz1^bM+nDiXJNOfTbkvmTOajEwBWgBDGC)@+U zlVO1r=E<43##&>1lp49KV}-F^WvT98W2Ln-y=&=F?Vjz5dUAgS(oa5n*5}=TlNg`R zn>0}8Yo^*P>;s0jbL0fqmDNWb7y*1AA>vM?D7(0PaxigV4+_lzB zD#3le>|jd`oo!KVj;nj6?e$!%>wB2KjU7Z?#u-? zQ-v=;x%uA>9B_Z2S~rzJghBHc_00E{cMs;R!!nThF;(9mRJsa>=0S+4{R_?`2=8wN z{=a_c4bv*C)!65TVee0;`41+-3^u&P;rF;jLATeR?=&9PR)!XfxmJUPmK=ck(jSusZ8Rep9UA_pgpI=>@v`<=7@Yt!3?$8 zpAVSU;Gr{C0S@D5z%e;_7IqLj|E=!EZ!RhhEpP6TM8|DfMYmrP)oCG&3^xs=?G#0R zEY+J&b$E(lgG3#BuNMB^g?X|YFt154p$D&URjYodW7C z!jKrB62oyMoh_4aD}C*v@C#U{sQ+jIP#Q_!j_y8khP+_A7O)*&ShC`gM}G|r3XA?c zA`P({IBnr{aufZn$>F!5Fjvz)6;Ow?0$lvb%LiJN3cOK44hDA)8D6va`}3Z+~$h=;2f6QpUk~*eZLo)_a^&4k#~h`58KZ?lOYC zI70j4^4qDPFG~u!r`q?Kn@a~g5O!q7XissLKX}7(tK3=55@+}R&gF4QR#`MCX;`Yd zBHWUln|%uoJ^7Ns?RI<4c}4%SW{|6SRfL%I=h+m|UI% z68-}h$Njx2&|3kx0D3FN)>2r@zm%C6#&JU8j*qeCj_AqIIzC zy66TT{GokqHOr6Kq40U!SLqYtFRAd7GUmZdQ1n^0AKE-S{ET`s%;7HrNJ@$+$4&bk z2`CuK9WI%}b_3p+r%?tIkh;I{SBgr{2BAq8Y`JxAmrgeQw4)lD+c`j5+c&|z3vQiW zJ6S7djSAiry=%fuT?~A2Jlx;O0(IupR;RJ>m~a3`@DyQXQ@F_*T-=hWfeEPHKhkhX z{My>i`+f3blYROU%xx2!AOPO`B4jJJkD7M99(|G~q`9=-X)d|obF!gFCt+d5$|pQW z$FYD}H#LVZO~JS(@_An_3!1@mHl-U``Jy=8xh96b_UioTIE*#flDKwEVtL65y+;h; z@qKgf%Es%L7cU+=cJP1qq3L}1*{gxx2)qgCe|?N&2Zf*fIf{m2*;M@hJ(vISF#hj- z`TsXd;J%~+vu2h3UInkkfFZOw#=5iuE9#muTgf= zgH~4E(+Wqws`;%OUpyyk6E=I;p=p>hzrgvbop-CNU9USqDK(w#8K$S)7hTB48Vec- z?H+ztc(PU3iUh1TuKMLs?8#rRwH3@me(zPP&*|XOtgc;Lgb1T<7ec@fLg(a`1S&T; z_SWim7J_-ydD})7RwFx8E9U~@101`b#*f=&Lz4`tjSDM1c|GGYMVmFbn@cd#Z4b(4 zqZM0Ax2F5-Dc+4SYP7SpI^hw}q^v8K=b8$2;Z31d4+I*esb*XL|S&9PwoHf~$=48f~?6>4ReOK9U;G zeaSl_3999~KXr8U+o@dDfZL@V@j6x}D%iH=i=L?O+~sX*Q;P}8Wfug{i!LbE589Cd z(ZEPP|H@9EJ75pF{jK{Ujd=s*HIFI}N!epufq#8`@pFsbp>~(Nn$6k7l|?--@ld9b zdH?!d+AnsN9%j_{)WV^qvv41o$O)v5N|*=-iTNlQ_=q-*FA&mdfaN-U1MP zqKP7Za=4Dm*Eb&Dvd;# z@CiztZ>`*O|H8`Pjzjo4AcjlFiL_=OKEW9FcuJ=#30nz_s!ypp27|J&%A`C zo-URl2moPJz?5&Q+r^Dp)6;q62GA7_Y)92yFo!@M>=a4LDQt`{jA>f}Fx(;E#@LJd*Ev5Z22D=kflBacxQK76_cz64qWaRs zDPT&(0|8yuX}FCyJR`a?DftVLKwQcwd_Q;jMw`VIJJdA?kNDtweF|@0{7l~D9~Y~E z-VAu+bzQ#myBk*)Fk#}!wKL$JWA%0SHGYGHO-@XU#aFBXeA;Kfs~FEWMWe8nh&dwGTgE(WjN|CvISxW_RAbI71jA78LK&6-fYU;>qc zEY7#^m^W&Zv#;TWS{Fbi?t*+oSSut=Em<_ye40LY_s z?(M6<9^aYyR0Oh`YK%M;w1_bI?WW?ojeK@NYM;o_6Fi59=JjZ9H31EiQ*K)!BL4B3b!Zc*0vt z67`^ny_q)i@XE;=uB^)MkS^$(%jb3u2VerkZ?TY^@t91DDT|q4_RcP4yg0RiYlpK$ z<|U#m9!KuYurX0)*Y4u!=EbY#gyAgLjS1A2d>#WhSED&*Tn7TQNm8p4kX_yv6 zPwXAf5NRqje9CO9TLJ#SMSlr{fV7%_M0&NbiSj)>YdOQNU(#k16Y%0Qywll4TW1yd zVRjIVw8R8&L)Qfswh%Dm+>A7KmShzRGoA{CzL2$gSG<_NQZyw56ImRm-B*?+2KVX} zaZtjjaXP7s4LPRS+jP$97;wy({*`Cb$QfQ&A4A=w z^`ntyCv(w3`=h_X^Hcmy^K01^emP$e)gI6xe@cq`qccJ5%|PjGMIv=3lx@DpV>O+( zG@`pRfL6UgyoApF zKkU6%RMY?VEvh1-qM)M0La`w#O$DU|qN1WAMS2N|f*6WaDG7u`K|s1n2SX@Qq>A(w znt;>*p?3%nY9NFF2?5TR-`@Mb#~I_EmwVpsxDPyv5Y}g|Hs@S=W2b9J-^M;16}f9Am^M?zE`cIwwPIcs<1 zW)uTNebw%daMEA9>99Sn-6uf0~=$ZyzC{B*EoGgxD7!O#yn5_{=rg zBgo&0e>eSlK>CMfPOcB1{D6@EAmr#be=eQ3%}rM$W{w#3LGA;(W^rmQ{?qcv3BsRX z;p8JdnqUBHI~=9$l{4S-l$Mmdc<8yGd4%lM`@nMe1v#WUO1FzO*R0v0ahBLmPPT1ClT|K2w#ut*7B4T2{T4NmyL&&g5Bm{= zTD*uGFFcUVU2)V&Wo@lkIANg41Jf`!CF}QW`L+%W>g?lI8UG6z5HgB_=V4pL!rd=lMt+{^TtDRRD0J-h<6in-)@al*fv*- z7fxu$=#z=`Z$Iine`cFg&)s0LwPxAkF4~l=OZi+7snCYcxlyp8_=io6h8wu$5L9j* zyd;s`E7q8hLF53uNdGzkvu=!b4dk>Yulxa&?`qjNo(u9oUWR9R)ksQ z==H~gt}8A(rhfPAwpEOgQFnP&8vVXqqoAI?^Au5BBE=mA{h|);gb#Vrc!PxvAuY-b z9O9Md#|5J|&{vA)WUm>HW=$>O08uD~+tEQdv;+0PdH4B|<=Ew0@k-5*p~a%Iz{ztS zFuSef!5qgAzymqnT!Y@f@aUZ8Rz%8!Ie!fl3PoqmJRu@9*a<6o>Ian zW#IMue@akq#rwFs(%Y}t3N$a>gQmXNNu>KfWDnDeWSQeNppL51{<#pfuTnxgXC}ul zaZP%)i@pM@J)42g(0Ad3^G5a!Zf=;Ql4{pl^0iI3mlu$BigdmL zzIwiFwLKt~qxzuTD5Buy8}%c~wk?oycFOyCN|MPdi#gP9Nm zi?$>qupneGJSi%EOQ(#!v-<+RIjkh}eoziK3VGp&!rdP_kh`#4@kA3GML6Uzojf$R z!yNGPwgFl0>Uhv`MThj28gfw;jWep|9_Y2x$Cnkpu?ZEQZGy1HB3mP@?6K7PbzzaY zJ5m{gk>VK{{l{1c>?M8JyWZJ-yJm}*he|~muPw>??yn|HZAa*1j042I$z0;lYXar6 zaXIFL#!CBJ>r&{_0jU!}$o4zkg0Ftoy&!Uj!Rt}6(<`1XDVzlHL!Zvvd{k)j29(ut-jAx-d@6eH6V6+bA@fEzA%@6Hh zXLg!N7S2gm-pqarqnCJvV9!YO`tU2hBqRV}TH|VbD?HBDv6{WWn`^Qpt{8zg;jIqr z?Vujtc=`Hg>D|utn2o7oitiZs&tmxb$9P-IM9=pV2SS%Q@rz-~%svi6zy7tQ$g(#Z z!8Otagak(GdTtk$1DJLJOMm+QDS&lYpMT0`;h_yq6|b1JWe_U?4y58Oz8ersoTlH3 z#ZR}dqqrqqi_OX_sYytUYY@-L4=lg7{Ig8uDHUMSD|cGn3|~m+T<6X5UYCBq$c*77 zzB?GWv@`A>f_*&n98e2!wj^V~Zq79%rzTNM<=-p9o{=#TZ%qgW3MQbzDR*Mjy4)-D zgDT=fV9Pf#mTxkVA+vP~Qb5(uB7p`cL&!%$#Rjv=%!vy|xKp0l$3fwJtWlRnS5Khi zbosTx@JZ8_z=o2O>lyd`OWf{blAP6<+hirOR4$-R+{xUU{+fPkHhDbOZ8ZUt|t95V=cf zrcKWS_Pf8MTq{GQmYrO#b+P0Yd?DNPY#IE^*VV2p^c&p3`Ha-rT0V)fO&O(d zf(iT(t)ky*OLQ#5cm`d&_BpjJ`k8c^Nx6j~)sKvd2w8IXg-xF^4eSl-z%qjaWh&Gq z)~yZ4E#@@h>`D?`8zL73;m5RW*)o;REyp!Sh6F~YwBi#hLIfe+s)aoQT;77B4_s(o z5nIsfC6W>?^QUgAewys!#lWy}pg2!iQ|EGb>8ePV_@8Czxa+_?aYato$SkK|!pwax zGB5GBp`qKH(;5k3*V}5t@R@lAllx8$Ja=#BoTsg868g4VpM)&<<*qv-t*8%{po{a1 zhLufE;^)W)Q3W9^^9%5Kk>~IrNG*2!qIE&rnJNYQhFDB1 z{2CELM9Z$|8Do&=9gEr0+j^NMBadm{!5CKken#$RGp`>*8~4uCtN@_Jecmr1X28b| z{j*t~#nt;@ZR>z}nlQX}x>Zm&6OK$G!#m3+jZ8diR{uIA8xRGlNLIZPIF!A1=BreE z;j~8{f|jM8(}$kp2d-q#ZWsYDBEQw+gc-{RUC{?GsIfcBOk^Y=Hld0kh@6Y|(H`nP zs5gp|*K^R_uZyvkh&bSjY$zWKp$EW4P-$;izhLap-i-2jiR@oRm&(7_qL zLzUK<$2Cb81nsw{IyMuX_CA5ClG6-ECgF5py0k1tf4Vi|9<)Q@v$ESK%2#2?OU2{v zJ^B~odq%f|h3AC@HUhjQcVd)j`1b*a+*(XXLt%&~zq(d4>4!3l9LtifmXA~644!OP zFZ!E*g8vX*0W%uTU9q}hu&Nu;w?k-X&fl;kH48IY3kqV87kvcO0}<9M@6f%Pmb zR?nDnCV(%y>#&KCiGODDk-B!8|O{>a6wG_=;XtEwklWIIC3Rg+aEyi|8 z{XYUs|J7EZUoB-rNI@lx1v!g8BWEaP0m`1{gsBCTlR8`!n82V}HzJ_+z%AX7&BD(_ zy3I+ZFTv#(2uKjg6?WmXbr;sCnqvveOG+=S&J=(~QmcW|80^iiBY$y^*4#H06&xD4&!s5$Oy*u=EM<& z-L7Iwy!-CG<6SFMzb1DzTX#2y(XgX*&`$#WOFye1(TCjT#|?Gk#>|B&vp{F7{yYpV z`=Jz2FI__Tz<99*Iu7b+?=Pul?pp<9%acZ*J?8%8wwDK~if}43WuNV!C>~9Zx4O@1 z3Payd;7%#U!GpGKoAYrAuJt@Pk8B?zK@+yo$g@Lc$m# z5v($u1t`+S@+l{JWmtO&ptrwondTLa*@3O+;Y4R@QM%Vf1`l=V2=+5BC?VE<*P<`vR^yAqeNwg;WV0j z%;9fU01mj-2hL}3_ApNnkdu?Pfa;^S#VBl&vw0Mm9Q}W=X z)$25Pl$HJ0{&G$jklv@YS3K&X)?ja55C0)%AzU4%j9z{wLIG6&Idr8W{`;n0!b^}b z`PDBSZb3YI-CL#+_SC9{--yHp-*5k?1JEh1zz z%3hLu?NU5x1|bWbf>@**m^On08}fg#CgH@azxA~~daR*y7ot9(KWv^$;H@PEc$8W> zR!R{C_Yv7lZP#W6HyUxC49+pUc~pG?mW@16a(XSDFRCoF428|T{fu4ki|+4Tg*|hX z=@p|Q-_}AmNpKoCE{@Mc9|=^kOR|$&ee9+g8nW}i<;&d!r)D{BMPWj<(~XNWh_RJp z7j{o^d}K}HRedigp{Ne^Bt_~+)KoT6>qpmbs$Sd1bNly+dO2L^+p#RUoCJWaQ8%qY zGkNk2^tr!8cW`=nKuoaJ2U9Qg19N_%OTUk;LK7F$rp&-J$hP6``Up|@LI8KOjV}DA zU$;$ApVGQ!%vdb1OG(L!$glRkpSFehQ6(jt28e_}D6hl*)!cUDv=Wo(4L8_clxIG^ zT4~7~mXrF$LQZJw4;99z9N1x`WIe@|ujFe;mcL~Vf8u^4Dr0wO=IeCed-g@ex)t%~ z8}gX_I}aSC6dDnG!2c5ezPU(YCfn2;he~zf>_d4+kSa75^i&OYb>VQuOYw^Hq0lmnbEmrROdih+uF2`V3`Hm zlr^DNKAZ0K3F2*|Iy)iaemho#5-b|#0+A}x5$nt{4P@n4a~DbjCk$@;m4VO`9;K_& zI&nfl#B8wG-*i5ZJV`aMoEGHaw>lVzkHo>81~UPrD^C=$^6AhwpOo)_`#}m|{jDrw zQ*kY)>*p@>n25-YQd`G~8`nUy@WT*PJ)O=rHqNimGr#-jilT6W1}v=GrCUQyvb<87 zc&c!R=~sVAT0^kHA#Z9ml{Rq0-kXtU#sw3d8CgR&Jt#OYgmm9RP}RTA2TmLI%G@iU ziA47mnHdoJ?+g>rkv8N9g|qSLzg4WABCz+#-lq;xF6A+-AlU%?2Tp|FBV|&p6Bqjp zcE>j@8c==2XmI}Ihi=fa`&&*)e#z%4#Xt{`w`Ordp2G2mxX<%Me2mUChb|>}$(H;w zr#TKGKGzlnHOZTp5{_PetUebLMtE_eCglg|C-vqzd$4*?;d2W5!`h9+4|2$@w94P1 z4G2*fB`IBCEI|z3T3M)&D`%OwINKWK^*t}~3@DxF_hnt48MS@Hqa||fZfbYd^PQyQ z553mi)PrC5RU3U2a{(|ZB{dg;=*8;d5L@E36 zj#0=r8AE$qM~+;M{N7iRR2Uw@gX(S|#yNd7*nu2B)Yq90uk?u@aJ@)#m#8v!JOX@$ zgOE$j{K&%PaTlD1u)Ei{V(wMJ$Xx6>xA#rr9#WL!?qjSVeVcYLw8} z6VdK7*Lv+>XQL!l^Yt&gPok#TVg)W^j)d2K_msE%3T}C9kV_Z=4R`CU#@ChD{SRYZf5_*;fo-p&*Mhau>>fU4(x0q}$ zfSg{rH2Un8iE0z7DBKqlJPQOA(dLm;->T%ZFVGLz8us^u%&4)H3(nk~TLyCoh&zr) zxDRFkil1?5661-)9*YGLwRRKa`oXlC`bd&(6r1GPb6XdGCHE!xy^iN%!6dal3L4Yn z@P}^|$V>_iHLK!4=>lrC$v#_1s-T-n)f(jXxb7AN^FFGK^Ro;zn=3!(n1^h0K=zm( zhhr9Vv8A!kla(;3<(j4eZPH>q1eX&Th(l+_968$|e}SUPkaafc7rNtYF-`iu@Tat* zCgmiTQAcpI9&;MLNVyr^SBfp02uu@|G*-trXO*9TPty59IHuq{Nj)pmh5V1Fp_`{p zaM{8z&Qofma9OS00x95Dw(%#6dG{a~64=JF0x#FU1cRnEj)tyh_kp<^%8X@l} zE0YydrFgx19GcuRJw~0s=Ci$-NoUIH_g_fkSbT&!)MVs(M_d`*c|F#Aanq`8iJ`M` zN42p;1$kZ~by_j!Q3j%+I&0c1us-VNH|!!#G1p@bucoZ)RSkk}nhnfN!*R+WKvG-d z=tj$J*8s`40F5@0of$pvCAzcCeNV%r1X&LxpAWSlR-l?*vYL|l4QFM;m$S9RfD>?s zx)e88>kESo>SEO4kxI;DMX$bIsI9BMha%bN_8V!RWzL0J71UOEy3O^yMjprDs|3U*`l+@R+RPa zJ15xN&w^4f}{oNuQo_M+H?r#T~ zjVs2C{(N9Ezd#J@lkC_@TTji^5f}e{bNI62gClk$HbHQg0uj%imyWl)&ys(O)cYKo z&BMjb#@A{nJYp)USbcf24t{|<2s)t&V<0V&s%6m@bMAwsvG7uvolBh(B&$VS)sJis zQf0fZ5GvLe<9SUzPB|=fC^st~>J*pY?W+Aw{x|+idsDK%Hg4>L0z=Ff@a5IS`-M+1ldN02 zNA+n(V3aK-tp7ZGUvA)M-*GEyw_((asETQ0x7*+=bm@yc(OCH){W{NhizAMFU*Au2 z3;87lgJnNa5TCIkOTjL`x^vNkSN&Fjneb3OWxGBf=(iu&4b7`P74m_&$xR+<lXB;HNz*B^%H9^XiCm`#HJOTo^D%l zOo21RWnVJqW$e}^F+kf*frR%}t`ZC52Tpd_f(QvaR)VZqYecTYOLtQ?X?;KyR0^9g zTbM3>2eV{(+|R?)H~m72(*@YuYPpltzta6xP6E({bH?xt)-9OgWbOPf)KeU;x3IyH zuQgeyf%yAdqOGy0)@;2f6&WeAB?$C03(o_wm4W4I+b?YA>nj>v(8XF$V>O&SCu2Nt z2B~FatF757yo45MJ)cze;0m!C?bmpwCH2Q#RI&O$ui^~1+k8>wm%wL#xN+Z1ORf2} ze{7>HM)M%4mGgxm?73q~595Rl?-wpqM~5?cWH>UdD5(~@#D~j;(YOXyu3GNa- z7Q25A+l_t9!j%L7GH&QRT;1v@yi?=7sf|;0m_ZX2SU{Ner`8*XWFp=2&%AH>Yqeh% zdQs8nG2lqOQtyX9ud+4kn3N>mZFjVI;*?A*bd23T-Rtuk0!^+0mO`6q973kt5t-+b!qv0f5KNYM+_) z5~adRaLSIiV8C4lY-+K+=k0HoTs1o4a?yb>xg7p3x7n{tR|>{?04lvcX|scb`fQ;- z#u%w6ISbqBHsvn=F@V@@p8r>jXMUIM24dX2{DnZlS4p~1MZA>+qY*~-0y+~=veZ@K z=jlZ&d?Y`zl{oiL`n)88{I&C)@p14%)B6%XtWuL3ujio;zWRKU)6^Un5JgQFQ|nm0 zEp{bJ9+3c71zM`yId1OQrayJ2`CD>Ti&T%USJs>3rb zM4gcWLY-a(FMUSbXCI3fB71yL=G$KdR8T=!7SCb00Qtl%4L@K((5l(qKUV`f?&-7^ zSl*dt@AXHsh3gtZi2CK#<}A0 zbpH$Qz@h;OO#1iUQ=Fh=aT`VzL08wk4~1vfExhW{Sa{x2Vl_$qs=A+Dkd<-IWKjm^ zxgw*TI;{_X0f^>iG};y}x}S4{?>?MS%3&g2e~}TKX4U66p!5ecT&RI*-yGL8U2L~Y zf>iIyS~gv|K4#?emBbouI5RS2gTD1}IAfKb3LST04yzR`Rr?RG0qKWgTKK!_yaqH0 zBs}&YH*;*YUE4#*7;03)Xm3(k8}3|;FjMR6r20|YUi zrD|DH&>;MX|B2x{kMAs3);z0{ zKUtekQ%W;7q4fuH!oJ|%J%N@w5H@M~pWnOtuC}TJD_dL&vydOw7!0>N>C;#<+|oX@ zf7I4Nr)VglCz)V1p&eQ0aD;;JPGq|iUn^uat66;ny%jy#kPnRePx-ln*LrAApw7JS zom(KJs+=BEym0Q;C(+zD%Xi@!mL=opw|Cj@m#SfX!G}82Y-`fFDIpK-1P(3#Vz< zgq;|u5}NXmi&wZa-~R>c3hHsqDVK{kRQ|vkm;1nKMqZ;_&)uFvGl4fSl^_j&?)0F< zaN}X)+%@@dsr2vD&yPO)i|z{stcDHl6`)6T;qEc2ks4x{>E*jwFe*d*B1TJybC$Hj zoKd{l$48LsJMvvhDNo1yM`#Y1w9UwS46t$tQo^3(QG4i7A}JF0j3iIBsOds+$EU=j z=k>WVoz^3i`=oiH?x!FKPvlNw1rLKLE4+9;%~o~~|2+w=zLQCeN#+SIka^mObu)z2 z$gTOWK$ii6{K>VWlEyL0Ptv7~Bjn3yIvX3cK8;_{=8@x7LpI!-mci!Jj(izX{|WYP z-1bVh_Ie(kme1%exUjuoF}%&r%==v(6%VF_N0iLiRv~9tmAYoKAJQ_h7SNlNk;deJ z&t)BdrPr28ne;oFtTn@eh< z;1iOY;Af*&GkJxZVV;IsakvtuDj(k?()<_#IVUbPsSqs=C(BlzxgA@AjuaYmz13Oh zJVILQsLYqRlC=>X$^YsVQlq1vap8}Yg*Ya`K&EWMYoKXC@B!hK(`z(9(?7Yh)_RKnP;nKdJp6<=uHn$b!?GxSkBe5y_O6vFjNyz{_h7PPT>E|1z@4;_@IoKQv-+q%I zJbKHE5LP7RfJnVDwM+{g|QStVbqY9_V3MA#SQG= z?nS+PW82PF>gy5BM+2!;py5L>JgdoeQ{j zRjLTPpV|KOBGRnnYBdEiydW7OdQUll)ghO_a=M=FJ5(`z>TfL7=>$AM;blP=zzr*1 zYwd(Md~axQ1A-lTGU_a{mPqQ@9Bl!28M(~)y=yJld#J>#Ey@8iXvZ8s&`8vt&EehP z&GepqZ#^&YjhA2Ci1bxTN5o!?r;KTEGJj`tbbb4x0C0%utMQz$+g@lp!2G5>z|eqq z{x9JH=X+ulbGIF97A~$2*PuVnbGK`DYxq<^;-6=*=MZc|kPP<7XO96TUX1>uFm5Vc zXoD?g?G#mq@@>lxa7{%}(Vbn?o!h1zw8N9K|0{OOZ2hm; zO{C*LVz+N&8o1K@Y@G1oW4%Wz3#yjWlRUw2WzDUkr54xsXUFReM=V1>D1S$e=BUrTzOicBaLa@#dxXZ_E{ zY;~sf(D|M2C9VCNvhGfhC3muc)wTg9ZpMY0s`&PWrt`n`bZ@zicO(zVcCu?1LXao> zWbujJbv)UawT(G7I)WrqG%=i~;(WhSCCMYyMX~Im*!cjU_uQ~}nX7qG>$P9e zAl&o?)a#{(9C{@zO!i)m;bA>wu!sQL(e)@xsL!e3vind@#p6{u`Zg z7a=SMf4=wv10~llYsyPvD1I8qQFEEWY`eXe5o9YXD``0ryd=zD^`-0$xWHtad`=(! z%bi~s1ZdvSFQDPd?}WT)e0_eC=X5ERcwvWl^#JTmffUVRbmPh&$J;Z^V6p4*mdfL- zAV1ek69KO^6kQ?z*q6G^q_x*BO|NDfqaN|B?6D`m({lUg8=}nY-_J;bxHR7ZwF6M@ zUm^+~LhaMM^1ZmMQA#G%N$**5oU+W=OZgzFB2A2AHPfqYAv|Sob`%6i?m#d=;U;v7 zYj-(OG%Y^GXd;li-R6;SJoapEC(Db%k$j+4rGt6O4sn0@(yrO07ezP(5qo?ZKhiMd zg!LRX1s2KIWKkuXJ<=6~TdVtWUjkbsnj>E}KK5(9xhw_{=OM54J`MubXy@I!AtHWl zSNMY2byB+przH{81mh)e-2ys^b38DwoeMM!$ZBWNW_M=P0Cw6I56m2-*%hgzs{X>p zgo8a_r!GUxDxIu{QfB2V&0hq!t}-;~RMT}H{YM}s?`MyYw}E-qZ`M-UGumW+14K$a zHO6d2V{xbBdmn=Y8r3Yh33GR#hsSofEQWvd?g;hqXKXV2X1!@s=4tNYo8QIZyH~el z(;U=sLBa8<66HK5eLa$vMYxKVe!EeN)>>_sCo2Wvr(?}4s%_MYs%;o68pikB-cD@H zAFKfggsx8_IG6|M()%=Jcn%XEA_W1hucKv@;E%Q;Z0O9$%MlLl2ycgvn=!`|1{Cf_ z1Qy~S+gNV-Zl(XChATdF{Vh=p8#Sl>03r01bv}dp=cu#s0%cMEZ84 zc4^l?AjahcC-FE6AjllM?YY0?jW4s;G+gSr;5Xh&ESdH7JQIP3Kr&G%JodG2^V=Lp z)$+@(QS|F`e;@@sNlrKJ^x#dI+Gn2Slr-1Z>YST~>~MAiyrG+lL#3v>!--SfTs6`W z;ycd%!n(u&>(zWa*5K_XdmU8H!|86pZ9wI;5~8vXkO2?nSRC5`1H6D8jdA>kBa|mhU&Tk^=WXV2J+EgoI?YV#R2>C#7%@;=!BsAcA z0kMn*Sj9Gk1*^=T%HU<#--+KE@_ZM+k&g7Bz@MDbmEX09~D18Ej-32#3%@OjVJMInu5McDaL_SF;TbP1$co zznYx7j^o*@DI}|eoY+Tk+bssOCoUNhfcu4y#- zed8LHg-OSL5vT?zzDdX=r=vRXcuxAD^jK$!-=D;$#{Gp?Cir;U<`Lsi|+cmKupEdjW` zVSrZ-?h=~TC{3DK!WVsG&c$FaIo{una)vQPx9-J#8vx3#9dt#S%-!#Ily!e}WhmC8Nyhw~uG`M*Wdo{ujIkmtjYa z_fnWp9~xWcu#A_2T7D$2@Zz2 z5iSC(n-dZFxATXJmRwLa8-+tTPI-X22eXa)zyf!4vHI=BbW9bGfs-b_lV2B?)UjZXqR(nKeJTs%F$pJuZv;h$AUFUafjL|b+Z zNQ^Cgf3}#p{W`QbOote5bXf8^&&1sG=pIpo4a0Tz#97wzjZrTWioA%9uX%F4T5bbEbnf7kTG-3T0F}? z4t zn65Ol*)e4fJdn9pla05_oaXSeb)ner%IM`oBbW^VOv)upvE4U5a^GB36&q3Zc&^;h zI~6+_CS&tUZ1g>)PM4NO$OE^w463i56r{bRLT!1>RdHl} z=Xlc4?(vc7gD;@q1zWe$fWdPHl0tCktp!zKc)ZW5f*t$fpKA?sgAjNcuhHheMQ2Nq z9>Aw|)t9?glaXVt7uC>UMDvrKtus;9$bZ|GG}jZ{WIbNDIQ8>@F7d?frbW9JyVl|7 z$BdSgepa~r;rQ18k!S7ztS7`d9c z7?>q>B+YaCWm^O$r^T{ZN4FmD8f-f<4dsDlk%p2$^FScwWq286R#PB?QVj!;R)c_Q$#_909g+q zE5*)a2wY43InN}(?*GL%eePyd|G79R0zksuK2|Hezh^;p&3(qgv^3wI-MosS?Dcse z3wYu4uJ+xKEg|KlP)W&4Op5pT)cRwxU$c5nan2x(HJOnpyUkuYCMav(6Q!l-;cdT5 zJvD>J4s(G0!OKT}oj!%T=^~Ub9fX)2OGBM=s9>nwWq&`wU2!od;LHDoWbE((9ijb3 z<9DZ3uJioAmB0c2u3GgB@Ld=$gR?e8{x4*3|NqbO|19_V|HS9wAbt7PgT7qTv?KRy z2iIa`-ZvC<|MkCJ=IRNyB1WUQ)QOT~K|-I^|D(gKZu@W_4=`Yo>1pjZQRLgur9JIt92YSC${_g_Q>7Jn|IuIWGb0~7o2Sv2E7ryv%N<2 zIqpD;HY$ERQ*+FjJ%4?Bw$;j=+{V4eU4{$K!!fxn9hxpm%yw_3zDaHhh9?I?s-7le zci*$l36E8}d)vObvP|u$PI|!F2n2PQN*Bo1lm9m*-LENrH0H>0jGb~@hQD_i$2C8? zNRjgNmGcl0Mb~LT)`b5ui8p4*d27jeqY=?L@*bjIRcLv;&3+>2TjjrXd_N1yD(P_r z4tCOwy1OS7BhajKX~mjV8dzd?BClNv9KOmK>!B*|-BIH0bUpW_yenW<YYe-H#-Xn-WGY~E1YvO~NQs360RehS4J z?pXN{Xe!gSlhi=Uo3{MZ3Qs*BOrsr}lDWE35}6^&Y~AfnROUB5VYugx%Z;97ENel9 zOpU@OR_N~}vb+1QzcZaN^3VA|``e=N3r0pxGJy3^GU{}`#;ctPq&3W)Cc^iS_Gr4J z?9*)BcY{*&CMrv!z-lVX7hCm-&R}E(8fHV1@v)kc@6!@JkSd=grhOmSIMgi z?QG6z(VJ;`-Ku@yq-Rrszk3GSTW^m6#CWi@;#b;rK1K$;a)l_ntF5@b`gBVltk6w- zQGJ294>oj-X5xo%D>ovG%&|OeDm!~L+^xRL8 ziuqWAjc0zDQ<((asR~K8Uler5w7g&A-x@F~jCrEpssD6v*M}8Y5Idh-kUv^r zH&sQd6ufXUNiB`HGo%h-Jax#D9CpEK;``)0z#qI1Xvov{Js_vOk-|ZqD6Us##P(<+ z?!JF-^fAsV?MRsutU6yGvLL2N*ZKVDld@fRm%)>Yp-Yx${YcvBF|_avH$~ zNwAjIETE`M!nI(@PPd3>pMH}1rF<*2gG~ZIKn9N|tzB}m9F9;PEGWzpPVyWeD*id7>^i`gx!#Zp1ZEw2N%fo+oBe*}8L*m1viP{|( z0WAi-QRIk_Zj|;jEan;kMGVuieYv2Wbc!xTI~gm*oPnPOwuUa?uH+W5SSM%W2qg5E zyWj^=L*m2vy9$KHEWTgZi}A5BPXV&+qv-_ZDaFsT-sBTT!jZ*6M*so)sz?suLs_`o ztYS!gZ(6bzxGYHQI=qAOL>CSv01D29SJAk<8L8`#m-4}B_ChqX@V{f`sgbOqpMbjw zCyl1-dYO#>rXyU1J`CvB;nr6aq&m7-v)T|n_(9EZfJSu|!e{c4a`R7Bx5k*eFGVo` z7_>M*wQU%h2Jy_kC|wTgJy%{5a@O1pdSG6yntqas$0}bJ|FY@Rs**H+q3Wrh@5UEa zAUUb0uHf~+@Kttl8V~J2?%MK~Ow`A|-_4-0XR^#o|IM-I4s4r_TO98f9KA6wjW5YQ z%-&iiE!O0A1#sqb_lf??Fsvo_`2Q}_a(8KY?!K*1-DQ(C3RlQAvCf`t z1EnII{_uN0>s0(-C#JU=;-mx|d>WfcXCVUrR zSD&zDH=`Rix16Vt_XbxkPcKzG9XPMI3E7R|dV{A$ULNvq*xz=g8zQ&6M~Ai?P6Wq( zLh&2Jwd4Uw-%`K<+(~MZaFc6J zN8gO@wWkd;guDcIDjcSVnbJdrmEqb?S$)#rv6oO_e(YF$Hu9bz%C{%#!{$e#SUT>k z-Ga-5?2KhdKRkgSAku>Xxw72KavxL_f{{7kIvQRQLOB( zT#QBzNXhV|3joAQor6t=+GOA;s@Jl zM3m`%F8A0`k10FI;%cl+AYR!$`a&|kfOftpKivyTF>(Or<@X!gzIphN^uaamzP&c5 zH489FPU+Y@iVF}^0t&pqQ8LHR*}QEg-N0n2q1WL0qm;1TGTpNV!;N#_0&1;}dFJfJ z6u{^v?x!)mJncD#jK+|7euSsvR>pq z&lE=cx7lRH>m~e>be@Rm$?snb6Ob8`FxHn}-~ckT+opWNWH_Nigy%&3CbD}AZMnhQ z(-#PK%Ebd4-{!)`doUG8)kgKQDWPlH0)+hi5L)RsX zpm`%O_&DXt3X`{m3ygUz9)M`00~3dSNt=Je+8Og}i2rmU_hk4hwx2!SVm4(H763H>972@EF%C+1!{QcZESzD<2 ze1jDO{zofsEFe{y#!JC>tCzz@!z(ovXycR5V6$P=x>G7S$Kx05=~3h{br4_HXzOxu zeBbf5HM^OQpDdXTX>&C`^?mQ|&Ap4rzlNlut-7XOiKg=gmk-=@`x4J?uaog>m}4<+ z$3|a_y=Q){?YrIbx89kki7cg)l4=RAv0Km-^YZva1JvWbq`Ozv;284dj`tS2EbR$ErQ`R7sd;++o_A|$4D!WWGA6uF3t*2%_zhE47b0#LbDA@c=-r~bu z1~W)ZT|c$YgxTfiK9Z4J-;G(}%=DIcvYI=%_-EcIUl|*pvJoH(id1bL#H^$Qq{rbZ zg~qnY<7R1d(gXCrb~}koP`s)#gRe2aS^9l_XkUYG5$$jtX?Q3~YQpgra#kPW(7BPL zcyFQ3@wPh}>5Jj@9rEu5Y#8h7|DG`!ndfFz__O?`IfSY%pRdoK*+av3AmSCq*o!5W z#mee#xlX5vJl`H5?&0E&%SA1KenMWhT$b(axWRfixvhy=HCYqI()^r>LA-O78>7kG zAjytK<@MWcZ?dE?%@1*pRSM=Io-zEbH>9rr)(?>~ZYj5w$a5Xib}Rjt<1C@RZIIK* zLY>cfC&j)~nW3zB{>Q`!Zy4j=0|I|SXtA*pAnj4xnNhy=sBWwTKQmgx-Pe%YS!#}b z&J`kd#lQF1@|3|dV@yM&TGn68iuGlf=A*TV9m`+P=J` zz;<74xqF43(Hb(qmkqmIIe3$cmZE+E%N%&9nL|zsK*id&>mwHU^9qwjqjTU8;KJEPd{( zBILvS(xFYg`icNJYDau80u4vgJ2%_s z_;^LTeY{VjV153+K+Q_Y!}DQwE?!%VcLF4Zp&0<=!r-D%b{*}{rq`r@^U2rDkOk>< z1CutoS3m1{5humgz3T05?ZT_3$tjt5Wxq1r+Z`6)a}Ha8Sh+-d=#7E7x+qw;jj*SP z&JyXLz%J73aRm-{DP_(-&AkZL`F4By12~{M>Sj`i>-wVnzF^=c6achC=-GB@T{z$) z)1xT>h{wH55O0@&M@>tQEHlDO>T0fk=He^uv?Cw1of zP8s@bW3}-oEvml!@--k_lj@8xnpR5nY9g zxx=lv9V_S2Vv!3>1u7RGi=8QM20^Fy+UXBC2Z83YZj>yv1MD?biwvIhY8G*DuOFE@ ze@FRr9fI2Py|{1gwA3r*B;OO29|nHAIgA|koQ|wY73AtRU%5P3;la^Hvaw0rJR|Xf z$afFhakj%2a@&&edg=k$^G@pO< z11eI)HZ~iu%#9v0Fuu(w?M?~!=&RC3Hhg@&vcuk!-_?#BV38&TPhg!&AfA$tk-#s^ zgYRiH&fGO79(@|k_ZcBBq}MJTie_4MTrVw$%rb&M=lnC^2p{KCbpI47PmXJst$RIk0MgDi<^Xbw*VBEL{ zA(VvdfU77`NUmJmenq6|KYj$U|0lgsVYlDz)5@^jr?$2Z0F^MX!c1{Q(7JOTnEOb^ zX*Rh>`DZ%MW0h4@yHg)FrLA$@9?j}+7$G!ZF&MJAP7 zO}yI%ZL;rZ-n`OsqlXQVz*G93#7-jy<1d{bVD59tIy*b28^UKW+h1ICEq6($%4F+m zZaQ9v3^(d{Y$rfgGtzS!wf7vQ<%`b#tXEmMM~VWu&PLMQ=KQ3Vl9JEmF6~xoEyR(8 zpGrToSBwyVd|ISDzGiKaS{Nu)P~9TJ6Z6x@J9MujYQNXrqj8<5C@E_x3FwQSN`C1B zvix_iPHE}`vdX1TfbLgne3i=v!$}qbzKEf;5Lj-8V5RPK|1ZwoJF3a`>lWQA zh)COt6scPgqEso;Ne~276i`q)QIuXoZvh1X=}kaN2tD*j?;yPsI?_7sEx{p*W7+0dwq!B# zflK~)b!?lm_Jv12CRdO_U|AG!iIaSLy_(-p{ZO%MQ zG$6!L;BD+?dFzz9*J{bpks|@DS88?k@PZ#c3+v<$^$k&OfzUDwKId#NZGD~EFz-^L zEDyx^pMpWJ4>COA3k`P;nCuL80VPr7=X*BJ2%$902NR`}USqcgmXGN#ww6{BV8!Kcj)VwFY|^za(4romX*HSL22T&^Jh%t+=+fXNIm3 zB0J*aK5W|P+B`1}c-=n4M~Q3BX???4>?C30a3K~s0A+KNsw~Gdgb6P@1cKH!R$SMw z&L|w7zadOS7@=A^9(9lUyHxAUR;i)r8mJy>_Jo zjPqMGIzws#bR$tLc9n6s)x=|c&&El?aDifBrtU|E`$V$)Q*-Y~EK%O&rlHiub(Y|g|s1X*jsU>i{|iXBm)?B(XRNJ|HCi- zt)^5(8+s@~sI_ERl(q>r-cWObB2KEr1Ec1F-4jQ#Q-+JPqOwFOOo{#bv!@6Z~z7=cp41`P%Uy(aEL=RoYJlj|C;CkAN0PBEn~;8IHbAb(lNnT zaL$}4N3KF;Yq+_g!|e|K%6(HGyg#Hda9>Gg@-5Vf)0uj7T)pANT{Ik*Kw~ka?9Qm) zFA-t9n{}B7YF}1rwj{$sp(2yEhmJp;U;H~ld%3E-72GCesaDEWrv(gj%Eu*XPR-U2 zLj4}|ToqJKI(8#lxVd{4IQE-Fj*+rIpSS~1yYN|eKN_xy_iiVV}ptsLGZ?tky3uJ5G?DdAwMIpSCwLv7Nb58m3CvXsuD={eRJ1 zD%bu)b8!_LME@9SSzU`4ledCSMrjUfxdR*_SSpqFqx5lt5| z$Bd9G^QYy(t^Z5)849;xQr||&sf?y~JZ70Vc<7wXiVhZtr*QWUgg5-z>W4gQ)TIRk z$PaA)q5fD%|F6`ajsJ!EGv1(fGwcel_LEM;cusOHLW3>XbT6T{Avg!#Bo$$OC#xaX zXzA~Y_c;fHTJ0YBZO-f0qv_-8*s;>W$zwtNf9%+uGS)Y7SC;O-VyX7=c3@h%cK&$%r<(m2+;Ee0G%maX}cg#^zP=4ELEXU z4x6N{$Yy=>@G0H10!Pa+?%yFkUMuUc^vK+7UbY9aor=hEcn!A6A75#(b&Jb-jupTc z{2DGdLcKnBTRfdjl3u_! zb|#y6qHMl4VPvj&x)CJek{8z_`SzQJ8GMvUvPi4&CA#V$%PFv(@OndA+If83&ig3X ztjHx`RFqZun_2P7fNTkTOAfkOi>uIYI5zd#aYS?)>~ltV#L^W30PIiM>jlVjH%r@5 z&KdW@Wy2Goz?sDEa54vaNbcv?cW^g4+W@nHb_SQ-7+*u{wmyn!z#|R*5M240wxqKF z7C2z)gk0~TxaUpolib+xBFh-ZH_7{7_`;{ZKK(w$JraI=u`hHHeUa4J4>{Xa^w_CC zUTgNJIxLQWQx9s!7Q680>CeYr4;@_duUuQK)ef?)k2Rg1NF%564x4pfiLls#8O=ZX zk?3Npr<~<1l2AnHaS&@aNYydwn@KBI0{_A|{pwMMTbl~9{AOcQxU12WI)=OU+XOl~ zR6zUihe!L7Y@>hp!(>Zr4x-Lci$VPyN!`Khh);ZY?gSLgeRTY(+qml*)lXjT1=2%} z*A$lkkRaBmFwWhQgW0;_*88WJX^v&}Eo@aD-WYtgd=XpX)05)#-WahlRQ{$##-eRn zlr%9Rsuuh(`v@=P(o`ps2Y>>frb0;j%>^wl0r?%VijV3yD9KvEZXI(P5?a<`iwO-QQpX&fn)q zuEd2ZWx;E&X}F>fV8P_>EF|rC6UyQwWko0L;YV^#Q`~l>{m#}Vv%1lvoDbIUT(ygx zpt3&OrSIDa4#kaBzlM}hKBbUhQKp8G&hnA?#Mv=!COGUw#Jz6J{$xy)J8+-BBDrMr z^LU;<4t4C6o99>@vnAi)ntxw$Db;q_7*#l6cSePw$eNmgXd$D98>E+Csc)b-QzmN& z8C2-@RNL1S7;+75V1j&%t`s|@KA7N zt$IAZ@S(x5UrdMC)#sN4bY=o`Fnxvhjji3x%JLWxdcXzM0*ICylpn%Y+aLC}-2l%RF16 zyZP{f2=Eh`p~hCtt>%FH4v)YLf?>n!q!uSh-D_HnKXHhdz_sd(iF~&BqKp~38U4L- z`<_j**!nB!6d~fM}CB4T_)*N&| za_{ePdH}V#cby5x=#~bPU%7sD1vKN1a1{`%={cRCY;P**Qb%&@jF)ZbYI2MQm9KEN zTm6o~F+QB}ag{#e<#2PUB>1~v_DXc+6M(P(WQsPqv+XU=_i_#FeG5|mhw+ma{O8V( zN^Dx2?NXwN*>RP6I^qm6z0r|j)IQS(VgF<9?`_^f#wsEVwsRu|jx<|XS{*4=^*-BV zJWfIjRs;NfvF~uj-@2KECW3 z((dK@4fD5Gc%N#gFdg~}g}Jd@Sn3NnkT@hlU=m|^KH67@kNQjPFBDD}L(Fm-T8C3> zmc_$wKdBzIgC~RFx3$?$Uhirmb=>ufglbet#l)(cAwp@g2j!(8JoSpMb@jayd5$+v zhdlvmm83xObrwR>?+m}+_&c=0Q40!G0=|(A5UNvr*QKh^|nb58|m^^d|kqJf( zY7SfO(ft;vU(A|a0w|!Ty(&oVsV`K$r5vM7J*}A&A5rx``P%35-x)lo1(M~uc;B4o z5^PNs3~V)$%QAGr(T@s$5iDQi)QWjKfAbdUX7#;?)L+x~CY6eLDsSV?D>$mk-nj20v!?zV=?3Rh-~E zHtyNGh-KmAN(B3D+!cnMvcavUF1;ouj|wm|uP8mMjaGVA=g1_qO}Nt0W(aHr(8YDd zr4HD?G?uinA!qer#p8Z8i@3A0S*E$Fn8a;c4)G*MigHKa_M*AJydQknTRI6=zE4{~ z83iZ}c0Z6m+j_DT*}Q{}0Cua(D-Zu}6TEkR7^Zw`Hg%%0o!@V`AGcNKkis!nBUJzR zUuI5D{Xfhc9_N3VIiYtSdaqus8HLIK!=Fn<^&%<~7g|2|{%&CEG#p>WoMTFNVUBqt z+%2jz4p>y&eGa>l8ZEJK%f!<&Z zT+*?uSO^+Z*An~*u{Zj(pGB7LJQ;u*EgZ6r_v`2j=76UeA~zT!%yM6T1x{HEsY3Io zjQc|JfEHJjw&9S%>7Wf;PpxCd1z{IPzDlJBz3U_755S{pZS0GWfG+V3n&0s_^089Z z_Y_#MzM@t&zix{+SRu^WUb{2NlxNp`Af7Nq)9EEe02Zy*MxVyjxAgJ9$T6R!bw*Yg z0pKECkXR7n^G=Sc%XLZ`i|tEkdu(ObLcXGFw-HkDP_AO)_ZWzVK`_VZ2-BuJJsvGF zr+%y6CImW3pAdM<`IlKSexhb-ib)-;?l}ah;bGUdS(WJRT^`rK zIJr><=y>9Q10>9Gx)JQinkab-%2PL(lhi&I8Uj{kcwUUjo)g zzMuU~n|}VsX^HUjznqpFZT{P7$s0$<8@LaQG>LgXsr!mc!e|7W2fl?6h=*CHr52MX zZ=_u}|76!dv#+RcT{x|PnS8txcuwAA4QGc9CbW32lcBqD{Dz89D8a(pQX}Mn9jbqN z;xrswg^-SJTl&{ysk+M4O=3oS(wI677@z_=WJ_zGPd~L^8Vy{%0lYg)8+i;6w$~y; z>7J$k;ja2oh?a*%52C=w<>+1AU98aC^0v-JEVL>uqfzCbK8`4yK;|$0=Yl z!~)Tx4fFgng|Yy)s%s96HE95S);hHpVKrZff&KA62nlblgHQGWYYX!-{h3wWJRxz8 zJ1&d($&=+kkRE2&BWxiEp#A|eev3eiCnI$L%~oKpJxtL6?l!x4eh2Tbdljthzbjh! z(%bn#)aTW%T=5H-|B5d#1ifAiH)uNb9c40rdNs7JI&YqatWrkO1>OG(+lT9#r;@?i zpe7$P5{-0J?wBIJN<@gwo)QCBpq+I;E8bR4;mjs`IMtKKgOooZ?<{3E`gA|fOlfQ9 ze!&@_+MTeEv6ZFD75a(*Ol^xo1Hn51A=_Ae=#Nv?rwEn(J9ye4pvB*u(xGsez-(N& zj}y|S+sQO>H2KUFko}bMpNYd4Z^#I>KSQ8Wm3;0i2BNZmTOdXD<~mh%hO`{9^)Wtu z<1Ov&GHTJiL9X2cwZ^xGV%3SLUP^F%yx zGceY0YoNU_$zs89_$4~WVZu+fLa?9tm8F25;*`X+%8_)f%ZpGivr$tPU16cdPu*d@ zz_>?5yN`6~XjDLVQLj5PY=05Ini=ziU zvKPa4fwIwu(}!V_Oy@10$L zw%6)jD3%UWS;Fo>gF}4SjF)a^)3tFcp-xKq01b9P;OTeUzBvl%+{TSt*M}6JQt?sk zVj!Hav5_a`fYZlobV`Wg;ccrQV}Lr|S$mpj^{(Y?lU2gzeC*O4ntzhxXCL-!ht8kJ zR}MPNr@*CGv@Q*O&MMn;^$BF`FOR>K!11!=ie*PSdZuINjX1nV;2`{zw$RfU!FylJPdkDX7=20_-MSlHkySrxXiP*SlyUTZ`MDMAhGHHq&ilt?C3Fz zo(RN;=KFbA(<^8$gm#}#oU_8H81OP_`)hEr8JGjP={ayxy!$Kb!0BTLm{&Br)aem? z$*RX(ji$0g2(hXZa@72zM&}p$a-TQnJ2PEBo0i{pMVV#SY5tR^F8Z3$d^1t?MP;F3 zaHIafWmkDNjlah-Ctbgclg;}s1a%m$TQz4-xqZZjw&!{jbm?!4wad7$FR<5kI~)IN zu#~>W!%7bqz-yAgDTwzl`BUGMz*VTP#KkV4G|F_-^_IFxeiNu!R&{|gG^tzdsi21N_hb{%Rfjb(a(X$1AuwUvb(3@z=1E- zIuu2Rnfmi0TGB0i7zjMp(T+7|WaF=Lse08J4B^xZIF$ETPvtLN?~mtE0})tpR7IG1 zoueOaM%vgnbeSo49GYB|QyQ5)XAT}O_;yYhXdUNV{BjqQ^4hBuJs@MAdvq1H`=b2O ziftuK?^%ZXmlLLRx&)@owOc-u203GxGBhMb5*@2Nm7QLGlz>oKmA(n_0gz53JioZ$ zdxC?y6Hka7_P@Q*8Y!gG5(3ndUoZo-=B}cXEDN~x-|70xa z^bNSZ@MB7(SVIP3FW(HOmXnn;Kbp;RovX(m&k*bJc}dIT*a7GK8gD$21a5@9L07}A zj$!zVvG;O@qHm5izUx=KAAICRW%3S7DnLYJp zk&req*6tk>Sy`6ZGGWVm^u9IB%IU)iyO`~?BuhfWpL)GRB`$LN8iB2iW@Tunc}bE*GnW$=u1wx}FA<2Ga9KbaUcoFQ{PkVSrU7xP~?8iMXVuRPQy*ywPh(ucbZ)?5|!wP9Ic7t zXS_SCX@hA)h{HvJ@Wm>JO_@BZ841l4pN1TJ+$SC=t`j16$sbqA6Oq53bl~>4RNI>A zOIKJOPD1|kQ$hqUbHCUnbdZ0mH@W=c)4vb@LI3W5_m9uza#d80V@nFbe@I*4aJ*Uj zKQDQBNV!XfPUGaNi2R>lj%PO_Tz)6Wu*_tR_4Ax#96F2pSdF04@rm8^-#hsWxT;Y9 zmEQsQKe)Yrp2qAzmKWbY*o8bxE{b4QK~~u@hH;87zxe3)pKE+m_ylr`^-YNVC$#^^ zSN_k3{Yf_c`@URF`J4U^?(4r_4cy0l|3B1sdC5ij-v95u^Z&okUPV7oX|&y|y^An`%SMd$Zv$CJSS z#Bd@#bLu%CN$f8*HgN~BFpfw3w{GVQ#h&Xus@bZ_N@?|Ag2pye6!hG zf{YOTJH7o+V?g;Y;zdXcrI9vfXoI5RsR~Z}qPfOy2Y!D% zRZ1h8zhwXY)kEd+vNpijQT>BVzy(@!{Om!Kvq!{Mx`0sKjZh{R+w9XAl@H?)sJ!~7x&U)GVC?otGT(D7^6V_kyoF=owBdNp8Qurv{zC_84F{ZYzcvM^5o^2=?K3lKrP-M{E{BNP z-0V>4Xu<$sxA=mSJHym{%yX3t0mrh0eZAg(R5bh*HoVrL8}rQU0W)OBgYIQ%1gAMl z;|jj%s#N0{wa~DvH;r@D=h|dB^}^0_^^-kne9dIgSd=GZ*kHM{O^p-Kj?aQUsGlWm zFfJ_8LlXFkobQ>2@H8;7!O-FkR-=r3lo&!6-}d3AQ^=L?LRnbA zw(y}t{SLmv- z9~7~LG1t|MGV064kE^?`CLCO}HIboH6faoeMYy*4eJEk|cpZ8X5wo`1mn8PkKFqsn z<%Ztze)YVWY*P<4b40@5i|7v?4P071Vrnh3>SwPK;;?hNt0@Zzbq4yne@)j`EXPe=1oiSf!lw-K{bY zyeCLXCpj5k#FXv0O{!xxu&dm+=;r+CJuQYC9yVCKeqvMRu=PAq_<^*3{-oo#F>5NM z=FkdnSsjkg$&Oq4&Y!VV&fl=ek-!e2=gZyIEr%lqLK3us1_C_K)q)%>&IXvj-Em#$ zeLPuqz@V5fT)>~+XXyCA)&hF`-oqmhkb=AxU_-@`0dccW6qb6*CeGotgw2OL8s|zg z+RiL-bjNC|yyi>O@)m9C6_%kPeg z7$oDBIY;B#sU^mUc3xL|aT0XqX6%ygOolK06jF--18NLC%dcJPiMvm#PS#=`Ea|Dd zZkO9ON2;u3#?F)IHpkPHLs2I})L87tEX?%ek>Nee3pq>ceD#!w<=d7ZUTn&E@DnFo zbKAGFct;FV865%7p}aA})oPY$F*$$oPG zNw!G4ujP`cKjrb)o)K;39Edm@@q$kP$GEs?h2mq10xXky7;cPX9ke+004J#d$T1e9 z(f^3H0r2bv0u_>ygW#QNF0?_)rvUPo8r43#?pN_mk=OTSZ#=IVgWg{`HvsE6=Wo(f zR^b2G>pi_N7H-0INI;E9e-uLQ(wvHrQ1lmxJYTyE7s$|;@*42SHBIRBEuAjH^9=fKi+c`&Kx~_De`vT((6+}Z>D?c2WGqv02ebQJ@>vI63aGyv(`QI0?<=py7{O<|A?tfJrxj)mtRI&an~HnJ0fwZ&U0>Gd9Lng=MN5| zU841@_`ua`B|1&(Kj+jkF|zh_FWCyAojh>{>6*mGXP)6yZHrb>KOBoJu=25j$D`(F zZd=;sF>YUF&OpZLx{~Dgi}e_IwM%^L&lIkO?aWYA4u}7;u6Ltm0kQgx^%!Pfff}j@ zUPf5t7mluV$6jKQ8S8urvt44MFrIEG3yJG15-TV&lvF|_9gz`jjC}|4LMatOYAXgw z3?C}qEnR7X-Mh1r-ROR=P3HI8&0T7{evV_?Dax`Ge8|cPEGj1=1dB2Ar=!|2L!{YZbt)bR%bOqUX0VTe(jmv-mAegw`}&BU z;1HI5pM2BL-sjR5zcP{pmuB%_Gg2j}ehKjdo;H%zX_Vpq>ljtNYIeiHofpN}bYpkGiejt)kl_w*NZ58;Ji;cE0yPRUGF;C#RNpc$s2Zu*h3zGFN%+RR(iw|Gs+_U(f0ckkCGYUaZqcil4h=EbI6Wz_ zH)+YFuC~Mo?*;cgtYGIGA6687Z8@^5M3a9PG&bUB+(xh)D0tdrcr&J5oGhmOX0_$W zE8~*X8nKEN~RJ%>8~wj28biMkgI7lAbuD_Q^1+dRVB(?s(|$jY8xS&aQ)sy=W|;l@0W;HxnwHwg z6#^TjgK%qdN>4~9lcwv#ew<%W3}7&KK6G8?;PCyi#g?kWxAFL0S-&kZWPG%DE|>dx zuH#U}%Vl|)V(^_!Kf)sph}iF>ddd`*q}mw%y#44WIO^E*7QeS}t#Pe8{BpmjVjz{e zPRr33E8an{$bkjddUGmdfS9v_jbM?0kTBZ zR7_8fbDn#dZiGY}oP{8*wy|AJu={nh2Sh41$nNn7)q<>bt@FbgIdN>kpI z7h}0bseUpNSq*PBCdC~WJ^+2F;rk_~5fKeFEpjTAA>&ke$JZ(bHwyF3pMQL-Kzf3t z`Dpg$MYkUPi|+KYuA9cr1?_-eq}A@*zO2Cn@eRkms#f(Kx$MOejaW~x^pdhq}Mx!yqX1G@uQo<9Pr}iZi>7z+)8zvL877vQM zt-}qf&n;Hn&IoJsaj10$;S8(QMM1(4`d9;dRce9{74D0S<3hzhwMCU<1Tvm!Wt^Y$ z(op|N!}=&uIYR8M-Sy4ujR`&zkta%_ulQ_2q}#3=#gu2BBoN5^n@2GN5aRsP4K&Tb zkEjgu!YQCTzw^@|V0=r{dt&bi@yk$jMc-0_>|DDVJY1jDRR`hasR_X8 zOXEwwq)i4)pS|c@zv6E2P^SE)UxyNLJlbPCUOlwLebM0N^Uy03gkEjWZ%&PmHbnxX zpt9L`_k)igl7+BM^mXV|cBVf*;fQhFSHvuqC3DhaTA z8K`SdiPyO3{ZWl)(i8zJ6Q2~Z-D<2d86?$#FJW~R{aJw}Km+f3oZ{0}>Rg1yH(Xp+^K)g0%oyaQi7o!!^MDVkGBLhQH;BZj48*%Lk>1er$6=#bHi+O* zcpdnaL5fAh!QpyobjCD6HDy*Z8bw#HE+II}eA1St>zxj}-`^OJA<)khPZ;hsL}JP$ zx?UMI+{28i>@Nq0_#H{@fC~$Q!}Vg#)<|hpSV|eewzfOVlOic$KdMLkI(9&Omm?}}G zasUQncP!6VMM2YPY9q+Bp_ApYrrL|5IYk45Tk27XW^WQoBRNt;5$z4ff{2p?gi|K? zB5!HXtTpp9Z1TAdvf)cIgO-`&V!27l( zf!&ZMkU(AvQZ&t_|M|jmi=&EVr-hL(KyLUE^4>b%48?jbJNi2lm!I1Vnt^_4N?*BtUI-0(&3^_vI2Uu_Kl!3|HphRP3|{_iC~Nu!uY60{C01T1Ic zEd5=HW5li5{tRb~+>52wU~L|hUHsKJ&jh!?x0JnMSkt|YS09X#dsJ*$iZ*sEj$2Z~muP!M;p9>*siHz~giH7F&)2nU89mYPTcN<4 zE7q$l`?A-bBydJ9jd%8xo>Z@T8*v`?sRInRu zxyaHRw|_Pej70eLW`%l4oU{c_$jVi<#xfHp2tdVYGGj+mdpMAe!Nr8V5|yG$nTL~a zsjeJZ(Fr;eir^eefLuj4B{tPNTXQHjB-$zVpf6q?t<9+w*JD<{iTU9FEB6g~hAg~T zv#kh2Li>}r-`@ugp&%ObRcLc3;nI`-ezgMiYo)2)VaJq`=s{ouK`mh?p=FuOY4B#H z{^7>2^?1bJYiDUPyiw)xQp&1MOTcDB(yh{b$Q%*++U}fmDO~Z!>1*YG7SN?1p)%&E z*Vs|0Z-~xh?k(ktqhl^J8M*2wyhV$v%?{vcR!(W5X672thu8TTIDb4E1Yw{9ZRL1HGb~r+Sfmo7ElRsxVmO zD?7uPjbz?+DG}^NNE;b?+^*r&>>?n}`uc^Y%S=OKCdT_v+xJb~)h97v($4u;4kE;x z?N={-oz|LL&p!~W-{YSKd5--weQ%tA4Eeh2r2 z1Yl=U35GUNm1scjby0$?8ux%xBdGfj!GL~v=CWG@wya5yYj}GEWjP!c7Jk1;E>)@g zl3A2fEY5Wh6?pMod@C-doL?$IoCT;!B&p>Fk$ssf2xzJ&$m|8TV>I6sq>n8a*`!u4 zIBcLG;pnSv;m}S|V?JQ)xhk`bk05xe4>t(ZvZ6@^W#zASlJE)1i)G;qhKBVFkxhfV3j}(+Ffz$%_3)1dMJ!I|~-^%MMT?k4!wJ@mt2EMV^AAo`) zzvgJl1Yn+}Y}|9SGBf+2^kUwd3NJd``p)`;nZi@fAM=a0fHy^^{OK# z&I@WsR>c%Ccoe#B~$Im#@}5^ zg}V^h{wlE1O$oB{JZv&f0a;hwx*f=P@U6>a`J18K(>pgzmoKUn21j-PTrg>eBSYxy z06n7pvnu|4%XMt9u2x0!n65#QPh#8d+CCZj>UEBP;C}gaGD{~99}xLLK#oF$TxsHY z7yF~UnH*LThkK-b5JhWiI@jXQ7ke8&RW{JH{OtpPyv%^B5j=!v8b(p?xaC*2dCZyq z{Ag-6_?4x5tSag_Bo@;=iZ&JW2=%tx7Q4RcMsqk=41p&aU5k^CX0j4r=wAJ-isS-? z+R&rlc@gJbJkA+}*RxCHUp#kIFq(1K6!Twak89uh?NK^Q7Bm zAGD}?wleCnXQ?h%50d52KGhgEy%DjT{$hbr&0&QY*r6_awtX{Z%hwgLF*=n9v~e{1 z=XL3TtTB3+dz*p9sP-wkzRcgK0E?dC~FU z0a%qYzYe)wV?{kUN_9wBh+kWYaag&3%5C}h@ES>3y+v)OZfv~!Tpopi6>^CIA|HEu zS9(h$%T7r{4+is(zSQ$NW`XZ}2QZ>MB$ine*^@R;f@0uX)@$^B*>H`iUI|wp4R0{`huSje(hNW9_m*t zn}$PF4a_v*(h}ctG}$k~v^{zY-ykK(H$JdReFu%8U!?>j9~_X4xxN=1AkFNeIb^0} z6}O(OTs}yxYhU~XY$hrFr?2TgxpLkbhph|cAe5$%I z%$%1Nld{j-$Tx^DSAs+R8pZ~?M4OsWbd3A5?^~3ROXr?DA2;>2D_=9crTZM~zdLds zKwsC&cYE&aAnefJ=OF$3S@&0vTbBHS;y;C!#?4DpjbhjObQ@e)XJjnC_WrbdbZ0MK z)U%CGi1naqa#f=PeWTua+098r%lOUrs`rHVyu`;NUloZC9;>1)>+3YNepI>RmK)=` z;z=4~>YyX=v!*HXHip$g9aTC^;w_2pU!188s!Z!FG$0Rj#Hpt7YEdmD5@NbMH^OT5tUMPLhK|9pB^+YNyA5{0_{Tyq`H?@DbCaf(5K z!k61HvJ+XeFQpz;1RW|QU&$^zjl)!8#B=WBovHPVNZjp{|Y*CSFLV#<83)0Jn9~f zbo5I3L=@~KA2vGyJ(R{<4fK}~1>60v#fZ8|uZDCR?=?!%A|1=VaZDVR-rdw=W>~;Hw3C`{@pG=Lz@ygn7+AprV8n;x&;^f929Hz{BT#A?Lmc`CF&p8d%Ql{M%;gyLp4T^@uW+{`|bMAm_;0Oo`U? zr?KP_ug3j`efc&hjU3IlD!9LaF-6Z&Py){u`0kgs@m{5fVJ=71)erG@@R`8%b#@_& zyEY+jhx4j63tCH8u697MCqa!3zox1mgdQg|l(|Q_jUo*CZBL%&rCi)8oV!uvKDxIi zy>YT;&hop({H>=ZRsiJP8jc!!&cqzRT>j(+1)tV(pJM_m()0;_&L0=nd z;N%`7^pD6P&kPF%lz3qGMZJSWxhP6-at?a%4jylyY!kMUu_6BT9cd0s310ckF}d4H z{4&O+QX!l1dLbnYv5?U3e6KYaXLjUbDYR96@=L19pscbG?dq8_#QP=WNIBdZzu>$~ z?>hXp3{%^AdLSkc=T@3RrIEsYjH{99H<$-UI8f3!SJ30tJ0H7;IXqsu)*CM!Ul0c8 zEZY(S+K>4{eWJ_fAS~$@#3%jqb~$6|@b-bCR?M{H9_E|!%I4-Fjy@X^1v71=#W+N8 zri^R&1WCq}#H?^mLti^F2W}F-+_@K!V{k+g_aMbVj@@?odA198{8lEVB=H;=mhw5m znO5S)R6z~?L{8_0-!G*dzV_IX&BGjur49TYQ`9IaM?;3Dr?iS0m6H~W*jVmlTri#j z1?NHZ;Ws*N${gX%^647YL7`W0or2ruY{C1OIH0j=MyiG&+cL~>oV?mvY?#-x@oiK*J!XP+AQ583q!4bTa>&Kih|LEaEc?mlslqH^rhSep;wsuRr#vLyP zUm1=V^tmA-+obBZbmN~Xnr|=VA@^QQ0YrIAL6iC@v~^EFcmprqrSX{@6Y;BZXzDB1 zH|B&xXvP6WgOUtw5T((}YK!*4E}>U+eH78Vpw%aWFdE@BkWMV0qe8+7)n~tEo>M)Q zy*KM_-`+yR5I^u^t<)D=R%_($4}=HJN_8%E3ksF2T*W{FPl9wWYJv7ANRs^4L8HLt z^os)!m550XWvLkEP}?OD09&1w0-ek!PTPjW^`VN2KZC8wSs{R)>?DIuhwUMbjz(mP|4ca z7zdX<)$ZFW1)EMdKaIchFEyEmd50zuI|M3YO!(k^%pfCEt{f3k@WCbE&qHQw zj;tO?F_XxPH7A2R@0_O@WG0`LlxkuhO@b6`qIRT6dPv|t2MAY)A>tzNZ!1U@pJ&>c z;gg4y&PCPaD^Gy6y2qN={_Y@%OM}Ioa~%x2tF^hV*54? z98XOQH^fWn824n;#3o^TXo_5Pn={q8Vw5a{_6KsbB~-|;APhyI1=$8Q=yG|`n~Jxi+7r(urnW!hhSuZFTei8vRQbKUGIR`c!TKNO0S2ov zJ$pQaflt*&UxZH>hC3Ss;QSE0HebK4ntuFrKD1}NDsLQzf4C@H>LhHFhUV5zvj(Fuw`>tYnt(j}Yk6VcBPYL=pVY?%&Xg0Si?R)Z7@Z zz~{7*%RQR&t4alj?(|+YMX|=;-O@5>8_NkCg9#r7F~ByFRC-;*We-e}yOfYP#>U4D zbLl{TbNG966gj5q=?}ZkwjDlmC~r9wC2hhcb`~;%l%$nY30BQ8pw5qO;gRNf$E(Z(CTmvf<)g$S}fJy?@IS3 z1Nu9TKT1d8&52QEQl;vtc#5NVk6$7Z0f-wHvIN!aqIrrw;*%QL`|&HtwAONUd7!d5 zjHu1`xtd5A$Zq^*2f7uQ={U&6czTmT!?UnQJ?lB1Caq>-So2}3u|7Nvg*KzPdl35YqwV^eewUJK|!3zmt&DK3PdX5xQ zrUfRw=W$3r_0ImA8$$b1qt|@%eV&iJ>6f5=Zl_92)wtZI&KeKy-t;@i(CekmzzZTJ z%W7;FJnl!Mc&2okaGMvW#6zJ9MCRQ2Sz~(ju}?DZ2fHCwpW^riJZZe86mlUZC$mEm zGbq?-gZ@)${3N^T_bFxIaaoxaUtdvXqwlL;bw<8dj8^Y4gIkM_94w_@vKG$P5cuWl?VA3+bkFFp^SbrwP>X0=K09Yn{bVsR+}0<$IXaokXsar7&r+q^;twXZpe|ES z-}S)7u&hD0<1VX~JHpm*b|rjneVx}UY^Ke@@_<*+Mzz-}w_fAHQ+xZS510YJ;m~m# zWpxJ1n3zRUT6(X)e#<8k}DUHvuY(;IrX4&=^PoehrhE<>H+5O;crmqca1U z+apnN6ZON7Io^@VeyC&fWThQvI;u zvRvaetLIzeuWk<3%L=+7kJrav5l4(t5F5#5HYseA7yy}JOB7P*U#h0q5YjLTgee|! zbJ@W4ACRq^#G=mER zGh-`|#Fx(iJU$S>;~&breDJ6u6e-ERPH#^F*xAJ3%uA=(y|V|-8$v|M`?rZ_x3;JY zTsNiemHoL$IkEoA=entJ(uEg~y2_d2ir3h zKSj~OBaYZ})t~pc3EUbb08@XeVt>W)u!ne-bInv?0qebz++cw;~; zeB0k+tiDRWbsF^5Wymv>R+N$0v~I=j_2u73voDQ30MKqhCOXtTsfZa)`7Lt+UaQFg4Z{^vnPXPi*egHXr8+!eZ-2S1z(_lj_7 zyc=&r4=rX$^N83^7qIh+eCtI(4t?t;W0A4^_?P2R>-$NP1IYtu$JrPt4c|pmwk~q~ z(lBO!2LC;F@HwK`?&#D(=|#IIFI>cEGtq%51gTz6l_d{^NYD@P{Vum<)U62kM28Ts zIXA`bt&geT&j+`>AG;Xi1CL5Sf!~3;+x{QY&O5BBZf)}x5D^81R}cgOq9R?SNKHVh zv``cT0zs56(mNpvA|OqqNexAsG?Cs#dJP?=6G|X7A=HF~+35S8nQy*p=9+WnPc9&k zooBDT*7MxI`)=3z)M!TND)xxU2?Kqn919w`!WhIMy*e{VsEc!rSMba@=}`s@6kidP zq8-q|gCiFchJogL$04?yFCNf~6-z=F$PxSUb&VYE1eyKw{@+MYCxDn}q#&G3xa9I` zk(}4%Xukr}Do55NxP6Un5#NG@yxuo?3erYe z`(fP8oxb7HkB(Z_VyXk3sK3$&OTV;A6W%H`ludKDRr*F!rMa)%yS9Tp^Mksjc#Y7! zGq)SG68*GoV@Tfrl#}(%IK0bEqs@;<3E+m(Y-1J6hj|^3u9rZD}p29`$#**D=+rFy!WR(mg5m)x!y#I8tm)p9pgr_ ze2x1qubT&+qWHY*^dHgm>p^PR23TX&qb@nW(tgg?NDQgAAz1`r#WB=*w|t7T7aHZR zyP0g4GXhu~>*-GO7_LjI*;Ukkd>_oNTJ%JpfzL`dU%&5ND(hOWafw#Jv_;XdVvIv( zgQ`+XasHJ?0+njHXChcYDzW;bIM^AoawwGx^ZdDeM6p_(PplTc)=Jpi8 zO=`GsM`}q6I2FV?k4!Us&qln}s+LOr`0&R8eZHgp)qKZ1FT{40C*9F&Zt?!~Hc4~s zE6(-Vut5DHxTZ*3*$tBhuJ?(-Je>2!HD-oEF+9eudb*cz8EBi4hI5bq;zt+b8d?2@y^Pa_0jt} z<;^58x$~g4ahpg#&JA=qh1rf+Q$f<}ZbtA2+Zu3TsV*!}ALS;WDfu+&?73F0+3Hi> z@!NQYQjs13QAkw7>NBe{`k3`zWO4A1JXg+rn_G4-lST@K0D0J(Py^H{9NkdR7${pP zOw<*{n4!x0=%u_96^3J%lYIC~k@&&<8Sv96nfo)NJJ?lUW_$Ug>Qk}N28tMt#g~CH z0Yr|2$@yl=@PJ`M%PBR)R&n<3Y?DZl`uhFbo>O&RdIiJca?bhWJks_1FZ&;-&Srhw ziuIi%P3IS9sX3~Lcz1UU#-h*9te9dPAGP>hRVmlO zJ6zq0cJOVAw;TVh{@Vr^!VyVyAXy^Q?@mQI4R^}|jSD7xtGVs&-i12C*5@ZBtCS_? zW1VeYb7pg0<)TPs=j|{*15XW(iU~o}l*)oF?~crwI$t5w%(h*L#6|O?YNQby=RI0ym|sxB8&tK>N&P8^zOlVT^I-AA&~gn zS&P=|_fiORr^oSXGTkk(;yucpz(5pzzV}L}$zU{p-0OII7wbhVSY5=K5MVdC=%(rZ zI(68gbvUZdH7>Fj#}=#Z(!L`pgm#@Wus*CAaoudOuEUJ=eHE4v5&^3BC4s(DWm9E7 z=qC@^TeB|PU5_MIP8jdhDWk)oxDNBOb~}LI_A|P{`m-Ye+p@Up7n38kG0yGlnc;5P z+F(e!(vQ9geBdX-?nNh_#%YA-4VdpvXEM+_=Lu*td1vdhPN<8Cf(NsH7g4``_XfU! z{z&xT+}2+oEcRCULBLdJ-SXM@wDW-WZ-XmdfmuluC<{n+YrtA?>AFUkD>dsfK zT~K&dtY*90uZFXT*I>GiR75T6_hP&t;l_ym%61^UKU{hv?fT!i7T?ypx`u{Pxk9zE z&*p&xi4yMfEK}F~sKT$`k4Ow;jinKb$AT`Y9f{63D~m-5F|E{3wD+%XnsBk;!TGGQ z#b${8Dfpmcf)#+Nbx6-Z=asRVe|^|g+@#yKF#FLVXL-QpF?itQo}UmBIhM63mTYzM zlwZ85YC^*fY4rARqpuu#48#U}#fyBd-}QNdvaUCIdoEJSdDH6cG=0$flv^%5mD94b zK8{W0=57?NZ1?G--*^)C?82<_&JI6KXVAFqfM)snW4&|tC`4iu?&us z*?tl1BObg|y+jW!tzu}ok8Z;IRm2sAtnSJoFwmIYybJqCy&p(tzfDwZuD9>dR#+V z(yTE&<`&9pvo$W%U%|A7ih69oAmRMI|0yYDc1EA#CDG{m)Da;`AA62lc7M`kj~k!x zA78TDrx>c%rQycjct~=svPZCb?nuqFEFQF?0*M`~OJau|Y?-+guZ|V#!QmhQ!><(j zZT|oHA2Wl_R*b=sCOxYc;An}vcQ0#fd#`>24Sl$Tl;8QLx6|B*Q%#xO9b!8E*ifYepo+c411QL`Bug(to!K}3j{o#ykfRm_UiPeT6W~<; z>%rky);~4$iT-bF%uoEqf;Ee*?Gw*Yx!9teG5@XHfoC?)NshQ%$+U5W=uV0G1>;t& z=I8A9{vB#ePW=RqjKeI3{;6;|-q$#<@rETsZ@r^0UmeBVdQtSrqdqT~?7il~&Fa3m zi1ealq#jQmn*AgsUn-zUb000zMo-8N6Y-TR0wwi7Ji=RQV?%B~%C)zYCXE)Xi26NB z)e)0I5>#B5M@mI;XF+K=plF{GxNW8#&>34?_=WGN-Cg$~sE^=~TZwe`ws4}b7pzFT zusGfn;^jXrF`>EHf9+|0M}W;x9>QH(v-qZk4>~!mbQ6|&rP`ogi>pmDlW3`#-Bu?D z6&z8=E{}jfIi*wegNj>XZ^47)hlDc9c-$g>XFLitVD})dEi9edBP^3T8lurC?82z2 zzBS<58^_&~Rn#-p$mhEBgU4ItoYeZsVbQ}wx;K$NlJgE#JKb>n62r*yWXSxEi;k`< zf&$^XhY z8KU@VQ3*HKH&uW^VNF*N*CY64pU4^HTk`mh-3;+bZYS6;T(yd1+BIK&wbxD+NO(|c z+m$rzTq!h}Ts+)BoGE}f2u2{-N2v%obJw|u5(hifdHoIKBNDz7>LaZXc8BSamaPDA z2v^^o0>jnvCu(ep2uCQYs|?lUbC~!s8!|A%6FDdI2hV-&e16#5+5syr#Z%S`8-5ts zlft^ZE?Z%s@#}+12qQ4la0yKW+P4kg&dy%9wkpToDg3!-9`XHxz$W3sl<~u)yJNsG z8uE}BkrRSW@9R~+BYW|zYc;lbrK2gu^=5K36D&1~6`NlN&oHN35FoBe}` zNx_+l7#W~Bxff}mb&lphL<7^FfWq*#ih-_jKAW~rWrlHbB(DRkDbfuT<$EQ=lkGGN z*AfL3Uoc#_X8*S&Z}!X~)k>`!;RAeXG`g^%WQAe-Q5m~-b#AO;h5NY*sj2oOOvLaN zU*!3;Q*L|&=%PQnuS-4XWUINb2+~(c)ROqRqW%T> zAkZh(hQ?$b>jIZ2%JAmYmqjXgX4^qR?ReEs%8r$ADAbkXB|D4g=Y~WP%OZig6AKXs z&Qos*vu3SLJAI4QwE4y-c_Pzj*eYWr{Mu;)1n9i16>FphOD+Z?_h>b@r3u_ z*HbgC&*VFg8_%rbmxXxW+S=(Mw_$bAQ@hv|P#o%23Omd()q1A&NY5*yqT)~&IAcvr z?jC~acyG*&z6(_`wK{BPsLODgmHk_p9dJq_idwwz1tK>+EhU_eA~r$PLH|0!bC7~X zEJMwqeh;!TrxOYUgl%jy zKZ=Tp%Wxfm|7N{(nM9D!wSI_1Qq7a`WviW54|}PSN*yVC6Sneqrf2FOA{&UUW=i+H zroXq}A3Vxan?IEzO+ZMI_csUDw`ivS#-nt!$<`-$)K{}AmgGs5>WeV20<>U;N9c;L z8$Tk(&t>}w&TF1y-ABo=@egiR{CH#xp{-#y6kR*c#GkcCH={(_+#7^9625*Bv+!qX zVZfdtS}j;96tDoH#sj98@{*!{6u3|pfxUBr{bYcRcABTMVSxHXY-HFA zz4aRSZ!lVJlvkPiM6)PQ#RsNG$Xuj0iTa|MY??Fu{T8JT`CTgK*MR*O0I!ne2`^I` z7W69b?S%_bnaDl>$@iOULj zhFF))+B-l8A>)uoK&k2*K?W!OU_`t)9So6hdUd3*${2q34t5AViD!re8PVk?(=pwF z-*{l&{xt&VeMwd|o{yizD>l|xK4r?*jZ>ReFno-GUWZIk4wQNWuw|+*~pfeG9JLHfh?s4vZa!6O~I$Y){KT*sZ zse)%2!tTpllYiEkbro0&i&bxW2L0J_s&Sh6_KR^-Y+W#&?Xo=kxMtEIb8CL&)19kI zTVI?Hpe+JjMiKLziP!27Man9T;}2~$zW^<(VAy}5wK}p3 zv?toAZaJkPY?uU+OmrX_zq>y+&@VH$Z`&5$yKO6`rN#`CDo2U0Md>;6mN}EgtlK>2 zcfB~`@#f$AN_VNHL-id#RqKh4v6pmBRuFhyes@%(dzoG0SH2mH4W)nUD|$=!= zDxA%(D>zy{l}CalXuIkgnc1zj%I^9UJfv6O);jVMkPzgzbhb1)MYyzJiD6iX z(dB#bt!nqF$nG}~ORs&bG1gqixoSCk$ml&*ra;aH#t`2GyCwCT8??Jr+ls4ny-be; zjp%4$=kp;kG%vWX0W8VWV{Pex7tmwz7y>=4Qh4kIkplQ+VLcjO%k^AE*T9Sh)@#^S zwj!<_@~J(Os)!qeHB|gX-;k$*XycoHcYkv+@id7-jv$KF^T5GfffTw>-iR@OjpM(sy?oTGoz`gQPp%}OyDHTYs2cwF)L2CZD_JL^rQq?dsYpb75KrIzQKB{*f zo*`20c~wCbt0aa&N4{?n5eh_^F3Q+|Rl0Bh0k;?vC=gmgRVNW;tW)o_RqP9wy~H2Q zQ=68U{Sy3JY9RN`Q@b>ER;*veio7|r)901}C;d2<8{$@iM>9S#sh8t6B_dZ?!qXyq zY9h14@}U)SJFRzNE0PL1d{YS$R9$PWa2o^N0m3R!Vaer;!y* zd#9Q5F7@Sxg>&9ui3uQYkmMG$-@V7BY>#pKkl(U;bHt!r<)Bhvr}){Tw>MDgyO~D< z9U{aGFPP(T57j`+^Q;%oTI@P@Ta>t~>+CGspy#iq6}!*9`RG^$g}t~fU^1Yr(sIGY zMl8lE1#n zUx-N98n&f)$Cu|DB%YuE+_Ol>V?`wB%$`>a&B;{Ll01P`|LL}xj&{9!uMf#C3N6Rp z_>@-DyC2EznJ_Rb{CD*#$W8XUyS?R8Nr?9P?TFFTleqBwW_7_T@DzJfte#Zr-%#?L zF~M$8wOI(|7c#mDra$=NJ0)J@VU7soRD?TTB^6?q-M3i8cN@yZjq2U5YL=vGekzWZ z=Ka=puuDXTbkd`PqN@N2C;cK zZ`JgL_qJ!D4Y;Y>Gag}{5jp2Gk)c)MKekZyp~Y_@U@_DD!H8=&^<#|MPgt2yjFe5! zfmf2}6y|gFB|&eSHFqQ8$-(;9d6~)l7f999v*4ump%+yyX_lV$Jn~^&kqX9mCcU`1uVTmFy2cBsR&fPO#|~ z4d71BZk?G4c^P|fwO!=qBtQCtQ@_ggHsyMNQoFoSl3k8Fw{TbNS)z=Q%D6;j!>7d$ znKFNu@+Mymca>~>rt@uu842s_YXn0{LjRHC;t{?zUj3RL3j8qzRagzht|+YPTUBsD zztGtt26XZZw_+@}Ta}TCjTf8pZ(DaHswNUzdb50s*z`YqH@I z84**Rz6l_APLxRP^HbuS=CPe7I}z zdX?;ivVbU^Qmj1Ut1;VC1kVfvX!~b2as9nR4V5d5-}87$ecLV}e;h{7P$oXiZ7r}q zu2#x7!2F0HZ<+nkY*+P#f2?q(r1+LHf9Ba05vPyEkumuM*9)YjiP0XHIj7U^T|X7g z!B++VW2`MJAjimkEz{8`Q8I+D?8}y)XNm5JhzZ^%S;9Aq$RS%kANz}9x89!99wvsu zt@`9;w&_D&EP&HOZ#~_AXYk;hOZ&J~F20*?aG}K9TzmaO3i!Ze9C4@2^*58$yteW@ z9dlX=KR9NS<12KtJk*oFJ2FU&i7V1l@M^w)Z$#mRQK(8K_!7$VYd?VD3jn1#^$xazDJoVfd2nTwE zJn78dH07%`sngfrIn&-iF$QX(tYqjz>&^@6GLFRSpI0am${J^8@5wj5wKV#>rek6; zkOo#FGfc%OOW4*OvYpGNpw5GqHACI)z1Ut@*LeMS07GKEQE314=)$~>l~qRrx&93{ zoAvLZH1`VEV^Fk zqrUs_qv{Sb(akZb?M@wcKSoznL|)GjH#}+{PdsClY6c3cel%lm!Wsj%I*u`WW@lJw z&B`HJhe~&w_;!U^G!pcgF1oq;PG!HZQ}oGZBF1B7qK@p}%BdM?0azzwEl52eZuD0j z2X1wS`rPw(-{QLohou@vzZH+DIvl&)?L{8OQgBg8cZb)ipyXE3iu2#Hc6_&X(1mE4 zJKFGjPd}HKkkT6?0aVN)YZtVX4wI`MB;}uV>IU2xMio%BRl>GpnOrUR`F}0cdDg%F z9%j9jdHq^FXC>rP?OADQc7$@lkDEC+M;eQgvjm_BY0vQSpnUemQoG}7zZ&A!*T1e&<)9HNg0H0Puv6G*Tmlni z@AmJk;V(62aA!FUG<5s}OEFF37`*meKU)1|__N1z_8o7?x?6vZgN!0WuU%W;7cxiG zdj_gRXL%CC7$Zo|J%rkOdp*_=PQz{jrE4?L1+?SzIY6C)5X!zIcIv%Z(J8k*naA#N z^98>28b$>nH-2vxf}FSVAs)cUiT%*fc2aijB7+P8ac3_pH_%(C^5tp{Gxo}t(# zpZjINFlu2W7-G(A!_By{!O4EL?kyp0E>iM^A*;-h$U05i9;ln-OlV)HA}#H=VH|$UK42<#FY{#FKz6 zvW@)0vp+rWyNcAX^k(DKjQ9Yhq`099i~SGY!jpk|M4KUYN#?w8_KB)@*$FNQ7k(`b zuAJRTF__7q_L!94gb_Ieh@_z0j2I?I(gQ(GOMeHZ;_pL4S;LQ|bL~pM-2ZwfZtE4t zZQeheQQ8wp?A2=LzB45mV*#$~KTOAW{9&EBKi^ppjH>CD2a|D>QdO1=t)u7l-VS!T z8QZkAEO*(5gIEI8Z%kkJ_he`_P`;-{6Ql(T7EECrqrF{0jb@TnZoKcoLWwUqM_B%W z0&AZBFx$1%a=%w@W%EfxB3LZ*L9-pxN_l)me<*#{!99aQn#h*MRXedoW`^=P|3mJ- zMrIyDyr->Jp2hADnRtYA)_A`*g&fh>`|2`g9nouuhmP#_z<~I5nsdlGGt}6F^P}A0 zm`(a<_Qi|h&vwPF{l~spNFD6%HrcUfT~{A_ca@qu!K?5YKlcTx5zrdyE=4Xx6n+)&Wi z+i7QjNBWDY9sFaK=bR>ZEvvcn}2lO0CWS8O@ z+t5+XRc-~RZwp_*xd^BHeTtY_Is8F7LA&}Zgi7_|lhmhM_${GZZ#9WD>_MNz5rvad z+bcqHq;#kAM=ql|%y+7_NtXLe+fZ1GQeUT5 zfcn&^emh&A9f}a$kPb_RfJWq{R-*Sz(&AG|f|AF6>}&Yfv3-b)4ddsTE_Z6l+Q&QP zv1-JlNA$M&#j$odGHi<&{v3N<{fcQw0X*KM@(Y-9@P{~(J%;-ktiPrg4{W)ao96#k zm0d)fSyC)&zh9h@*Q7{4U+%R&5CT`2$-E)J`rk01N2td!A3dM-95MBz9`-nT*EC2a zddp_}31mq|@${OK-X{=e`7A%*H?8In6#3t|p4-`CNTp1__VUCq%Ywx?^E4VJPC>G+ zRk3Ga?hO@tm)!ZW;Atu6x~I?5T08@jJu{f114iFO2ei;x32uB+*+3Q8Ggm1J$(Fp1 z=-|SfozWLg?@QjugvM~Gr|NK)Saniv3#Io++?AUOI)39`$6B;5=He9pYs&np_?FZa zY035j<~XIGLxLbmQf}3Qo&Lr@=#oj|-{_JZV^Tv>IZA5{@xi}R=3PFZ1Bzo$72~me zmmoB~nkf`e;&P;pnsu9vTnW8S_FsNoJU}Ooj8LAck~b(e z&Dz*_S+ia-ff@Hg{XPGc^P&hd5biUsPGwIOHa&9c`mNag_O>PedUxpyRa@LDSOdE0 zDfy+)egM#od8keGv80SoJoH)M&sIzNNZ!3&&&l}oGrwn84SOqz@ ztKDntzPr1@j9~J`UX-mycg>(?ZR+@y26AyHMXu2%HE!~&(3g@!+b3=w&yrpU&V`hB zPwi}uZT3gk#rXaUWExEHF1Pqq`gykc_5zQ7)KD~CEQij#$;z;n$wb^@!6~bDJ-8%m zwWHI%P?10d{AzIzjG^J4h{p%GMwnc+7sXSQ(J>%;Z&xhou@q_WzRms>9Sw}#QbzkqRJGo9+-_P2 zVaT9&enk)1WLI^k!+sH(tJ2(AO4P1f0ug@IOC_w5JrF#GXPyFyC^f&+q~9^FkJnlYSogQI7<5J>)&b z1n{!e{Tdv8>1jTbs~4_cpCDtHg5K7cnHi|)B>XVdLdvf~ZRI@83FnAptLyvM_RYp_ z`zbAjR&Z`sKSteBIWbCnFSERUk=;S^jaZ z(WHR?))H4|Y^HcavGAJszX+bRygvlb6F16udvPX2?Ee`~qD~WroS;KSf6$?}yDrp1 z*Hg#49N#!P;f0EXzd96X$EBRT5>oTi+d_m}vigj^vT2U>K+xBD1DYwZOOj^gK!$iG*fTsE_7DKnVah$KVNH)D(2McMChXA_as?69T6lthzT8z7s!%`u3UHHBJ5>H_ z2l~MR>vq;%K~<1zH#8Q$R^1|sq{klnB3PF_D!#cI~;JXF|F=bB7q@!BsP^hz3YhCP4c#xGg z?z>cK-@gE&RJwlwL=_LBa#9{{v84PMc}QHCz?(DF38wgkh_8VMFB={lD3^TJM^p@d z1Cr)jZc7OwdG$rdE1v5wDPBGN=Ker~Jxb~;_sTW8FXrac`oh9O;Kr5jA@yZE$vVmj z3~8USt%}K3%^?!zd29CF8@(m@b4FbpN$Opl1nqwzOCx;%vLqeN4U;H={}2kvf@-fy zR)kj6bDSN}0%Vvvdr9OMo@(K320Ae3BayOOL2qI1v^QJN$1)&oP_bh?Mmy>J2+V=| zl`%)#IIyf;jCj*OP!p5SAE+s*!wK)*I)ZW<;Xm$y4-Acri2$9>&vNyaKXN0#!oRM;P%Gl6} zt25}YB7Ua6GY|R-8)x@}s%+dFk2TbkBCe5@h%`pXsC;gZi-;)St=x&Gn&av=S?cC& zI>rQ{Y)V6PA%S)HBr{E1<)=HX{-owA%Y0AW%j78V-Gz+Zc)uEOVsF+hM8h)L>AS<) zzM<0Ity;k6NKaXED_~nhDbNI^0vNR`kyD#)&^k7JIx|8QexS6eLWmiT;>13xd1hfu5LJL{YAD(9>}{)6!7a#vh}Nom4ozDUn9pmHr5#y{|eTHB3Hw!Mk@Z9qh@ zTUjc+T>L#*4BXC2;9L4_J2YU!!f(PHQ|>#(POve&rV-g-G#r95F%(sT)tHd0vz z3KpxQq9bZvT)w|=%;nem%e717mn8FgfHmuEo!|uEC~)Gx+PqdlKAIhf=Q#c)qcG3? zx@yMYLD?CA&;I z`tg9RH3Dc%IEXNsC)UI&)s;_d=`Fo#Er6 zMqsd@L2P{61SAjzjcEw>O@_{@pCh0pRPfmySZdi|5i|{mxc*8~z~2hbks3{`d29fE znY1iIv4*0Ot$Ky%yelHk$^ks~6~5R0dF(s#UCtd?A*GZ_Cqs4bKjB9b!*7Z5Ajlz= zdfo{JUU@rN!S%6nOqWHD7wOUeH=gD(U=`P@SjfDjDBz-dRj2)(pwZp@2j%Kk*4Vcx zZjvQx<4ccAI-h*+Hv;X}Awtfze6VbO`*>xcfz4I1=WBkCp$7aT{^`~*5BJ&d^sa@F z@T(PqDbqsw7xSqK|Hf(Nl?UX?Bgqp{n*$pL3pjlYpNmBipE>;xJx%V{flOO-H^{u0 z;nPyvp>zXvd$lX1Ock2zLW3*72@|1$vy;hcSkltK5O6~~YG!hQjIw(|E3a)BY(AQ~ z5oS%t1>mc98g#8NXJrCHDQ93+Z*+r^^(r0%areQhd|(pPM$O_(IGfnL;HjSsK{or{ zpRY|UmxSkACvJ^vXwXK2vY|s^k+${ixh~x_O>?a&#w+9>gLVijy1}6t+Dt*H5y6xD zvGT>>c-d?4vEreQ5KzXu4i8e`2ndIQk~j}*3^vYU*O`o2l07z{pSnq)@{WlhgG1Ri*8U;NN} z3;oNtiO4}ub>hBw#7%zy3mT2uU>MNxgMTMAuQG<9JTJUPQEh=ErwuZ$oZsJ`*N*>% zv(hOn917a?k|{3n4H@kB(TDjDnGn*Te&#X*-rrXBMS%aq6Ih;Yc=%}5;I0!rjk7P( zUJd|BmxEdbsHcZ{JT7{`yqJWn20x+L$hrT+6JHHN`xULix zPZB}w9{he!8fH&)J0DqJaua+iV@By&Z670>aOfbKL97$vBhpakvOrPiX8jiU^$2JK zr2;=gI2lsoKSRDX7KGWv3F*>SH_kh?14K3qMOFSu(zfllLPAL7%s*l=lZ2PrWe6MIN%72;HT&3dye=!U2xsJUpAr1$(J!V#a&S z^v+@;Ly!`wpZX zSDYL>6YqFjhhy|iMQ?76ua*(j8rCk?KsZpxWvfv-ev{3517zx5uXOrYm*V~N?>Ztb zG4affQYFa-SThW6Gt7NJ4M`GYHYy39y@$hcpr9C|uCRbTwaCOnZuA@6d0?^SUh6?8 ztbv0Ua&9cMKzL3zwc3JRDlT@>LQ99XFSvpLer>V)PW}+29SFk2o!6C^4!s-u0G-xaJoOwhxbm0w=EBjOhAXeF1b+F(ThXj=6VW%ShSkupr za%!(;ky4CR3$OpCfg{j~JpI>QI-ixa0M%lmToUMeVR*?o@4s*}QK}}H57^W}*%3d7 zSc>6~AUYHOz&8)w(i%*voCSJOS5gWxwem~=`&i=yhJ;~gk9}7@qh0*UFdbcgDq!y3 zB4jqs)X&7|r&fTAO`g0}{COtJG<|VZf2f{e2u&mKYu_{CobKr)e_%}no)PrJ;$5KSYH9aC`;EN+{iJ4V27(-k!Gr}W}Z$3_pss_zV{ zlCE@6mWYHtG(*n0J<2(A02sn!(pJA`!-I4UrSRMQ>eA6MAGBRtGb4U)xQ4L& zg4-G?4(|KL2tU{}SBL;)k+}#~x8pTzKb*8ID-mv`zfL(;vWy=`J7Z>XD4Cg_ysEls zXdag+Z5m9UKXF%nCBV*)x6x!iXF(eg3~0?PipLYH-|N%i>JCPgX#qj*kW;8J%aqV( zRA+wT#SEjKdTTa|Lq=86)sxjV7fQeo>Yme!wBMdDJK71U^|IHqa%Bxi5df7h=I`~^ zDnLC1Eo)dFK)r@8XgpITfdGHseM-(-zEx=%{%Hixae9v$KmM>6r&>n#B`FZ- z&2#9Oif0tg?ottR9z1{1YiF^ju75GKc%uKVBFg#UzD_OH>lV|D`1}WpXO1a74S(5o zepsY7-MaG&{O1&R_qB1%D_;*{IZo{J=$o_miw45yJo>Ag=B+=C*zx7N9)1^EZe#Q4 z56>U7?s@YNbJe%-tT2Ead(4n-U5Y0ZnPf(JG@#nT`;xu{PMmRJ{yX|9oiILxM|xJph)p_pCNbP6w*Mj=SG)O>xFzsFpvg!LZL5UHc%+=)k`@7F+u@m zInjD;o$rwk*keT=)zXznIge%DoLptAh0GE@eez-BL0C8h`5kpFg)D|TAe|!5T4K#) zg{lDnoB9q@ql`-=FkPO+QZ15C`51oX02H&ZkVD;jo!V?&lp+;%#6kyD`%&%VPyG^d z&ZeY-$)mr9jK0mFPCJ{z)OtjLhk9SP7zgcpaO252U7m18(DyhrCkX9gcVtvJxnEk^ zQl)@6Qw)I!ZjdO4f{55?Jx`S52yPV~a>xTy01htZIN{?)J(;XD@Rdf@{C(MNsa8Nt zFoN^k+WoU={TuO2f8+;dXE=ahA4>mc!vB2zXOH<`!him+U&!U3@Cy12ORN7eks}8n zJv0>U=Kt=W{wIg$wf;%GQQ_^LF{}SHAn6r_r$5vAh}M4_NBZZo72f{FP-mq1u^9cI z@+PNFVxlgyh6?{Xw8%e~;N*9VG*7@Lz**{_#`gdE&Htx2c8VUjjvNw<&;HZPSe7XF zkfF}jmAn(V+@Eh{GfV}R8wq8y`Mv`kteZ(ynpYXGdGaS1s5k^)9GMo`*ARI-k}ZyJ za%@5qvRC>o2O^1+mrOd{%-WNGDiDD^jk-DiL zjc2^?7F#gvoA0EPYA#CN@w*gOL@MC4zL?nFR2lK5v5JRdGPu(t8P4Hk#Te; z%fzppd`KBGP5?`WrCm!jzMe`ra^CI{^7|KEgJHkT&e=M4ji5^8UKtYbZcv`zc#-45 zCb?$l7QK*8nK$*g5UZ!r4+eFeys+_%-&+Fq1{Oa#&j9(fS+i7* z#_J})d;zY1jV0(9Rlk3F5LdOK82RS?bGaK|RaFtfZ5B2^elgZbBv!WEp>3hC3%4*Y z;aRwG>(=wuP*cT)s}A1_KB>-yP@b`L`s6Ru=zoEBc>BiT)z5d{edX6VQ=t@Ml5Sz} zBIf?r8_zyG^!$Fi?i+vRmFCrk{k`=K;^r!Tb#wJ;K`O5kak?0}pNyAA)-)z$`XCk# zfB9ntO8fZaM+Z1(+8q&c+fDb-P9|HsplmCSW9B!GJ3F0J3OAi_MJ-Nv{Z7oNd3f&L zLV?Q5;(gWkc1f&{JUdfRO9C`yc1ggC5NQWW+`OYzO=oCuld-jg#PR&_AZ3-RmF8Wv zXFFQwuPHs~R3jwdV5fi~FB~_sw>y4+CibRQJv*Q2dl^g{cNf;P z=^;{qtoQmxL@?-L)wPO9yO~}6F8n}rG@UNv{l1&Zq+dI0J>Ud8_%dLNz(gB#c)E~5 zb0+ePsOP1D5-U&^N#$`zVmsw<<)LY!aA%#qY{Rd;?wtb>p#_kjacu%4y5LO2VD%94 zVG!L$Mzh1hP@dIKBcoE!?1p~Jg&UhaC5SScW4lWpxb%_8!feT*Zj)qN`2`vY)Q^x)%vYOuk89%4Q zFMQ-l{Q~tVY7>&N)f&piKh;eYS#^$-#xL!%&0#;j`$4KavT*T65F?JY3$obGjoY6a zQn8+@I9t82ou;(Ee|&Cgpi4wH1rtkG@fTBLbi7QNX;5=ISv_H)J#_u`PC-5BXj@gS zX}f8(qCV9YjDtLaK4J$^VGA?bB&4=hqL3X@w?}Bg1NJD-McOX6Scx-tQ~A{$45LN3 zO+RV+(DL9fw3~W+&I=9L+mlt!Q#&tG?n-Cmz}dG}iy~!W;{BVGNv|*uRzm>I+gnWV zt0TS-JbfwKO_>{*-HYXsk@%ncv*hMc4?oyEG3!g+thc$>n{NCZCED08rC8M?#}|~p zdwL@1hknhl2;}&wSLm301L8u{JOeuD5qsl?8mkfH&`rBz`#|>ghe~Vq!{w0e5X^y7 zcpLLOy`Qf}(2jNIW$X70yZUyPb*ZlU8*u;C1+M8(z&FLkq*iy}o1gAp%wy1n-t6D5wo6 zWL5j&&c1^Z_!sqDpE1dLc%se3M)yJB;$Jz@AR z>FMf9Ikas}0muCUbt+@qAHxAjb9?Z9kOL~}S?|5LW9%>lF-?#gi-@>A39ohzTtH@G zU~I?j#|I!+T=8+Dk%;A;V+pnyKQAg-{DV=W;nFwyNcXrOqQ23o(lKuE5X(>D8O%0n zLsQD={?f=7H%e7rc+FTEJz2YWT~?h6>2S9G(LkrDhZjipOTUhXidRnLTDCovuCzBJ ze>!xUd?iup=|?iLa(`$57NoTEqr%6!=I~~5x?UM^VEq#T&B$-8M6+~s?Ihi30JS0c z{=T_@k0+NvgQl>Engi&NONsz6IlD?lMUAP`(!L)b<^P;qvxDN(O93jd0KfMYDIkeE zEc|XR2AhMi!^D9kn`Nqio%k6)`2{t%0491=?hIatqOiKm+LR9AN+@(~c5B|5GB^&S ztrz}SZGC#zp+4Tok}gjL%;6V=rz;$L?UZ|bGhVgs3HUv?)*&`ZiMO|;)N^S1O&jRWnVtsOrncjqjEA&ENWZuV5I@!+RsKnrGCQh$+6-f~o z-_ff|7S67V3_Zp?XG5Srz>aJR`?6n-DTK7A0x>KzLV=5vV+{DSf^>_N5q6@H&(9=6 zA`Zcft7l{AvhAJMtU+rK&NCwnp99hm^lf7dXe!a7lDeyH@^1a}`?|9={!3R_PqAQ5ibTG%n_TP+e&UBIpJK8BWUu}R|Y zjKY|FnU<>Q`vXN%(BhSoh5G%OBEGw{J7;koJ#>C zImc$d#@>)?h~68M?=e)iQ2(0Cb)g&aDOFSNXMx3}&Fn1gxZ(2n=awhi-qweop#yZZ z8(Ga6O#VZ&i@cl3%TEwn4mkr@FzI2U_`}A_Ix!qlG<4MW;!ODeVmYMqCd>IL!Bg648`?&{cO8H~Qw|lEw``gdI zx=NZ@?u+|ruis$c*NPdMLf#R=AOo8)x4s~9kJ~N@d7b(c@Di&apX@gN*H|tnxNjg7 zZVC;efA|>M#F9?Kq-@jmS4wH;qr2dzjghoN)p#z~Zh_C8dOBQ;0r5zy zaxaw|acvpr;qtm^l_t~F*l!t3yNAlk@geb7y-p@+Q?Ot)y(q8&PDn}D(IHIWTw}z7 zfCBqx?!?MFD6@vlT@g{*X{I#aw-F-!$efmAvoEql(8ajossBORdqy?cb$h?JHwr2O zDhQ}RR6vlbG%=7wny8eZs7MO}O0QBA2&gmxAt(sa5{eW>Kza)xy%U;*UK3iVfdoQ; zyzzdX=N4KMPjW3vGK+W3}+ z{K@!*EjtwY6_|@Y0qz;h_W!x&fpS!E?FXKu3z{*z-wQv1#zA>(>4GT7MP+$0-q!W4 zH}_0b0Y(R6}F*`T!4YV0sWaIYJ#NL$-V;N3ELNJNk7t{Y3_o&v*qdvdEU0d4eQ4J zt2a!Ww%;Kk@8$<*3YDD*CCa19^+|3&8Ld45ry}_j0GrAz6wTd^;p#c`hTWki9`Xcc zCvdRqmMOy%7Uh-Euz|-OtsF_#QwAj;K)SMh9qB29Gm4%ouMnPo`UJbt6@p>jxN0b*Eiw3 zOR=TI4)fn-XS>-9g}OF!|HLA#iOoE%dPgKp?9T&(K0Qo%hwx3n&Y_k7+w+`$?1fHC z`rkaZ=M4pJ6Z3B+wB-b-i`gQ>NMeJncY|&;2;J@|vE{|Bz|YAy>;-SP z8$^HJU@cH^dXDPb)7)+t$~UAc(zt%hmof}Mdf+wpWdApFmvE*Ey-vxiCD-dS;f^}u zDT;(gmf2n=g?~cmST5}H&W7H2b7D&{eBeXVjsOen!-iZ6GQQ(@4ySj9z8fJC5#Jh3 zd(&w>n})b9_0G*V<+HMa%n&}@g^+*Nj8yM3f=}6C8*gpierC-appT zA=dW+RS!u!(s0k6z9q0;uWo0YLvgp!lf(=SpYoH)gN+-^|F|<sAjTYA?6Ff z0G{rCja6k6+0xB{ITG56XvMdf@~;`m@#17H>U8;JVPD_AJyyMt^L1tk=!=D(47t{M3ZqPE-JUkFi9QPHt@uI0AMTWA;;SV1~h z_}OfJ)8v7qr4SE?WC=Tm9Y)s8HH_Hs@Lw#DyYD3qdvIkFcaBxH#4V*XkYZ6IP z==a@EO+PPyX$3`S1oOdB=@l)q=P(bFZ4(MF6y~McKY`u^l)C8F`*j(9s-hr%xIJ`9 zAS=~_2D$F^3YB&VD*#G)EI^Y7>xDT3BYNnhe3ZEUbowpVZF^mC1CzjI1|Wfx#I1{} zy;m5^&v}yPUmMmJ?OwS2pr{_UR9oMAFm(#F-Q3Qm2PXhztG@X6iEzz})|c^b&KU~B zD}N#~0<_(eE`SD@H{D`h`T8eW5ZV^}F5tl}XCe&uvXQ8|+Z8hDUU*1BnfdD>7pC^h zaVxvq%ChChk;6Z1?cgSb-yeZwpO%!Z>%mDDi-|N?mVV8?V^^{HJN_vZNmTtL#1(&>n%mB*=G%M?U?X24zdg}lCk_5Z5>?E87BlIu?lQ*XN0 zQGm64_4;-NzFsiW6jS%ydwhT3N?{%cj7HCB;bujzSm+vt)bX)$ z4$P~tduFKiE2iYtOB57Z&IuCJ^xk(}fdS^4ah2<$YxLoSVVhGY1kx~)cP(6cW7G8|L*ac2XW!e7kG8Q|NkNk*GQ^ShIkSc++y+gv{| zO=w1&SgjNbUfCF8#Ku|hCE=v$&*fb901l?Br; zXZ}5;nvdrua<_QBMkerHb6*H;BDZ z^7G%73s5DEx{JVc_alnQ6#F-B8Hx$XSaF3_b`!|aYWvxoA4ArE4`}^6!DNyE8R1&a zPpmiUzPs|PUDyKj`96LcnnnWr$XNs@+5%vZTmO=KOEgUl(VVWY&`z=n!k?|ZcJyl} zg~pcsQ4LY<%HC0)GexH_mvGl#vT^Lk@2q`q*tAUz;u#3)Fj+mlMW1{m@j2@If?he|a4)&HWf8gh=*Q z-Pavh?KdG`p-h8nRH0IKHCh^p{u0k8agVnMg*89K0^$3G4-JH6g~+YH>Y`~-vggyS zPj`CzPT}gwwJYSS$={f>B5kvM_=3k@I^XJL-8?K{^&IAc4^-x&z-_YCkRJV+$MR8~ zY`>uV>HH!C@Jk;h&)3u%lxo+Nok&ePv&6h&hU)x@t)P}y-UCXgK7VnK839>Qkom#l zw;a(yE%b?Y{V&QcQx9*vp9Yap77#;;##!~ne*Wf*1c+cHIq;3|YTj<2XUWyk_rl*1 z>IGYO#9V0syF-SdmnBiE^C8kWSwNb9!nGipY#Bl8RCQ9D#Wg(BM@UnZ1A-I^bi1?cvUQZJZWxjp^7LCedCR3>4YrgJz_Cswx! zgT-1Yr9Ji6?xJg&%g{}Em~W~9DNmOZ&E=J4=(VSFyb5uqENq02Z-<-ify(q%!H-gG z%?F-k35)k0FO}x}?QzEUE!Ftq$9qo4zi~UkLz_PSHgS)%i2 z>}rywM-@7q_M+XIR@g)>>+#WmdMv%yz+V6tums#(i=Ds6bnL&}t&1%rUJt}4@ch~Z zL})N~(guvD=Mv2wKghGRedi|n)#O`;s(LJa*|>hZaQoF{mlr;!d9KA3f@&>GcLoOU z@$_xIi+!flT8061`<2WCUtquXK4YwmJ*p3Uut=Wo4uWEk#d6Yjsz-7bH>tL{$VycT zFQfp?uYY#r7UaEO)lfJq+}vqXPJpTVQa$XuEkCvvM%BTm14u$bgcxE{D*-mDos5pf z6(vccRVi<_2seuCHh6n1i-kLUfoi*#us~7hk_sZ4GvF1HZ1TYUo+M!W;WiU_btHe^ zy9m}`!#ig*mUIu`n(Om0BM&{YpEA2&FVC!Q+1fWvC5eT6s~S~#DJH$Idiavmoq+Y9WsG22`I*ZiV35f*rGA@d<1`$QHDzB!`?59QUgD4 zP$%%<&o@zn8f>q7bR0S^%X^q8SQ5+;6q>Z>6?iGyPThPIy4z!<7tb1Pjyv7jF<4G} z@j^3<*;Qfe+2j$k-@N)^@<#SEbjhffI6#DVM@0%cnjW1r?|oS;>@G*RTLAo;sdQ?QR zZPmV+vY@IfbdfA)SR=$ty7Z#Y`qdKxW6su85V`sbWm2>rpzup@1aTVjpko+Vl)eWs z@Fhsk_?Y3kkNr@UJ7_DYd5=BAviS~=`^j|5e^M@TP<}Q+_8u=G0(YlrK6gF(Vz#IT zve1SO4B_6juh}@~$C)c*ZyHzrqne$F`ScalJFTK1BIp&Bkdd}Cp#|;cs>DA0$|CzJ zB|2oka@b=JeteN_AXtjLwyPOwmlYM16lo7M3f6$;dl6M>rf7^p8csj`1r@8abUXFyY2Ypdi^mx zcv@PC%xx=BUGURga8tu2mA{mtQa5FFB){6V<2jDMs7wv$5D~eoviYg|C0(`#aye`) zY|gFT=;tzz?VV_2v7cU22{s%l+mq_{(Qq%=M6+V=S5;nF6S1uCrb4euMz_9w9nt;( zO*l-H)=mwH$4>=<12!kZf6&dXZ4Z1D$?80+ zfVdiRrnQ+yz|A?`_T-ujX!F4bGr1^q)*@i^ZW!^xmX<@Fovz-v6i14WfAyYuo``pc z=h147XZZEAwLa)N`u?M_Kyi|~q@qny zB;!O;XFw-X*J*tnzV2Iqf}Du+NY9Tswxn}>ZC&HNG;{lj>x{Jh8|#8RwtK0@KDWRe z@Wv~6yro-dg`~$Aui;{qPR!Ub}k|ELj!HtL*;}$g}D&p#l!8? z5}{M`X?qH*+!Zr~pn7B{lT_27D7dK|*tT1fzm4>1w;c?=aUz_@TS+8U7^HlTk3iS&U$beLi2K?=}xHc^CynW8bg8j zADS$aGi7gt#=T|rFyb9Oq8!O)$Q@=VLEh&HcfNuf0ty}m%vw*^?w zhcLCbG9&nl4D&4P2Q@H{>h+aMQ#0!TeqJwobCZPJFrg`IsEefPG08yfo0P|la(b>P z>AaT&*!&RovIPu*Y|4SEwnGS3IC5F3&8)7U`lPWr*t2`%M1vRk^x%MD7y`7QY{YoG zHJ}EmB%b@iB{*d0KYxv){KSt#E|p`&e(D;aroBt-G7C?R>!aifL84(-X6QlFirB>{ z8upO=x~!*=Ifwhg0_2V(VdAgD+5Ob&4jnbq+R|JvG-v&FG+o(9K>`w^DB;(9aiRXn z)pB%abdt5Rke5?x`3Za%%l0v5#Lc~M_h>st?Bbur#i{VlkRz1t1aCEVo;*QHbaw=K z{)9r6?w#!QnvRW_rE?Y57?@pl%1s{+c+m5#&1E}-uq3Pvtpk(_D9*JT@>k_}93tPh z=6=-ie+M7R^559ozp@upm*d?HW_~ClgQVaD_?{E-0NG4dn=_vSehwly+peVLO)CNr z1Q$%}NM^Qbu`PK=b1#m(r~Ff9v{jUuHmI6C*b&fyNqt|T8mE(vOW}&MJs&6k*;*J4 z=)&%9PYSl7N-{DEyc%Tz5s!bv^BKjbj;P_6hj8>=})E}$eJ>WZcCiWA)w{L8a97(YT!uLUr!j{`Aq36s1Dr`&w(zT5NK; z81%P9or(6OhLHAh4`02yg^I}KPLrLP)_^2X%fW=ZlWI}!UYl3R-7FuEO^j%K6FWaM zsTvU*J&r%cFmJ&g$Ax9!%;qoc21S$R@+=L_yKy~Y>?@>)i|Y$PpB^K5s2k6lnG*I>4<*xMW?9oNkSH_-^tb zZ5x%ILxgzEU5EAzYxCr6Tyf6t9*-v5x99ahN&`Y$6SuytzRs-?@{dNQ+)!yL8V+m~ zIA<8d;@ZFLgX1>$5u9}Mh_t~SodQxaMq-7|vjOHh4M*5qtAjal7ghq#D$SFf@@lG zqWMBRart~?-`1=N8rrM#G_C=|O5OR!J!qHp=C>zZsQX7Zewv!)jgo8L z`5iXT>vql4%;$&RJ7O9W+p1ON7Sj-~_Y{a*Zou9lkig2Pq$EJUvPT<@bcYv9IGz<$ zjf~e89KzmQ2@b=)(+U|(`V%)*zI(QOBWc4-K(@E^I~JIJSg`(vkl*;-I*KvW)^V;3 z`fhT2^8E4#=AMIxZJk|e-ZubmFvO*r5-ooZdG4V@%D|V)7y+08BVBm{90>D0GF7N947sRJ(*uReFq-gma}#{4!8A&`GsVSwz)Ct!?kIn z8Q&XI7U&uRi;(SE%u|OXJX8M*DgLWg7GUEuzLddfFj_U=-Yz9R1;so?9}YKrEVtwk zgdgR`4TgfkJi@z#ro_?DK6_n_LZ{mTMm4pGIdc!p$JbL6lr(?W87bCBDQ>!KuDrn- zYE%2EETfUHc_*Nz8@0lI`N_=8ot4PZ#OJw=)7v^8IDv8PjrXVYKY zx93iQJ0#@}^+&s`G5q^wacF&Ua=B>WskN-S{N0ZT?jNrHuMc4_vfY5!(1;;zdMso_ z?hw{kJ^4I0Ik>_7kgY{0=U^s9ThjpS`4GnpAdZ4|o?NvOoFo{Z z4Mo37foENJRq4#RTByY6+rM~;Ia8{80(51MEzGSP2fMvmZB<1dJ?fCzJEqWKSGeDQX_}Hr^Sc{YCZK_xqg9 z6gOy;f6HwGiMpDr>a+=X=F?Cq_j+miRn;E`>KpBgDOjmy?-t9d=b z(k&KHq-+)7Sv{ka+R+-6C>vxDt4~T` zk^{Bh{Lyx?(!%E?uM?lc=5#+Z8w_uV%kW7F3HF0stGqHKX)^}6GkH6G4RtT&gr_Mz zE$tV>3M9ojC;0eV-49*vc4-(vcs_C{=hnTa(_6(*d_#faoE5l)gbdQBZC1uNnkx9h z_w|ukpasu-%7#{&>f&$G6{fI%sy5CKTCoy61ZFCaf)1{b*(Wi^0ph7cgmcVH$g#P1 zI$&nLZp%0;8{U&^I}9F8iA9;Oc8M8roq@M(Je@2r6fZPsSak?OPqr%VGfQz!WYvt# zC?eKHK*a$@62)aH0$=+(b*7MnflZ! z$^GTGDyCFWtULrBlwtf*XF%#2I#V>M=E%$1BZ0>b{LZz&S8IYL#Hg90|Dzyk;4L9} z`R}cWO1~1L=F#sM6`E@Pw3l*K`A!V+V=MJZ=BAO|IeV`Ag1y^ph5a5r;+57FgFIb=Z4_m8PN~B zQ@rR8C)#oa~%EzR;FV+3E zDDRu1cGMMAY<1;mgKJB3wD1))&YU))l!U=D%=ESXm_a%$;M)Ue`i(ekJ8T-+0A>J5 ztL#H8=oj!S&};vWF`t_=TT$%HF*wz2dQ!ED{-0g|806QUs7R#JHIPT!RXSQCe7Veq zVd=#eu$ihBuQNA+3(ws&)m7xP?bmKL3_?dxwvdowO}7`?|e z$ZekEPB#D{$qmhO(}uszlgPX%dALvW#zRS@XSb=F1^y1`bE}^J_d8G9Y?x_Hr#lnX zd3^$AVmnV>4_YVuNg}0_g2PnBnFmhdy;M)cLj1-nkqAQ{hiLgb?B8tdz%S^3ztZ_# zREs>_(%}>GQQL>P{Y_K$w1_bYW8S3DB2+_v8>F#&)z1InC?y*{=*Gc0<=Pw{lm-Q)jf*$+raNuEW ziGl>|smEGb)6UpYs^@c0wNl<6X|mFLcJaq!zbRUqjElj_VttN!f_4aaSZ7wDe<8KF~JVR13{oTX)3dGRx@E^BPwYq+=_MJ2#gx&n5 zq*t{I=e7Zz?3ZNI*E9}q2lzhvXbq_O%w=*~w%`%uZ20v8S;zzXg>pNZ1|x!r?_M&O zbZ83?qT8YT^FQz1@EHkZHjq3f0~pnbv?FFf`<&&o2lZk#OYloK4-YLEM*EqCpajNr zc;vH4*3moP)rQ5U%fz}LsnpNY#J;9cfLCNZr;;X;=e+~^JmB!)#h`e*=#-t{gRq7C zKF&{JGn-h&I|^-U%oEywTgxv(pFqX@pd{dpvc{p9GtlEe3wXcZ7z`8BJ5R6n zS#C~u?K^53Wz@j7f#6s!MVB`A6(3zFMpb>--VDtp8{xM-(#y4A<}tx}n-`I>6+Slu zbUmLKHNF+TD19FD@Wv)xnu(Mlxl9s%QYIkdj z$!aaSGu>u|{6%iK*>Oo}T+ACZvr)2n`1n5KfrLMeK-5qN8~BKFc9@oO&IRyA6t6XH zw`)U#p+j6p(?)NUV>{3Dg)IVF#jbNr+lqdTJF+)oJ0t~57aI$qnRS22VJRq1GCIX= z)gSlujj~AZCh%=@4u)}-UOHV#D~M73$3#j4<^tM=O*^hHKs*8On#Jl0H4ek(4C?2V zy91x6(0-r#T(!{u4JP&%tWNA~8Z2z_M3*pgVW9to$p!p9ca!np#4U(O_S1tw0X!H^ zNEeIY@=dWsAl71!(Z7-!3j%YoKb2)6BD7z5vU=p|i5by4MxZ;`EWz>&3?)j{x4Ys2aGh?l6@GZg zjXQrnhSAC`n|1drUv)fJ;!PLkNpQ?uC>tu=q!72{Du5?CRlB3M$lpM& zCo>ZLr}`y?ShUOSJC!8B%%u7^(%1^D-6pk&r{rR)9bel;k8j;r%pkFxxBbZoM)#C` zOBi-J5KX$1wQ@1$y6|$Pw5-t4JZU*W`@nZAX0btMlzrW+?)_ReBchl9H-%eqPH%h@ z;Rz#HNE98os?hz(@c_)XfL!Fsf>E}l!hv1Wtw-|ZbuwyRczH%8J#%e$aqU9yB+CJ zc4xUeAPNP^9^bCJHULMY@}j0$0wCo6l8dHIIX4AcXw8b}Z3lEta{iVVkpX{%Uc7{`4x?}l{BnU<^W!yo#oM)}qU{+rttB?T0(2PSU` zD#0xH3wyho14=U+p*>~~y9O~5^|!4_%n+|{|9o76`<&16(_p@EjRX9Lk3M>VtIFGX z+$-pX{w!D*?SAUr70UC?znPvLf01^QDQb15sI$J_4QSt!5=xpMlSLVTKKgGOGtPpL z)Q%WrqkGRS!+Mu%)DC54ElM+OPi?F{|Btk%W<)Ot@j_P-`l>}FMYz?0l<6VAG}_Qb zLN5Dx)1UGkYs0a)qT)cw9$9aT_oE8}>`tje_4|D(HdA>I(E$m$;Swn3g$rC8l669_ z2?BzQZ9e-A9j#}Yc@H)o?++B?-sd1bC)W@r%O-dy8O_lz zKzFE8X}{|?;YspMPUnhjejesfN;V8t^9WkHbFDgd^z$lzF`{n6B92xZz$Yz}02P(@ z4%1dIfrVEFvR|7!NI%!FC%1$s)b>q$p8rD89nV@fK$dP>#_41B*ntOQjyq$QZRQgj z%k4Tk{p>mpjA@Rpzs2fkY3rHMYX|GXIBdlyBXB&)>%PDO#Q8)8+Wsp@&bhz@HRO~p zD~vkM-@_(qBxt^)uqbXudrqxM30ey8oS)ysN{?e;x4d%6HPEATKchuWLRufx%add} za~eY;--c}!en*KZjvNu0WW@1B>7R9uH4%u>#is#_ z<6(;*QOvBRxV~IiYgzdqh?!aE30u1ODFJ9aVDozK&`S=t*Y;ubbt;~_ADF%o6P-ky zr5VI!_9hd*851+vds7VSf~p@E*oqhQ?&?judI^amzoVW~bbATJpg+DnPI0XFFR#C! z8=VI|5*X*QIW#=;6p(lDrzq$_Pv3rHBoqRh*?4;FumIal)S5fXSjHND%0qcGU46L3 zDH}a!leW^jb+1OO&*#;hB=g0x6h!dB*Fo%EIN=;-Oy38bHEE=xPZBH3XA~XgEUE?c zZTi1#h21GQ+&*cd;f)iT-k^4w$G%m)E+C2Zw7gjpld9 z>#d-a%m{YLfZ=Tqdw`{x2^VZ*pSAUmZkNI@gMV)A$_U&-M8nGY=p-F`xsmO^nceEw!Ss~U%&Ykxtm89`#4~H z)9L1@gKLMFw!EnQWs6B&2ALa>L9z}qQdHYw-dg*=l=sq27ULj1*AipD43pzrnB`M{ z$ZXt^P``I03Aj_SGq)aqSf}jl;}~NMeTzLzKyX%LUzHlOz~%OG>RX>BSDeMQYTu7b z!@NC51pk%8W~n4#(UG_CBHJ05&3xYVCFC6;?A8<4p5gvk)Fgy`O`BU);kNkvi)ACpTqqz1t^;`)yaR*|Pg0cO^6*7KRv^$vs7GShsgEl{JD5+r z;PbE5C775(Op6Yy^>`Q)94du(yl;vu1e^tbt`-1Y2o;r8z@W(^?%DTe*Tr57l<4y- zgFJJ$XMj-!8?*QePJqA1*~p{eUa_A8)6mMYKndb|3kzS8La*(TZxQ?fZfsH71#qsk z;0;B-5`8hXeb;J``(RJEe_dIjS68|Qqitf6d%!YpD1N%7j7{I2J9}Niey{FLPEMgJ z3@dJLH&yKZ0%V97Yok(3dg{k0JKyjF_dGG(ZL<_6X3-gzPPUWUA<)&BE%HT?Y`dzT z_?x*_4+c9$g?B0D$BKaMN1)R4e5>^9NrC*m6*98{Z3kh5bMYJenAAO?FaqE_-V)xy z9iF)H1<+S{&%F~U0v3&r+Mcj2BHm!h&+MvxN5k<15rg1te4rkhgTUWyKY|(#*B2qw z{TX{e4QFV4j=GLOQ?ud%WE$AcEFy^%c)c66s@z4O4XYV}EWw~TZsTc7&^|&K#(oDryr1j)h}>5h?~B==>(nvCig3Udr}uz|6S9!lk?j^{hw^&bfmHQt z;_0a9=!p3{h@-{!x1s^ZPfnkLu34N(X_Bl+M?>P*FN3X9$0eD;HAjV#h~$iFeR z7FO=9t5yIGOokw-e9%;JfIu8BE*q-%wQ2cq6-ZspEM?fWXqUd(SDMz5KfOTPR9ASo zsLv1;1Xo6K)~COso;(~LTJm|>mFanRC#3YyUOKbqF!I5-$bHb~rr(BXS0HE3*)VCc ze2qD7qP!FKiFQXwg++E7rr*nYbgZY;H#;JZCun(jF)X882J!IB9P?sr$n+uMlsQ!B zt6mN4VGAF_S(@)o%}ty!?bbrrPU}foJF}egZ-F2G9>w10w*oMW$~E9y+bob?1CXJB z1K_<{j+2z+MI(qh5Q8ymbJ+Rtqc zsDu+57Qbv-+2rpH>Wm*=bOBTs1oxUgfp&=O)b>k)-&Wq6@79632#Gc}L(I(f_B7{D zwA`?H_j^+Jis{ssnaZtC65$Kd@0wN;$<;_Fi$ZsL<4X8qe(BjsF%9LP0j#)PsV9|i z6<&mTz+Y=!FNPZwQ6lfVa+GQB=#W@WjRlFqCjEWkc;S zZI1hW!tu^Ud1cvfbUJl=2@yH>m~nOM#>bPrwv2b}I?|;KFB79a)lSW;q>uSoUAsru zu7P}t3;$k;o?mo!tM}XEG6wjsYEVz46Ti8g;{8)Fx^iVMEROF5^6Xs^W*m;?d`)Sl zY0h(-PP>C{!N1|Rd>`%YEWv!Lj&wEvGO)*RJ2M@HXBL%Mg|bHBIX^5oB_Ru)88$OfC=3Gw51&=f zR$K0`=LOyin=%m8X3q^I)egxa`u_u~5oL{OR}P0h-0<9w3MyrYW*z>+sX-05b&xXer*QfzI*GY<3+ z>jv35c1dI6N!bd?_gGkC`7Zq%FpQ%=&y)X$Fmwy8i$UF6UK0+~)MgxkB%W)DSZ&re zg>lyqcdEMZ5q?Y8m4-IHpw*AHbLAq%^$%89KQQqg1=I@&p(vK)UkGDHW-En=Ot!a7 z_c%AmL^0C!fu2L$6b#QhLJbPL&BCUoQQ)$^VqX0T0YS)f9KMJ-B9F_ypK!L@v>N7n z0#ztL&T-G4DC3GG^?9LBQiI+*2LGv6KYX(i-l;KvCSUeE8x8t*51?&7JbzIAY-wF4 zoKRHo29ZIvROX@wOQ!jr>R~UP)?-Pk*Z14Jn8YVP}~#jpt!zDIz<5!c5kV zi5WdXpOg*|%4+Cn3)xkmog*rc{ z)gWn1wo9cs=O$;%DRCazE0_kj+AjVq#?CBL`Cvnk`GYRSd=+_mn^zz!P4+^_LQqz2 z9-8-l%JE-UNzdKtGmkC@A>sGIuPU#QMP%&EG>)1`SGw7&!EfAI@oM*>DNu#!B8niM zJ60_71TK>&^^jyzc$G0rQaJ#zeQ@kxePVG1mNc)W;EN=6GHR)VrOQ8`4OEwfzai>l6oCK6z6sMgk9$gdi>QM5>W9i`;E?kYS#eC zgggHQvBN0d%jA+k-3wcupq;BG@|M&-h&W5AJ)mdYl5l<}0p?hWvwJa)R{SY#QS*_v zcW7_0a5d8z*YQj$<3eMdipmQNt>u*#L#evtm3ND1#&^a=uwD(`x$DwGd>^+(ZF08g zI)A#b#kw$MwfM38nf6Fu1=Q8Tu=v7#p2L|L7*J}$e0t_-eswj1x>r(aS?Dxr-@ihs zf8gQLzjd50_U=UE2I6j1w~84uXB5%MtPMOB!#4z0E>MGv zxG%sKEg^6GGZ5z`WN$JF*IDHfazkz1FMrGAzal|fJAXMh zyOfY#VIA1+HW$UuP5`T)8K6z_w-ex(wVTRN_Jr6C8{hHH$IolwGLQ@K!RmMGv5y3* zUA0KZQ#M{4g$#2u1&g_8^m;W(I~Oo>P_lB-8d>4?!HWqPQUKM_>6KQ$_!srOzR3sp z>;jUs-Rd%#+=l|}S0!g}WR{rlv?Vy|uFRR_x$2w0fzHg43}=Fayiz!;cSQxim}Mq~ zsFjPCY>7dBf@ju!`T{ri-yDHOZepk#iu_DiOZ5^ajd6PJ$6z+_BxpYQvYu-w14>`00SmwsGN`mC7ouac{7Ox$qEs^!*x^Z0j{ zM|ID-BEJA%hoYyCysBvh7GI&rIi)1ewUdJ5liKtXMgkc7^wxVG>!-)|f2BULyU=gQ zp2@74M!X9U&$UU(peoL8?kVs{a$KfK^(e`B-htig72uA-&_jMzmA-z;CCCfimt6dj z4xRk@00;a~W$DC?Sx3wrHIW4qZu^@Ik(}+NE&fIL#hYZOKyoQ81-7xPt(B~#C`pq)t|^0LKh>7$-}=!o0MoTpyj09p> zq$A`TGgUo**rp&rupOz`^a2Ha&F>0yQ5u?2ex1CRnUs(Ukz8B|s9z zY&Pk36ctP1EvUJIaXa!-bxmIRvW_w zx1^xiQ1VZu0%DMV(^2Zh&wQ!{EF0_wu)gWt7xc3z;K_B@b-uI+Y5w2)H4d}Dl&;vd&>}Mr)Plc~JayEEiQ(%+>=5ye>V_RSGF8h79%;<uO#=L*G4OJZIVmW4B}UPHR@ zc7d(apO;f_>{kIW_ceqwJ=dBq+YN9~pxc-HU)^?o0PO!a3aEK*i>C}pvUA;!DH_T~ zUr@)Xcz_hyiA?T{SapryQ4qr_>!=oBpb*pT?RsUFHu(tJ$Mv+k-7y#0qwLIn8%)}X z!^8boRJ?A({(tB}E5q#J9GB)n`C6S4fbIhUkUPVY7Tq<7V*P(meUzZ3vCG%{zlQJI z`(3}RH;;hKAe1`hTgryhzo9L$OMX6bt|Xe1m6pGKo;l;Yo5}8V*!P$flUTq_@bA=~ z%w%+GY|g8&g%TKg;mu{+=g3WResj23=&LRt^o4k}T|M{_)&I-q9d$ zY6I=|0(E)9;d_vs(5Tc(iMM~WIr!%Gv*ediV`H{GiSdj_50I-+ioPkzQ%9SoXzSx-j{ zLwUl;rxq>3w#%zzI;JmM2WtP?8!BqZ3(^~%GD}dWAB*DqfV(x5CGwbFdSluW5=Y45 z8*B06_|Y@{pi~;Wr|Irxl8qqQWLrpVU5>nJn) zndCmRFR*E=d}6ck1U1~~^z~Y8kWTJ~(R#*3Lrs>!_7gz&O;YJ%pXrSP*AidmC8Eg^ zm+fHoaklzA=BF}b-!73w5xc3kmoBU98cOsyMStS{5ZzcM*Z?v_e?#KaXei1FPt^YuRCpH^@sUiFqbrz&G+a~13Ds67P z!tEAAJQi9)vuuHPXeWH*^ude^W1`a=_iKkLC}6oMZ)4H!>V?(acMFo&qb9~k?+is9Zd^PER1%LrS@ zmn$BtKmQf0*bwKbOvQs2s8zrD6i}~E=d1aF+av%ZaL3UseSuX&L&<18QiLK%bIRoJ zwb*;0{*9>elkN+=7|}11oIUlQ?%oFdardH%vFvZ>O0HmU!A^Vh3|==|s*YqfkqDYU z(PPSE3%rzTyZXo7E5JM2*2uh*VwuY6&)ZgPT|~Tur~3~EO+ITgPg!<@3Xv14?}%R4 z80U@5Qc2P#K9=DA0}Xeg!dauS-=eop?5MPgp|w9Ryy8nH3o^qCK%Z~J9@7CR$SNEn z&y*HQ^-KTJ{D}xjPIr!3CJyd?LNs;P_=sFdI=uo>0Px5=f#hF^n`x7kf~Wia+3;+{ zdcu+u;L&riJG^235(Ps%=`~On;N8p>uG~gB79r07=JGcLVnjFk&`@b@{oO-9cSJ=i zW%7Kk{uhMAb8n|li3ACZ;(=8jxGbU0QP*9n%*uyh5chh zd81zb%B9g`OkKb17!=qXX2aGI3QLt#9|;W)of1|`A*ojDXDYus)5UfAiE{N1$y{{0 z`-#C%gXL5>VfxE>jz?Y{X9oO1Oyi=2p{@sn7l&&$qFC^g#+6k_^ z9Z#rgw*41@pez~g`7vzaT!iF}MA*r57_I&S_nyX(f|^`xpK|>_u3S_`dnNIlVJ}_k zsuOm}ST}@9$}UjDBIP2uFM0n6uo=DtmM#oT-_9i*L#FE>7F08pLbQ(U z&iV-!pp8mBGm00B*q&i-GkFrWUC#*Ya{JfM`&+?Zjyw@iTB!N*fqZI~xpvT`K3S&t zMDl590zEr?ZgJ0*h)C7W@Z&{2O;gH6M}YZpFV{*8K=PLNoGSAr|7N3c^{{b)M0tw1 z8ojQ#YS0A97AtH=`!RE$0*$F53*4V?v%0U%LYgioYK$L(1c+H856t??z6U_Qd}~?9 z_w6qHc7%X*mdZ&HZ(k6D-b!*tT{1cXKTAnT_1KY`%6Npf#q#fZ!%z|XcUneAn%V0E z5W{?tmz_Oo4oY5-MIsZvHjp}Lx0mn%>j{HmHvNJ__11#Ywey*tsY}oN1NRu28;1}^ z$k85`P$pyGb)cx#gS6_K|K{<4ig0_PwW@NC=36bP*6~2}KA}MS2%$(mRn}Lm-q8LV!@8uY2$Ncg{1Oao(K! zyf}XVj1bmbYnJPC&CTaJ(K}Cfn7AyNs2aIUnnKE#o(Hum`Ocb+evr`)8P5JcIJKU(;PZTHtPw`i(@j;Wqor#L3)ST{;i-Jvg_%8__I+=oy_SZE<-GxU7q$vk zaC-};GKAZ6rw5ALeP=lY3aA!#k;}^on2e_dHQr;b^F~XpR!8oZ;9faA^&_N=!Ra8C zobO+N%%SgQlT8Y7m<-ofh-{wNJGclJuww6F^Ypt?tfXr~`x^2&&8Q~+?-FNrHU6zT zU=jCoj2yXqJ_mpqW}6kttmRc_Z97*7s+5P=9&@w*#nHHh3~g&b9H$O{(_>CqF^cK3 z8G|=}<`i~ej;8mTK<0gI#5I{MXN|gKqkvSY`+;HGZ!HX_ag3Z^@$qBZyBieyP|pZ9 z7T#7Tw=)v#!-$li{mAy~8k~;``)ah@`n^_s77Pnp!!TwKas%}y)2CVufGSxeqtgbz z!PTW^q-ZlPtJ)0Z*j3GsLfzx0{{q$#&RegY$=4um=kHEF8@AVgzO?qjOWizWe&oK9 zAE0NYd+b&H^%_aMlxUP_@#g(8B%6^T_-1m0URI_>%{2vnY$B7*;6o^r)RMt66ia^2 z-vqn=#JxeWfYFtW6X-OFn?_gm{3P654(+|XfsJIg#aV!Vjih4kx&@)^CWAJV=j%Hi zS7>(;7M%YC9BldzMu`U>N{`0WHe1Ix!q229fm}M#qtb8-#p9VWVih-Q` z(avxZcEM`c>$RWU%O(5SvG##+$`;|#S##pU(}X9>y;op1mnBvzhRXy+CYHn0voq>U zStK0F5XO{`a^6;z>VZc~phd=`W$A_F{t6;vRBs~o=*d#m-n*MhWn@F$$t?amVUJa{ zw>y)dL1B^jeb$KCfzusi++@_lj1FR*#*teOBjV(6Xj!41M{K;Kq%N_iPA}f>M4vBl zsk#vG>I*iGe_Z6I>#wOp1XG$MWCMM!_I||P*j<~+sElmO4}(OJKBIIgh8*7XZF?f) zQgQ75zc=Rk)?Yv3W`{mgn{%ZY07sEec@4S16FDmtBnpi+ zr(a?=K5#Z23g@?$7H_JZpeL*BV;1SZ;W8}4zs*&!2!`EA6p&t?hZZEW@j1sdv& zSM&Wy^7i^$7k*rtV~r5mZCbW=oLXAS#U=4PRlRwHn6EBWnF#?j%bKeRX}oruqN+!~ z&M1i%zGo&r?t5zP++n+Wyx%DIi_Un(<9qQ+&vx$qc=As;CCI*nPd0}OEk6Xm?D3$B%M9V$M{^zL;L zC@MbPWLG5?)w%n#o!2RXyK?<2EM8|~Ci68SY?S!D;Pb0+lSw7gND(&IeUYk=30?XftCQI_t1eIF>Z|w)nY{Vhj8n>Al7rOEbY|W6R8r``NN?!Hee9Hng@S z;}>7>#WbIwX7;TH#Pt?3Yh;JGEFJP7V3@&(qqVLVnZCi4EGesLnG`-cCwEvZ5GEb3 zWcQn)we<1|V0+`XVC9wIle0wcd)I^fe$5q-Gk=w;s(VeF|J68mIv=mAjPeLC?xmb) zE^WX`elW6@;c=M%6$W5|@S1sMsHtWQ{vG*1V3b;2ua92uLcRp=G(pgjYdZ6;x3FT*gNEZL)^EIFQcynbfh zX@X!P9BrlYA7m~MMhA>3U9)6S{}qOOpi-2xaGC1)Jb7kq=U!s>F{|B-m$7A8;6F9F3RKf{ zzpn0~{p7!RqSyb9C+@lY?|7n!ajC=b`wUzRj|y#muSa5vz7eE_GK(K(Bc%n)7p9GE z;25$77sx6&C~3-*r&P(nddJ7y`KkceZS|1=Abu?GDT`;p^M4F}J=0uM%~`$M5CyTw z3B#ns;xfIk5HY>T(YCo(c5~}HVAW+@SCCuF6C88wSvw_WcZ2wU*jq^*H?jFM zBfHSu1(t;7R7e({o@vgkOGUikh>4uo5uM8uNm0hpnm?7w-UK)|AI44dsadp_ zzO=9{xPJgQ?D$#v`e4NqD9KH~3G{BO)$!cfn^rkNIH#l>k2an22^+Rb?s@*!oY+l= zr9GLtZne$wdCCxMq-Fi$*XsyJ z6xE}t;ZMUgv?_->ih3*;AO?b(#%jy9njZzw{eix#PD;B)5 z{@{cMi7-*3iZC|;1eGl3I1%SkXL!=0yln}uAHn+!%FI*(va+KdOg03RFK$*7Lkg-R zohvG}ieX2mQhW@5Bkvs(Q&xIr{jRDd#(m|Cgl`%o`Xz7tJ@LNOXcd$E-uI7hHdoC5 z3`<WNW4|7#%2EWGJl^0oJ22QE z51~T2BH8+^s(mNQO8N$_7)e9x>8-ujP_9c?PcAn37d6oS8DixpjGeH+@b2}TR@bM}PL%c2 z0-HLwg)H0>PbYfxk?QPD!$Sy)oD&_U0!_Au#;TO>rn@m6!N2$kt43r{m7Jc=Uu;$! zD%L#qjV!ddm?7YRmF{+%xFUCl^62h6c$*o7v3axFV$xwRR5xXIY&G zN_j7>&1KAQro*Nx=C9yJEPh|ovrN6)Lp7Vaq>9)`1tO-DzxkTm0oyI;dc`pEHYuzj zh}#_zeNP!Ge7)vHO#D7X7HL(7Oc00GoR#-ZQTiTL#`6pMqGH-_)Q8N)TDbJ+C3{o1 zl@JCgTQ9Ty$E#Rq^_ioDIFQ4$zv8dfYxUguJo;e8`HvUm}Dr#1AX13`)n=+WD zi3ZbZ-`>&YR@_P3LjB5mpz7(e?mjp$1e)kCZa`bLZJ$BFB2`65MR_-dm@RSEBM-+u z)<4*KG&Q`Jy%mu#YV~}6k%5u-nbJ`e8~y@C$av|z#Dy(Zq5C~|!DfE0b6QKS`4TB} z0}p$;+l;Pu@V0`SeG{HCfb$!ub~%Xx;hm7n&f;%L?pRE?`?w+TGD0lWw5XzSj#{c0t= zMc!IE^09VEon4cj)!|ZG%P&@ftFp;II)6-?OA{e< z?+Q+QStEY7b2<|>0q-k*$`#mi;=8Lk7UYnQ-@UNd7RS&Wwhkc<^Zr1GTEbVnYo^_p zhuCa`;itTXn)LA3YtA(D9F_lt-e>E1cDc*ysH&(^&m0DxeO2I1zypY%-+vH42|var zk@~e#D7`sez-LlBD1?9Vj){xwbyeRtb>E+X+KBfmZ)iBW{9I|YduCMzXdTJ824dEiCoWK-T%Zd{@G(&Zw7 zk(?yKZPn<>72Nt#kq~%*{VX=6gO^P$ynnry@3Mq#37Qky_xqgc#DV{^{q>g^**#E~ zm(d$lXI}D(o6n2J$y48_4+Rz{m9yAg55Uv2EEkn$7&JaylUo)d-g0y5_y7~92$dX1 z2z3~lCawZbrfz>YyE(0Ho&8=#@WiGj;oU;<>y21}u_pE^tUqAO?FSePykCCHGmdAS z5i#hQR$zTR`>P1lRbNyhAv;u5=Z|>N+cqmLD#49#y!I=E?Ofn++y&&(avg?y>N+!c zAk6~#>1pI1w?a2Ci`dlMt`_VzF5dHlWZrZWi$44JB<^(U-M_E(;KRu?eT?1L9I>eo~qMYSMf`=r(3{W!Gj-S>2LKMAZFWtL7@ZtG?`x-)N||kh89>iNUmvLQuP|s}d@ZlvkkWM9 zvKnp0samJV&M8s$xcP)s<=PtYtb^z$;6LN@klUbDV&6gOs{LMG8&GkV6nN)>rpX%W z)N>uzCF+Ca-n=zpFoZI>jr7{8y>B)9V*|s_Ggz{}m<|IgvVYq-MZJ6e&9Ik-NhBs) zMHJfW<8&<^L_h3EYfHUOdDALe<~({e6NZF_Qu+b28>$QU7lHb%M+Nlu;Js}4MD~t! z4TXBRC*wA%lPyaN+Mfkj?@$5#%r0HP;d^+p{O!xo9-ZKx0krZy^CJj?{(4GlE}#Cd^6n z&!BhCijitlz$*41dnr~*Zj0ATj$F4oLqhTPsawq4BM&VmcihZrBWP`Di}L>1>-_x5 zHHa14QL1_i8?9I4I=)wQ86Nb~h_mmb$w7$+G)%i2^Tq1Ar|lN){mUv@ZRr#q2^n{c zKAJ2V5o-Dv>bojgTZR_kx@zT~e_CWwj}e^cWX^Bo*isVuH*tuJ!pl+aPj>Nil1I3X z{c+pNM{EgQxx^FPB+x>9(h~OaUgUr1NH)_=r%dI19c=_DVLXl;eCqKI&aB7d_N>~i zzot<0|MG^JE`1xphpZ@{VVSDO^TYq}h7a?1gbsN41D3_F;)NuhsA_oMCr}O|TVz8U z5e*0aRQ7Ik8htaSHA;HPtEA3*M}kqF+FS4^E`q334F@(CtA@=h)=CYizd{GVb0a!$ zn;CNiLiJWoZbf@@3uz;e>05wTr7h*RxC;%5LH(|}40e%HB^MIA52ns#&6$oTI1wxHlYQ|i`df2Pzy%bKc2loalp6IE~aKzj#zhHCIheTZzK z_X_uguYogwi7dzhkjpW43EYBcoBjqsAsp4;Ld_8RR`V(9$E;}Sg@QnT%r&exICUAQ z{N6jPZ)+|dYAxGGC6iw)CHwNwXn9C2UOpn%27XCBICl zE%5|a4|EE>!#M|RF^8I_INgWB9~bK}MUp5lq`5VfBqO%cUUnW*txL@86m})iBV(--*sZ*B(3P;#X0BL8) zFdG>AwI&BWHU#lVX>s-Q`>^GPXMF%MjQev?jq2t`1>Eidx{CA)O^7R?tcZ?nBe0Z$ zn(uSv`i&Cuf4Z(Z7TA&sn&EuN$>%=j4;si3{qEjJCz?tje|`!mTmQm6n=PIoU;Dzp z1aYfB)tXRY^{YyxRA)Zo^o3A18JC;MXw{gSL^Y>nV6-eP9hy{rc{o{*w)f%`fXBQv z8_j4|x~X<90d128EAI3;N~^Ieqh&jBr}_DBNDMjFtVb1y3z3F5|^-TOwpJDsSQUr0qJPl3ZEBzQAtd!4N)6rMy7 zt3#-&_P~^F&c&rt=h+>^^-1!#qf}Z$575@xAbkBidsuru3i2DBaPP~7pEbwo$rO6+ z6?2AY_yfd;RsjsCt4zqLeUF=V4$|Z4h^=xgRgr;iTG4)GLNg8>7fSq4!Si=%(uCty z@;6nbNx8F`fZ6M=RqQC;Bm+v(ZP*J3hRCnAyZb0==;*DwP4jd8Br9EO^DTCYvBbnU zpTM&X?WN6-`qak4TJ6HxXL5fD7KxdE-{3aCjedM+u0ab?!KflW$gT84gp9DXUjim5 zihklJd6{g;ciyMgDS7jefM*v?0*P7Z6f8@%uWXzRvFZsC@MLATD%+JZSHbi0An0!}@=`0Iam0=U_39J}m?j)i9W)S50W$3ldYxH^|}H z5=rf}%+jZd2kmTZ{T{hjcj?DxwDulK8KX+(lu~S3jAeD9`30~>QD}cP_3w1#E9R^O z*zd!mOW;eYMvRpke~xq%4=j|mfzeUz*|a~h*G}~|%DjL|^DUmgz`U2Kq@U;p9PaI5 z#7tSiQ=gy(zGq_eU`MRFJ5^Oi;t@ppYTP8jrfc`u!X+TDozCnG=rS>x6lTJMRjnt| zcI^tuGt{dC(#5BDCIzGIkhg$I0CF?-iMQ(cSakN3#@t`=8v@1?4>Ku*2=)shY?3Y^ z5!6Chs3}~=@s3k1w}j963=eSSYVltnxNQCsaBUapf2!e;U9l*&YU>i2INha4c+t)Qrg|FssNI{PjWYD&GV6sVad4% zg>!$xgLb|OeOu|arrJ(}TL0TWY+t;1UsDqJfsuf${C>sM1V(7;E6RT7GIP}X<#>rc z!a4c=!LLU4&u5NX%IPLYME1TzbEbDZ_gBP3>nO&yUAJW z`TS=a@SD>uvJxRekGu+%fVBzIM|a}+u>ZjbRUdZ^;GaS_#r)3d)cKvg7ovl_WgZ#t z%`V}yJIGel`HeaOnSB3YTfElm;6>G8t)6BK`iqm;+k=Y=1<{th*T8>lkpN@UGO78q z(*t^{bv3=npBptBXR{?jcy^G_*EI0rfcXG$rV7Lzt{v;`-SfWzk*MgJ*-{q|7IYD6mbUUc- zP=gwfHv3thKy-Rizefi|@=y0JtDTu=iH#4k$gbF;@?bcSYSZ86$#nsK5vlNt<=qlI zu9eTCpUs{A?!+{EI&`_I!hn{U*p^$@kZZo`E&E^6QSX`d*QEjc&u<6CDfZt&do4l$ zALp2?B%br%qG$}}NM{@b&>o`rdJqr&zDsfT6w4j&J5x+Fs93~?vc?WO# zx(lQx()aVfB>QgMc4d_`a9&rs!BOL-Gfd zHPGIc4xS7LyDo=}i4Vwqi;IF*6_O9+yLJ@1D(runqR_BVY0(<_>U(3S0^fiA+cnQ1+3x|Wp4|x3rNTNjb$R`3ndOHXJgYlKh%szt>(PWn z??YbRHkKN3tBMC1M*IU&`U`5n?vVW(wTGipK672ick8_QuUY-&(3SYGmg;No>F6*L z1h~uZ`r_=@UFvkESX;e%tS?_XURA24`r3C1+mrOLeB2;tNrcyf)Fi*uTR!#Wy5FXb z{mz8f((s6yMwp)`_rz_(9tZA--m%um{;9Kln}_gC3LOgw>|61F=iP?{{|4UmfG&!UGm;?+TALT>`zkHnK@07P5=+@NpFsnA#Wc{FKs`20=X5*^WLC7 zPyqxD>Spf$@gr%o`-k#oxiB8Y;TJo_4pysSNa(|aXz1qgW1HOb9751ySvoQ^4 z>hZeQ6Mjvm`{&TIv0)kJ8;?iR4VqB~;eGL8=DjtrUYmyN%~cK3M~I~ev>#}-jw=Na z^ZS|is?DFMR?>+^L_Ud`IX+SBdz5|6mm_!Tgbw#3f!`ZS28Ddm6U1iusml8Jjdcfy)9hEqe8f^@JKE0iIG7KGd_?$|#ORw;w zZ`k%(!wqFZnR;dMmKh$dN|=9n!qst1CSW-|CEMYk%>hQe9d=SS2)nfU%maPo(#w^9 zpY=81I9wdnf0)6_(|3Y2hLq^ae#4q&?Y(E~v(KKt{k=5Fp3-^3b?3_Jlk${F;ip{# z|8Rv_2q7M(WctqWKIu5v z(Xw$N%h|ur@)*&O*syy7FWn&U6Oh$%*Ld$(sUwz87W~ONx?9P=cGq}8A;nFrKfr%A zyB!o5Z1vTOA6Jl>VljNSd}B?`pAEG4UY%^+tI)U~JjU?P(H#-yhl$gJ^L1voQc;hj z1bJFQRAM1&^)`sGodz9JcWBF5bM>7)2;bR!iSt-)E1D+au3Oosbdv$Xw(7aF z#CPRUSAPCLf-nGw+s^O`dP))r*z^DOvm zjDck!B8l{?P*1X31LAi$1BZ?RlKW$7-s>U1<9E4oSt?Xkwgum-)cbIKU<1|b@qAw{ zz}3h&_oJnF2?rqH* zk9#g6z=#f_^nTrqG?uMEb)1fgnjSNBN^yOxWWx)PcXAzgEGF1)-o&2ypT&GC|0gP_ zeQ>l=3;OUF4;S!$`_}d1)rMOdq%f(1)R#Y*RvQe-7c&$t#>m;GUkrPAlTAqI=1Jw8 z_tCsL8c|>3KCv>2evami|K-Cd?41_GzW%Ai&|aqF;^l9r`EuUIvq#(I+BO5bs@2bh zeLJI`n>jqWH|aH{N+x@e$#rDeCR}b)HJPSLPNwdqyk0w~1N*oTGA!&z#_dDi-M{;a z*5Ch5bu+}wt1os;dugxmfSn7~=%FB%)sO-*5Sd6)cj58H)NMVgCgk9-!)QOu=v!3S z1s*4hv_x!K&VoR$n4u%X9NXdtA1*%fB@5YaDW6^_H?{;V{rDl?FD4^Kdr<`O+w}AW zsrmpr21m9}o6DhJ?p7&Pt9WS2){QI_)Ui5dlUcm_OTBa!3!$j{6VhYTvidIA9U~>0 z7uisov2V3}z_&F@$J0)$Hdn5{iZAag)BLmjenp>GR7}&>p)6=Xq8p>#=)##6Sa|KR zX|HsT7;dFF;Uc%eq{hl7@oq!F#)bB@3MTAty=v%t1j%e1g00(|lQ|eR-0d(0^?&^$ z;wGe8wCtDIjG2Ge-nXNrw9#s@7&kw8e=++rr-78>81z^82k&!z43rBCmjc`+L8)Mw z?x);$l%>-$wtOOK=I3q!upZm5dVeL*Fk1;Gt>UR0mp>!0R|8NF2aJU*@CXNQ6u8~p zI6D;F!v0F2se1Smosz95bl+4_W-9LXTeVmQWAS$(V7KPen;>Yb0ZO;KzE1EaEpVM} z);h2Bpil(#6#0`TYWqdWt%SuQYVhFh(KNE+{$`r@&zeB2vH`b&vLR~Zn`eaM=Ih{L zhN1Ypv`BjJ?3;GmE{_)JV{F;of%Hl5!vIeQ?i-e=Jtk7ic9v5+?mNT_5lpi@$>`(z z&7x&T@H`11G`*kiKF0#z9%@l3XwBC^c}C&noVj$sAm5<=XNF$=RclhKRMd12X!`KM z*!%Sl8xOG+y9~p8G6m0+<8C|>=&c#@RNpmFbX5x=@IZk^KKx$I9Tk7?^uq@DiB2^x ztU<~#S_6$EKQJ}rCjG)pNJ|3$hog#NN4~&$jR87CD`Tr>l$G0E#IZT1El?>-7q2nT zHCW>9zrZt9VI(7WgSreA|J~`Dce7P=RKT0lb9Wg5rxt;#(doFq>K;v&zx=>$IjGxt zt=cu{OxbEwx395A|Cz}TGGN_!@uL|>f9oQ#usmaiB(W4^svI@qqmZ{p){IxXqw!_`i}(@+zkP{{EX<0OAJ zf3za*Q)dy939E9a`oi+CT>8*S<)z7y&d0F~AH06+pFrF}=n(E$ihmV|soif(*nHRH zm-te@l#+Ugf2#C)G0N`fYxMhilhAs;a5dw|M>X5MIi=V%uc#H=obE&0KvUgrUKb;G z?%g|+fHI!|91hf}7WQ`KSFkIkTRcRclu)*91&w83G-(D2$sws6-65882f)uYpN?>h z)bO+nVf>{W0KesUU9GSL5F{I4m{(09uOZ&H2yno@rN~m&EaScXvx|x?8~4*xQr+2~ zjJw^Xs`3$wu=m;!^CvlA*>$nW!D#kdRoqxR)sw4l@w}4%9M=Z#^qN37X6mugbIT`z zg#_rV_06v^z|nU3R4Aixd|AIu?K?O7E#IIPVC9hB;$an~LL1>?E`I&@O3lV=20P%1 zlSFs&sCwi}0E>P$DFebP&rml&-~MduRBKK1Om`dJB&z+^k7d}To&>#!Qqi4TqR?-$ z;>U5 z9$p2o;pAP#&kP1U$z&lEw~GItN!zua2Zxja=M~1M+!fCpI+r!QuGeVm_h)eh^U@sU z(Q#M5XYtZ-4ny-Ld=Bn8uMU4*gT(jrMdG$UI6rKYv$9e~hjXLl{PJf*b;|lT5UW97 zL^Mja+a}s#ntUFEbD(VU^1j4H3i*4(_(94?$)xOECy)-}h(BsK=KdUM&oE3JE z*u_keONVY^4+fTv&(i0}81Q9SObt!T;S8QTJs7+ZNr-m91#U<%ph)Vhpov~n z6R&fGv@@1SlI&I3aa!h?qeow;5r%hDf|nVMdt5F1!I?cdvr4KlSd&8ZHL|eFbttY< zr&8((F_(IEtUlHIIVGf(-2ui`vp2}sT^i3BTTV(_=moPAj>pYqX9x2kRyw4PV*i{J zTAEuBN#kJd!OprrK^gy8(laj*>UlL=Dqa}RD|mEbVeMA=gBJo&7ouuXXs;1jr!slp*MQ4C{JhQ@^hJ@_Jt1jywKHIzJap0&_(1)}$ z7w;%lCAScHRgMe}^VIwh9fa>TqC7d2PSP~dWVhFQX1gacchi=b)h&Xz5S=pG?n#av z1OAFofyeQ#%F+g3AR^vBRvt`E!VUt})b8vR`@>@@7w4?G;2~clg9vUZm?awl4&XCM z83QlO$VkL~ZUOaSt6s79nf-|qU0&;Z?j;vI1M5j-i=z6d2G2KG9s`x4niPMf&yN$7 za&z#mhnX@j^o57LzymPU9fbc}`1M3CQ#wP7Kpm)ID_@YD&Dnl34|Jf+W=;g&m*3Bc zCV;NA%^Az?39~+iw|Z$+rteYS;JEYF;YBDmDbCT(u&vg#cG6%QM9apPJ7s&Lt`}nq zYV#8->aNPW<&S1VlN4YM8_Ur#zVwvc;E$NNF>VXx8kw>)15wgON55r&r1R4>9US zxLCEW4zNQ(6vlh)Zlacr$LgqHL=?-z#M^OM`U?{u8JKGO#)3(l-Vp0fvbb}KuhZY{w=iLd660>EzkXPbu$wWvm<=47 zS?+uP*qCq-;V>C4*8DNhttqaSZ5friUo1ta#{O7;Wp2%_;g@+C0+y2YoSQgnhV7sZ zcT*M`vV{~rjhO|5>npUk0Uw3tR{bk%#*r}#HUf3zyUQw{$m8|<6(V$op}R=*gokAY zy|=^?v$~^;>*4wgsASXj&5rgrhT91`_rM-Mr3;&(U;Be8Psvs?IsK+GQIQ!8`kxIcT zr!_ZVi$lFS6x{yIbM$kLquSKhZh0<=u30nUl$fZz3H(Ge;KP#*##D~DnbdZ76VMu~ zXT$;D<2`p{Y;&`V>KkfnbU}D+r7FQs?+nd=Idv9DVH{j_t4a=rymKL|-HjQ}v?(rbkk6YFH#03Qf zEq=0azVB-R&*Gl(yiZ>V-p%NNl+f5*bWvGz5M*NaOHj9UeYQquAZWps3t-- zRev!h>@z>0DX|uUz5H^muYC5V`3M^H(2GRnz`d66d$+Z?J#EOtyn_7jdu(ggLS5zC z5pTLzgu}XdtdH>L-6ON5CTi3GV`BIN8|m2_%Fnp(0M|bYi_KAfD4Vig zM6%oc`viS$eV#`}e!^9CJ_fbVi<`0ZPe~Zd^_bTd-i{&hztrVXl4JvJp+g@L=YR06J|X4ZE-;erx(~CIoE%}8$Qrhv z`v^{_6L}e07()fh4grRJ^jsmx=@7a6F>S)4!0-@Aa})zZcN?pSb)19=2N~XSIMbhW zJEzCnHp=-hfnKNbl$a5z2%@ej;`P= z!foSnNHvWvc;o2KVK}-D;W!@}*-ig&)(aq8%_Xz@gIn|h66YVq)xG%0y^~k|v<|mv ztKYubG{@A;l8diM5fW4ZuKSYFpVVKrSX0$rC!dY|cqSHd6XUG3Vcp?!WHvGUl-qAg%XgKn2p`n5x1UKj|Fb+xUSBAOpsi z8gI~k1}24$eGE-u65@gYVV`NRNs*9*=0RIkPSDb7GTa40+29I4^An@I^4vfeF#i(< zUSQH>-Hj{p=}LyZ)3SFQ5AiOSCTcN<14oo<8PzWhdNb}$^P*hiMG^?r=fJK&?a5G! z5}8*Ajton6@5CZgxuPO^(*n4zl&Agf*rkPln2{lC30)Q?1%3C2Ts=O^b4tk5LL#?h=^JLMyJNz2PNB%FeKMKCs^SR6HK*wK;rIA|y_H z_k_2p&puU9?n0cN<=jaI?l+sKTN4;T0Tq%=<0M%Q*f3kY(zQh%qD7PyNyXgyMx~_X z_cbkIxY2?6(}6Em3V6$v_l(`X8==oLa@U`bmAJm%q4tdk}UD(PW$z zv;uv%d}$sVAw)iCdYC5h?&T}(1c&U}&FzlBKE3{XcerSDtC0<}Sne<6|-Zs)| zANh8b!Dert?zq?d{5S5xOM?)|NUbn6fYA#GobGTDS{mhJUjsyhRumF3uRIXX^>{R7 z7;yzsBA(`XTe8Oc&g!dWo6mEI7bx*5nAFk7w6O7}9R_@6lf2y1YXD9l*BZefQxIp> z>vsaU?9+hD{>?TuTnR_E7}{T$&9qmskt9)i+y}nu?<_OsvK;O{`QSa|$RE#C9TN8F z1i|+h=0ly_wTHtEr;a-PM?MtdkJDj;Hz+?}xm)nWem}+y#ON_)<}Z{!si+$$Ahoev ziBzhZc ziqs_ZI@xY@1FdZ|$Wr5%2feu?&)evc+rv_`X{9aE8~t!hkjj*QO_WC7#d-F>NvIhR zrkiXEE)s_vIh~Y0)2-B)o$I5_zXsckO!qVER1b<=L%Yr+c1J~Yt4h@mio6xAfG%Je z*Dz#}WCE!&Z^d|IezYlcxG<1nzG82}b-iYkd?Tf56Tie}&Xb``t_fTuo!;#(Vq40@ z(^yJ3qa66h3KH8cTO_1VPLa@dyeQ|pVa{B>!BAf}hT7DJ#%d_XGfNFxd|fV-D^=bL z7oA4P>woe42ZzCiYBPcq2+cVLpVb!s*R7SE31$uN1y+OIZnsRNuXQ_H#MzYlPlMIJsH2Ve8ms*PboB#^xmWG z+i3|#DLTuHf^2W~hPCh&-M`>1rwJ)-rEs62b1upW#}d(X?ia~SY*RGAX}ocF%~pWg zljQY9+@3EL2qS6_BU>zk<%P!6+flYpeeKAE672fVfyuE&c&@~QZar+@&!{aZ;c$um zutlJ_ryK*E)VQ`@Th%uk5;u69FQd){A*bKq63AWEmt=IxD=tjddyj@JpQJ(>XKL%q ze$&@t`ji5IHp??0iXkJ2xdO)46c8j-Q#B27Z+;8@&P}6XDLWa@dO z$D+K93syhN1J4IP{_(1bS}h{m2>WPK%EeH{D3VWLVvOzW^dqQ%J2R9Afa4dp(W~2w z4`x4d<#GJh)_a-D&yVLBl1ivaH*6Dy(k{|a?))g%rRq)Vt=d=_=eYWGw`6f^WN^Vi zz9!i!i;N~-;Zhl0^Aom9)>WF`vNT#|a=+$6OX+A?&KB%4kwt@Bq?g?m?}an-E#{1mQF?) zZC-sutIl-9rtYzIw|BK$-yyu}69(KX-?P~i;lO+g&B}n6Q?i?gqSD62JP8@#nljK2 z@O%y|Tj);ReX|$eo5IAojJ&O;?3youaTgQ^_6eWlejIP9T9)ONBG?x;`W z{%Pv8y+Af7($NkbfoJ=ze~~R#trMsw_;KppFtz9?$Jdz}bxHPZMN9kAp}8weKQjCN z6CmuJ^ghCC1_xY!;DT6_b;{nwDWv4*s%iU$jf}9mW84)vb}Q*ojEDjoOBvaM_U*x@ zt&ofqgXA>t+lscCrnNyU^A$i%KNgaY9@m%lq$6Ma`N8p1J3xDK%}fQDyM;3Zh2ec- z%ln~U+bw{i8J6E3m9t`897yf4^T?w{v~--BHcLW_(+j=@Z%SDXiq(*0zw|V{2k#C# zio;qanwl2{l^zoek72ZO(j9>s9>rBGU2&mma9L@S-pp7Aj{TVGXV`V}6WS7sMO)rh zU3&`i`L6W3Gb1^<(jXJ4590>bZlI)r?-pn5I|Mmt?d~y?rjHT_%IXA#<}(xHY||CS zLm|k(cptvGq51>#q8f7U#zAwXOP^Q0c#g^aS&Gq&a3{4)uLHxw47+dz#-vUilXG5J-Ga%T%A&Mt(Hr6uwCh6 z74^UlqSos?)v%=yD^PD<8|gcVq>{>kPv_5ScC_CUriC^Zf!;f(Jjfs(CCiZ`v8uyI z>qdh|R3rQT`L8kw^*P`2RlTm6M7fV$saKMk7{8sfGJa+3zUt=U7PE{zqRJE*KW~*h zs1sPt{pC|x@igq!ybSY-!nK1elD+k?3!1w{oVgD@UNa_#U{^Lrm6X5}BI^q9?aW6Cx}1CmTMQ=UALoCLaxv~PaCKv8Jd^B zC^&#GosAoi_Ym5Fw}gd(lf3|4Po)gsn#y2?ME-_pQ!=LGcuuV=Q-NE8JWkjh*{`m{v0fKT#|#5(nPyP!kDjkE2G;+B*qz z4spY>Q*My$tkenT@4jHuqiDK?kRt$4pEF$VGn(nHtj7o>b@zt?ud(%L@lI!h+UMX~ zs1jr~54lTvnkVsDoRq9^Gest^rr%vn9=Pe7Q=8Vjvg^B3`}BXDYOo4yO` zxLXA3!m(vN|CGe@E|vy|PnGXl4stxgZ>u`R&uIiB%U=uJI?CJHK>Zb|m*K`-SPrZd za%ZA$eXGVsJ?FbOslMNUNNPUa!yvC>h=Nlh_gclsC6ScMuWs?Ak7yupX5sherd?p? zYsc>^f>KjT3DI&xC~TZ(r&a;tD77lqQ}k!klCS4yATxU%lqC_nAO=()dP#B0BBjz8 zGo8cAVY>F*>B->viw~@`e-v{cl_V)J3#X zLP3k8mmJ4D;;NVENNVe|# zr38G_eOt_Wf&;CZ#HiIwSO(6LV!BTVcxY|7jq+pRdW_QAJ!d*L#8S|SLIi}`KH-g@ ze39Lfv$&*HbMro2Z*8JP#92m9L|DZ_5twXs$#F2^n%G8SD*BnBD%0N!L<5c}yz8 z2a+Vv@9O-F;XF=jw>8@sV^o6&=}Kzu#K2mwoG2 zV`1sk@3|j=3Fbbc#EH;U&!F|Er8*hsC#9taaM{VB%iodT&Kn1BTxyQ2`Rolg*m09 z<3S^%u$PMNHorUUu^7OmE`= z9Ifa5?gp_nurJ-QjtahgEZ+4fyt!`g94|2lS31Dk9eZAci0kPr(_uI|;r-3$yf!Pv zOftzz_$#dRH~V*PDHd99n_3j|&$HsALCU=Z!SyJfVGXX3Gs>`uP*E6JN&}u1m+J6ypa66P|B12~7zIAAK%j^?Y6-!-;Qab;MCRyihLM-F6{S6GzAw zH2S>QFKaOx-(NiAl#+^_KXum-j1a2Lx0jdxb>Cd8Zp_}V;)xS_(pEg>P>AMD%>U*8d=asvz z6q4EV41DL!iPt09Y^{pDhi9-C(URdr`8;_5 z5xqA15#L&1Jbx)jpxUeN+k>gM!*`>6@{!*wt}!@f17IuLsp;o=A}XIKt{U?viz^28 z6oU=$pO>21kLM9sw6Ol>u%~wDqx>{xp4=f$5=Y zZPgij!!?sYHhrE{C%0BsiYb3qKo=&WZ>jdAA@xpK!}9D1n|(*!T*!}ho$?%9P-!)$ zMWQ#YwX9F*z=HOrzzQT9e%(@cDlBQ7U)I%m{n7S>@PF*R?p#|8tK`pPj|o9z;IdJhKe+_XDlJG@`%pDusFh&4jcUX8~xrB>$3FIB&?{8pZEK_2Rp|Fj10Te7h5$dz`6g6xc7=`s_)jmRYXJ-R73o2E)?)t4ob&o!Gcih`EfKNW#9)i+j9xUfj4`0R8olZ9ZRSGD}9N#rfnMsVwa$u zzts;|rUl-Y*f#iJTA^4E|H2=sgD;?cey`7kYvjP6ip8>x?n5z&DV(WKi=1KQv&$Ru zZ7Q>I6<&djr(0UOw6iOoBCA;oMQJSN7|ek#?EUKNE0@l7y}gyxRUF&FIKn)W;iy7X z^cI%2p~uee|C#46{oSN}mXqer(K*#~y-n8`j`unU{MmbOvh*D()ynt*{lw;w2}cYY zpHBw0PfnG>RW)nfp`7pYtG3g}<%igP*s@$Ro;zRb@`on9Pl!+C=&*Uk2VO&8HA3v{ zqp*AMxw6vL_GkaD48-+f>cs|CTf~c-;{stA$D?H-?_kiF)71N6bo*j-*AO%4Nkj?} zs9R+`b-0Xqdw8cvY%h`+L{Mv36eJpBbI?|cP;bt7w6fQyc~zOI`--ErVV~bn2Rv8E zPCm*&#y_ubyji@m|KXTL=(J8z?9pOSeU;^R$=>(yG6MMWtMNdIQ{*{xB1S#3x2;2 zs#~%gWN`;9(6YU&D6GTqliHa32l&lUb;?J{B!kyknn{v*Ar9~X?d-`Ha*v5?PC`5U z^**2Z#(#koAhbUHtp+8@=&1`OI{`MSx~(^{S?=Qf3rcO7TB3ZupW`sr#r1RShBNBE zk0)+=W>j+xMkDGb1FsJx3438PmSFLu8{teX{O$goWdl!`Kzcxxc2JP?(}%g?jhZz3 z+Lt8e!RQ(T_hEiH8SiwrTf3tRLdgsPeB9zRKGKMDktpRMI@9-KXA9pR`5iG|{LliZ z*!&@S!dz{x7w6Tb(G&gKG_W4vul{Fi=3-r`Qf@M^M-1y57& z9lqt8-u<{;bKL9pi!{pV?s`SG1x-Wc9C_Jq$|rSvcqKQ4G%C=~vKLPcDh@zVdKOu1 z5x_|hGAKEq9rO@eawa}wZ^0~<$65F@i`Am)W-XS+K)m>yF3mf<>&Mc@Qi;5WEslB? zpgc?M$LG;h_nOH@1J4EVXle=6G|v&!D@MULgphr;t_?_6_fg!z_4Q00F$KChI_Ok#&N_F}CSNb-5{bgUW%@chnQ}cO!+pi$h??TU9*~ORs|B z*L;+Iq~>tQ%IoQXodSL$7oH+j@R{+;^}L5SSN$J>`SlNeq&~<}Slbd5v%6JjO1+f? z^1lr8$g|((=Fh6%KcW+F5H3y2bG?dUW4*8 z!?0ju1NXntpL$%qB6(jb{@LX0ML%sjq~puV)}5&%1G$~`-b*W3m;OflDs<_R^5mr% zfsfu3y1^qMq<5Q<9W#{{f#lOl2NbzZsbmK}-n1bnJb`#>`v~jwU1-bA+U%#LxqU;2 z&dl&z{BWh*#yp8uU#0}rELRd*9q(E_gP74mwy*m$mD^xm>!hg8W;xyc!S>I=!a9E( z2e>MBf^1MB{j?JOT2@p3uhffcNC={h5JvsUP;6~7@d!UAu@=nI3o;VE2Lk*H=T(3- z+Y{$1CZ0COThD5L>|~SK$|b2tuJ`MWNl^|lJK6J3@5xg3PIsB7fbkG2 zV4_|UFs(q__(K8c$K~eX`%+W)LDqaf6{2QBhJ>7Q>k)E5(Pwi>2CwaVsfS_5bY$_i zvL+;wSsWXs`wj?C7hG>vHxFYpm2Am_wAuBNbt%# z#U_dX+ClWbd^nQ@q)++c^zp&qg}af^OLhdL%{HTmSZn8s-tf_uo@?~NZ?EL8M~s7W zuCQrDPGr;^>Jd@ad1` z+>i0|)5+|G~ zh#IVA`$eQOLwGnT2Bio>uFdcDn~5N=nX~5{!;r^@%t#{V#E{9fqPNFL=cnvU4oL7} zmQ{81-=2M2{LoakJZ@9xK6z0f+*M;hsJK4(C=h=fQZcl>?Vl zZ(fy1ZqR%B-jHuWU5=sf3trW?xp5`kHpK6H5#nM3XjRV)ryL~0mY(kR5-sRE;F0p| z()vy99&DCaVij%ViP%Y|yVbhE6vJWIj$kxJq zKX?BSxhf)}K%=I-xNYrG%4xEA9i+T>RN#_D>5Im;FAsN!z1-pKN?{eU^K^)=oYm zcWROK?)yc5&jOA?ovb?>?yj%z?W6QzxxcZKA_%taYVlM7>Q|q}EotO>0^&Z~;4dN9 zY_$uD~a`#tl^OSpEwLwo+`HzCS5iU~u zC#D-kszY{a$n8_#SV~Hh!ZsByjE?n94dyw8TR%87za$jRb!^Q#oEfkK55NBXChut&|23Nt6j$6C17_#IInPUMOMk64}06*PB^ zZ+7?HmYw1^YVQ13zf*)Dvdl4^h`jYhVE$*WXS$;8=t@)(`-Ia*KX;oLHW3U@+^*mB zGXj@Wjr!t^0=1O}yQI9AZ{ei^w#AoriN!dg%f@G6!O0A|^p5^vhHnRvv&W^|)c}w; z{`7lgY=rNm==A+!+_MoCj8}@Zlq=-UoxNEg9R#w|%N{4pRtc89iGry-*Q|ryFFfpl zpcqR_@7j6|Eit}X{EbEww&X8)*H?bDDLHjTG>b0INExej!aD4jZT0D2T~1Bp0V_vG z)cSsT(-p9S)p<>wt(7YMqkea_P4&w9LodHg-E2{nf)7XW-O~D``^{)QjKGn>_RIK7 zh8vZx2<_aukOk?mU)XEWy2J4U6TS0TFhPUv`E{}CVa{&CJX!ts{UV`rRI z^=f6VKTe6AcWzU-GL7s}tx$m2SkHN{0;hB7Qz(bnka+WBQpvrdK?BkC&tX-drkXe> z8-zNUEmmL0vWQT^8Q>DWfcO9U!nGw!A*JOj2;o4xE8T6O+0%s)O5ewR~WSF_v%Jy z)W7lXo#<%D7u%uceW#_=7ud63qTM6IMsdbuU-Qp)@@y}?s6^47&-)fJ@Ncgh=3qn1PA2k0hwQKS1=$2ePMrD2rc7d;d`w#T*XN4Ut6FP_K z(o0kl;p*_45-z*Kc6008Vr2udKfMyBfIptEM?U!*yg|W+a^+)alxHE^n*=p85Q%jc zwch1kI0Ax6LxjK9MMx>!#?U0w>T6A(x{ZF6! zCL7km79V_U@A0dw%w2iw*pK&sF=J8d#H-NO%a41LnKJJ-Xiu-toMvl%J_Sq_tvK#u zRy#4lnO1qFYDLc-cW|os_YkSXVQZ}hoNW%?yg;3%dM44ZQP{2A!H6f+iSl8MV%$b?h;zzk%s5W_m0)P2rf#rUr=~ZI-12qL)~*86o}a4d~0G^2&B@ zbK`~ldm=pvsexn0RY~{XEP}QsSH1gI*DZys@hCfW@3Rq4ANZt^?pJT(9k$+AH&gPB zm$yOdn?JEgri7hqAlN_hP6MK~u5ygVbOhzK4`pMNm39v?sqcu*Haf9c9=j}jLvaqnr9PGWo3^?pv! zmG>)L4xR&-4ddY!r_-N3t=k_DS&a|pyQGsQ23VGnUeFj;q%ve%N=y%(Q>*8$4yO~# zij~fDZdeb|HEc@){xrWNFK`$5t++i>t8vl_&tRz2hFjKH<1>+DBy5j^t&UO%2v zXM-0C4_??5=+=gBt5EiaEUg7@25+2q__LKe^jCdfFKH+kZ|AcGnxztE(o0T>gH2xl zzIN^O=@TE`{ZIdp@_BOhfAjO#-UeO2cFsyxI;|LHUQ^K<>vLihhyuhMWX^c{c( zrv3S1`al01z@t14ivROJ{+$23imb?q{%Oyki-I=H|BK(uHQ=*eWcXjb%HK5LZHCWj zh9?O9KM#^V;7OKRDwYRbkQuVU>Pz+~|L|^g)IqW_hn*@(_p2l&;x#@m)ilR1!K5jX zL*jiOMsZ=ET8pYt5yt=J1<<#__StUECGf$NahtaoM7TOnYH~0mbyArc&$5UMztxhl zmv6nby{x|_OSrs6ciJL{DXW&Eo^|Tz8@Gx@^?6%?pShsr)xa5`810N9^xi;4PSiq$ zrlZr8-B!P^-|B9~lJuu@6Ru1XlyA!(!z(&{;C0K#Ic&JJ-l)ZFL5V=&;%E*=;`>rN1mzi>Q7=51M_9i~+9+%s&AjHT@P z$eY^dLFIRDb9VR@R6JX}TYx#1q~KN0I;*(5aN#mE-AAUpxOvs_GUtG{fp)N@QM}`I z0Ho9M@0d^{ZmCU&41}Bq9gqRLGWIuL;2{NVey?ADg?)*m0R0v7vp^Z)HtK%Wt=T(2 z>(WTeSH-z?=yB6j}dJA~Ux@xO_B0Rn@#SP=<m8oJcXM)HMUdL10co*bRRMxjH6Hi`bFQVu z6mkvzt*~#WrsPu*t)-Mwzvo#>1jc#x);%5H<}H``p$^+x0@VifdymAXToQ zyUEe<08SL1I_b11bYk@(CKQmb#ACFQ0(RHMQ$Q-?+vq0oQC9~JCw>bR3+n_p-N#A} z1_*2dCdOi}Qu?UEL%0v7%SG}7z1bA(lCNJNu5`<&7x0Eq_*&ddZQG;7}OwprBEvSSqXCdMA`tg}t*fS~HrVEj$|ojLbo+{mwRy)RTa>w_I+ zjz!876Fvb?&aU7Q%`ae)!&fjWq`vy&B68?c8&?D5yx2SC)oUA7_b+zQaK2y{M%u2v z+r!G;MSsU!@l%wSvmSVB+CTRg=z#Qxcrl6X9=t>agV8AY3Kr93ojcw$o;@!m zLHFd0iqAe^36TVFMLEGu%cHQAw}w)eenI*#%8AjbD!XBhpX#P4^O#*jv~td=;$dZ; zK%x_s6kO5&gG9334hAH?)OuG>=g7kiHh_&eq!#B&`~R-8Zo}_pxo?duD0QI!J9U;& zRLHT_?cQ~Z68?h}<}nvl(I?7?kgd%>Wjpcx)zynCX0>G=FWF$PfV$ZHZ#^pA0j{nw zb&pp*%9BT8tw_gp!rypBIVJT6=~%(y74g@w*s zyHnwUg-`CN^vjiPVhhV0*UDldyHqs{tP`Bp2<9c9smiXxmj2!!>4d@fCC@zDjZF&M zANSoqR$~;E6-&%)Aa!ekAGHi%*^oNFui8R??_>#kP3V-4M5A^2l7=*_n>}8fh` zNj7Q*kxm1Oz8a)~--4u&&QBw`o;ShTzG37v3L3ToNZhnmr`MNJ6eJS$lX{s~d93I} zUam{NJ)v|olBi04JRY*SxQ={&YKYTGI0JCNeE`cr2)IUU1kaurXCBny5Sy+$7K@|p z;YU3tXQ^fIT%_1=<9WWX0WMw$qsKDU#VpgjonQk9&Q0yDo=>AP&wN;@k+}HJ@?ad`JgswylSbxG0!EuL1+qRM^Tq~| zPxpXDfPN`Ujt+hn62CzU!WX>clM>UNIQJE&5Y3M|2v8hHf`tHkuY~on=Ws>gYrTC6 zYa7ty2#&&Sb=VNlpv)x2J6x%pQ2$Qx1HtrNoq;W=)l)M&Jz%5l zXgLty9e8H$1rJ+F@$1U(`g@(%8PJxp@*wQ4v&^oLF-$^CL(C)KuS}QXTUS4B{JRLm zLciR^pPh)$^c^qb`3-KyXW1PBXzyFSMrIhFDoJhLL%NG5w^sVXLV{ocE>5G_dFmqG z?S>&l&1GHodMkF|yWoKB^dGl`!X9nYsuokbtZplT|2wJX#MUg#)>qVAUH;jY(x6@K zEkmpXjO}WZy~?km{A>ruFnu)|+c?sN2`T-_=|{kHhvm&HJqa%t*#VY>T%t5A72{0+i4DWF50N;1rr3_*Ak2IM|$VN>ri7nwyV>HIX5d#Zh>_fuIl81L?`j@tdUD1W$B~7hLwY%Ef4hsZSII z-D7*fCta&8TUXq*(WWEn%S4Wv0)vVM;t}1wH3Ce-LT~v`42LAYMmTfplxe4VHTkkE zTp;lCKwlhubbYyp;5AwReSsP=fr|&)gl$?4-DI^=(vkbv-H&)74&)k=;Ybee0cPt0 zaa$TVNo^2HZpg5poed)v6ltvTr%oXHvz+22tSqf7sm&LA~ z>}7&*a&{qU;I`wfLymFV z?V@Z1P@R4nW)&iG8|6IAsE7rw8Jd7iYR%?abj3V1&$rTxenpAyNK+W%h;q!DCyzz^ z_*VlKExbo52r#Hs_j0aEnv)%*ez$uRbY@bI@5NyQ^{B89T#V`bFv5c6T{s7Y9naR5 zC4vSp9MB&3n$9KZnV3P2HdIC$kM69gN7d~qJ^3TKRyL6(o2^)DUeREfS*kZ_{`et{ zX}seYWfWsgEPMWW$l=};vEkFhAD<^eN^O9;+b~a<`s}A$TiCWgZq0cLQ7u}>Qf-yz z(62Z(hwWs9WmmK<76)!{=23)jXHFT?01wk4NdtawmIw!fNa7G)Q_+RGUYd6hG@Na6kO6 zbFWFcUahmM_P5_%9dZ=}aH{`T8|)R!8ksz+kS9`hod!t?qpP_(-(If5|I#Ec&iIU}37A#W zZ&kyO!z0qM(O~MR-F!_()ZH{uS!LCFYH9TH*ofS-B*jnJ+9Y_Au|31aPy4^g>qC{n zopv78?}fRMIVo@C!EX2oaTl`LtSG|gihNbPml|*We>8-*1qgOtOfp#d?#qv)2tT8I zKQ9-+^#*5bgQ~M?0d=av=)mBzr^woh_397Hf-3WQyZNCG;b0yhi=#j6s}0QX%5bCU zkthWf2!a|%s-ds>&BdbPkpC~Le-#tkfvEo22Bos{9%$+4AO;~|Vln&JbY4Ik0bQU$ zI(!#>`1k#SQz`KZAJi7ufSMg-bNcK5 zI{G*2^p06o)vu{2kxOw@<6ee3j0#x*t!+}@ozn@HDk4sb+nLwAgiiQShlSb#?!D&V z$$x97*z25zenhUd=ym(F?u|Q1Z3~MPufX-*;!by)cQq0g+qQ}&s(!O3a394tCa{D0 zp)D+`?xOBkeAiw++5ZyJoda%2R5iYe{tnEfE7H@EG>h>~!b&TUX!xxr^D`w)r|z-- zOwP1W@z%->yp_RLgab|a2h~;WU$ZmJn+TPLs&RgY1F%^dFOw&#^rJt6yANpltgjgQ^|IxU!%jTr> zg)8;J*~S##v<>IdNEN)SepqVG_d3!tj%z7QZcfhAd$b64ry9jr9<0l3t$2c6*ky6%^k5uhM*)SVzEKqF~L-t zdp;0CLmjJCMK7q2YbSSnDSi;cE{7QGsy09J zS@d=7GoBTz$(y&IGkC*#1|Fs`$wehup@iKa@o(1~{Be~xev{q@Ap-m))aPff8Vm{* z1P&PpJLh>S2m}$@*o)bR@@P4o+6T88=Ex@h#Q)m^HP?>j;v%`Z)n}IRuTU;2a$R4i zEg&a0i+}sL?(=*l-Saf-P_?(A{?KFvlvqW}N5>BFIk&I-g066boI@NFaLIOrUR9Yo zP^?~mh;O;)6y?0f7aBH*(wGR7^Z>u#u19mxu4X`^1PYFWunNeM zG8n-${`#%9faxa+C!2@JmCNM z2|tSxKYpE0j%>WRBjQXmEMx-=cQsR|v$(VWL!sTV4AifcAQ7=dwp={B%U_;nB3xI~ zRT)4c&S1@=yocgSQX4|mP_KtX#?m%)U&j-@+XQF79Nr}u~;JM~Lvx(mgh0lskZhb{$r%JA1RM&1=4xnUw{0)Or z13S$|F`>b-IJbCVS4;ooR5;B+kNsu-;Y)6`OW^2T+%Rm8yAik&8;G6LAao1$j_@GS z&z7;myuOv{!iK7Zmx!@!fmjlDr|%k!KIDS?4XY+>^|vC3w%SiHnMT8=5Ghf5@bXLJ z!JohsKE;7$q!#QUWz?UjZn5LZ2oxi-5;YMe2|dF)0B;Z<^JY0(6EtX$1MJnaZcj3O z$7;GwTl~79UIpxqzlE5EBx$iOnaco1TTY zM*0lhM7jKVRohGDvJggZ@)nYh`^E^S14H+GhIaNaExkUG@X6cqB2j$`a`(}ym1Qq= zcr7-0nunFTwsEAl9AQL^jc6f)n`mN`}68whyv;gWkBqv6d zD0~~W^4_OnWDnNcNMS67bNiF=KuyVYNDAOz42sTO3wv1s1a^@KOgDf#V-MTv=v&7$ z+cdcBIy`&FXuu-CYz0lWOdflUen5St$a47R_u>xO7JYJ>D~ZjD=pk_3GK!dD)TY?k zvCI-nYq?1Gy`+nY(S*ZFfT1rH)mKG^FYEB$CY@~-%F;mYZdhqpI3Qx_xl^)9@Z+8; z`_H#<9rf3_U_Iu*_FgxcxBq!Iv3z(?yV$3Z7|>qFQN+&8E)EbKx)xXLB1X7~EKSjg zD~9nG<$*1pT>F+ezvjFcdu+uies_-^Z^ZeSyPE_cV~6-R%k1SqPiwjab88 z$zGMZiYMlF_lqp}`&CF>p{RVG=3Xb{8`%5V7IS`vmgxGglrMIMszi5r_#jc0^D6p_ zSgMkmdB$g^!O)+C3)EU6vIv31UH?@0@Brr_=eHH>m8-A%F)Z^e_uw8C?WdICR4P$V zL^ZDN=!x#=-el~z8bqgqU?ci3Ex6IPTPJu&%OWH&8~4xH9q5DX8lO%szl7b7rt*(H zMw<6!n72))4_p0xC|>5e{7;rS+w;6(iqL4n*r(?6H{FYc$N zG`h@j@EXNI2(ju~rgkut-MwvJOJH^;-bPLjnet2ag?ZaR_b*S<826!0BE{lfkAtS^0gAgkx$x*paK5J9Ik9q+Z|6=vW1<-A1N#9{`_WmNP0e>{P zN6^MzV#Q=JvF`WR@xT*>>>+QKA8LTcakXTlj`zMF3#~;`pR&&IHVXAT@K}ghzn02K zXnz8Ef9>{gRb5%EfY0aISwqMPG8;*}Ehu7i6LVZXefNVy9Td2*nI_Yez0=$}AAI#L zs7s?Jz@4625(DB+z}8aWldi2RTZKXAk5-a)X7I{lqB4wyg74=4s8t|%P+Xp_IJL@C zPt$UcfKG&!{{DOl&)&O}jc4qKUg_egF)C&ls_zTfus}(EQ9}XCDEv7T##Obp8gGKI zC3+M={p!3Y?FD|UeQviK?T*q>E_+n_wj+l;Tl=}vD>VKynXR~n>mJ2UgMQ}q3;ATh zd17I;uSn|O*Zha**%s<-h4>3MCs6I?@jP~?M^^N7#e0W-G`jZpzM(G&Cno`)o2UE( z0$)ftpS$q1frYbGb^o$uRB1@3`6)eFqA9|2*n!ufy3tmDubKz5}yy)lb<S<;pEfs`$Q@X24TmPV)rw-x|MnLldBJZgAi? zs{lt9-eKc`4|V#|-{;0rG+L>wtRO@&;;*yQK5cgn zlo!>(xTq&fGN^pu`2la&D(00}r8~*Z`>2i8_vBvNuKw+-qsYO}EJ+oo##w!m>^d$0 z$KFJmYuxmVJ|yP+C8TB%a9!Ht`6}0TDpK)Yh|kjXwoOcaV1}E#;OHk-plZ`5^&{92 zSRb10wPIP)f1r_jOf6icxUl-`pdM)r3-s2E*QXi98i(P${bl)G& zGlrOJFg06?OgDKs!ywbe`r@C|Ok$d=XEUflo;(kjFG4cm@35}tm8i~ft@FvlF{L- zh011Q)lb_X#ySo6ixnm7yLc^mdYH4sEcg`Eb%1_C^-!rj&}@d_E8Y8f_qPkl zY^+YR*34yvA;Vl4x3mXF_0-^@?i4WX66KI)kR;`M`lwc&-$DMfxULw6I+eRlG~*1Tj2#jPnhe)F^0yRl&a_|>MajcbSu!k*JaR>xJ< zDnFXvEd=i7!1XNBKeH_o%{1p^lzElS`nC(xEZT{Zvsiru_!-z1`g{aRS7FX}#Ku>C zuZ9_<@^83IY`rObii{^mZt5c8Nvh-o?B-u)++uxE8c+w%0xaFe3+lRkgB3S-*dip+fv+fc zf`SxUHf7wAtUjBgIm%DhS|cSRS@`3J<9*`b0YixzVn~KcS-+KDRkMD>qohL2>CIY! zs`543yvGJh7PYVXj|*RvC7CT>>lyhSfnk37AOJ?ox^g!nexP7GM5`{S@=^}bIVIim zUN?9>z(v981(Xixc zPN^cjDyalQH-`>Se1T^8&X(n0{Mcaq)`2_Jva^0e;XM^7XS}u;8t3`2%+l-gdBn~z zu8pPId3NvEATv>OCg*Q`)AIJKTY#VK_RynD>Z%$sU{V1s_GwX7UQE^~Mb8fXnxsbl z%~iEgO{{}x3gW`yc8Ki)#ok$Y&*=|EY_@dy4#u^3v@7!fluIkBbFZ1GW)`IEo(l!8 zR>N1(uQE04UN7C{4qTMLI#pm}K;}|#ItIHJf0*FKZ+Om1Dc^Sgvrx>k`zw02TxT{X zt08KfoV@h&ISLtGZmGm2+K;M^+;JY`kbT9`nI&GtGosyPQlhyJEDA7lSFJk{BF^e3SRV|z$E)^O{y_v>p1~3xc zynWPHbA#Ahy;}hqioyYqMSJ1qG+Pspn5j?>;!6tTpB=yJdbD!=h2dqJjWW62L1xiK zYgChOF*N|iUrpTe?Ir;K!TdKQ+&0Bj-WsKKP{6`@!zBW-vh)#^8bwf@bB>dFF_2r96c6$0d@getI&H+{Gzi$lKP11`I>Uv-{UjIrq(W~B?h6SzM0$>!a;6G+=6(+7n>xHqVHO#=!zTM6#qdwq z%Mov+w5yx##NcH?(g&a%+k4$XW8SrOu@dfLowahhgXyGBAy%&_?%=xydLRRH-Ckp! z_R_Oyay0VqZYeeVhb2F^{f0#7s9x=`+xmmQCWD!&A4<~?F7e0&otxl!bAqw?KE)vM zxWbi#V(TEK)0YX)Uj`YkbB|Ry1Nd9$fABXZl6nFQiY=Fj8kp#hfT-g)I%>;A zsalWzA=iGne3l~jw_QB!j~;^t`lNzg-=)IR4???I*s#4!YaM%LIoTVppht1;m>q%X zJXMS(=RMpQt$e7fblqh*Xs1%TF5OMun)uId-CH@=0!pb+H{V}sY;GwP?~jAEMPDrl z@W}VGhtwpy&`$9BIbK~ZxJkLu06=zkA{p3VAsI~%<<~{n%6BmAPb*c5E-PMbH(!XLnup-4GiZTU ztC_Py!~xzjIxBP`vV$>%VTFG`=F2LDyZHbrF-`>nEA&qt*QWDl=V)rup1^u2$z}!gnFv zZK(gl1$=rD^?6#0RbC(9*68mp?bZuc>`huYKFHK@E3oe%;4Uqz-9VUw^c_JMn`WH( zZa74dt8v9k8Wtx<0=K`@#P+?n_>GtID=5cay!J0bmz0X6SG*@Zv#ght;t^6}Bhknvwb}3AbK5F9-TaHY=un;TGeB-;yU(xoiv{^1c$1eKgsoCJv45qcj4v*5EgiYayT&@K8%1}q& zIUOaKnsnysmn7@}Irkr=Ov?My$Y@R-$u;B2BWy;}o!*?A=mWi)NWUOk-)>8Vo$EjX zqNw84B8chR^j(ogUq1vsa1H}Xs<2Z=`&4>F@{OZ~>mE9AtnyfVmr}6e zQc%(P4Oy)AShcB!&xDs{Y$wJm=cMK;9N)ZW6$CFycBW)0!%h(h|J0T2@@aVPMNHaP zuo3>l*c0giOj#jf^(jUcI_PGroKQowX7>$ScBo@@1L5$jifNRr&vNdI#d|Q`w!R5% zp+OO`znb*{)8DP=w;FE}0nI?)0apQAPv&RR92(U&=&6FCEb?N;6*k-3>TP`48a~O- z$5zPdSypq+o-Gs)uj~GK`;ZV4Z<0Q~cuZ*+8EnFEJ$P+V@2IDh$5yCypPf{{=6NEj zG~4$9<)zzhAm2jqXFuN3^|!B5qR3wD_Fg zo;63Ry-Wg|X94cnfKFs^O`S<6@<>Tg*QWMQJg55%kq^??)&*Qw`Ni3j;fk`C`gsqv znfFjJX>NA=e}~M=Qtd3iAOMd5;?3WHt>4GcGaKs?B5e1>BE~}S9oAzgG1n@el{hvL z__H=HZgFmw8!o~sVheZoT^6eyZUo@7o>=tBN!HCrtyTW{<-FHG*`2j}Ju%<3t)&j3 zntWm@Vw-2nXSa)*m6WCD4Fwm;`dG@5C3p|_qj3FoHOtoesQ%q0kjM6t?D8~eTT)ol z3iZ%B-fowP)6Sx{-?jgTp5MW=vqDjIsacpYF8(q+<3M1A)xIZnH1K&O;o4A?(T}V$ zn`M;k+KTBGHaBn7As~jnR(vRWusqBrtW#xDZ6*EUj)-%^^u4HvlppVTgEO`AnY{XI z6E*BC75yJ8VTGMfWB|(T-521VMCC_&K8f^kl1qP`@fN;mKxeH(J1>OTrGpd2ikp`a zzQG?M5wg)YZy_;!@(=d697G3os-r=DU>C&@v3lQ+sdPWbtl!X{OooAKCkrS4(IbK5 zTp~XzZWBarTy->?Y7eO`!$%;q%8`ehQYcT(XUP)svui!LHrpvJC#&3GzR~LU3mkP` zq)_`=|6e~tq67@?ZGCg#)^QTMh^*vk^*>&)s)g7b(xh&rW%=N4>K%?fG%NY}$eI&_ zO}*^}@T-C= zxd7LL4;f?z#3(MRn>hg5kdG7*lW{+E9m+};>{TJK#K9kuP6V(%@O?19f#EfwOIt$T z!rH0O{FC1xhz5Lt9p62ePm1f))k<<8AD%6W^Uc+-K(kAV9r~;dWy3wLGje4n)47FZ zxUmhfB@HRQuUHar+8kxglN{pEm55Z10V_uR^!rRKZQlT>p#}H7%4nWYVSs5eS!@RJ z4d=kwzri0*JUURFzrOvBa=BUmk!dshuz82^*$}fLzb@ZBi=+xk^cr;_%j+(=mx+h7 zYz=TdBYl{^o3vh;Vsk#X#%W=&QQRu2Md(KFiMOO)rm$@BRHObVCee64&oS}k(U+vz zO!1FkN2Sn$pk2{JU=-mwt7bx!ZjF_#tU?ya5DF`ECA#2J?DkM15&yDU?N5G)Z{-;C zJEzI(x#%T-^_nvA;{y>bpP2(@yPpme9FzDW^G+2%TRl~5$S`i#v68#YMNp~~2Lo*C8e{mknCACWa9s(=7%7^dV$=gO-PyR+xN#|K2a)pm8JEWepHN2S# zxD`DoH6h#MX`!^O8MH%$2vB%@48wY5Q1h&_11uj>1l$H??AP%~kAv{ybebXYPHUD~ zt4VHBzP_hbq0wj8mQ zk;_Y6Eyl8`V|I#LvH6kr-G>7#`|BT)Cm?GJrYPYP7<)vEXPsI02k(1FfjKtx>QH5t zJr^lJc{)x=t`P9KPAviQKtS1YJ&CVsW$^-C=g6ggb|D4aNs)9^Fq-&6ulz#$oFROcN~5e$u{Hy)a`EEhR*er-~h?4s_T7)-4Zj% z6}T=!w>6y>TbOL=vQh1`cG_vw8hPT)u{EsD>=Du>Y4<{+J|xPTQ#*fwYw}nu9Tw0E zfyrq%Lk~Yh*3%Vg>8D&`B;4*2Anss_cv3vtsE3xl((Ys;Ss8tK)LB$i!Yc&WaJtG4 zV~1DEw{r$7KGcZ-mUljIry1uFO4}FWDFPcUqP({PL-J z=Fe+WUCs9?;d@ovnn=G-GeI2=lCDQL@XN{Hph{tO2QGAly9t()XKYuUu&O#vKm2Vj zlO4Z>Y5-|H-mZ`mreo1N`*K}RO0&%r8@|gOMd?Qy>K9sp>FR^*HLUr&E!06iGk*~zb&*;_+lu20uQK0BHE=DwNX zV$jOT&EMUvr1KRm*M--R| zq-EDGWI< z+y=Qh6T&&OuS>7|z--1{>_S{Bs<6L&QT%l38;Nh}Sri3F#L&*~T`7Gqj54}+;bPX| zrA^N78tpqW$Em*}Jwu5r0l+E}JFS!Tr=s_2O@UQBU_miPxStdjHR_Z2g(iwKHT2d4 zZsrkuQMv!TgrE6>`3;B}#z*P)@DF(O0&vJ=GUk%aE_X7mE4<$aJdylx$KhQR?&Xhx>^^Z+o&}MePdtOlTOkF=~+7w2Slms?g{(`#ZaBnKD5uvYlA* z3o`x@5D;EO+vSF(X%|6iH7llkIeQY~2v!m@Lv91>y=Y}WgnHY+s&b_^|6l5bBxRVw zvtF=B!DSfrCf<5@X~G-+v?6d$P;>sj05-96U~2$T`)|}4=#}IJy1)ZzC*f?J`b>)1 zC2@T8O^v@3)NfJ!;me7ra)Dz5cY^jf?LWc;TDkSAbp4aR^Bel^?`*yA-N_$bj;yiC zH4gC7@V)}1nmv1*nWvUm%#4r0zNP2za9=$J2Nd69T)Ic*z>W8~(|%LZdV zOwO~_`Cd8?J)R&{RovX2a>e4Fxv6z_oG182QB|31gTOY}U)K!^2rwck&Oa9xh<3{qatm27w5|VBm7=x7**X zV@_;6l1lSr#-EQWJ>~nwf;lP?aO_1mgy)+E6@{VxO!^8#R&jw8O*n(a_ErDW$EIEfp6nZsPaa3muztFVIg4YE z4j#G8n9_5k-7D@rKl(BIZ{E}YEmsL#_LHWhDR8h*^S`*y)auW>g!e^_1O69er~m(5 zeoa~Xe>N|c%=INhWI}NQ_FY26VC{`eS*$2}3YtB8xC8UA`fe#HwWkRu0%oTsi^)?kiUNY*KbbVRBhOa zID7GujntoeAqY|4DsTVT5(rCZn@+AqR_A87WWB6;`tMN-{^L>wOZ`j^d8ZT}?%BZZ z=YPb&ks%D<6%!{;&|;Swg4~Z~cMqV1F|ru34NS0gHhd)9s9qXKxYZyn{?LF6E4vyK z(DW2Zj(aC=;YRZOFEZH@ytSlWvsxYb7-=MxQrP6ooK>xf%xtPHQJQTE4-7HPkxS5Vqt8G95ls7qwg|ijUo?RO4Dxv2z|gdf)gMY>8in``$PR zuwz#j{u+~SM0O#`%hEk-{~evpH9olDwJ>cNr4#;|XRzk|J{R_h8B_L*?fSsv8E;r{ zppsYqIFDU#ie^A4-X>7NL4wWtwj#*wYmBC58)E4v39F^zaBi>TdVtsQO{}QL<8=m` z<_-UVIZ^eIY1C<`<95%vBXmR^fMJ0{yHs)C2-wrXmLRh2AL$`ZZyoYD9q|YRLSZsj z2%l*^cE>jTCB40I*Ge8gLQ3QDc@mJob-!1LCo{}V`)GjKw#+gLE$tdyS&>eZZNrxjP}oob+-IbVoIQ~IS3m7v@Y|<0i_rcBmUOqW3fb+M z13KbVhs$nJ5F=b40Y^|67hv*4n9nja7_J}R0q#p~6{|2K5XLrSHtRI2rcQ7J5#mk6 z!GDNa@i(1{r=A3LFDq3u{j3~i4dh}j{d@aDGu&C2O#SPB?%!7Vsnl7mps^*%MujH4 zEHpIiWI>03oh9Lc_?_>xw*LMQHeqxq`4EKnDqVw;ndOeAoV}R><~O=49B0utlR&=i zl!$Li_xs2LnKF#4ufl<>$Ej^`_GVCb{@QvjzcWV`py^QCttgIVgh3Z3dUGSR*wXyv z*QOoOCT2E}LW*a@a}AmZL0_Al*#WuYu*Sn4nw5xwD!I~I9R+H|dR^7ryt9;+YVwoU zs_J&Ab9`-xbnCXwpPw2SWs%PBT%2H1bPd!n}cpDSy z*Plm$;1s>}{z(c=?MfPn)EZ5>Y@Mcgs7Z(k@{Bw@GlC;9WZn3Ln+32ql7KDIucpTD zvoVe<<5_ZN^v+c{b#AQca{*{6l&@pIJUvQ_V3i*Xyls}!{|+PK?_b&N_-=mBB6ka; zpAYA`OKy@h3He8PB|`^ClUL2EXEhj_h)w7q@{nYlRs-dxh;mm(%cFa~_u zB<06^waNAEwMKIkz5Y*iG5|p!+0~cOf*dSp@{4rRyf=Bys{5zJ8B`w2PtiCl6wX*6 zci)$NAj8ol|ABq-QT)c@j1)`iI8M?1Bb{G}pmkO`^!UiTkmQ zY@e>!oc_oaDZvZ8Ck*qHp5B>;w5%Aq(DF0vC5XI+NU$1@B10)eEtKJu&Uf3Hvi{U> zzgs2mj4YS>yYmaCbYDMz^8Iw^wq+peZqF0xy;ln%UA+A5!h@f{GY?De)jA5UK)+5F z?dJbLvCKjHT-tr7^I5kz^h;d>j0_>`G_Ox)98!6=tCT+ClQ#-WA+2! zUXCw~S)S%TMa4=B+)uAHbB}hA4h$uUxYt+_McRNUINdWqm^~VeZir(&tlY9-TRmD@9PB2CB4fXbz;ih#kh*9%a!Yd+G z3zFJV>DnZq-RJF2I`>`ac=#zUN8Gy=($VyLPjD*u5(Sjb@ME~sseq&G*2@`Kzubz1 zRT^>=|N4+IuO( ztS;o+HO6RKE2=S+nM5Ao*7`?*tfs&r?i=iKdrW}qSQuP7 zJDO6hnBf_5ZD>ZlZsMv6aevrgJ1gl1(87J8`zl zJ>WffqR!cWwWBXqa^LvI#5`UFmf6<28qeY##N7o|CrM+Hyyr50C~d!{xd_-ART$~K|6v-PsaLIB9BDViE^Ke0f>pAv3tVFcJD=nl*Vvpd63|*2X~925C(f=E{znauLEX^+@7<7>~6g>=6tN$JhpuM#UBOlw+`qk#ESb& zIaWDX$MO;BtnAjd6cY2uJDM>wqyFSRusgYvtt*V5sMeZCAPJcE0~bZBYWLDcSF`}n zfz2|n*VK0Bwm8z@iEtOvYf_HSQLxxEj*r%IHQvV;x7Y8_%m;{eC?@a_N=K;iyRi&q|TDB5_0CuT@4i_1>ISKnVMX) zeH5|EPD&MUr$0t_oOoEVPCsZ427rO{E3Wzd5y#OF(Yf?sBxW?Af?(7W%pPuoftr)FXt zZcQnzU%w;i`P$6?ki~svZ#J{v-%dy!A^s@u=-PmSo(^mrP>mQzr6k_CDs$YZw3b|}bi4RDi1iZ3PgOp!Wahz@k&A>Qa)THAn@vd)J4%+fSTc6yInb0LwU91jo_-c?8vqt}>YN7Z?2&?{$SQ{? zp-(kPsREl93sR*?Jx2*oc0{?DtgfH=;}^&A66baG9ph7m{Y~f3xkjnOOWdAu-Bx5N z5J-cIi)(mxR#PYUY1w{yN9U!x*=Uk@1pj|B7M86P|i zkdwvw^sU;NOsgXa2kXO??P`aG$hk_pbtn9)pRrAaZf=3#kZqfL_ei~YRb*ouR5eiW ziOkv*D$+oBXa-w+Wx|$VFg6I`L$BI=@}W~lfP!9DBo@J1nM>RX!8-usGS`c8Uk1iC z29FoGXvu|%jKt>;ipg(1uR(wh4*!eney%eb0oP8` zuFXdrct5gV7xR*qvrgvtx_-MMx+I2N&r;rU%E|3m|6wGD7*!3i`3vf@4HksL8b?Ps zx%~p1AeI<8vQ*3uTTXWjX9GBqx%W!|nU}Y>h6y7lt7(-7n&=%XYz&7h{n)NnMS@U2 z3YP4`O>FC*EPa7>`T=XOG57?zlIe|M^xe22!F=svDIE`~ltFBOhNqBmxq%z9zrtUv z4Vjca5PT%PMf%Zeo&1KcwyXA_&Ye}oM|DN408|F2hIf^X9>?GTZ18Ygzfd1@o@P*S zt4^14b&0AcNrj-vljrCb0RA~Osgk5&KR=w0PPM@jPV61W<6j`YQbGJh~Kf{EK%}5^T5zX=%Rk1f4Ikmi83LI+VALdj~5|#5> zmGUXMk)-mNbeGrgoAtb}{%nrVT(ZMsR| zIY^`7^z#@4%@~g`GJGQqRdt@m?8SB|Z!Bp!%L-d13_))va(sO}`5;gv4Oh=n`8_SP zf@3c}2G0;j(`VN=W_$LU>vE5>_zd7~pOU9tVhJSs=wdNi;78;|!I8z?v`=}?*13dF z;qaD8)9$V9WUd6!9|b0b51ev#Ipey!xVLxb3N<&NZ8e^iI?5k(H9Aw;ja_rsq}RJU zl(APMB5+36F#S)jf1Fs`0SVo5-|tT-Pw9V1|DsvFuX45(^W+#PjOfoM0uF^2kpjca zaC7ooOsOmBN2?KL-?pUE+t-BpctBP~dCtel!?T!oCMm7BzUy zf$~j0+)q1VDxL3-k55Dj>UChwoW1kQDl5M>vAguaHlkBNp9}cFUm_;;+ZgOXc$ismd>`4-r-kYWc?0NG zQpf^NjCl;T=MiZ(HxEEn4q3$n$pL@xk@^I!b^tx=BdAe(9;fYbj?nq`3aQZ1OZ^V` z*Zh&!AUPPhhWW%lE2;*+7Acq~jOn-IoqWBu?mCPL2jlx~9xfnb^K|>}j|m&^g@t~4 z(zi@=#k5_`rPpyLT-IhC`43hSaD7)Nbyn8JlX!6M9NRH;)?1$X&zXBRmrb$6yT!QU zWJj`c%L9z@WyHK{!JA#7W$X{$q*4U2+q=mz7(t&E&Zrvkw`~!16Y=k~0!poSFC(Q& zD3um%@7el0%9eDME^MWQ{xp9@9C~Z?`}dfcoYL7F=LVHsSmWF=N;736xh6kb~SK)j;Aq)NQlOv z|4$18Vb+A4`_%$OF)PPbfH{D-`jw`q@I7?@dH%xz^EFUSxV}&zc)B^n)R~?fS#ku; z5u5dYW5(A~Wm$xo9vGoJ?QVLmS5Vd0j*W~5%Lg`U`y>jH4m4!2!Z#KlnDfkJOUk&v zo0KuOdRO@DEqF@iTPMgYH@?hQeVVFt@D3tyIYr!}6@ZnbJ{p|%>c7X#l)c^LlH3Pj z&#&l{*upH{v1rbGCP*GUx#Mh-Hv}E#XB%$Ve!-_?x&I;RMX`qo)`Escyx2X6bl^^l zD0C5lD;KQsL@cEYAMFdlWmUH;A55Mw#KXcz>gq#l@hiMfNk#|A4vioHfSP?ykP$xE z&L0TuZ_qOALHEsr^{XrcZp{A&tewUc%_iyMGkpz9naT z5CqU>&2Dt`b z*5Byy2M>l7^;=U)O%=}&2zAY(<%lW$X;=GkBP~Y;;j2-wWzHmUj;Ak06A5-0srPZg z*gS6-tSPiq>Xhmusx51z+rn*|H{>7ReQd#^yv-5a=wpz2N|Q2Rk&XAituH}cxe%=YAZFm|S@Y}?%UUCQQ4=d-p^-y0`8mWg;@&kHI~ zC`f?xE83CSG|#e zo1rH?cLoClS_f_1O__7l+SBg9B~=?y=0s0lOEd&?;M@B0I3ahaggkgJ$i8wz+`FnY zYZ{sONcLzSZ*C|1`VWnrwSs%zdX$B>k+QG_e`(L7%pba9<06SWpvLNgWO)UQtrGtH zTKMeg4WiC=lFJ59mCaKfEVO6@o*R|&(*cqm8ccWS6ubLp+z`i%0r_lD+!An`XNv3R zf)G`mI^2|<>fY!i)ZcMi+M(jWyI;2NEiPKXEX*e@X?&I=x}i_4%1Ey19(M|G<{hvS z;e@M<*WqR%hXuNzn)umfM2Zj+n9;vt9!#{Wom*tBU6f-NU5D*!${;&899m$Ak9sLm z-RZ(OO2>XwpS4dI*ve!AeR!hNiNfbCIxLInjR7Y*I~Rr$p^)}Zw&vN8(7cRDtBsZB z;5XwTIgLG}A7K<2g|z(*A_>>gCjk<`+9G9$`P~Ji48C3TaM#wwH5${Exnik^)M-*% z@_%(qOC^8iSI3+L*L5Cmb(iR|Vx)hhZ`0m+{3saEaJ=&vq|j99z$BRLWw6)EY@jMh zz&d-e4XT(GI%OdAZ@tH!TAA4vgwrKS=xSQ>U4>+pq+uE@NA!x1$C}zvhZlU~OY#B` z_3tcfQ*DfC=x2|wZOYvGtUSCser>JB`GUG*l7b+~&Acm}ubtERYOUZn^Ou*}%1`}k z$mb_~R>RVClEJ_H;Kfj))Z7?|XzHzR|`}7jpF4XS^`)?FQ|UzMHrWYVX^|K7us{SgS|c zh9^=U;Qd##?=^OeRVQhIs<42x!NBWl_S*jXk>!7awtK2L#Dz2UQoM$Oj##j<)p%@2 z%!fC{EbBaXm?d;K!C4xrWrcsc)VC%beA<+A+)mXm6>NgmdX;N?>s(ikr@H>rOx*<_ zOH;aHHhV;8aA9Jf5QEnr8?HLbuux4cfIK29*o7Io>!AX_IQk@_QJf06~-q3>7D{y4Ueg|j~kmCAaA zEnnhIEye84BPWjm;S{_3Jf8sjLUA443glgH{0cb~IL#%b%HL})>M;@Z4Kd@AB&U#$ zR-DnYv(oR{REKO1>s}5i*@gukf9DvC<<+4QqPI;a>!AWI5?3Q+ZSd3QjsKc!*l+vc zJdgoPog0}@AxH@38K&tdYbKdV6U62G`qV7>1}ro^D6P?Wd3H+WBOPR~-%HD`XKkt| zwC9kM5;nESE-A~@Z^-@_%nDER{Zx$tc5eCbyKZ9QYGNgb3Z=DH>G2ZKF@6o~SOYyT zo{)&BzIvDZ)59vJ6;2-p-q#T*o}waW+6fSZ`C@@ZFY=aiS~5c*2~rt-&?SNRC;3ZL zc!h51ReOE^(O@wvQ*4^T73hYa|s)n1s-lUW$gh2aA<8J_o;(@p7O1WL(>AF5%m!^ay9R}9Fi_-*=DnJEr)jlCm z`8sT#cO|oa@Ua1TuU0eVu-5yfqc5f0A7MF-Rm!UJRmX`Mv-xyFw z+yq#9oWE>TTt6|G+hwN~lH4jO<+`49$2Bye5d4>?t1l;AwO7<6jdt42;(J1d0BfOarM(62K~ zz5dJO>&Fc5cDXh$erkN#3Lr0_j8osq*T3-qGjh~a7thBX#NRWw-x(B%fC`faF_M`E zh~ZVR9yigj75vjtt~-i*7$Msg4x;m&?*0)h!O4YzvJI zO}dWG-knL5qU%#L7g8D|1fdTOF?Tt$HIk(%D@&ZMUZmdg`Y_&;6tY!afbR)C*mP&B z9`ydy6;ktaQCX!s0Z?KciZKX#MscOe8ZU%ZKW@+u@$0jITtjs{BH4`g>w=P%a0{n#@-lxsDQ0gK&ss)w{_KM!fz1mIvg0Q6hDc?#aM5Nm zZ>NcuK$@X0JL;jyA?v}U5z6VJ9Lif`oCkgX;9w(rMXq_g3u>10hsL$_-I(v*OF|l3 zcv#9}Nh(n+^)7*A!CQckEJeqgemGb8PGe%W0r*rEH8T5HQ@?5jQWnS{_hmJ00B8%2 zRmLyw@`jfWXbFuU1=Z3kvpC;H-K~1J`lqSXF%@D@j5lHLc4p+7pi&MI!2I~9&k>VL z)8E!{zIatw83WVORjVw2*;A)wdPvFQe5hZ_CY^W7Jehd*!#|CwjneX@VmwSL=BH6; zWV5Q#a1$Qts^*Do26M*Fq6SeQzU_33!QD1pm}yz6p(njEda#$Wj_C=7Xa zs*MS=W}j>Ra4wLmsA^C31UE8qu;+RA@^AdrD2;UNWwRiIzQGe@Q>13ePFS(R~@T@Yf;NK2Si zTnCe0BtyL=dy{9rd0rdhPcTcL5mRtuur@(sG#xW9e%rizl8`rZJFMc(=;!0>(_m+z z=?6hE4PDB3BpL68Cs=E~FA6Ch?+8(*@i6~{Y&oz_ZCNtWP48EV8!iIEmKiIH@F!0a~|!k81mdvY_&oq(RImt)hYE z&PSWL8t2XQVtZK|P{}cb7!V`2O?^7#@+~?5 z{FXB?wuhc`suW#FEg+qcC~TsinV7O+q^oVxSZp|D1<4&<^*`pTRQ0NnM<#Jbr{~X@qIJq zp^+xzQW$+b`hFpz3Uu&69IijXYhEkaH)g{C>L`nZ{g3C%hG>JBRBSr ze%;H3oW!4VzElO@922`XbQ`O^dE9f`y0N$flMhs~ri4qd38lV27miu)W6CK3nPbko zql&kcmc)eVrh!+g84~^8jsZ^mE6ii6K}sdw#IugFE~*c-mc~_0j+`@3Mq$dZWz!J2 z?X@3=ijb-wZY4jT^-@9+h?@aCy2Q!4ot8EMl91{X9cQv$K#VOdjJY;x@|#AJx;-ed z^2?Oc98&G9^OEOigzZS3zgn1_wNL32Bp};u3sOPc)h=%jQbKlswIJ=qLn{&xcSqAg zKmvDP#ck8VyvT&~8**d3S1E}X5=Qgzw4fdaZ(30KnZr%3(x-5UWDVlNvIKzKIHTJE zH_2bZz#(v>He?G}_+hpy4;rwX^ujC}4_E_7=FP!aN;&Mx3n;mN>_ttaZeL9Ao}>$w zvGhJ%+95N>V8=LuzWyQmpTC5`EBUO;!%ugT6BFl5>Ac_lNs<&5eMlq{`|ux14$x`e zeMfjl8ge6o>e=Sa;IiM&7EhMN-R?(s-YbmgEfe<+p=*6(S@>X@ zU>lP3p!KS5Ioi3-gV*tNA7DFQ@BL9fsRT+CLNxg&2{k$JH2xV%JzPdrUt^l? ztIQTkX|ugJ^F14UjmC^uU^BZP{!+R(ybKN0rNOp)&ZxQ-m&Gkwp5$#-u7i^h$qJtg zHe@>aJzITBCTbAu5F4HqTc*;*30hU-Le0)13kp)$txJe=lX@r>gGN|<1c)QA6Y5Z1 zn%!T5XDnT#XN&wo>fS;wEL)LU&&ITS6|c(6V;@9^B{4W{qubAx=c|*tQePFuK+m*P}XYno-$C z&Rbg_=$|^S?y+qjEp*c+9%3vk#5eouR?~hQBqRtYd~Af2wMaxpqK_+NZ4Wno3`aNK zH|i<7In7$H;M{1z(}3v}$xPa|yP49tC%o)5ty7Co7*bw7fiXAXG?+PEr(!Z(=Pvi%WZb8(#Fd=#Y0GE~of z9E+b|a&A9_EFr0*7v%3H|sUATXn(-WSjg8A&2Y%8+7Qqh}2klXKh6+v& zxDO$r6eOLnKT`nL8--`~(})6*t|-I~>}mldz%7J%NkOK}O1Qz$CnMl0dB7#4T2zko z>mzb6N=m!7uM9RICqHZO_J zd5{X=GmX;Au3Mgdyq)skV6%s&@t?;ezeV-&d(eK{Iyi@g%R5g;CkOY`PWPX>5)sk2 z68;glJLXyv5siFSzjs&93$ljqcIKC3%%_DElLwPqL2OT^RhU&8wDc~&eRk3D4zc=MOZ@H$e=wsG)zZ-}FCVx_IXkv= zG8IxPae;8ds!u_9dEJnmaVzi$cR0J=2!U0r1v731fEEl*>+r^7m^W^{cSX@3zrUMv z3$wMC0aaw%Jt}GJ-rVkkM+mlct@DXhnr$zd z!Uh_jal`gPupg;@eDldZ?@4CzLof~AfK}UV9?5)Sf5=|Ax%xS8NJ>bL8rpn6+cCzQ)8Z+BrxoUlOPOWFgL3>!D@KW~WENp}m=tJ^xh@a3(S! zKJWv1{GN16SAZXx`>)87@AzY>9_Z}ORha-m-&@l*6ZVIFnb(<-71?^`pXFSW5 zTF#ErjKLwx#mnl|U2N}NkO_{lwl1bM((Zd%M6XXVH=8>FnYz-iz`-#iM@K4hV0HEN zW@=PNs+qXBB9>cPxzIS-+2kdYQc9d2d!(c}$3#W-D0s_Q09+zmK6 z*Ju;S;sgChph>N5Ey=>9PavG`79Qpq59{KYe2u-_d;`xfOJq#K`O|GK1j~z-O4u-D zhn)iikoHBE*4xvgW#F^zB_qfjpU$#wrBZ=h+Te1UgjV~k(lW2F+U#B{vvG6-((+~7 zOn2@HMJ)vB*Ywve{t*L1bH3%QZs#%)ri z6rO$RZx)1QSCcB;8~5QlOu)74Q3$V?B_2vrOkKM$CkLblNF*PHFe&&Oe7=wt{AGOp zS6;)L38J+&;dz*Kgn+iKsV0}=_GME~5*nfHz5aZq$7k;z2{b~NHh&1FRa~)a-&EsB zPwhMOwM=2$`fhG@hlgk^)s5j7e#yb?EkavpQEXwYfX-2|U11s7k%MzS$EZHmANTU) zXZWn6I@h8|q)_3}z2PbT?cf-3dSTKnqBJ};nxyP#$6PMo@-Uvyw`P3XtpqjtoT2&w z{)`!P2>s2+!Yl5=?oe2NHMwDq+f*Sf?Y65G{@Mej4s38dvG?OjszuK8`=44ipBwE- zVvWhm*-}=W662fsT2sq*^&MxEshd3}t|qpgkc+tGR~a#9nLU%gFmK;3%NI=8kQ(Dd z96FShDD5a6_Krv5#;C>;@e`YeY3ny9t5#Ao-i z%?v`P@gLOsz$iZm!<@;dMX$b4oK2nAVL#eF+*_I7#jZp+KE04OA@Wabirh z@%MAW<(XmD3tdg{Ta*f1i+Y2RttV7OisGdZsv&B=IbXseUe1-sB@g7mKqBgh%{CMc zcH;x>a)0{B_)uq@vCwpX89PXakV>(uyOUD^Gh{71s&A@$%w>~mC=l#-11Kw{7nSwX zz7)ZJT7(;tT@*Re{7y%8NIWq?$IV^ywl`M);-y)Z z?&QP=quSZduHh1nHKUhk5_YdF)IuBk)k%^=wuH%xx!E}+cBwdqhqaPDZH-qcLp_ep z>YGD8XIUtQ#9f=k-j7bg#unZ7BPOe<42NQ1cNMhgvK-rnb5s@5H78(au5Guh3USe= zxtep+CS7w6%QK#5shKOn4i?p|zko6IXK$0d!`Jk)KPQOhr%72|_kpl;bKJF65;fno z`b>Kgx1={e7zD$~E_bnQ&QdVR(|Z`4Dt}b~Cb1aP-x5 zO2g&t<%8jP zxX{%nQrq^xB>LV=vB!0zx6H!jv7dl$2hZRy@q_3GVK9ph4e`I8~Dj#b{>qw&s*Dq_wy#D3)T)D5; z{9>e>+sj@p8}6J(Pifn^a9wr3DT>SA*EJ7H*OKXusJE6Sde4M9dp;-=&UF47O4zDz zAWE~g>}>DMQrc>hxFC_U5>$~5ayQ8Yr&t;k`rl@!eAsg)_Vxd=IbHnjt~GUqBBI04 z=|Z7G-{JJ&L4J{KE=^xo-#m&tfY+mnwsb-xeK7C&fBPdcD3v`}OSC2fOzG*Ke0eqX0*EAN!or#sRqD|Lfcy4#vq zvSm~`GpV(Ju(9r2W_>KFE0vFQt$fk>bx{9i);EC}w#j4TIGPBZ}u3A^ZoD*cB;Uln=5b8ez zE#8Xov>WjPPpQjhF(Y#X@m5hF?ab;5O^tNmKCI=5x{+MKE-`xF)T(D;AWI`Um&9E% z!_s2NYo>I&l!g>j;%}3rr0gZb*H^(2;Z4_oug|clO%u zn7&$y^tym>fxH}Ce(a!D&Q8XOn)CC~Sw98t3#oE2{d)Jg1($Iu;pD^{mKgeTk0RB? zu3UG2CDg6!`>D}k(s?zvUuA~2OyWZHTSzeeyGCLO%v)o@)WyU=qT4vrw86*xLmPam zSngV7j0w|lM1)hyiZ)$s+tPScpzngVq#uH&Li{3)vbW%t*GeDbu*}w#Fj4cqzG7hd znsC$=Um{+vt-$r>7M^~DT~YK&y3zBWn!f?~q(V2Flh}zNM1vF;{}82@F!lnYdR`CgU-Jmi7-IOu#yH4aEnp z)zG8t#xWCByq*`ex>e()R2s9M3`CJjDOu*euj8~D=@rw=jHhW5w4u6H+@hDEY3O1_ zb;Qto( zw43l5-+aks%&ongal@*zz5Hr!(>sgY#L(W*P>wWQxya+?gxbHOq|j{geK2AF9LFX7 zpu^h}Fh#(%dx5s?Ro}6X9yTYh|IsRWUFN#I>ZBU?UO5kE{v0OEs`-;qog!h*GMZggP45nDh!vDbrax zv>;c%$HzXwq?jAYna+xQUhjaBjv;l(J$3lD-2Ths`!`bcUoTBmaXw#gEdrpgbx=HU zEy)R|24FdGoksc3d+s|<9}h>ur?6~{4d%@EpO^i4UwT#oUEzIK~37>smvZ9MrL-^^4d(E(a^3i$hdX53;Y zG?ZBPE>g)eGm{^uSwoS_s9L3cRk5!`-Ysu%8#XgML`~Sw-a|Rhz7v1kCSx}k6VbA% zN32?zPpjv(ZV&hp9HT|x;JG4-u3pYTUy%kLl+Im`u`=;PZclV*@|V?e`~u67ebQkA z=QGbys?A=Xl>*Fmt4zi%Tzp`}XGSFjX24MWFB1EkD-R)DSorQr*M(INC~xFC-Hz7P z8g40lil;KGQSM4d9tu6?7J>@FOehU+*B~omzPUKyr8%g2sQCixe==E-Pun-~=Wy@N z#E3oOdwlaGG@XSwf@sw64Z~EH#AULdfZxtw%GLaG8NN{eQo$9?gF4Ry`1duFy7e{e z#WU!bJ1A%VZ%N``JDgrR6n5xh_@ZngyLjsZXKK=FfUx)ir(lv4wP9%{KgBU&&*nDa zVO;3Wz{_tV>NBc9x92;^Ep;(eQxVoc4}YAg&-qn5x|l_+QmFy>YE<5Y$Tds=iM>GH zT#Yko9A>n3r{D{&Ck0aE%V-7}nJqv0tVZX#AB|fRgWlXVWjP*T;+uO7B<3HU=>Kq2 zw*o&nK3Ih&#{wo&0wxmgL%WlyrI5n=m_gnfqx*WZfC*3fQ6GB$SW;WB(9H>%dK(P~`8e+6N39dlRTSVlYdKi-__1ut?jc zR5-r8!4kgxI+;OpxtC(6q4cCJ<20t`QVbZ47Aw8?;Y(K=Vz`6x+bzRJm5wPxj2>t_jMk zH!Zfx>8$p(K~8twcEJv)*%;h#50j)$<*h?lj%){CXwE&HjZN_SP1@2qcphz=zwAYS zSVR5Mq~|nknS*kM3hFx3`C9;dB0 zwOC>tJ=!1WoKmx17l6*BZdMg(k3%QHg+j{12-FR-OQhFa*FJp3GY~iiX3q ziDm^HcU;FB{5B;HZorJ3{TM3ztgibvI^U!(>%U%Uz_Kg7D#j&+E<;Fsrx!GReA`_i zV~1b+RWdrOxEZ+;s2f&TBH(G!XeoVXHA3Wy?y6KaX0+~rn%{`sb`4`JN$?iU`72>B zs60JmHK5CO1L)CFZbQq?`R(lM`E%g}VCT+@sz+wY$-KMq^{<3q8y}gtjfis}`E4HC zM3|j9hlQ#%{3$5SwQWGd>Qu}xu(sBjm8y<%OV$a5@BW!kL0K=vU-7uSR5($4UZcR+ zVxV?Qx2}8Y`(vYoH1~FO1yeT7WQ#^bvbcMOU(dp=y#dxS44NZ3HHxv{E?2T^>emlt z| zX?iL~0{1HOp=U#z4z_Rc%-mR?5;N{;2*XI)nN{>KiNE*66JSf_E!ptL{aqfzdj!6{k#%KUczO>`%Fq{)jCg(i{28N z#nPK)tV4<5)Kxgg*54A7@mc#%FEfdSCo=EL!^C*^@3ci*W7J~ykH$GUIj?A5yBJ?< z{%%9C^)!M-wcq5{)qiw|7O$u^BQ;{3%M*{qGY@#1^_pfb0S8WS>5Q6r;!^5@68 zAlY}=wdR=J&OUMrvU0MbsnJpOr$&EtaT*r=aWOebp+(_jU`z1zzj8Mrbs6k#>P0z= z3C{_TS*j_eynD1!)*`+S5_sgB7qn`^`)0slpOhEY0W$zFy~NzTiM&iCE4&%5_V z9+qY=F1+%YaTz!5v0ixc>@By3Mn$Eb`O8oC_?&`T+W=WgbQb*&9b5U*sJJBBrB;>Y z4{@gy|OEseTR{e z$*m%{C>=QX&k@b`5SU&r7eu|bfRSckspH#5KJ?5owM#F<28E{0;jh5mOrsCeVXE*S z-ok7xK7r!Luz7xgi^jNT*!iH0;9xs<${z9OVdl1ZH$_56<%Y6CdRi`C{34o#X_D30 zf-TF2wK`j@t`Flye!O)3S*C1#HH@0tE!kM46n`@KsTKlS~H;U25?!uhIn1I@-i?X{*#yFR%K9gGPkvp-GWFg$!mZ$AL( zZC8J)aY)`+v)@YcUSu_64rr7_}VUe?mbNbyEf&u2D#wHHm2Mwp7E;dZ8_ zs%L8)+u=~QiX7lk<_hcCJFg7FJQt7d)YYg8$b>3KVFGU46hFKxbsw%M! zF3G&CJ%EhSkD3X1|T}NBCVLdZJ2XSZaoB%*i#?^oU zJ9rEXD9TB{KJ3T$yu&GdS%o-E4Tzhx8Ou=XW-fk6*1=Zku{UAp#+W9g8@V}F2tO^LlLc8s%uHlO2o6< z^y@?voO0%DQ}9BD0wG?}v8r;+(2k~3{oBGDgZB6T0tX4~C14B3nvMlErD z!xR_{H28WFExYx!N7hREEWGcz>!#ivuD0MmsdP`auE=UE0yqqc|{YlH{f!gbpsg=29q?m z+BiC;cO>>bLX zK$_Y}Twb~yFJl%P7-v-%c1N;cp2ijvp`Xm2P+YC|jC=5&u#C05g|tY{a?+o;$eU62 z67eK6=D0vIxvFY0T@nqtK`PUr9-2hdyro+zLZqhcKpTrP0)s zi_7r~LaZ`Z3>LU;bnlAqgsl+i1Uf7J?tyjvlu3KG+(%9ZldHiE{v`;vmkuA`{2{(`nusT&XQjTpDof&9)zWZwFw9j{Eq z#|FIR$@_k<(s?kuI~Lnn$x_R5T%LG4evq98asR(}q~{`Zks;1If}Ni8u0>Bzvqz8z|UzRo4wl3p|lV`NLIw6joGDB zXDY`Q+Ava^KXZOxqI^0&dn4?lCD?v6?`aGhZa6ffFLx z+`9RZGhMUK+q?pi^bX?+|0Z%l6j}=p_qn2fzvZzG2g3bnkp0BR&2fN475-qrwiaeq zNJUY_@gj4qd$SC&!^3mXxe&ZWkqz`z9*+qnO{XU#JOdgwXaNGo`n$Eer9SXQ?kA^;jH>#ELbbluyzt45!3WuF zhu1F7Oq(kzz6+P90#jV8iC1Dx{@IOYrCLH>y)>YdX;Q}p=k6ERve4%I5lJa_u4TDu z#I)|FRHfJWXo_{R!kH;N=->EECPB<~`I&{FQKQI@tEm@J7Ejr8!^9QM9(C)s#`2F# zpSy90>2^FRVXttJU@sMLc_U8{u-koKRf~^)JyB%~Iqn(~H6P|i>-Re(TwWDzcNZL( z6-F;DroZ7)SbUcZ_X*K2R! zQVFiONgFcyUUM!Tgx4KX7m#p%VO&qbp2~aF;+stVIa2T#{d%7yg9j7RkKezhyxy!P z%WIz(FP<#>z&GUZd*+3?U;hz10|o@7csG7*kUj-wLo6h|`Pa7fCd&%Ap$dp^-gZ4C z-2&GggzIe&uLyoZht{rXI!Tz;w|bWo3?cND*-BJO2-SM*h|zf?VA3a5q@( zxFfwTC-sA#0oL2M_5qT_*EA>JHCkXLTCXlTWb4u=fW`(B>``I@utyF?3@6;*HLDlY z@@X9&Yylh8-2vR}E^$m^X=7#9gi%`Ys> zw9Sw-XC|DW@z-%w9DJMvKbtlo7#za@*2S}RJ!qCoG9y{t6LGv{6kWBAKiJJghVlpr ztE0$^`q$f?eM3>L^c?fnrF^3_H(N{(xM2bs`H`8uEc+y2JrpPi=Aw}%%5}6Rmv%#S zcQ0cN6QYoCc7E2XQtIlruu>d(d~+A$Dme!Oq-5%3HqfsZ7zd!Q_8mqO@=DYuqQbF{ zDsOaFcp+?0J~GHjttuFoc=3`Anoix%m6*@+h|wyfeTpExnX=l|eWvr&PSMy;yHd+CIo75^wqHqW>Do?FSi_;gWBD|jn%*8>nzt=VJh;xE<}xBSTKY6 zrV@9=NZj0qFS+u+Md518<{Q9iWVEkCG^39gs=PdPUip|18n2Q$(jQ?X1Ch@He>@pX@q z@B0nSiC168m0U=1ioW*Cng|qNOtb*c<-MqGnp*Fr4M= zm{YQ9K%ryIRii=0H${EAyp$6Ws}MTr$%1W{52BK*Y3=cW^7jzsHrJB3(NlrL-)C_r z%Gv>98l;>uNfBVlQ<|g+OG;|A|>=h zIpd6Xs@`XU+*YA!jbqYmRWQaO3?g()H0z}TIYV;0$1#wq&{vt$Sb^Y|)^dSPk!8s& zVZ)3MX!wFJ6MVZu+H1Q%X$gq{LMac>NdE@Y1DT@8H<=~6%t{?>pwy-|W>1*v(3fJ* z`!+6g23<|I{s8YBGTpTA^M%Lr=v-!IR}-|3<;9ZHe)@f-jvP=rWfH#XeK_Qg+CHSn zQ@qjFqd2qTpC$5f4|YUDx2{=8>yjXLPogu`5J0jNK+-~f_(Fg;!NAJB8giUf|7OgX z-e1iz`}ad zn0Z6-a_W$W|2=DzZMO&IOhGF$bfBpr=7^i$rM{0LHXMI)X>~*uM4bk}bMsB( zOj(UsFt!-8+1$>PoMY-Jlf%T3ILfm@nz{YPGRT8D4nig^46NRP z-R}w7@=RXXvyF+gTi>20gDI~A@OO*n8+>Hf5a|@%lK6bLW?FGm%HxD=d4i`f4)BEb zKLs{13}5_ap0BTb0O6VpkRVW|Bjs@tRqw?j#tI zz1Dk_;_u7mCVF{G8WBaC-Tx@V+(gp}x8csfN=&8KX=S{b93p?#A*K2t!*E`c<=BF* zJ3}cAbbW_cch!=DD1bf)0C>;?OM^sgsW#pIcDY#t-?PMY7#ZN3!ol_8noLFwq+L|L)B7+e?fTRC(A zRN>tq)B@dfpIDI-99L83_scO45Nv#4b?x{U)4}%2{QLrv)H>X~;6{|Ns8WY3p|Sj; zy~o%`T;mYxPd;LN)W(`n6M2Nd07J%#F=5Z$8qejdpkc8eD0(+K(ULhq^X)O5X+FXQ ztP&yH8~w&1xWKb#-f)t{d9|ETg!(FJdcB+2zs(Xkov5NlEIbXS^zcFsc26kKF;;IF zx1hi~LNdTOF9kCO0VgPh0lGW+-;zVgAR`C1G6B>2Z&i}OSNU%xlpR);;)9#~?trE* zfF=W{Bi+|P0U@se@wl~!r+x}tpHtSDkRGG%fUah|1RPs<)? zk2LiXI#dAmn2-|0^%P$ao~~vE*5xIjQS5c2+dY6x02KiS`!_|Lf604o9h%B20Cw3G zLaYyKjRAv_6Fjc{f_s3xy;ID9hw>knqSH_&0BhI*>vS+fpyeM8T>o_mNCVCsgYfH| zuqh+LxBw8wzPe``8dtwU2J%y9gkOi<^-#lWTcYNwq)-Tb3dYT4 zQU_Y-!&RQ8j?Z9v7*f!Lcr|J^%W1NsTXSzu7M(JXdOJ6=0ijP+vfCYlFNpTh4He5) zo7iOwoqJ=Z_&Z`he$KAp$oAJdX1RtX*cE-VWgco2+9;a2rYW3oK#ROW_Q3_$P9b0uSPwm6#2~ z;se)_W$+5Zhrr?xdjnt$NDLu~nG$dq9p8ZE11rn*A2A3ZG{7sEKJXUCYSdtR=>g0} z$XCnD$thk28!Fh1aDBSjO-O`aTMJEEgPIm9nZWpF7G2m$7{Miq(FDQJ>R+f04uGAp z83ODVeA*sR^v?#1k?+=yyTSK5u7gd&`*)K-|5Nxf=iRSmcD%cVxb0(vRR0(p6HTZT ziJ21jUxIV*P_l}j=z$!t8ch4QO}AUh!Oqo%!hlEd{zdSw;sbzY|R^v++M81jGVlTl?`vDdL!RKRY@ux(fPj5@2?&4RJIS zLlR==kdBak_;jW_%eJ(zMImi*G?fS2yb$hp+WJ_YFILpvweq-+tHqIjYRjhu58PwA*mSK2b}`N?~c- z866j}MO^LU4jc0{u_&fJZ0)RT-N{`t&rsvw;2sbgpIbMKV9R_{7{)%3w3Ba=(v2+U zMnQfL#Fs@y{%JI_`xC*pSsJe5eXi|u7-!^D9pmL|2k)5?Mc0kkV?}eTQxzfpSdVVf zG3@ zTiMwUGUqiwn(}mJB$s3}k_N01cTC8g;?x?}4wYMGZ=u|q z3qHirL-pc|Ys~f%Reg)+6a-L8uQ&e;Sn;O%@Y))MYJU*Ss=^JGx(^~tESSvPQ!Snr z7d4teV8{;L3|p!n!<2WmdQ*_WMXgswpM9@1Rl7Nn+uSd*&|epwl{%3k@NLNKrg)OL z)}oH2k3})&IPt zDV$c_3)?Q=ep<1$9Uu*Vb_qJ0zU>u0KSRzY(vxF@j(pYd)zMJ#<{aq(E6~TD--|fP zGrqG41~n?Q*Css}*&b8U9qy~py!}xa`8CYlLVBfmOG=#b@f)koVTnqSclk z$e_8KQqOur)SXM3&fElcw6V3N_ak&$CRSkAe8_BIsOS6Q+ykm#M48lx*|r-={R|Dy zJhyAl-?~m2WJ*_771nnL`(!GpqqS`B860^Ph|SufhBjoeW2VGo1U<>q)+Art;QN4=&)Z6&H;mFuuH>8yHn zUjU}yS~EmP!o<}uHjRUISX9$H^|9cUmw)oP#2dG_#^vv3)|O)0vr;2Wjp1?B;^H;I z0`r--!=`U~DZfnbjcaDtkgb?|KAdN`j-e?2x@aCJ5S<-RH>(=p31iahPH~kMw7svd z42P7;XrcvW>b~TL1b*pnRZj(c(96N7P?V^ch6<(xbej0Kl-5K3vW~Z{8H9D zH5?Pb6pGzz+}Pf7sOIpcF|(I_t~LOLFYRxes2OM9aI;t~^}P;V{sQ~<($C3scgNB1 zDR$$b%#X7#_CK4Hr8M#jRe2exX8qF`Y=ri-+w{ar*UOFFlqp(QWm_0^`MqWqo!WD* z7?!?xb$zz<5vO*+w)q2)X_!;81twhuqSgVZZ%4XE}zAe^& z7;aite9UEJ@JVvz+vA~i{ZSvX5{0$mci*4L=rG65$!aE$FTf)MTNd8`-KpmFL zd3#&;oCNV;!r9$S)#bR!RudEFXJSQ7p_6ub)a{{tH4EFflxqhNB6JVM)K~tLS9LId z=~ZuF-9TNJv^s{{}Wl~<@CV9~*H1o0V z_ILV^gFaKLN`5cySu;_oOI8V!+T2HAX+0xGV?1BFBeNftYOI$>T}J3}xPC0fDJ>9h z28GO|d8PCDad#@mc!TVz3+0^cCpPg)oesBqBTo`D-OoXK4S=MwdcgGrAwoE@Cwj1k z-;N~l_bm{s_C+J-1WL#cMW}}B47OYX;4T-c^_hfXi z8;?y)Zx4MOG-6{{@O0jd`R@IS?BMQ*?_Iglu!?=yiRkQC^&vYpPMj zaIrFv^SKQN_U!t&Hz2gtJDjk%rhQ{$%PYvrnRum=A7W!A#HOD$yO%^6 z%LE3lh`m=Rzv%^^jJNY`8&z6f&JNSOwTL{!@=ja*#ZP1P zAX`JjYLR*Qg4ho?U7tib`WUE6$;69X`63dZoigVl4bR3v1{PS^ZENir&U{`N7(uc1 z%cMTU?!B(nQ$J`9EiB_g89(cY&Q$cAnFt_RQGQpAT+JsUs6NjZXm=_ZB@c;e&n}9+ zgY5-k(?gIBh@t$(){oyPAuXP{?H2pM_io#_*zR!ng7S}41Y##X;lgRf#pwxLLSEuO zg?@y9`G0>|QzY@xK_5U&;IQIP`}n)H-&q`!3DLJaoz$_^T}P&7EFlhv$(cFqN<-^K zI-Vzt*-NGv2om`JCfJN|R6S6lQ-AYFxO64X{sk8F26NINo-<@ldXKB_&m9 zRiDEDmX^qa62Cq3D#Q%!KMJlxvhYuO-mpIegN-uc!(x%@TyF?+BWcKlsK ziZeZ@aG#i+KyZvF0hA^6VrzG#u5YkG`0qxKja-Rs&>tPsn2qWtWR?LS(7{cFsBy4! z%^Xm;rzWI#s%OHzEcrc=R!V^;`3{r!Xo^wO0T)mNM|5){l)LnuPYL` z(@QvK5wj1`3HKHl(Aoq7=Kc_3i1OofHxrza5hKj>6`dFJGT4S?&wtU zLtT}VdSn6wDwI%E=3d<}hR@Z8UTM5`cHG$0?!MIY5^MNM*E5`2q?fS@K&c3+{g5Fv z>%;_ZZy-0(rZF$pu2cC%hbI4IJcE=rs=K>lG)7@{H#jME?GO=vcjU^}niRY~?%3o$ zgYc=45^7|`3iql;#W<@RGK$LVM==e7E|ovMHd_@sVupz`eZ5&Z&OmcKsfxd?a4nRU z#q#Js12sr~^aN#OxMp7leZpP|9}h6%-C;XyvAb{7CX72?)wgmwgf-Da7No-><9A9) zH~|>u3idN5Xw}{+Gtw9B(yHKhz@rg17W4H31J_yCocKU0ul5UwlZWSh+GJevX67mX zMV~??8+Pvy;(<8agUKupM@g;LQL1(J-L~tE!>;*z!@)~{KBn-VVqlg4Htc0kB-HEty*$PL z2o*s-`$Z~1-LQc{Kh219gOgW;@}d8gu;|u_?kWEzN{R!E5YSKolvXpefz0PAMsXky zkdVKJ!~K9O&hxieNdeSOGyFX{o(kqdd5WOLXo1w@>(lz_jvN5pHJ|F(Ib8tPJv&7V zw+LBYu6<4Lvj<8FUE7zSkASV-tcL6+KT}8iVfDuoJf|8JFlXhT ze5(Lpjt?3}Ku(eg#q_=4Wn#?l0L2FY&6)f3%*yFDAw#Luu}x^WFGGM!dnv&Hr)cHe z0cddRX!s)Fxe&;$-P(Xh5fnPe5fW7Pe}H>?&Dj4!nH>sKbGJ!PVO6TJ--sirz(x%M zh_t!^w&f|5NhPzu2_<=tRRLhB(xbniD%JJBWc&-Y^^5BYIE7P{s=SW70#1?L;MHx@ z<3s{V8N>Z=F{5|w`Lz2l?}F*fxq3HYY4_=r3D>{8zMWk9i>Su*{=P2!4>At8cy?IA z>&3xD8Mm(d#jb+So6WgWG@2bBCeD)(o@4ypcTG=?@cN(Z&a#~}5I$Zn&S1z6((%ZK zzkTNL-i2L6|2mST)Iqrse)5ozYwNK7_XYIwhF1T?PxnK4W&C{mNBOb$!;jMh6kF7R z6i2rg(C(mPAUH$Qw&?wlgt9S%>B5sLh6-;P)yx_AvMV?kz$2;|1ETo^cNi z8OMqA#(AB_-XOcwZL~VK_i zgTf!Q$}G30Y&;zVTn%3Ul|gCT4fif1#7CXo8&_NG<#te7RRi|P_<1DeFr(4?7Ki_l z&sW<&%<$0AZG(eT$*pHFTWO?b=y;7Vcop8hM}YnLH$kr8B({NfN)s}+vpVrSw~a&DkQGpQZrxH5+Cb=KN!FAbEuUN(?=|7gmz zR|-kGN1Vc z%{6=Gz~&wHG`!HPNgbP*Gb{I7WciC?IVLQ#Vy)D{QSp#oidhhai?tqp-!tA|c(T2+ zOMaaFop>Bt*fJ93(!A$hJq4#j@w zWfKORFdrG$R~+|zcFU>?ESi3pH6v5k8T%s zp6qyH2&^w>%FxHW7mtgqpLwoL;O#JZ0luTeu_0r1ah2gF78S*!u1aT~<{*fS&IV<5 z(2^&=R*AJ%%*vuQ+x%uSaQiFm^ZcXGM-huTZfsaIz{b=|#-kkSmy$iL)O_{N4~uir z-$gCbnZw!y;EaV9NuB!adiH3kTMee{xf>fd1W(+?MJRf#dP6c5M%uj8v*AUC3qPey zk_7|#wo7^XdpiVSvhcK21U5Us9}X=+#TXbGL|p0e51;cb}1l_ht-TuM9Fp~LK)$Ly0{ ze{Z4Wo*BO}lar&^m9?y%x8tTIGw8BM=hYqrh2(|BoptqXO+SNbec2eTIrQH0D>{>E z$(9A3!y&hR^zJZ+kN!|@0E%7i6Y#~W4$!){TnFb2QXdbnbKJPcPSRe3@qta}++Ha^ z!_h7=6fKt4RP(`sJX1CzZm10M#Gw4q+|gC{%uL55L38XA5lAcX#l5B*_taeVeCoa?Wj%*S~{yBmBj9~K;iv+?Oq zs=Vq^Te-5ZGSl%XNn$O%wu8$ zFE?dN`R2g6eRCUkw9ThM(zo1))Rgqm*%Hy2<>$HGX-yuh_U~Q7JV|bDP+xF}Rc?Pz z`JokmT?dnVz>viEnPmlbIq#c?JbRA_I@<9m`;j01*A~Q<iVj_{q4Pr#H5$`DqMy_1?#d$w$6P^%q~!NKz6Il zjIMgUuQU@b>OIr{Mp~b+nNsYGQW$*O+Le=es=i`F4@jvHJY`c97?z+E zP4XYfUw^RHIBOlxFP#%GTjaNituIA^KvV~Na_5xIVz9iB)MqR8Me z|CJL}V~~-UB1VR#m=seqtUC|?9!s6nWBGg3(*HA*!?oB{yO-WLyVE=&5ZgKUN*Z1e zITOd!_1na`7hCp z^3gi~}WwIJS0I6g4-azrtN?1r1zxaX_On3+zF^;q_~Pnh@tNB1wOGZ z3Y`DCr&1+mc)NxAla!!gg{$N@N5!6r;Yqz}?z&kR*69xvtop}vs}8NwL^nh0AgV&M z(-54~KJS74SL|);aPXc@Qf2cpKJ()V3t?;x0laVzZadd zWiX~RG#t5^RFUtX0aWSxNeccCAVteSsh=yiY3cqojPR!CpCn43c2eXFsf4=P<=XuM ztcawHUgli?DzbEH#hiug<8<>VXG}e4z z+DBh)#BeXKamMYXBkWCFo3)Q&$xV*>6TJh>{07--Ei)gnFnz&mXi;j1w1nZ;>Vm!2 z?3d%_zbm-7&1u509Quq$GG;X@nmn*vDBP75z-x!7R|+H>b9SoTB3dw8o<#?uys@qb zeZgaO|3I$Yi){5TI8J=ca9{jWYmF!kg%7LXvnFlA@^Og0CR$xHm&3Ha_N!o|I<8)J zPGtQOU3ZZJ7&>&<%sOakuR2SnUX!SGrxKZ*TQK4F;*p*peFSnPR=HUwF)c2m+W_PU z-PIsUaD(9xt6iAX{k0FhRmWpe$Nid!n~;phjT+KuS2)e<3^+9gRlvuG`IGkTGk}uu zrrFf|RoIN#q0~#N4MhG?+c756ThVBH9f0Wo=yd*#+d#c3F=qHHQ`xXf8Mtm3{;)+a zaoL+G9u}L9bzeL&XZs^AHTxS}dz2hr@_tc`ST7c*b)j$O_#wEMH_Mo(tq{(HAI}rc zIk4a6VXED>9J#aFEB+M#d3*$3CJHQ+Cq~9T#24zfggM?!MQnI7)7{Kh$otv1apRzW z3m<)i(Q2T}W9k`>U;{|hJ;27DpgnokW!ehu?>w0v88Y}p?Ax^qm4 zzaW)p6yVn~2lONrAVF)YfYpQl5{xVWD5~loz~%2v{}7CXX#j%F zUjx3Vzc*|TMIU_lOE7WBOkUpBaefAC>^h>u^TH7!X-J0Ah+TM!DDyHtqJk zOZ9<|o4JEz5r!Mh+r`->U_Kt21_KRwVD}--!*&U2_Ebp$q0}Z}lCi1vrB`YdpWKp= zq3>NH9m8Z3HNoZlsbKSt@X!BSe!v?g*TEiM2)&=9vn3{n>O3@K4Io-cp*4_r<9h$@ zpLLxnf3y!S5y5Bp!KMmT_l+wZu4Ef5#kA{6RwY6b~VH_`zdN0999Nh(AqW*@L16STs zv1Ps*lOvB)TwDJ5;&*p|o89EveXp*{&pn1T zkd|Y+25vY?{%4o(bmiu?-$|iQT(-QI-(hbEGQWtcqxqwAB+yl0`;_-!>zuo~a#5^V z!R$_nFs9s}&2dr&B&v-);QKRwM_Zw;mz)K}lg4l5 zL~8XYfl|z{auYT)b6Q^hd_i7eGNWg99dPLv6ZucB&H`DH(i}M*h|FY#Q+m3Hcf&Qn zi4%ri?=?WJDQ4NaZF$v@@ZH48Sk!i)Xb4RC%oz8x-&~GGr$%-55L-e{5gpDjMVn>+ z<(Kw!+5uQ(y=RCh9EQ;agzZbyCz(ox4AWPixF64I^&)BNH*pR$+!FB|2mp(T6KL08#umwPao z*57A1mzrNATy&)_J?mE+W-Io*d6QaA_yasN10P9je*<&B_qj)0BhE*N%y+2ClLtQ| zi~@2};*mobD}9ZF1N%h&2`poMq+!iz`(DXHEgAm=;7ar26H&dumB72YD2fkQX4iFs z>ZGou1MEE$wlAgl?ZcIF?LrR7>}Q>~j7@Kpwp)9Q)YT%&G2hO0rmN#_?Q$eLBG z17B30qnR}AMdvE9JbT+a0l@lWk4Y7@`wx7!+TG04AXPWRfbokXdgId?%!N9;fT2n< zTNWLj;iVzO!~%11^{QQOKs4>Ju${{@F%(kk8y|t|W#MmDM-GodG#y)xo}W8d^+A?B zdx5@6elS{Q^RSP{#BO{N(bYMVc2!i>Zbb}KZwMcl>r@Au=hMYk-&l}D_KqH%oQqIx z82l}G{0|iMq2TZ@q`#D_Hc(#l7od6x@TPmHYpmAv0gUUYl4n3gqED<>`QZY<5!J)K zKNkf4af1bj(e!8TAAff|DC{2m)Mh&VR+)tXHFI$g>@U698~9m@zhVC&`fGOBvpuj{ z-vU2_i~X!$dajd9xZ{NZ(8HxGHC{As@bTgM4V`4=Mm z|Fq>{;R-$pXZZ@SRPTls7$52{{`PvrvOrbo?swNEF3=jBb)i3e;=XXdzv4ft)FTyQ zKSRL+KKZ|vZf|AR78)OlSpiX){}!xvV%cr<{zMOwHarAqjE5xnfrx#v0u+NN;50$@ z?7M0k(qiz#O;pmwll5~$E2$iya5JoJag?Ha{o#UV5K^P-tKiaJLwt__o%p0rDwc_@ z>BuzGu4HnJ+S6@MopRg|=-Ai+hCU*5p3~%OrnPilH5OpQ4%Vxzb%ClP&ErrAwN;@lRYj0pb#M$w8@V^h;VdcAI{itH3O>st~@0bE0WY z%_>g~!$Zn)y%*#41b}{HzOb_MgERsacTJY@Vj6!O(ylAFW`Ar(nPc(XgIe zd6ko#ECg>%%FTY?VALp*3lWD>Y=SEQ^)&FIU>F8!W3J#qRwg!QNe;KLkIiuL;el@F z=_Qk(81eenSxv<2R~?#s1K_a33Z?Da5CNR+aqzC5JDkF)FE#vGUwG*3vpUk13N8o2 zg*VmVZs*JgI=11|C7R8)9L|{rm58c&v*(3~OZquM2O2L8!nAUqLk9`>r3#tdFOcBG z-_%H`)Tch?h9_X&MJ&f;*H_=qe$8?&@%0o41(PcV4w&>*ijx^Zd#~u+m7zz=J>>OI zp@x#Q8^BX3SE{)ZKcr+1l=s0tar`P@ zrMQAC#4*OiH~Vl%qmT)7^y=l7FKRt4L$aX$CFkL|V8eek8C#{{hWOP6kV>DogY1#& z6Dl^ZnPggSe;GU>MQ*Zd7_P>xm!e9sDWMlADhVEF+kD!9p0JVS1qu=nBZ(xhE%RD> zdj^;a@^}iZPl_J5rU$3MmC`+@NZ8~%-o5L+ulzwvi0ePg`Po@&X~e`m=5c59v9mws z+M`W;p_X6E`G_)I{#m*WVY`5`62{`g=lG}Lf5iolhWC;$WeV|u>KC9j0p|Hp4}&Jk zIU5e3!vFyUcOX9e2N#UxnA3Di@Y#1jKZCQ9#x;6$+vx4@#U@I90|wEGRdD%%mLOMB zE4mDcZYeD>Krn@MUFKn&Ep*r4iw=g)=w9STnyrkWhN0EFgu+6bYm_+trY)y$yeImN z{&YL8UMkFY|8fs@0Z%qHr;)WFO+;kEic~in+^rTW3=--5)8k;xO>Ty=5ee;%e6ApJ zEzMGdpJKuVO@WqI3zyz`5e7>6bS8O??ITw{l7&Fq@nXm69W>o?EB;PfvFrM3 z=#k(N=N?dK>4*0z+c=i(WlBjJ=nh#BRv^sA`ZV9}egrvL*>x^$-X23Ke4ATQy#Nu~ z+g{VQ{?>H)x_!*eZCzEbp@N2dTa--B#pl>A37{rAJ3NW6zL+Ab4GW@`2e<8l@tt1F z`xbMe=ll(rX*G6NwOZ64Lz)^0CUViV=Q+8p)HU+PbO_qBkG$SpPt`N5Dq`?@?nI<%pv-cXO2Kj9VM zHBg@400YboA~W|%O4-pR$4~V-1ZQ8~3}3npX%Q<3vj6Hn?3Olnpp*cbV+U|RIyjCZ z#__;@R|nbXvF^BQ2D%14HSUB;EJ!c!Pp<8~DxbOpO}no9-koRa)SNyzE=l(gF+IG! z2cR<+2HA_bCf`oDFD9&1aak&NYp$L;?4Mb%kA55KH|qP;)KWv0lpHfkS92LkYcC8i zxgvpmdyo|GSVB$pSiJL`p=O-;XLl;wg(GpURmuxQoP5*W0h}%SVMHzg>zR&Iz({`& z1`r35UN!bccp(T2Fy`w@oPaSB#sLzucs1hfg?r%bE+Z+gSA70Z3mpzIf1uo5IKQGn zd(G^-@`pYw=+659a-XmPADD(e%WC{JLj&-FOo2UhX>Z_jKKnV(b5qmYf%GVP#GQl&3)p}{|0ZL}0kYXjV7Wpf94$)mWa2AOND ze49qt)-c0}AiyC2$UVl1GutcdVt^0>UDC>z&CrnbfH}(Ww~3s1bv(0o2>U(|L*Z@U-LZ2f=}X zJ7$k#MfoU&&upD%a|x%J(~onPmtY5jZq_ z+vm0&QOEcB6N9Li(l@hg;Nq8#doKa_)NA=uY)LPj>beJL6Q;eTsuJR3MH-*Ql*_am zN9to9gxCjhC6EAaOpgE>lk|m`e*XfBvl{Urq@JacFk;iP;hXS+?s)SiB|(zT9DUEl zdY9);DaRSe5|bN4Lpe&mw(JY_Q1~g1)Z-#_m2{j1FD@1}4+StqpU_(#6`2XeumM1@ zFAHRKNE7kDt0N56iS>@haSjQp99=Kr%~C##HY#PJGmO1-i&`hjm}=|qK31m=i5gS8SgN3dp~5%4IEANhu|_hF=mbE z^T?}OZoUtT>e6;E?pD9mKKZ#vlUQFgA!7?S=!R0h)D6urcB$(feXcl9XZjA!gBqA_ z9D8@oE$K@~ZozbW-8ghJl`~MMTFn%xuPaiGt~228>7}mvvU8AgU|&#WZ$Fwn(Y?y> zDeORms<)mi+b+H0Q_UvPYG{^w2{bhQym+4l$-Xz+WnmP;m8NbhiS}1~BBK>OHaq)X zlw^Ax>AEg_zh7o*swaT{!vk>f0H-{iFhISz#0LI?1vFtEACkI}d;b5NGXZEaDLK8g zSI!U5Xj~UybwZq#Qg`LH;r1f~); z(qicyJKA};@9lB~nZ|g{Hs>8zBw3EL2J!x%N4S5(k--BTWFJbod$esJN&@WF&>-j+ zEJ*omr$=N!y!XI+=s#m5H`12M$Qo4OxDHki^lK%gfhWKep~E^zjN3q z^Ntdn2)r53HEA&WNp*<(T_4TJ@20NfZ_ShU#8ze`sS{pcsk7j&q?9p_$m)La3(Tm}yB z4|d}Cm1!!)p$T!N`dqQ*>tbD~JI=)i>&Wm)V2FY4yf@f>(eY{PC4=G%x5h;UjEQpJ43QIG#R<-DkT=rpPvG z7A~3^iDs6B*O=Al0knm*6z;ecHPH^cgW+c zKls@D<}4uo&=-%T)22dT=kA67m=@g$QCr=MCkj?SD6u3=?*k^;0)PLS?-V4AaXVF? zV60I3IQ(E*{9VV3JY2P$;#Qc%9q{akvx>N_dSN@nLj2@qm#$wpdze8G_JM3602d1l|XR37? zKrV4wiW#*aU=$y+;Tfp4J6TiwPOkvsNgZAwd5T~0LJyK#@KQvze;!s!6TJD*(9I4fN?Bsjq(X&U;R~OPTJGI|&U5dLIT}z5wKW1cQ z4M33I=*}-PZqX-n|5ADdwPzm<7uAh77T7Hy4A1&`dWc)yNjc9gAq~0 zeG#gCW|MhQ6~{7ICxoPrcTIPFfv<;QcYbmxr75peuci6>W^*&Qft3^#gM#55hv`1% zHo~%`u@j7Zfl(J^)itPnO75&DSY$_B@LCevgGv3){&_MUt^NjSt#~b z#yLc_$#AuGguY2>`0krs-5)OR{5Yvk3Wjk+`qdr6>R*a<>pg#*Q`tKC%+9af5=%3i zhG2Hw%2T*^|Lx7W`4VY?LpCwzcwOJ;^4K*aJL&E-JRk>^FJ1mpg2{9+7^Vn37TUngh{>}lZUzThGvlW3!EoRmBH{_6 z2&r}w=p&&`4nch2a`3jrHp=|vw5`rLY>W2M4H)HuiPWSDGl<=Rbm;w?4ttvqx`N4& z>d!nM6S@ZyN>vDoC$!tOl~HO)+(JRp3B*;)^VyCR?xa{#i1josKfy?o5!`3j!=3hj zlsOsJ?=;_BN}0Aj$*1jGtC;)Qx`#G`!%bFD!CMc~vXBE;V}Z2zr2}>L=cJcNnJ)ZE zUy%>(2*XD!(kni5nLqnYY;pe?ttYR%T=XUdh;-h3W+=VFg+YqnxUS9|+|AD*yx#}T zM;Ce)ox&|c*gxi4=zY|Dq>ooAk~kfg7o3e=#FrzaCOr}wH(%zGzZ^f{q=lMK3XglegsR2RS{(*$D%k2l#dE?$5jABLch6n?stYM!T=0>nwZlBBRcGZC{qhF0xdz$I-nNO}(t;9dQBk0stNU zc>jT3t{BC|HBDoYc;}4SCECG&+4rbOxJdC3x(gWaPi7!|i_p~2Pc!5$;>W$Znf%?>q@ySlktyLHrC|wPAsg7#4YJ*t2Irdy>;NX>?~W5WfI@Io_$H4VdOwSCzO)&*S9e;}Axh0WP%VG3V{#Tyq%?zrf7WaCK~CLN@^@Go1Zs$H5or;yO#pS-7}4iGn3$b z<1_q5Ool&>;zh3oWPe^|tI6K3z+E~Jm6Jdi4mWr^l8pYEXFAGw|CFz58FMoj^u0-` z(K8gz;l&{L3+@}b=aX6q_C9wwWSR|l>2UU&Upr_9l6iYwKf9ShW1_{oD*<2hmAmTk>RP%-rp<%0-X67v6Z1-LS&j z(&h5qrXfLSLB|y_Ns!r(kBH|V&;mao5J=2Ouj3Cr37wbnm=Mh$XE6Ef1$70zu5W$D z-}Ueblq@xk6;%Yr9PMR$_8Y;8QS{a5I2EXFzPo^K$tpU>#+SFmU1$^{ls@feen3+` z_&p~VxUssCTbf8!*MN~Sr&vHQmki@oE`S^Ht6g5#s|;CXo)s*uzAqA#-zU9vmR~nO zYB{(MpK#!p{L?ET2Fpmqc*$_1I!GlZ6*-bsUzW%*XEHS{i(3~Y@&_6oz&-R+Rj=Rl zXS#;Riet)6w;fj3GKmmpE06${g?8~~GmOM+%#Ykpj&fkS(=mPW3wxQR&+rx9V_L;r z<&u#J3?5u|Y!hUsK)LIuh9RejM3*0sVY<9u3y3RnMr$xI$cgl_+=qw0EW*L~xdp!g zieLG~S;=+>%U^9cE51c1wWSV=n!Y2r_8EU~WQj;(fYP~7_%vN}6xKDGTn9lpgr5hK z?{tEd<^$H?pPB3ZH`Gn{3>=khuYswVrk`Ft(m}W>)q?-Vxd@;3&XO4t5@TL$pb3qx zKYw3@L1&;lDNOtpNI8~3w6+fX!qj3PV4k8@y@6^8)M2-i-1TJdoIc=xqAkUvr1!n; z5G`R|lSrj_yKity7T#xP+Kzztu>4nj&B3KynHmIIi*eN>UoX<`dDpr8mA96 z?T+23zsaf-7byiT(Z%C6G?XM16f89%-oEo;z);>1z54D7x*PleN}Vek0~wwFG_=0~ ze<-K=Wg(6rvyi27<&)UVcLXU6CzEbf;64o)71`>i$au!9!qSv*MX$e>DsuH~OAWaW zS}*j23GuBIuZmVV!Imo^B?!EWu_N(oB#vqDRh?3>FA=RVZ@}!GTz3pfIgo(lsU_}cdJ6rj&_4NA zps-i-aBhCa2nasT?8d_#?)tq3D&J$=`;6sHZu5d8I8t$?3@T%f4ZZBJ7Bw^^M&tSA zHk%h4Brq_Xm4W@Uglt^DyIV0KqfuCI2x+Ftav9LYnyy)c8^9Bz`ci^6rkJIjx)ZxW z+G_Tqx#GJ4tJ<9pt9gFj8$?Ax`|E}8ePgGONNu@$MAkrnc`L?2P65hh2UEX=93Qnv zhpbxXV8(L=5OUB@ubsHSPr|~fA@}*w_3ll+>n8juS#;^YEE=9*zO2gL+&6GjG!}?B z&EJ1_-A$!kpQ{By@L=aUFON@|t<}{m!|u{%dC0`RU7LLsjE3>M@ms~=$&aZxuN4=0 zTCyYbB36a_y&ZP6)X)y5npTxv7gTz>WsSv7zP*AtqUlg5d{y7OD=Bag^+~h~CN=Tw zw8L%sBf^WgBD(AUj^ORzx@C)NL#CB^Cg%|7t$o`r*$cf=W9dNXp&uC#_tsi-njn)? zJsyr?ANf2KZTJ?~NyPA@dFjmJ{rTO@*4O2Siuv2#1i(1&e-@wY3NiYFgvAhIEU?2z zR2z?1`yFHw2akGuSiT--2QP!ydwAL|b;AmC_DSy#s*k_LgowUuo*zRF(Rb|=b=tfm z^OVjUXx-M0%y}&LoIb?|-3Z$M8zqU1PL&F_Iw5l9Y$o4l3bo~5%ysH_-1ePu;ElC` zTL1~6qHM{BJH0_15$J8e!~#jji==4QuFit3H4naYf`O~Ut}2In$iS#_?qMpWO9Cc; zk$Swhq^E)BDlw!dV^!~+wX-RmZc35nX^I%n)AjKEZHzMeNO@EY$9wTh&MI%wpjOMp z*9Z7{PoX|sY0tKv%$O?4+G`s+_B_o5hY;AO!^ZhBsZZ4_)4e^hO7d-?L1hg%Sa@8U z71h62vD`#@l~8#yd<^J@a1&XAEg494d|%D+*gF zb7p2(>i}Y=(lH`%>ehs=*p?(*e7|)Yqu&CGP&}{`4T7};2NjaAXap*U55!6phEE)% zKee)VeTSgebA3ewuQ^xLXzZ=LNK)}`Vcik+#DsO3*s#u6dsG??k`Sug!q~CrnruBgC7YBTizpggR(M?oVT5P>8 zhn&`fM7!-tSV9<11+Cy%6ASt>Y8%~8ihF#ld<5&$7yL(H$ zLsUxxpTZ-1w!1Ge-V$vZyU)+do4yuMd)4ge?@57_*q#c6_zqUfel_;GCmMCvub3#l z6ZFM9Hb^EjE85L7zn4pSLk@>{m~>1KJ@)iQK~YtcDHG$S8#pS8j`-zlr5%2Cr zkU4^+`)Hv3+|p%UxV@&6IB*|BLLH(^&NkNLDy7ZYY)&oDwaIrSR)Oz7iZz@=y2oV{ zdzpz}@5tod;KcE17N)vA!*K3W5o)C1AdW&Pab54cuR_F!@Q)^KeDoQ_IZa_F>kQab7->z-`%G8#J&WjQdX|3mS90hpH`fvmid)0TXp^fViP03| zLjm|E6S^cC__=!t#aUa#8)3dpEe9YNwro``b_uC*Hh4&bNvD z=KR+a7=>TCe}E3?7aInmWkBX~oXStM$G1?MBMnC^e4<>|3bXMr<5sslH<)1Ej2>C) zKe`#EVq?ADvWl0Fg!pmu4xtK85NUjo=d`jD^e0yPaYr@}9G<(K_ifeBSu}9^(|5Di zY+M~FuU)(ypS51a!JJJqhnfzTV^PJ~3NRA!IOWf)RNZyCg*5u?W;~4QX)$@Lou$rZ zRi5mb^Vg%Ch<}sHrQ{lVlaJB5bd}YRcyoEaNjWt=UHENySuGE&v~Cc4^ZpF*HM@B4 znB&E$eC3*NgLN6;Vy5i0mD~|byQ4z6t8PHwiwYx8G7xi?oEpxueU@J<&GC$U3+^=j zQLHdM)9aJqrKi_?9Uxk|AZvg$6n0G!<(DGUsh2UmxZ+MAS)MlAzGFse;8Hcc^vZa? zt_xOttxNPFU_&8&Gecx^ErDQ%|LVdCNUL#9d7Ydv4`w##T|uX+vqVq@AIijUxL(MWY1wyg1P>W zV!6o6s;a3*&A5xAA%lOM&3J9Jbf=aY!2`sKU|bJ@3n1rRL` zD+V!R(R5cK<#!h@%;O?m#ht4J<*l#a&I(dh+lQ}-b8EDf!QeA5l(io`Iac#3?j6vo z_{(3+wR2B7wrGqW4-P_bZM;UNa*E7J07{nN(M5BNhK|v?^Q9?qOUG?MgvpkCD7J{zzJpP0 z*BfC0$nuz*oTpFL7fm#M7e&_S~o&`wNBH(oU7l_;28ERn5K5gyil2tU})C1 zW5vwgr=K+0KnJ?U3aWxqUsSm%_ul9wYdfWxPChx|a*N0bC!Gs^4wqZ-o@Uj6(gY

=(hn^ozro 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 literal 283100 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%0A{Wljar;`Gdn7KX12-v(gjtIfO_N-eiyiQE~d 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 diff --git a/demo/collateral/P-3-Faber-Proof-4.png b/demo/collateral/P-3-Faber-Proof-4.png deleted file mode 100644 index ad68aef56c679e7149b882ff091aa6192d99af7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181907 zcma&N1zc3!);~^3C=wzdje?-k;DFSCq9ToScMqM?AR-9U-ur*=y}tK--rsya=gc{0_u6Z(z1DZF{Z&~}`tEJo+gMmwcV*taR>8s|1Y%*~ z?hxW*zHE*uL9nohDXpcXlx3u(n3bI!EUazKv9R8Kjn^d5QthQm*Hs}T;vx%;8%kv! z2|F^t%MFT%#v^?E>XmXOOW5tQTa@JYDfP)KOK(MYeby((_V#^}om~=ki?g6v23z0o zVjc}`IE5#>3|=BvX3-W{%GJiJD`r`;SZ0TZc<%#&1D`rs**2a^V$nngh$vfD1`E%} z#291stzYc&yWY`}YOsGCd0c*YqaG)$_mB>Y_1>@hk2@lp!H7dDi{D6;1LIN3J{N*QKgs1m} z#ekiu4^NEpAuq@z0zUY-pKyMm>?KS6eo4l@?ZBtnZBnIWZK{%klNC$)#Pq~WhV8ewzE>_8fM#$V z1p{!2v6S14(ZR1u?(#{+(V)0~)N%%PQcveBH8(Flpiv|r2>sS2eTddxGOl{jKibfq zQ=h_d6vbF0vw90pidginxJoo51<&f&bQrQLSgHieDTG%*L~ZS&fO$^HXY4I==sg#~ zk7vF`%*?VjLDpt>qz^kvrZ{_bDyVtOn~##13waXSDA_(mI4?S0U4EzMB}ruBSpM9; zbMW;WnhI(5rf;j##$LlHu6l6trLo^pfrBQaEw4301v^bi^t&k?DPhkTJ{9{Hw>tuO z_HgByKeF5!z@Z61%r8um`pa12VBH~kp;5TjV zpCRYvraBv=w{vAJ4j(fnFVb{Q)l=;RHZ2+NZQKgs+6iw8Kj)*A)_i0#70TOwCWCmf zFNMOXnESa`d$t@YeokYbw$DBE|H)vvsMB`4E+qNGayqXNLBUl_mR0!7sm^tCdeU(e z`sdMYs@o*|R8LKB!grI#;qQI?3&;teQvS7_38o>HcP6d3?oE6I;IO&h19ePSESrc; z5Gg$d^ET?lebQwM|3Oz%Sy;CLK_84xb55QA@*+B{cRA=}3fe76Yrrwk@nRgM+v(P` z;LWfTPqzk{f^Y*qI3(IL>^}G=PG_ulUDhvtD?pA&EzcKGNsRsCgc$35$OF8jJGleG zdNJQlMRf38WZ#{bFaYQNl4cf>Yv4oPAoL`T^df$9fCM2nIWs=%N1BRX8_aah>37$H z9%nv?`v@??Ex^-lC#j&@!VQsRvBJ)8_jJ7F8j!jO+zK<;yGuZW( zsc>?+PAaFjVr2fT#9v?Ci!o!pyTtOy3|Mvl>6^Z2Su;_UkjqGVDMgmVXvG!og9jT@ z^N%v#6MxSxDj>1>s3-}3@9_M7#LN5~Yb$P@0IICwq1)B?b76v+`NJIR3e|MJ!6YVF zu{{rxfEK~Rrcf=sgiqg1aBLrHe2g~*O!}43T*DES_9aXgpD3I}20KfQ9PpPaU(mt3 zsDE+n%lZh-2V``WFGuZTU(yA>9b(hEr$^NO3GWrHv0zq`vf|{M7qTx1T2l==$YS1^ zktuvt+-s6&wID;1Yu>9PBPCNJ7yT;U`SRY^T$w7?hS*2%I8_)6ld8W~C%S$cd$al2 zm$g6k_-E}3mh-)2C2rQl*wbjG=%%0W-XG4g&fU&s&g9PY4Gqr4tL}Y(e*IWfJYC)s zRr#koaSvqi&56E$tjchXJP0^YG%%Q#oPXmNDyHOD=@WeU5*>CBwJPymy?{#1aPxW5 zm&Q;XIq^3wa=y|z!}3-J)vP*P+89J!LsVIJ#qFNcb|>Mvp@6%rr#>Ng;(qCr&bSV;`n;zw(uJ;vQImgXsNQ?Jpf=b&?nG>xVcKpw zNTg9DP()ZH)pcZK&20DkLI8}*Y}SmP~b7|UNuuM0Z0<%0Av8$*Y1kh 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%0D({xIev#pA+ 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 z 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 P{*xA$7b_Dn{Qmy{lGs`$ diff --git a/demo/collateral/S-3-credential-0.png b/demo/collateral/S-3-credential-0.png index 877a9fb3b35d29d825741f4c3701873dcf961d2f..cd213c9a0bdbf8cad47d939a73cdb877d0457855 100644 GIT binary patch literal 24159 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 Xu9Dr0z{!q-IY2bk^i+$KZA1PCw1Py} literal 350017 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

tb_iovO1Hnj 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

cB4d!)u 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

BfXBi#HklFlqr64{Gg9ImdTK& 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 z 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 V(Vl)q8K!wEf{Y^_3i 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 WTLrKPvxa-XA2DHRp(4RgKK~DxbLC9{ diff --git a/demo/collateral/S-4-proof-0.png b/demo/collateral/S-4-proof-0.png index 76078637af2e358a91363b46a4e4a9ec580febd2..ff873c3ed6d751bf1151d8b71e46135970de96f3 100644 GIT binary patch literal 33066 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%0D}=pg-B{2G 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 literal 341093 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�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

oqhP_7lS61 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

Uc)_p&%pLwvVOCklJwjlVP$mF4(KgvP2 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 z�wwt3|mM?yxIK9~u<)^)j^#-v6}HxSPA^Oukw2FM{JAV z#xiP?$g13(HO(l!C3^C0EW(B~bY0p8WEHedD%BY8I+SaD`VB7jCgU^*s|WZr1nm3$*sjzk9cirq=&ARR3FTTQF z5zRhJGs@CKUzfV@L0-b1fe4-a&f+AriR&UO5&gW=Trzbzqf(#3gvQ+TfcoaCt$!cl zJSN7CL3Gj81BO3!&-$0?H9nFdCpeYR6Ugw3sLb%GyEM^wqmh_wv z$;+t2Z)Z=)P!FZ5^*FJg?w!r5aO9%DA?1pVO~zi=n_xpTRt|_O~cHO#qNDfsL)LKF1e|Da>AIJ7^;*$i6JiKdDtR`GzKI`JFYz6Vwk91CG zc~a{RAV0_wM{}BCoK{W5w5|It@Hh}(cFzoTsu?hDzF6CYm6IxZmO2y!XO zfBGQbh=Ue>T1}(h;UX-s<$nP1u7Mj3J9+SK59)l%b8^?S`R!KFi@pDu{!gaBa$r1- zt$-iZ5~(jrfJu;lDsG4iZm+;?KdoDA>c?9-o|`0d=SR}Z&O}eXzw$Zpy92XVs*4Z4t8(gkF=R*jz0M)OV>vJT zZZf3VxyX)aZOiO(EzrxwPlex(oN=({(h1l%>(Y}1pK5PvGa4}UzTpYdDwW%F{x>&u zx*o6M6FfI0Z%}pYRt%CJ7Q3`HA zT{WTpJ5wX{Ch~6e&umwnkpvdG03In$W_MfMG#4GH#u8HN;uNU6Ka<@tqa`0P-#Ofc zDI#*AnBo`CiGQ;H#ELj}zfd!1YfY}9;KeJm<9#xLba8zYRD`S$mtw-q+SNIS^{Ya# zlAx(^<{q+Ged#H%^~pS;yzkNAjKo#N0T(j<#0UaI(m&f*pU3>0v^cxm`;OZjR%lXq zg+rso9=CygD5-fO?rgxp7gEiJ^UriVVgotYlJzr76H(%8F-pnJ$6WTp>1vILgBr=w zWIp`QENJij`q-@-EzZ|e{o#}`Z_aJ8=$2I#GcG=&F9qn8x+&dH4p45&HWpDnps>J5 zc+kfA!d}`#9?IfcSEtn(N8YvicnmFWyxN0WM*)MA4;R^osUGr%1>r8~)So!rZ1E=3 z{{X{Yu1G}Q93|NJ+Dd9wHkF+7ExfCK6fL>jKrNp5SI%mf$zr2a8ER!9YS3TAbXl+E zc*!-rzqrYXfKbwO^$xa*Cmazh zrfv&5CY7V({Yg(QLJjGKOGYx2j5V;x0|;+C9Dnsf)YV7zIJa54dY_TQ_>Vpiw7An*vWk44vRzJ~+iX5HACA2G zkJR%9^p{WP*VyUi6jV>GSKuInv-zfFDFygh8SQ0IYY8s=;xh0Kqi$DbKk1H#7wh!T ze!j{5$&Fj|YA_9gu{jNz7((O3+W7;lk{uJrBrfP7{llIqpxZ%D#;&gr5Z``}Q+mJR z5&?NA8E|+UAjQO(iLpA}>hHv+rc)}-5nyl!J*-Uj8@~9OdoE|FVYH^kZ0JQ~W1)#_ zv9E_x8J?Z*Frwhq*S98T``ebcJp0D7$eOF2oj@PA*JP;YWev#QJy1I%9{a?3>_IN; zH$?!}cpr`?dNs%)H4N>2Urf5@aWs03D9u`HfAGoK;B#wyvTzBROX?HF&g;P?kjH6N z>!3<>ufn?T*Tbdajx>s3r#?f};x7|`_zK|!+9>3TyN%L^O}QW$O?U!T8XKz)H2eC? zS8cRT5v

-Ou%&iNb>-uXb@+BDv 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 diff --git a/demo/collateral/S-4-proof-4.png b/demo/collateral/S-4-proof-4.png index aabc3b624a0b21cd742e808f9b5c37bd3e7013b6..8afec389ecb672c8a746da9e49747e2570922472 100644 GIT binary patch literal 54652 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 z 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

WS#;&@zweSSATfB0#YS8dRaKA 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 bG<^-R%>Gex;y&{S*59S`dgrhj*Y5rg+Nwtp diff --git a/demo/collateral/P-1-Faber-Proof-Request-1.png b/demo/collateral/P-1-Faber-Proof-Request-1.png index fd7da184402e5d6e7d357f465647e5b9bb011964..0d8efc511381055d507c6c55fb2826937b63e219 100644 GIT binary patch literal 40088 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�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 p^AehbC3_0c&Fn;S$tHk04hyD-|%uL5!fALjp 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 z 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

~Mz5uVWP9mbn~-}C9+U5hzaRYU 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 diff --git a/demo/collateral/C-4-Faber-Credential-Offer-2.png b/demo/collateral/C-4-Faber-Credential-Offer-2.png index a9c5d675be015244557b639f1a213b11013cda7e..4a257a80e93a1e13e4a3d7f9a22b0b1eb45573d9 100644 GIT binary patch literal 25525 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 diff --git a/demo/collateral/C-5-Alice-Credential-Offer-1.png b/demo/collateral/C-5-Alice-Credential-Offer-1.png index 58134277e656111bc0dc8870abec56bdeedccfab..1265849a2300518af1ea2589084fbd28fd23b309 100644 GIT binary patch literal 40361 zcmafbc|4Tw_qS3_2yH@PlB@~Y_X%ZRB80L<)+~{oLAI2TeP6Qgiez7teaXHr*|KW} zV;DTwJwD%GpYQMWyq@QeUYTp|`&!O*uJbrw(=3AzXG|rOBnSvThmhb5&w|fHwzAsx1O#MF(7#hH zHrd7m1c~Bu4o+cht#`lnKjwef5S=V}olEdO1n zkk9kmvzEBXy?xubj`+Bp?%kcEmg1vQ)l%|1wMJS=#-?lu_23GKlY;+WzN*T2^=OGjp zHy_vIUQT#Fw0JYKi+rrc@3edDP<7sSVriwg2}Dwo{DK-!amS_b2Uc{+{K873v8JML zEEPX19E^oq$4)LF-pBSdi$|ogV#ZKDtqMZeo#I58BW8T)a^vise7+?e+JT3{CU&2; ze!#A;oh3T3=0Lc|bdoy{EgHQTl{<%RIIM{fK@m>DXk-j?9WhjX(H`%|e>{kfE*<_u zc1=NTcw$pbAIUN(i!NtXsNTDmIiSM#)pv|2DpuOC$kga(XKLybIf3cM-Il8UgRI;1 z2cx0Xqf?4iX~9M0S^KiN{BE)Su}Z1S^KFe`@Y3PJa@1P-SGRAOA9CC?)WoREkMhIs zI(x3AYtY8lSbApqcU2A~tR;TlWw7Vg;FlHIA@GQKyY8b%$siUGyP(Uo!TkdkhDXq_mLhp4*e+ zP-U#z7}MpYo{GYX#w-r)Pvd;%$TO{jjm2XTpxml}d))6Z& znbre@5Hp7r>Fmo1Di{%+D@E9K1X1+GO_%;xp6+Mae%z@#s(n{VaVU ztw_2m=_Z&Tte7pdbJTITDARqRF$i_xRgyzgP3FV0SoVOb-(-Kp^QVYb@>t*`raJ=^ zZ(Z$Y=I?zdy%@e7>Eoqgwp@|oWbqtlp?L0b=5i>ujZ0_v^}-LThtikXQ1|3%^Uv(A z%)cg9qBH;1>^~)T){9Yg#L3>lkv|%~RVz`Y|21Ibz;WV~vuCYm5-vrEIGr}g)dn*= z;pVsDR4VSR{ec+WP?*D&TSTlRmL)0avttP@pit<4FF+FA63}(nf9Ovh*D#BgN+^-* z(Cfc7-g$G$Tk@ezCM?fMZ#nCOhP?&%Ks+IHhV;4M$h5FCp_u)r4+!s|9=yi$3jUBG1l00`z zLZ8)LrE!^Cly|#*6&b%1TgYH+Vo#Sc-dFU#2)>oMAe__G;*c=}SEVw3-d&{!O|MxDEF7hegt`DAG;KhHd@RP79t&XX9e z8uU9}^?s9dQ}#7xpF)-1%>Lw$nH6t@*D*P2vZP82H8nTF`LF7vjZ%z}-E$j0$G^Im zy)677C$lq%moK1IiDKo^vOF18#%(3hCszof=nbd42C*|oJ}d5@+O4S5GR41_?iAF# zcXG4O>e`x3S?0CYtTCl$=c0(3ixZc=N;|*(_L^1Zsju?fkGm!gmYY1na&mvFxo(mu ziMAr#p;wYxS#{M3Yp?v@==>Tj6-uT8a0VE6g6qJ- z6?P9EQwIAAGxjX?5>z|Hl?)PY-sBuVXc+m~De#MN>pD1Gi&SVr=y`Tv^KZ<{g_g?La_5*>hC=r$78J1)3T8GKT#iFovcR{lSJK3bt@!-k% z?ZQ^R0$sN}T6%++Q4!;%w&fS5p4Z4Sd9;FjJp=?ODTNWTbM5v58yD1Lc8N=hn|Xw! z9Xjno>a|T6TezA;0>_MUB*%=$nFqFp(>dmcE0}qdBA=(eRQy!Xv1;$CCQmQaQktYw z4lfyW{KSn6Fpi^hQa50QZESG8G#%I|9MNgq-X3~Hd8Mio9c;q6?y}H>VxOedGA$+m zQn%*l!g*ofQ+HTIhM050*rOk$w(tm*E2F)ua3+_vC9_Nn`>V&k!QRCR)oQS4lB_%= zSqpHF`Tb{D-L`9)gg~*N?}6Y;t0n*E2AVd?Djm%JNtHVN53KsQ+Uhg(I=y+A2%8pp zySf^GT^!^O8~ocr#xbdP#{t+f|7q&TY) zib&Ni{m1?LLz$!AE}q2ZI?| z0vmfc{c-L(H_1b4{sI<#ORb;B51tdViutZcgf6+&)1&wpW*Zc8uZNp+502OaY+s<;p>#d z&C1Yqf#;`#^lEJFqv-4k@lQkATqKs}#);_n7DsW^j*|mZNz^xFnW#3}ZJW%DL`zlm z(XL^gI(MXcemMNOh;Fa_+G?>HzNwfd+ONb_l@_QyESu8RaO&spL^BGm$Zy0BO{Lau zQ{RXBV<<8^+oP7J?uv~&C_Pd3porbi`sn+PYkkzlg|SI5ae`DTyn(|g#NlrtV^;E*NMU9r_3M__I zWr}v5zRyR{Hp=HIyJXs@O@7RAPyg6UbhUGes0x`S`j~RX-+XenI&jj4;xq$TghGGK zQ`fT9xXc9plIi_qMIzFJz5HKhyq29cQokdUIb!)WkK-KDB>Np+iB&#)>~wG9l5p&z zF+mYII6-l%u*vd1Tz850F!LR*q_)&m-c=p-bWU|8=S_{tukEczqjaY`C8alyeOKay z`;>Ci&dnAHiL*KI5q^+A8#sYy$)rEg+hP1I?BVfY|La)A%i%vP;o^@OC;|kR9}nG)-8DXMMn97Q zHo}Ahanrf%XJ~(ze?>&Lq~XnU$>E$8wDOH+em6S}StYwo2mQ%srDTpKh6zK7TGzCq zAH0FF(ND$cU@PsO_N&YB4Y!^8IjV=tY`*Tw7P}B?x+?Tq_mO`H>rN%xCCY@GW9rwrF?-#K(@lP~h2ZbI4gr$ogOi4q z<0Bb!QqbVV2hCv#=6TfO?0E}%WGD~}(Mk?|x5EG+eSJYA9{#=MiLKKe&{ljMg07lM zVJs{WJ|n>nnhYF(57vZj@I3T9lF+$w^6DVu4YaIUwv!*R7X)UlB#wh83A9dK-ko%> ztQEo@Adc2xSkgu^zc%A{Ql8{X9(yy%>XcmWE-1R903LnHRM4+3Kp^i_Y504 zgMz>nKP(!%xI3SPIMmR&5&@rCl>zPbm4NH`qkVc1xSCS3nL}BqtsUP+=$=djK4}Sn zS-kGy1b_b1%ktv&6JWLjtHU}^dL%F3-}(^B9M3!&_Z-d#Fx%@JWW(S^yNPg7E9E`! z^GG2hhn_iQ)#F!2;>NR)LS`Gr#vj9J<2SRbqqn%bY|L{G#xz{O2%J9PMOYj8o*yxd zYSLyWvW2R`9$EbUVU_Sa7gi#D)siy}%*tRBlH#=)u|kvu-(YX zMn}@f&G_;5cxC?Ti2Fz|k2?~8e~#yML{}m{2a3@*Hhal<^TUiX->XT>8LQLzI32ZJ zjghP(M$-s}GnI;8xs-_YKIQjRL4f$jTB!86o=a6lhUlTNom~p*@=pw4+cPY9Ylxy) zfJujvY^z#a{Z?rwPSV5N!hjXJOd>=P(?gVWHn?3|PDeiMQXvhm@auN+xTo!_WfqgW zmw)a+T?j&5m<(c1SuJYid9K9OIU{?M+hMihFZrFab`rf3Q9g?sI4?~_&P%%bU=hJr zfF%nSKyVe!V@NyNUV9v-Sa)a5>w`w`@cWCt5xEsL!GlmDzY%6?k)_lhO=pGFZ*yD6LD3#US&`vcr)S1K3xue$}- z2DFnuf2yhxVd_yT)xPfQkMgj8>eAnq8SS6+jfi+A5a^ooSBQPsyZlibCa;g1aX&o_ zj?K&YE0SosY~mlnuZ*v zVIdtEFvbWESgI{@t6v2nx9V~KURZLHjUH-lsTJ*$_>%mxzqv%yJrQvD>XX0@fYZXM zUn{%nVbI))lcdv8OC_`UQkeJWc@3GF@WvS2z!>X*&gxp8^v^qV_Jj*ZqG}m9+FUKt zgk!(6APndW1z0^i%=8LhR&w+$z~o&RzxQ1MU5}k~o$QIMz`!GH^P0xZ#3UJ6%e&9& z1ZT3|P1(74iB-p`ku?-eY-Puyq&m9xHZD){l66~xfwI-7>f5SOg~(UB>B~=+wY9RD zfl$8Q1a^XC0Y(#IKmT4;J|OR>Yf9~W(x=)Ff9?bfPVn8OfBQ~xSpnrEA%jh*O_+%1 zPWI`0_`_B=-9f#RD|gYYADY%3U=-si+sIkM7Fr|H;>c{$cIr2<5?C3j=W@vU!TGv# za`zrD+V?KN(hWB&WtXz=cV7M;TC)re=}aVK5lNO{S6>hA_|%4eQ-5$_OU{<<=jt`h z-TSAjBzX{2PPf1DMXWW12{j~)#RlS1b}!Sn-+1H{b}eYBTlE?&kv7;+^-)yWS!QcQ_|C(0D zW4Us>kVHeDK}^b}pAv{=5E4trJZxs?UTrDV{T_6x=60^5eD==>b1eKq#L(-dHZ%jP zsdW!Bz@Kn4@iw&|hakPuVt`sIYsInHtQ&tJL8+D879Y?mwg9>sh;0zBtFwLJ>$aDS zrK|C1h1k$Fpyypj$944~r>z|i{AWuTdhV6c2qS=7_?xlB<#(LTU}^F<8bL$4jf^Uy z0rq@W^7sBPc3B_MujW)1CyylDp}EW`FqKUr)9xk`7iSl|=o_;cldRbl+m;f$kB>${9^J~N!o87^RHUPnU z&D5@LE0UKit{Jy>I;y`mq5LX*AQET)R;iH7mX=hhiUGtL!TA%PUOPDQX`qXrMnC>_ z25y+aH8`JE@8OD26P}3iI}<6;6`Ps%C5O1_)!nFp0OlfjCNy_m|6_Fdk4V!Vc2lzV z^aG3(ol_#58jN2Naym9&waqSkzVF&i&DYDLR(U5iPWE~8jZ~H(_090pP7hET)%2Z` z60CJ843=Xt?XYu&B`w3xwZeDQxoc>tnhIYk<-5||vnza7ealRISEGZ5CO-<%7=|b~=%@wWa?GVk`vUc+JKP*NL-}l-nvw0hQ6;;rQ+2s9cQ%Zc< zTyXn5;@kbv@C%9zv_T(pV=-ZxoZ%K~=*yLBveYxlYVMIQ(8kx~eKcKcWPHosSSWv2 z=$~qRO?f@dM1&eg8{4G1`ASIOmOJfosuh$qJezE1R~9ojMenA8zLjfe8hP z>cf&QmFQXg;%(x49P-d5FEdamLdmeGx{iVIokf|4`GQO#gZq@xSlkceEhl4gSiw@P zHg0C4_4Qi~K_2RITLZs08A7_SdJD*+yg>Qb-b~RIW5>?lTx&A?*^=lk*t%+BC>ne_ zcH#UBhpQpaHBxh>6|6Tj+P+7{R!xa236K}7R;)f8sL2XGSCiM?ra*spCgV84#8a@0 zm^5~+hr>BW%azUhp==QK=gh13UT}B1X!TCD4)|rFrh+3-8H@K_njA7rw3zm}Emx-O z4RyswKZ;om&_!=!oYF0I2IW&n4_X}v-{hjr&k*DRoQ;oehcMW{cF}tkHuC{87e~o9 z&k+0R%y+Rt)C60fzITw9I}>;T@#2uTPhvBbC-#!DcJl(TYxy+bq+1tp*dF5TqYzMq ziDyX+CypuPe-Bfdx^HTgvJXF);0zXOOn#JO$DNF&^X`=w1Yf zGi~voU~Y8vu@~Xf3l7rA-U6BI+YcvVe_IZ8Za!D&DCT>=42Ua3z<1;qQjf{7E36>cxxbj~7A){{g{+9?-Nf#S&&kD?4YWLbeyF z^mV}27vp3970;RuB3DaR%Ckkt?=$HI;bGL-5?ZI5OW-Py7ho4a=;uxd1QJ?LjU?o7 z6XeqZMGA$#eCT|J;M*Qpt>87tHamNKUBY=Kb4{%68a5Hp1=yS(xl=U{>zNJR`^{j@ z1E6&Vu(WuU;o*ZG^1WF%vH&;1S!62CfYQ{?Wpbv?4H!+zu;tTmerJme{+kOdn_!2S>{eA;t=55U5uf%W1^ec5So zMCkeT^|vk)wiUIa7ne~!wJt2~?jsY3NgF!4j*PdH4LcAWB!SK_Ip;^Xt#6@93pK+_ zdn*2(9ix|I%>CU!xh!-rj#oqDDaM?iEx{b^3rk$iFE>w`^qWx8zKrG!pfceBeRzEU zdgQr>TRw~Op?b7n;Z9tmITEbOGpH!>$Fg$47CrEN`P|_9+{Mkev)?6$hq*PB(p<3m z1Up)7yb{os8`waYriN`WjOnHezSezv$P9AOY9M|K7cZbkWcMu3H8OA9=_3DimZ%yI zTuQGSKuPrGu~7PwfaWUrfOK;6!9kz2Ak*Vsi|_eFnZ)(h4-OO!C>xC~E&4>y2)){; zZu(PQpG<1oIz;n+RZm?7yf03-fJt0Eao=My=v5Hb= z)3k^7BurSOxx-fW#ka=D!8H~gX7e#!T+kiFym{L|m&@dz0ki&eQE|2!lE~+Tl8G>T&&nd4PH6`8`mDn=fD@)}Q%^68kO zsu-{MC7yILnPfqqI;+SN6DKRBvMW_p+-}^a$7@usQA;oZ%B8$k@|85U9xwRj<{aK~sb^P|#o$@zhid1}r9-Fx)pJgfJH=p&1 z-0p2xKZw+lxJnrr%oZE#9quNUbNhmRZ+iCkk9-%NhabO)ZT=);p}Znyy+N0w!Tzmw zJSXx=TL4aeeu|O|)?ktT#sWE{OvV)9zoW>3m59i6m@Aybo_f;l%HN%w$nWF*c|=RJax%1y<2zV zmpt-KoEwJB@k^9Gm7I0L&~U6(%&=9YqM}$uaUy*tNU5?ZVU+Jo;*9P5{8e3OSP#Rs z`?o2=nZt-w(o>AL@5^^F6m&*b7E0`NuYM{SS6nEScloqDX~7|q^Ky}4WCJqzF1vQMs=CYL4*KkqhLHa7y@~MQ}(aSyo-BR%*p^E~; zL4&AvfePOYqAaPKlSmr zB~jESzv~?|(J4BT)8ADwn&x2f$bFTCdbQa!+xz&=qrvSCMZVGGm7C8M6)yLwjP+d_ zO^VB_{h{8ZY92$Q;SiBy#hR{p*YU8@$uM6{=bHxi=Yy{yM>UG}6HBz*I>WpRrLl)Y z#{;s(iJi!J2NG@dz71|G_SmvTnT<+1-7LWdOC}!S?4g?YE~#1Z+QU20+71TiVe^m0 zafwN&W9RKou7r*z_ZG_JD;Ay3PXbrfN4orpw7d(>h28i;=hBlP@4#%KyseCAX3bt5 z*jYHX*tt{@o)a;fJmA{Tl{j#eBB5X;l zZtOR>*J=b)ual)QIB2Eoug>krnrIi@wGh2H6DQ&M7@J${f1_+^Rnk1eHDO$&Rak25 z(W#E8x1;H5azEZ53gv_a=49Qo%~W*MSyK(E!bj1E-87|#>E-!en55^JyS;dt=kMF0{*c83NDhJWZ9U8HCW+j&21 z-IU|g?H*LCsE9W&M?Lyr{v~YXeS}U%UzG+=?`~my9*Qe`OtLY-kR$dLLPg<^ng-qN z)kST41*V<&h0=F}nor`t=*jedF<&32=JR{K+3-#o+cs;El@q6m{k4m{#dmGTD8k|5 z_ltM?Ung2nk$u#C!8D@bNNQzLm`M_uJJ#2ilbf%0tHASqM`xF*8)uwpPqO#~C2Wi> zR&b~E#aLCU>f=M50!pGBCo7X>7V-pcdoBAPZMjZHo}BH`7G+YUBO2x1lEVr1Z(lGO z(Nuj=)aW;(BTH%!E_*KDb3fEzet{OCY5v@i50_D&;?DgYOB+ozd9|2hGC`3u@y}QC zw9kLPO=Cj90~dqYt74^LMWci?BOg5ku}b6y07K&R!G_P z@W%=kjuIphIS_A*Rx!DBJ$_3LAMNAD`e1|m$<}CR3SRNri%awNG!se!*JjQgA5$TS zf+99qmhPUA@1!MyhxrQW6Q>bkAEEHhOV*^5*yMijeZ9gzURp30V&)*1zqUs!_FF7_ z1tz_V{MzKVFXKuaB%QoOnZV7;SI5+*V*#Nl-T*^W*)_Yj- zipASb@C*TTxLr|%JML*$S1#+JR+%arA5D42+)4IarRt%tJ1C6qCN%aKP|d#S$G8%Z zclC4eGd8LP*t5|qdmo{g{6!!Pp>CYPb+Tlu(!zVhLJ0~w^{Z@j0+CX$qYYG6?-8sD zr|q0?UOO80^QM8kV=q6*JE{uF1HtgR9XsN}?!ANaN>qLh$|>e-t6lCUMItPtUt5=Hnz{{jW!l zw_jOdCH7kCf_puJc!|G(!QMT5hQTN^rUjo4C-U_=h64XuZ%cyAv>)IoOtjz5YJ z!v`f6@C0;l!V~;S;6)Fq+n+;-AP{6j1Yz0~Dq|Z80RzK}ib5e765wNz;~fg~Fu%Rf zdHcGSi=ffj5YjWKJRo$dI{rLp5tM{l#6iP}o0$Qjkpt2nck@rFORWvQtD^H@)3=WO zWSt`~hCzb61Dxp_6Uo{2c>fss6d&@$x%QsV0Tf}*hg?l@-MK?qYCILtd1Na_a>;Q_t#9hV` zwg@lb?0y_hq05bAT0SuY!B|0_`rP0`TQsMBI-j#13k`~dLXgHfDg7nq+Q`q(zoBf% zQ)s~z)q>c7x}%3WK1%e8(R(&T6m7PAp_6HO|8CD?g`BIp|o^DP8;n_vi{Jd~T$^!QJjP-nO!!heNDP#3VLMy|}}_)=D_ zZoP1W0k-WA9(rO54~4IhBJ({<)|ZGYG@Qk`5T@m!iLP*d@^4pGOqp6-#oc^|dK6Jo zk>OM|s{#BB9&!dU!>0)9SD`}4Jo|arfluQF#D0&V$vBtLc>_AfwMlE``1qDAB}zW0 z-hL8?&y!U&+#s5-3j^Fxj}n}xtsNhm<6VTj&IuWvB0MzF5Yr_b6Q9s)gKq)h1!+Qj5diP{Wx4-%vsCFgZ{Lp~8R*Ahx*lIgSas2X#n#*MhQGbXvx`W+CA5~4? zL84~s0ew6oG@Sr8gHH`Dr7gE5kRm6#ZZu?0h4&v1yxWT4jN9xbQ96L zolF6J9D<^Id$smw>qal)fd`+B-oa9%d?a0&Z-OU^*&zE;dms6zsYp1<Pw45LtQ&tMzdbq0s(%HbeFAj`hu{^TV@~z0jw`REZUM6jt&wy?MIC47 z`Az^b)A-EJ7W%`qJNiQ@at`0!NlZ&vLLx{Lq9kq&Z@Z9gWtgoion!09?rmqO7)%5>|xV#+qXfVh(8tW<+5G)>}U6YT%*UH zhFrGgr5uiE zqiX!63UV_!^gl5l%E!|eTIL5QkmZd1vH-%n0C^%{5?sPb3l2JMAI0%F)n=$~rorcc zwG%Unx~TJTKREmQQfTh_?|mrGHxDbKrR_lp7swir96KeG1t=(g#EK$UL$ynD+bm#Z z{U!1@_k-mFo9N}Jb5kgIW`)at04L@>Bu}3uO0xIwOfAHwgPrzmIsF_3gXs0y0-kO$ zjj|$UlrtEHd~d!`8!r7mMfp1?{)vtQEtdAv3xA9LGX)Q%Kqm^2mg5L$_`*2KXHW9$ zHV}QW^}Ho$acv&{jIyIVE$D;wFTTA3O^Wavu|qbKL!x%dq57h$7*3fQsDU!>WN}jbtbs=3&R{PzDid4-o5+jqx90#zT?;(QyeR|>9jR=NO4UPfv z^md7t-MZy=7lU7d44v&FTuDS;SQo&tNpPAl_K#$C5!G$C2N zN2OHy6%0+PNZRE!-{-0;Z`dr~$4yDOrk?gx_d0ktRbCZBq`kGvpb;!y^q3l$G6dM) znZx#grB_XcL8s$`w}sB|f3|m!hoP+f+?1AoI!9gA*mw5C4WT0ra-d>$LQ^G{S z5$H(s*k1U{Su5K_MY77b-MrF7E2jw^QmRM;&J z@K$iJg8j-HG0p{hKl+sxNj){ujwjt3T~titaZ+VHRn-6 z8rLXfv|ovdJQ!qmb!>aU-ctim@+o9=A^!;ID87bbaUTbqFz~4uDo<*_Q;L&%;>FV^ zRZNypNyAgoX^1Q2(*f-V>8rmA4;1{3C{q^vGlWhjZb{u2>AEOr0K9`SvoG=AP`S=n z2xr+E1t*Ij528Fzah|E(`VK+SP+7AUTIub|{wy()A9NssC--kT1&O7iLt)b{zmF%JD_ z{~wnDUz_EAaOtlou#@Y|Ct`v!FpHREaRvm-e*+?lu$dE+eYp0G!YH1)!r$q{84Qw|9LUv{!?15J#M8>-qQ9c(o zAmGFUD#$?m?es>qzIH>h-P8;mTJ;cA$<|8FwuQV6KH-J+mpCn+`=`1M+P>9}JO5e> z3inT`IJD{tQG^V#SRjd?8F&9oUBat6jOfP5PepV~SEmte3B_fYJ=l0Js5qUY8+hg9 z!~rBh=e5fr(&|y$$3HV2i(UJ zrmU26=35R9w(`Or4d0f26+Qji*7f-POVWGs_D`2t61I72k}7?pQEyflA>M;8F#_fO zgjYV9T==xOdL1ni#}a`8V8;7vwaHwTiRH^8kApIw9d8+k@}IjcDo`ri?#k`q=l4Hv zKhu473n6%0SS#0|`y5K!nI-+QGDCXsJZw-%?Cy9o64vKttfrFLK|q!Xm?HrkvI5v2 zghq?7(!Rv}5R}hRSd%!gC<;A}VzyimbKAq4AQ@pU6Ro?i1aKmVt8v&qzT#y#3h%Z`nF9v$l-W?4-CYlw4y^2+B3yr0{9EI9v zB6+M*g87R}d&iC9sUuB)0*!jg$TycUjO@lOQy&&fIod_17R++#l;*Q(?mSX@x2iNe z7G++=WbEHaE$ymPgJ_}x9O)7iv0CSw@+?N|k39ZFtJ;os3oy$`Q@8k6j%^)LA#jl24p* zd>pF;10ouG{l{T{%fz;hDLIO))A=Cn96Fh*JLb^M{Luenz_bZn0)#KYkXz5u-L2By z&5^P5bZPaPJ^@6S^dJa-mXw@a?dHi;FfEERk-|?6U+RlH`tFI@Ji=3~)ojZq>IQuVtc1#%xHx4==ue4!>U{VHJy1VBsluyt{ zxGy_Dj$G^!3S{eo3N*9dv5>bPgvaYwH^VcB>paZxX#M~Qqk$;x44_tLZ3Z^ zAfUz9Vq=|sa5sJMbqM$nUb6L{W50i46BhU93d-lCWEvk4oQDzrHz|`qKJvyubPrE< z-762BQCN&;=-+L3udWcoqVd~paCr@5v-qGFJX z-v>b10fmm5&fC#gZo-vSY76MngL*W6JhTwEQr_gxQb)}l{)eNPwcETFtT}#I<{#5l zQSkbz@&beAriRkJ70CBvjV#%EJLvxLAy`ux2+rSlh7jbUzxJa@G^WV1bJOe-LED{Y z$+tF!1NtvIvFfcn5_8ho>?FS+>uen(!tM5iPi|@Z6iK&pm_sSu^XgIe)c@&d9tM*R zxc{|#)GI-%qpkA0P7VWB!Xp#;<;9v)$}Nwd{TqqMuV|m$>gktAuJ@1tAU9}dfdb_t z^?VV=_IQP#wQslgpW9r;g24_-aSHeZ{CN}lnT!R{dd zg|9DrM3?qPIOD7v*%V2U0FdH&2ti$tNIP_%4KNb#XT9#49+yT`T}w)KmLtT+9!Vf? zMi7J_1_kP({%Y8>gv5WB8F*1wc)mwbX}9m(@n5kW`L13wn(x#lL+^Mr zfG}Y5bn^6+@e7HsY5_4phJ{rDriB1H?OEJ<`=`sR4166Kry<+6l@FckO~ie`(^+OR zMmn?RuAa8cJ@aO39(KEglV+}y+?B<|Ug!Qjq|`l;C77Q)R__Yia-D7t4KRWDT9T8u zWl`~AXkw{Ufkdfc0UBOaO`A-I;P#5Ucil+7soc;MWIV-)D2^0B6V5#elOlZ;4$kr# z1z1Hl!X1olKqp|g@C?>LGZ0@a{5f{0qhc>95G!$OL4aZ5Mps~tzEM>1@G$3Tz&s#& z1nmAtI8EFMkU6L6r}&O+CA-lI#tT{u0T??@Um_tGe`b`;;jD#~C~#+0F?+i0`pX~? zSlDVYu)TO7=~4kfLxu92MGUUBsYUK}_Z}Q-wJH!N*d^%><{vk6-FTiXgy4!a{gS(X z^nKe>Z`i~-4GP^s;m&GL4B1~Fe|8l%?e24ucfixP5)Axbm3doek`prT0MQ1|Y3h?V zt-(ZQF?aqIUc?HaR;Zz$rK}*gMUPQy~!z-@w2G`OwV*YYvc?xw_ZokMA=d zit$-Mx%*mpqR?<)v*NTE+cqi<~K0< zAe`m>1H=fkF6}sxKnRlt#lTnXMW?m6l5OV6FV5k)MH(dkJT%EXEC`EC*LwRNVrao9 zRb=2Vf>nqoT1{{JQ{~UOa!t-r#%C3H~$waf=_vb;8MK)LJuT3(7(YBWJesl zmu^6k!Ut)({!^L>$-=sb^S`+5!MwSBBl&}^4r+{B&s;F=x>S$PDA2}wD5NP6O$qqU zxn@~p>gkr&uJDL;KU$HofFxK6aJRf5#s?jB25E8Y+R2Ik4#05XlT9#5%AI-bAUq$b|-XT_dE-mF6dUv-?;5>%SQ**Z%vZze|vND|en$$$d>?L%YC2tuMLEEZ0q z1}PMDH5vG-5D8-2_zzN$M9G(G9xaFF3ns{eXUZT&Q4tshhfpr?t3}P3xr<&>sj={_ z#W2q$blagL^LCWHBU|yK3|sBfPPZXh;T^;V?~l&Y`AcXNxCp~qiuT!eJz5Jq*u{Eh zgt1*v2&>l0urp!;a%+MRdwqujML6T5c8%hQ^~nfZCuj8(7h3%!l9JDf@tj^hVa=`V)>sX4#yZr*3? zMNTBK@+>G<;~_-Miim*LY$4MLrT(bZIEFHqDMjADn1u5(-t{v|z&6~D0OeiDJOnbs z;8{H=DGO*s94>Pn)o%QzyR84L*SL zBw+Cs1Lc%MdXI$1E&7|=COQH|Qfs7%G`&ML6A!en;RJwe^q?FwVBnN9{{*wDlgk0= zkoH~1r4-5eDSSea9qVU@`}j+1K=X#?Vh!R#G)Y_2XJ~(-4+B?>0%>-P=sEXYkxxsG zD4W*4`a;AagZ~EJA{0@AH~ulUkRLpuH+OPE@w9b$_u5}$gFRg8IWfdgaJtL$=n$X? z81y9KdW<_j{41T|xkprxxS+<`JcD!J-`hce|-n{`W{+HbzqQ#m`4IaFrfS!>Ib^a_=GaLm7Ew) zzw6l`Js&1#!xJ66!~1ORpqm&UIx|QF^8gX+Gx);H`gf2n?fyIZ^iL%wL`_bJ5@e78 z9DsrTiN~$5pnY1pzA?Lt(CfX1qH%(d0gah1!U1O=Zx8WSsRieLLiy_P-FeoPStkpyz^H=xc1xxmDMdzb8vdwr(>^J9({FNK+A zNG@xK0pW_6cDjC<0I1VqJVve{q;~)*bsDBTcorBG3 z+FOW|WYo-AXpaoA5>Cer{fqNYZ$s0mrw4ueZz7yyaWl~e{WdDf@GWv^kMLJ4frI+W z3s>)6`?2n`FJ4FLPeF58`335cz5l{)y&=@gbdmc>y$Hd{P`m%!6NP@j;iT>uFZiZu z)BRP%Ne+Do`nd$0N2cdqi^n1im*msMfM_fZxp5gT!0t|>1+RVerP8U7eftlM3F;2h zt8vJlia}1fXYz8-@m^1#EBw*S{4ksS%tTXv5U6!Y*GN7UfQ~+RTdt8Q#^S3bGWDsUnnmhm$=7@Kajo0bzW)b>qDUmd@?ffD?&e#;cIp~(6Nnye4!)cTyotS`k3ULa6M&^R$lj!!bst--^R#CGSBW# zI~>-pO@?1#_b(E@DFj|AMnHbqCJ!xc-j|$Qy?B3XpiGdRDuGguOMIvaz5=;hGVsi7U&uhpr8G*cm zy?yY5Ek0DP3zZ(i=4EpnEyL+^S_zbkyA*6`!MeD$m1YSN6 zAlDtw>=oe+o&hnKg&?9H1F|dxUU;{33AR^@US$-$|9R#WQ8BGD!bmWQaRPL3zd^L3-h8#@mqY?fHd&>Nai~CqM!&^Jq zMQp@0;RcbdBK|i*sN{MV47+{#9AtS@HO+G)67S6QmnBuc(cWVlu|8jBnX!Dk^MUUY zl(OhRzh`hqraGC4kiZ2HQ`33q;jkLb5`@Ccy(*O=-CXj9zUrU}GePYyA6>tJ@PJj{ zT> z4_|K`7FFBz{o{p-Gy+P4NP{#8Lygigbf@G1L#ac9Akxy!4Bg!wg8|Y#bPOsbEiDN6 z?(w>x=e^(KcO1Vz8D{U<=ef_l&b7Ylv({F+-pGY6N^-666d=;7#tbABDYw^QfOQjG7}l-&0mF ziAq1I{g@b!P%p!L$`Eg)-O5n-EW5IFiH*XdW5K{;%XsJ@tTizwcLRe8&Z=CeQcR>P zIrV_jZFrcnQRr&&Ion47{jBO$(I~X47#LxeXQjuer25BpM&!+xwMg5~6kMD%((yXS z$}CBj>KTqlYq)MEVWGJEi0qbcNFMrDT&#b0y1qV;6DI?{hx?>}8qW{#D8iLTB^KLc z<3j|xz0H1KpzzA&JPTf;K>7`A`#JhYGO^NiCKfcgzRnydOrNZhUEH9N#?w=Xq%C!> zP7?D#_uH(QRfS)L%mZ{0ZJXd6i%{r;yf#A z4m#Dh-OhP}AN=#zs*CoDBhmCorGIT{0E}M zM7rr8ef1B+dP&!aIMLHPxIrN&NzLx^%_SSDTj}P4&Z#-||^W?w*+5A#K zG3j@4@7ZDk>C!jsW(<%s0hcN!OgzlsT&s=ll`XD6V#;wbbz?vM+gGE;@I|3OV>=IS z_t6C$9?KI^Qn6_1qij%$v&K~BkF0?Al5eYZXVU_|PAjcx6zhZq>g=d@ms*%QNEknV zU7uawcl0gt?i3@JqT8S^TzN1fsqc{o{Sy?0bARpm_YjzPbnH}6WI$EiEDOR8)m(b` z?5)$?YxVVt&$O;{*)@bkDci4H4<79hIm+F6V)_`Gq{>Faf3{hu%3hq^`w<~D?^vfK zy$?ND_y{#WFs3mN=bTPPBor6#2_iwBuRpGqHtAoEYqqKIC%I^fp886vg;vK)2=(?K zb&e3=xynl_j$xrDF~eDo7hV1dGkpZa%^)bz0duC<)VFd-^1T@2((WkkO<38|(ul|@ zraq#w@bYnyLD`AxG*KgJXQNzdxUD%}U^8D0x`dw8>C{WX8))~LSxQv7hJt#7Drv-d z-_K^q>0mOY?v`;C`jHyA4{DO&Nvcmr4^p+9Qt=cf7_mfx5~p`b|jr-JE>u5+64h=qW4VMPrC#klV8`l(I6) zNmxzE=W8;e8!4<|fTH{Dr`@I3z%V(g$$a2ITQGi9vYZej1bcuh#_BNL;ZB7$WhkI! z$i-$((doozo79c>;jS|V!hqcLA9(wgIYac1{vvkpCKF?JOcJ;RZ!X$;=OZjY;9q3hpVcn+m-@N`Qs>v)fZmTx5M!F%Xp;haJ z^HR$?(-#wkhYdt_2C%#cjsR9A{x5I;_&+GtztIr%!8wP<{r!L5U^=i&*V|Pr@Etch ztCY_4^Nl{;$~j%hF|Nnz^t0kLD>$EEqcw7|Ya6*e1F~3CwEmN2t%?jF;_{ZmH+vtU zeB$e4Xq;}uU@@AMjvkC?cEamARwN7GNsh`TBtC9 zmSMKFo@I&{>BVnCed0PpsSGuEOWHG&c5-)Cb_64w`A`zgboo2BHP%H#EtMVf^)Z^+g!m{jf>&dloM?Ar z%FoqWl)q{NcIFIzc}ofYd^!`Mme=RGR1y1lnyg`1E2xQ==^PCkZ|`Qtc}s=GuPfk# zq+J(HjWPzG>oQ2zUw@YkFMky<&ggmWXI5ad^NY208&$=nr?lO!auZ3gD4_K`YliC| zrbGQm0`8^))$|Dqn4XS1gWwY-m-Vf{(yVIWh`{6?mD4G`ZmQJ76g9IxhEJ-vyYs&VOqez~DAOil4kRLICuoHd7~w zpP5tK)GB7rMq;{#kh@pMBS$jJjG72^RK>|jo`Yd_qu0E?;9MChtgV?>-Mr;%ZK7E#o^#|U?au#`S}4& zu@8weeSrAT^}u==#vOg?fz=_f;*EFF2CQ z)LKf`qA&ETJExpdYTpr`8~rnI+aXI;HmZBzLz@`x4sxg$j$1HM`-vxfi^4!Auo0(Ge+S^?A6qzhJ)dPv)RwcA6 zW3S<01JIMrQ#~W=uB!^XfF0eYA!bM(y|F>&w5WFAI)?Wy#4`*RhXk8B-8`6$X9|%^ z5hJ;ULqfXA2>_xW39)F&e8)MDPoTBTX2sYTP*)4-oO}z&z@6C6HU7VDmKRoPuvkf_ z4=@H$;D^+|5iAZhHi-F`A;5B>4Y8Y4e+^bB@Jng-n}7+D`l9sl!nm?6Bm0u0hJMU? zFC_89voYqwuAwC}M(*xztP+6r?}^x<16(s!_m?Pi`Lme3Pw9U~T`b6uw_fuA zC>BoV^S{&gQt{$b-J6^NDz9mZI4drG67HPOLnBNF8V5O(YL=?X#eMLL#?H+jSvcE^zJq#K1+&ZPCzL_{cbPKM0!4am+wp;a{t5gvs$IHM?bBKwREU)) zu>#ZKZ$h3?(n;K)#{S4wFu3&3m)rxrdu*4h0c~maH|&LA@V#=^Yf3=9{TmOCTpkCn zh7|ocxB|h*y`pt9Tw*O|4A`JF3zhy-8??+h|#(zd)R}}nREBk1@rjB1i zC9((n8P6sr9tySSu*j=-f!xoUQre1-xn}GwCHqKB+Kz&Mm6Muezj;P?CTMQ~8eE(8 zuEg!bGA#B?zb--_1b#TQG*YT#IF-so;7Q&-C@A2yb)5)Ne2$dDs56zRc+>L#KAd_} zn`Pt06uZne{Q51Q1>Jw0rDBluC?jfcHE<$Z zHkq8)y=><)3oXVxeTbsPVRIQ7kRAr+Iypq-ax7>*6V3qY>)&=j9F-T8HDI_)>H6#f zkd5wB%muwYn;ID##9uAGa8-UILofkelpC#l1e4yK3seMd{R?T-i%kh zSn4QBv|`uw;Y#!3CN>hFH>r@4yWEmabd25jLH*B1EP(|A4_WL3igt zsE3TeL|0#j7z5Xjxt>14hWPUV|GE5}@4n)EJ+aDAkIw#-&HlkBeL}*N?CK8E^h%KR z2bJCOp=}%N3dOEMCUIJkZqXu(oHY_cNQcrkoid`jcq!-Z2|gk%ddfjJcJ70x$YO;8 zWEA^eY3HGoV6`#zFdMC%L0O_DD1SuGrDmBmYZrMn7F*D^{XSbYCgIkds^1HywsBnBFA{FF|lBlo?ny~ zRI3cFhOzxX%ZIJbSDKaL_f>Lj%8T2N+T- z%c4kXP@ljKB=40ltDaJcTw{|=HRU$;4riHiP7y0<;evm=+J!RU90TSO{>Gy%@#@ij zHp z7Uo1Q*Ym_% zqViDS_x|?CBRw!YzE(W#C1)V{u#v{VRVn+v-sO0HtWrHEZHKBs9&uV>vNjoNJeTYg zrP?;Nc9r|*)8G37Zi4TQ@TrD+CtErAE9nejm8L{IZ^iQ0~ca$=7xFOqN%w zgbvd3^Hurm6}J6`>7n@3nfkCAf2~D5Wl=bz@L%rpZzdfyx`QWu`iD^GiM`n@skrT# ziX0mUg)mWv&v@QFj;i;=>lZ;2ndPT~rY)kOZg|-J|1Zw_2z-x7qhsXi5qU$11at0N ziTCRb%$@uq8Dq_&JkJ03dzEZpfF0Y}*{r^L+g+YO09nHuepI0x577=@o0=uPY+a;U z7;!`ihr{>=NMV1X|0W%Fuyiu%fx&B_i!kjA1<@A)WCc)X%nCd=4=1yHL}8w6)(7zi zldCW8P)!++{Cnqyv2y9}gTnw;%fFp1X0R<0fp(MB32r6NQh|9_!X^g&|9lE;yGm)i z3w-b|SGRjTKk%pX`oG$eja-B`B!L4i{|mChwuL-D_%|Pe1qA4B{(Rmb?I#WSrEK*_ z3dn8Zyqp4V{qZ+!vf)o!AXn9jxbT4_b_1Rddaf$v`g{ZB4jK7c8iDKp1B^XfQI z3GglcrqK=F|NYo3@E-qKkG{RA=?u5?I0Jvyi&RSoSehwA^S`qE z%-eq_k_CXA;=JgcY=DY!@eRBqn>OW-&C*VJ z?HtJa;f0NU5sRbjU+>J6y%7hOR*Q%q1-s;3eLeYhD6?!!CQJ=XG>_ch>Brp^Drku=^V_#Y4Q zkJI1T`*zP}Lb6@{d?342CtlAERw>7}e){<85inc-R_Jg}W-wsaMhD2>J<#9v!;<3B_U9RoGM;Vdge-or1S{>AxTnqdtV+#?tul7HI#bCYyx zsMuK;1Ox;BL)gEG`oHyJ|CJjA@^t@INo4WtWqZc2aeUx$%1SsMgB-}vLG#@n^7fr{BcJUbHQD(@YW`dQ>)?V~%=r)Wy1 zCpgb)ZTl7xl^Z70dJg3xlSyB5^v0X6XgJ>#wP>B77OUw7h)QniHVThq-yG(8xB4a( zCmM7Amc$kV)nfN}NdU+Tja{a<6c-r3g^GH}eKse$m74?fa3H=U;D%~-CiM527ji1^ z2x{?e_h&Idx@E1EidCUjJyW&3YajVXcvTNVxZ)iKQ)s{70&S4;Wl5%Kj>@;#%w1=U z7XX%_5o=$7RJ%AQ<>|#+J}W3Y_=nSL=lG=lTIJ!~7rH7Gs1xY39-Z3Z=gNj^_&vD= zsE-J(eNLElnJty#6SYOzg~mz&Uk*r+ym@veP2N=j8eZO&KZyU`p**s#lLZF{3lRZ; ziB$qFihcwrX@8i>jud2h7~92@_0ROTQKhnT8QnU)dP0`V5{RyNIr9l=hXVo!b zY;(m5dXbE+r>w>H1O>|W!tMI5-in?29E<49-&3YH-+!tav7IK7a;m_v6@^jbQcbk( zJq=bZ>JrEg;BE|M{UE_*KaBAiayRGEH8r2{U}%y_c}=VnzGSPd#4_io)=P;~`&VDv zs|kz(xWedyfcBoOt`&#b=x=$|AjQ$=j@tG)&)>zewR`Dz6&7&6AMwa{SN*Nqp} zNAeE)B11iVUPnwzqT5^_3Ey6>wLLB?Hqe|YD|qERa}l(!+%~m55igKy9(EhYn+KR| zAW4s*XPYLY&s!f)=SIm&FKanx57v>`(4M{nBH~VSz-9OObM3c==XM9gF*8d}y@tmx z-^N;dUds^92#|>0L)cq(>p&BmH#ETRK2-mSs{U3ScDDXkCE0%g5dPkQVSx4fN$iku zn05knYlW{Qh@lgreibsgTH*c&O2-0+;y0MLZ;=GfHNAyU)>pMUwczXO+$(nZjpCI#%CX*rF(z>E*S0n|tCNZk8d;5!yy zzRb=5t!etNW2Btj4l4jT`X6*+*{w?sU<}IzDnEl$Hr4K+FM`bBRKLn`6R|D<7NP_o zk#6fvyvFbTWjCc8qkpYMB~~cItOB*gMOV6yGMl_Ep0}c&ZQ_jt;wg&a{rdCandmEQ zyNXII1v2{6e>G@;>F$zL3L(x#b$46MJrbvdzf1=i_8Hsl1|8w%@;d|9WQ3(sGEseh zsGdEtK>P&}EK`8dz|R<0ys&%R-zL_7D`Igfu`It#VPJi;sm~mTR ztcye9NU@}Qk6|eZpnjq5(}CvFR1VC4hKkMcsDrjbiRmGKwYf4MJ;l_>;Qm!} zwoE4a7{$;6O_zeLv89BYfl?I)eOMut<~p9PPnm^65rn!kAI93ixiW`g(zzBbfM51m zXCRHkpG|6!DkW-(t`RiKfa%LrE+W5{k@uJg;TdtKd=AKE5vpgDRw{T{D`Cx}V``3> zm!UsrefmdY94?ad+djJrxu9s0{HOWlG7pJjGSoX8WRd$?_qV$Sf0iW5r|ho zaUh(v-{@62IOmkA+|H45DQEP9H4*Q;zO#MUhd%L)ks6Fqorr19R%t~tH$x~c_1D~W z7pS}BZyYr=sXUYhJt}n)$|?zu@KzalVU>(qWtR`$%TYo{WNB8o##&@6K`ZHHJ7Yg; z$r6hhCNnbUp<#0!aFnimJCYHhdhrf6*Iu1hhnh&DyHVuXD#OUFTB$AkXQ z^5&te8B*qjS`5C*vbsrYrpKDl3}jhIo{lB71u{1xnNl8!IeoCJ&Q`?BI}gEJbYs*+ ze}7F2Bp!(Z?^wXPcaYl9KuBE1vX!jEPB>EAa(_9wj1roty^9!c{xLrVnT$pfT_Cv8 zE3b1KVKd>MG41(qG7tU-gCFgxj$RU-uqNgl*EB@c1+PoOV4dQm>$&RM>9R-DCL@?{C^QJQU*-J4wUeAvaG)s?EjQ^I0 zFGS-$k2-3mWpNy0Ys=fyJY)s^bnPAq##fPjrOf-@ftS2dj&f2>ee-rW#GpIdQm3F* z+plc6-MI@%gw=lfNe!N*KNf0nKxG)&O;$+fJqz{eD&|sFpX4hnHkY9weEiQ`mKV=O4R447v{LB0_0=uxZP0?UunoDp18$x+m~dScqcB|i zLFY67R0DsVt$E+#_nP|Z@76*F*D4fq+BXEixv)=}yDdNDXoN%~mR~})RCX4?&BNnO zB6+7qAE3tEdhistyIZM97C;5DHMw1*D z4gF)=Y>*UKxWJRz3{u&ONKJO9NdgG!=cL+8h8@6;fBH>o@HYD;%_h+LtC>8zvfS7CK;t)rdN9wLEuS{& z5SAhUg9VTSr~oLB!?Xl%G}Vz<$>_d4cPK8!Ll1CFvHJarjH!_l3G0f1u``EWxL$%yslOyKyJACAJDpa-nQ~SBaJ%fH)N@qfH42_3qPc$2Kkk_&MN_V# zG|;#fKTkvMz>v>;kz$A##V54YX_Nl+>t0!CJbo3#pg5!PU!!^&T%e@c+R3kNwNTbh zW31lM*ljo!YW2PX#mPIe=JynmlJ20K#6>s~p#0QiyQ%uo99_yY^O7=f9YTsJ_IaF_ z-c2ih$y@E1eF0{z(97{>LLEU3w)G3!FBOkcGF8WlqkJ2hBjO}s5#g>XcxFMHiuUG0 zta0pOZ8;H~a?-{;U2OT8Pv?c28ar7EQ!J6GU`Oq1-Hx)n9BZZaQCs+s$C*PI^4g3b z+Fxe7#j`*7HM_7**W&C_feJM|+azUG(FT};1W`A$lJ&l31yesh75EnCw91ja{XH8d ze{wx=8S+PFZ4+c!>w=Yf@)EHnxxfwnHC=PV??@a=E=uZs9<}3RaCo~a?oLo=4t&H_ zta{_c{S*Oc_N@aqbvce=RiXpuZ)V(w-u%DeRjeLWu`KTm;0sOd$uDLdx8uYbHrt#e zzOCv@)T4vMb0BO7J8!P8K6Q2?fjFel(5X3qs)lhutP-gK4@i#-C9>|} zH)l_&B9lMW+i?TSic`3aZYM!u$p$qfQmsXq<&jk!fa21A|BZR{;c0;i&x{!XWeaET z^%)5lTS!%>prZ=grUP=MO+!d{j4aP3o0G-CkL%-`EfzUbVdaNoYD$jHR2Ra+tY?!Z zg`5wGW7URb5nsrr1xzVt(eCArl8=EW;oH?$x0?+h8jdAL;%$X!s^3F;)@i-j(w^08 zNVPZR9_t9_ZuC6z+@MKDpy+kk-VIe$`=pUf>shYKl{C5_TaZrS)fjsoH8O zR6a2bSJ_*3MJT{cxR={M`wIQo>NzzHRQ<~{e)vVzPx|pyyr*NlVC+9`DGyrzDVSe9 z!jC0l#EP}Q0hX2?H!*I}a1!(M!nr`g&pWvCajUfm%Qn4Z28(KZ6mDmPINyn%1n4H zvrQ?(U8#AY$S2-$tmyf{ExXTOF>I#nc|8UXWPM(IFQ;LU5mQtE9GY?3f^ufV+|y5F zbiS!M_p<*yuVjP2Ez;qlU*_Oc!jH=?&?You(D$p8Rww{m?MvFVnbu%Cgl_Dq>@JP4L*39jEzCE4cl0x zM}{v30ROIgjKA>etuJ|=>Xwz}vZkVXy#Za$9_z)mw_$ATxc8Me?TeeAr{4l>noNe1 zhkI{3O=id=^8FVmAgM-EzWg6`+p>7%sXOM~_UnRt!*>;D(j%@diAzGN9f|8;{Q>>^ z$k(q^g^_BAW~HIjupr2!aHKWAdg<&hxNq~X-cp0bmp0X8n>vy^!_3X6kk8Z6O?JrS zpq(=_(Q)335|Fg{6a&|6ovK1{Jzqbtf*VWgd<#pq4LM1)(?tpG{7a-(2n3-DPQ}&W zf^J!5q^Gi3i?bN-`%tU&saxa8ZEs!g8W`=Dr&o;^WE7r4r|!jV(k-^#SO&mo2hbVV z(xTlz{Iwkl%=?Z%&H3d@HcYKhS+CHvq_17=$uD+d6S-);uYI+*IiZk7J>ke6)ixcO z0mx1>_U&$nlU=ecr$^{t#WdH*Q^-Z?vZNUPwEIEUd4x!iiBaWhhTlZ|SNbD;o~2#E zDLuZ&wES%OB=|NF6~@_boFqVbw$1ILLCyPFKU}!bEF-qM>=oK{fwt7H7@Ttrdl~BBDA+tJtXIK- zV{^t>CJE!9=2@9z{H?=yPY+(^EoA)zv`OZgPeRpJ{BS59C7d1Cc(ZGNXEA$2|Hqqr zkV|h+u7Zzgj5e&o={+I_oW#Mqs2(-9b_Vd$pc?zh_aU>#>fO@COpduR2Vy2SLQAh!G)?uN?>y07D>`9>@?|KYE z&&W2zY$JA$i<4MVhS!LfF0fc42q% zk~C~o3*goUO+M9(_#EV{FfOl&Urhh$E_|SVxselSyZROv=rWt#X7ZynhT)&4D*JmK z@9;v)*Iyl6BLvJ1hoWoOdL8A_W^UW3U+G0ZC0gq!xxm2DtQ3v&W13j(dMK*lDY&$^ zb=%vZq|H9d@0oaZyJ*A*mF}KT1z7mMv+7{Pbg(Nv3VVYy2JZS?V0Z zRl}dm9$#Yc3k0aMQ!U@IC5g-umkI1S%G>!l*(9@zSiFwYX6t#)q94(PO!xR7H;f~g zSJx?>5dCo?pOOS(G<9vO{-snOR`maPV!!yTWdb~_bw|of95J4}#MlK^iTm{#RB>yd z*n?* zS9>El1bxK8TOJ4#6Ft%0Rh~sSyS9xoj%cBgYCZj%1p!Xsm3ti#yU&(qE%}TA<86%h zF=#k?Qus&eS;3UyK4)%nOC0k&a~n%{j_iTNjzf3HGZYiPIvfQ$O!_fDItGho&oInL zImb>zTl`@~(J%C4n1MN8^(H}d;w(Q)xj3K^)gx8c1$ zGI`!8dCd^ltzVBKIV0H(S$Cm|smJ*F;U}(SSE~~^+T9)gjAP6lwtIOk*dXx9fE8F8 zrXy6tY{kbGf`zoL7VHn8Nv9IJie8e^!sY-82lF zNkzV*M3Zw9`HEc|OAx3TRFZf2d{>vYLlZUI-K7=QSJziZAcmeGU{l}8Q)u>-+ciGE zuIEB$ss&?g81`U~$0Yoz5-i=4z!$Zgj2Fp_D4 zK{Rx%?w9U@LCkdSG*iBS3LlaMit*^zU~g#PE8r zX$~ci?UuVprKyZh>Ve+r-`o1kfun&Gjo$7)#g^8zH<#G0Ee`2lpqPzf-2kY~<|5>- z5PWuhpZkVur?=%}kCKuJ8v^FsDr?u}w070p((;x@v|wRjY|`Ld=*`$@ExSkBP_VZC zNYSdy=GqNZY?|Q%we9HHlT1#6!l1>NL+U$WtJO+cel&!>ZZ;yPaCE?CmW6uK{m@4gT7C*4`Q+uht^KVmu4Cybf$e3DRf4Br0u;V zqG$pqb(~xJP@krRb+5OfPjms3zt{%6SW_-x6xDt=J4}mbcJ%4%(pQ!XF z+S#?Wt?JWW>}bad5uTda`UN%?C9b)g`CsWjXg(oVq$WX#KQ5ifd_GGrIX@}<+f2ZP zLwhnlq$Iwe@X*_CW&dO9v9ObMj3m{*%*$J2SI*at+HFGuaMvaECY4x_;(Vxy>jLKksERJGAnwLP13Po`{z&VkHNObO2Q#Zygl9YOZ7(R9h8{?uJWOi&sO zC~v%Nqszs}2dHe_X1{dmbIe(AoZsJJ(OuujH`iYL(0%D!C$V?DK$Z1Exos(=SFUl2 zlRs@k@!xHWL+>Q!-ADp>Ms6=Y<(T-{K84zbswZ`Ua9$4UbFdmm`%1 zTNiI^n?@L(>hvmCRZQ4|@?7f7#h4QxD2~i^IMb4pu*bAGab&D&Krs{Sk(2!980|66 znZxB#txrCU_$-M-rkfmZ?)o-&KxplX&&bac#dOt8$CQ^d1x}_OvH@G+!9`HEoe4}{ zzvyk*=G>WUobXBGHJ4Gd?s{&R9yuEe`eq8H87pa=%w6lN-Nl=PO%fgDcQSGPpxo0m zD7!|ekW6+tT*)pZkL-@;`U*Bh@Zv&GMvFw8b(lXf=JB=4;12}b4n&L4-c2^8cz(;| z7QkWvLZ+u)Crt@(ME(@)&DE^@`om>~w*y{;jO1n%NAHlmx zJ_Rk}0`iSn=HYqPANI!Shl9RnmLblr`eie1vbrx^xOE2#zq+r#(q*r*Jz#}-CG!y> z5>&hI(M>Xtg|aGj4*#PPzLh{&HCY*hSIO2)5taxc1C+{B!-gaWwjK#zadM9l=L4K7 z`%Tllrv}vG^Nb{NWB7|HpX<`T#{3=}_yn@rmBl}==;e7lEnk$ccob>pCY@||Pl6dD zt@7A8?d;hqnVP2hq>FWc=S`z+@kUU&kNjfx9qs{>y=IWU6UPJ7Wyywm)M@iNCS-wC zt~`gxbYbJMF~OHoZ!U3_0$Da&C+VTvTGdfgqEz%QrB)_2?HXEn5%njP8CncQ`UU<8 zFU|_Mq%$@se0AjX(I;2W#%4;jz|(pJ>Anj>DcQU!+0Ee4-ZLSK=~n(@4(&BP-$8C-kM6Cs0w{_fUrWk=j^)%!`^@8OzC9#Y>&CruDXX+oQ{1p&xhd(;H z%rozuc>}T39dmHC(-$Jgp-u9k9mvM36`|TmRTC?nM zmz&PfArZos_bjokzN%!7(Xkh05E;n^10yFJTx2GbM9M0K0n^qXdHYbajLNw69RSZa zw3s+xpVKMXu+^^qoDip_57-wZsv_zjKtTEHCfEynB>^m}VvlCwEyI~DLoOm(wF=j@ zd*z5@^vu*q79(%Pxt2O9K8wv0kCR6pLM$di+Qqa@q9kmr;D=CtypbLL^7{+)+xcGi z9!R)wybnPt`h+slLhGS+P~9YkNy(9`02U_HYi7`3#qXz$>U@Yy!@1L~IQj-kp+;gs<$a!4pc{wUf1B zNve)-q!gM2&yShk>vvI~RA=-}kb5a- z!B~k9ZB7VcDc-@-2F;|#a@vBvf)q$;LX@@K@nyG}Nf7=bVppe#kr_&mXJu0V(Ncjg zZ38+BRnO;+dtb(^u}=(r3d>lPIj}XEGOO__fw=gg%>uZQrth~lLK4ZQO$E|~rfg^i zcZ)8ELQJNO+IEl=(~WYMgXKMfVBSDaA&=v)y>mQ}5hBDYpSO}Zs zd}SHo(94&{)_R4=MT%97IIqiozWpJLbx$UBxGMIk)fRjD*|QpZt_e|Ieg)*UgR17C zeeYz$K4(O|wA+sH(3G!`>Mh-|py5Hk$LR4SF7m;bx49RAOpno5O>5VsHkH&~gW8>5 zA;5pTaQA~Bb$864vozt7eoZpe0A4a8Be4JVXQ{E0lK+E6PUxsCIGZ}Ou*lszyF`t(l#Y9{UlBuyVjfm-bVOUG#Er` z!CR4;Ip&)D;;Rg7{}yl=K>H~6<6uu|uoH7!Af+Tv!^Q02onxV$O_lE>RA?bl&Gk

Go#L;4{tMu1amnO|X3!Huy6Y>$W0FwwLm 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 hMs zdBNM6=zrHJp33_AdwJdOQqP_cI#X(f-;%HHEAxLU@!{dIq;z(?A~n)%dbiX_c|EmKN1_vi`emj%Dl`)I5u})9{UzQgOc}7B@uFFs{%v0uS|xz*pPder(;D6mm5&8X_DP2w$mzeAUp!;Ngg zmyXQ%r$|stq({x}XTLT{KHhW$uL;=d_9jNbiT&9i#_{Hy zNQvW>#jd#YwVCtHWz=ZKD>0t~tEPiSalr_`T@dw9OoK$Vz#bKiPdw$;siJ1^X{q+DC2HQp3Lkk(m=Gv`w? zN6pmi!wp9bJ?Ta@%oKhn)$Zpf%)d3KsSTNzcej*so@r4FiMVXbuOAyYH`M)s>l=wY zoo-^(&o0B}$Z&G`o%}oyR1!D3l|^JT=I5YOaQ^zWfZ_D5Iro_}hz$_a1P^$m%=i<+ zIMM6*5rW)%pLb#;qj{X7SX-8|!Z>F(*Fld=-?3BpjUK>j>_{`MEhK-huZkjBGF`S2 zGh%2eWzBXeI+#QCtz4Dt9(^c$b2$A=xz1TG%Z&GnndC_{bW2ScF6vi&rHc*<@i*_c?s za^fsgPQt5{L>x}#j-=k{^1oAG6#joC={y^66h*~oA!~lQd zd;Za3yX2Wd(`oMHs?ip%0z7H_wcYa#`7hz4;kxtQP^Cy=e2dQqJDy7i((@ofx?-C5Jivy2^AKz}7EdEd*Z{01=TkPo;I&Sz$ZA`r`wesTsFH!z4 z7mR92k8DbMx|{uK#LpIg95B8*i*MX@0&z{X#xwZr`Q2CM|896x;7Sa6duis}hQJ8} za1p^ii{Tua_r++;oAMY~%Sp^f!5+BA=Ts|RrWbzqa|d&4AG$oMl){Z?k)wQ>*XvPBO@XD zy!5PO71q`3(#g?3Av`f}Zeb1wi7A1%-*w{#G{ zw@9Iq+1cyjwPYt=L$Wmtr1OQ$0`d;O<_IyP<~l${?yX&UyE`sRn~Cyr(?@@5;+jRQ zFwP-s*(7g^BJ1OM1;QkAVsb9e58Byz?1%F|)4jK^7`LP1b;{CBZb++;#MRLvFIlx` z0YSttrVNC5e22uGwF0xSUi&(%pFsn9syjN`>%>x$k;slw^t^ z-*77N8XGVCPGSJDO4bpdb>44mwC04|i)@fNHHSbo#@R9>6*IWEN@hJ0RaPCg&^tA3 zH_RYO8lbM9w06Awkx~-nw#47dqHPIA%tyL3-XHE^NymYeTAfC(Z^4%4lYrmxQKX7 zCtD53W^D+RuxPRq*0Zpnz7;R&mHm^JPau1VWQIo7f?Y5Mo%mYNk6E?trN^6)uD}5g z+LStsv;1U~awH;41!1E2jOsSnAi7_3WG7tIDe1k9Q{cyQoB8LD4WRR_d_Lm2g^TSw zLy0XS2qtkY+Qg4oG|A`uYTV#!2?1&pjsEg}MAk$-b*_WB{0~N-r zd!4%W>#i$bWk7IO*OaK|7H2PPf{d|WL?yY-N5&7)tTBU?PynLAj#bKx&bn(W!R|Da zueH#6>$|F5HaHn89nd*xXwR`)Xpp4j*ioMSX{A2LNrIgu`=x$wNkp|M{Epy|Jg;a^ zD6MNmIr51J$B!mo8+{uscsLbxf{Ed(I?sz`qp6=Q9lm_2wUw*EnqEwvDx%I-8p}hg zcRL?nqdjdONzfGK*vx&HxZ`;AoBXCg@Rjr(C)oW)to>7t@mJQ040`^BwRf*#%n46S z&trz%;=*>p`I)#s4gz=u{vM+ zy;W~T)PkN`c80c59HQLO*6EMD8L9V@ya^3V$2IC0O_vIjjxyU9l_eF5$BKieIzpQ{%N>4X*DO>`dqCWzgpoIOFL^pZwGB zZSS|2{-X4KD&pdc^>I`SNce8NCT8WW}v+Q{QTGx{X+ImiLo84rlKZ&-BF$q$0YLH#t_c0$wv`aG%qRTX-T`+7 tM2 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�KO;x*2MFtWJQPhLt4dbsnA+; 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%0AHl*dVQH!qW``q3W+o6sMF&C)B6$=Y@j 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