# Perform Encryption
source: https://developer.mastercard.com/issuer-enrollment/documentation/tutorials-and-guides/perform-encryption-tutorial/index.md

Use this tutorial to encrypt an object in Issuer Provisioning.

## Prerequisites {#prerequisites}

### Onboard using Mastercard Checkout Solutions Onboarding Application {#onboard-using-mastercard-checkout-solutions-onboarding-application}

1. Order the [Mastercard Checkout Solutions - Sandbox](https://www.mastercardconnect.com/-/store-plus/item-details/A/srconbrmtf) on [Mastercard Connect](https://www.mastercardconnect.com/).

2. [Enroll in the programs](https://developer.mastercard.com/issuer-enrollment/documentation/tutorials-and-guides/issuer-onboarding-click2pay-tutorial/index.md) you require for your sandbox projects.

3. [Create a sandbox project](https://developer.mastercard.com/issuer-enrollment/documentation/tutorials-and-guides/issuer-onboarding-click2pay-tutorial/index.md). You can create up to 30 sandbox projects to allow testing in different environments.

4. Download the auto-generated [API Signing Key (OAuth key)](https://developer.mastercard.com/issuer-enrollment/documentation/tutorials-and-guides/key-management-click2pay-tutorial/index.md) and [Consumer Key](https://developer.mastercard.com/issuer-enrollment/documentation/tutorials-and-guides/key-management-click2pay-tutorial/index.md).

Note: For detailed steps on onboarding in Mastercard Checkout Solutions, please refer to the [Onboard to Sandbox](https://developer.mastercard.com/issuer-enrollment/documentation/tutorials-and-guides/issuer-onboarding-click2pay-tutorial/index.md) tutorial.

## Step 1: Setup API Authentication and Encryption {#step-1-setup-api-authentication-and-encryption}

* To get started with the API integration, you can generate an API client using an [OpenAPI Generator](https://openapi-generator.tech/), which provides generators and library templates for supporting multiple languages and frameworks.

* To help you sign requests and perform encryption/decryption, Mastercard provides [client authentication libraries](https://github.com/Mastercard?q=oauth1-signer) and [encryption libraries](https://github.com/Mastercard?&q=client-encryption).

* Follow the steps in the [Generating and Configuring a Mastercard API Client](https://developer.mastercard.com/platform/documentation/security-and-authentication/generating-and-configuring-a-mastercard-api-client/) tutorial to enable authentication and perform encryption/decryption.

* Mastercard supports two protocols for authenticating client applications to integrate with Mastercard APIs. Learn more on the [API Basics](https://developer.mastercard.com/issuer-enrollment/documentation/api-basics/index.md) page.

Note: **In case of OAuth Authentication:**   

* Site identifier `X-Src-Cx-Flow-Id` is added as a part of all inbound API response headers for resolving site affinity issues on subsequent calls.
* When making back-to-back API calls, the client must include the `x-Src-Cx-Flow-Id` of the initial API response in the header of the subsequent API request. This ensures that the consecutive API calls will be sent to the same Mastercard server that returned the initial response.   

## Step 2: Encrypt an Object {#step-2-encrypt-an-object}

Encryption involves 2048-bit RSA public/private key pairs. A FPAN encryption key (`src-fpan-encryption`) is a public key that Mastercard provides to protect objects in transit. Data encrypted using a public key can only be decrypted using the corresponding private key.

To encrypt any object,

1. Access the updated public keys from the following URLs:   

   | Environment |                                        URL                                        |
   |-------------|-----------------------------------------------------------------------------------|
   | Sandbox     | FPAN Encryption Key: <https://sandbox.src.mastercard.com/keys/mcs/fpanEncryption> |
   | Production  | FPAN Encryption Key: <https://src.mastercard.com/keys/mcs/fpanEncryption>         |

   Refer to [Public Keys Mastercard Provides](https://developer.mastercard.com/issuer-enrollment/documentation/tutorials-and-guides/key-management-click2pay-tutorial/index.md) for more details.
2. Format your object as shown in the below example:   

   |             Object              |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Example                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   |---------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
   | card                            | ```json { "primaryAccountNumber":"5299920971401623", "panExpirationMonth":"08", "panExpirationYear":"2031", "cardSecurityCode":"000", "billingAddress": { "addressId": "8ecbf087-f159-4d69-b31d-00bec75c0466", "name": "SampleUser", "line1": "114 5th avenue", "line2": "Street", "line3": "Crofton Road", "city": "NYC", "state": "NY", "countryCode": "US", "zip": "08820", "createTime": "2025-01-06T13:44:45.385Z", "lastUsedTime": "2025-01-03T13:45:28.728Z" } } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | enrollmentData                  | ```json { "consumer": { "externalConsumerId": "e8cbf087-f159-4d69-b31d-00bec75c0476", "emailAddress": "abc@xyz.com", "mobileNumber": { "countryCode": 1, "phoneNumber": 7321112222 }, "countryCode": "US", "languageCode": "en", "firstName": "abc", "lastName": "def" }, "cards": [ { "externalCardId": "64cbf087-f159-4d69-b31d-00bec75c0686", "primaryAccountNumber": 5186000000008888, "panExpirationMonth": 12, "panExpirationYear": 2026, "cardholderFirstName": "Abc2", "cardholderLastName": "xyz2", "billingAddress": { "name": "cde", "line1": "line1", "line2": "line2", "line3": "line3", "city": "Edison", "state": "NJ", "countryCode": "US", "zip": "08820" } }, { "externalCardId": "48ebf087-f159-4d69-b31d-00bec75c0478", "primaryAccountNumber": 5186000000009999, "panExpirationMonth": 12, "panExpirationYear": 2026, "cardholderFirstName": "Abc2", "cardholderLastName": "xyz2", "billingAddress": { "name": "cde", "line1": "line1", "line2": "line2", "line3": "line3", "city": "Edison", "state": "NJ", "countryCode": "US", "zip": "08817" } } ] }, { "consumer": { "externalConsumerId": "eccbf087-f159-4d69-b31d-00bec75c0576", "emailAddress": "xyz@abc.com", "mobileNumber": { "countryCode": 1, "phoneNumber": 7321112222 }, "countryCode": "US", "languageCode": "en", "firstName": "abc", "lastName": "def" }, "cards": [ { "externalCardId": "84ebf087-f159-4d69-b31d-00bec75c0478", "primaryAccountNumber": 5186000000008888, "panExpirationMonth": 12, "panExpirationYear": 2026, "cardholderFirstName": "Abc2", "cardholderLastName": "xyz2", "billingAddress": { "name": "cde", "line1": "line1", "line2": "line2", "line3": "line3", "city": "Edison", "state": "NJ", "countryCode": "US", "zip": "08820" } }, { "externalCardId": "6ecbf087-f159-4d69-b31d-00bec75c0476", "primaryAccountNumber": 5186000000009999, "panExpirationMonth": 12, "panExpirationYear": 2026, "cardholderFirstName": "Abc2", "cardholderLastName": "xyz2", "billingAddress": { "name": "cde", "line1": "line1", "line2": "line2", "line3": "line3", "city": "Edison", "state": "NJ", "countryCode": "US", "zip": "08817" } } ] } ``` |
   | paymentData                     | ```json { "paymentToken": { "paymentAccountReference": "5001EUMYTT3AESCZGUEC77KPCLETI", "paymentToken": "5972374364093450", "tokenExpirationMonth": "05", "tokenExpirationYear": "2027" } } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | consumerData                    | ```json { "emailAddress": "xyz@abc.com", "mobileNumber": { "countryCode": "1", "phoneNumber": "7321112222" }, "countryCode": "US", "languageCode": "en", "firstName": "abc", "lastName": "def" } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | billingAddress                  | ```json { "addressId": "0e01ac3a-d5ba-41ea-a5fd-2b75d585734b", "name": "cde", "line1": "line1", "line2": "line2", "line3": "line3", "city": "Edison", "state": "NJ", "countryCode": "US", "zip": "08817", "createTime": "2025-02-07T13:44:45.385Z", "lastUsedTime": "2025-02-03T23:54:28.728Z" } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | SrcSessionInitiationRequestInfo | ```json { "srcClientId": "51a977f3-bda4-498b-901d-b48ad4d97abv", "srcCorrelationId": "AeCC42A6-6Afd-cF73-c100-9a09CaCBceFd", "srciTransactionId": "86bd4a91-46ba-4b2c-9b4a-59eea3812f06", "assuranceData": { "verificationData": [ { "verificationType": "CARDHOLDER", "verificationEntity": "03", "verificationMethod": "06", "verificationResults": "01", "verificationTimestamp": "1678294563", "verificationEvents": [ "04" ], "additionalData": { "accountReference": { "card": { "primaryAccountNumber": "5299920971401623", "panExpirationMonth": "08", "panExpirationYear": "2031" } } } }, { "verificationType": "CONSUMER", "verificationEntity": "03", "verificationMethod": "05", "verificationResults": "01", "verificationTimestamp": "1678294563", "additionalData": { "accountReference": { "consumerIdentity": { "identityProvider": "ABC", "identityType": "EMAIL_ADDRESS", "identityValue": "sample@mastercard.com" } } } }, { "verificationType": "CONSUMER", "verificationEntity": "03", "verificationMethod": "11", "verificationResults": "01", "verificationTimestamp": "1678294563", "additionalData": { "accountReference": { "consumerIdentity": { "identityProvider": "ABC", "identityType": "MOBILE_PHONE_NUMBER", "identityValue": { "countryCode": "1", "phoneNumber": "9174082908" } } } } } ] }, "authenticationMethod": { "authenticationMethodType": "FIDO2", "authenticationSubject": "CONSUMER", "authenticator": { "certifiedSolutionId": "20001", "metadata": { "fido2": { "displayName": "J*****h@gmail.com" } } } }, "authenticationContext": { "uriData": { "uri": "www.authentication.mastercard.com/05c666b6-c833-46c2-a4ab-6321fc3cfe8c", "uriType": "WEB_URI" } }, "complianceSettings": { "complianceResources": [ { "complianceType": "PRIVACY_POLICY", "uri": "https://www.mastercard.com/global/passkeys/en_us/terms-of-use.html", "version": 1, "datePublished": 1678294563, "info": { "languageText": "Sample Language Text", "languageTextVersion": 1, "locale": "en-AU", "acceptedAt": 1678294563, "ctaText": "Create Passkey", "channel": "WEB", "company": "Sample Company" } } ] } } ```        |

3. Import the following Java packages:

   * com.nimbusds.jose.EncryptionMethod
   * com.nimbusds.jose.JOSEException
   * com.nimbusds.jose.JWEAlgorithm
   * com.nimbusds.jose.JWECryptoParts
   * com.nimbusds.jose.JWEEncrypter
   * com.nimbusds.jose.JWEHeader
   * com.nimbusds.jose.JWEObject
   * com.nimbusds.jose.crypto.RSAEncrypter
   * com.nimbusds.jose.jwk.RSAKey
   * java.nio.charset.Charset
   * java.text.ParseException

   <br />

4. Create a public class and include the main method. Use the `nimbus-jose-jwt` library for creating the JWE token.   

   |             Object              |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Code Sample                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |---------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
   | card                            | ```java public class JWEEncryptor { public static final String KID = "20230207223521-sandbox-fpan-encryption-src-mastercard-int"; public static final String PAYLOAD = "{\"primaryAccountNumber\":\"5299920971401623\",\"panExpirationMonth\":\"08\",\"panExpirationYear\":\"2031\",\"cardSecurityCode\":\"000\",\"billingAddress\":{\"addressId\":\"8ecbf087-f159-4d69-b31d-00bec75c0466\",\"name\":\"SampleUser\",\"line1\":\"1145thavenue\",\"line2\":\"Street\",\"line3\":\"CroftonRoad\",\"city\":\"NYC\",\"state\":\"NY\",\"countryCode\":\"US\",\"zip\":\"08820\",\"createTime\":\"2025-01-06T13:44:45.385Z\",\"lastUsedTime\":\"2025-01-03T13:45:28.728Z\"}}"; public static final String PUBLIC_KEY = "{\n" + "  \"kty\": \"RSA\",\n" + "  \"x5t#S256\": \"NgYAgjb6lJhuCqoB-3aIPc7km_QvU5nM65xdmxp2bFk\",\n" + "  \"e\": \"AQAB\",\n" + "  \"use\": \"enc\",\n" + "  \"kid\": \"20230207223521-sandbox-fpan-encryption-src-mastercard-int\",\n" + "  \"x5c\": [\n" + "    \"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\"\n" + "  ],\n" + "  \"key_ops\": [\n" + "    \"encrypt\",\n" + "    \"wrapKey\"\n" + "  ],\n" + "  \"alg\": \"RSA-OAEP-256\",\n" + "  \"n\": \"t06I8sjlS-rrs7uCagH8evoeumaRovKziZSI9S2N9IDQ9tW2PapfRa9Lc1KveEBDVs27PkhkU5OyHgP0iEjTuKVpvh59T4la-mBSIls7UecUQLLa0WkmbtL7jNdltA5fq7AhcAr5qca988qrLd7Iyr9E0C3TxbT9to1iQcpz8ocZODRXoidFAnOVL5YGFmlsreDbJ4Vhsi0pAdccQcil-ydSgurKB-rqKppb9epomu4QUh3382Cv8NobYmF3os8nGGgGP-cyXo0nsKcPAgfrlQzos7qHxUOrFe2x_lZ1G1AE-XrkrxjBys9q53GMRSNCQ8c-_mcF9pbq4HYBs-vD5Q\"\n" + "}"; public static void main(String[] args) throws ParseException, JOSEException { //generate key by parsing your public key RSAKey key = RSAKey.parse(PUBLIC_KEY); //define JWE header JWEHeader header = new JWEHeader.Builder(JWEAlgorithm.RSA_OAEP_256, EncryptionMethod.A128GCM).keyID(KID).build(); // Create an RSA encrypted with the specified public RSA key JWEEncrypter joseRsaEncryptor = new RSAEncrypter(key); // Initialized the JWECryptoParts object JWECryptoParts jweCryptoParts = joseRsaEncryptor.encrypt(header, PAYLOAD.getBytes(Charset.defaultCharset())); // Doing the actual encryption JWEObject jweObject = new JWEObject(header.toBase64URL(), jweCryptoParts.getEncryptedKey(), jweCryptoParts.getInitializationVector(), jweCryptoParts.getCipherText(), jweCryptoParts.getAuthenticationTag()); // Serialize to JWT compact form String jwtString = jweObject.serialize(); printIt(jwtString); } private static void printIt(String jwtString) { System.out.println(""); System.out.println("========================= Encrypted JWE token =================================="); System.out.println(""); System.out.println("\n JWE token : " + jwtString); System.out.println(""); } } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | enrollmentData                  | ```java public class JWEEncryptor { public static final String KID = "20230207223521-sandbox-fpan-encryption-src-mastercard-int"; public static final String PAYLOAD = "\"enrollmentData\":[{\"consumer\":{\"externalConsumerId\":\"e8cbf087-f159-4d69-b31d-00bec75c0476\",\"emailAddress\":\"abc@xyz.com\",\"mobileNumber\":{\"countryCode\":1,\"phoneNumber\":7321112222},\"countryCode\":\"US\",\"languageCode\":\"en\",\"firstName\":\"abc\",\"lastName\":\"def\"},\"cards\":[{\"externalCardId\":\"64cbf087-f159-4d69-b31d-00bec75c0686\",\"primaryAccountNumber\":5186000000008888,\"panExpirationMonth\":12,\"panExpirationYear\":2026,\"cardholderFirstName\":\"Abc2\",\"cardholderLastName\":\"xyz2\",\"billingAddress\":{\"name\":\"cde\",\"line1\":\"line1\",\"line2\":\"line2\",\"line3\":\"line3\",\"city\":\"Edison\",\"state\":\"NJ\",\"countryCode\":\"US\",\"zip\":\"08820\"}},{\"externalCardId\":\"48ebf087-f159-4d69-b31d-00bec75c0478\",\"primaryAccountNumber\":5186000000009999,\"panExpirationMonth\":12,\"panExpirationYear\":2026,\"cardholderFirstName\":\"Abc2\",\"cardholderLastName\":\"xyz2\",\"billingAddress\":{\"name\":\"cde\",\"line1\":\"line1\",\"line2\":\"line2\",\"line3\":\"line3\",\"city\":\"Edison\",\"state\":\"NJ\",\"countryCode\":\"US\",\"zip\":\"08817\"}}]},{\"consumer\":{\"externalConsumerId\":\"eccbf087-f159-4d69-b31d-00bec75c0576\",\"emailAddress\":\"xyz@abc.com\",\"mobileNumber\":{\"countryCode\":1,\"phoneNumber\":7321112222},\"countryCode\":\"US\",\"languageCode\":\"en\",\"firstName\":\"abc\",\"lastName\":\"def\"},\"cards\":[{\"externalCardId\":\"84ebf087-f159-4d69-b31d-00bec75c0478\",\"primaryAccountNumber\":5186000000008888,\"panExpirationMonth\":12,\"panExpirationYear\":2026,\"cardholderFirstName\":\"Abc2\",\"cardholderLastName\":\"xyz2\",\"billingAddress\":{\"name\":\"cde\",\"line1\":\"line1\",\"line2\":\"line2\",\"line3\":\"line3\",\"city\":\"Edison\",\"state\":\"NJ\",\"countryCode\":\"US\",\"zip\":\"08820\"}},{\"externalCardId\":\"6ecbf087-f159-4d69-b31d-00bec75c0476\",\"primaryAccountNumber\":5186000000009999,\"panExpirationMonth\":12,\"panExpirationYear\":2026,\"cardholderFirstName\":\"Abc2\",\"cardholderLastName\":\"xyz2\",\"billingAddress\":{\"name\":\"cde\",\"line1\":\"line1\",\"line2\":\"line2\",\"line3\":\"line3\",\"city\":\"Edison\",\"state\":\"NJ\",\"countryCode\":\"US\",\"zip\":\"08817\"}}]}]"; public static final String PUBLIC_KEY = "{\n" + "  \"kty\": \"RSA\",\n" + "  \"x5t#S256\": \"NgYAgjb6lJhuCqoB-3aIPc7km_QvU5nM65xdmxp2bFk\",\n" + "  \"e\": \"AQAB\",\n" + "  \"use\": \"enc\",\n" + "  \"kid\": \"20230207223521-sandbox-fpan-encryption-src-mastercard-int\",\n" + "  \"x5c\": [\n" + "    \"MIIF5zCCA8+gAwIBAgIIDzMLWnXusKEwDQYJKoZIhvcNAQELBQAwgbgxEzARBgoJkiaJk/IsZAEZFgNjb20xGjAYBgoJkiaJk/IsZAEZFgptYXN0ZXJjYXJkMQswCQYDVQQGEwJCRTEdMBsGA1UEChMUTWFzdGVyQ2FyZCBXb3JsZHdpZGUxGzAZBgNVBAsTEkNvcnBvcmF0ZSBTZWN1cml0eTE8MDoGA1UEAxMzTWFzdGVyQ2FyZCBQUkQgQXBwbGljYXRpb24gSW5mcmFzdHJ1Y3R1cmUgU3ViIENBIEcyMB4XDTIzMDIwNzIxMzc0M1oXDTI1MDUxMzIyMjM0M1owga8xMzAxBgNVBAMMKnNhbmRib3gtZnBhbi1lbmNyeXB0aW9uLXNyYy5tYXN0ZXJjYXJkLmludDEMMAoGA1UECwwDc3JjMTQwMgYDVQQKDCtNYXN0ZXJDYXJkIFdvcmxkV2lkZSAtIENvbW1vbiBQcm9kSW5mcmEgU1NMMRQwEgYDVQQHDAtTYWludCBMb3VpczERMA8GA1UECAwITWlzc291cmkxCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt06I8sjlS+rrs7uCagH8evoeumaRovKziZSI9S2N9IDQ9tW2PapfRa9Lc1KveEBDVs27PkhkU5OyHgP0iEjTuKVpvh59T4la+mBSIls7UecUQLLa0WkmbtL7jNdltA5fq7AhcAr5qca988qrLd7Iyr9E0C3TxbT9to1iQcpz8ocZODRXoidFAnOVL5YGFmlsreDbJ4Vhsi0pAdccQcil+ydSgurKB+rqKppb9epomu4QUh3382Cv8NobYmF3os8nGGgGP+cyXo0nsKcPAgfrlQzos7qHxUOrFe2x/lZ1G1AE+XrkrxjBys9q53GMRSNCQ8c+/mcF9pbq4HYBs+vD5QIDAQABo4H7MIH4MA4GA1UdDwEB/wQEAwIAMDAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT80oMEkaLWiwM+0W5Wi8Rx7Z7IqjAfBgNVHSMEGDAWgBRLoKIgrzLwZl3LGXmYmLJs5e0n1DBhBgNVHR8EWjBYMFagVKBShlBodHRwOi8vY3JsZHAuZWNtcy5tY2xvY2FsLmludDoxMzUzNi80YmEwYTIyMGFmMzJmMDY2NWRjYjE5Nzk5ODk4YjI2Y2U1ZWQyN2Q0LmNybDA1BgNVHREELjAsgipzYW5kYm94LWZwYW4tZW5jcnlwdGlvbi1zcmMubWFzdGVyY2FyZC5pbnQwDQYJKoZIhvcNAQELBQADggIBAG7aXg4bmIQxMcxzLnKjxn0S1rmoLm+LYyMpBHISVoANCv81w888nW5hghRocYWsyDUIR3dXkKUEdLjh7qdTz5unlenhwEUOe3qYu1MzNcxLHLngltiiOqbDHYPb+qwCYZ8wR/O7nY0Xl3OhHHMbH8s0JsDtA0ae7kYz4m/apfrQe9L8O3NMXPdGQoX0m4qUTgs8DzSzkuqWdmi9XLInsofq8n/5Vc541sCOb6Qxvlf2G3lswIIuf0aCr92indfOiwDHN542rvIH6em4/dYAUfsfed/cvZa2T5kAdHxBS/CqNxBdKdReg3//FatLRoGB1SvD2l9JNycTBUKWIC/gwaHFFXIX42u+Jh4cQIPx+IvlDTYqi7nBYuRr8HV/kkj1Q9k2laS16tg+nn1II3RJl7I/aLz5BoaK1AQGUVQ95eIpjiy31vCg5QuLNTET1HCVvqkcst23f/ZE+yBDM6H+XQywp18+b38RCC+bOL8A6b8QUtSo7AcAh4Kygtxry9zU3J8rgkeqtj+00H/5e1ZvxHI75CMnZaLtMhO9mnuTB+maOeFPa45VYK8iU8oGSYui6fIunw/0FQhkaAgXWbUTcyRy4pCyH3jQFa6MmpaJhh5lbdynK9pbMEjMZ86P6InbUNgGhUZ2fYg0HUUTfwn1ChE4es4dzjgzbnoBvv0l0iT7\"\n" + "  ],\n" + "  \"key_ops\": [\n" + "    \"encrypt\",\n" + "    \"wrapKey\"\n" + "  ],\n" + "  \"alg\": \"RSA-OAEP-256\",\n" + "  \"n\": \"t06I8sjlS-rrs7uCagH8evoeumaRovKziZSI9S2N9IDQ9tW2PapfRa9Lc1KveEBDVs27PkhkU5OyHgP0iEjTuKVpvh59T4la-mBSIls7UecUQLLa0WkmbtL7jNdltA5fq7AhcAr5qca988qrLd7Iyr9E0C3TxbT9to1iQcpz8ocZODRXoidFAnOVL5YGFmlsreDbJ4Vhsi0pAdccQcil-ydSgurKB-rqKppb9epomu4QUh3382Cv8NobYmF3os8nGGgGP-cyXo0nsKcPAgfrlQzos7qHxUOrFe2x_lZ1G1AE-XrkrxjBys9q53GMRSNCQ8c-_mcF9pbq4HYBs-vD5Q\"\n" + "}"; public static void main(String[] args) throws ParseException, JOSEException { //generate key by parsing your public key RSAKey key = RSAKey.parse(PUBLIC_KEY); //define JWE header JWEHeader header = new JWEHeader.Builder(JWEAlgorithm.RSA_OAEP_256, EncryptionMethod.A128GCM).keyID(KID).build(); // Create an RSA encrypted with the specified public RSA key JWEEncrypter joseRsaEncryptor = new RSAEncrypter(key); // Initialized the JWECryptoParts object JWECryptoParts jweCryptoParts = joseRsaEncryptor.encrypt(header, PAYLOAD.getBytes(Charset.defaultCharset())); // Doing the actual encryption JWEObject jweObject = new JWEObject(header.toBase64URL(), jweCryptoParts.getEncryptedKey(), jweCryptoParts.getInitializationVector(), jweCryptoParts.getCipherText(), jweCryptoParts.getAuthenticationTag()); // Serialize to JWT compact form String jwtString = jweObject.serialize(); printIt(jwtString); } private static void printIt(String jwtString) { System.out.println(""); System.out.println("========================= Encrypted JWE token =================================="); System.out.println(""); System.out.println("\n JWE token : " + jwtString); System.out.println(""); } } ``` |
   | paymentData                     | ```java public class JWEPaymentEncryptor { public static final String KID = "20230207223521-sandbox-fpan-encryption-src-mastercard-int"; public static final String PAYLOAD = "{" + "\"paymentToken\":{" + "\"paymentAccountReference\":\"5001EUMYTT3AESCZGUEC77KPCLETI\"," + "\"paymentToken\":\"5972374364093450\"," + "\"tokenExpirationMonth\":\"05\"," + "\"tokenExpirationYear\":\"2022\"" + "}" + "}"; public static final String PUBLIC_KEY = "{\n" + "  \"kty\": \"RSA\",\n" + "  \"x5t#S256\": \"NgYAgjb6lJhuCqoB-3aIPc7km_QvU5nM65xdmxp2bFk\",\n" + "  \"e\": \"AQAB\",\n" + "  \"use\": \"enc\",\n" + "  \"kid\": \"20230207223521-sandbox-fpan-encryption-src-mastercard-int\",\n" + "  \"x5c\": [\n" + "    \"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\"\n" + "  ],\n" + "  \"key_ops\": [\n" + "    \"encrypt\",\n" + "    \"wrapKey\"\n" + "  ],\n" + "  \"alg\": \"RSA-OAEP-256\",\n" + "  \"n\": \"t06I8sjlS-rrs7uCagH8evoeumaRovKziZSI9S2N9IDQ9tW2PapfRa9Lc1KveEBDVs27PkhkU5OyHgP0iEjTuKVpvh59T4la-mBSIls7UecUQLLa0WkmbtL7jNdltA5fq7AhcAr5qca988qrLd7Iyr9E0C3TxbT9to1iQcpz8ocZODRXoidFAnOVL5YGFmlsreDbJ4Vhsi0pAdccQcil-ydSgurKB-rqKppb9epomu4QUh3382Cv8NobYmF3os8nGGgGP-cyXo0nsKcPAgfrlQzos7qHxUOrFe2x_lZ1G1AE-XrkrxjBys9q53GMRSNCQ8c-_mcF9pbq4HYBs-vD5Q\"\n" + "}"; public static void main(String[] args) throws ParseException, JOSEException { // Parse the public RSA key from JWK RSAKey key = RSAKey.parse(PUBLIC_KEY); // Define JWE header with RSA-OAEP-256 + A128GCM (matching original) JWEHeader header = new JWEHeader.Builder(JWEAlgorithm.RSA_OAEP_256, EncryptionMethod.A128GCM) .keyID(KID) .build(); // Create RSA encryptor using the public key JWEEncrypter joseRsaEncryptor = new RSAEncrypter(key); // Encrypt the payment token payload JWECryptoParts jweCryptoParts = joseRsaEncryptor.encrypt(header, PAYLOAD.getBytes(Charset.defaultCharset())); // Assemble JWE object from encrypted parts JWEObject jweObject = new JWEObject( header.toBase64URL(), jweCryptoParts.getEncryptedKey(), jweCryptoParts.getInitializationVector(), jweCryptoParts.getCipherText(), jweCryptoParts.getAuthenticationTag() ); // Serialize to compact JWE token string String jwtString = jweObject.serialize(); printIt(jwtString); } private static void printIt(String jwtString) { System.out.println(""); System.out.println("========================= Encrypted Payment JWE token =================================="); System.out.println(""); System.out.println("\n JWE token : " + jwtString); System.out.println(""); } } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | consumerData                    | ```java public class JWEEncryptor { public static final String KID = "20230207223521-sandbox-fpan-encryption-src-mastercard-int"; public static final String PAYLOAD = "{\"srcConsumerId\":\"51a977f3-bda4-498b-901d-b48ad4d97abv\",\"emailAddress\":\"xyz@abc.com\",\"mobileNumber\":{\"countryCode\":\"1\",\"phoneNumber\":\"7321112222\"},\"countryCode\":\"US\",\"languageCode\":\"en\",\"firstName\":\"abc\",\"lastName\":\"def\"}"; public static final String PUBLIC_KEY = "{\n" + "  \"kty\": \"RSA\",\n" + "  \"x5t#S256\": \"NgYAgjb6lJhuCqoB-3aIPc7km_QvU5nM65xdmxp2bFk\",\n" + "  \"e\": \"AQAB\",\n" + "  \"use\": \"enc\",\n" + "  \"kid\": \"20230207223521-sandbox-fpan-encryption-src-mastercard-int\",\n" + "  \"x5c\": [\n" + "    \"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\"\n" + "  ],\n" + "  \"key_ops\": [\n" + "    \"encrypt\",\n" + "    \"wrapKey\"\n" + "  ],\n" + "  \"alg\": \"RSA-OAEP-256\",\n" + "  \"n\": \"t06I8sjlS-rrs7uCagH8evoeumaRovKziZSI9S2N9IDQ9tW2PapfRa9Lc1KveEBDVs27PkhkU5OyHgP0iEjTuKVpvh59T4la-mBSIls7UecUQLLa0WkmbtL7jNdltA5fq7AhcAr5qca988qrLd7Iyr9E0C3TxbT9to1iQcpz8ocZODRXoidFAnOVL5YGFmlsreDbJ4Vhsi0pAdccQcil-ydSgurKB-rqKppb9epomu4QUh3382Cv8NobYmF3os8nGGgGP-cyXo0nsKcPAgfrlQzos7qHxUOrFe2x_lZ1G1AE-XrkrxjBys9q53GMRSNCQ8c-_mcF9pbq4HYBs-vD5Q\"\n" + "}"; public static void main(String[] args) throws ParseException, JOSEException { //generate key by parsing your public key RSAKey key = RSAKey.parse(PUBLIC_KEY); //define JWE header JWEHeader header = new JWEHeader.Builder(JWEAlgorithm.RSA_OAEP_256, EncryptionMethod.A128GCM).keyID(KID).build(); // Create an RSA encrypted with the specified public RSA key JWEEncrypter joseRsaEncryptor = new RSAEncrypter(key); // Initialized the JWECryptoParts object JWECryptoParts jweCryptoParts = joseRsaEncryptor.encrypt(header, PAYLOAD.getBytes(Charset.defaultCharset())); // Doing the actual encryption JWEObject jweObject = new JWEObject(header.toBase64URL(), jweCryptoParts.getEncryptedKey(), jweCryptoParts.getInitializationVector(), jweCryptoParts.getCipherText(), jweCryptoParts.getAuthenticationTag()); // Serialize to JWT compact form String jwtString = jweObject.serialize(); printIt(jwtString); } private static void printIt(String jwtString) { System.out.println(""); System.out.println("========================= Encrypted JWE token =================================="); System.out.println(""); System.out.println("\n JWE token : " + jwtString); System.out.println(""); } } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | billingAddress                  | ```java public class JWEEncryptor { public static final String KID = "20230207223521-sandbox-fpan-encryption-src-mastercard-int"; public static final String PAYLOAD = "{\"billingAddress\":{\"addressId\":\"0e01ac3a-d5ba-41ea-a5fd-2b75d585734b\",\"name\":\"cde\",\"line1\":\"line1\",\"line2\":\"line2\",\"line3\":\"line3\",\"city\":\"Edison\",\"state\":\"NJ\",\"countryCode\":\"US\",\"zip\":\"08817\",\"createTime\":\"2025-02-07T13:44:45.385Z\",\"lastUsedTime\":\"2025-02-03T23:54:28.728Z\"}}"; public static final String PUBLIC_KEY = "{\n" + "  \"kty\": \"RSA\",\n" + "  \"x5t#S256\": \"NgYAgjb6lJhuCqoB-3aIPc7km_QvU5nM65xdmxp2bFk\",\n" + "  \"e\": \"AQAB\",\n" + "  \"use\": \"enc\",\n" + "  \"kid\": \"20230207223521-sandbox-fpan-encryption-src-mastercard-int\",\n" + "  \"x5c\": [\n" + "    \"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\"\n" + "  ],\n" + "  \"key_ops\": [\n" + "    \"encrypt\",\n" + "    \"wrapKey\"\n" + "  ],\n" + "  \"alg\": \"RSA-OAEP-256\",\n" + "  \"n\": \"t06I8sjlS-rrs7uCagH8evoeumaRovKziZSI9S2N9IDQ9tW2PapfRa9Lc1KveEBDVs27PkhkU5OyHgP0iEjTuKVpvh59T4la-mBSIls7UecUQLLa0WkmbtL7jNdltA5fq7AhcAr5qca988qrLd7Iyr9E0C3TxbT9to1iQcpz8ocZODRXoidFAnOVL5YGFmlsreDbJ4Vhsi0pAdccQcil-ydSgurKB-rqKppb9epomu4QUh3382Cv8NobYmF3os8nGGgGP-cyXo0nsKcPAgfrlQzos7qHxUOrFe2x_lZ1G1AE-XrkrxjBys9q53GMRSNCQ8c-_mcF9pbq4HYBs-vD5Q\"\n" + "}"; public static void main(String[] args) throws ParseException, JOSEException { //generate key by parsing your public key RSAKey key = RSAKey.parse(PUBLIC_KEY); //define JWE header JWEHeader header = new JWEHeader.Builder(JWEAlgorithm.RSA_OAEP_256, EncryptionMethod.A128GCM).keyID(KID).build(); // Create an RSA encrypted with the specified public RSA key JWEEncrypter joseRsaEncryptor = new RSAEncrypter(key); // Initialized the JWECryptoParts object JWECryptoParts jweCryptoParts = joseRsaEncryptor.encrypt(header, PAYLOAD.getBytes(Charset.defaultCharset())); // Doing the actual encryption JWEObject jweObject = new JWEObject(header.toBase64URL(), jweCryptoParts.getEncryptedKey(), jweCryptoParts.getInitializationVector(), jweCryptoParts.getCipherText(), jweCryptoParts.getAuthenticationTag()); // Serialize to JWT compact form String jwtString = jweObject.serialize(); printIt(jwtString); } private static void printIt(String jwtString) { System.out.println(""); System.out.println("========================= Encrypted JWE token =================================="); System.out.println(""); System.out.println("\n JWE token : " + jwtString); System.out.println(""); } } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | SrcSessionInitiationRequestInfo | ```java public class JWEEncryptor { public static final String KID = "20230207223521-sandbox-fpan-encryption-src-mastercard-int"; public static final String PAYLOAD = "{\"srcClientId\":\"51a977f3-bda4-498b-901d-b48ad4d97abv\",\"srcCorrelationId\":\"AeCC42A6-6Afd-cF73-c100-9a09CaCBceFd\",\"srciTransactionId\":\"86bd4a91-46ba-4b2c-9b4a-59eea3812f06\",\"assuranceData\":{\"verificationData\":[{\"verificationType\":\"CARDHOLDER\",\"verificationEntity\":\"03\",\"verificationMethod\":\"06\",\"verificationResults\":\"01\",\"verificationTimestamp\":\"1678294563\",\"verificationEvents\":[\"04\"],\"additionalData\":{\"accountReference\":{\"card\":{\"primaryAccountNumber\":\"5299920971401623\",\"panExpirationMonth\":\"08\",\"panExpirationYear\":\"2031\"}}}},{\"verificationType\":\"CONSUMER\",\"verificationEntity\":\"03\",\"verificationMethod\":\"05\",\"verificationResults\":\"01\",\"verificationTimestamp\":\"1678294563\",\"additionalData\":{\"accountReference\":{\"consumerIdentity\":{\"identityProvider\":\"ABC\",\"identityType\":\"EMAIL_ADDRESS\",\"identityValue\":\"sample@mastercard.com\"}}}},{\"verificationType\":\"CONSUMER\",\"verificationEntity\":\"03\",\"verificationMethod\":\"11\",\"verificationResults\":\"01\",\"verificationTimestamp\":\"1678294563\",\"additionalData\":{\"accountReference\":{\"consumerIdentity\":{\"identityProvider\":\"ABC\",\"identityType\":\"MOBILE_PHONE_NUMBER\",\"identityValue\":{\"countryCode\":\"1\",\"phoneNumber\":\"9174082908\"}}}}}]},\"authenticationMethod\":{\"authenticationMethodType\":\"FIDO2\",\"authenticationSubject\":\"CONSUMER\",\"authenticator\":{\"certifiedSolutionId\":\"20001\",\"metadata\":{\"fido2\":{\"displayName\":\"J*****h@gmail.com\"}}}},\"authenticationContext\":{\"uriData\":{\"uri\":\"www.authentication.mastercard.com/05c666b6-c833-46c2-a4ab-6321fc3cfe8c\",\"uriType\":\"WEB_URI\"}},\"complianceSettings\":{\"complianceResources\":[{\"complianceType\":\"PRIVACY_POLICY\",\"uri\":\"https://www.mastercard.com/global/passkeys/en_us/terms-of-use.html\",\"version\":1,\"datePublished\":1678294563,\"info\":{\"languageText\":\"SampleLanguageText\",\"languageTextVersion\":1,\"locale\":\"en-AU\",\"acceptedAt\":1678294563,\"ctaText\":\"CreatePasskey\",\"channel\":\"WEB\",\"company\":\"SampleCompany\"}}]}}"; public static final String PUBLIC_KEY = "{\n" + "  \"kty\": \"RSA\",\n" + "  \"x5t#S256\": \"NgYAgjb6lJhuCqoB-3aIPc7km_QvU5nM65xdmxp2bFk\",\n" + "  \"e\": \"AQAB\",\n" + "  \"use\": \"enc\",\n" + "  \"kid\": \"20230207223521-sandbox-fpan-encryption-src-mastercard-int\",\n" + "  \"x5c\": [\n" + "    \"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\"\n" + "  ],\n" + "  \"key_ops\": [\n" + "    \"encrypt\",\n" + "    \"wrapKey\"\n" + "  ],\n" + "  \"alg\": \"RSA-OAEP-256\",\n" + "  \"n\": \"t06I8sjlS-rrs7uCagH8evoeumaRovKziZSI9S2N9IDQ9tW2PapfRa9Lc1KveEBDVs27PkhkU5OyHgP0iEjTuKVpvh59T4la-mBSIls7UecUQLLa0WkmbtL7jNdltA5fq7AhcAr5qca988qrLd7Iyr9E0C3TxbT9to1iQcpz8ocZODRXoidFAnOVL5YGFmlsreDbJ4Vhsi0pAdccQcil-ydSgurKB-rqKppb9epomu4QUh3382Cv8NobYmF3os8nGGgGP-cyXo0nsKcPAgfrlQzos7qHxUOrFe2x_lZ1G1AE-XrkrxjBys9q53GMRSNCQ8c-_mcF9pbq4HYBs-vD5Q\"\n" + "}"; public static void main(String[] args) throws ParseException, JOSEException { //generate key by parsing your public key RSAKey key = RSAKey.parse(PUBLIC_KEY); //define JWE header JWEHeader header = new JWEHeader.Builder(JWEAlgorithm.RSA_OAEP_256, EncryptionMethod.A128GCM).keyID(KID).build(); // Create an RSA encrypted with the specified public RSA key JWEEncrypter joseRsaEncryptor = new RSAEncrypter(key); // Initialized the JWECryptoParts object JWECryptoParts jweCryptoParts = joseRsaEncryptor.encrypt(header, PAYLOAD.getBytes(Charset.defaultCharset())); // Doing the actual encryption JWEObject jweObject = new JWEObject(header.toBase64URL(), jweCryptoParts.getEncryptedKey(), jweCryptoParts.getInitializationVector(), jweCryptoParts.getCipherText(), jweCryptoParts.getAuthenticationTag()); // Serialize to JWT compact form String jwtString = jweObject.serialize(); printIt(jwtString); } private static void printIt(String jwtString) { System.out.println(""); System.out.println("========================= Encrypted JWE token =================================="); System.out.println(""); System.out.println("\n JWE token : " + jwtString); System.out.println(""); } } ```                                                                        |

   Note: In the above code samples,
   * `PUBLIC_KEY` and `PAYLOAD` are required parameters to perform encryption.   
   * For `PUBLIC_KEY` parameter, ensure to use the updated public key value from the URLs mentioned in [Step 1](https://developer.mastercard.com/issuer-enrollment/documentation/tutorials-and-guides/perform-encryption-tutorial/index.md#step-2-encrypt-an-object).
5. Encrypt your objects using the above details and pass them in the relevant API calls:   

   |    Encrypted object/parameter     |                                                                      API call                                                                       |
   |-----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
   | `encryptedCard`                   | [Enroll API Synchronous](https://developer.mastercard.com/issuer-enrollment/documentation/api-reference/apis/index.md#enroll-api-synchronous).      |
   | `enrollmentData`                  | [Enroll API Asynchronous](https://developer.mastercard.com/issuer-enrollment/documentation/api-reference/apis/index.md#enroll-api-asynchronous).    |
   | `encryptedPaymentData`            | [Lifecycle Management API](https://developer.mastercard.com/issuer-enrollment/documentation/api-reference/apis/index.md#lifecycle-management-apis). |
   | `encryptedConsumerData`           | [Update Consumer Profile](https://developer.mastercard.com/issuer-enrollment/documentation/api-reference/apis/index.md#lifecycle-management-apis).  |
   | `encryptedBillingAddress`         | [Update Card](https://developer.mastercard.com/issuer-enrollment/documentation/api-reference/apis/index.md#lifecycle-management-apis).              |
   | `SrcSessionInitiationRequestInfo` | [Sessions](https://developer.mastercard.com/issuer-enrollment/documentation/api-reference/apis/index.md#authentication-apis).                       |

