aries-cloudagent-python: Selective Disclosure check in pres_exch_handler.py not working

I believe I stumbled on a bug in aries-cloudagent-python/aries_cloudagent/protocols/present_proof/dif/pres_exch_handler.py in current main branch. I am getting an DIFPresExchError at line 1322. I followed the logic and printed out values at line 1375:

cred_dict:

{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://w3id.org/security/bbs/v1",
    {
      "MedicalPass": {
        "@id": "https://www.vdel.com/MedicalPass",
        "@context": {
          "description": "http://schema.org/description",
          "identifier": "http://schema.org/identifier",
          "name": "http://schema.org/name",
          "image": "http://schema.org/image"
        }
      }
    },
    {
      "Patient": {
        "@id": "http://hl7.org/fhir/Patient",
        "@context": [
          "https://fhircat.org/fhir-r5/rdf-r5/contexts/patient.context.jsonld"
        ]
      }
    }
  ],
  "id": "urn:bnid:_:c14n14",
  "type": [
    "MedicalPass",
    "VerifiableCredential"
  ],
  "credentialSubject": {
    "id": "urn:bnid:_:c14n11",
    "Patient": {
      "@id": "urn:bnid:_:c14n2",
      "type": "fhir:resource-types#Patient",
      "birthDate": "1958-12-03T00:00:00"
    }
  },
  "issuanceDate": "2021-09-27T12:40:03+02:00",
  "issuer": "did:key:zUC7DVPRfshooBqmnT2LrMxabCUkRhyyUCu8xKvYRot5aeTLTpPxzZoMyFkMLgKHMPUzdEnJM1EqbxfQd466ed3QuEtUJr8iqKRVfJ4txBa3PRoASaup6fjVAkU9VdbDbs5et64",
  "proof": {
    "type": "BbsBlsSignatureProof2020",
    "nonce": "XVdQwHnUYJkkMX4LDWFPVuB7NQJ5IVn6ohW/psGv3fFSJ9kbr59BcWpix7Q3LBfzJ80=",
    "proofValue": "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",
    "verificationMethod": "did:key:zUC7DVPRfshooBqmnT2LrMxabCUkRhyyUCu8xKvYRot5aeTLTpPxzZoMyFkMLgKHMPUzdEnJM1EqbxfQd466ed3QuEtUJr8iqKRVfJ4txBa3PRoASaup6fjVAkU9VdbDbs5et64#zUC7DVPRfshooBqmnT2LrMxabCUkRhyyUCu8xKvYRot5aeTLTpPxzZoMyFkMLgKHMPUzdEnJM1EqbxfQd466ed3QuEtUJr8iqKRVfJ4txBa3PRoASaup6fjVAkU9VdbDbs5et64",
    "proofPurpose": "assertionMethod",
    "created": "2021-09-27T10:40:03.200843+00:00"
  }
}

extracted_dict:

{
  "@id": "urn:bnid:_:c14n2",
  "type": "fhir:resource-types#Patient",
  "birthDate": "1958-12-03T00:00:00"
}

extracted_dict.keys():

[
  "@id",
  "type",
  "birthDate"
]

nested_field_paths:

{
  "credentialSubject": {
    "id",
    "type",
    "Patient"
  },
  "credentialSubject.Patient": {
    "birthDate"
  }
}

nested_attr_values:

{
  "birthDate"
}

The error is raised because “@id” is not in {“birthDate”} !

This is the body of the send-request endpoint:

{
  "connection_id": "83a35636-7297-4dc8-ad9f-5de7825227bb",
  "presentation_request": {
    "dif": {
      "options": {
        "challenge": "3fa85f64-5717-4562-b3fc-2c963f66afa7"
      },
      "presentation_definition": {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa7",
        "input_descriptors": [
          {
            "id": "Patient",
            "schema": [
              {"uri": "https://www.w3.org/2018/credentials#VerifiableCredential"},
              {"uri": "https://www.vdel.com/MedicalPass"}
            ],
            "name": "Пацијент",
            "purpose": "Лични подаци",
            "constraints": {
              "limit_disclosure": "required",
              "fields": [
                {
                  "path": [
                    "$.credentialSubject.Patient.birthDate"
                  ],
                  "id": "birthDate",
                  "purpose": "Датум рођења"
                }
              ]
            }
          }
        ],
        "name": "Morbilli virus пропусница",
        "purpose": "Улазак у вртић",
        "format": {
          "ldp_vp": {
            "proof_type": [
              "BbsBlsSignature2020"
            ]
          }
        }
      }
    }
  }
}

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 39 (17 by maintainers)

Most upvoted comments

Sorry again, you are right, it works OK! I will continue testing with more complex cases (and be more careful with arrays 😃 I will report in a couple of hours.