aries_cloudagent.vc.vc_ld package

aries_cloudagent.vc.vc_ld.issue_vc(*, credential: dict, suite: aries_cloudagent.vc.ld_proofs.suites.linked_data_proof.LinkedDataProof, document_loader: Callable[[str, dict], dict], purpose: aries_cloudagent.vc.ld_proofs.purposes.proof_purpose.ProofPurpose = None) → dict

Issue a verifiable credential.

Takes the base credentail document, verifies it, and adds a digital signature to it.

Parameters:
  • credential (dict) – Base credential document.
  • suite (LinkedDataProof) – Signature suite to sign the credential with.
  • document_loader (DocumentLoader) – Document loader to use
  • purpose (ProofPurpose, optional) – A proof purpose instance that will match proofs to be verified and ensure they were created according to the appropriate purpose. Default to CredentialIssuancePurpose
Raises:

LinkedDataProofException – When the credential has an invalid structure OR signing fails

Returns:

The signed verifiable credential

Return type:

dict

aries_cloudagent.vc.vc_ld.verify_presentation(*, presentation: dict, suites: List[aries_cloudagent.vc.ld_proofs.suites.linked_data_proof.LinkedDataProof], document_loader: Callable[[str, dict], dict], purpose: aries_cloudagent.vc.ld_proofs.purposes.proof_purpose.ProofPurpose = None, challenge: str = None, domain: str = None) → aries_cloudagent.vc.vc_ld.validation_result.PresentationVerificationResult[source]

Verify presentation structure, credentials, proof purpose and signature.

Parameters:
  • presentation (dict) – The presentation to verify
  • suites (List[LinkedDataProof]) – The signature suites to verify with
  • document_loader (DocumentLoader) – Document loader used for resolving of documents
  • purpose (ProofPurpose, optional) – Proof purpose to use. Defaults to AuthenticationProofPurpose
  • challenge (str, optional) – The challenge to use for authentication. Required if purpose is not passed, not used if purpose is passed
  • domain (str, optional) – Domain to use for the authentication proof purpose. Not used if purpose is passed
Returns:

The result of the verification. Verified property

indicates whether the verification was successful

Return type:

PresentationVerificationResult

aries_cloudagent.vc.vc_ld.verify_credential(*, credential: dict, suites: List[aries_cloudagent.vc.ld_proofs.suites.linked_data_proof.LinkedDataProof], document_loader: Callable[[str, dict], dict], purpose: aries_cloudagent.vc.ld_proofs.purposes.proof_purpose.ProofPurpose = None) → aries_cloudagent.vc.ld_proofs.validation_result.DocumentVerificationResult[source]

Verify credential structure, proof purpose and signature.

Parameters:
  • credential (dict) – The credential to verify
  • suites (List[LinkedDataProof]) – The signature suites to verify with
  • document_loader (DocumentLoader) – Document loader used for resolving of documents
  • purpose (ProofPurpose, optional) – Proof purpose to use. Defaults to CredentialIssuancePurpose
Returns:

The result of the verification. Verified property

indicates whether the verification was successful

Return type:

DocumentVerificationResult

aries_cloudagent.vc.vc_ld.create_presentation(*, credentials: List[dict], presentation_id: str = None) → dict[source]

Create presentation and add the credentials to it.

Will validates the structure off all credentials, but does not sign the presentation yet. Call sing_presentation to do this.

Parameters:
  • credentials (List[dict]) – Credentails to add to the presentation
  • presentation_id (str, optional) – Id of the presentation. Defaults to None.
Raises:

LinkedDataProofException – When not all credentials have a valid structure

Returns:

The unsigned presentation object

Return type:

dict

aries_cloudagent.vc.vc_ld.sign_presentation(*, presentation: dict, suite: aries_cloudagent.vc.ld_proofs.suites.linked_data_proof.LinkedDataProof, document_loader: Callable[[str, dict], dict], purpose: aries_cloudagent.vc.ld_proofs.purposes.proof_purpose.ProofPurpose = None, challenge: str = None, domain: str = None) → dict[source]

Sign the presentation with the passed signature suite.

Will set a default AuthenticationProofPurpose if no proof purpose is passed.

Parameters:
  • presentation (dict) – The presentation to sign
  • suite (LinkedDataProof) – The signature suite to sign the presentation with
  • document_loader (DocumentLoader) – Document loader to use.
  • purpose (ProofPurpose, optional) – Purpose to use. Required if challenge is None
  • challenge (str, optional) – Challenge to use. Required if domain is None.
  • domain (str, optional) – Domain to use. Only used if purpose is None.
Raises:

LinkedDataProofException – When both purpose and challenge are not provided And when signing of the presentation fails

Returns:

A verifiable presentation object

Return type:

dict

aries_cloudagent.vc.vc_ld.derive_credential(*, credential: dict, reveal_document: dict, suite: aries_cloudagent.vc.ld_proofs.suites.linked_data_proof.LinkedDataProof, document_loader: Callable[[str, dict], dict]) → dict[source]

Derive new credential from the existing credential and the reveal document.

All proofs matching the signature suite type will be replaced with a derived proof. Other proofs will be discarded.

Parameters:
  • credential (dict) – The credential to derive the new credential from.
  • reveal_document (dict) – JSON-LD frame to select which attributes to include.
  • suite (LinkedDataProof) – The signature suite to use for derivation
  • document_loader (DocumentLoader) – The document loader to use.
Returns:

The derived credential.

Return type:

dict

class aries_cloudagent.vc.vc_ld.PresentationVerificationResult(*, verified: bool, presentation_result: aries_cloudagent.vc.ld_proofs.validation_result.DocumentVerificationResult = None, credential_results: List[aries_cloudagent.vc.ld_proofs.validation_result.DocumentVerificationResult] = None, errors: List[Exception] = None)[source]

Bases: object

Presentation verification result class.

class aries_cloudagent.vc.vc_ld.VerifiableCredential(context: Optional[List[Union[str, dict]]] = None, id: Optional[str] = None, type: Optional[List[str]] = None, issuer: Union[dict, str, None] = None, issuance_date: Optional[str] = None, expiration_date: Optional[str] = None, credential_subject: Union[dict, List[dict], None] = None, proof: Union[dict, aries_cloudagent.vc.vc_ld.models.linked_data_proof.LDProof, None] = None, **kwargs)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Verifiable Credential model.

class Meta[source]

Bases: object

VerifiableCredential metadata.

schema_class = 'CredentialSchema'
add_context(context: Union[str, dict])[source]

Add a context to this credential.

add_type(type: str)[source]

Add a type to this credential.

context

Getter for context.

context_urls

Getter for context urls.

credential_subject

Getter for credential subject.

credential_subject_ids

Getter for credential subject ids.

expiration_date

Getter for expiration date.

id

Getter for id.

issuance_date

Getter for issuance date.

issuer

Getter for issuer.

issuer_id

Getter for issuer id.

proof

Getter for proof.

type

Getter for type.

class aries_cloudagent.vc.vc_ld.LDProof(type: Optional[str] = None, proof_purpose: Optional[str] = None, verification_method: Optional[str] = None, created: Optional[str] = None, domain: Optional[str] = None, challenge: Optional[str] = None, jws: Optional[str] = None, proof_value: Optional[str] = None, nonce: Optional[str] = None, **kwargs)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModel

Linked Data Proof model.

class Meta[source]

Bases: object

LinkedDataProof metadata.

schema_class = 'LinkedDataProofSchema'
class aries_cloudagent.vc.vc_ld.LinkedDataProofSchema(*args, **kwargs)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModelSchema

Linked data proof schema.

Based on https://w3c-ccg.github.io/ld-proofs

class Meta[source]

Bases: object

Accept parameter overload.

model_class

alias of LDProof

unknown

Used by autodoc_mock_imports.

add_unknown_properties(data: dict, original, **kwargs)[source]

Add back unknown properties before outputting.

challenge

Used by autodoc_mock_imports.

created

Used by autodoc_mock_imports.

domain

Used by autodoc_mock_imports.

jws

Used by autodoc_mock_imports.

nonce

Used by autodoc_mock_imports.

proof_purpose

Used by autodoc_mock_imports.

proof_value

Used by autodoc_mock_imports.

type

Used by autodoc_mock_imports.

verification_method

Used by autodoc_mock_imports.

class aries_cloudagent.vc.vc_ld.CredentialSchema(*args, **kwargs)[source]

Bases: aries_cloudagent.messaging.models.base.BaseModelSchema

Linked data credential schema.

Based on https://www.w3.org/TR/vc-data-model

class Meta[source]

Bases: object

Accept parameter overload.

model_class

alias of VerifiableCredential

unknown

Used by autodoc_mock_imports.

add_unknown_properties(data: dict, original, **kwargs)[source]

Add back unknown properties before outputting.

context

Used by autodoc_mock_imports.

credential_subject

Dict or Dict List field for Marshmallow.

expiration_date

Used by autodoc_mock_imports.

id

Used by autodoc_mock_imports.

issuance_date

Used by autodoc_mock_imports.

issuer

URI or Dict field for Marshmallow.

proof

Used by autodoc_mock_imports.

type

Used by autodoc_mock_imports.

class aries_cloudagent.vc.vc_ld.VerifiableCredentialSchema(*args, **kwargs)[source]

Bases: aries_cloudagent.vc.vc_ld.models.credential.CredentialSchema

Linked data verifiable credential schema.

Based on https://www.w3.org/TR/vc-data-model

proof

Used by autodoc_mock_imports.

Submodules

aries_cloudagent.vc.vc_ld.issue module

Verifiable Credential issuance methods.

aries_cloudagent.vc.vc_ld.issue.issue(*, credential: dict, suite: aries_cloudagent.vc.ld_proofs.suites.linked_data_proof.LinkedDataProof, document_loader: Callable[[str, dict], dict], purpose: aries_cloudagent.vc.ld_proofs.purposes.proof_purpose.ProofPurpose = None) → dict[source]

Issue a verifiable credential.

Takes the base credentail document, verifies it, and adds a digital signature to it.

Parameters:
  • credential (dict) – Base credential document.
  • suite (LinkedDataProof) – Signature suite to sign the credential with.
  • document_loader (DocumentLoader) – Document loader to use
  • purpose (ProofPurpose, optional) – A proof purpose instance that will match proofs to be verified and ensure they were created according to the appropriate purpose. Default to CredentialIssuancePurpose
Raises:

LinkedDataProofException – When the credential has an invalid structure OR signing fails

Returns:

The signed verifiable credential

Return type:

dict

aries_cloudagent.vc.vc_ld.prove module

Verifiable Credential and Presentation proving methods.

aries_cloudagent.vc.vc_ld.prove.create_presentation(*, credentials: List[dict], presentation_id: str = None) → dict[source]

Create presentation and add the credentials to it.

Will validates the structure off all credentials, but does not sign the presentation yet. Call sing_presentation to do this.

Parameters:
  • credentials (List[dict]) – Credentails to add to the presentation
  • presentation_id (str, optional) – Id of the presentation. Defaults to None.
Raises:

LinkedDataProofException – When not all credentials have a valid structure

Returns:

The unsigned presentation object

Return type:

dict

aries_cloudagent.vc.vc_ld.prove.derive_credential(*, credential: dict, reveal_document: dict, suite: aries_cloudagent.vc.ld_proofs.suites.linked_data_proof.LinkedDataProof, document_loader: Callable[[str, dict], dict]) → dict[source]

Derive new credential from the existing credential and the reveal document.

All proofs matching the signature suite type will be replaced with a derived proof. Other proofs will be discarded.

Parameters:
  • credential (dict) – The credential to derive the new credential from.
  • reveal_document (dict) – JSON-LD frame to select which attributes to include.
  • suite (LinkedDataProof) – The signature suite to use for derivation
  • document_loader (DocumentLoader) – The document loader to use.
Returns:

The derived credential.

Return type:

dict

aries_cloudagent.vc.vc_ld.prove.sign_presentation(*, presentation: dict, suite: aries_cloudagent.vc.ld_proofs.suites.linked_data_proof.LinkedDataProof, document_loader: Callable[[str, dict], dict], purpose: aries_cloudagent.vc.ld_proofs.purposes.proof_purpose.ProofPurpose = None, challenge: str = None, domain: str = None) → dict[source]

Sign the presentation with the passed signature suite.

Will set a default AuthenticationProofPurpose if no proof purpose is passed.

Parameters:
  • presentation (dict) – The presentation to sign
  • suite (LinkedDataProof) – The signature suite to sign the presentation with
  • document_loader (DocumentLoader) – Document loader to use.
  • purpose (ProofPurpose, optional) – Purpose to use. Required if challenge is None
  • challenge (str, optional) – Challenge to use. Required if domain is None.
  • domain (str, optional) – Domain to use. Only used if purpose is None.
Raises:

LinkedDataProofException – When both purpose and challenge are not provided And when signing of the presentation fails

Returns:

A verifiable presentation object

Return type:

dict

aries_cloudagent.vc.vc_ld.validation_result module

Presentation verification and validation result classes.

class aries_cloudagent.vc.vc_ld.validation_result.PresentationVerificationResult(*, verified: bool, presentation_result: aries_cloudagent.vc.ld_proofs.validation_result.DocumentVerificationResult = None, credential_results: List[aries_cloudagent.vc.ld_proofs.validation_result.DocumentVerificationResult] = None, errors: List[Exception] = None)[source]

Bases: object

Presentation verification result class.

aries_cloudagent.vc.vc_ld.verify module

Verifiable Credential and Presentation verification methods.

aries_cloudagent.vc.vc_ld.verify.verify_presentation(*, presentation: dict, suites: List[aries_cloudagent.vc.ld_proofs.suites.linked_data_proof.LinkedDataProof], document_loader: Callable[[str, dict], dict], purpose: aries_cloudagent.vc.ld_proofs.purposes.proof_purpose.ProofPurpose = None, challenge: str = None, domain: str = None) → aries_cloudagent.vc.vc_ld.validation_result.PresentationVerificationResult[source]

Verify presentation structure, credentials, proof purpose and signature.

Parameters:
  • presentation (dict) – The presentation to verify
  • suites (List[LinkedDataProof]) – The signature suites to verify with
  • document_loader (DocumentLoader) – Document loader used for resolving of documents
  • purpose (ProofPurpose, optional) – Proof purpose to use. Defaults to AuthenticationProofPurpose
  • challenge (str, optional) – The challenge to use for authentication. Required if purpose is not passed, not used if purpose is passed
  • domain (str, optional) – Domain to use for the authentication proof purpose. Not used if purpose is passed
Returns:

The result of the verification. Verified property

indicates whether the verification was successful

Return type:

PresentationVerificationResult

aries_cloudagent.vc.vc_ld.verify.verify_credential(*, credential: dict, suites: List[aries_cloudagent.vc.ld_proofs.suites.linked_data_proof.LinkedDataProof], document_loader: Callable[[str, dict], dict], purpose: aries_cloudagent.vc.ld_proofs.purposes.proof_purpose.ProofPurpose = None) → aries_cloudagent.vc.ld_proofs.validation_result.DocumentVerificationResult[source]

Verify credential structure, proof purpose and signature.

Parameters:
  • credential (dict) – The credential to verify
  • suites (List[LinkedDataProof]) – The signature suites to verify with
  • document_loader (DocumentLoader) – Document loader used for resolving of documents
  • purpose (ProofPurpose, optional) – Proof purpose to use. Defaults to CredentialIssuancePurpose
Returns:

The result of the verification. Verified property

indicates whether the verification was successful

Return type:

DocumentVerificationResult