aries-cloudagent-python
aries-cloudagent-python copied to clipboard
Error when receiving a JSON-LD VC with multiple proofs
According to ProofSet.add() (see here) ACA-Py allows to create VCs with multiple proofs.
Current Behavior I setup two ACA-Py agents (0.7.4), enable a connection between them and then issue the following VC from Alice to Bob:
POST /issue-credential-2.0/send
{
"connection_id":"abc...",
"filter":{
"ld_proof":{
"credential":{
"@context":[
"https://www.w3.org/2018/credentials/v1",
"https://essif-lab.pages.grnet.gr/interoperability/eidas-generic-use-case/contexts/cades-signature.jsonld",
"https://w3id.org/citizenship/v1",
"https://w3id.org/security/bbs/v1"
],
"credentialSubject":{
"familyName":"Doe",
"gender":"Male",
"givenName":"John",
"type":[
"PermanentResident",
"Person"
]
},
"proof":{
"type":"CAdESRSASignature2020",
"proofPurpose":"assertionMethod",
"created":"2019-08-23T20:21:34Z",
"verificationMethod":"did:factom:5d0dd58757119dd437c70d92b44fbf86627ee275f0f2146c3d99e441da342d9f#MIIEEzCCAvugAwIBAgIUJ0hTJswF5BBreQgbEQL8FTLXwHAwDQYJKoZIhvcNAQELBQAwgZgxCzAJBgNVBAYTAk5MMRYwFAYDVQQIDA1Ob29yZC1Ib2xsYW5kMRIwEAYDVQQHDAlBbXN0ZXJkYW0xFDASBgNVBAoMC1Rlc3RDb21wYW55MQswCQYDVQQLDAJJVDEVMBMGA1UEAwwMU2NvdHQgTWFsbGV5MSMwIQYJKoZIhvcNAQkBFhRzbWFsbGV5QHNwaGVyZW9uLmNvbTAeFw0yMDEyMDIxNDMxMDVaFw0zMDExMzAxNDMxMDVaMIGYMQswCQYDVQQGEwJOTDEWMBQGA1UECAwNTm9vcmQtSG9sbGFuZDESMBAGA1UEBwwJQW1zdGVyZGFtMRQwEgYDVQQKDAtUZXN0Q29tcGFueTELMAkGA1UECwwCSVQxFTATBgNVBAMMDFNjb3R0IE1hbGxleTEjMCEGCSqGSIb3DQEJARYUc21hbGxleUBzcGhlcmVvbi5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkZfqj459pkdt5GLelamSySQP3owkyYOXW1NLTLr3dC_RzE8x3SRpHQwaRErm0VYvV35JVvubGZgatm5SNsTUHw7Ywrwy-hGFCXo2JOabL0lj3EpkpRPpVS7GXAlMxTvfZihw8IgmA3ZEnhnCYbyfKiCAOmVGLc_dViFTUuk2O6t6gkAdL0MhzU6nCBBariqlwWQxXf7z-nFubBrBio2l_GL6Pf6orvB_67V2PQEYnYlf24VtfdV34_QcU3T9bQjN2RhSzT9HYrYZtEXEmS4ARaN4mSoCnkITNsrGUz3LpX0ozxk2kQCUe89v8TUd-uYzA_sHXJXa7oHqTA1ZJVrtDAgMBAAGjUzBRMB0GA1UdDgQWBBT2b43zVAuqVWwFIZLSTSOdI3n5IDAfBgNVHSMEGDAWgBT2b43zVAuqVWwFIZLSTSOdI3n5IDAPBgNVHRMBAf8EBTADAQH_MA0GCSqGSIb3DQEBCwUAA4IBAQBnKynE3w04FyEHpYJs94eYrvKAgH6lvavHlDbiZxq1YgPwQN7lbFKIyZxsfcx1QGu1Rk_e-B7D-peIYGtL0-lQxbC88ogh03CaPqrJEhhmSxLEN-L3HQl-pItVUTKH8kaxHeC86ym2pOEJW2y7mVtPYkrgMiTjmOJj60hJEQE87VT_TB_soAXOm8oVXy1Ha3HwHZ4vouG_SwYhXWaqnOUDOifR579Cy53sMkuG0m7SuXxOZp20jnX7TaR8ElH8mZifTSBjkT2RNj1QhFG-Tl5nR_Q63j4xIw9f2Sj-jVclsuIcEQh00bo8pfdMhA-sMX1zCsOvG3sDnsfsqLmL7guV",
"cades":"-----BEGIN PKCS7----- iG9w0BCRABCaB0MHICAQAwDQYLK... -----END PKCS7-----"
},
"description":"Government of Example Permanent Resident Card.",
"identifier":"83627465",
"issuanceDate":"2019-12-03T12:19:52Z",
"issuer":"did:key:xxx",
"name":"Permanent Resident Card",
"type":[
"VerifiableCredential",
"PermanentResidentCard"
]
},
"options":{
"proofType":"BbsBlsSignature2020"
}
}
},
"trace":true
}
From Alice's log I see that the following gets send over to Bob:
{
"@context":[
"https://www.w3.org/2018/credentials/v1",
"https://essif-lab.pages.grnet.gr/interoperability/eidas-generic-use-case/contexts/cades-signature.jsonld",
"https://w3id.org/citizenship/v1",
"https://w3id.org/security/bbs/v1"
],
"type":[
"VerifiableCredential",
"PermanentResidentCard"
],
"issuer":"did:key:zUC76c9wqNc7Ce3Zbjd7aWLPNBbfLa7H1Ur4PRWEpFFDKf6MCzAATWvdYDsuSk7fApnVZRdTS1JZB1o4ck4hVRQswcmqWYf9ZfrYs5waTdZi97uuRf7x7QfbXvpvQP3MYWdzBTM",
"issuanceDate":"2019-12-03T12:19:52Z",
"credentialSubject":{
"familyName":"Doe",
"gender":"Male",
"givenName":"John",
"type":[
"PermanentResident",
"Person"
]
},
"proof":[
{
"type":"CAdESRSASignature2020",
"proofPurpose":"assertionMethod",
"verificationMethod":"did:factom:5d0dd58757119dd437c70d92b44fbf86627ee275f0f2146c3d99e441da342d9f#MIIEEzCCAvugAwIBAgIUJ0hTJswF5BBreQgbEQL8FTLXwHAwDQYJKoZIhvcNAQELBQAwgZgxCzAJBgNVBAYTAk5MMRYwFAYDVQQIDA1Ob29yZC1Ib2xsYW5kMRIwEAYDVQQHDAlBbXN0ZXJkYW0xFDASBgNVBAoMC1Rlc3RDb21wYW55MQswCQYDVQQLDAJJVDEVMBMGA1UEAwwMU2NvdHQgTWFsbGV5MSMwIQYJKoZIhvcNAQkBFhRzbWFsbGV5QHNwaGVyZW9uLmNvbTAeFw0yMDEyMDIxNDMxMDVaFw0zMDExMzAxNDMxMDVaMIGYMQswCQYDVQQGEwJOTDEWMBQGA1UECAwNTm9vcmQtSG9sbGFuZDESMBAGA1UEBwwJQW1zdGVyZGFtMRQwEgYDVQQKDAtUZXN0Q29tcGFueTELMAkGA1UECwwCSVQxFTATBgNVBAMMDFNjb3R0IE1hbGxleTEjMCEGCSqGSIb3DQEJARYUc21hbGxleUBzcGhlcmVvbi5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkZfqj459pkdt5GLelamSySQP3owkyYOXW1NLTLr3dC_RzE8x3SRpHQwaRErm0VYvV35JVvubGZgatm5SNsTUHw7Ywrwy-hGFCXo2JOabL0lj3EpkpRPpVS7GXAlMxTvfZihw8IgmA3ZEnhnCYbyfKiCAOmVGLc_dViFTUuk2O6t6gkAdL0MhzU6nCBBariqlwWQxXf7z-nFubBrBio2l_GL6Pf6orvB_67V2PQEYnYlf24VtfdV34_QcU3T9bQjN2RhSzT9HYrYZtEXEmS4ARaN4mSoCnkITNsrGUz3LpX0ozxk2kQCUe89v8TUd-uYzA_sHXJXa7oHqTA1ZJVrtDAgMBAAGjUzBRMB0GA1UdDgQWBBT2b43zVAuqVWwFIZLSTSOdI3n5IDAfBgNVHSMEGDAWgBT2b43zVAuqVWwFIZLSTSOdI3n5IDAPBgNVHRMBAf8EBTADAQH_MA0GCSqGSIb3DQEBCwUAA4IBAQBnKynE3w04FyEHpYJs94eYrvKAgH6lvavHlDbiZxq1YgPwQN7lbFKIyZxsfcx1QGu1Rk_e-B7D-peIYGtL0-lQxbC88ogh03CaPqrJEhhmSxLEN-L3HQl-pItVUTKH8kaxHeC86ym2pOEJW2y7mVtPYkrgMiTjmOJj60hJEQE87VT_TB_soAXOm8oVXy1Ha3HwHZ4vouG_SwYhXWaqnOUDOifR579Cy53sMkuG0m7SuXxOZp20jnX7TaR8ElH8mZifTSBjkT2RNj1QhFG-Tl5nR_Q63j4xIw9f2Sj-jVclsuIcEQh00bo8pfdMhA-sMX1zCsOvG3sDnsfsqLmL7guV",
"created":"2019-08-23T20:21:34Z",
"cades":"-----BEGIN PKCS7----- iG9w0BCRABCaB0MHICAQAwDQYLK... -----END PKCS7-----"
},
{
"type":"BbsBlsSignature2020",
"verificationMethod":"did:key:zUC76c9wqNc7Ce3Zbjd7aWLPNBbfLa7H1Ur4PRWEpFFDKf6MCzAATWvdYDsuSk7fApnVZRdTS1JZB1o4ck4hVRQswcmqWYf9ZfrYs5waTdZi97uuRf7x7QfbXvpvQP3MYWdzBTM#zUC76c9wqNc7Ce3Zbjd7aWLPNBbfLa7H1Ur4PRWEpFFDKf6MCzAATWvdYDsuSk7fApnVZRdTS1JZB1o4ck4hVRQswcmqWYf9ZfrYs5waTdZi97uuRf7x7QfbXvpvQP3MYWdzBTM",
"created":"2022-07-01T14:50:23.684691+00:00",
"proofPurpose":"assertionMethod",
"proofValue":"iJ+GRVw32Fi6ijUh0unSa1FFArGJXk7Ee+dBjudk8fLw7ue1k+i6lGf2ttBvOF8JLENo0oeF6+ivtFlZ0Wb3LbeJE/MwJXts+eI0/X1pkLFrZcMD0FmwVL9j/usXgeO2ZdX9MJz7eeN99rbYDcQDUA=="
}
],
"description":"Government of Example Permanent Resident Card.",
"identifier":"83627465",
"name":"Permanent Resident Card"
}
This is as expected. At Bob however, the following error is thrown:
2022-07-01 14:50:23,770 aries_cloudagent.messaging.models.base ERROR V20CredIssue message validation error:
Traceback (most recent call last):
File "/home/indy/.pyenv/versions/3.6.13/lib/python3.6/site-packages/aries_cloudagent/messaging/models/base.py", line 137, in deserialize
return schema.loads(obj) if isinstance(obj, str) else schema.load(obj)
File "/home/indy/.pyenv/versions/3.6.13/lib/python3.6/site-packages/marshmallow/schema.py", line 723, in load
data, many=many, partial=partial, unknown=unknown, postprocess=True
File "/home/indy/.pyenv/versions/3.6.13/lib/python3.6/site-packages/marshmallow/schema.py", line 904, in _do_load
raise exc
marshmallow.exceptions.ValidationError: {'proof': {'_schema': ['Invalid input type.']}}
2022-07-01 14:50:23,770 aries_cloudagent.core.dispatcher ERROR Message parsing failed: Error deserializing message: V20CredIssue schema validation failed, sending problem report
Expected behavior: When you are able to issue multi-proof VCs with ACA-Py (which is in line with W3C) then you should be able to receive them, too.
Indeed, it looks like this should be supported.