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, *, mediator_terms: Optional[Sequence[str]] = None, recipient_terms: Optional[Sequence[str]] = None) 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

  • mediator_terms (Sequence[str]) – updated mediator terms to return to

  • requester.

  • recipient_terms (Sequence[str]) – updated recipient terms to return to

  • requester.

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, mediator_terms: Optional[Sequence[str]] = None, recipient_terms: Optional[Sequence[str]] = None) 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

  • mediator_terms (Sequence[str]) – mediator_terms

  • recipient_terms (Sequence[str]) – recipient_terms

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.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, my_endpoint: str, mediation_record: Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord] = None) Tuple[List[str], str][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_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)[source]

Return relevant mediator for connection.

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 route_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) 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_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 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_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 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.

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.

abstract async routing_info(profile: aries_cloudagent.core.profile.Profile, my_endpoint: str, mediation_record: Optional[aries_cloudagent.protocols.coordinate_mediation.v1_0.models.mediation_record.MediationRecord] = None) Tuple[List[str], str][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.

aries_cloudagent.protocols.coordinate_mediation.v1_0.route_manager_provider module

aries_cloudagent.protocols.coordinate_mediation.v1_0.routes module