aries_cloudagent.protocols.present_proof.dif package

Submodules

aries_cloudagent.protocols.present_proof.dif.pres_exch module

Schemas for dif presentation exchange attachment.

class aries_cloudagent.protocols.present_proof.dif.pres_exch.ClaimFormat(*, jwt: Optional[Mapping] = None, jwt_vc: Optional[Mapping] = None, jwt_vp: Optional[Mapping] = None, ldp: Optional[Mapping] = None, ldp_vc: Optional[Mapping] = None, ldp_vp: Optional[Mapping] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Defines Claim field.

class Meta[source]

Bases: object

ClaimFormat metadata.

schema_class = 'ClaimFormatSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.ClaimFormatSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single ClaimFormat Schema.

class Meta[source]

Bases: object

ClaimFormatSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.ClaimFormat

jwt
jwt_vc
jwt_vp
ldp
ldp_vc
ldp_vp
class aries_cloudagent.protocols.present_proof.dif.pres_exch.Constraints(*, subject_issuer: Optional[str] = None, limit_disclosure: Optional[bool] = None, holders: Optional[Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFHolder]] = None, _fields: Optional[Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFField]] = None, status_active: Optional[str] = None, status_suspended: Optional[str] = None, status_revoked: Optional[str] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Single Constraints which describes InputDescriptor’s Contraint field.

class Meta[source]

Bases: object

Constraints metadata.

schema_class = 'ConstraintsSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.ConstraintsSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single Constraints Schema.

class Meta[source]

Bases: object

ConstraintsSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.Constraints

extract_info(data, **kwargs)

Support deserialization of statuses according to DIF spec.

holders
limit_disclosure
reformat_data(data, **kwargs)

Support serialization of statuses according to DIF spec.

status_active
status_revoked
status_suspended
subject_issuer
class aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFField(*, id: Optional[str] = None, paths: Optional[Sequence[str]] = None, purpose: Optional[str] = None, predicate: Optional[str] = None, _filter: Optional[aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Single Field object for the Constraint.

class Meta[source]

Bases: object

Field metadata.

schema_class = 'DIFFieldSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFFieldSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single Field Schema.

class Meta[source]

Bases: object

DIFFieldSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFField

id
paths
predicate
purpose
class aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFHolder(*, field_ids: Optional[Sequence[str]] = None, directive: Optional[str] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Single Holder object for Constraints.

class Meta[source]

Bases: object

Holder metadata.

schema_class = 'DIFHolderSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFHolderSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single Holder Schema.

class Meta[source]

Bases: object

DIFHolderSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFHolder

directive
field_ids
class aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFOptions(*, challenge: Optional[str] = None, domain: Optional[str] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Single DIFOptions object.

class Meta[source]

Bases: object

DIFOptions metadata.

schema_class = 'DIFOptionsSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFOptionsSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Schema for options required for the Prover to fulfill the Verifier’s request.

class Meta[source]

Bases: object

DIFOptionsSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFOptions

challenge
domain
class aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter(*, _not: bool = False, _type: Optional[str] = None, fmt: Optional[str] = None, pattern: Optional[str] = None, minimum: Optional[str] = None, maximum: Optional[str] = None, min_length: Optional[int] = None, max_length: Optional[int] = None, exclusive_min: Optional[str] = None, exclusive_max: Optional[str] = None, const: Optional[str] = None, enums: Optional[Sequence[str]] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Single Filter for the Constraint object.

class Meta[source]

Bases: object

Filter metadata.

schema_class = 'FilterSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.FilterSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single Filter Schema.

class Meta[source]

Bases: object

FilterSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter

const

String or Number field for Marshmallow.

enums
exclusive_max

String or Number field for Marshmallow.

exclusive_min

String or Number field for Marshmallow.

extract_info(data, **kwargs)

Enum validation and not filter logic.

fmt
max_length
maximum

String or Number field for Marshmallow.

min_length
minimum

String or Number field for Marshmallow.

pattern
serialize_reformat(data, **kwargs)

Support serialization of not filter according to DIF spec.

class aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptorMapping(*, id: Optional[str] = None, fmt: Optional[str] = None, path: Optional[str] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Single InputDescriptorMapping object.

class Meta[source]

Bases: object

InputDescriptorMapping metadata.

schema_class = 'InputDescriptorMappingSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptorMappingSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single InputDescriptorMapping Schema.

class Meta[source]

Bases: object

InputDescriptorMappingSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptorMapping

fmt
id
path
class aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptors(*, id: Optional[str] = None, groups: Optional[Sequence[str]] = None, name: Optional[str] = None, purpose: Optional[str] = None, metadata: Optional[dict] = None, constraint: Optional[aries_cloudagent.protocols.present_proof.dif.pres_exch.Constraints] = None, schemas: Optional[aries_cloudagent.protocols.present_proof.dif.pres_exch.SchemasInputDescriptorFilter] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Input Descriptors.

class Meta[source]

Bases: object

InputDescriptors metadata.

schema_class = 'InputDescriptorsSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptorsSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single InputDescriptors Schema.

class Meta[source]

Bases: object

InputDescriptorsSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptors

constraint
groups
id
metadata
name
purpose
schemas
class aries_cloudagent.protocols.present_proof.dif.pres_exch.PresentationDefinition(*, id: Optional[str] = None, name: Optional[str] = None, purpose: Optional[str] = None, fmt: Optional[aries_cloudagent.protocols.present_proof.dif.pres_exch.ClaimFormat] = None, submission_requirements: Optional[Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.SubmissionRequirements]] = None, input_descriptors: Optional[Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptors]] = None, **kwargs)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

https://identity.foundation/presentation-exchange/.

class Meta[source]

Bases: object

PresentationDefinition metadata.

schema_class = 'PresentationDefinitionSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.PresentationDefinitionSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single Presentation Definition Schema.

class Meta[source]

Bases: object

PresentationDefinitionSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.PresentationDefinition

fmt
id
input_descriptors
name
purpose
submission_requirements
class aries_cloudagent.protocols.present_proof.dif.pres_exch.PresentationSubmission(*, id: Optional[str] = None, definition_id: Optional[str] = None, descriptor_maps: Optional[Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptorMapping]] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Single PresentationSubmission object.

class Meta[source]

Bases: object

PresentationSubmission metadata.

schema_class = 'PresentationSubmissionSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.PresentationSubmissionSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single PresentationSubmission Schema.

class Meta[source]

Bases: object

PresentationSubmissionSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.PresentationSubmission

definition_id
descriptor_maps
id
class aries_cloudagent.protocols.present_proof.dif.pres_exch.Requirement(*, count: Optional[int] = None, maximum: Optional[int] = None, minimum: Optional[int] = None, input_descriptors: Optional[Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptors]] = None, nested_req: Optional[Sequence] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Single Requirement generated from toRequirement function.

class Meta[source]

Bases: object

Requirement metadata.

schema_class = 'RequirementSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.RequirementSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single Requirement Schema.

class Meta[source]

Bases: object

RequirementSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.Requirement

count
input_descriptors
maximum
minimum
nested_req
class aries_cloudagent.protocols.present_proof.dif.pres_exch.SchemaInputDescriptor(*, uri: Optional[str] = None, required: Optional[bool] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

SchemaInputDescriptor.

class Meta[source]

Bases: object

SchemaInputDescriptor metadata.

schema_class = 'SchemaInputDescriptorSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.SchemaInputDescriptorSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single SchemaField Schema.

class Meta[source]

Bases: object

SchemaInputDescriptorSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.SchemaInputDescriptor

required
uri
class aries_cloudagent.protocols.present_proof.dif.pres_exch.SchemasInputDescriptorFilter(*, oneof_filter: bool = False, uri_groups: Optional[Sequence[Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.SchemaInputDescriptor]]] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

SchemasInputDescriptorFilter.

class Meta[source]

Bases: object

InputDescriptor Schemas filter metadata.

schema_class = 'SchemasInputDescriptorFilterSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.SchemasInputDescriptorFilterSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single SchemasInputDescriptorFilterSchema Schema.

class Meta[source]

Bases: object

SchemasInputDescriptorFilterSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.SchemasInputDescriptorFilter

extract_info(data, **kwargs)

deserialize.

oneof_filter
uri_groups
class aries_cloudagent.protocols.present_proof.dif.pres_exch.SubmissionRequirements(*, _name: Optional[str] = None, purpose: Optional[str] = None, rule: Optional[str] = None, count: Optional[int] = None, minimum: Optional[int] = None, maximum: Optional[int] = None, _from: Optional[str] = None, from_nested: Optional[Sequence] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

describes input to be submitted via a presentation submission.

class Meta[source]

Bases: object

SubmissionRequirements metadata.

schema_class = 'SubmissionRequirementsSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.SubmissionRequirementsSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single Presentation Definition Schema.

class Meta[source]

Bases: object

SubmissionRequirementsSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.SubmissionRequirements

count
from_nested
maximum
minimum
purpose
rule
validate_from(data, **kwargs)

Support validation of from and from_nested.

class aries_cloudagent.protocols.present_proof.dif.pres_exch.VerifiablePresentation(*, id: Optional[str] = None, contexts: Optional[Sequence[Union[str, dict]]] = None, types: Optional[Sequence[str]] = None, credentials: Optional[Sequence[dict]] = None, proof: Optional[Sequence[dict]] = None, presentation_submission: Optional[aries_cloudagent.protocols.present_proof.dif.pres_exch.PresentationSubmission] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Single VerifiablePresentation object.

class Meta[source]

Bases: object

VerifiablePresentation metadata.

schema_class = 'VerifiablePresentationSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_exch.VerifiablePresentationSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Single Verifiable Presentation Schema.

class Meta[source]

Bases: object

VerifiablePresentationSchema metadata.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_exch.VerifiablePresentation

contexts
credentials
id
presentation_submission
proof
types

aries_cloudagent.protocols.present_proof.dif.pres_exch_handler module

Utilities for dif presentation exchange attachment.

General Flow: create_vp -> make_requirement [create a Requirement from SubmissionRequirements and Descriptors] -> apply_requirement [filter credentials] -> merge [return applicable credential list and descriptor_map for presentation_submission] returns VerifiablePresentation

exception aries_cloudagent.protocols.present_proof.dif.pres_exch_handler.DIFPresExchError(*args, error_code: Optional[str] = None, **kwargs)[source]

Bases: aries_cloudagent.core.error.BaseError

Base class for DIF Presentation Exchange related errors.

class aries_cloudagent.protocols.present_proof.dif.pres_exch_handler.DIFPresExchHandler(profile: aries_cloudagent.core.profile.Profile, pres_signing_did: Optional[str] = None, proof_type: Optional[str] = None, reveal_doc: Optional[dict] = None)[source]

Bases: object

Base Presentation Exchange Handler.

DERIVED_PROOF_TYPE_SIGNATURE_SUITE_MAPPING = {'BbsBlsSignatureProof2020': <class 'aries_cloudagent.vc.ld_proofs.suites.bbs_bls_signature_proof_2020.BbsBlsSignatureProof2020'>}
DERIVE_SIGNATURE_SUITE_KEY_TYPE_MAPPING = {<class 'aries_cloudagent.vc.ld_proofs.suites.bbs_bls_signature_proof_2020.BbsBlsSignatureProof2020'>: <aries_cloudagent.wallet.key_type.KeyType object>}
ISSUE_SIGNATURE_SUITE_KEY_TYPE_MAPPING = {<class 'aries_cloudagent.vc.ld_proofs.suites.ed25519_signature_2018.Ed25519Signature2018'>: <aries_cloudagent.wallet.key_type.KeyType object>}
PROOF_TYPE_SIGNATURE_SUITE_MAPPING = {'Ed25519Signature2018': <class 'aries_cloudagent.vc.ld_proofs.suites.ed25519_signature_2018.Ed25519Signature2018'>}
async apply_constraint_received_cred(constraint: aries_cloudagent.protocols.present_proof.dif.pres_exch.Constraints, cred_dict: dict) bool[source]

Evaluate constraint from the request against received credential.

async apply_requirements(req: aries_cloudagent.protocols.present_proof.dif.pres_exch.Requirement, credentials: Sequence[aries_cloudagent.storage.vc_holder.vc_record.VCRecord], records_filter: Optional[dict] = None) dict[source]

Apply Requirement.

Parameters
  • req – Requirement

  • credentials – Sequence of credentials to check against

Returns

dict of input_descriptor ID key to list of credential_json

build_nested_paths_dict(key: str, value: str, nested_field_paths: dict, cred_dict: dict) dict[source]

Build and return nested_field_paths dict.

check_attr_in_extracted_dict(extracted_dict: dict, nested_attr_values: dict) bool[source]

Check if keys of extracted_dict exists in nested_attr_values.

check_filter_only_type_enforced(_filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Check if only type is specified in filter.

Parameters

_filter – Filter

Returns

bool

check_if_cred_id_derived(id: str) bool[source]

Check if credential or credentialSubjet id is derived.

const_check(val: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Const check.

Returns True if value is equal to filter specified check

Parameters
  • val – value to check, extracted from match

  • _filter – Filter

Returns

bool

contains(data: Sequence[str], e: str) bool[source]

Check for e in data.

Returns True if e exists in data else return False

Parameters
  • data – Sequence of str

  • e – str value to check

Returns

bool

create_vcrecord(cred_dict: dict) aries_cloudagent.storage.vc_holder.vc_record.VCRecord[source]

Return VCRecord from a credential dict.

async create_vp(credentials: Sequence[aries_cloudagent.storage.vc_holder.vc_record.VCRecord], pd: aries_cloudagent.protocols.present_proof.dif.pres_exch.PresentationDefinition, challenge: Optional[str] = None, domain: Optional[str] = None, records_filter: Optional[dict] = None) Union[Sequence[dict], dict][source]

Create VerifiablePresentation.

Parameters
  • credentials – Sequence of VCRecords

  • pd – PresentationDefinition

Returns

VerifiablePresentation

credential_match_schema(credential: aries_cloudagent.storage.vc_holder.vc_record.VCRecord, schema_id: str) bool[source]

Credential matching by schema.

Used by filter_schema to check if credential.schema_ids or credential.types matched with schema_id

Parameters
  • credential – VCRecord to check

  • schema_id – schema uri to check

Returns

bool

enum_check(val: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Enum check.

Returns True if value is contained to filter specified list

Parameters
  • val – value to check, extracted from match

  • _filter – Filter

Returns

bool

exclusive_maximum_check(val: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Exclusivemaximum check.

Returns True if value less than filter specified check

Parameters
  • val – value to check, extracted from match

  • _filter – Filter

Returns

bool

exclusive_minimum_check(val: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Exclusiveminimum check.

Returns True if value greater than filter specified check

Parameters
  • val – value to check, extracted from match

  • _filter – Filter

Returns

bool

field_ids_for_is_holder(constraints: aries_cloudagent.protocols.present_proof.dif.pres_exch.Constraints) Sequence[str][source]

Return list of field ids for whose subject holder verification is requested.

async filter_by_field(field: aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFField, credential: aries_cloudagent.storage.vc_holder.vc_record.VCRecord) bool[source]

Apply filter on VCRecord.

Checks if a credential is applicable

Parameters
  • field – Field contains filtering spec

  • credential – credential to apply filtering on

Returns

bool

async filter_constraints(constraints: aries_cloudagent.protocols.present_proof.dif.pres_exch.Constraints, credentials: Sequence[aries_cloudagent.storage.vc_holder.vc_record.VCRecord]) Sequence[aries_cloudagent.storage.vc_holder.vc_record.VCRecord][source]

Return list of applicable VCRecords after applying filtering.

Parameters
  • constraints – Constraints

  • credentials – Sequence of credentials to apply filtering on

Returns

Sequence of applicable VCRecords

async filter_creds_record_id(credentials: Sequence[aries_cloudagent.storage.vc_holder.vc_record.VCRecord], records_list: Sequence[str]) Sequence[aries_cloudagent.storage.vc_holder.vc_record.VCRecord][source]

Return filtered list of credentials using records_list.

async filter_schema(credentials: Sequence[aries_cloudagent.storage.vc_holder.vc_record.VCRecord], schemas: aries_cloudagent.protocols.present_proof.dif.pres_exch.SchemasInputDescriptorFilter) Sequence[aries_cloudagent.storage.vc_holder.vc_record.VCRecord][source]

Filter by schema.

Returns list of credentials where credentialSchema.id or types matched with input_descriptors.schema.uri

Parameters
  • credentials – list of VCRecords to check

  • schemas – list of schemas from the input_descriptors

Returns

Sequence of filtered VCRecord

get_dict_keys_from_path(derived_cred_dict: dict, path: str) List[source]

Return additional_attrs to build nested_field_paths.

async get_sign_key_credential_subject_id(applicable_creds: Sequence[aries_cloudagent.storage.vc_holder.vc_record.VCRecord]) Tuple[Optional[str], Sequence[dict]][source]

Get the issuer_id and filtered_creds from enclosed credentials subject_ids.

async get_updated_field(field: aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFField, cred: dict) aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFField[source]

Return field with updated json path, if necessary.

async get_updated_path(cred_dict: dict, json_path: str) str[source]

Return updated json path, if necessary.

is_len_applicable(req: aries_cloudagent.protocols.present_proof.dif.pres_exch.Requirement, val: int) bool[source]

Check and validate requirement minimum, maximum and count.

Parameters
  • req – Requirement

  • val – int value to check

Returns

bool

is_numeric(val: any)[source]

Check if val is an int or float.

Parameters

val – to check

Returns

numeric value

Raises

DIFPresExchError – Provided value has invalid/incompatible type

length_check(val: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Length check.

Returns True if length value string meets the minLength and maxLength specs

Parameters
  • val – value to check, extracted from match

  • _filter – Filter

Returns

bool

async make_requirement(srs: Optional[Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.SubmissionRequirements]] = None, descriptors: Optional[Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptors]] = None) aries_cloudagent.protocols.present_proof.dif.pres_exch.Requirement[source]

Return Requirement.

Creates and return Requirement with nesting if required using to_requirement()

Parameters
  • srs – list of submission_requirements

  • descriptors – list of input_descriptors

Raises

DIFPresExchError – If not able to create requirement

maximum_check(val: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Maximum check.

Returns True if value less than equal to filter specified check

Parameters
  • val – value to check, extracted from match

  • _filter – Filter

Returns

bool

async merge(dict_descriptor_creds: dict) Tuple[Sequence[aries_cloudagent.storage.vc_holder.vc_record.VCRecord], Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptorMapping]][source]

Return applicable credentials and descriptor_map for attachment.

Used for generating the presentation_submission property with the descriptor_map, mantaining the order in which applicable credential list is returned.

Parameters
  • dict_descriptor_creds – dict with input_descriptor.id as keys

  • merged_credentials_list (and) –

Returns

Tuple of applicable credential list and descriptor map

async merge_nested_results(nested_result: Sequence[dict], exclude: dict) dict[source]

Merge nested results with merged credentials.

Parameters
  • nested_result – Sequence of dict containing input_descriptor.id as keys and list of creds as values

  • exclude – dict containing info about credentials to exclude

Returns

dict with input_descriptor.id as keys and merged_credentials_list as values

minimum_check(val: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Minimum check.

Returns True if value greater than equal to filter specified check

Parameters
  • val – value to check, extracted from match

  • _filter – Filter

Returns

bool

nested_get(input_dict: dict, path: str) Union[Dict, List][source]

Return dict or list from nested dict given list of nested_key.

new_credential_builder(new_credential: dict, unflatten_dict: dict) dict[source]

Update and return the new_credential.

Parameters
  • new_credential – credential dict to be updated and returned

  • unflatten_dict – dict with traversal path as key and match_value as value

Returns

dict

pattern_check(val: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Pattern check.

Returns True if value string matches the specified pattern

Parameters
  • val – value to check, extracted from match

  • _filter – Filter

Returns

bool

async process_constraint_holders(subject_ids: Sequence[str]) bool[source]

Check if holder or subject of claim still controls the identifier.

process_numeric_val(val: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Trigger Filter checks.

Trigger appropriate check for a number type filter, according to _filter spec.

Parameters
  • val – value to check, extracted from match

  • _filter – Filter

Returns

bool

process_string_val(val: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Trigger Filter checks.

Trigger appropriate check for a string type filter, according to _filter spec.

Parameters
  • val – value to check, extracted from match

  • _filter – Filter

Returns

bool

async restrict_field_paths_one_of_filter(field_paths: Sequence[str], cred_dict: dict) Sequence[str][source]

Return field_paths that are applicable to oneof_filter.

reveal_doc(credential_dict: dict, constraints: aries_cloudagent.protocols.present_proof.dif.pres_exch.Constraints)[source]

Generate reveal_doc dict for deriving credential.

string_to_timezone_aware_datetime(datetime_str: str) datetime.datetime[source]

Convert string with PYTZ timezone to datetime for comparison.

subject_is_issuer(credential: aries_cloudagent.storage.vc_holder.vc_record.VCRecord) bool[source]

subject_is_issuer check.

Returns True if cred issuer_id is in subject_ids

Parameters

credential – VCRecord

Returns

bool

async to_requirement(sr: aries_cloudagent.protocols.present_proof.dif.pres_exch.SubmissionRequirements, descriptors: Sequence[aries_cloudagent.protocols.present_proof.dif.pres_exch.InputDescriptors]) aries_cloudagent.protocols.present_proof.dif.pres_exch.Requirement[source]

Return Requirement.

Parameters
  • sr – submission_requirement

  • descriptors – list of input_descriptors

Raises

DIFPresExchError – If not able to create requirement

validate_patch(to_check: any, _filter: aries_cloudagent.protocols.present_proof.dif.pres_exch.Filter) bool[source]

Apply filter on match_value.

Utility function used in applying filtering to a cred by triggering checks according to filter specification

Parameters
  • to_check – value to check, extracted from match

  • _filter – Filter

Returns

bool

async verify_received_pres(pd: aries_cloudagent.protocols.present_proof.dif.pres_exch.PresentationDefinition, pres: Union[Sequence[dict], dict])[source]

Verify credentials received in presentation.

Parameters
  • pres – received VerifiablePresentation

  • pd – PresentationDefinition

aries_cloudagent.protocols.present_proof.dif.pres_proposal_schema module

DIF Proof Proposal Schema.

class aries_cloudagent.protocols.present_proof.dif.pres_proposal_schema.DIFProofProposalSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Schema for DIF Proposal.

input_descriptors
options

aries_cloudagent.protocols.present_proof.dif.pres_request_schema module

DIF Proof Request Schema.

class aries_cloudagent.protocols.present_proof.dif.pres_request_schema.DIFPresSpecSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Schema for DIF Presentation Spec schema.

issuer_id
presentation_definition
record_ids
reveal_doc
class aries_cloudagent.protocols.present_proof.dif.pres_request_schema.DIFProofRequest(presentation_definition: Optional[Union[dict, aries_cloudagent.protocols.present_proof.dif.pres_exch.PresentationDefinition]], options: Optional[Union[dict, aries_cloudagent.protocols.present_proof.dif.pres_exch.DIFOptions]] = None)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

DIF presentation request input detail.

class Meta[source]

Bases: object

DIFProofRequest metadata.

schema_class = 'DIFProofRequestSchema'
class aries_cloudagent.protocols.present_proof.dif.pres_request_schema.DIFProofRequestSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Schema for DIF presentation request.

class Meta[source]

Bases: object

Accept parameter overload.

model_class

alias of aries_cloudagent.protocols.present_proof.dif.pres_request_schema.DIFProofRequest

options
presentation_definition

aries_cloudagent.protocols.present_proof.dif.pres_schema module

DIF Proof Schema.

class aries_cloudagent.protocols.present_proof.dif.pres_schema.DIFProofSchema(*args: Any, **kwargs: Any)[source]

Bases: marshmallow.

Schema for DIF Proof.

contexts
credentials
id
presentation_submission
proof
types