aries_cloudagent.messaging package

Subpackages

Submodules

aries_cloudagent.messaging.agent_message module

Agent message base class and schema.

class aries_cloudagent.messaging.agent_message.AgentMessage(_id: Optional[str] = None, _type: Optional[str] = None, _version: Optional[str] = None, _decorators: Optional[BaseDecoratorSet] = None)[source]

Bases: BaseModel, BaseMessage

Agent message base class.

property Handler: type

Accessor for the agent message’s handler class.

Returns

Handler class

class Meta[source]

Bases: object

AgentMessage metadata.

handler_class = None
message_type = None
schema_class = None
add_trace_decorator(target: str = 'log', full_thread: bool = True)[source]

Create a new trace decorator.

Parameters
  • target – The trace target

  • full_thread – Full thread flag

add_trace_report(val: Union[TraceReport, dict])[source]

Append a new trace report.

Parameters

val – The trace target

assign_thread_from(msg: AgentMessage)[source]

Copy thread information from a previous message.

Parameters

msg – The received message containing optional thread information

assign_thread_id(thid: str, pthid: Optional[str] = None)[source]

Assign a specific thread ID.

Parameters
  • thid – The thread identifier

  • pthid – The parent thread identifier

assign_trace_decorator(context, trace)[source]

Copy trace from a json structure.

Parameters

trace – string containing trace json stucture

assign_trace_from(msg: AgentMessage)[source]

Copy trace information from a previous message.

Parameters

msg – The received message containing optional trace information

classmethod deserialize(value: dict, msg_format: DIDCommVersion = DIDCommVersion.v1, **kwargs)[source]

Return message object deserialized from value in format specified.

get_signature(field_name: str) SignatureDecorator[source]

Get the signature for a named field.

Parameters

field_name – Field name to get the signature for

Returns

A SignatureDecorator for the requested field name

get_updated_msg_type(version: str) str[source]

Update version to Meta.message_type.

serialize(msg_format: DIDCommVersion = DIDCommVersion.v1, **kwargs)[source]

Return serialized message in format specified.

set_signature(field_name: str, signature: SignatureDecorator)[source]

Add or replace the signature for a named field.

Parameters
  • field_name – Field to set signature on

  • signature – Signature for the field

async sign_field(field_name: str, signer_verkey: str, wallet: BaseWallet, timestamp=None) SignatureDecorator[source]

Create and store a signature for a named field.

Parameters
  • field_name – Field to sign

  • signer_verkey – Verkey of signer

  • wallet – Wallet to use for signature

  • timestamp – Optional timestamp for signature

Returns

A SignatureDecorator for newly created signature

Raises

ValueError – If field_name doesn’t exist on this message

async verify_signatures(wallet: BaseWallet) bool[source]

Verify all associated field signatures.

Parameters

wallet – Wallet to use in verification

Returns

True if all signatures verify, else false

async verify_signed_field(field_name: str, wallet: BaseWallet, signer_verkey: Optional[str] = None) str[source]

Verify a specific field signature.

Parameters
  • field_name – The field name to verify

  • wallet – Wallet to use for the verification

  • signer_verkey – Verkey of signer to use

Returns

The verkey of the signer

Raises
  • ValueError – If field_name does not exist on this message

  • ValueError – If the verification fails

  • ValueError – If the verkey of the signature does not match the

  • provided verkey

exception aries_cloudagent.messaging.agent_message.AgentMessageError(*args, error_code: Optional[str] = None, **kwargs)[source]

Bases: BaseModelError

Base exception for agent message issues.

class aries_cloudagent.messaging.agent_message.AgentMessageSchema(*args: Any, **kwargs: Any)[source]

Bases: BaseModelSchema

AgentMessage schema.

class Meta[source]

Bases: object

AgentMessageSchema metadata.

model_class = None
signed_fields = None
check_dump_decorators(obj, **kwargs)

Pre-dump hook to validate and load the message decorators.

Parameters

obj – The AgentMessage object

Raises

BaseModelError – If a decorator does not validate

dump_decorators(data, **kwargs)

Post-dump hook to write the decorators to the serialized output.

Parameters

obj – The serialized data

Returns

The modified data

extract_decorators(data: Mapping, **kwargs)

Pre-load hook to extract the decorators and check the signed fields.

Parameters

data – Incoming data to parse

Returns

Parsed and modified data

Raises
  • ValidationError – If a field signature does not correlate

  • to a field in the message

  • ValidationError – If the message defines both a field signature

  • and a value for the same field

  • ValidationError – If there is a missing field signature

populate_decorators(obj, **kwargs)

Post-load hook to populate decorators on the message.

Parameters

obj – The AgentMessage object

Returns

The AgentMessage object with populated decorators

replace_signatures(data, **kwargs)

Post-dump hook to write the signatures to the serialized output.

Parameters

obj – The serialized data

Returns

The modified data

aries_cloudagent.messaging.base_handler module

A Base handler class for all message handlers.

class aries_cloudagent.messaging.base_handler.BaseHandler[source]

Bases: ABC

Abstract base class for handlers.

abstract async handle(context: RequestContext, responder: BaseResponder)[source]

Abstract method for handler logic.

Parameters
  • context – Request context object

  • responder – A responder object

exception aries_cloudagent.messaging.base_handler.HandlerException(*args, error_code: Optional[str] = None, **kwargs)[source]

Bases: BaseError

Exception base class for generic handler errors.

aries_cloudagent.messaging.base_message module

Base message.

class aries_cloudagent.messaging.base_message.BaseMessage[source]

Bases: ABC

Abstract base class for messages.

This formally defines a “minimum viable message” and provides an unopinionated class for plugins to extend in whatever way makes sense in the context of the plugin.

abstract property Handler: Type[BaseHandler]

Return reference to handler class.

abstract classmethod deserialize(value: dict, msg_format: DIDCommVersion = DIDCommVersion.v1)[source]

Return message object deserialized from value in format specified.

abstract serialize(msg_format: DIDCommVersion = DIDCommVersion.v1) dict[source]

Return serialized message in format specified.

class aries_cloudagent.messaging.base_message.DIDCommVersion(value)[source]

Bases: Enum

Serialized message formats.

v1 = 1
v2 = 2

aries_cloudagent.messaging.error module

Messaging-related error classes and codes.

exception aries_cloudagent.messaging.error.MessageParseError(*args, error_code: Optional[str] = None, **kwargs)[source]

Bases: BaseError

Message parse error.

error_code = 'message_parse_error'
exception aries_cloudagent.messaging.error.MessagePrepareError(*args, error_code: Optional[str] = None, **kwargs)[source]

Bases: BaseError

Message preparation error.

error_code = 'message_prepare_error'

aries_cloudagent.messaging.request_context module

Request context class.

A request context provides everything required by handlers and other parts of the system to process a message.

class aries_cloudagent.messaging.request_context.RequestContext(profile: Profile, *, context: Optional[InjectionContext] = None, settings: Optional[Mapping[str, object]] = None)[source]

Bases: object

Context established by the Conductor and passed into message handlers.

property connection_ready: bool

Accessor for the flag indicating an active connection with the sender.

Returns

True if the connection is active, else False

property connection_record: Optional[ConnRecord]

Accessor for the related connection record.

property default_endpoint: str

Accessor for the default agent endpoint (from agent config).

Returns

The default agent endpoint

property default_label: str

Accessor for the default agent label (from agent config).

Returns

The default label

inject(base_cls: Type[InjectType], settings: Optional[Mapping[str, object]] = None) InjectType[source]

Get the provided instance of a given class identifier.

Parameters
  • cls – The base class to retrieve an instance of

  • settings – An optional mapping providing configuration to the provider

Returns

An instance of the base class, or None

inject_or(base_cls: Type[InjectType], settings: Optional[Mapping[str, object]] = None, default: Optional[InjectType] = None) Optional[InjectType][source]

Get the provided instance of a given class identifier or default if not found.

Parameters
  • base_cls – The base class to retrieve an instance of

  • settings – An optional dict providing configuration to the provider

  • default – default return value if no instance is found

Returns

An instance of the base class, or None

property injector: Injector

Accessor for the associated Injector instance.

property message: AgentMessage

Accessor for the deserialized message instance.

Returns

This context’s agent message

property message_receipt: MessageReceipt

Accessor for the message receipt information.

Returns

This context’s message receipt information

property profile: Profile

Accessor for the associated Profile instance.

session() ProfileSession[source]

Start a new interactive session with no transaction support requested.

property settings: Settings

Accessor for the context settings.

classmethod test_context() RequestContext[source]

Quickly set up a new request context for tests.

transaction() ProfileSession[source]

Start a new interactive session with commit and rollback support.

If the current backend does not support transactions, then commit and rollback operations of the session will not have any effect.

update_settings(settings: Mapping[str, object])[source]

Update the scope with additional settings.

aries_cloudagent.messaging.responder module

A message responder.

The responder is provided to message handlers to enable them to send a new message in response to the message being handled.

class aries_cloudagent.messaging.responder.BaseResponder(*, connection_id: Optional[str] = None, reply_session_id: Optional[str] = None, reply_to_verkey: Optional[str] = None)[source]

Bases: ABC

Interface for message handlers to send responses.

async conn_rec_active_state_check(profile: Profile, connection_id: str, timeout: int = 7) bool[source]

Check if the connection record is ready for sending outbound message.

async create_outbound(message: Union[BaseMessage, str, bytes], *, connection_id: Optional[str] = None, reply_session_id: Optional[str] = None, reply_thread_id: Optional[str] = None, reply_to_verkey: Optional[str] = None, reply_from_verkey: Optional[str] = None, target: Optional[ConnectionTarget] = None, target_list: Optional[Sequence[ConnectionTarget]] = None, to_session_only: bool = False) OutboundMessage[source]

Create an OutboundMessage from a message payload.

async send(message: Union[BaseMessage, str, bytes], **kwargs) OutboundSendStatus[source]

Convert a message to an OutboundMessage and send it.

abstract async send_outbound(message: OutboundMessage, **kwargs) OutboundSendStatus[source]

Send an outbound message.

Parameters

message – The OutboundMessage to be sent

async send_reply(message: Union[BaseMessage, str, bytes], *, connection_id: Optional[str] = None, target: Optional[ConnectionTarget] = None, target_list: Optional[Sequence[ConnectionTarget]] = None) OutboundSendStatus[source]

Send a reply to an incoming message.

Parameters
  • message – the BaseMessage, or pre-packed str or bytes to reply with

  • connection_id – optionally override the target connection ID

  • target – optionally specify a ConnectionTarget to send to

Raises

ResponderError – If there is no active connection

abstract async send_webhook(topic: str, payload: dict)[source]

Dispatch a webhook. DEPRECATED: use the event bus instead.

Parameters
  • topic – the webhook topic identifier

  • payload – the webhook payload value

class aries_cloudagent.messaging.responder.MockResponder[source]

Bases: BaseResponder

Mock responder implementation for use by tests.

async send(message: Union[BaseMessage, str, bytes], **kwargs) OutboundSendStatus[source]

Convert a message to an OutboundMessage and send it.

async send_outbound(message: OutboundMessage, **kwargs) OutboundSendStatus[source]

Send an outbound message.

async send_reply(message: Union[BaseMessage, str, bytes], **kwargs) OutboundSendStatus[source]

Send a reply to an incoming message.

async send_webhook(topic: str, payload: dict)[source]

Send an outbound message.

exception aries_cloudagent.messaging.responder.ResponderError(*args, error_code: Optional[str] = None, **kwargs)[source]

Bases: BaseError

Responder error.

aries_cloudagent.messaging.util module

Utils for messages.

aries_cloudagent.messaging.util.canon(raw_attr_name: str) str[source]

Canonicalize input attribute name for indy proofs and credential offers.

Parameters

raw_attr_name – raw attribute name

Returns

canonicalized attribute name

aries_cloudagent.messaging.util.datetime_now() datetime[source]

Timestamp in UTC.

aries_cloudagent.messaging.util.datetime_to_str(dt: Optional[Union[str, datetime]]) Optional[str][source]

Convert a datetime object to an indy-standard datetime string.

Parameters

dt – May be a string or datetime to allow automatic conversion

aries_cloudagent.messaging.util.encode(orig: Any) str[source]

Encode a credential value as an int.

Encode credential attribute value, purely stringifying any int32 and leaving numeric int32 strings alone, but mapping any other input to a stringified 256-bit (but not 32-bit) integer. Predicates in indy-sdk operate on int32 values properly only when their encoded values match their raw values.

Parameters

orig – original value to encode

Returns

encoded value

aries_cloudagent.messaging.util.epoch_to_str(epoch: int) str[source]

Convert epoch seconds to indy-standard datetime string.

Parameters

epoch – epoch seconds

aries_cloudagent.messaging.util.str_to_datetime(dt: Union[str, datetime]) datetime[source]

Convert an indy-standard datetime string to a datetime.

Using a fairly lax regex pattern to match slightly different formats. In Python 3.7 datetime.fromisoformat might be used.

Parameters

dt – May be a string or datetime to allow automatic conversion

aries_cloudagent.messaging.util.str_to_epoch(dt: Union[str, datetime]) int[source]

Convert an indy-standard datetime string to epoch seconds.

Parameters

dt – May be a string or datetime to allow automatic conversion

aries_cloudagent.messaging.util.time_now() str[source]

Timestamp in ISO format.

aries_cloudagent.messaging.valid module

Validators for schema fields.

class aries_cloudagent.messaging.valid.Base58SHA256Hash(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against base58 encoding of SHA-256 hash.

EXAMPLE = 'H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV'
PATTERN = '^[base58.alphabet.decode]{43,44}$'
class aries_cloudagent.messaging.valid.Base64(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate base64 value.

EXAMPLE = 'ey4uLn0='
PATTERN = '^[a-zA-Z0-9+/]*={0,2}$'
class aries_cloudagent.messaging.valid.Base64URL(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate base64 value.

EXAMPLE = 'ey4uLn0='
PATTERN = '^[-_a-zA-Z0-9]*={0,2}$'
class aries_cloudagent.messaging.valid.Base64URLNoPad(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate base64 value.

EXAMPLE = 'ey4uLn0'
PATTERN = '^[-_a-zA-Z0-9]*$'
class aries_cloudagent.messaging.valid.CredentialContext(*args: Any, **kwargs: Any)[source]

Bases: Validator

Credential Context.

EXAMPLE = ['https://www.w3.org/2018/credentials/v1', 'https://www.w3.org/2018/credentials/examples/v1']
FIRST_CONTEXT = 'https://www.w3.org/2018/credentials/v1'
class aries_cloudagent.messaging.valid.CredentialStatus(*args: Any, **kwargs: Any)[source]

Bases: Validator

Credential status.

EXAMPLE = {'id': 'https://example.com/credentials/status/3#94567', 'statusListCredential': 'https://example.com/credentials/status/3', 'statusListIndex': '94567', 'statusPurpose': 'revocation', 'type': 'BitstringStatusListEntry'}
class aries_cloudagent.messaging.valid.CredentialSubject(*args: Any, **kwargs: Any)[source]

Bases: Validator

Credential subject.

EXAMPLE = {'alumniOf': {'id': 'did:example:c276e12ec21ebfeb1f712ebc6f1'}, 'id': 'did:example:ebfeb1f712ebc6f1c276e12ec21'}
class aries_cloudagent.messaging.valid.CredentialType(*args: Any, **kwargs: Any)[source]

Bases: Validator

Credential Type.

CREDENTIAL_TYPE = 'VerifiableCredential'
EXAMPLE = ['VerifiableCredential', 'AlumniCredential']
class aries_cloudagent.messaging.valid.DIDKey(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against DID key specification.

EXAMPLE = 'did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH'
PATTERN = re.compile('^did:key:z[base58.alphabet.decode]+$')
class aries_cloudagent.messaging.valid.DIDKeyOrRef(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against DID key specification.

EXAMPLE = 'did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH'
PATTERN = re.compile('^did:key:z[base58.alphabet.decode]+(?:#z[base58.alphabet.decode]+)?$')
class aries_cloudagent.messaging.valid.DIDKeyRef(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value as DID key reference.

EXAMPLE = 'did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH#z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH'
PATTERN = re.compile('^did:key:z[base58.alphabet.decode]+#z[base58.alphabet.decode]+$')
class aries_cloudagent.messaging.valid.DIDPosture(*args: Any, **kwargs: Any)[source]

Bases: OneOf

Validate value against defined DID postures.

EXAMPLE = 'wallet_only'
class aries_cloudagent.messaging.valid.DIDValidation(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against any valid DID spec.

EXAMPLE = 'did:peer:WgWxqztrNooG92RXvxSTWv'
FRAGMENT = '(\\#.*)?$'
METHOD = '([a-zA-Z0-9_]+)'
METHOD_ID = '([a-zA-Z0-9_.%-]+(:[a-zA-Z0-9_.%-]+)*)'
PARAMS = '((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)'
PATH = '(\\/[^#?]*)?'
PATTERN = re.compile('^did:([a-zA-Z0-9_]+):([a-zA-Z0-9_.%-]+(:[a-zA-Z0-9_.%-]+)*)((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(\\/[^#?]*)?([?][^#]*)?(\\#.*)?$$')
QUERY = '([?][^#]*)?'
class aries_cloudagent.messaging.valid.DIDWeb(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against did:web specification.

EXAMPLE = 'did:web:example.com'
PATTERN = re.compile('^(did:web:)([a-zA-Z0-9%._-]*:)*[a-zA-Z0-9%._-]+$')
class aries_cloudagent.messaging.valid.DictOrDictListField(*args: Any, **kwargs: Any)[source]

Bases: Field

Dict or Dict List field for Marshmallow.

class aries_cloudagent.messaging.valid.Endpoint(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against endpoint URL on any scheme.

EXAMPLE = 'https://myhost:8021'
PATTERN = '^[A-Za-z0-9\\.\\-\\+]+://([A-Za-z0-9][.A-Za-z0-9-_]+[A-Za-z0-9])+(:[1-9][0-9]*)?(/[^?&#]+)?$'
class aries_cloudagent.messaging.valid.EndpointType(*args: Any, **kwargs: Any)[source]

Bases: OneOf

Validate value against allowed endpoint/service types.

EXAMPLE = 'Endpoint'
class aries_cloudagent.messaging.valid.IndyCredDefId(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against indy credential definition identifier specification.

EXAMPLE = 'WgWxqztrNooG92RXvxSTWv:3:CL:20:tag'
PATTERN = '^([base58.alphabet.decode]{21,22}):3:CL:(([1-9][0-9]*)|([base58.alphabet.decode]{21,22}:2:.+:[0-9.]+)):(.+)?$'
class aries_cloudagent.messaging.valid.IndyCredRevId(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against indy credential revocation identifier specification.

EXAMPLE = '12345'
PATTERN = '^[1-9][0-9]*$'
class aries_cloudagent.messaging.valid.IndyDID(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against indy DID.

EXAMPLE = 'WgWxqztrNooG92RXvxSTWv'
PATTERN = re.compile('^(did:sov:)?[base58.alphabet.decode]{21,22}$')
class aries_cloudagent.messaging.valid.IndyExtraWQL(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value as potential extra WQL query in cred search for proof req.

EXAMPLE = '{"0_drink_uuid": {"attr::drink::value": "martini"}}'
PATTERN = '^{\\s*".*?"\\s*:\\s*{.*?}\\s*(,\\s*".*?"\\s*:\\s*{.*?}\\s*)*\\s*}$'
class aries_cloudagent.messaging.valid.IndyISO8601DateTime(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against ISO 8601 datetime format, indy profile.

EXAMPLE = '2021-12-31T23:59:59Z'
PATTERN = '^\\d{4}-\\d\\d-\\d\\d[T ]\\d\\d:\\d\\d(?:\\:(?:\\d\\d(?:\\.\\d{1,6})?))?(?:[+-]\\d\\d:?\\d\\d|Z|)$'
class aries_cloudagent.messaging.valid.IndyOrKeyDID(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Indy or Key DID class.

EXAMPLE = 'WgWxqztrNooG92RXvxSTWv'
PATTERN = '^did:key:z[base58.alphabet.decode]+$|^(did:sov:)?[base58.alphabet.decode]{21,22}$'
class aries_cloudagent.messaging.valid.IndyPredicate(*args: Any, **kwargs: Any)[source]

Bases: OneOf

Validate value against indy predicate.

EXAMPLE = '>='
class aries_cloudagent.messaging.valid.IndyRawPublicKey(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against indy (Ed25519VerificationKey2018) raw public key.

EXAMPLE = 'H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV'
PATTERN = '^[base58.alphabet.decode]{43,44}$'
class aries_cloudagent.messaging.valid.IndyRevRegId(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against indy revocation registry identifier specification.

EXAMPLE = 'WgWxqztrNooG92RXvxSTWv:4:WgWxqztrNooG92RXvxSTWv:3:CL:20:tag:CL_ACCUM:0'
PATTERN = '^([base58.alphabet.decode]{21,22}):4:([base58.alphabet.decode]{21,22}):3:CL:(([1-9][0-9]*)|([base58.alphabet.decode]{21,22}:2:.+:[0-9.]+))(:.+)?:CL_ACCUM:(.+$)'
class aries_cloudagent.messaging.valid.IndyRevRegSize(*args: Any, **kwargs: Any)[source]

Bases: Range

Validate value as indy revocation registry size.

EXAMPLE = 1000
class aries_cloudagent.messaging.valid.IndySchemaId(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against indy schema identifier specification.

EXAMPLE = 'WgWxqztrNooG92RXvxSTWv:2:schema_name:1.0'
PATTERN = '^[base58.alphabet.decode]{21,22}:2:.+:[0-9.]+$'
class aries_cloudagent.messaging.valid.IndyVersion(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against indy version specification.

EXAMPLE = '1.0'
PATTERN = '^[0-9.]+$'
class aries_cloudagent.messaging.valid.IndyWQL(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value as potential WQL query.

EXAMPLE = '{"attr::name::value": "Alex"}'
PATTERN = '^{.*}$'
class aries_cloudagent.messaging.valid.IntEpoch(*args: Any, **kwargs: Any)[source]

Bases: Range

Validate value against (integer) epoch format.

EXAMPLE = 1640995199
class aries_cloudagent.messaging.valid.JSONWebToken(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate JSON Web Token.

EXAMPLE = 'eyJhbGciOiJFZERTQSJ9.eyJhIjogIjAifQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk'
PATTERN = '^[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]*\\.[a-zA-Z0-9_-]+$'
class aries_cloudagent.messaging.valid.JWSHeaderKid(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against JWS header kid.

EXAMPLE = 'did:sov:LjgpST2rjsoxYegQDRm7EL#keys-4'
PATTERN = '^did:(?:key:z[base58.alphabet.decode]+|sov:[base58.alphabet.decode]{21,22}(;.*)?(\\?.*)?#.+)$'
class aries_cloudagent.messaging.valid.MaybeIndyDID(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against any valid DID spec or a short Indy DID.

EXAMPLE = 'did:peer:WgWxqztrNooG92RXvxSTWv'
PATTERN = re.compile('^(did:sov:)?[base58.alphabet.decode]{21,22}$|^did:([a-zA-Z0-9_]+):([a-zA-Z0-9_.%-]+(:[a-zA-Z0-9_.%-]+)*)((;[a-zA-Z0-9_.:%-]+=[a-zA-Z0-9_.:%-]*)*)(\\/[^#?]*)?([?][^#]*)?(\\#.*)?$$')
class aries_cloudagent.messaging.valid.NaturalNumber(*args: Any, **kwargs: Any)[source]

Bases: Range

Validate value as positive integer.

EXAMPLE = 10
class aries_cloudagent.messaging.valid.NonSDList(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate NonSD List.

EXAMPLE = ['name', 'address', 'address.street_address', 'nationalities[1:3]']
PATTERN = '[a-z0-9:\\[\\]_\\.@?\\(\\)]'
class aries_cloudagent.messaging.valid.NumericStrAny(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against any number numeric string.

EXAMPLE = '-1'
PATTERN = '^-?[0-9]*$'
class aries_cloudagent.messaging.valid.NumericStrNatural(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against natural number numeric string.

EXAMPLE = '1'
PATTERN = '^[1-9][0-9]*$'
class aries_cloudagent.messaging.valid.NumericStrWhole(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against whole number numeric string.

EXAMPLE = '0'
PATTERN = '^[0-9]*$'
class aries_cloudagent.messaging.valid.PresentationType(*args: Any, **kwargs: Any)[source]

Bases: Validator

Presentation Type.

EXAMPLE = ['VerifiablePresentation']
PRESENTATIONL_TYPE = 'VerifiablePresentation'
class aries_cloudagent.messaging.valid.RFC3339DateTime(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against RFC3339 datetime format.

EXAMPLE = '2010-01-01T19:23:24Z'
PATTERN = '^([0-9]{4})-([0-9]{2})-([0-9]{2})([Tt ]([0-9]{2}):([0-9]{2}):([0-9]{2})(\\.[0-9]+)?)?(([Zz]|([+-])([0-9]{2}):([0-9]{2})))?$'
class aries_cloudagent.messaging.valid.RoutingKey(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate between indy or did key.

Validate value against indy (Ed25519VerificationKey2018) raw public key or DID key specification.

EXAMPLE = 'did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH'
PATTERN = re.compile('^did:key:z[base58.alphabet.decode]+$|^[base58.alphabet.decode]{43,44}$')
class aries_cloudagent.messaging.valid.SDJSONWebToken(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate SD-JSON Web Token.

EXAMPLE = 'eyJhbGciOiJFZERTQSJ9.eyJhIjogIjAifQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk~WyJEM3BUSFdCYWNRcFdpREc2TWZKLUZnIiwgIkRFIl0~WyJPMTFySVRjRTdHcXExYW9oRkd0aDh3IiwgIlNBIl0~WyJkVmEzX1JlTGNsWTU0R1FHZm5oWlRnIiwgInVwZGF0ZWRfYXQiLCAxNTcwMDAwMDAwXQ'
PATTERN = '^[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]*\\.[a-zA-Z0-9_-]+(?:~[a-zA-Z0-9._-]+)*~?$'
class aries_cloudagent.messaging.valid.SHA256Hash(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate (binhex-encoded) SHA256 value.

EXAMPLE = '617a48c7c8afe0521efdc03e5bb0ad9e655893e6b4b51f0e794d70fba132aacb'
PATTERN = '^[a-fA-F0-9+/]{64}$'
class aries_cloudagent.messaging.valid.StrOrDictField(*args: Any, **kwargs: Any)[source]

Bases: Field

URI or Dict field for Marshmallow.

class aries_cloudagent.messaging.valid.StrOrNumberField(*args: Any, **kwargs: Any)[source]

Bases: Field

String or Number field for Marshmallow.

class aries_cloudagent.messaging.valid.UUIDFour(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate UUID4: 8-4-4-4-12 hex digits, the 13th of which being 4.

EXAMPLE = '3fa85f64-5717-4562-b3fc-2c963f66afa6'
PATTERN = '[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}'
class aries_cloudagent.messaging.valid.Uri(*args: Any, **kwargs: Any)[source]

Bases: Regexp

Validate value against URI on any scheme.

EXAMPLE = 'https://www.w3.org/2018/credentials/v1'
PATTERN = '\\w+:(\\/?\\/?)[^\\s]+'
class aries_cloudagent.messaging.valid.UriOrDictField(*args: Any, **kwargs: Any)[source]

Bases: StrOrDictField

URI or Dict field for Marshmallow.

class aries_cloudagent.messaging.valid.WholeNumber(*args: Any, **kwargs: Any)[source]

Bases: Range

Validate value as non-negative integer.

EXAMPLE = 0