Share an encrypted credential

Once you have an encrypted message containing the credential in a format that a wallet can make sense of, you need to make it available to the holder. This can be achieved in different methods:

  • Share via message: Use secure DID messaging to the wallet, which would generate a wallet push notification for the holder to accept the new credential.

  • Share via QR code/Deeplink: Host the message and reference in a QR code/Deeplink.

The credential is sent directly to the wallet and will not require the user to go to a website or perform any action other than accepting the new credential.

Share via message

You can use the MATTR VII platform messaging endpoint to send the credential as a message to the holder. If they have enabled notifications on their wallet, they will receive a push notification, and if they haven't they will be alerted the next time they open the app.

Request

Make the following request to send the encrypted message:

http
Copy to clipboard.
1POST https://YOUR_TENANT_URL/v1/messaging/send
json
Copy to clipboard.
1{
2  "to": "{SUBJECT_DID}",
3  "message": {MESSAGE_ENCRYPTED.jwe }}
4}
  • to: Use your Subject DID. In production environments you must have a secure way to obtain it:

    • Use DID Auth for any new interactions.

    • Ask the user to share their wallet DID (MATTR Showcase wallet or MATTR GO users can do this by navigating to Settings > Advanced > Public DID).

    • Request an existing credential as part of a verification workflow, and extract the DID from that interaction.

  • message: Use the JWE object from the encrypted message.

Response

200 response indicates that the message payload was sent to the service endpoint of the dereferenced DID Document (or the default MATTR service endpoint).

On the holder's mobile device, they should see a notification message appear. Tapping on the message would require authenticating using biometrics or PIN number. The app should then navigate to the credential offer screen, where they can view and accept the credential.

The MATTR Showcase Wallet will follow valid 302 redirects to online resources. This allows making the encrypted message available to wallet holders and construct a URL that can be included in a QR code or deeplink.

Make the following request to base64url encode the JWE object from the encrypted message to make it URL safe:

http
Copy to clipboard.
1https://YOUR_HOST_PROVIDER.com?request={{base64url(jwe)}}

Now create a redirect to the hosted encoded response:

bash
Copy to clipboard.
1Redirect                 Content
2redirectid=1234567.      request=ewogICAgInByb3RlY3RlZCI6ICJleUpoYkdjaU9pSllRekl3VUNKOSIsCiAgICAicmVjaXBpZW50cyI6IFsKICAgICAgewogICAgICAgICJoZWFkZXIiOiB7CiAgICAgICAgICAiYWxnIjogIkVDREgtMVBVK0EyNTZLVyIsCiAgICAgICAgICAia2lkIjogImRpZDprZXk6ejZNa2Z4UVU3ZHk4ZUt4eUhwRzI2N0ZWMjNhZ1pRdTl6bW9rZDhCcHJlcGZIQUxpI3o2TFNvWXF2S1d6ZDhmYU1yb1M0V01IUmZ6ZURSMjJ3NW5yY0dFaTlNUlY0QkVZQSIsCiAgICAgICAgICAiZXBrIjogewogICAgICAgICAgICAia3R5IjogIk9LUCIsCiAgICAgICAgICAgICJjcnYiOiAieDI1NTE5IiwKICAgICAgICAgICAgIngiOiAib3ZLbEJnQUY5NjlNcGE2WFloVjZpbUxjWDRaeVZRUVRwVTNGa2pGS2syWSIKICAgICAgICAgIH0sCiAgICAgICAgICAic2tpZCI6ICJkaWQ6a2V5Ono2TWtzSGJ4TFFvUXZzUFJlelhzSkppS1h1YVY5ZnJBaXV3S2ZidUhIVFJuNTNqeCN6NkxTa0hHV3ZBZWppVEp0S3RlOThRQUptZVNEYU10Sk1vdXBUYmE0NzFuWlJRaGMiCiAgICAgICAgfSwKICAgICAgICAiZW5jcnlwdGVkX2tleSI6ICJwWndzYlBhN1ZmcTZLcktLTEVnMWpPRkZrQlJ1ZnNUT2pyRVpYNmZ3bnU2cnBRdDhHX080MlEiCiAgICAgIH0KICAgIF0sCiAgICAiY2lwaGVydGV4dCI6ICJ3T2lKTDB6bVpTYVNkQWszV241bV9YemV5aVZ2cEpYUlgzRlR5MGl2cjNEM0RUaWJnZTJJN202REoza2FEbVhpMTdzeTJjTDByM2xzZGR4QmNYRVBEZnJMOG82eTVvSXlvZGNRQW80dE1ZNElPWGRzRkhONGNUV2pPeXJzWmhULTFHR2IwUVl5UTdMZ0NFN1dnWWRNWC1mQmV0cjhmaFZ4QW9WZXlZa0J4UmhYaEY0N2VsV2xOcW9MVDdkZnNVVllDUEJqWTBHTjBjaVFPekJ2Y3BsQjhocnFWV2FUdmRicGdvUElHR0t4Y1hsOTA3Z25JQVg4cnpGY1JmaDY2dDZNMlNsR1o1cENlRHZsbmUtU3RQeHZJeHZHSmFRcTAydFd1QTJZeWt6NUd3Nnp6NXhtUFNyajd5eXkyNkFCU000eWpRY3UycS1wYXlXUXgxbGtHYUxyUHBzYmhLenE1S2NYTmx2aXo2cjNhdzNFUnQ0T08tTnhtQnU0WkNlSzFVdmZvX3dYd1Rhd09wZGpGNlJCN1JSak81VEoxZkdFV2pwbDFwODRUMGUtbjZDRV9LeGlia2xoNGJ1Y214NTVGMXJnUWMxMjgwQzBrNEROSmxwbGhvTkdsRnlPZmFZQnJhVC12T0owRnYtaEtwdjQxbnBHZl91Q3I1NkNqYjRwS3ZNRW5ncEFBMmRnbGZNTzBOQk41aGZfRmRvQzZnMTdoNFBXeGNCbnVDRFJRY0RmSHZvcEN1Q2ZVMkg0c2FMMDdSLVlSY29raXMydEJpaTdGWktTN0YtZVFvekh6Z1lsNjhaSTNDZDVlby00VlVwM2UxWG1kLWI1M21GM2JSdXRWOUpjWTdLQTFBUW53bTJ5eVRGejBzczdhMjFLc1laSFVpLWVJaGJhRWY4OEJpTXJibHZwNHp0RFB1WFVtd0c0Um93b1JkNVpTSnNkT0hya20yZm5peUlTTEdhUGdjU2VvdDIyX0hIc1hmOGJxaHl4TmJyNmU0Z2hUdVZaZ1RCQnB2MTVEVDJLU2ozejNfMlRnZUQ2VnBJRndKUW0xRG5faFpuU3BGeC1oNTduc0V5QUFXNUM5WG9WSjV1c256bjdUUUp0Wk02d3NGRkdkMUJnczhYbWYwcDc5Si1RWGtBV21oRGk2bWN0NXVuc0VucjUyaG56R3lMZnNvSDhZVWpmZmtJNTVVODZKWktyY015Y1Y5MklONmpGNGNNb2U4RmJmVnl1NHBOcmg0dktJa2dWcUpPMEI1MHowT0lrOFdFWUlWMUhvV3hJelhpSDZWTGlDNVFFWmFDRnlWVU9ucjRQRnNOSUNMRWVkWXdFNncwWG1SMmZwZU16NTI5UlBhbUpQWWxCYjlkWk1HSjJSTC1SbkpZSUg4QmJoeE4wOEVGUy00UlhsMjdQalJvYW0yVzZmUjNmYnlyT2JmaDRINkp3WFhpNEFUZWxjQnVjRTR6WlVNcmpzWE1iVzRDcmR1SWlzMGMwZjhlT1BlR1Y0dVc0VzlsZzQtRGJzVU9ZWTFmckJTdjZfMWtybUV2UVFMZ3UwODdLZkxnV016N3dxTk83VXVGOTZFQ0lpN1oxeVBDd3g0dm10S09KTjVsYkZYWmt6VEN0VjQtYmx0TnI5UHpMQkpGNGtycU5Ka3dFZ0tlM2t6ckFuQUJLSlF4MWFEQVRrOGdVSlV1MTQ2MzVoZHVHQldQclkzYl9pc1ZyOXR6ZmxrQ01GWHE1U1hWMjRZWUNBalFzVFhJUmJKeVY1NzU2TndpVDJMN0Zxemd6TG1kM1g2aFo1TENqdjlLSndERVZDV1ROOXYyWmJtaThXRndyRHo1TGVva0xHQTRfS200OGFKWU1HcHhQbUwwd2tFWHlua0lYMEloSnJFdTl1eEVLSHpFaWFfV2pESXc4MFZ3Z2hacFhHVnczallEczVSN08temh2MmxjUjNVWEpyX1hNcm9lN2pBVjVwcVdvcF8tZWsxcjdRcHQtcnVkalMzcV96Qy11dUcwU2tYc0w0N05pOTJlM01QeWVEanVrV0FhbU14N0hxVHhfYXpOTDlKZWVaLXdfOHFkNng0d0tvNnFCN1IwLVdERnNPWEhZTThIVDVBdzZzS1g0OERsMFZmWmFCRTRKQlhUVldUczRDOW40cDNndTExYlJCLXRqMDFjM3VzdzB2eDNOLUVJczVZNmNYY3gzVU4wTzJ5a1dGM2pDcEVlY1VOQ0l6TktGVERyakFMWlhGdnpscmRleVc1UU82c0dkU1ZJc0FaNE1EbFRMUmVuMHJ6SmttdzBjRG12TjBPRzZUdlZnQm9Jdi1LYzM1Zy00SThGUXVVVy1wSVM5Z1FPTlltQ2dYa1FmeHpqSmRyY01DdFExc1Y5a2NnNUNDaXJRM0tZSC01YzNHaHJpRHJOWklHSlgzWGtFUkZSOUNxUEZVNlJTb2NSZU9yMGlBeDhMdHNzdWlFMVgyT2V5d1FhQW9wOERKMWFRM3hhUXdKUUdDV1N6S3VfNDllZTZSaHFTcHEwRXlQSUx4d3FvSGhQMzhOS2x3NUY1S0dkV282RnFFekljRlZPT08xNjBtdl95ZVluSU9JVW5RRU9HeGNXU0tWQ2lKbU1jWGFkeHRFV2syanFJdGJKaUR4b09XczRkMzRlYVdlYlZ5b05PaGNhaW03VVpRcTB0RS1HcEZpOFNaWm1PbW5JeEwwbGdaWVlrdldINVdWWS1uN0JlNmM5S29NWXZRVkZRNjlFbmRjcVMwekxWNnVuVjBhWi0zQ1RYVTFDdmZTS1oxb2JzRW96RTFlbFlaYXdLaUFVWFFFb2UyaGhTbWQ2M2IzUVNiZHVMRFBzPSIsCiAgICAiaXYiOiAiUUtUcTk5WTlOam5XSUR2VTFYbGRQMjNqNWVxWGFtcmYiLAogICAgInRhZyI6ICJUWGZFY0Uxd0ZNT09qRTBHQ0NJN0JBPT0iCiAgfQ

Once the redirect is setup, you can share the message as either a QR code or a deep link.

QR code

Construct a URL of the following structure:

http
Copy to clipboard.
1didcomm://https://YOUR_HOST_PROVIDER.com?redirectid=1234567

Convert it to a QR code using any QR encoder such as QR Code Generator or QR Server.

When the holder opens the MATTR Showcase Wallet and scans this QR code, it will follow the redirect you have configured and navigate to the credential offer screen in the wallet, where they can view and accept the credential.

Construct a URL of the following structure:

http
Copy to clipboard.
1didcomm://https://YOUR_HOST_PROVIDER.com?redirectid=1234567

Perform base64url encoding:

bash
Copy to clipboard.
1echo -n 'didcomm://https://YOUR_HOST_PROVIDER.com?redirectid=1234567' | base64url

Combine the encoded URL with the wallet bundle id to create a wallet deeplink:

http
Copy to clipboard.
1global.mattr.wallet://accept/ZGlkY29tbTovL2h0dHBzOi8vWU9VUl9IT1NUX1BST1ZJREVSLmNvbT9yZWRpcmVjdGlkPTEyMzQ1Njc

When the holder follows this URL from their device, it will open the MATTR Showcase Wallet, follow the configured redirect and navigate to the credential offer screen in the wallet, where they can view and accept the credential.