aries_cloudagent.protocols.coordinate_mediation.v1_0 package

Subpackages

Submodules

aries_cloudagent.protocols.coordinate_mediation.v1_0.controller module

Protocol controller for coordinate mediation.

class aries_cloudagent.protocols.coordinate_mediation.v1_0.controller.Controller(protocol: str)[source]

Bases: object

Coordinate mediation protocol controller.

determine_goal_codes() Sequence[str][source]

Return defined goal_codes.

aries_cloudagent.protocols.coordinate_mediation.v1_0.manager module

Manager for Mediation coordination.

exception aries_cloudagent.protocols.coordinate_mediation.v1_0.manager.MediationAlreadyExists(*args, error_code: Optional[str] = None, **kwargs)[source]

Bases: aries_cloudagent.protocols.coordinate_mediation.v1_0.manager.MediationManagerError

Raised on mediation record already exists for given connection.

class aries_cloudagent.protocols.coordinate_mediation.v1_0.manager.MediationManager(profile: aries_cloudagent.core.profile.Profile)[source]

Bases: object

Class for handling Mediation.

MediationManager creates or retrieves a routing DID as a means to hand out a consistent routing key to mediation clients.

DEFAULT_MEDIATOR_RECORD_TYPE = 'default_mediator'
KEYLIST_UPDATED_EVENT = 'acapy::keylist::updated'
METADATA_ID = 'id'
METADATA_KEY = 'mediation'
ROUTING_DID_RECORD_TYPE = 'routing_did'
SEND_REQ_AFTER_CONNECTION = 'send_mediation_request_on_connection'
SET_TO_DEFAULT_ON_GRANTED = 'set_to_default_on_granted'
async add_key(recipient_key: str, message: Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_update.KeylistUpdate] = None) aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_update.KeylistUpdate[source]

Prepare a keylist update add.

Parameters
  • recipient_key (str) – key to add

  • message (Optional[KeylistUpdate]) – append update to message

Returns

Message to send to mediator to notify of key addition.

Return type

KeylistUpdate

async clear_default_mediator()[source]

Clear the stored default mediator.

async create_keylist_query_response(keylist: Sequence[aries_cloudagent.protocols.routing.v1_0.models.route_record.RouteRecord]) aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist.Keylist[source]

Prepare a keylist message from keylist.

Parameters

keylist (Sequence[RouteRecord]) – keylist to format into message

Returns

message to return to client

Return type

Keylist

async deny_request(mediation_id: str) Tuple[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord, aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.mediate_deny.MediationDeny][source]

Deny a mediation request and prepare a deny message.

Parameters

mediation_id – mediation record ID to deny

Returns

message to return to denied client.

Return type

MediationDeny

async get_default_mediator() Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord][source]

Retrieve default mediator from the store.

Returns

retrieved default mediator or None if not set

Return type

Optional[MediationRecord]

async get_default_mediator_id() Optional[str][source]

Retrieve default mediator ID from the store.

Returns

retrieved default mediator ID or None if not set

Return type

Optional[str]

async get_keylist(record: aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord) Sequence[aries_cloudagent.protocols.routing.v1_0.models.route_record.RouteRecord][source]

Retrieve keylist for mediation client.

Parameters

record (MediationRecord) – record associated with client keylist

Returns

sequence of routes (the keylist)

Return type

Sequence[RouteRecord]

async get_my_keylist(connection_id: Optional[str] = None) Sequence[aries_cloudagent.protocols.routing.v1_0.models.route_record.RouteRecord][source]

Get my routed keys.

Parameters

connection_id (Optional[str]) – connection id of mediator

Returns

list of routes (the keylist)

Return type

Sequence[RouteRecord]

async grant_request(mediation_id: str) Tuple[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord, aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.mediate_grant.MediationGrant][source]

Grant a mediation request and prepare grant message.

Parameters

mediation_id – mediation record ID to grant

Returns

updated mediation record and message to return to grantee

Return type

(MediationRecord, MediationGrant)

async prepare_keylist_query(filter_: Optional[dict] = None, paginate_limit: int = - 1, paginate_offset: int = 0) aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_query.KeylistQuery[source]

Prepare keylist query message.

Parameters
  • filter (dict) – filter for keylist query

  • paginate_limit (int) – paginate_limit

  • paginate_offset (int) – paginate_offset

Returns

message to send to mediator

Return type

KeylistQuery

async prepare_request(connection_id: str) Tuple[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord, aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.mediate_request.MediationRequest][source]

Prepare a MediationRequest Message, saving a new mediation record.

Parameters

connection_id (str) – ID representing mediator

Returns

message to send to mediator

Return type

MediationRequest

async receive_request(connection_id: str, request: aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.mediate_request.MediationRequest) aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord[source]

Create a new mediation record to track this request.

Parameters

request (MediationRequest) – request message

Returns

record created during receipt of request.

Return type

MediationRecord

async remove_key(recipient_key: str, message: Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_update.KeylistUpdate] = None) aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_update.KeylistUpdate[source]

Prepare keylist update remove.

Parameters
  • recipient_key (str) – key to remove

  • message (Optional[KeylistUpdate]) – append update to message

Returns

Message to send to mediator to notify of key removal.

Return type

KeylistUpdate

async request_denied(record: aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord, deny: aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.mediate_deny.MediationDeny)[source]

Process mediation denied message.

Parameters

record (MediationRecord) – record representing the denied mediation request

async request_granted(record: aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord, grant: aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.mediate_grant.MediationGrant)[source]

Process mediation grant message.

Parameters

record (MediationRecord) – record representing the granted mediation request

async set_default_mediator(record: aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord)[source]

Set default mediator from record.

async set_default_mediator_by_id(mediation_id: str)[source]

Set default mediator from ID.

async store_update_results(connection_id: str, results: Sequence[aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.inner.keylist_updated.KeylistUpdated])[source]

Store results of keylist update from keylist update response message.

Parameters
  • connection_id (str) – connection ID of mediator sending results

  • results (Sequence[KeylistUpdated]) – keylist update results

  • session – An active profile session

async update_keylist(record: aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord, updates: Sequence[aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.inner.keylist_update_rule.KeylistUpdateRule]) aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_update_response.KeylistUpdateResponse[source]

Update routes defined in keylist update rules.

Parameters
  • record (MediationRecord) – record associated with client updating keylist

  • updates (Sequence[KeylistUpdateRule]) – updates to apply

Returns

message to return to client

Return type

KeylistUpdateResponse

exception aries_cloudagent.protocols.coordinate_mediation.v1_0.manager.MediationManagerError(*args, error_code: Optional[str] = None, **kwargs)[source]

Bases: aries_cloudagent.core.error.BaseError

Generic Mediation error.

exception aries_cloudagent.protocols.coordinate_mediation.v1_0.manager.MediationNotGrantedError(*args, error_code: Optional[str] = None, **kwargs)[source]

Bases: aries_cloudagent.protocols.coordinate_mediation.v1_0.manager.MediationManagerError

Raised when mediation state should be granted and is not.

aries_cloudagent.protocols.coordinate_mediation.v1_0.message_types module

Message type identifiers for Coordinate Mediation protocol.

aries_cloudagent.protocols.coordinate_mediation.v1_0.normalization module

Normalization methods used while transitioning to DID:Key method.

aries_cloudagent.protocols.coordinate_mediation.v1_0.normalization.normalize_from_did_key(key: str)[source]

Normalize Recipient/Routing keys from DID:Key to public keys.

aries_cloudagent.protocols.coordinate_mediation.v1_0.normalization.normalize_from_public_key(key: str)[source]

Normalize Recipient/Routing keys from public keys to DID:Key.

aries_cloudagent.protocols.coordinate_mediation.v1_0.normalization.normalize_to_did_key(value: Union[str, aries_cloudagent.did.did_key.DIDKey]) aries_cloudagent.did.did_key.DIDKey[source]

Normalize a value to a DIDKey.

aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager module

Route manager.

Set up routing for newly formed connections.

class aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager.CoordinateMediationV1RouteManager[source]

Bases: aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager.RouteManager

Manage routes using Coordinate Mediation protocol.

async routing_info(profile: aries_cloudagent.core.profile.Profile, mediation_record: Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord] = None) aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager.RoutingInfo[source]

Return routing info for mediator.

class aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager.RouteManager[source]

Bases: abc.ABC

Base Route Manager.

async connection_from_recipient_key(profile: aries_cloudagent.core.profile.Profile, recipient_key: str) aries_cloudagent.connections.models.conn_record.ConnRecord[source]

Retrieve connection for a recipient_key.

The recipient key is expected to be a local key owned by this agent.

async get_or_create_my_did(profile: aries_cloudagent.core.profile.Profile, conn_record: aries_cloudagent.connections.models.conn_record.ConnRecord) aries_cloudagent.wallet.did_info.DIDInfo[source]

Create or retrieve DID info for a conneciton.

async mediation_record_if_id(profile: aries_cloudagent.core.profile.Profile, mediation_id: Optional[str] = None, or_default: bool = False)[source]

Validate mediation and return record.

If mediation_id is not None, validate mediation record state and return record else, return None

async mediation_records_for_connection(profile: aries_cloudagent.core.profile.Profile, conn_record: aries_cloudagent.connections.models.conn_record.ConnRecord, mediation_id: Optional[str] = None, or_default: bool = False) List[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord][source]

Return relevant mediator for connection.

async route_connection(profile: aries_cloudagent.core.profile.Profile, conn_record: aries_cloudagent.connections.models.conn_record.ConnRecord, mediation_records: List[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord]) Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_update.KeylistUpdate][source]

Set up routing for a connection.

This method will evaluate connection state and call the appropriate methods.

async route_connection_as_invitee(profile: aries_cloudagent.core.profile.Profile, conn_record: aries_cloudagent.connections.models.conn_record.ConnRecord, mediation_records: List[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord]) Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_update.KeylistUpdate][source]

Set up routing for a new connection when we are the invitee.

async route_connection_as_inviter(profile: aries_cloudagent.core.profile.Profile, conn_record: aries_cloudagent.connections.models.conn_record.ConnRecord, mediation_records: List[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord]) Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_update.KeylistUpdate][source]

Set up routing for a new connection when we are the inviter.

async route_invitation(profile: aries_cloudagent.core.profile.Profile, conn_record: aries_cloudagent.connections.models.conn_record.ConnRecord, mediation_record: Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord] = None) Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_update.KeylistUpdate][source]

Set up routing for receiving a response to an invitation.

async route_public_did(profile: aries_cloudagent.core.profile.Profile, verkey: str)[source]

Establish routing for a public DID.

[DEPRECATED] Establish routing for a public DID. Use route_verkey() instead.

async route_static(profile: aries_cloudagent.core.profile.Profile, conn_record: aries_cloudagent.connections.models.conn_record.ConnRecord, mediation_record: Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord] = None) Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.messages.keylist_update.KeylistUpdate][source]

Establish routing for a static connection.

async route_verkey(profile: aries_cloudagent.core.profile.Profile, verkey: str)[source]

Establish routing for a public DID.

abstract async routing_info(profile: aries_cloudagent.core.profile.Profile, mediation_record: Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord] = None) aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager.RoutingInfo[source]

Retrieve routing keys.

async save_mediator_for_connection(profile: aries_cloudagent.core.profile.Profile, conn_record: aries_cloudagent.connections.models.conn_record.ConnRecord, mediation_record: Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord] = None, mediation_id: Optional[str] = None)[source]

Save mediator info to connection metadata.

exception aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager.RouteManagerError[source]

Bases: Exception

Raised on error from route manager.

class aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager.RoutingInfo(routing_keys: Optional[List[str]], endpoint: Optional[str])[source]

Bases: NamedTuple

Routing info tuple contiaing routing keys and endpoint.

classmethod empty()[source]

Empty routing info.

endpoint: Optional[str]

Alias for field number 1

routing_keys: Optional[List[str]]

Alias for field number 0

aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager_provider module

RouteManager provider.

class aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager_provider.RouteManagerProvider(root_profile: aries_cloudagent.core.profile.Profile)[source]

Bases: aries_cloudagent.config.base.BaseProvider

Route manager provider.

Decides whcih route manager to use based on settings.

provide(settings: aries_cloudagent.config.base.BaseSettings, injector: aries_cloudagent.config.base.BaseInjector)[source]

Create the appropriate route manager instance.

aries_cloudagent.protocols.coordinate_mediation.v1_0.routes module

coordinate mediation admin routes.

class aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.AdminMediationDenySchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Parameters and validators for Mediation deny admin request query string.

class aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.GetKeylistQuerySchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Get keylist query string paramaters.

conn_id
role
class aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.KeylistQueryFilterRequestSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Request schema for keylist query filtering.

filter
class aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.KeylistQueryPaginateQuerySchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Query string schema for keylist query pagination.

paginate_limit
paginate_offset
class aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.KeylistSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Result schema for mediation list query.

results
class aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.KeylistUpdateRequestSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

keylist update request schema.

updates
class aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.MediationCreateRequestSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Parameters and validators for create Mediation request query string.

class aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.MediationIdMatchInfoSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Path parameters and validators for request taking mediation request id.

mediation_id
class aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.MediationListQueryStringSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Parameters and validators for mediation record list request query string.

conn_id
state
class aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.MediationListSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Result schema for mediation list query.

results
aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.mediation_sort_key(mediation: dict)[source]

Get the sorting key for a particular serialized mediation record.

aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.post_process_routes(app: aiohttp.web.Application)[source]

Amend swagger API.

async aries_cloudagent.protocols.coordinate_mediation.v1_0.routes.register(app: aiohttp.web.Application)[source]

Register routes.