-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Sent back to the Merchant from the "Wallet":
{
"@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
@contextand@qualifierproperties uniquely identify object type (there are many different object types in Saturn) - The
providerAuthorityUrlreplaces IIN/BIN numbers by pointing directly to the issuing bank (actually to an Authority Object holding vital information for the rest of the process) - The
publicKeyused for the Diffie-Hellman operation comes from the payment credential stored on the client-side and is for privacy reasons shared by all the Issuer's clients - The
ephemeralKeyused for the Diffie-Hellman operation is created by the payment app ("Wallet") for each request - The
cipherTextproperty contains the encrypted User Authorization which only can be deciphered by the Issuer
This End-2-End Secured scheme uses JOSE algorithms but in a somewhat "nicer" container coined JEF (Json Encryption Format). 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.
The User Authorization itself consists of:
- Hash of the Merchant's (signed) Payment Request
- Payment method
- Account identifier (IBAN, Card number, etc.)
- Time stamp
- Miscellaneous data
- User signature
To effectuate a transaction the issuer needs both the User Authorization and the associated Payment Request. In Saturn these are put in a Merchant-signed "container document", together with other data required for Merchant verification and payment processing.
A "visual" description is also available at: https://cyberphone.github.io/doc/saturn/saturn-authorization.pdf