Open vongohren opened 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": [],
}
{
"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.
{'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'}
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"
}
}
}
}
]
}
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"
}
}
}
}
]
}
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