# ACA-Py RFC 0496 - Transition from Connections to DID Exchange * Step 1 implemented in v0.6.0 ACA-Py v0.7.3 used * Connection Invitation * Inline DIDDoc Service Entry ``` /out-of-band/create-invitation { "handshake_protocols": [ "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/connections/1.0" ], "metadata": {}, "my_label": "Faber college", "use_public_did": false } ``` **Invitation** ``` { "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.0/invitation", "@id": "252aac24-45ec-4814-94ad-5e4101c8900c", "services": [ { "id": "#inline", "type": "did-communication", "recipientKeys": [ "did:key:z6Mkt8phxfGBNLGqZ7iBZ6dPtokTRPZvEtNcqXFYr8nfm5xY" ], "serviceEndpoint": "http://host.docker.internal:8002" } ], "label": "Faber college", "handshake_protocols": [ "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/connections/1.0" ] } ``` **Invitation URL** ``` http://host.docker.internal:8002?oob=eyJAdHlwZSI6ICJkaWQ6c292OkJ6Q2JzTlloTXJqSGlxWkRUVUFTSGc7c3BlYy9vdXQtb2YtYmFuZC8xLjAvaW52aXRhdGlvbiIsICJAaWQiOiAiMjUyYWFjMjQtNDVlYy00ODE0LTk0YWQtNWU0MTAxYzg5MDBjIiwgInNlcnZpY2VzIjogW3siaWQiOiAiI2lubGluZSIsICJ0eXBlIjogImRpZC1jb21tdW5pY2F0aW9uIiwgInJlY2lwaWVudEtleXMiOiBbImRpZDprZXk6ejZNa3Q4cGh4ZkdCTkxHcVo3aUJaNmRQdG9rVFJQWnZFdE5jcVhGWXI4bmZtNXhZIl0sICJzZXJ2aWNlRW5kcG9pbnQiOiAiaHR0cDovL2hvc3QuZG9ja2VyLmludGVybmFsOjgwMDIifV0sICJsYWJlbCI6ICJGYWJlciBjb2xsZWdlIiwgImhhbmRzaGFrZV9wcm90b2NvbHMiOiBbImRpZDpzb3Y6QnpDYnNOWWhNcmpIaXFaRFRVQVNIZztzcGVjL2Nvbm5lY3Rpb25zLzEuMCJdfQ== ``` * DID Service Entry ``` /out-of-band/create-invitation { "handshake_protocols": [ "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/connections/1.0" ], "metadata": {}, "my_label": "Faber college", "use_public_did": true } ``` **Invitation** ``` { "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.0/invitation", "@id": "74ee9861-e9ea-4ef4-a1d0-2bbb6c7aec22", "services": [ "did:sov:FBmi5JLf5g58kDnNXMy4QM" ], "label": "Faber college", "handshake_protocols": [ "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/connections/1.0" ] } ``` **Invitation URL** ``` http://host.docker.internal:8002?oob=eyJAdHlwZSI6ICJkaWQ6c292OkJ6Q2JzTlloTXJqSGlxWkRUVUFTSGc7c3BlYy9vdXQtb2YtYmFuZC8xLjAvaW52aXRhdGlvbiIsICJAaWQiOiAiNzRlZTk4NjEtZTllYS00ZWY0LWExZDAtMmJiYjZjN2FlYzIyIiwgInNlcnZpY2VzIjogWyJkaWQ6c292OkZCbWk1SkxmNWc1OGtEbk5YTXk0UU0iXSwgImxhYmVsIjogIkZhYmVyIGNvbGxlZ2UiLCAiaGFuZHNoYWtlX3Byb3RvY29scyI6IFsiZGlkOnNvdjpCekNic05ZaE1yakhpcVpEVFVBU0hnO3NwZWMvY29ubmVjdGlvbnMvMS4wIl19 ``` * Connection-less Present Proof Request ``` /out-of-band/create-invitation { "handshake_protocols": [ "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/connections/1.0" ], "attachments": [ { "id": "ab79c785-9675-45d5-8bf7-a8aade6908dc", "type": "present-proof" } ], "metadata": {}, "my_label": "Faber college Present Proof", "use_public_did": false } ``` **Invitation** ``` { "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.0/invitation", "@id": "14c7e69e-e19b-4637-8942-10478f69736b", "services": [ { "id": "#inline", "type": "did-communication", "recipientKeys": [ "did:key:z6Mkfoh2sHuyQjeZ1Bg5HwWP8VBTNZNbFRRzrEEB4ukaGjka" ], "serviceEndpoint": "http://host.docker.internal:8002" } ], "handshake_protocols": [ "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/didexchange/1.0" ], "label": "Invitation to Barry", "requests~attach": [ { "@id": "request-0", "mime-type": "application/json", "data": { "json": { "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/present-proof/1.0/request-presentation", "@id": "bde119c4-d62a-42cd-aacc-6a9575b68212", "comment": "string", "request_presentations~attach": [ { "@id": "libindy-request-presentation-0", "mime-type": "application/json", "data": { "base64": "eyJuYW1lIjogIlByb29mIHJlcXVlc3QiLCAibm9uY2UiOiAiMSIsICJyZXF1ZXN0ZWRfYXR0cmlidXRlcyI6IHsidGVzdCI6IHsibmFtZSI6ICJzY29yZSJ9fSwgInJlcXVlc3RlZF9wcmVkaWNhdGVzIjoge30sICJ2ZXJzaW9uIjogIjEuMCJ9" } } ] } } } ] } ``` **Invitation URL** ``` http://host.docker.internal:8002?oob=eyJAdHlwZSI6ICJkaWQ6c292OkJ6Q2JzTlloTXJqSGlxWkRUVUFTSGc7c3BlYy9vdXQtb2YtYmFuZC8xLjAvaW52aXRhdGlvbiIsICJAaWQiOiAiMTRjN2U2OWUtZTE5Yi00NjM3LTg5NDItMTA0NzhmNjk3MzZiIiwgInNlcnZpY2VzIjogW3siaWQiOiAiI2lubGluZSIsICJ0eXBlIjogImRpZC1jb21tdW5pY2F0aW9uIiwgInJlY2lwaWVudEtleXMiOiBbImRpZDprZXk6ejZNa2ZvaDJzSHV5UWplWjFCZzVId1dQOFZCVE5aTmJGUlJ6ckVFQjR1a2FHamthIl0sICJzZXJ2aWNlRW5kcG9pbnQiOiAiaHR0cDovL2hvc3QuZG9ja2VyLmludGVybmFsOjgwMDIifV0sICJoYW5kc2hha2VfcHJvdG9jb2xzIjogWyJkaWQ6c292OkJ6Q2JzTlloTXJqSGlxWkRUVUFTSGc7c3BlYy9kaWRleGNoYW5nZS8xLjAiXSwgImxhYmVsIjogIkludml0YXRpb24gdG8gQmFycnkiLCAicmVxdWVzdHN-YXR0YWNoIjogW3siQGlkIjogInJlcXVlc3QtMCIsICJtaW1lLXR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsICJkYXRhIjogeyJqc29uIjogeyJAdHlwZSI6ICJkaWQ6c292OkJ6Q2JzTlloTXJqSGlxWkRUVUFTSGc7c3BlYy9wcmVzZW50LXByb29mLzEuMC9yZXF1ZXN0LXByZXNlbnRhdGlvbiIsICJAaWQiOiAiYmRlMTE5YzQtZDYyYS00MmNkLWFhY2MtNmE5NTc1YjY4MjEyIiwgImNvbW1lbnQiOiAic3RyaW5nIiwgInJlcXVlc3RfcHJlc2VudGF0aW9uc35hdHRhY2giOiBbeyJAaWQiOiAibGliaW5keS1yZXF1ZXN0LXByZXNlbnRhdGlvbi0wIiwgIm1pbWUtdHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiwgImRhdGEiOiB7ImJhc2U2NCI6ICJleUp1WVcxbElqb2dJbEJ5YjI5bUlISmxjWFZsYzNRaUxDQWlibTl1WTJVaU9pQWlNU0lzSUNKeVpYRjFaWE4wWldSZllYUjBjbWxpZFhSbGN5STZJSHNpZEdWemRDSTZJSHNpYm1GdFpTSTZJQ0p6WTI5eVpTSjlmU3dnSW5KbGNYVmxjM1JsWkY5d2NtVmthV05oZEdWeklqb2dlMzBzSUNKMlpYSnphVzl1SWpvZ0lqRXVNQ0o5In19XX19fV19 ``` * Step 2 * [URL shortening](https://github.com/hyperledger/aries-rfcs/blob/main/features/0434-outofband/README.md#url-shortening) not implemented, instead we `Base64Url` encode the invitation and send it with the URL. `Example transformed invitation message [Step 2]` ``` { "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/present-proof/1.0/request-presentation", "@id": "1234-1234-1234-1234", "comment": "Request proof of some claims from verified credentials", "services": { "recipientKeys": ["6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH"], "routingKeys": [], "serviceEndpoint": "https://example.com:5000" }, "requests~attach": [ { "@id": "libindy-request-presentation-0", "mime-type": "application/json", "data": { "base64": "<bytes for base64>" } } ] } ``` * handshake_protocols MUST NOT be present - not implemented, it is still present * services MUST have exactly one entry and be in the form above or be a single DID (but not both) - It has exaclty one entry but provided as a list * [RFC0627](https://github.com/hyperledger/aries-rfcs/blob/main/features/0627-static-peer-dids/README.md) Static Peer DID - not implemented. Note: Some issues observed in RFC0496 document. It should be `requests~attach` and not `request~attach` or `request_presentations~attach`. It should be `services` [[RFC0434](https://github.com/hyperledger/aries-rfcs/blob/main/features/0434-outofband/README.md#invitation-httpsdidcommorgout-of-bandverinvitation)] and not `service` [[RFC0496](https://github.com/hyperledger/aries-rfcs/tree/main/features/0496-transition-to-oob-and-did-exchange#connection-invitationinline-diddoc-service-entry)]. ``` The constraints on this form of the out-of-band invitation sent during Step 2 are: goal_code is ignored and goal is used as the comment. handshake_protocols MUST NOT be present. request~attach MUST have exactly one entry and that entry must be a request-presentation message. service MUST have exactly one entry and be in the form above or be a single DID (but not both) ``` Requirement for `requests~attach` and `services` are same but they are shown as a `list` and `dict` respectively in the transformed example following the above.