- From: Anders Rundgren <notifications@github.com>
- Date: Thu, 30 Nov 2017 06:30:29 +0000 (UTC)
- To: w3c/webpayments-methods-tokenization <webpayments-methods-tokenization@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/webpayments-methods-tokenization/issues/22/348095164@github.com>
Maybe an existing implementation could serve as "inspiration"?
Sent back to the Merchant from the "Wallet":
```json
{
"@context": "http://webpki.org/saturn/v3",
"@qualifier": "PayerAuthorization",
"providerAuthorityUrl": "https://mobilepki.org/webpay-payerbank/authority",
"paymentMethod": "https://bankdirect.net",
"encryptedAuthorization": {
"algorithm": "A128CBC-HS256",
"keyEncryption": {
"algorithm": "ECDH-ES",
"publicKey": {
"kty": "EC",
"crv": "P-256",
"x": "TfCrhFwZRU_ea7lUWwRi3HkuyT2yF9IxN5xKh2khjlk",
"y": "nZFwxLP0TvFXD2xPKzRTIGevgLjpiMw2BP86hszj5x4"
},
"ephemeralKey": {
"kty": "EC",
"crv": "P-256",
"x": "aULMwrQGXfabPsySp8scwSba5bLS_JTA-OFi-DEiP6A",
"y": "8dvGM_q9ZbEuW0FbfQrMCwdBDzLPXCJtmr_lam8qMPM"
}
},
"iv": "XhGBuprfq9w0SUvf-JnQVA",
"tag": "A1-d1R-9y3IghfJus3Klcw",
"cipherText": "qBzSqs3fLFI5uzsi .... R7Gpn9kXqTKu"
}
}
```
_Explanation:_
- The `@context` and `@qualifier` properties _uniquely_ identify object type (there are many different object types in [Saturn)](https://cyberphone.github.io/doc/saturn)
- The `providerAuthorityUrl` replaces BIN numbers by pointing directly to the issuing bank (actually to an [Authority Object](https://cyberphone.github.io/doc/defensive-publications/authority-objects.pdf) holding vital information for the rest of the communication)
- The `publicKey `used for Diffie-Hellman comes from the payment credential stored on the client-side and is for privacy reasons _shared_ by all the issuer's clients
- An `ephemeralKey` is created by the payment app for each transaction
- `cipherText `contains the user authorization which only can be deciphered by the _issuer_
This _end-2-end secured_ scheme uses JOSE algorithms but a "nicer" container coined [JEF (Json Encryption Format)](https://cyberphone.github.io/doc/security/jef.html). The user authorization (hidden inside of `cipherText`) is _signed_ by a client-side payment key which also is only known by the issuer. That is, the issuer must first decrypt and then verify.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/webpayments-methods-tokenization/issues/22#issuecomment-348095164
Received on Thursday, 30 November 2017 06:30:57 UTC