@aws-sdk/client-payment-cryptography-data 3.899.0 → 3.903.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,112 @@
1
+ import { Command as $Command } from "@smithy/smithy-client";
2
+ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
3
+ import { TranslateKeyMaterialInput, TranslateKeyMaterialOutput } from "../models/models_0";
4
+ import { PaymentCryptographyDataClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../PaymentCryptographyDataClient";
5
+ /**
6
+ * @public
7
+ */
8
+ export type { __MetadataBearer };
9
+ export { $Command };
10
+ /**
11
+ * @public
12
+ *
13
+ * The input for {@link TranslateKeyMaterialCommand}.
14
+ */
15
+ export interface TranslateKeyMaterialCommandInput extends TranslateKeyMaterialInput {
16
+ }
17
+ /**
18
+ * @public
19
+ *
20
+ * The output of {@link TranslateKeyMaterialCommand}.
21
+ */
22
+ export interface TranslateKeyMaterialCommandOutput extends TranslateKeyMaterialOutput, __MetadataBearer {
23
+ }
24
+ declare const TranslateKeyMaterialCommand_base: {
25
+ new (input: TranslateKeyMaterialCommandInput): import("@smithy/smithy-client").CommandImpl<TranslateKeyMaterialCommandInput, TranslateKeyMaterialCommandOutput, PaymentCryptographyDataClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes>;
26
+ new (input: TranslateKeyMaterialCommandInput): import("@smithy/smithy-client").CommandImpl<TranslateKeyMaterialCommandInput, TranslateKeyMaterialCommandOutput, PaymentCryptographyDataClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes>;
27
+ getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions;
28
+ };
29
+ /**
30
+ * <p>Translates an encryption key between different wrapping keys without importing the key into Amazon Web Services Payment Cryptography.</p> <p>This operation can be used when key material is frequently rotated, such as during every card transaction, and there is a need to avoid importing short-lived keys into Amazon Web Services Payment Cryptography. It translates short-lived transaction keys such as Pin Encryption Key (PEK) generated for each transaction and wrapped with an ECDH (Elliptic Curve Diffie-Hellman) derived wrapping key to another KEK (Key Encryption Key) wrapping key. </p> <p>Before using this operation, you must first request the public key certificate of the ECC key pair generated within Amazon Web Services Payment Cryptography to establish an ECDH key agreement. In <code>TranslateKeyData</code>, the service uses its own ECC key pair, public certificate of receiving ECC key pair, and the key derivation parameters to generate a derived key. The service uses this derived key to unwrap the incoming transaction key received as a TR31WrappedKeyBlock and re-wrap using a user provided KEK to generate an outgoing Tr31WrappedKeyBlock. For more information on establishing ECDH derived keys, see the <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/create-keys.html">Creating keys</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p> <p>For information about valid keys for this operation, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html">Understanding key attributes</a> and <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html">Key types for specific data operations</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>. </p> <p> <b>Cross-account use</b>: This operation can't be used across different Amazon Web Services accounts.</p> <p> <b>Related operations:</b> </p> <ul> <li> <p> <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html">CreateKey</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_GetPublicKeyCertificate.html">GetPublicCertificate</a> </p> </li> <li> <p> <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html">ImportKey</a> </p> </li> </ul>
31
+ * @example
32
+ * Use a bare-bones client and the command you need to make an API call.
33
+ * ```javascript
34
+ * import { PaymentCryptographyDataClient, TranslateKeyMaterialCommand } from "@aws-sdk/client-payment-cryptography-data"; // ES Modules import
35
+ * // const { PaymentCryptographyDataClient, TranslateKeyMaterialCommand } = require("@aws-sdk/client-payment-cryptography-data"); // CommonJS import
36
+ * // import type { PaymentCryptographyDataClientConfig } from "@aws-sdk/client-payment-cryptography-data";
37
+ * const config = {}; // type is PaymentCryptographyDataClientConfig
38
+ * const client = new PaymentCryptographyDataClient(config);
39
+ * const input = { // TranslateKeyMaterialInput
40
+ * IncomingKeyMaterial: { // IncomingKeyMaterial Union: only one key present
41
+ * DiffieHellmanTr31KeyBlock: { // IncomingDiffieHellmanTr31KeyBlock
42
+ * PrivateKeyIdentifier: "STRING_VALUE", // required
43
+ * CertificateAuthorityPublicKeyIdentifier: "STRING_VALUE", // required
44
+ * PublicKeyCertificate: "STRING_VALUE", // required
45
+ * DeriveKeyAlgorithm: "TDES_2KEY" || "TDES_3KEY" || "AES_128" || "AES_192" || "AES_256" || "HMAC_SHA256" || "HMAC_SHA384" || "HMAC_SHA512" || "HMAC_SHA224", // required
46
+ * KeyDerivationFunction: "NIST_SP800" || "ANSI_X963", // required
47
+ * KeyDerivationHashAlgorithm: "SHA_256" || "SHA_384" || "SHA_512", // required
48
+ * DerivationData: { // DiffieHellmanDerivationData Union: only one key present
49
+ * SharedInformation: "STRING_VALUE",
50
+ * },
51
+ * WrappedKeyBlock: "STRING_VALUE", // required
52
+ * },
53
+ * },
54
+ * OutgoingKeyMaterial: { // OutgoingKeyMaterial Union: only one key present
55
+ * Tr31KeyBlock: { // OutgoingTr31KeyBlock
56
+ * WrappingKeyIdentifier: "STRING_VALUE", // required
57
+ * },
58
+ * },
59
+ * KeyCheckValueAlgorithm: "STRING_VALUE",
60
+ * };
61
+ * const command = new TranslateKeyMaterialCommand(input);
62
+ * const response = await client.send(command);
63
+ * // { // TranslateKeyMaterialOutput
64
+ * // WrappedKey: { // WrappedWorkingKey
65
+ * // WrappedKeyMaterial: "STRING_VALUE", // required
66
+ * // KeyCheckValue: "STRING_VALUE", // required
67
+ * // WrappedKeyMaterialFormat: "STRING_VALUE", // required
68
+ * // },
69
+ * // };
70
+ *
71
+ * ```
72
+ *
73
+ * @param TranslateKeyMaterialCommandInput - {@link TranslateKeyMaterialCommandInput}
74
+ * @returns {@link TranslateKeyMaterialCommandOutput}
75
+ * @see {@link TranslateKeyMaterialCommandInput} for command's `input` shape.
76
+ * @see {@link TranslateKeyMaterialCommandOutput} for command's `response` shape.
77
+ * @see {@link PaymentCryptographyDataClientResolvedConfig | config} for PaymentCryptographyDataClient's `config` shape.
78
+ *
79
+ * @throws {@link AccessDeniedException} (client fault)
80
+ * <p>You do not have sufficient access to perform this action.</p>
81
+ *
82
+ * @throws {@link InternalServerException} (server fault)
83
+ * <p>The request processing has failed because of an unknown error, exception, or failure.</p>
84
+ *
85
+ * @throws {@link ResourceNotFoundException} (client fault)
86
+ * <p>The request was denied due to an invalid resource error.</p>
87
+ *
88
+ * @throws {@link ThrottlingException} (client fault)
89
+ * <p>The request was denied due to request throttling.</p>
90
+ *
91
+ * @throws {@link ValidationException} (client fault)
92
+ * <p>The request was denied due to an invalid request error.</p>
93
+ *
94
+ * @throws {@link PaymentCryptographyDataServiceException}
95
+ * <p>Base exception class for all service exceptions from PaymentCryptographyData service.</p>
96
+ *
97
+ *
98
+ * @public
99
+ */
100
+ export declare class TranslateKeyMaterialCommand extends TranslateKeyMaterialCommand_base {
101
+ /** @internal type navigation helper, not in runtime. */
102
+ protected static __types: {
103
+ api: {
104
+ input: TranslateKeyMaterialInput;
105
+ output: TranslateKeyMaterialOutput;
106
+ };
107
+ sdk: {
108
+ input: TranslateKeyMaterialCommandInput;
109
+ output: TranslateKeyMaterialCommandOutput;
110
+ };
111
+ };
112
+ }
@@ -27,7 +27,7 @@ declare const TranslatePinDataCommand_base: {
27
27
  getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions;
28
28
  };
29
29
  /**
30
- * <p>Translates encrypted PIN block from and to ISO 9564 formats 0,1,3,4. For more information, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/translate-pin-data.html">Translate PIN data</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p> <p>PIN block translation involves changing a PIN block from one encryption key to another and optionally change its format. PIN block translation occurs entirely within the HSM boundary and PIN data never enters or leaves Amazon Web Services Payment Cryptography in clear text. The encryption key transformation can be from PEK (Pin Encryption Key) to BDK (Base Derivation Key) for DUKPT or from BDK for DUKPT to PEK.</p> <p>Amazon Web Services Payment Cryptography also supports use of dynamic keys and ECDH (Elliptic Curve Diffie-Hellman) based key exchange for this operation.</p> <p>Dynamic keys allow you to pass a PEK as a TR-31 WrappedKeyBlock. They can be used when key material is frequently rotated, such as during every card transaction, and there is need to avoid importing short-lived keys into Amazon Web Services Payment Cryptography. To translate PIN block using dynamic keys, the <code>keyARN</code> is the Key Encryption Key (KEK) of the TR-31 wrapped PEK. The incoming wrapped key shall have a key purpose of P0 with a mode of use of B or D. For more information, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/use-cases-acquirers-dynamickeys.html">Using Dynamic Keys</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p> <p>Using ECDH key exchange, you can receive cardholder selectable PINs into Amazon Web Services Payment Cryptography. The ECDH derived key protects the incoming PIN block, which is translated to a PEK encrypted PIN block for use within the service. You can also use ECDH for reveal PIN, wherein the service translates the PIN block from PEK to a ECDH derived encryption key. For more information on establishing ECDH derived keys, see the <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/create-keys.html">Generating keys</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p> <p>The allowed combinations of PIN block format translations are guided by PCI. It is important to note that not all encrypted PIN block formats (example, format 1) require PAN (Primary Account Number) as input. And as such, PIN block format that requires PAN (example, formats 0,3,4) cannot be translated to a format (format 1) that does not require a PAN for generation. </p> <p>For information about valid keys for this operation, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html">Understanding key attributes</a> and <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html">Key types for specific data operations</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p> <note> <p>Amazon Web Services Payment Cryptography currently supports ISO PIN block 4 translation for PIN block built using legacy PAN length. That is, PAN is the right most 12 digits excluding the check digits.</p> </note> <p> <b>Cross-account use</b>: This operation can't be used across different Amazon Web Services accounts.</p> <p> <b>Related operations:</b> </p> <ul> <li> <p> <a>GeneratePinData</a> </p> </li> <li> <p> <a>VerifyPinData</a> </p> </li> </ul>
30
+ * <p>Translates encrypted PIN block from and to ISO 9564 formats 0,1,3,4. For more information, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/translate-pin-data.html">Translate PIN data</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p> <p>PIN block translation involves changing a PIN block from one encryption key to another and optionally change its format. PIN block translation occurs entirely within the HSM boundary and PIN data never enters or leaves Amazon Web Services Payment Cryptography in clear text. The encryption key transformation can be from PEK (Pin Encryption Key) to BDK (Base Derivation Key) for DUKPT or from BDK for DUKPT to PEK.</p> <p>Amazon Web Services Payment Cryptography also supports use of dynamic keys and ECDH (Elliptic Curve Diffie-Hellman) based key exchange for this operation.</p> <p>Dynamic keys allow you to pass a PEK as a TR-31 WrappedKeyBlock. They can be used when key material is frequently rotated, such as during every card transaction, and there is need to avoid importing short-lived keys into Amazon Web Services Payment Cryptography. To translate PIN block using dynamic keys, the <code>keyARN</code> is the Key Encryption Key (KEK) of the TR-31 wrapped PEK. The incoming wrapped key shall have a key purpose of P0 with a mode of use of B or D. For more information, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/use-cases-acquirers-dynamickeys.html">Using Dynamic Keys</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p> <p>Using ECDH key exchange, you can receive cardholder selectable PINs into Amazon Web Services Payment Cryptography. The ECDH derived key protects the incoming PIN block, which is translated to a PEK encrypted PIN block for use within the service. You can also use ECDH for reveal PIN, wherein the service translates the PIN block from PEK to a ECDH derived encryption key. For more information on establishing ECDH derived keys, see the <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/create-keys.html">Creating keys</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p> <p>The allowed combinations of PIN block format translations are guided by PCI. It is important to note that not all encrypted PIN block formats (example, format 1) require PAN (Primary Account Number) as input. And as such, PIN block format that requires PAN (example, formats 0,3,4) cannot be translated to a format (format 1) that does not require a PAN for generation. </p> <p>For information about valid keys for this operation, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html">Understanding key attributes</a> and <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html">Key types for specific data operations</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p> <note> <p>Amazon Web Services Payment Cryptography currently supports ISO PIN block 4 translation for PIN block built using legacy PAN length. That is, PAN is the right most 12 digits excluding the check digits.</p> </note> <p> <b>Cross-account use</b>: This operation can't be used across different Amazon Web Services accounts.</p> <p> <b>Related operations:</b> </p> <ul> <li> <p> <a>GeneratePinData</a> </p> </li> <li> <p> <a>VerifyPinData</a> </p> </li> </ul>
31
31
  * @example
32
32
  * Use a bare-bones client and the command you need to make an API call.
33
33
  * ```javascript
@@ -52,8 +52,8 @@ declare const VerifyPinDataCommand_base: {
52
52
  * },
53
53
  * },
54
54
  * EncryptedPinBlock: "STRING_VALUE", // required
55
- * PrimaryAccountNumber: "STRING_VALUE", // required
56
- * PinBlockFormat: "ISO_FORMAT_0" || "ISO_FORMAT_3" || "ISO_FORMAT_4", // required
55
+ * PrimaryAccountNumber: "STRING_VALUE",
56
+ * PinBlockFormat: "ISO_FORMAT_0" || "ISO_FORMAT_1" || "ISO_FORMAT_3" || "ISO_FORMAT_4", // required
57
57
  * PinDataLength: Number("int"),
58
58
  * DukptAttributes: { // DukptAttributes
59
59
  * KeySerialNumber: "STRING_VALUE", // required
@@ -5,6 +5,7 @@ export * from "./GenerateMacCommand";
5
5
  export * from "./GenerateMacEmvPinChangeCommand";
6
6
  export * from "./GeneratePinDataCommand";
7
7
  export * from "./ReEncryptDataCommand";
8
+ export * from "./TranslateKeyMaterialCommand";
8
9
  export * from "./TranslatePinDataCommand";
9
10
  export * from "./VerifyAuthRequestCryptogramCommand";
10
11
  export * from "./VerifyCardValidationDataCommand";
@@ -1365,6 +1365,36 @@ export declare namespace DerivationMethodAttributes {
1365
1365
  }
1366
1366
  const visit: <T>(value: DerivationMethodAttributes, visitor: Visitor<T>) => T;
1367
1367
  }
1368
+ /**
1369
+ * <p>The shared information used when deriving a key using ECDH.</p>
1370
+ * @public
1371
+ */
1372
+ export type DiffieHellmanDerivationData = DiffieHellmanDerivationData.SharedInformationMember | DiffieHellmanDerivationData.$UnknownMember;
1373
+ /**
1374
+ * @public
1375
+ */
1376
+ export declare namespace DiffieHellmanDerivationData {
1377
+ /**
1378
+ * <p>A string containing information that binds the ECDH derived key to the two parties involved or to the context of the key.</p> <p>It may include details like identities of the two parties deriving the key, context of the operation, session IDs, and optionally a nonce. It must not contain zero bytes. It is not recommended to reuse shared information for multiple ECDH key derivations, as it could result in derived key material being the same across different derivations.</p>
1379
+ * @public
1380
+ */
1381
+ interface SharedInformationMember {
1382
+ SharedInformation: string;
1383
+ $unknown?: never;
1384
+ }
1385
+ /**
1386
+ * @public
1387
+ */
1388
+ interface $UnknownMember {
1389
+ SharedInformation?: never;
1390
+ $unknown: [string, any];
1391
+ }
1392
+ interface Visitor<T> {
1393
+ SharedInformation: (value: string) => T;
1394
+ _: (name: string, value: any) => T;
1395
+ }
1396
+ const visit: <T>(value: DiffieHellmanDerivationData, visitor: Visitor<T>) => T;
1397
+ }
1368
1398
  /**
1369
1399
  * <p>Parameters that are used for Derived Unique Key Per Transaction (DUKPT) derivation algorithm.</p>
1370
1400
  * @public
@@ -2120,6 +2150,7 @@ export declare namespace PinGenerationAttributes {
2120
2150
  */
2121
2151
  export declare const PinBlockFormatForPinData: {
2122
2152
  readonly ISO_FORMAT_0: "ISO_FORMAT_0";
2153
+ readonly ISO_FORMAT_1: "ISO_FORMAT_1";
2123
2154
  readonly ISO_FORMAT_3: "ISO_FORMAT_3";
2124
2155
  readonly ISO_FORMAT_4: "ISO_FORMAT_4";
2125
2156
  };
@@ -2155,9 +2186,9 @@ export interface GeneratePinDataInput {
2155
2186
  * <p>The Primary Account Number (PAN), a unique identifier for a payment credit or debit card that associates the card with a specific account holder.</p>
2156
2187
  * @public
2157
2188
  */
2158
- PrimaryAccountNumber: string | undefined;
2189
+ PrimaryAccountNumber?: string | undefined;
2159
2190
  /**
2160
- * <p>The PIN encoding format for pin data generation as specified in ISO 9564. Amazon Web Services Payment Cryptography supports <code>ISO_Format_0</code> and <code>ISO_Format_3</code>.</p> <p>The <code>ISO_Format_0</code> PIN block format is equivalent to the ANSI X9.8, VISA-1, and ECI-1 PIN block formats. It is similar to a VISA-4 PIN block format. It supports a PIN from 4 to 12 digits in length.</p> <p>The <code>ISO_Format_3</code> PIN block format is the same as <code>ISO_Format_0</code> except that the fill digits are random values from 10 to 15.</p>
2191
+ * <p>The PIN encoding format for pin data generation as specified in ISO 9564. Amazon Web Services Payment Cryptography supports <code>ISO_Format_0</code>, <code>ISO_Format_3</code> and <code>ISO_Format_4</code>.</p> <p>The <code>ISO_Format_0</code> PIN block format is equivalent to the ANSI X9.8, VISA-1, and ECI-1 PIN block formats. It is similar to a VISA-4 PIN block format. It supports a PIN from 4 to 12 digits in length.</p> <p>The <code>ISO_Format_3</code> PIN block format is the same as <code>ISO_Format_0</code> except that the fill digits are random values from 10 to 15.</p> <p>The <code>ISO_Format_4</code> PIN block format is the only one supporting AES encryption. It is similar to <code>ISO_Format_3</code> but doubles the pin block length by padding with fill digit A and random values from 10 to 15.</p>
2161
2192
  * @public
2162
2193
  */
2163
2194
  PinBlockFormat: PinBlockFormatForPinData | undefined;
@@ -2270,6 +2301,123 @@ export interface Ibm3624PinVerification {
2270
2301
  */
2271
2302
  PinOffset: string | undefined;
2272
2303
  }
2304
+ /**
2305
+ * <p>Parameter information of a TR31KeyBlock wrapped using an ECDH derived key.</p>
2306
+ * @public
2307
+ */
2308
+ export interface IncomingDiffieHellmanTr31KeyBlock {
2309
+ /**
2310
+ * <p>The <code>keyARN</code> of the asymmetric ECC key pair.</p>
2311
+ * @public
2312
+ */
2313
+ PrivateKeyIdentifier: string | undefined;
2314
+ /**
2315
+ * <p>The <code>keyArn</code> of the certificate that signed the client's <code>PublicKeyCertificate</code>.</p>
2316
+ * @public
2317
+ */
2318
+ CertificateAuthorityPublicKeyIdentifier: string | undefined;
2319
+ /**
2320
+ * <p>The client's public key certificate in PEM format (base64 encoded) to use for ECDH key derivation.</p>
2321
+ * @public
2322
+ */
2323
+ PublicKeyCertificate: string | undefined;
2324
+ /**
2325
+ * <p>The key algorithm of the derived ECDH key.</p>
2326
+ * @public
2327
+ */
2328
+ DeriveKeyAlgorithm: SymmetricKeyAlgorithm | undefined;
2329
+ /**
2330
+ * <p>The key derivation function to use for deriving a key using ECDH.</p>
2331
+ * @public
2332
+ */
2333
+ KeyDerivationFunction: KeyDerivationFunction | undefined;
2334
+ /**
2335
+ * <p>The hash type to use for deriving a key using ECDH.</p>
2336
+ * @public
2337
+ */
2338
+ KeyDerivationHashAlgorithm: KeyDerivationHashAlgorithm | undefined;
2339
+ /**
2340
+ * <p>The shared information used when deriving a key using ECDH.</p>
2341
+ * @public
2342
+ */
2343
+ DerivationData: DiffieHellmanDerivationData | undefined;
2344
+ /**
2345
+ * <p>The WrappedKeyBlock containing the transaction key wrapped using an ECDH dervied key. </p>
2346
+ * @public
2347
+ */
2348
+ WrappedKeyBlock: string | undefined;
2349
+ }
2350
+ /**
2351
+ * <p>Parameter information of the incoming WrappedKeyBlock containing the transaction key.</p>
2352
+ * @public
2353
+ */
2354
+ export type IncomingKeyMaterial = IncomingKeyMaterial.DiffieHellmanTr31KeyBlockMember | IncomingKeyMaterial.$UnknownMember;
2355
+ /**
2356
+ * @public
2357
+ */
2358
+ export declare namespace IncomingKeyMaterial {
2359
+ /**
2360
+ * <p>Parameter information of the TR31WrappedKeyBlock containing the transaction key wrapped using an ECDH dervied key.</p>
2361
+ * @public
2362
+ */
2363
+ interface DiffieHellmanTr31KeyBlockMember {
2364
+ DiffieHellmanTr31KeyBlock: IncomingDiffieHellmanTr31KeyBlock;
2365
+ $unknown?: never;
2366
+ }
2367
+ /**
2368
+ * @public
2369
+ */
2370
+ interface $UnknownMember {
2371
+ DiffieHellmanTr31KeyBlock?: never;
2372
+ $unknown: [string, any];
2373
+ }
2374
+ interface Visitor<T> {
2375
+ DiffieHellmanTr31KeyBlock: (value: IncomingDiffieHellmanTr31KeyBlock) => T;
2376
+ _: (name: string, value: any) => T;
2377
+ }
2378
+ const visit: <T>(value: IncomingKeyMaterial, visitor: Visitor<T>) => T;
2379
+ }
2380
+ /**
2381
+ * <p>Parameter information of the TR31WrappedKeyBlock containing the transaction key wrapped using a KEK.</p>
2382
+ * @public
2383
+ */
2384
+ export interface OutgoingTr31KeyBlock {
2385
+ /**
2386
+ * <p>The <code>keyARN</code> of the KEK used to wrap the transaction key.</p>
2387
+ * @public
2388
+ */
2389
+ WrappingKeyIdentifier: string | undefined;
2390
+ }
2391
+ /**
2392
+ * <p>Parameter information of the outgoing TR31WrappedKeyBlock containing the transaction key.</p>
2393
+ * @public
2394
+ */
2395
+ export type OutgoingKeyMaterial = OutgoingKeyMaterial.Tr31KeyBlockMember | OutgoingKeyMaterial.$UnknownMember;
2396
+ /**
2397
+ * @public
2398
+ */
2399
+ export declare namespace OutgoingKeyMaterial {
2400
+ /**
2401
+ * <p>Parameter information of the TR31WrappedKeyBlock containing the transaction key wrapped using a KEK.</p>
2402
+ * @public
2403
+ */
2404
+ interface Tr31KeyBlockMember {
2405
+ Tr31KeyBlock: OutgoingTr31KeyBlock;
2406
+ $unknown?: never;
2407
+ }
2408
+ /**
2409
+ * @public
2410
+ */
2411
+ interface $UnknownMember {
2412
+ Tr31KeyBlock?: never;
2413
+ $unknown: [string, any];
2414
+ }
2415
+ interface Visitor<T> {
2416
+ Tr31KeyBlock: (value: OutgoingTr31KeyBlock) => T;
2417
+ _: (name: string, value: any) => T;
2418
+ }
2419
+ const visit: <T>(value: OutgoingKeyMaterial, visitor: Visitor<T>) => T;
2420
+ }
2273
2421
  /**
2274
2422
  * <p>Parameters that are required to perform reencryption operation.</p>
2275
2423
  * @public
@@ -2372,6 +2520,70 @@ export interface ReEncryptDataOutput {
2372
2520
  */
2373
2521
  CipherText: string | undefined;
2374
2522
  }
2523
+ /**
2524
+ * @public
2525
+ */
2526
+ export interface TranslateKeyMaterialInput {
2527
+ /**
2528
+ * <p>Parameter information of the TR31WrappedKeyBlock containing the transaction key.</p>
2529
+ * @public
2530
+ */
2531
+ IncomingKeyMaterial: IncomingKeyMaterial | undefined;
2532
+ /**
2533
+ * <p>Parameter information of the wrapping key used to wrap the transaction key in the outgoing TR31WrappedKeyBlock.</p>
2534
+ * @public
2535
+ */
2536
+ OutgoingKeyMaterial: OutgoingKeyMaterial | undefined;
2537
+ /**
2538
+ * <p>The key check value (KCV) algorithm used for calculating the KCV.</p>
2539
+ * @public
2540
+ */
2541
+ KeyCheckValueAlgorithm?: KeyCheckValueAlgorithm | undefined;
2542
+ }
2543
+ /**
2544
+ * @public
2545
+ * @enum
2546
+ */
2547
+ export declare const WrappedKeyMaterialFormat: {
2548
+ readonly KEY_CRYPTOGRAM: "KEY_CRYPTOGRAM";
2549
+ readonly TR31_KEY_BLOCK: "TR31_KEY_BLOCK";
2550
+ readonly TR34_KEY_BLOCK: "TR34_KEY_BLOCK";
2551
+ };
2552
+ /**
2553
+ * @public
2554
+ */
2555
+ export type WrappedKeyMaterialFormat = (typeof WrappedKeyMaterialFormat)[keyof typeof WrappedKeyMaterialFormat];
2556
+ /**
2557
+ * <p>The parameter information of the outgoing wrapped key block.</p>
2558
+ * @public
2559
+ */
2560
+ export interface WrappedWorkingKey {
2561
+ /**
2562
+ * <p>The wrapped key block of the outgoing transaction key.</p>
2563
+ * @public
2564
+ */
2565
+ WrappedKeyMaterial: string | undefined;
2566
+ /**
2567
+ * <p>The key check value (KCV) of the key contained within the outgoing TR31WrappedKeyBlock.</p> <p> The KCV is used to check if all parties holding a given key have the same key or to detect that a key has changed. For more information on KCV, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/terminology.html#terms.kcv">KCV</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p>
2568
+ * @public
2569
+ */
2570
+ KeyCheckValue: string | undefined;
2571
+ /**
2572
+ * <p>The key block format of the wrapped key.</p>
2573
+ * @public
2574
+ */
2575
+ WrappedKeyMaterialFormat: WrappedKeyMaterialFormat | undefined;
2576
+ }
2577
+ /**
2578
+ * @public
2579
+ */
2580
+ export interface TranslateKeyMaterialOutput {
2581
+ /**
2582
+ * <p>The outgoing KEK wrapped TR31WrappedKeyBlock.</p>
2583
+ * @public
2584
+ */
2585
+ WrappedKey: WrappedWorkingKey | undefined;
2586
+ }
2375
2587
  /**
2376
2588
  * <p>Parameters that are required for tranlation between ISO9564 PIN format 0,3,4 tranlation.</p>
2377
2589
  * @public
@@ -2979,7 +3191,7 @@ export interface VerifyPinDataInput {
2979
3191
  * <p>The Primary Account Number (PAN), a unique identifier for a payment credit or debit card that associates the card with a specific account holder.</p>
2980
3192
  * @public
2981
3193
  */
2982
- PrimaryAccountNumber: string | undefined;
3194
+ PrimaryAccountNumber?: string | undefined;
2983
3195
  /**
2984
3196
  * <p>The PIN encoding format for pin data generation as specified in ISO 9564. Amazon Web Services Payment Cryptography supports <code>ISO_Format_0</code> and <code>ISO_Format_3</code>.</p> <p>The <code>ISO_Format_0</code> PIN block format is equivalent to the ANSI X9.8, VISA-1, and ECI-1 PIN block formats. It is similar to a VISA-4 PIN block format. It supports a PIN from 4 to 12 digits in length.</p> <p>The <code>ISO_Format_3</code> PIN block format is the same as <code>ISO_Format_0</code> except that the fill digits are random values from 10 to 15.</p>
2985
3197
  * @public
@@ -3094,10 +3306,6 @@ export declare const SymmetricEncryptionAttributesFilterSensitiveLog: (obj: Symm
3094
3306
  * @internal
3095
3307
  */
3096
3308
  export declare const EncryptionDecryptionAttributesFilterSensitiveLog: (obj: EncryptionDecryptionAttributes) => any;
3097
- /**
3098
- * @internal
3099
- */
3100
- export declare const EcdhDerivationAttributesFilterSensitiveLog: (obj: EcdhDerivationAttributes) => any;
3101
3309
  /**
3102
3310
  * @internal
3103
3311
  */
@@ -3218,6 +3426,14 @@ export declare const GeneratePinDataOutputFilterSensitiveLog: (obj: GeneratePinD
3218
3426
  * @internal
3219
3427
  */
3220
3428
  export declare const Ibm3624PinVerificationFilterSensitiveLog: (obj: Ibm3624PinVerification) => any;
3429
+ /**
3430
+ * @internal
3431
+ */
3432
+ export declare const IncomingDiffieHellmanTr31KeyBlockFilterSensitiveLog: (obj: IncomingDiffieHellmanTr31KeyBlock) => any;
3433
+ /**
3434
+ * @internal
3435
+ */
3436
+ export declare const IncomingKeyMaterialFilterSensitiveLog: (obj: IncomingKeyMaterial) => any;
3221
3437
  /**
3222
3438
  * @internal
3223
3439
  */
@@ -3230,6 +3446,18 @@ export declare const ReEncryptDataInputFilterSensitiveLog: (obj: ReEncryptDataIn
3230
3446
  * @internal
3231
3447
  */
3232
3448
  export declare const ReEncryptDataOutputFilterSensitiveLog: (obj: ReEncryptDataOutput) => any;
3449
+ /**
3450
+ * @internal
3451
+ */
3452
+ export declare const TranslateKeyMaterialInputFilterSensitiveLog: (obj: TranslateKeyMaterialInput) => any;
3453
+ /**
3454
+ * @internal
3455
+ */
3456
+ export declare const WrappedWorkingKeyFilterSensitiveLog: (obj: WrappedWorkingKey) => any;
3457
+ /**
3458
+ * @internal
3459
+ */
3460
+ export declare const TranslateKeyMaterialOutputFilterSensitiveLog: (obj: TranslateKeyMaterialOutput) => any;
3233
3461
  /**
3234
3462
  * @internal
3235
3463
  */
@@ -7,6 +7,7 @@ import { GenerateMacCommandInput, GenerateMacCommandOutput } from "../commands/G
7
7
  import { GenerateMacEmvPinChangeCommandInput, GenerateMacEmvPinChangeCommandOutput } from "../commands/GenerateMacEmvPinChangeCommand";
8
8
  import { GeneratePinDataCommandInput, GeneratePinDataCommandOutput } from "../commands/GeneratePinDataCommand";
9
9
  import { ReEncryptDataCommandInput, ReEncryptDataCommandOutput } from "../commands/ReEncryptDataCommand";
10
+ import { TranslateKeyMaterialCommandInput, TranslateKeyMaterialCommandOutput } from "../commands/TranslateKeyMaterialCommand";
10
11
  import { TranslatePinDataCommandInput, TranslatePinDataCommandOutput } from "../commands/TranslatePinDataCommand";
11
12
  import { VerifyAuthRequestCryptogramCommandInput, VerifyAuthRequestCryptogramCommandOutput } from "../commands/VerifyAuthRequestCryptogramCommand";
12
13
  import { VerifyCardValidationDataCommandInput, VerifyCardValidationDataCommandOutput } from "../commands/VerifyCardValidationDataCommand";
@@ -40,6 +41,10 @@ export declare const se_GeneratePinDataCommand: (input: GeneratePinDataCommandIn
40
41
  * serializeAws_restJson1ReEncryptDataCommand
41
42
  */
42
43
  export declare const se_ReEncryptDataCommand: (input: ReEncryptDataCommandInput, context: __SerdeContext) => Promise<__HttpRequest>;
44
+ /**
45
+ * serializeAws_restJson1TranslateKeyMaterialCommand
46
+ */
47
+ export declare const se_TranslateKeyMaterialCommand: (input: TranslateKeyMaterialCommandInput, context: __SerdeContext) => Promise<__HttpRequest>;
43
48
  /**
44
49
  * serializeAws_restJson1TranslatePinDataCommand
45
50
  */
@@ -88,6 +93,10 @@ export declare const de_GeneratePinDataCommand: (output: __HttpResponse, context
88
93
  * deserializeAws_restJson1ReEncryptDataCommand
89
94
  */
90
95
  export declare const de_ReEncryptDataCommand: (output: __HttpResponse, context: __SerdeContext) => Promise<ReEncryptDataCommandOutput>;
96
+ /**
97
+ * deserializeAws_restJson1TranslateKeyMaterialCommand
98
+ */
99
+ export declare const de_TranslateKeyMaterialCommand: (output: __HttpResponse, context: __SerdeContext) => Promise<TranslateKeyMaterialCommandOutput>;
91
100
  /**
92
101
  * deserializeAws_restJson1TranslatePinDataCommand
93
102
  */
@@ -27,6 +27,10 @@ import {
27
27
  ReEncryptDataCommandInput,
28
28
  ReEncryptDataCommandOutput,
29
29
  } from "./commands/ReEncryptDataCommand";
30
+ import {
31
+ TranslateKeyMaterialCommandInput,
32
+ TranslateKeyMaterialCommandOutput,
33
+ } from "./commands/TranslateKeyMaterialCommand";
30
34
  import {
31
35
  TranslatePinDataCommandInput,
32
36
  TranslatePinDataCommandOutput,
@@ -140,6 +144,19 @@ export interface PaymentCryptographyData {
140
144
  options: __HttpHandlerOptions,
141
145
  cb: (err: any, data?: ReEncryptDataCommandOutput) => void
142
146
  ): void;
147
+ translateKeyMaterial(
148
+ args: TranslateKeyMaterialCommandInput,
149
+ options?: __HttpHandlerOptions
150
+ ): Promise<TranslateKeyMaterialCommandOutput>;
151
+ translateKeyMaterial(
152
+ args: TranslateKeyMaterialCommandInput,
153
+ cb: (err: any, data?: TranslateKeyMaterialCommandOutput) => void
154
+ ): void;
155
+ translateKeyMaterial(
156
+ args: TranslateKeyMaterialCommandInput,
157
+ options: __HttpHandlerOptions,
158
+ cb: (err: any, data?: TranslateKeyMaterialCommandOutput) => void
159
+ ): void;
143
160
  translatePinData(
144
161
  args: TranslatePinDataCommandInput,
145
162
  options?: __HttpHandlerOptions
@@ -73,6 +73,10 @@ import {
73
73
  ReEncryptDataCommandInput,
74
74
  ReEncryptDataCommandOutput,
75
75
  } from "./commands/ReEncryptDataCommand";
76
+ import {
77
+ TranslateKeyMaterialCommandInput,
78
+ TranslateKeyMaterialCommandOutput,
79
+ } from "./commands/TranslateKeyMaterialCommand";
76
80
  import {
77
81
  TranslatePinDataCommandInput,
78
82
  TranslatePinDataCommandOutput,
@@ -108,6 +112,7 @@ export type ServiceInputTypes =
108
112
  | GenerateMacEmvPinChangeCommandInput
109
113
  | GeneratePinDataCommandInput
110
114
  | ReEncryptDataCommandInput
115
+ | TranslateKeyMaterialCommandInput
111
116
  | TranslatePinDataCommandInput
112
117
  | VerifyAuthRequestCryptogramCommandInput
113
118
  | VerifyCardValidationDataCommandInput
@@ -121,6 +126,7 @@ export type ServiceOutputTypes =
121
126
  | GenerateMacEmvPinChangeCommandOutput
122
127
  | GeneratePinDataCommandOutput
123
128
  | ReEncryptDataCommandOutput
129
+ | TranslateKeyMaterialCommandOutput
124
130
  | TranslatePinDataCommandOutput
125
131
  | VerifyAuthRequestCryptogramCommandOutput
126
132
  | VerifyCardValidationDataCommandOutput
@@ -0,0 +1,51 @@
1
+ import { Command as $Command } from "@smithy/smithy-client";
2
+ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
3
+ import {
4
+ TranslateKeyMaterialInput,
5
+ TranslateKeyMaterialOutput,
6
+ } from "../models/models_0";
7
+ import {
8
+ PaymentCryptographyDataClientResolvedConfig,
9
+ ServiceInputTypes,
10
+ ServiceOutputTypes,
11
+ } from "../PaymentCryptographyDataClient";
12
+ export { __MetadataBearer };
13
+ export { $Command };
14
+ export interface TranslateKeyMaterialCommandInput
15
+ extends TranslateKeyMaterialInput {}
16
+ export interface TranslateKeyMaterialCommandOutput
17
+ extends TranslateKeyMaterialOutput,
18
+ __MetadataBearer {}
19
+ declare const TranslateKeyMaterialCommand_base: {
20
+ new (
21
+ input: TranslateKeyMaterialCommandInput
22
+ ): import("@smithy/smithy-client").CommandImpl<
23
+ TranslateKeyMaterialCommandInput,
24
+ TranslateKeyMaterialCommandOutput,
25
+ PaymentCryptographyDataClientResolvedConfig,
26
+ ServiceInputTypes,
27
+ ServiceOutputTypes
28
+ >;
29
+ new (
30
+ input: TranslateKeyMaterialCommandInput
31
+ ): import("@smithy/smithy-client").CommandImpl<
32
+ TranslateKeyMaterialCommandInput,
33
+ TranslateKeyMaterialCommandOutput,
34
+ PaymentCryptographyDataClientResolvedConfig,
35
+ ServiceInputTypes,
36
+ ServiceOutputTypes
37
+ >;
38
+ getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions;
39
+ };
40
+ export declare class TranslateKeyMaterialCommand extends TranslateKeyMaterialCommand_base {
41
+ protected static __types: {
42
+ api: {
43
+ input: TranslateKeyMaterialInput;
44
+ output: TranslateKeyMaterialOutput;
45
+ };
46
+ sdk: {
47
+ input: TranslateKeyMaterialCommandInput;
48
+ output: TranslateKeyMaterialCommandOutput;
49
+ };
50
+ };
51
+ }
@@ -5,6 +5,7 @@ export * from "./GenerateMacCommand";
5
5
  export * from "./GenerateMacEmvPinChangeCommand";
6
6
  export * from "./GeneratePinDataCommand";
7
7
  export * from "./ReEncryptDataCommand";
8
+ export * from "./TranslateKeyMaterialCommand";
8
9
  export * from "./TranslatePinDataCommand";
9
10
  export * from "./VerifyAuthRequestCryptogramCommand";
10
11
  export * from "./VerifyCardValidationDataCommand";