@aws-sdk/client-payment-cryptography-data 3.525.0 → 3.529.1

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.
package/dist-cjs/index.js CHANGED
@@ -32,6 +32,9 @@ __export(src_exports, {
32
32
  DukptEncryptionAttributesFilterSensitiveLog: () => DukptEncryptionAttributesFilterSensitiveLog,
33
33
  DukptEncryptionMode: () => DukptEncryptionMode,
34
34
  DukptKeyVariant: () => DukptKeyVariant,
35
+ EmvEncryptionAttributesFilterSensitiveLog: () => EmvEncryptionAttributesFilterSensitiveLog,
36
+ EmvEncryptionMode: () => EmvEncryptionMode,
37
+ EmvMajorKeyDerivationMode: () => EmvMajorKeyDerivationMode,
35
38
  EncryptDataCommand: () => EncryptDataCommand,
36
39
  EncryptDataInputFilterSensitiveLog: () => EncryptDataInputFilterSensitiveLog,
37
40
  EncryptDataOutputFilterSensitiveLog: () => EncryptDataOutputFilterSensitiveLog,
@@ -357,6 +360,14 @@ var DukptEncryptionMode = {
357
360
  CBC: "CBC",
358
361
  ECB: "ECB"
359
362
  };
363
+ var EmvMajorKeyDerivationMode = {
364
+ EMV_OPTION_A: "EMV_OPTION_A",
365
+ EMV_OPTION_B: "EMV_OPTION_B"
366
+ };
367
+ var EmvEncryptionMode = {
368
+ CBC: "CBC",
369
+ ECB: "ECB"
370
+ };
360
371
  var EncryptionMode = {
361
372
  CBC: "CBC",
362
373
  CFB: "CFB",
@@ -376,6 +387,8 @@ var EncryptionDecryptionAttributes;
376
387
  return visitor.Asymmetric(value.Asymmetric);
377
388
  if (value.Dukpt !== void 0)
378
389
  return visitor.Dukpt(value.Dukpt);
390
+ if (value.Emv !== void 0)
391
+ return visitor.Emv(value.Emv);
379
392
  return visitor._(value.$unknown[0], value.$unknown[1]);
380
393
  }, "visit");
381
394
  })(EncryptionDecryptionAttributes || (EncryptionDecryptionAttributes = {}));
@@ -608,6 +621,11 @@ var DukptEncryptionAttributesFilterSensitiveLog = /* @__PURE__ */ __name((obj) =
608
621
  ...obj,
609
622
  ...obj.InitializationVector && { InitializationVector: import_smithy_client.SENSITIVE_STRING }
610
623
  }), "DukptEncryptionAttributesFilterSensitiveLog");
624
+ var EmvEncryptionAttributesFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({
625
+ ...obj,
626
+ ...obj.PrimaryAccountNumber && { PrimaryAccountNumber: import_smithy_client.SENSITIVE_STRING },
627
+ ...obj.InitializationVector && { InitializationVector: import_smithy_client.SENSITIVE_STRING }
628
+ }), "EmvEncryptionAttributesFilterSensitiveLog");
611
629
  var SymmetricEncryptionAttributesFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({
612
630
  ...obj,
613
631
  ...obj.InitializationVector && { InitializationVector: import_smithy_client.SENSITIVE_STRING }
@@ -619,6 +637,8 @@ var EncryptionDecryptionAttributesFilterSensitiveLog = /* @__PURE__ */ __name((o
619
637
  return { Asymmetric: obj.Asymmetric };
620
638
  if (obj.Dukpt !== void 0)
621
639
  return { Dukpt: DukptEncryptionAttributesFilterSensitiveLog(obj.Dukpt) };
640
+ if (obj.Emv !== void 0)
641
+ return { Emv: EmvEncryptionAttributesFilterSensitiveLog(obj.Emv) };
622
642
  if (obj.$unknown !== void 0)
623
643
  return { [obj.$unknown[0]]: "UNKNOWN" };
624
644
  }, "EncryptionDecryptionAttributesFilterSensitiveLog");
@@ -1006,7 +1026,7 @@ var de_DecryptDataCommand = /* @__PURE__ */ __name(async (output, context) => {
1006
1026
  const contents = (0, import_smithy_client.map)({
1007
1027
  $metadata: deserializeMetadata(output)
1008
1028
  });
1009
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1029
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1010
1030
  const doc = (0, import_smithy_client.take)(data, {
1011
1031
  KeyArn: import_smithy_client.expectString,
1012
1032
  KeyCheckValue: import_smithy_client.expectString,
@@ -1022,7 +1042,7 @@ var de_EncryptDataCommand = /* @__PURE__ */ __name(async (output, context) => {
1022
1042
  const contents = (0, import_smithy_client.map)({
1023
1043
  $metadata: deserializeMetadata(output)
1024
1044
  });
1025
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1045
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1026
1046
  const doc = (0, import_smithy_client.take)(data, {
1027
1047
  CipherText: import_smithy_client.expectString,
1028
1048
  KeyArn: import_smithy_client.expectString,
@@ -1038,7 +1058,7 @@ var de_GenerateCardValidationDataCommand = /* @__PURE__ */ __name(async (output,
1038
1058
  const contents = (0, import_smithy_client.map)({
1039
1059
  $metadata: deserializeMetadata(output)
1040
1060
  });
1041
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1061
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1042
1062
  const doc = (0, import_smithy_client.take)(data, {
1043
1063
  KeyArn: import_smithy_client.expectString,
1044
1064
  KeyCheckValue: import_smithy_client.expectString,
@@ -1054,7 +1074,7 @@ var de_GenerateMacCommand = /* @__PURE__ */ __name(async (output, context) => {
1054
1074
  const contents = (0, import_smithy_client.map)({
1055
1075
  $metadata: deserializeMetadata(output)
1056
1076
  });
1057
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1077
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1058
1078
  const doc = (0, import_smithy_client.take)(data, {
1059
1079
  KeyArn: import_smithy_client.expectString,
1060
1080
  KeyCheckValue: import_smithy_client.expectString,
@@ -1070,7 +1090,7 @@ var de_GeneratePinDataCommand = /* @__PURE__ */ __name(async (output, context) =
1070
1090
  const contents = (0, import_smithy_client.map)({
1071
1091
  $metadata: deserializeMetadata(output)
1072
1092
  });
1073
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1093
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1074
1094
  const doc = (0, import_smithy_client.take)(data, {
1075
1095
  EncryptedPinBlock: import_smithy_client.expectString,
1076
1096
  EncryptionKeyArn: import_smithy_client.expectString,
@@ -1089,7 +1109,7 @@ var de_ReEncryptDataCommand = /* @__PURE__ */ __name(async (output, context) =>
1089
1109
  const contents = (0, import_smithy_client.map)({
1090
1110
  $metadata: deserializeMetadata(output)
1091
1111
  });
1092
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1112
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1093
1113
  const doc = (0, import_smithy_client.take)(data, {
1094
1114
  CipherText: import_smithy_client.expectString,
1095
1115
  KeyArn: import_smithy_client.expectString,
@@ -1105,7 +1125,7 @@ var de_TranslatePinDataCommand = /* @__PURE__ */ __name(async (output, context)
1105
1125
  const contents = (0, import_smithy_client.map)({
1106
1126
  $metadata: deserializeMetadata(output)
1107
1127
  });
1108
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1128
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1109
1129
  const doc = (0, import_smithy_client.take)(data, {
1110
1130
  KeyArn: import_smithy_client.expectString,
1111
1131
  KeyCheckValue: import_smithy_client.expectString,
@@ -1121,7 +1141,7 @@ var de_VerifyAuthRequestCryptogramCommand = /* @__PURE__ */ __name(async (output
1121
1141
  const contents = (0, import_smithy_client.map)({
1122
1142
  $metadata: deserializeMetadata(output)
1123
1143
  });
1124
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1144
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1125
1145
  const doc = (0, import_smithy_client.take)(data, {
1126
1146
  AuthResponseValue: import_smithy_client.expectString,
1127
1147
  KeyArn: import_smithy_client.expectString,
@@ -1137,7 +1157,7 @@ var de_VerifyCardValidationDataCommand = /* @__PURE__ */ __name(async (output, c
1137
1157
  const contents = (0, import_smithy_client.map)({
1138
1158
  $metadata: deserializeMetadata(output)
1139
1159
  });
1140
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1160
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1141
1161
  const doc = (0, import_smithy_client.take)(data, {
1142
1162
  KeyArn: import_smithy_client.expectString,
1143
1163
  KeyCheckValue: import_smithy_client.expectString
@@ -1152,7 +1172,7 @@ var de_VerifyMacCommand = /* @__PURE__ */ __name(async (output, context) => {
1152
1172
  const contents = (0, import_smithy_client.map)({
1153
1173
  $metadata: deserializeMetadata(output)
1154
1174
  });
1155
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1175
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1156
1176
  const doc = (0, import_smithy_client.take)(data, {
1157
1177
  KeyArn: import_smithy_client.expectString,
1158
1178
  KeyCheckValue: import_smithy_client.expectString
@@ -1167,7 +1187,7 @@ var de_VerifyPinDataCommand = /* @__PURE__ */ __name(async (output, context) =>
1167
1187
  const contents = (0, import_smithy_client.map)({
1168
1188
  $metadata: deserializeMetadata(output)
1169
1189
  });
1170
- const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await parseBody(output.body, context)), "body");
1190
+ const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
1171
1191
  const doc = (0, import_smithy_client.take)(data, {
1172
1192
  EncryptionKeyArn: import_smithy_client.expectString,
1173
1193
  EncryptionKeyCheckValue: import_smithy_client.expectString,
@@ -1180,9 +1200,9 @@ var de_VerifyPinDataCommand = /* @__PURE__ */ __name(async (output, context) =>
1180
1200
  var de_CommandError = /* @__PURE__ */ __name(async (output, context) => {
1181
1201
  const parsedOutput = {
1182
1202
  ...output,
1183
- body: await parseErrorBody(output.body, context)
1203
+ body: await (0, import_core2.parseJsonErrorBody)(output.body, context)
1184
1204
  };
1185
- const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
1205
+ const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);
1186
1206
  switch (errorCode) {
1187
1207
  case "AccessDeniedException":
1188
1208
  case "com.amazonaws.paymentcryptographydata#AccessDeniedException":
@@ -1298,47 +1318,6 @@ var deserializeMetadata = /* @__PURE__ */ __name((output) => ({
1298
1318
  extendedRequestId: output.headers["x-amz-id-2"],
1299
1319
  cfId: output.headers["x-amz-cf-id"]
1300
1320
  }), "deserializeMetadata");
1301
- var collectBodyString = /* @__PURE__ */ __name((streamBody, context) => (0, import_smithy_client.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)), "collectBodyString");
1302
- var parseBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
1303
- if (encoded.length) {
1304
- return JSON.parse(encoded);
1305
- }
1306
- return {};
1307
- }), "parseBody");
1308
- var parseErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {
1309
- const value = await parseBody(errorBody, context);
1310
- value.message = value.message ?? value.Message;
1311
- return value;
1312
- }, "parseErrorBody");
1313
- var loadRestJsonErrorCode = /* @__PURE__ */ __name((output, data) => {
1314
- const findKey = /* @__PURE__ */ __name((object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()), "findKey");
1315
- const sanitizeErrorCode = /* @__PURE__ */ __name((rawValue) => {
1316
- let cleanValue = rawValue;
1317
- if (typeof cleanValue === "number") {
1318
- cleanValue = cleanValue.toString();
1319
- }
1320
- if (cleanValue.indexOf(",") >= 0) {
1321
- cleanValue = cleanValue.split(",")[0];
1322
- }
1323
- if (cleanValue.indexOf(":") >= 0) {
1324
- cleanValue = cleanValue.split(":")[0];
1325
- }
1326
- if (cleanValue.indexOf("#") >= 0) {
1327
- cleanValue = cleanValue.split("#")[1];
1328
- }
1329
- return cleanValue;
1330
- }, "sanitizeErrorCode");
1331
- const headerKey = findKey(output.headers, "x-amzn-errortype");
1332
- if (headerKey !== void 0) {
1333
- return sanitizeErrorCode(output.headers[headerKey]);
1334
- }
1335
- if (data.code !== void 0) {
1336
- return sanitizeErrorCode(data.code);
1337
- }
1338
- if (data["__type"] !== void 0) {
1339
- return sanitizeErrorCode(data["__type"]);
1340
- }
1341
- }, "loadRestJsonErrorCode");
1342
1321
 
1343
1322
  // src/commands/DecryptDataCommand.ts
1344
1323
  var _DecryptDataCommand = class _DecryptDataCommand extends import_smithy_client.Command.classBuilder().ep({
@@ -1572,6 +1551,8 @@ var import_util_endpoints = require("@aws-sdk/util-endpoints");
1572
1551
  DukptDerivationType,
1573
1552
  DukptKeyVariant,
1574
1553
  DukptEncryptionMode,
1554
+ EmvMajorKeyDerivationMode,
1555
+ EmvEncryptionMode,
1575
1556
  EncryptionMode,
1576
1557
  EncryptionDecryptionAttributes,
1577
1558
  InternalServerException,
@@ -1593,6 +1574,7 @@ var import_util_endpoints = require("@aws-sdk/util-endpoints");
1593
1574
  SessionKeyDerivation,
1594
1575
  PinVerificationAttributes,
1595
1576
  DukptEncryptionAttributesFilterSensitiveLog,
1577
+ EmvEncryptionAttributesFilterSensitiveLog,
1596
1578
  SymmetricEncryptionAttributesFilterSensitiveLog,
1597
1579
  EncryptionDecryptionAttributesFilterSensitiveLog,
1598
1580
  DecryptDataInputFilterSensitiveLog,
@@ -87,6 +87,14 @@ export const DukptEncryptionMode = {
87
87
  CBC: "CBC",
88
88
  ECB: "ECB",
89
89
  };
90
+ export const EmvMajorKeyDerivationMode = {
91
+ EMV_OPTION_A: "EMV_OPTION_A",
92
+ EMV_OPTION_B: "EMV_OPTION_B",
93
+ };
94
+ export const EmvEncryptionMode = {
95
+ CBC: "CBC",
96
+ ECB: "ECB",
97
+ };
90
98
  export const EncryptionMode = {
91
99
  CBC: "CBC",
92
100
  CFB: "CFB",
@@ -106,6 +114,8 @@ export var EncryptionDecryptionAttributes;
106
114
  return visitor.Asymmetric(value.Asymmetric);
107
115
  if (value.Dukpt !== undefined)
108
116
  return visitor.Dukpt(value.Dukpt);
117
+ if (value.Emv !== undefined)
118
+ return visitor.Emv(value.Emv);
109
119
  return visitor._(value.$unknown[0], value.$unknown[1]);
110
120
  };
111
121
  })(EncryptionDecryptionAttributes || (EncryptionDecryptionAttributes = {}));
@@ -313,6 +323,11 @@ export const DukptEncryptionAttributesFilterSensitiveLog = (obj) => ({
313
323
  ...obj,
314
324
  ...(obj.InitializationVector && { InitializationVector: SENSITIVE_STRING }),
315
325
  });
326
+ export const EmvEncryptionAttributesFilterSensitiveLog = (obj) => ({
327
+ ...obj,
328
+ ...(obj.PrimaryAccountNumber && { PrimaryAccountNumber: SENSITIVE_STRING }),
329
+ ...(obj.InitializationVector && { InitializationVector: SENSITIVE_STRING }),
330
+ });
316
331
  export const SymmetricEncryptionAttributesFilterSensitiveLog = (obj) => ({
317
332
  ...obj,
318
333
  ...(obj.InitializationVector && { InitializationVector: SENSITIVE_STRING }),
@@ -324,6 +339,8 @@ export const EncryptionDecryptionAttributesFilterSensitiveLog = (obj) => {
324
339
  return { Asymmetric: obj.Asymmetric };
325
340
  if (obj.Dukpt !== undefined)
326
341
  return { Dukpt: DukptEncryptionAttributesFilterSensitiveLog(obj.Dukpt) };
342
+ if (obj.Emv !== undefined)
343
+ return { Emv: EmvEncryptionAttributesFilterSensitiveLog(obj.Emv) };
327
344
  if (obj.$unknown !== undefined)
328
345
  return { [obj.$unknown[0]]: "UNKNOWN" };
329
346
  };
@@ -1,4 +1,4 @@
1
- import { awsExpectUnion as __expectUnion } from "@aws-sdk/core";
1
+ import { awsExpectUnion as __expectUnion, loadRestJsonErrorCode, parseJsonBody as parseBody, parseJsonErrorBody as parseErrorBody, } from "@aws-sdk/core";
2
2
  import { requestBuilder as rb } from "@smithy/core";
3
3
  import { _json, collectBody, decorateServiceException as __decorateServiceException, expectNonNull as __expectNonNull, expectObject as __expectObject, expectString as __expectString, map, take, withBaseException, } from "@smithy/smithy-client";
4
4
  import { AccessDeniedException, InternalServerException, ResourceNotFoundException, ThrottlingException, ValidationException, VerificationFailedException, } from "../models/models_0";
@@ -495,43 +495,3 @@ const isSerializableHeaderValue = (value) => value !== undefined &&
495
495
  value !== "" &&
496
496
  (!Object.getOwnPropertyNames(value).includes("length") || value.length != 0) &&
497
497
  (!Object.getOwnPropertyNames(value).includes("size") || value.size != 0);
498
- const parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
499
- if (encoded.length) {
500
- return JSON.parse(encoded);
501
- }
502
- return {};
503
- });
504
- const parseErrorBody = async (errorBody, context) => {
505
- const value = await parseBody(errorBody, context);
506
- value.message = value.message ?? value.Message;
507
- return value;
508
- };
509
- const loadRestJsonErrorCode = (output, data) => {
510
- const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());
511
- const sanitizeErrorCode = (rawValue) => {
512
- let cleanValue = rawValue;
513
- if (typeof cleanValue === "number") {
514
- cleanValue = cleanValue.toString();
515
- }
516
- if (cleanValue.indexOf(",") >= 0) {
517
- cleanValue = cleanValue.split(",")[0];
518
- }
519
- if (cleanValue.indexOf(":") >= 0) {
520
- cleanValue = cleanValue.split(":")[0];
521
- }
522
- if (cleanValue.indexOf("#") >= 0) {
523
- cleanValue = cleanValue.split("#")[1];
524
- }
525
- return cleanValue;
526
- };
527
- const headerKey = findKey(output.headers, "x-amzn-errortype");
528
- if (headerKey !== undefined) {
529
- return sanitizeErrorCode(output.headers[headerKey]);
530
- }
531
- if (data.code !== undefined) {
532
- return sanitizeErrorCode(data.code);
533
- }
534
- if (data["__type"] !== undefined) {
535
- return sanitizeErrorCode(data["__type"]);
536
- }
537
- };
@@ -26,9 +26,10 @@ declare const DecryptDataCommand_base: {
26
26
  };
27
27
  /**
28
28
  * @public
29
- * <p>Decrypts ciphertext data to plaintext using symmetric, asymmetric, or DUKPT data encryption key. For more information, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/decrypt-data.html">Decrypt data</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p>
29
+ * <p>Decrypts ciphertext data to plaintext using a symmetric (TDES, AES), asymmetric (RSA), or derived (DUKPT or EMV) encryption key scheme. For more information, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/decrypt-data.html">Decrypt data</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p>
30
30
  * <p>You can use an encryption key generated within Amazon Web Services Payment Cryptography, or you can import your own encryption key by calling <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html">ImportKey</a>. For this operation, the key must have <code>KeyModesOfUse</code> set to <code>Decrypt</code>. In asymmetric decryption, Amazon Web Services Payment Cryptography decrypts the ciphertext using the private component of the asymmetric encryption key pair. For data encryption outside of Amazon Web Services Payment Cryptography, you can export the public component of the asymmetric key pair by calling <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_GetPublicKeyCertificate.html">GetPublicCertificate</a>.</p>
31
- * <p>For symmetric and DUKPT decryption, Amazon Web Services Payment Cryptography supports <code>TDES</code> and <code>AES</code> algorithms. For asymmetric decryption, Amazon Web Services Payment Cryptography supports <code>RSA</code>. When you use DUKPT, for <code>TDES</code> algorithm, the ciphertext data length must be a multiple of 16 bytes. For <code>AES</code> algorithm, the ciphertext data length must be a multiple of 32 bytes.</p>
31
+ * <p>For symmetric and DUKPT decryption, Amazon Web Services Payment Cryptography supports <code>TDES</code> and <code>AES</code> algorithms. For EMV decryption, Amazon Web Services Payment Cryptography supports <code>TDES</code> algorithms. For asymmetric decryption, Amazon Web Services Payment Cryptography supports <code>RSA</code>. </p>
32
+ * <p>When you use TDES or TDES DUKPT, the ciphertext data length must be a multiple of 8 bytes. For AES or AES DUKPT, the ciphertext data length must be a multiple of 16 bytes. For RSA, it sould be equal to the key size unless padding is enabled.</p>
32
33
  * <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>
33
34
  * <p>
34
35
  * <b>Cross-account use</b>: This operation can't be used across different Amazon Web Services accounts.</p>
@@ -77,6 +78,14 @@ declare const DecryptDataCommand_base: {
77
78
  * DukptKeyVariant: "STRING_VALUE",
78
79
  * InitializationVector: "STRING_VALUE",
79
80
  * },
81
+ * Emv: { // EmvEncryptionAttributes
82
+ * MajorKeyDerivationMode: "STRING_VALUE", // required
83
+ * PrimaryAccountNumber: "STRING_VALUE", // required
84
+ * PanSequenceNumber: "STRING_VALUE", // required
85
+ * SessionDerivationData: "STRING_VALUE", // required
86
+ * Mode: "STRING_VALUE",
87
+ * InitializationVector: "STRING_VALUE",
88
+ * },
80
89
  * },
81
90
  * };
82
91
  * const command = new DecryptDataCommand(input);
@@ -26,9 +26,11 @@ declare const EncryptDataCommand_base: {
26
26
  };
27
27
  /**
28
28
  * @public
29
- * <p>Encrypts plaintext data to ciphertext using symmetric, asymmetric, or DUKPT data encryption key. For more information, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/encrypt-data.html">Encrypt data</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p>
30
- * <p>You can generate an encryption key within Amazon Web Services Payment Cryptography by calling <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html">CreateKey</a>. You can import your own encryption key by calling <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html">ImportKey</a>. For this operation, the key must have <code>KeyModesOfUse</code> set to <code>Encrypt</code>. In asymmetric encryption, plaintext is encrypted using public component. You can import the public component of an asymmetric key pair created outside Amazon Web Services Payment Cryptography by calling <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html">ImportKey</a>). </p>
31
- * <p>for symmetric and DUKPT encryption, Amazon Web Services Payment Cryptography supports <code>TDES</code> and <code>AES</code> algorithms. For asymmetric encryption, Amazon Web Services Payment Cryptography supports <code>RSA</code>. To encrypt using DUKPT, you must already have a DUKPT key in your account with <code>KeyModesOfUse</code> set to <code>DeriveKey</code>, or you can generate a new DUKPT key by calling <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html">CreateKey</a>.</p>
29
+ * <p>Encrypts plaintext data to ciphertext using a symmetric (TDES, AES), asymmetric (RSA), or derived (DUKPT or EMV) encryption key scheme. For more information, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/encrypt-data.html">Encrypt data</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p>
30
+ * <p>You can generate an encryption key within Amazon Web Services Payment Cryptography by calling <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html">CreateKey</a>. You can import your own encryption key by calling <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html">ImportKey</a>. For this operation, the key must have <code>KeyModesOfUse</code> set to <code>Encrypt</code>. In asymmetric encryption, plaintext is encrypted using public component. You can import the public component of an asymmetric key pair created outside Amazon Web Services Payment Cryptography by calling <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html">ImportKey</a>. </p>
31
+ * <p>For symmetric and DUKPT encryption, Amazon Web Services Payment Cryptography supports <code>TDES</code> and <code>AES</code> algorithms. For EMV encryption, Amazon Web Services Payment Cryptography supports <code>TDES</code> algorithms.For asymmetric encryption, Amazon Web Services Payment Cryptography supports <code>RSA</code>. </p>
32
+ * <p>When you use TDES or TDES DUKPT, the plaintext data length must be a multiple of 8 bytes. For AES or AES DUKPT, the plaintext data length must be a multiple of 16 bytes. For RSA, it sould be equal to the key size unless padding is enabled.</p>
33
+ * <p>To encrypt using DUKPT, you must already have a BDK (Base Derivation Key) key in your account with <code>KeyModesOfUse</code> set to <code>DeriveKey</code>, or you can generate a new DUKPT key by calling <a href="https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html">CreateKey</a>. To encrypt using EMV, you must already have an IMK (Issuer Master Key) key in your account with <code>KeyModesOfUse</code> set to <code>DeriveKey</code>.</p>
32
34
  * <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>
33
35
  * <p>
34
36
  * <b>Cross-account use</b>: This operation can't be used across different Amazon Web Services accounts.</p>
@@ -82,6 +84,14 @@ declare const EncryptDataCommand_base: {
82
84
  * DukptKeyVariant: "STRING_VALUE",
83
85
  * InitializationVector: "STRING_VALUE",
84
86
  * },
87
+ * Emv: { // EmvEncryptionAttributes
88
+ * MajorKeyDerivationMode: "STRING_VALUE", // required
89
+ * PrimaryAccountNumber: "STRING_VALUE", // required
90
+ * PanSequenceNumber: "STRING_VALUE", // required
91
+ * SessionDerivationData: "STRING_VALUE", // required
92
+ * Mode: "STRING_VALUE",
93
+ * InitializationVector: "STRING_VALUE",
94
+ * },
85
95
  * },
86
96
  * };
87
97
  * const command = new EncryptDataCommand(input);
@@ -27,7 +27,8 @@ declare const GenerateMacCommand_base: {
27
27
  /**
28
28
  * @public
29
29
  * <p>Generates a Message Authentication Code (MAC) cryptogram within Amazon Web Services Payment Cryptography. </p>
30
- * <p>You can use this operation when keys won't be shared but mutual data is present on both ends for validation. In this case, known data values are used to generate a MAC on both ends for comparision without sending or receiving data in ciphertext or plaintext. You can use this operation to generate a DUPKT, HMAC or EMV MAC by setting generation attributes and algorithm to the associated values. The MAC generation encryption key must have valid values for <code>KeyUsage</code> such as <code>TR31_M7_HMAC_KEY</code> for HMAC generation, and they key must have <code>KeyModesOfUse</code> set to <code>Generate</code> and <code>Verify</code>.</p>
30
+ * <p>You can use this operation to authenticate card-related data by using known data values to generate MAC for data validation between the sending and receiving parties. This operation uses message data, a secret encryption key and MAC algorithm to generate a unique MAC value for transmission. The receiving party of the MAC must use the same message data, secret encryption key and MAC algorithm to reproduce another MAC value for comparision.</p>
31
+ * <p>You can use this operation to generate a DUPKT, CMAC, HMAC or EMV MAC by setting generation attributes and algorithm to the associated values. The MAC generation encryption key must have valid values for <code>KeyUsage</code> such as <code>TR31_M7_HMAC_KEY</code> for HMAC generation, and they key must have <code>KeyModesOfUse</code> set to <code>Generate</code> and <code>Verify</code>.</p>
31
32
  * <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>
32
33
  * <p>
33
34
  * <b>Cross-account use</b>: This operation can't be used across different Amazon Web Services accounts.</p>
@@ -27,11 +27,11 @@ declare const TranslatePinDataCommand_base: {
27
27
  /**
28
28
  * @public
29
29
  * <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>
30
- * <p>PIN block translation involves changing the encrytion of PIN block from one encryption key to another encryption key and changing PIN block format from one to another without PIN block data leaving Amazon Web Services Payment Cryptography. 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. Amazon Web Services Payment Cryptography supports <code>TDES</code> and <code>AES</code> key derivation type for DUKPT tranlations. You can use this operation for P2PE (Point to Point Encryption) use cases where the encryption keys should change but the processing system either does not need to, or is not permitted to, decrypt the data.</p>
30
+ * <p>PIN block translation involves changing the encrytion of PIN block from one encryption key to another encryption key and changing PIN block format from one to another without PIN block data leaving Amazon Web Services Payment Cryptography. 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. Amazon Web Services Payment Cryptography supports <code>TDES</code> and <code>AES</code> key derivation type for DUKPT translations. </p>
31
31
  * <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>
32
32
  * <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>
33
33
  * <note>
34
- * <p>At this time, Amazon Web Services Payment Cryptography does not support translations to PIN format 4.</p>
34
+ * <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>
35
35
  * </note>
36
36
  * <p>
37
37
  * <b>Cross-account use</b>: This operation can't be used across different Amazon Web Services accounts.</p>
@@ -27,7 +27,7 @@ declare const VerifyMacCommand_base: {
27
27
  /**
28
28
  * @public
29
29
  * <p>Verifies a Message Authentication Code (MAC). </p>
30
- * <p>You can use this operation when keys won't be shared but mutual data is present on both ends for validation. In this case, known data values are used to generate a MAC on both ends for verification without sending or receiving data in ciphertext or plaintext. You can use this operation to verify a DUPKT, HMAC or EMV MAC by setting generation attributes and algorithm to the associated values. Use the same encryption key for MAC verification as you use for <a>GenerateMac</a>. </p>
30
+ * <p>You can use this operation to verify MAC for message data authentication such as . In this operation, you must use the same message data, secret encryption key and MAC algorithm that was used to generate MAC. You can use this operation to verify a DUPKT, CMAC, HMAC or EMV MAC by setting generation attributes and algorithm to the associated values. </p>
31
31
  * <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>
32
32
  * <p>
33
33
  * <b>Cross-account use</b>: This operation can't be used across different Amazon Web Services accounts.</p>
@@ -595,7 +595,7 @@ export interface DukptEncryptionAttributes {
595
595
  KeySerialNumber: string | undefined;
596
596
  /**
597
597
  * @public
598
- * <p>The block cipher mode of operation. Block ciphers are designed to encrypt a block of data of fixed size, for example, 128 bits. The size of the input block is usually same as the size of the encrypted output block, while the key length can be different. A mode of operation describes how to repeatedly apply a cipher's single-block operation to securely transform amounts of data larger than a block.</p>
598
+ * <p>The block cipher method to use for encryption.</p>
599
599
  * <p>The default is CBC.</p>
600
600
  */
601
601
  Mode?: DukptEncryptionMode;
@@ -612,7 +612,67 @@ export interface DukptEncryptionAttributes {
612
612
  DukptKeyVariant?: DukptKeyVariant;
613
613
  /**
614
614
  * @public
615
- * <p>An input to cryptographic primitive used to provide the intial state. Typically the <code>InitializationVector</code> must have a random or psuedo-random value, but sometimes it only needs to be unpredictable or unique. If you don't provide a value, Amazon Web Services Payment Cryptography generates a random value.</p>
615
+ * <p>An input used to provide the intial state. If no value is provided, Amazon Web Services Payment Cryptography defaults it to zero.</p>
616
+ */
617
+ InitializationVector?: string;
618
+ }
619
+ /**
620
+ * @public
621
+ * @enum
622
+ */
623
+ export declare const EmvMajorKeyDerivationMode: {
624
+ readonly EMV_OPTION_A: "EMV_OPTION_A";
625
+ readonly EMV_OPTION_B: "EMV_OPTION_B";
626
+ };
627
+ /**
628
+ * @public
629
+ */
630
+ export type EmvMajorKeyDerivationMode = (typeof EmvMajorKeyDerivationMode)[keyof typeof EmvMajorKeyDerivationMode];
631
+ /**
632
+ * @public
633
+ * @enum
634
+ */
635
+ export declare const EmvEncryptionMode: {
636
+ readonly CBC: "CBC";
637
+ readonly ECB: "ECB";
638
+ };
639
+ /**
640
+ * @public
641
+ */
642
+ export type EmvEncryptionMode = (typeof EmvEncryptionMode)[keyof typeof EmvEncryptionMode];
643
+ /**
644
+ * @public
645
+ * <p>Parameters for plaintext encryption using EMV keys.</p>
646
+ */
647
+ export interface EmvEncryptionAttributes {
648
+ /**
649
+ * @public
650
+ * <p>The EMV derivation mode to use for ICC master key derivation as per EMV version 4.3 book 2.</p>
651
+ */
652
+ MajorKeyDerivationMode: EmvMajorKeyDerivationMode | undefined;
653
+ /**
654
+ * @public
655
+ * <p>The Primary Account Number (PAN), a unique identifier for a payment credit or debit card and associates the card to a specific account holder.</p>
656
+ */
657
+ PrimaryAccountNumber: string | undefined;
658
+ /**
659
+ * @public
660
+ * <p>A number that identifies and differentiates payment cards with the same Primary Account Number (PAN).</p>
661
+ */
662
+ PanSequenceNumber: string | undefined;
663
+ /**
664
+ * @public
665
+ * <p>The derivation value used to derive the ICC session key. It is typically the application transaction counter value padded with zeros or previous ARQC value padded with zeros as per EMV version 4.3 book 2.</p>
666
+ */
667
+ SessionDerivationData: string | undefined;
668
+ /**
669
+ * @public
670
+ * <p>The block cipher method to use for encryption.</p>
671
+ */
672
+ Mode?: EmvEncryptionMode;
673
+ /**
674
+ * @public
675
+ * <p>An input used to provide the intial state. If no value is provided, Amazon Web Services Payment Cryptography defaults it to zero.</p>
616
676
  */
617
677
  InitializationVector?: string;
618
678
  }
@@ -641,12 +701,12 @@ export type EncryptionMode = (typeof EncryptionMode)[keyof typeof EncryptionMode
641
701
  export interface SymmetricEncryptionAttributes {
642
702
  /**
643
703
  * @public
644
- * <p>The block cipher mode of operation. Block ciphers are designed to encrypt a block of data of fixed size (for example, 128 bits). The size of the input block is usually same as the size of the encrypted output block, while the key length can be different. A mode of operation describes how to repeatedly apply a cipher's single-block operation to securely transform amounts of data larger than a block.</p>
704
+ * <p>The block cipher method to use for encryption.</p>
645
705
  */
646
706
  Mode: EncryptionMode | undefined;
647
707
  /**
648
708
  * @public
649
- * <p>An input to cryptographic primitive used to provide the intial state. The <code>InitializationVector</code> is typically required have a random or psuedo-random value, but sometimes it only needs to be unpredictable or unique. If a value is not provided, Amazon Web Services Payment Cryptography generates a random value.</p>
709
+ * <p>An input used to provide the intial state. If no value is provided, Amazon Web Services Payment Cryptography defaults it to zero.</p>
650
710
  */
651
711
  InitializationVector?: string;
652
712
  /**
@@ -659,7 +719,7 @@ export interface SymmetricEncryptionAttributes {
659
719
  * @public
660
720
  * <p>Parameters that are required to perform encryption and decryption operations.</p>
661
721
  */
662
- export type EncryptionDecryptionAttributes = EncryptionDecryptionAttributes.AsymmetricMember | EncryptionDecryptionAttributes.DukptMember | EncryptionDecryptionAttributes.SymmetricMember | EncryptionDecryptionAttributes.$UnknownMember;
722
+ export type EncryptionDecryptionAttributes = EncryptionDecryptionAttributes.AsymmetricMember | EncryptionDecryptionAttributes.DukptMember | EncryptionDecryptionAttributes.EmvMember | EncryptionDecryptionAttributes.SymmetricMember | EncryptionDecryptionAttributes.$UnknownMember;
663
723
  /**
664
724
  * @public
665
725
  */
@@ -672,6 +732,7 @@ export declare namespace EncryptionDecryptionAttributes {
672
732
  Symmetric: SymmetricEncryptionAttributes;
673
733
  Asymmetric?: never;
674
734
  Dukpt?: never;
735
+ Emv?: never;
675
736
  $unknown?: never;
676
737
  }
677
738
  /**
@@ -682,6 +743,7 @@ export declare namespace EncryptionDecryptionAttributes {
682
743
  Symmetric?: never;
683
744
  Asymmetric: AsymmetricEncryptionAttributes;
684
745
  Dukpt?: never;
746
+ Emv?: never;
685
747
  $unknown?: never;
686
748
  }
687
749
  /**
@@ -692,6 +754,18 @@ export declare namespace EncryptionDecryptionAttributes {
692
754
  Symmetric?: never;
693
755
  Asymmetric?: never;
694
756
  Dukpt: DukptEncryptionAttributes;
757
+ Emv?: never;
758
+ $unknown?: never;
759
+ }
760
+ /**
761
+ * @public
762
+ * <p>Parameters for plaintext encryption using EMV keys.</p>
763
+ */
764
+ interface EmvMember {
765
+ Symmetric?: never;
766
+ Asymmetric?: never;
767
+ Dukpt?: never;
768
+ Emv: EmvEncryptionAttributes;
695
769
  $unknown?: never;
696
770
  }
697
771
  /**
@@ -701,12 +775,14 @@ export declare namespace EncryptionDecryptionAttributes {
701
775
  Symmetric?: never;
702
776
  Asymmetric?: never;
703
777
  Dukpt?: never;
778
+ Emv?: never;
704
779
  $unknown: [string, any];
705
780
  }
706
781
  interface Visitor<T> {
707
782
  Symmetric: (value: SymmetricEncryptionAttributes) => T;
708
783
  Asymmetric: (value: AsymmetricEncryptionAttributes) => T;
709
784
  Dukpt: (value: DukptEncryptionAttributes) => T;
785
+ Emv: (value: EmvEncryptionAttributes) => T;
710
786
  _: (name: string, value: any) => T;
711
787
  }
712
788
  const visit: <T>(value: EncryptionDecryptionAttributes, visitor: Visitor<T>) => T;
@@ -742,12 +818,13 @@ export interface DecryptDataOutput {
742
818
  KeyArn: string | undefined;
743
819
  /**
744
820
  * @public
745
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
821
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
822
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
746
823
  */
747
824
  KeyCheckValue: string | undefined;
748
825
  /**
749
826
  * @public
750
- * <p>The decrypted plaintext data.</p>
827
+ * <p>The decrypted plaintext data in hexBinary format.</p>
751
828
  */
752
829
  PlainText: string | undefined;
753
830
  }
@@ -877,6 +954,9 @@ export interface EncryptDataInput {
877
954
  /**
878
955
  * @public
879
956
  * <p>The plaintext to be encrypted.</p>
957
+ * <note>
958
+ * <p>For encryption using asymmetric keys, plaintext data length is constrained by encryption key strength that you define in <code>KeyAlgorithm</code> and padding type that you define in <code>AsymmetricEncryptionAttributes</code>. For more information, see <a href="https://docs.aws.amazon.com/payment-cryptography/latest/userguide/encrypt-data.html">Encrypt data</a> in the <i>Amazon Web Services Payment Cryptography User Guide</i>.</p>
959
+ * </note>
880
960
  */
881
961
  PlainText: string | undefined;
882
962
  /**
@@ -896,7 +976,8 @@ export interface EncryptDataOutput {
896
976
  KeyArn: string | undefined;
897
977
  /**
898
978
  * @public
899
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
979
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
980
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
900
981
  */
901
982
  KeyCheckValue?: string;
902
983
  /**
@@ -941,7 +1022,8 @@ export interface GenerateCardValidationDataOutput {
941
1022
  KeyArn: string | undefined;
942
1023
  /**
943
1024
  * @public
944
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
1025
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
1026
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
945
1027
  */
946
1028
  KeyCheckValue: string | undefined;
947
1029
  /**
@@ -1135,7 +1217,7 @@ export declare namespace MacAttributes {
1135
1217
  }
1136
1218
  /**
1137
1219
  * @public
1138
- * <p>Parameters that are required for MAC generation or verification using DUKPT ISO 9797 algorithm2.</p>
1220
+ * <p>Parameters that are required for MAC generation or verification using DUKPT ISO 9797 algorithm3.</p>
1139
1221
  */
1140
1222
  interface DukptIso9797Algorithm3Member {
1141
1223
  Algorithm?: never;
@@ -1189,7 +1271,7 @@ export interface GenerateMacInput {
1189
1271
  KeyIdentifier: string | undefined;
1190
1272
  /**
1191
1273
  * @public
1192
- * <p>The data for which a MAC is under generation.</p>
1274
+ * <p>The data for which a MAC is under generation. This value must be hexBinary.</p>
1193
1275
  */
1194
1276
  MessageData: string | undefined;
1195
1277
  /**
@@ -1214,7 +1296,8 @@ export interface GenerateMacOutput {
1214
1296
  KeyArn: string | undefined;
1215
1297
  /**
1216
1298
  * @public
1217
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
1299
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
1300
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
1218
1301
  */
1219
1302
  KeyCheckValue: string | undefined;
1220
1303
  /**
@@ -1556,7 +1639,8 @@ export interface GeneratePinDataOutput {
1556
1639
  GenerationKeyArn: string | undefined;
1557
1640
  /**
1558
1641
  * @public
1559
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
1642
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
1643
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
1560
1644
  */
1561
1645
  GenerationKeyCheckValue: string | undefined;
1562
1646
  /**
@@ -1566,7 +1650,8 @@ export interface GeneratePinDataOutput {
1566
1650
  EncryptionKeyArn: string | undefined;
1567
1651
  /**
1568
1652
  * @public
1569
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
1653
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
1654
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
1570
1655
  */
1571
1656
  EncryptionKeyCheckValue: string | undefined;
1572
1657
  /**
@@ -1689,7 +1774,8 @@ export interface ReEncryptDataOutput {
1689
1774
  KeyArn: string | undefined;
1690
1775
  /**
1691
1776
  * @public
1692
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
1777
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
1778
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
1693
1779
  */
1694
1780
  KeyCheckValue: string | undefined;
1695
1781
  /**
@@ -1803,12 +1889,12 @@ export interface TranslatePinDataInput {
1803
1889
  OutgoingKeyIdentifier: string | undefined;
1804
1890
  /**
1805
1891
  * @public
1806
- * <p>The format of the incoming PIN block data for tranlation within Amazon Web Services Payment Cryptography.</p>
1892
+ * <p>The format of the incoming PIN block data for translation within Amazon Web Services Payment Cryptography.</p>
1807
1893
  */
1808
1894
  IncomingTranslationAttributes: TranslationIsoFormats | undefined;
1809
1895
  /**
1810
1896
  * @public
1811
- * <p>The format of the outgoing PIN block data after tranlation by Amazon Web Services Payment Cryptography.</p>
1897
+ * <p>The format of the outgoing PIN block data after translation by Amazon Web Services Payment Cryptography.</p>
1812
1898
  */
1813
1899
  OutgoingTranslationAttributes: TranslationIsoFormats | undefined;
1814
1900
  /**
@@ -1818,7 +1904,7 @@ export interface TranslatePinDataInput {
1818
1904
  EncryptedPinBlock: string | undefined;
1819
1905
  /**
1820
1906
  * @public
1821
- * <p>The attributes and values to use for incoming DUKPT encryption key for PIN block tranlation.</p>
1907
+ * <p>The attributes and values to use for incoming DUKPT encryption key for PIN block translation.</p>
1822
1908
  */
1823
1909
  IncomingDukptAttributes?: DukptDerivationAttributes;
1824
1910
  /**
@@ -1833,7 +1919,7 @@ export interface TranslatePinDataInput {
1833
1919
  export interface TranslatePinDataOutput {
1834
1920
  /**
1835
1921
  * @public
1836
- * <p>The ougoing encrypted PIN block data after tranlation.</p>
1922
+ * <p>The outgoing encrypted PIN block data after translation.</p>
1837
1923
  */
1838
1924
  PinBlock: string | undefined;
1839
1925
  /**
@@ -1843,7 +1929,8 @@ export interface TranslatePinDataOutput {
1843
1929
  KeyArn: string | undefined;
1844
1930
  /**
1845
1931
  * @public
1846
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
1932
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
1933
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
1847
1934
  */
1848
1935
  KeyCheckValue: string | undefined;
1849
1936
  }
@@ -2115,7 +2202,8 @@ export interface VerifyAuthRequestCryptogramOutput {
2115
2202
  KeyArn: string | undefined;
2116
2203
  /**
2117
2204
  * @public
2118
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
2205
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
2206
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
2119
2207
  */
2120
2208
  KeyCheckValue: string | undefined;
2121
2209
  /**
@@ -2160,7 +2248,8 @@ export interface VerifyCardValidationDataOutput {
2160
2248
  KeyArn: string | undefined;
2161
2249
  /**
2162
2250
  * @public
2163
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
2251
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
2252
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
2164
2253
  */
2165
2254
  KeyCheckValue: string | undefined;
2166
2255
  }
@@ -2175,7 +2264,7 @@ export interface VerifyMacInput {
2175
2264
  KeyIdentifier: string | undefined;
2176
2265
  /**
2177
2266
  * @public
2178
- * <p>The data on for which MAC is under verification.</p>
2267
+ * <p>The data on for which MAC is under verification. This value must be hexBinary.</p>
2179
2268
  */
2180
2269
  MessageData: string | undefined;
2181
2270
  /**
@@ -2205,7 +2294,8 @@ export interface VerifyMacOutput {
2205
2294
  KeyArn: string | undefined;
2206
2295
  /**
2207
2296
  * @public
2208
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
2297
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
2298
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
2209
2299
  */
2210
2300
  KeyCheckValue: string | undefined;
2211
2301
  }
@@ -2325,7 +2415,8 @@ export interface VerifyPinDataOutput {
2325
2415
  VerificationKeyArn: string | undefined;
2326
2416
  /**
2327
2417
  * @public
2328
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
2418
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
2419
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
2329
2420
  */
2330
2421
  VerificationKeyCheckValue: string | undefined;
2331
2422
  /**
@@ -2335,7 +2426,8 @@ export interface VerifyPinDataOutput {
2335
2426
  EncryptionKeyArn: string | undefined;
2336
2427
  /**
2337
2428
  * @public
2338
- * <p>The key check value (KCV) of the encryption key. 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. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram.</p>
2429
+ * <p>The key check value (KCV) of the encryption key. 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.</p>
2430
+ * <p>Amazon Web Services Payment Cryptography computes the KCV according to the CMAC specification.</p>
2339
2431
  */
2340
2432
  EncryptionKeyCheckValue: string | undefined;
2341
2433
  }
@@ -2343,6 +2435,10 @@ export interface VerifyPinDataOutput {
2343
2435
  * @internal
2344
2436
  */
2345
2437
  export declare const DukptEncryptionAttributesFilterSensitiveLog: (obj: DukptEncryptionAttributes) => any;
2438
+ /**
2439
+ * @internal
2440
+ */
2441
+ export declare const EmvEncryptionAttributesFilterSensitiveLog: (obj: EmvEncryptionAttributes) => any;
2346
2442
  /**
2347
2443
  * @internal
2348
2444
  */
@@ -344,6 +344,26 @@ export interface DukptEncryptionAttributes {
344
344
  DukptKeyVariant?: DukptKeyVariant;
345
345
  InitializationVector?: string;
346
346
  }
347
+ export declare const EmvMajorKeyDerivationMode: {
348
+ readonly EMV_OPTION_A: "EMV_OPTION_A";
349
+ readonly EMV_OPTION_B: "EMV_OPTION_B";
350
+ };
351
+ export type EmvMajorKeyDerivationMode =
352
+ (typeof EmvMajorKeyDerivationMode)[keyof typeof EmvMajorKeyDerivationMode];
353
+ export declare const EmvEncryptionMode: {
354
+ readonly CBC: "CBC";
355
+ readonly ECB: "ECB";
356
+ };
357
+ export type EmvEncryptionMode =
358
+ (typeof EmvEncryptionMode)[keyof typeof EmvEncryptionMode];
359
+ export interface EmvEncryptionAttributes {
360
+ MajorKeyDerivationMode: EmvMajorKeyDerivationMode | undefined;
361
+ PrimaryAccountNumber: string | undefined;
362
+ PanSequenceNumber: string | undefined;
363
+ SessionDerivationData: string | undefined;
364
+ Mode?: EmvEncryptionMode;
365
+ InitializationVector?: string;
366
+ }
347
367
  export declare const EncryptionMode: {
348
368
  readonly CBC: "CBC";
349
369
  readonly CFB: "CFB";
@@ -364,6 +384,7 @@ export interface SymmetricEncryptionAttributes {
364
384
  export type EncryptionDecryptionAttributes =
365
385
  | EncryptionDecryptionAttributes.AsymmetricMember
366
386
  | EncryptionDecryptionAttributes.DukptMember
387
+ | EncryptionDecryptionAttributes.EmvMember
367
388
  | EncryptionDecryptionAttributes.SymmetricMember
368
389
  | EncryptionDecryptionAttributes.$UnknownMember;
369
390
  export declare namespace EncryptionDecryptionAttributes {
@@ -371,30 +392,42 @@ export declare namespace EncryptionDecryptionAttributes {
371
392
  Symmetric: SymmetricEncryptionAttributes;
372
393
  Asymmetric?: never;
373
394
  Dukpt?: never;
395
+ Emv?: never;
374
396
  $unknown?: never;
375
397
  }
376
398
  interface AsymmetricMember {
377
399
  Symmetric?: never;
378
400
  Asymmetric: AsymmetricEncryptionAttributes;
379
401
  Dukpt?: never;
402
+ Emv?: never;
380
403
  $unknown?: never;
381
404
  }
382
405
  interface DukptMember {
383
406
  Symmetric?: never;
384
407
  Asymmetric?: never;
385
408
  Dukpt: DukptEncryptionAttributes;
409
+ Emv?: never;
410
+ $unknown?: never;
411
+ }
412
+ interface EmvMember {
413
+ Symmetric?: never;
414
+ Asymmetric?: never;
415
+ Dukpt?: never;
416
+ Emv: EmvEncryptionAttributes;
386
417
  $unknown?: never;
387
418
  }
388
419
  interface $UnknownMember {
389
420
  Symmetric?: never;
390
421
  Asymmetric?: never;
391
422
  Dukpt?: never;
423
+ Emv?: never;
392
424
  $unknown: [string, any];
393
425
  }
394
426
  interface Visitor<T> {
395
427
  Symmetric: (value: SymmetricEncryptionAttributes) => T;
396
428
  Asymmetric: (value: AsymmetricEncryptionAttributes) => T;
397
429
  Dukpt: (value: DukptEncryptionAttributes) => T;
430
+ Emv: (value: EmvEncryptionAttributes) => T;
398
431
  _: (name: string, value: any) => T;
399
432
  }
400
433
  const visit: <T>(
@@ -1085,6 +1118,9 @@ export interface VerifyPinDataOutput {
1085
1118
  export declare const DukptEncryptionAttributesFilterSensitiveLog: (
1086
1119
  obj: DukptEncryptionAttributes
1087
1120
  ) => any;
1121
+ export declare const EmvEncryptionAttributesFilterSensitiveLog: (
1122
+ obj: EmvEncryptionAttributes
1123
+ ) => any;
1088
1124
  export declare const SymmetricEncryptionAttributesFilterSensitiveLog: (
1089
1125
  obj: SymmetricEncryptionAttributes
1090
1126
  ) => any;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-payment-cryptography-data",
3
3
  "description": "AWS SDK for JavaScript Payment Cryptography Data Client for Node.js, Browser and React Native",
4
- "version": "3.525.0",
4
+ "version": "3.529.1",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-payment-cryptography-data",
@@ -20,9 +20,9 @@
20
20
  "dependencies": {
21
21
  "@aws-crypto/sha256-browser": "3.0.0",
22
22
  "@aws-crypto/sha256-js": "3.0.0",
23
- "@aws-sdk/client-sts": "3.525.0",
24
- "@aws-sdk/core": "3.525.0",
25
- "@aws-sdk/credential-provider-node": "3.525.0",
23
+ "@aws-sdk/client-sts": "3.529.1",
24
+ "@aws-sdk/core": "3.529.1",
25
+ "@aws-sdk/credential-provider-node": "3.529.1",
26
26
  "@aws-sdk/middleware-host-header": "3.523.0",
27
27
  "@aws-sdk/middleware-logger": "3.523.0",
28
28
  "@aws-sdk/middleware-recursion-detection": "3.523.0",