aviarytech / jff-didcomm-issuance

1 stars 0 forks source link

What does your request credential contain? #7

Open vongohren opened 1 year ago

vongohren commented 1 year ago

What we need to work out here are commonalities and where do we need to adjust according to the spec of JFF. Meaning that we find a shared JSON structure inside the attachement or where do we put the layer

We also have to understand what does the attachement here offer of functionality

vongohren commented 1 year ago
{
  "id": "632d380ab4ee1e0025d45e92",
  "to": [
    "did:key:z6MkkgfrEB9gSvpJui6yLmqHhcuuLjto9QXKCSa4WtHai4KR"
  ],
  "typ": "application/didcomm-plain+json",
  "type": "https://didcomm.org/issue-credential/2.0/request-credential",
  "from": "did:key:z6Mknr8VZzAwecsS2Bugncp47dbHuSzhjGz4khcvm5KCSUCR",
  "thid": "70142c08-3780-4cdc-a92c-925523c3912b",
  "attachments": [],
}
brianorwhatever commented 1 year ago
{
   "type":"https://didcomm.org/issue-credential/3.0/request-credential",
   "id":"d00300b6c6db47e845e9f75c14fa2696c519245e4f5bd0ae30d3bfd6f691c098",
   "thid":"d00100bdf7f4b473232b49bc2a11dbda0ff10d418ba571205b252aa14dd294e1",
   "from":"did:peer:2.Ez6LSpSrLxbAhg2SHwKk7kwpsH7DM7QjFS5iK6qP87eViohud.Vz6MkqRYqQiSgvZQdnBytw86Qbs2ZWUkGv22od935YF4s8M7V.SeyJ0IjoiZG0iLCJzIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDEiLCJyIjpbImRpZDpleGFtcGxlOnNvbWVtZWRpYXRvciNzb21la2V5MSJdLCJhIjpbImRpZGNvbW0vdjIiLCJkaWRjb21tL2FpcDI7ZW52PXJmYzU4NyJdfQ",
   "to":[
      "did:web:aviary.id"
   ],
   "body":{

   },
   "attachments":[
      {
         "id":"d000003c48693771cd22c57096b09557002c41c6ab4ba0704bdd5781197656a4",
         "media_type":"application/json",
         "format":"dif/credential-manifest/application@v1.0",
         "data":{
            "json":{
               "@context":[
                  "https://www.w3.org/2018/credentials/v1",
                  "https://identity.foundation/credential-manifest/application/v1"
               ],
               "type":[
                  "VerifiablePresentation",
                  "CredentialApplication"
               ],
               "credential_application":{
                  "id":"c00600022dca14affa8ab4a2e66765100f31a990e159022e7a498542c605c3da",
                  "manifest_id":"c001006f847f39073113b0ed862ff88c3c49669b4bbf5a30fcbec9f62d35cf98",
                  "format":{
                     "ldp_vc":{
                        "proof_type":[
                           "JsonWebSignature2020",
                           "Ed25519Signature2018"
                        ]
                     }
                  }
               },
               "presentation_submission":{
                  "id":"c00300d10d25d00b9c7cf985637b88e4da3e2af2d644c74ced677784c30454c6",
                  "definition_id":"c00400f85e0aae79eb62b099a4aab4eb54cc99df6ca444b83a6fb04c580c3380",
                  "descriptor_map":[
                     {
                        "id":"c00400f85e0aae79eb62b099a4aab4eb54cc99df6ca444b83a6fb04c580c3380",
                        "format":"ldp_vp",
                        "path":"$.proof"
                     }
                  ]
               },
               "verifiableCredential":[
                  {
                    "@context": [
                      "https://www.w3.org/2018/credentials/v1",
                      "https://purl.imsglobal.org/spec/ob/v3p0/context.json"
                    ],
                    "id": "urn:uuid:a63a60be-f4af-491c-87fc-2c8fd3007a58",
                    "type": [
                      "VerifiableCredential",
                      "OpenBadgeCredential"
                    ],
                    "name": "JFF x vc-edu PlugFest 2 Interoperability",
                    "issuer": {
                      "type": [
                        "Profile"
                      ],
                      "id": "did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn",
                      "name": "Jobs for the Future (JFF)"
                    },
                    "issuanceDate": "2022-11-14T00:00:00Z",
                    "credentialSubject": {
                      "type": [
                        "AchievementSubject"
                      ],
                      "id": "did:key:z6Mko2ceHiQqXGm1mzfQKdiGzc1czEBXvvgTpfroBwDjbwMd",
                      "achievement": {
                        "id": "urn:uuid:bd6d9316-f7ae-4073-a1e5-2f7f5bd22922",
                        "type": [
                          "Achievement"
                        ],
                        "name": "JFF x vc-edu PlugFest 2 Interoperability",
                        "description": "This credential solution supports the use of OBv3 and w3c Verifiable Credentials and is interoperable with at least two other solutions.  This was demonstrated successfully during JFF x vc-edu PlugFest 2.",
                        "criteria": {
                          "narrative": "Solutions providers earned this badge by demonstrating interoperability between multiple providers based on the OBv3 candidate final standard, with some additional required fields. Credential issuers earning this badge successfully issued a credential into at least two wallets.  Wallet implementers earning this badge successfully displayed credentials issued by at least two different credential issuers."
                        },
                        "image": {
                          "id": "https://w3c-ccg.github.io/vc-ed/plugfest-2-2022/images/JFF-VC-EDU-PLUGFEST2-badge-image.png",
                          "type": "Image"
                        }
                      }
                    },
                    "proof": [{
                      "type": "Ed25519Signature2018",
                      "created": "2022-10-19T17:59:37Z",
                      "verificationMethod": "did:key:z6Mko2ceHiQqXGm1mzfQKdiGzc1czEBXvvgTpfroBwDjbwMd#z6Mko2ceHiQqXGm1mzfQKdiGzc1czEBXvvgTpfroBwDjbwMd",
                      "proofPurpose": "assertionMethod",
                      "jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..0YMgLoK6F6Q47dvB2qQ79e1Dd27cjz4b5OnF2taQ38E0ZwtaA5GnS8igfTv2e_ZUbjalcwcPTq0u8Hf9CRLRDg"
                    }]
                  }
               ],
               "proof":{
                  "type":"Ed25519Signature2018",
                  "verificationMethod":"did:key:z6Mko2ceHiQqXGm1mzfQKdiGzc1czEBXvvgTpfroBwDjbwMd#z6Mko2ceHiQqXGm1mzfQKdiGzc1czEBXvvgTpfroBwDjbwMd",
                  "created":"2021-05-14T20:16:29.565377",
                  "proofPurpose":"authentication",
                  "challenge":"c13abd0fe67fcd1f3513e32b1ed5ad7c721e598ea0d1b9334ffecaa8e1a2fce6",
                  "jws":"eyJhbGciOiAiRWREU0EiLCAiYjY0IjogZmFsc2UsICJjcml0IjogWyJiNjQiXX0..7M9LwdJR1_SQayHIWVHF5eSSRhbVsrjQHKUrfRhRRrlbuKlggm8mm_4EI_kTPeBpalQWiGiyCb_0OWFPtn2wAQ"
               }
            }
         }
      }
   ]
}

The holder creates a dif/credential-manifest/application@v1.0 attachment which includes a VP that is a CredentialApplication. This includes a credential_application that links to the manifest from the offer message and the proof types they would be happy to receive. It also includes a presentation_submission that links to the presentation definition from the offer message. The descriptor_map describes where to find the challenge.. not sure if I got the JSONPath right for that. The verifiableCredential is the same one that the offer included however the holder has filled in the credentialSubject.id. Interestingly I had to also add a proof on there to make it a VC I think? Finally, that proof on the VP includes the challenge for DID Authentication.

AlexAndrei98 commented 1 year ago
{'id': '9b2fed14-2896-428b-8868-c6550d722a1f',
 'type': 'https://didcomm.org/issue-credential/3.0/request-credential',
 'body': {'goal_code': 'issue-credential', 'comment': 'some comment'},
 'to': ['did:peer:2.Ez6LSms555YhFthn1WV8ciDBpZm86hK9tp83WojJUmxPGk1hZ.Vz6MkmdBjMyB4TS5UbbQw54szm8yvMMf1ftGV2sQVYAxaeWhE.SeyJpZCI6Im5ldy1pZCIsInQiOiJkbSIsInMiOiJodHRwczovL21lZGlhdG9yLnJvb3RzaWQuY2xvdWQiLCJhIjpbImRpZGNvbW0vdjIiXX0'],
 'attachments': [{'data': {'json': {'credential': {'@context': ['https://www.w3.org/2018/credentials/v1',
       'https://www.w3.org/2018/credentials/examples/v1'],
      'id': '9801c821-a3ab-4af3-90c4-b90687d7b67f',
      'type': ['VerifiableCredential', 'UniversityDegreeCredential'],
      'issuer': 'TBD',
      'issuanceDate': '2022-10-31T10:19:05Z',
      'credentialSubject': {'id': 'did:prism:a08f49e61bc46dc82b6bd54dd62087c25b53b4a7ef98e549ce62ee4ad3450d5c',
       'degree': {'type': 'BachelorDegree',
        'name': 'Bachelor of Science and Arts'}},
      'options': {'proofType': 'EcdsaSecp256k1Signature2019'}}}},
   'id': '55d6eb99-da03-473b-ac67-482c31978678',
   'media_type': 'application/json',
   'format': 'aries/ld-proof-vc-detail@v1.0'}],
 'custom_headers': [{'return_route': 'all'}],
 'from': 'did:peer:2.Ez6LSdwaSDqrJj5a6b12XEWs56Rg8y2CbjoFnwSWaF76e4kaf.Vz6MkoZVLjr9tk1x2wdvHmk6eL8CbmfruaJSUeN2gxukFU2uS.SeyJpZCI6Im5ldy1pZCIsInQiOiJkbSIsInMiOiJodHRwczovL3d3dy5leGFtcGxlLmNvbS9ob2xkZXIiLCJhIjpbImRpZGNvbW0vdjIiXX0',
 'typ': 'application/didcomm-plain+json'}
brianorwhatever commented 1 year ago

We dropped the VC from the VP as it isn't required because the issuer knows what the VC looks like already. The rest is the same as WACI didcomm

{
   "type":"https://didcomm.org/issue-credential/3.0/request-credential",
   "id":"d00300b6c6db47e845e9f75c14fa2696c519245e4f5bd0ae30d3bfd6f691c098",
   "thid":"d00100bdf7f4b473232b49bc2a11dbda0ff10d418ba571205b252aa14dd294e1",
   "from":"did:peer:2.Ez6LSpSrLxbAhg2SHwKk7kwpsH7DM7QjFS5iK6qP87eViohud.Vz6MkqRYqQiSgvZQdnBytw86Qbs2ZWUkGv22od935YF4s8M7V.SeyJ0IjoiZG0iLCJzIjoiaHR0cHM6Ly9leGFtcGxlLmNvbS9lbmRwb2ludDEiLCJyIjpbImRpZDpleGFtcGxlOnNvbWVtZWRpYXRvciNzb21la2V5MSJdLCJhIjpbImRpZGNvbW0vdjIiLCJkaWRjb21tL2FpcDI7ZW52PXJmYzU4NyJdfQ",
   "to":[
      "did:web:aviary.id"
   ],
   "body":{

   },
   "attachments":[
      {
         "id":"d000003c48693771cd22c57096b09557002c41c6ab4ba0704bdd5781197656a4",
         "media_type":"application/json",
         "format":"dif/credential-manifest/application@v1.0",
         "data":{
            "json":{
               "@context":[
                  "https://www.w3.org/2018/credentials/v1",
                  "https://identity.foundation/credential-manifest/application/v1"
               ],
               "type":[
                  "VerifiablePresentation",
                  "CredentialApplication"
               ],
               "credential_application":{
                  "id":"c00600022dca14affa8ab4a2e66765100f31a990e159022e7a498542c605c3da",
                  "manifest_id":"c001006f847f39073113b0ed862ff88c3c49669b4bbf5a30fcbec9f62d35cf98",
                  "format":{
                     "ldp_vc":{
                        "proof_type":[
                           "Ed25519Signature2018"
                        ]
                     }
                  }
               },
               "presentation_submission":{
                  "id":"c00300d10d25d00b9c7cf985637b88e4da3e2af2d644c74ced677784c30454c6",
                  "definition_id":"c00400f85e0aae79eb62b099a4aab4eb54cc99df6ca444b83a6fb04c580c3380",
                  "descriptor_map":[
                     {
                        "id":"c00400f85e0aae79eb62b099a4aab4eb54cc99df6ca444b83a6fb04c580c3380",
                        "format":"ldp_vp",
                        "path":"$.proof"
                     }
                  ]
               },
               "proof":{
                  "type":"Ed25519Signature2018",
                  "verificationMethod":"did:key:z6Mko2ceHiQqXGm1mzfQKdiGzc1czEBXvvgTpfroBwDjbwMd#z6Mko2ceHiQqXGm1mzfQKdiGzc1czEBXvvgTpfroBwDjbwMd",
                  "created":"2021-05-14T20:16:29.565377",
                  "proofPurpose":"authentication",
                  "challenge":"c13abd0fe67fcd1f3513e32b1ed5ad7c721e598ea0d1b9334ffecaa8e1a2fce6",
                  "jws":"eyJhbGciOiAiRWREU0EiLCAiYjY0IjogZmFsc2UsICJjcml0IjogWyJiNjQiXX0..7M9LwdJR1_SQayHIWVHF5eSSRhbVsrjQHKUrfRhRRrlbuKlggm8mm_4EI_kTPeBpalQWiGiyCb_0OWFPtn2wAQ"
               }
            }
         }
      }
   ]
}
brianorwhatever commented 1 year ago

What I implemented below

{
    "type": "https://didcomm.org/issue-credential/3.0/request-credential",
    "id": "3715e334f7e05a94ec1903df67df5085077934895c6248a798ccc815329283b6",
    "thid": "28eec678f1b860daddc7d775fcfcf15d7310ea692e62e8b6f4518d4c0f35bdb0",
    "from": "did:peer:2.Vz6MknQLpgecyvcdpXSAmiAeMVxLYyFuggVEoNxuXEt5oScMn.Ez6LSo5h8SnuaqSkxkN9fWFM2GQMXcnQkp8C94ttA5GwLRHW1.SeyJpZCI6IiNkaWRjb21tIiwidCI6ImRtIiwicyI6Imh0dHBzOi8vcG9ydGN1bGxpcy4xa2VlcC5jb20vZGlkY29tbSIsInIiOlsiZGlkOndlYjpwb3J0Y3VsbGlzLjFrZWVwLmNvbSJdfQ",
    "to": [
        "did:web:verifiable.ink"
    ],
    "body": {},
    "attachments": [
        {
            "id": "5dac5a119db60503d2b6886b326250070a10694677c21680e925adeecde20a25",
            "media_type": "application/json",
            "format": "dif/credential-manifest/application@v1.0",
            "data": {
                "json": {
                    "@context": [
                        "https://www.w3.org/2018/credentials/v1",
                        "https://identity.foundation/credential-manifest/application/v1"
                    ],
                    "id": "e292618e778e6ea221f73000c4667938753bcde65476c1efd27e6654e88bf5f2",
                    "type": [
                        "VerifiablePresentation",
                        "CredentialApplication"
                    ],
                    "credential_application": {
                        "id": "1e185b751474e93dc505ff42b4e83d8c5519f85d95eea4d6b25911fe667fc314",
                        "manifest_id": "b82273315d664fcd72c901f2a80c4fe35f4c78a5b90af670ca2efc19af5d2510",
                        "format": {
                            "ldp_vc": {
                                "proof_type": [
                                    "JsonWebSignature2020"
                                ]
                            }
                        }
                    },
                    "presentation_submission": {
                        "id": "fac0b0706889ef995c29fcb4b9eb8c9ccc35758969ef22ee4a974284e5bfc204",
                        "definition_id": "adb9348af72cc15d36ebfdcfe10001b7a85bf9e606483bae7dcb0b50dbeb070b",
                        "descriptor_map": [
                            {
                                "id": "adb9348af72cc15d36ebfdcfe10001b7a85bf9e606483bae7dcb0b50dbeb070b",
                                "format": "ldp_vp",
                                "path": "$.proof"
                            }
                        ]
                    },
                    "verifiableCredential": [],
                    "proof": {
                        "type": "JsonWebSignature2020",
                        "proofPurpose": "authentication",
                        "verificationMethod": "did:key:C4DFDAStSHdRnhvz1ZP5yTssTki6cVRCPk4535hBB6Yq#C4DFDAStSHdRnhvz1ZP5yTssTki6cVRCPk4535hBB6Yq",
                        "created": "2022-12-14T17:51:27Z",
                        "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdfQ..BYhlydKntcK0UwB2f5EN4j3kLkWIhHKEs2kRjejKPiF2c86YXK96HDH2_ClPQWvjm5nbO4aJSwipGRixLkSfBQ",
                        "challenge": "6980f6339e8baed1fd1f315ed88523f6a181eb5a29236f1667a23a1ca83821ae"
                    }
                }
            }
        }
    ]
}