

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 发行人和发行人处理商
<a name="use-cases-issuers"></a>

 发行人的用例通常由几个部分组成。本节按功能（例如使用引脚）进行组织。在生产系统中，密钥通常限于给定的卡箱，并且是在存储箱设置期间创建的，而不是如图所示的内联创建的。

**Topics**
+ [常规函数](use-cases-issuers.generalfunctions.md)
+ [特定于网络的功能](use-cases-issuers.networkfunctions.md)

# 常规函数
<a name="use-cases-issuers.generalfunctions"></a>

**Topics**
+ [生成一个随机引脚和关联的 PVV，然后验证该值](use-cases-issuers.generalfunctions.pvv.md)
+ [生成或验证给定卡片的 CVV](use-cases-issuers.generalfunctions.cvv.md)
+ [CVV2 为特定卡片生成或验证](use-cases-issuers.generalfunctions.cvv2.md)
+ [为特定卡生成或验证 iCvV](use-cases-issuers.generalfunctions.icvv.md)
+ [验证 EMV ARQC 并生成 ARPC](use-cases-issuers.generalfunctions.arqc.md)
+ [生成并验证 EMV MAC](use-cases-issuers.generalfunctions.emvmac.md)
+ [生成 EMV MAC 以更改 PIN](use-cases-issuers.generalfunctions.emvpinchange.md)

# 生成一个随机引脚和关联的 PVV，然后验证该值
<a name="use-cases-issuers.generalfunctions.pvv"></a>

**Topics**
+ [创建密钥](#use-cases-issuers.generalfunctions.pvv.setup)
+ [生成一个随机密码，生成 PVV 并返回加密的 PIN 和 PVV](#use-cases-issuers.generalfunctions.pvv.generate)
+ [使用 PVV 方法验证加密的 PIN](#use-cases-issuers.generalfunctions.pvv.verify)

## 创建密钥
<a name="use-cases-issuers.generalfunctions.pvv.setup"></a>

为了生成随机 PIN 和 [PVV](terminology.md#terms.pvv)，你需要两个密钥，一个用于生成 PVV 的 P [in 验证密钥 (PVK)](terminology.md#terms.pvk) 和一个用于加密 PIN 的 P [in 加密密钥](terminology.md#terms.pek)。PIN 本身是在服务内部安全地随机生成的，并且在加密方面与任何一个密钥都没有关系。

PGK 必须是基于 PVV 算法本身的算法 TDES\$12KEY 的密钥。PEK 可以是 TDES\$12KEY、TDES\$13KEY 或 AES\$1128。在这种情况下，由于 PEK 仅供系统内部使用，因此 AES\$1128 将是一个不错的选择。如果PEK用于与其他系统（例如卡网络、收单机构 ATMs）交换或作为迁移的一部分进行移动，则出于兼容性考虑，TDES\$12KEY可能是更合适的选择。

### 创建 PEK
<a name="use-cases-issuers.generalfunctions.pvv.setup.pek"></a>

```
$ aws payment-cryptography create-key \
               --exportable 
               --key-attributes KeyAlgorithm=AES_128,KeyUsage=TR31_P0_PIN_ENCRYPTION_KEY,\
                   KeyClass=SYMMETRIC_KEY,\
                   KeyModesOfUse='{Encrypt=true,Decrypt=true,Wrap=true,Unwrap=true}' --tags='[{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
               "Key": {
                   "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
                   "KeyAttributes": {
                       "KeyUsage": "TR31_P0_PIN_ENCRYPTION_KEY",
                       "KeyClass": "SYMMETRIC_KEY",
                       "KeyAlgorithm": "AES_128",
                       "KeyModesOfUse": {
                           "Encrypt": false,
                           "Decrypt": false,
                           "Wrap": false,
                           "Unwrap": false,
                           "Generate": true,
                           "Sign": false,
                           "Verify": true,
                           "DeriveKey": false,
                           "NoRestrictions": false
                       }
                   },
                   "KeyCheckValue": "7CC9E2",
                   "KeyCheckValueAlgorithm": "CMAC",
                   "Enabled": true,
                   "Exportable": true,
                   "KeyState": "CREATE_COMPLETE",
                   "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                   "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00",
                   "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00"
               }
           }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/ivi5ksfsupln* euyt。您需要在下一步中执行该操作。

### 创建 PVK
<a name="use-cases-issuers.generalfunctions.pvv.setup.pvk"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_V2_VISA_PIN_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}'  --tags='[{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
                  "Key": {
                      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
                      "KeyAttributes": {
                          "KeyUsage": "TR31_V2_VISA_PIN_VERIFICATION_KEY",
                          "KeyClass": "SYMMETRIC_KEY",
                          "KeyAlgorithm": "TDES_2KEY",
                          "KeyModesOfUse": {
                              "Encrypt": false,
                              "Decrypt": false,
                              "Wrap": false,
                              "Unwrap": false,
                              "Generate": true,
                              "Sign": false,
                              "Verify": true,
                              "DeriveKey": false,
                              "NoRestrictions": false
                          }
                      },
                      "KeyCheckValue": "51A200",
                      "KeyCheckValueAlgorithm": "ANSI_X9_24",
                      "Enabled": true,
                      "Exportable": true,
                      "KeyState": "CREATE_COMPLETE",
                      "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                      "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00",
                      "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00"
                  }
              }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/ov6icy4r* yas4ryas4zcza。您需要在下一步中执行该操作。

## 生成一个随机密码，生成 PVV 并返回加密的 PIN 和 PVV
<a name="use-cases-issuers.generalfunctions.pvv.generate"></a>

**Example**  
在此示例中，我们将生成一个新的（随机）4 位数引脚，其中的输出将是加密的 `PIN block` (PinData. PinBlock) 和 a `PVV` (pinData。 VerificationValue)。密钥输入是 `PAN``Pin Verification Key`（也称为引脚生成密钥）、`Pin Encryption Key`和 [PIN 块](terminology.md#terms.pinblock)格式。  
 此命令要求密钥的类型为`TR31_V2_VISA_PIN_VERIFICATION_KEY`。  

```
$ aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --generation-attributes VisaPin={PinVerificationKeyIndex=1}
```

```
{
            "GenerationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
            "GenerationKeyCheckValue": "7F2363",
            "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
            "EncryptionKeyCheckValue": "7CC9E2",
            "EncryptedPinBlock": "AC17DC148BDA645E",
            "PinData": {
                "VerificationValue": "5507"
            }
        }
```

## 使用 PVV 方法验证加密的 PIN
<a name="use-cases-issuers.generalfunctions.pvv.verify"></a>

**Example**  
在此示例中，我们将验证给定 PAN 的 PIN。PIN 通常由持卡人或用户在交易期间提供以进行验证，并与存档的值进行比较（持卡人的输入以加密值形式由终端或其他上游提供商提供）。为了验证此输入，还将在运行时提供以下值：加密的 pin 码、用于加密输入 pin 的密钥（通常称为 [IWK](terminology.md#terms.iwk)）`PAN`以及要验证的值（a `PVV` 或`PIN offset`）。  
如果 P AWS ayment Cryptography 能够验证密码，则会返回 http/200。如果 pin 未经过验证，将返回 http/400。  

```
$ aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0  --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=5507}" --encrypted-pin-block AC17DC148BDA645E 
```

```
{
        "VerificationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
        "VerificationKeyCheckValue": "7F2363",
        "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
        "EncryptionKeyCheckValue": "7CC9E2",
}
```

# 生成或验证给定卡片的 CVV
<a name="use-cases-issuers.generalfunctions.cvv"></a>

[CVV](terminology.md#terms.cvv) 或 CVV1 是传统上嵌入在卡片磁条中的值。它与 CVV2 （持卡人可见，也可用于在线购物）不同。

第一步是创建一个密钥。在本教程中，您将创建一个 [CVK](terminology.md#terms.cvk) 双长度 3DES (2KEY TDES) 密钥。

**注意**  
CVV CVV2 和 iCvV 都使用相似甚至相同的算法，但输入数据会有所不同。所有密钥都使用相同的密钥类型 TR31 \$1C0\$1CARD\$1VERIFICATION\$1KEY，但建议为每种目的使用不同的密钥。可以使用别名 and/or 标签来区分它们，如下例所示。

## 创建密钥
<a name="use-cases-issuers.generalfunctions.cvv.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_C0_CARD_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CVV"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr",
                "KeyAttributes": {
                    "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY",
                    "KeyClass": "SYMMETRIC_KEY",
                    "KeyAlgorithm": "TDES_2KEY",
                    "KeyModesOfUse": {
                        "Encrypt": false,
                        "Decrypt": false,
                        "Wrap": false,
                        "Unwrap": false,
                        "Generate": true,
                        "Sign": false,
                        "Verify": true,
                        "DeriveKey": false,
                        "NoRestrictions": false
                    }
                },
                "KeyCheckValue": "DE89F9",
                "KeyCheckValueAlgorithm": "ANSI_X9_24",
                "Enabled": true,
                "Exportable": true,
                "KeyState": "CREATE_COMPLETE",
                "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00",
                "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00"
            }
        }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/r52o3wbqx* yf6qlqr。您需要在下一步中执行该操作。

## 生成 CVV
<a name="use-cases-issuers.generalfunctions.cvv.generate"></a>

**Example**  
在此示例中，我们将为给定的 PAN 生成一个 [CVV](terminology.md#terms.cvv)，其输入为`PAN`，服务代码（由 ISO/IEC 7813 定义）为 121，信用卡到期日期。  
有关所有可用参数，请参阅 API 参考指南中的 [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html)。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=121}'
```

```
                  {
                      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr",
                      "KeyCheckValue": "DE89F9",
                      "ValidationData": "801"
                  }
```

## 验证 CVV
<a name="use-cases-issuers.generalfunctions.cvv.verify"></a>

**Example**  
在此示例中，我们将使用输入 [CV](terminology.md#terms.cvv) K、服务代码 121 `PAN`、卡到期日期和交易期间提供的 CVV 来验证给定 PAN 的 CVV 以进行验证。  
有关所有可用参数，请参阅 API 参考指南中的 [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html)。  
CVV 不是用户输入的值（比如 CVV2），但通常嵌入在磁条上。应考虑在提供时是否应始终进行验证。

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr --primary-account-number=171234567890123 --verification-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=121} --validation-data 801
```

```
{
                    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr",
                    "KeyCheckValue": "DE89F9",
                    "ValidationData": "801"
}
```

# CVV2 为特定卡片生成或验证
<a name="use-cases-issuers.generalfunctions.cvv2"></a>

[CVV2](terminology.md#terms.cvv2)是传统上在卡背面提供的价值，用于在线购物。对于虚拟卡，它也可能显示在应用程序或屏幕上。从密码学上讲，它与服务代码值相同， CVV1 但具有不同的服务代码值。

## 创建密钥
<a name="use-cases-issuers.generalfunctions.cvv2.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_C0_CARD_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CVV2"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
               "Key": {
                   "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu",
                   "KeyAttributes": {
                       "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY",
                       "KeyClass": "SYMMETRIC_KEY",
                       "KeyAlgorithm": "TDES_2KEY",
                       "KeyModesOfUse": {
                           "Encrypt": false,
                           "Decrypt": false,
                           "Wrap": false,
                           "Unwrap": false,
                           "Generate": true,
                           "Sign": false,
                           "Verify": true,
                           "DeriveKey": false,
                           "NoRestrictions": false
                       }
                   },
                   "KeyCheckValue": "AEA5CD",
                   "KeyCheckValueAlgorithm": "ANSI_X9_24",
                   "Enabled": true,
                   "Exportable": true,
                   "KeyState": "CREATE_COMPLETE",
                   "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                   "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00",
                   "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00"
               }
           }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:* 111122223333: key/7f7g4spf3xcklhzu。您需要在下一步中执行该操作。

## 生成一个 CVV2
<a name="use-cases-issuers.generalfunctions.cvv2.generate"></a>

**Example**  
在此示例中，我们将[CVV2](terminology.md#terms.cvv2)为给定的 PAN 生成一个，其输入值为`PAN`和卡片到期日期。  
有关所有可用参数，请参阅 API 参考指南中的 [CardVerificationValue2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue2.html)。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu --primary-account-number=171234567890123 --generation-attributes CardVerificationValue2='{CardExpiryDate=1127}'
```

```
                     {
                         "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu",
                         "KeyCheckValue": "AEA5CD",
                         "ValidationData": "321"
                     }
```

## 验证 CVV2
<a name="use-cases-issuers.generalfunctions.cvv2.verify"></a>

**Example**  
在此示例中，我们将使用输入的 CVK、卡到期日期`PAN`和交易期间提供的 CVV 来验证给定的 PAN 以进行验证。[CVV2](terminology.md#terms.cvv2)  
有关所有可用参数，请参阅 API 参考指南中的 [CardVerificationValue2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue2.html)。  
CVV2 其他输入是用户输入的值。因此，这不一定是定期无法验证的问题的迹象。

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu --primary-account-number=171234567890123 --verification-attributes CardVerificationValue2='{CardExpiryDate=1127} --validation-data 321
```

```
{
                       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu",
                       "KeyCheckValue": "AEA5CD",
                       "ValidationData": "801"
   }
```

# 为特定卡生成或验证 iCvV
<a name="use-cases-issuers.generalfunctions.icvv"></a>

[iCvV](terminology.md#terms.icvv) 使用的算法与 CVV/ 相同，CVV2 但是 iCvV 嵌入在芯片卡中。它的服务代码是 999。

## 创建密钥
<a name="use-cases-issuers.generalfunctions.icvv.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_C0_CARD_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"ICVV"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
               "Key": {
                   "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/c7dsi763r6s7lfp3",
                   "KeyAttributes": {
                       "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY",
                       "KeyClass": "SYMMETRIC_KEY",
                       "KeyAlgorithm": "TDES_2KEY",
                       "KeyModesOfUse": {
                           "Encrypt": false,
                           "Decrypt": false,
                           "Wrap": false,
                           "Unwrap": false,
                           "Generate": true,
                           "Sign": false,
                           "Verify": true,
                           "DeriveKey": false,
                           "NoRestrictions": false
                       }
                   },
                   "KeyCheckValue": "1201FB",
                   "KeyCheckValueAlgorithm": "ANSI_X9_24",
                   "Enabled": true,
                   "Exportable": true,
                   "KeyState": "CREATE_COMPLETE",
                   "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                   "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00",
                   "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00"
               }
           }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/c7dsi763r6* s7s7lfp3。您需要在下一步中执行该操作。

## 生成一个 iCvV
<a name="use-cases-issuers.generalfunctions.icvv.generate"></a>

**Example**  
在此示例中，我们将为给定的 PAN 生成一个 [ICvV](terminology.md#terms.icvv)，其输入为`PAN`，服务代码（由 ISO/IEC 7813 定义）为 999，卡到期日期。  
有关所有可用参数，请参阅 API 参考指南中的 [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html)。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/c7dsi763r6s7lfp3 --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=999}'
```

```
                     {
                         "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/c7dsi763r6s7lfp3",
                         "KeyCheckValue": "1201FB",
                         "ValidationData": "532"
                     }
```

## 验证 iCvV
<a name="use-cases-issuers.generalfunctions.icvv.verify"></a>

**Example**  
为了进行验证，输入的是CVK `PAN`、服务代码为999、卡到期日期以及交易期间提供的待验证的iCVV。  
有关所有可用参数，请参阅 API 参考指南中的 [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html)。  
iCvV 不是用户输入的值（比如 CVV2），但通常嵌入在卡片上。 EMV/chip 应考虑在提供时是否应始终进行验证。

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/c7dsi763r6s7lfp3 --primary-account-number=171234567890123 --verification-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=999} --validation-data 532
```

```
{
                       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/c7dsi763r6s7lfp3",
                       "KeyCheckValue": "1201FB",
                       "ValidationData": "532"
   }
```

# 验证 EMV ARQC 并生成 ARPC
<a name="use-cases-issuers.generalfunctions.arqc"></a>

[ARQC](terminology.md#terms.arqc)（授权请求密码）是由EMV（芯片）卡生成的密码，用于验证交易细节以及授权卡的使用。它包含来自卡、终端和交易本身的数据。

在后端进行验证时，会向 P AWS ayment Cryptography 提供相同的输入，在内部重新创建密码，并将其与交易中提供的价值进行比较。从这个意义上讲，它类似于MAC。[EMV 4.4 Book 2](https://www.emvco.com/specifications/?post_id=80377) 定义了此函数的三个方面——用于生成一次性交易密钥的密钥派生方法（称为通用会话密钥——CSK）、最小有效载荷和生成响应的方法 (ARPC)。

 个别信用卡方案可以指定要合并的其他交易字段或这些字段的显示顺序。还存在其他（通常不推荐使用的）特定于方案的派生方案，本文档的其他部分对此进行了介绍。

有关更多信息，请参阅 API 指南[VerifyCardValidationData](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyCardValidationData.html)中的。

## 创建密钥
<a name="use-cases-issuers.generalfunctions.arqc.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{DeriveKey=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CVN18"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
                "Key": {
                    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
                    "KeyAttributes": {
                        "KeyUsage": "TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS",
                        "KeyClass": "SYMMETRIC_KEY",
                        "KeyAlgorithm": "TDES_2KEY",
                        "KeyModesOfUse": {
                            "Encrypt": false,
                            "Decrypt": false,
                            "Wrap": false,
                            "Unwrap": false,
                            "Generate": false,
                            "Sign": false,
                            "Verify": false,
                            "DeriveKey": true,
                            "NoRestrictions": false
                        }
                    },
                    "KeyCheckValue": "08D7B4",
                    "KeyCheckValueAlgorithm": "ANSI_X9_24",
                    "Enabled": true,
                    "Exportable": true,
                    "KeyState": "CREATE_COMPLETE",
                    "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                    "CreateTimestamp": "2024-03-07T06:41:46.648000-07:00",
                    "UsageStartTimestamp": "2024-03-07T06:41:46.626000-07:00"
                }
            }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/pw3s6nl62* t5ushfk。您需要在下一步中执行该操作。

## 生成 ARQC
<a name="use-cases-issuers.generalfunctions.arqc.generate"></a>

ARQC 完全由 EMV 卡生成。因此， AWS 支付密码学没有生成此类有效载荷的工具。出于测试目的，在线提供了许多库，这些库可以生成适当的有效载荷以及各种方案通常提供的已知值。

## 验证 ARQC
<a name="use-cases-issuers.generalfunctions.arqc.verify"></a>

**Example**  
如果 AWS 支付密码学能够验证 ARQC，则会返回 http/200。在验证 ARQC 后，可以选择提供 ARPC（响应）并将其包含在响应中。  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram 61EDCC708B4C97B4 --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk --major-key-derivation-mode EMV_OPTION_A --transaction-data 00000000170000000000000008400080008000084016051700000000093800000B1F2201030000000000000000000000000000000000000000000000000000008000000000000000 --session-key-derivation-attributes='{"EmvCommon":{"ApplicationTransactionCounter":"000B", "PanSequenceNumber":"01","PrimaryAccountNumber":"9137631040001422"}}' --auth-response-attributes='{"ArpcMethod2":{"CardStatusUpdate":"12345678"}}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
    "KeyCheckValue": "08D7B4",
    "AuthResponseValue":"2263AC85"
}
```

# 生成并验证 EMV MAC
<a name="use-cases-issuers.generalfunctions.emvmac"></a>

EMV MAC 是 MAC，使用 EMV 派生的密钥的输入，然后对生成的数据执行 ISO9797 -3（零售）MAC。EMV MAC 通常用于向 EMV 卡发送命令，例如解锁脚本。

**注意**  
 AWS 支付密码学无法验证脚本的内容。有关要包含的特定命令的详细信息，请查阅您的方案或卡片手册。

有关更多信息，请参阅 API 指南[MacAlgorithmEmv](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_MacAlgorithmEmv.html)中的。

**Topics**
+ [创建密钥](#use-cases-issuers.generalfunctions.emvmac.setup)
+ [生成 EMV MAC](#use-cases-issuers.generalfunctions.emvmac.generate)

## 创建密钥
<a name="use-cases-issuers.generalfunctions.emvmac.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_E2_EMV_MKEY_INTEGRITY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{DeriveKey=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CVN18"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
        "Key": {
            "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
            "KeyAttributes": {
                "KeyUsage": "TR31_E2_EMV_MKEY_INTEGRITY",
                "KeyClass": "SYMMETRIC_KEY",
                "KeyAlgorithm": "TDES_2KEY",
                "KeyModesOfUse": {
                    "Encrypt": false,
                    "Decrypt": false,
                    "Wrap": false,
                    "Unwrap": false,
                    "Generate": false,
                    "Sign": false,
                    "Verify": false,
                    "DeriveKey": true,
                    "NoRestrictions": false
                }
            },
            "KeyCheckValue": "08D7B4",
            "KeyCheckValueAlgorithm": "ANSI_X9_24",
            "Enabled": true,
            "Exportable": true,
            "KeyState": "CREATE_COMPLETE",
            "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
            "CreateTimestamp": "2024-03-07T06:41:46.648000-07:00",
            "UsageStartTimestamp": "2024-03-07T06:41:46.626000-07:00"
        }
    }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/pw3s6nl62* t5ushfk。您需要在下一步中执行该操作。

## 生成 EMV MAC
<a name="use-cases-issuers.generalfunctions.emvmac.generate"></a>

典型的流程是，后端进程将生成 EMV 脚本（例如卡片解除封锁），使用此命令（派生特定于某张卡的一次性密钥）对其进行签名，然后返回 MAC。然后，命令\$1 MAC被发送到要应用的卡。向卡发送命令超出了 AWS 支付加密的范围。

**注意**  
 此命令适用于未发送加密数据（例如 PIN）时的命令。EMV Encrypt 可以与该命令结合使用，以便在调用此命令之前将加密的数据附加到发行者脚本中 

消息数据  
消息数据包括 APDU 标头和命令。虽然这可能因实现而异，但此示例是解除封锁 (84 24 00 00 08) 的 APDU 标头，其次是 ATC (0007)，然后是前一笔交易 (999E57 F47CACE) 的 ARQC。FD0该服务不验证此字段的内容。

会话密钥派生模式  
此字段定义会话密钥的生成方式。EMV\$1COMMON\$1SESSION\$1KEY 通常用于新的实现，而 EMV2000 \$1 AMEX \$1 MASTERCARD\$1SESSION\$1KEY \$1 也可以使用 VISA。

MajorKeyDerivationMode  
EMV 定义模式 A、B 或 C。模式 A 是最常见的， AWS 支付密码学目前支持模式 A 或模式 B。

PAN  
账号，通常在芯片字段 5A 或字 ISO8583 段 2 中可用，但也可以从卡系统中检索。

PSN  
卡片序列号。如果未使用，请输入 00。

SessionKeyDerivationValue  
这是每个会话的派生数据。根据推导方案，它可以是场 9F26 中的最后一个 ARQC (ApplicationCryptogram)，也可以是 9F36 中的最后一个 ATC。

Padding  
自动应用填充并使用 ISO/IEC 9797-1 填充方法 2。

**Example**  

```
$ aws payment-cryptography-data generate-mac --message-data 84240000080007999E57FD0F47CACE --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk --message-data 8424000008999E57FD0F47CACE0007 --generation-attributes EmvMac="{MajorKeyDerivationMode=EMV_OPTION_A,PanSequenceNumber='00',PrimaryAccountNumber='2235521304123282',SessionKeyDerivationMode=EMV_COMMON_SESSION_KEY,SessionKeyDerivationValue={ApplicationCryptogram='999E57FD0F47CACE'}}"
```

```
{
"KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
"KeyCheckValue": "08D7B4",
"Mac":"5652EEDF83EA0D84"
}
```

# 生成 EMV MAC 以更改 PIN
<a name="use-cases-issuers.generalfunctions.emvpinchange"></a>

EMV PIN 更改结合了两个操作：为发行者脚本生成 MAC 和加密新 PIN 以在 EMV 芯片卡上进行离线 PIN 更改。只有在芯片卡上存储密码的某些国家/地区才需要此命令（这在欧洲国家很常见）。这通常用于持卡人需要更改其 PIN，并且必须将新 PIN 与 MAC 一起安全地传输到信用卡以验证命令的真实性时。

**注意**  
 如果您只需要向卡发送命令而不需要更改 PIN，请考虑改用 [ARPC CSU](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyAuthRequestCryptogram.html) 或[生成 EMV MAC](use-cases-issuers.generalfunctions.emvmac.md) 命令。

有关更多信息，请参阅 API 指南[GenerateMacEmvPinChange](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMacEmvPinChange.html)中的。

## 生成 EMV MAC 和加密的 PIN 以更改 PIN
<a name="use-cases-issuers.generalfunctions.emvpinchange.generate"></a>

此操作需要两个密钥：一个用于生成 MAC 的 EMV 完整性密钥（KeyUsage: TR31 \$1E2\$1EMV\$1MKEY\$1INTEGRITY）和一个用于 PIN 加密的 EMV 机密密钥（: \$1E4\$1EMV\$1MKEY\$1MKEY\$1CENTRITY）。KeyUsage TR31典型的流程是，后端进程将生成 EMV PIN 更改脚本，其中包括颁发者脚本的 MAC 和加密的新 PIN。然后，命令和加密的 PIN 将发送到卡上，以更新离线 PIN。向卡发送命令超出了 AWS 支付加密的范围。

消息数据  
消息数据包括发行者脚本的 APDU 命令。该服务不验证此字段的内容。

新的加密 PIN 块  
新的加密 PIN 区块将发送到信用卡。必须使用 PIN 加密密钥将其作为加密值提供。

新的 PIN PEK 标识符  
用于在新 PIN 传递给此 API 之前对其进行加密的密钥。

安全消息完整性密钥  
用于生成 MAC 的 EMV 完整性密钥 (KeyUsage: TR31 \$1E2\$1EMV\$1MKEY\$1INTEGRITY)。

安全消息保密密钥  
用于 PIN 加密的 EMV 机密密钥 (KeyUsage: TR31 \$1E4\$1EMV\$1MKEY\$1MKEY\$1Converity)。

MajorKeyDerivationMode  
EMV 定义模式 A、B 或 C。模式 A 是最常见的， AWS 支付密码学目前支持模式 A 或模式 B。

Mode  
加密模式，通常是用于密码更改操作的 CBC。

PAN  
账号，通常在芯片字段 5A 或字 ISO8583 段 2 中可用，但也可以从卡系统中检索。

PanSequenceNumber  
卡片序列号。如果未使用，请输入 00。

ApplicationCryptogram  
这是每个会话的派生数据，通常是字段 9F26 中的最后一个 ARQC。

PinBlockLengthPosition  
指定 PIN 区块长度的编码位置。通常设置为 “无”。如果您不确定，请查看您的信用卡计划规格。

PinBlockPaddingType  
指定 PIN 块的填充类型。通常设置为 NO\$1PADDING。如果您不确定，请查看您的信用卡计划规格。

**Example**  

```
$ aws payment-cryptography-data generate-mac-emv-pin-change \
    --message-data 00A4040008A000000004101080D80500000001010A04000000000000 \
    --new-encrypted-pin-block 67FB27C75580EFE7 \
    --new-pin-pek-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt \
    --pin-block-format ISO_FORMAT_0 \
    --secure-messaging-confidentiality-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \
    --secure-messaging-integrity-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \
    --derivation-method-attributes 'EmvCommon={ApplicationCryptogram=1234567890123457,MajorKeyDerivationMode=EMV_OPTION_A,Mode=CBC,PanSequenceNumber=00,PinBlockLengthPosition=NONE,PinBlockPaddingType=NO_PADDING,PrimaryAccountNumber=171234567890123}'
```

```
{
    "SecureMessagingIntegrityKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
    "SecureMessagingIntegrityKeyCheckValue": "08D7B4",
    "SecureMessagingConfidentialityKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "SecureMessagingConfidentialityKeyCheckValue": "C1EB8F",
    "Mac": "5652EEDF83EA0D84",
    "EncryptedPinBlock": "F1A2B3C4D5E6F7A8"
}
```

# 特定于网络的功能
<a name="use-cases-issuers.networkfunctions"></a>

**Topics**
+ [签证特定功能](use-cases-issuers.networkfunctions.visa.md)
+ [万事达卡的特定功能](use-cases-issuers.networkfunctions.mastercard.md)
+ [美国运通的特定功能](use-cases-issuers.networkfunctions.amex.md)
+ [JCB 特定函数](use-cases-issuers.networkfunctions.jcb.md)

# 签证特定功能
<a name="use-cases-issuers.networkfunctions.visa"></a>

**Topics**
+ [ARQC-/ CVN18CVN22](#use-cases-issuers.networkfunctions.visa.cvn18)
+ [ARQC- CVN10](#use-cases-issuers.networkfunctions.visa.cvn10)
+ [3DS CAVV V7](#use-cases-issuers.networkfunctions.visa.cavv-v7)
+ [DCvV（动态卡验证值）- CVN17](#use-cases-issuers.networkfunctions.visa.dcvv)

## ARQC-/ CVN18CVN22
<a name="use-cases-issuers.networkfunctions.visa.cvn18"></a>

CVN18 并 CVN22 使用 [CSK 密钥派生方法](use-cases-issuers.generalfunctions.arqc.md)。这两种方法的确切交易数据会有所不同，有关构造交易数据字段的详细信息，请参阅方案文档。

## ARQC- CVN10
<a name="use-cases-issuers.networkfunctions.visa.cvn10"></a>

CVN10 是用于EMV交易的较旧Visa方法，它使用每卡密钥派生而不是会话（每笔交易）派生，并且还使用不同的有效负载。有关有效载荷内容的信息，请联系该计划了解详情。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.visa.cvn10.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{DeriveKey=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CVN10"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
                "KeyAttributes": {
                    "KeyUsage": "TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS",
                    "KeyClass": "SYMMETRIC_KEY",
                    "KeyAlgorithm": "TDES_2KEY",
                    "KeyModesOfUse": {
                        "Encrypt": false,
                        "Decrypt": false,
                        "Wrap": false,
                        "Unwrap": false,
                        "Generate": false,
                        "Sign": false,
                        "Verify": false,
                        "DeriveKey": true,
                        "NoRestrictions": false
                    }
                },
                "KeyCheckValue": "08D7B4",
                "KeyCheckValueAlgorithm": "ANSI_X9_24",
                "Enabled": true,
                "Exportable": true,
                "KeyState": "CREATE_COMPLETE",
                "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                "CreateTimestamp": "2024-03-07T06:41:46.648000-07:00",
                "UsageStartTimestamp": "2024-03-07T06:41:46.626000-07:00"
            }
        }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/pw3s6nl62* t5ushfk。您需要在下一步中执行该操作。

### 验证 ARQC
<a name="use-cases-issuers.networkfunctions.visa.cvn10.validation"></a>

**Example**  
在此示例中，我们将验证使用Visa生成的ARQC。 CVN10  
如果 AWS 支付密码学能够验证 ARQC，则会返回 http/200。如果 arqc 未经过验证，将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram D791093C8A921769 \
  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \
  --major-key-derivation-mode EMV_OPTION_A \ 
  --transaction-data 00000000170000000000000008400080008000084016051700000000093800000B03011203000000 \
  --session-key-derivation-attributes='{"Visa":{"PanSequenceNumber":"01" \ 
  ,"PrimaryAccountNumber":"9137631040001422"}}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
    "KeyCheckValue": "08D7B4"
  }
```

## 3DS CAVV V7
<a name="use-cases-issuers.networkfunctions.visa.cavv-v7"></a>

对于 Visa Secure (3DS) 交易，CAVV（持卡人身份验证值）由发卡机构访问控制服务器 (ACS) 生成。CAVV 是进行持卡人身份验证的证据，对于每笔身份验证交易都是唯一的，由收单方在授权消息中提供。CAVV v7 将有关交易的其他数据与批准绑定，包括商家名称、购买金额和购买日期等元素。这样，它实际上就是交易有效载荷的加密哈希值。

从密码学上讲，CAVV V7使用了CVV算法，但是输入都是关于如何生成输入以生成CAVV V7有效载荷的changed/repurposed. Please consult appropriate third party/Visa文档。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.visa.cavv-v7.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_C0_CARD_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CAVV-V7"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/dnaeyrjgdjjtw6dk",
                "KeyAttributes": {
                    "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY",
                    "KeyClass": "SYMMETRIC_KEY",
                    "KeyAlgorithm": "TDES_2KEY",
                    "KeyModesOfUse": {
                        "Encrypt": false,
                        "Decrypt": false,
                        "Wrap": false,
                        "Unwrap": false,
                        "Generate": true,
                        "Sign": false,
                        "Verify": true,
                        "DeriveKey": false,
                        "NoRestrictions": false
                    }
                },
                "KeyCheckValue": "F3FB13",
                "KeyCheckValueAlgorithm": "ANSI_X9_24",
                "Enabled": true,
                "Exportable": true,
                "KeyState": "CREATE_COMPLETE",
                "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00",
                "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00"
            }
        }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/dnaeyrjgdjjtw6* dk。您需要在下一步中执行该操作。

### 生成 CAVV V7
<a name="use-cases-issuers.networkfunctions.visa.cavv-v7.generate"></a>

**Example**  
在此示例中，我们将为给定交易生成 CAVV V7，其输入如规范中所述。请注意，对于此算法，字段可以重复使用/重新利用，因此不应假设字段标签与输入相匹配。  
有关所有可用参数，请参阅 API 参考指南中的 [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html)。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/dnaeyrjgdjjtw6dk --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=9431,ServiceCode=431}'
```

```
              {
                  "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/dnaeyrjgdjjtw6dk",
                  "KeyCheckValue": "F3FB13",
                  "ValidationData": "491"
              }
```

### 验证 CAVV V7
<a name="use-cases-issuers.networkfunctions.visa.cavv-v7.verify"></a>

**Example**  
为了进行验证，输入是 CVK、计算的输入值和交易期间提供的待验证的 CAVV。  
有关所有可用参数，请参阅 API 参考指南中的 [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html)。  
CAVV 不是用户输入的值（比如 CVV2），而是由发行机构 ACS 计算的。应考虑在提供时是否应始终进行验证。

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/dnaeyrjgdjjtw6dk --primary-account-number=171234567890123 --verification-attributes CardVerificationValue1='{CardExpiryDate=9431,ServiceCode=431} --validation-data 491
```

```
{
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/dnaeyrjgdjjtw6dk",
                "KeyCheckValue": "F3FB13",
                "ValidationData": "491"
}
```

## DCvV（动态卡验证值）- CVN17
<a name="use-cases-issuers.networkfunctions.visa.dcvv"></a>

DCvV（动态卡验证值）是一种专用于非接触式EMV交易的Visa专用动态密码。它被称为早期EMV，它通过为每笔交易生成唯一的验证值来增强安全性。DCvV 使用的输入包括主账号 (PAN)、PAN 序列号 (PSN)、应用程序交易计数器 (ATC)、不可预测的号码和轨道数据。它仍在某些地方使用，但大部分已被其他算法所取代，例如 CVN18。

有关所有可用参数，请参阅 [DynamicCardVerificationValue](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_DynamicCardVerificationValue.html)API 参考指南。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.visa.dcvv.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"DCVV"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc",
                "KeyAttributes": {
                    "KeyUsage": "TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS",
                    "KeyClass": "SYMMETRIC_KEY",
                    "KeyAlgorithm": "TDES_2KEY",
                    "KeyModesOfUse": {
                        "Encrypt": false,
                        "Decrypt": false,
                        "Wrap": false,
                        "Unwrap": false,
                        "Generate": true,
                        "Sign": false,
                        "Verify": true,
                        "DeriveKey": false,
                        "NoRestrictions": false
                    }
                },
                "KeyCheckValue": "A8E4D2",
                "KeyCheckValueAlgorithm": "ANSI_X9_24",
                "Enabled": true,
                "Exportable": true,
                "KeyState": "CREATE_COMPLETE",
                "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                "CreateTimestamp": "2025-02-02T11:45:30.648000-08:00",
                "UsageStartTimestamp": "2025-02-02T11:45:30.626000-08:00"
            }
        }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/mw7dn3qxv* kfh8ztc。您需要在下一步中执行该操作。

### 生成 dcvV
<a name="use-cases-issuers.networkfunctions.visa.dcvv.generate"></a>

**Example**  
在此示例中，我们将为非接触式 EMV 交易生成 DCvV。输入包括 PAN、PAN 序列号、应用程序事务计数器、不可预测的数字和轨道数据。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc \
    --primary-account-number=5111112627662122 \
    --generation-attributes DynamicCardVerificationValue='{ApplicationTransactionCounter=01,PanSequenceNumber=00,TrackData=12345,UnpredictableNumber=123}' \
    --validation-data-length 5
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc",
    "KeyCheckValue": "A8E4D2",
    "ValidationData": "36667"
}
```

### 验证 dcvV
<a name="use-cases-issuers.networkfunctions.visa.dcvv.verify"></a>

**Example**  
在此示例中，我们将验证交易期间提供的 DCvV。必须提供用于生成的相同输入以进行验证。  
如果 AWS 支付密码学能够验证，则会返回 http/200。如果该值未经过验证，它将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc \
    --primary-account-number=5111112627662122 \
    --validation-data=36667 \
    --verification-attributes DynamicCardVerificationValue='{ApplicationTransactionCounter=01,PanSequenceNumber=00,TrackData=12345,UnpredictableNumber=123}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc",
    "KeyCheckValue": "A8E4D2"
}
```

# 万事达卡的特定功能
<a name="use-cases-issuers.networkfunctions.mastercard"></a>

**Topics**
+ [DCVC3](#use-cases-issuers.networkfunctions.mastercard.dcvc)
+ [ARQC-/ CVN14CVN15](#use-cases-issuers.networkfunctions.mastercard.cvn14)
+ [ARQC-/ CVN12CVN13](#use-cases-issuers.networkfunctions.mastercard.cvn12)
+ [3DS AAV SPA2](#use-cases-issuers.networkfunctions.mastercard.spa2aav)

## DCVC3
<a name="use-cases-issuers.networkfunctions.mastercard.dcvc"></a>

DCVC3 早于 EMV CSK 和万事达卡 CVN12 计划，代表了另一种使用动态密钥的方法。它有时还会被重新用于其他用例。在该方案中，输入是 PAN、PSN、Track1/Track2 数据、不可预测的数字和交易计数器 (ATC)。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.mastercard.dcvc3.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{DeriveKey=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"DCVC3"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/hrh6qgbi3sk4y3wq",
                "KeyAttributes": {
                    "KeyUsage": "TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS",
                    "KeyClass": "SYMMETRIC_KEY",
                    "KeyAlgorithm": "TDES_2KEY",
                    "KeyModesOfUse": {
                        "Encrypt": false,
                        "Decrypt": false,
                        "Wrap": false,
                        "Unwrap": false,
                        "Generate": false,
                        "Sign": false,
                        "Verify": false,
                        "DeriveKey": true,
                        "NoRestrictions": false
                    }
                },
                "KeyCheckValue": "08D7B4",
                "KeyCheckValueAlgorithm": "ANSI_X9_24",
                "Enabled": true,
                "Exportable": true,
                "KeyState": "CREATE_COMPLETE",
                "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                "CreateTimestamp": "2024-03-07T06:41:46.648000-07:00",
                "UsageStartTimestamp": "2024-03-07T06:41:46.626000-07:00"
            }
        }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/hrh6qgbi3sk4y3wq*。您需要在下一步中执行该操作。

### 生成一个 DCVC3
<a name="use-cases-issuers.networkfunctions.mastercard.dcvc3.generate"></a>

**Example**  
尽管 DCVC3 通常由芯片卡生成，但也可以手动生成，如本例所示   

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk --primary-account-number=5413123456784808 --generation-attributes DynamicCardVerificationCode='{ApplicationTransactionCounter=0000,TrackData=5241060000000069D13052020000000000003F,PanSequenceNumber=00,UnpredictableNumber=00000000}''
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
    "KeyCheckValue": "08D7B4",
    "ValidationData": "865"
  }
```

### 验证 DCVC3
<a name="use-cases-issuers.networkfunctions.mastercard.dcvc3.validation"></a>

**Example**  
在此示例中，我们将验证 DCVC3。请注意，ATC 应以十六进制数字提供，例如，计数器 11 应表示为 000B。该服务需要一个 3 位数字 DCVC3，因此，如果您存储了 4（或 5）位数的值，只需截断左边的字符直到有 3 位数字（例如，15321 的验证数据值应为 321）。  
如果 AWS 支付密码学能够验证，则会返回 http/200。如果该值未经过验证，它将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-card-validation-data  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk --primary-account-number=5413123456784808 --verification-attributes DynamicCardVerificationCode='{ApplicationTransactionCounter=000B,TrackData=5241060000000069D13052020000000000003F,PanSequenceNumber=00,UnpredictableNumber=00000001}' --validation-data 398
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
    "KeyCheckValue": "08D7B4"
  }
```

## ARQC-/ CVN14CVN15
<a name="use-cases-issuers.networkfunctions.mastercard.cvn14"></a>

CVN14 并 CVN15 使用 [EMV CSK 方法](use-cases-issuers.generalfunctions.arqc.md)进行密钥推导。这两种方法的确切交易数据会有所不同，有关构造交易数据字段的详细信息，请参阅方案文档。

## ARQC-/ CVN12CVN13
<a name="use-cases-issuers.networkfunctions.mastercard.cvn12"></a>

CVN12 并且 CVN13 是针对EMV交易的较旧万事达卡专用方法，它在每笔交易的推导中加入了不可预测的数字，并且还使用了不同的有效载荷。有关有效载荷内容的信息，请联系该计划。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.mastercard.cvn12.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{DeriveKey=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CVN12"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
                "KeyAttributes": {
                    "KeyUsage": "TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS",
                    "KeyClass": "SYMMETRIC_KEY",
                    "KeyAlgorithm": "TDES_2KEY",
                    "KeyModesOfUse": {
                        "Encrypt": false,
                        "Decrypt": false,
                        "Wrap": false,
                        "Unwrap": false,
                        "Generate": false,
                        "Sign": false,
                        "Verify": false,
                        "DeriveKey": true,
                        "NoRestrictions": false
                    }
                },
                "KeyCheckValue": "08D7B4",
                "KeyCheckValueAlgorithm": "ANSI_X9_24",
                "Enabled": true,
                "Exportable": true,
                "KeyState": "CREATE_COMPLETE",
                "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                "CreateTimestamp": "2024-03-07T06:41:46.648000-07:00",
                "UsageStartTimestamp": "2024-03-07T06:41:46.626000-07:00"
            }
        }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/pw3s6nl62* t5ushfk。您需要在下一步中执行该操作。

### 验证 ARQC
<a name="use-cases-issuers.networkfunctions.mastercard.cvn12.validation"></a>

**Example**  
在此示例中，我们将验证使用万事达卡生成的 ARQC。 CVN12  
如果 AWS 支付密码学能够验证 ARQC，则会返回 http/200。如果 arqc 未经过验证，将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram 31BE5D49F14A5F01 \
  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \
  --major-key-derivation-mode EMV_OPTION_A \ 
  --transaction-data 00000000170000000000000008400080008000084016051700000000093800000B1F2201030000000000000000000000000000000000000000000000000000008000000000000000 \
  --session-key-derivation-attributes='{"MastercardSessionKey":{"ApplicationTransactionCounter":"000B","PanSequenceNumber":"01","PrimaryAccountNumber":"5413123456784808","UnpredictableNumber":"00000001"}}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
    "KeyCheckValue": "08D7B4"
  }
```

## 3DS AAV SPA2
<a name="use-cases-issuers.networkfunctions.mastercard.spa2aav"></a>

SPA2 AAV（账户认证值）用于万事达卡 3DS 交易（也称为万事达卡身份检查）。它使用基于 HMAC 的 MAC 生成为电子商务交易提供加密身份验证。AAV 是使用特定于交易的数据和共享密钥生成的。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.mastercard.spa2aav.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=HMAC_SHA256,KeyUsage=TR31_M7_HMAC_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"SPA2_AAV"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-west-2:111122223333:key/q5vjtshsg67cz5gn",
                "KeyAttributes": {
                    "KeyUsage": "TR31_M7_HMAC_KEY",
                    "KeyClass": "SYMMETRIC_KEY",
                    "KeyAlgorithm": "HMAC_SHA256",
                    "KeyModesOfUse": {
                        "Encrypt": false,
                        "Decrypt": false,
                        "Wrap": false,
                        "Unwrap": false,
                        "Generate": true,
                        "Sign": false,
                        "Verify": true,
                        "DeriveKey": false,
                        "NoRestrictions": false
                    }
                },
                "KeyCheckValue": "C661F9",
                "KeyCheckValueAlgorithm": "HMAC",
                "Enabled": true,
                "Exportable": true,
                "KeyState": "CREATE_COMPLETE",
                "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                "CreateTimestamp": "2024-03-07T06:41:46.648000-07:00",
                "UsageStartTimestamp": "2024-03-07T06:41:46.626000-07:00"
            }
        }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-west-2:* 111122223333: key/q5vjtshsg67cz5gn。您需要在下一步中执行该操作。

### 生成 SPA2 AAV
<a name="use-cases-issuers.networkfunctions.mastercard.spa2aav.generate"></a>

**Example**  
在此示例中，我们将使用 HMAC MAC 生成生成 AAV 的颁发者身份验证值 (I SPA2 AV) 组件。消息数据包含要进行身份验证的特定于交易的信息。报文数据的格式应遵循万事达卡的 SPA2 规范，本示例中不涉及该格式。  
请查看您的万事达卡规格，了解将 IAV 插入 AAV 值的格式。

```
$ aws payment-cryptography-data generate-mac --key-identifier arn:aws:payment-cryptography:us-west-2:111122223333:key/q5vjtshsg67cz5gn --message-data "2226400099919520FFFFd8b448be65694fe7b42f836bad396e9d" --generation-attributes Algorithm=HMAC --region us-west-2
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-west-2:111122223333:key/q5vjtshsg67cz5gn",
    "KeyCheckValue": "C661F9",
    "Mac": "6FB2405E9D8A4C1F7B173F73ADD1A6DC358531CAB0E9994FC5B62012ADDE91FC"
}
```

### 验证 SPA2 AAV
<a name="use-cases-issuers.networkfunctions.mastercard.spa2aav.verify"></a>

**Example**  
在此示例中，我们将验证 SPA2 AAV。为验证提供了相同的消息数据和 MAC 值。  
如果 AWS 支付密码学能够验证 MAC，则会返回 http/200。如果 MAC 未经过验证，它将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-mac --key-identifier arn:aws:payment-cryptography:us-west-2:111122223333:key/q5vjtshsg67cz5gn --message-data "2226400099919520FFFFd8b448be65694fe7b42f836bad396e9d" --mac "6FB2405E9D8A4C1F7B173F73ADD1A6DC358531CAB0E9994FC5B62012ADDE91FC" --verification-attributes Algorithm=HMAC --region us-west-2
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-west-2:111122223333:key/q5vjtshsg67cz5gn",
    "KeyCheckValue": "C661F9"
}
```

# 美国运通的特定功能
<a name="use-cases-issuers.networkfunctions.amex"></a>

**Topics**
+ [CSC1](#use-cases-issuers.networkfunctions.amex.csc)
+ [CSC2](#use-cases-issuers.networkfunctions.amex.csc2)
+ [ICSC](#use-cases-issuers.networkfunctions.amex.csc3)
+ [3DS AEVV](#use-cases-issuers.networkfunctions.amex.3dsaevv)

## CSC1
<a name="use-cases-issuers.networkfunctions.amex.csc"></a>

CSC 版本 1 也被称为经典 CSC 算法。该服务可以以 3,4 或 5 位数字的形式提供。

有关所有可用参数，请参阅 API 参考指南中的 [AmexCardSecurityCodeVersion1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_AmexCardSecurityCodeVersion1.html)。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.amex.csc.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_C0_CARD_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CSC1"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
                "Key": {
                    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/esh6hn7pxdtttzgq",
                    "KeyAttributes": {
                        "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY",
                        "KeyClass": "SYMMETRIC_KEY",
                        "KeyAlgorithm": "TDES_2KEY",
                        "KeyModesOfUse": {
                            "Encrypt": false,
                            "Decrypt": false,
                            "Wrap": false,
                            "Unwrap": false,
                            "Generate": true,
                            "Sign": false,
                            "Verify": true,
                            "DeriveKey": false,
                            "NoRestrictions": false
                        }
                    },
                    "KeyCheckValue": "8B5077",
                    "KeyCheckValueAlgorithm": "ANSI_X9_24",
                    "Enabled": true,
                    "Exportable": true,
                    "KeyState": "CREATE_COMPLETE",
                    "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                    "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00",
                    "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00"
                }
            }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/esh6hn7pxd* tttzgq。您需要在下一步中执行该操作。

### 生成一个 CSC1
<a name="use-cases-issuers.networkfunctions.amex.csc1.generate"></a>

**Example**  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/esh6hn7pxdtttzgq --primary-account-number=344131234567848 --generation-attributes AmexCardSecurityCodeVersion1='{CardExpiryDate=1224}' --validation-data-length 4
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/esh6hn7pxdtttzgq",
    "KeyCheckValue": "8B5077",
    "ValidationData": "3938"
  }
```

### 验证 CSC1
<a name="use-cases-issuers.networkfunctions.amex.csc1.validation"></a>

**Example**  
在此示例中，我们将验证 a CSC1。  
如果 AWS 支付密码学能够验证，则会返回 http/200。如果该值未经过验证，它将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-card-validation-data  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/esh6hn7pxdtttzgq --primary-account-number=344131234567848 --verification-attributes AmexCardSecurityCodeVersion1='{CardExpiryDate=1224}''  --validation-data 3938
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/esh6hn7pxdtttzgq",
    "KeyCheckValue": "8B5077"
  }
```

## CSC2
<a name="use-cases-issuers.networkfunctions.amex.csc2"></a>

CSC 版本 2 也被称为增强型 CSC 算法。该服务可以以 3,4 或 5 位数字的形式提供。的服务代码通常 CSC2 为 000。

有关所有可用参数，请参阅 API 参考指南中的 [AmexCardSecurityCodeVersion2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_AmexCardSecurityCodeVersion2.html)。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.amex.csc2.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_C0_CARD_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CSC2"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/erlm445qvunmvoda",
                "KeyAttributes": {
                    "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY",
                    "KeyClass": "SYMMETRIC_KEY",
                    "KeyAlgorithm": "TDES_2KEY",
                    "KeyModesOfUse": {
                        "Encrypt": false,
                        "Decrypt": false,
                        "Wrap": false,
                        "Unwrap": false,
                        "Generate": true,
                        "Sign": false,
                        "Verify": true,
                        "DeriveKey": false,
                        "NoRestrictions": false
                    }
                },
                "KeyCheckValue": "BF1077",
                "KeyCheckValueAlgorithm": "ANSI_X9_24",
                "Enabled": true,
                "Exportable": true,
                "KeyState": "CREATE_COMPLETE",
                "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00",
                "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00"
            }
        }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:* 111122223333: key/erlm445qvunmvoda。您需要在下一步中执行该操作。

### 生成一个 CSC2
<a name="use-cases-issuers.networkfunctions.amex.csc2.generate"></a>

在此示例中，我们将生成长 CSC2 度为 4 的。可以生成长度为 3,4 或 5 的 CSC。对于美国运通， PANs 应为 15 位数字，并以 34 或 37 开头。过期日期的格式通常为 YYMM。服务代码可能有所不同-请查看您的手册，但典型值为 000、201 或 702

**Example**  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/erlm445qvunmvoda --primary-account-number=344131234567848 --generation-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=2412,ServiceCode=000}' --validation-data-length 4
```

```
{
"KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/erlm445qvunmvoda",
"KeyCheckValue": "BF1077",
"ValidationData": "3982"
}
```

### 验证 CSC2
<a name="use-cases-issuers.networkfunctions.amex.csc2.validation"></a>

**Example**  
在此示例中，我们将验证 a CSC2。  
如果 AWS 支付密码学能够验证，则会返回 http/200。如果该值未经过验证，它将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-card-validation-data  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/erlm445qvunmvoda --primary-account-number=344131234567848 --verification-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=2412,ServiceCode=000}' --validation-data 3982
```

```
{
"KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/erlm445qvunmvoda",
"KeyCheckValue": "BF1077"
}
```

## ICSC
<a name="use-cases-issuers.networkfunctions.amex.csc3"></a>

iCSC 也被称为静态 CSC 算法，使用 CSC 版本 2 进行计算。该服务可以以 3,4 或 5 位数字的形式提供。

使用服务代码 999 计算联系人卡片的 icSC。使用服务代码 702 计算非接触式卡的 iSCC。

有关所有可用参数，请参阅 API 参考指南中的 [AmexCardSecurityCodeVersion2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_AmexCardSecurityCodeVersion2.html)。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.amex.csc3.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_C0_CARD_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CSC1"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
        "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/7vrybrbvjcvwtunv",
        "KeyAttributes": {
            "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY"
            "KeyAlgorithm": "TDES_2KEY",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyModesOfUse": {
                "Decrypt": false,
                "DeriveKey": false,
                "Encrypt": false,
                "Generate": true,
                "NoRestrictions": false,
                "Sign": false,
                "Unwrap": false,
                "Verify": true,
                "Wrap": false
            },
        },
        "KeyCheckValue": "7121C7",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "Enabled": true,
        "Exportable": true,
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "CreateTimestamp": "2025-01-29T09:19:21.209000-05:00",
        "UsageStartTimestamp": "2025-01-29T09:19:21.192000-05:00"
        }
     }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-1:111122223333: key/7vrybrbvjcvjcvw* tunv。您需要在下一步中执行该操作。

### 生成一个 iSCC
<a name="use-cases-issuers.networkfunctions.amex.icsc.generate"></a>

在此示例中，我们将为使用服务代码 702 的非接触式卡生成长度为 4 的 iCSC。可以生成长度为 3,4 或 5 的 CSC。对于美国运通， PANs 应为 15 位数字，并以 34 或 37 开头。

**Example**  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/7vrybrbvjcvwtunv --primary-account-number=344131234567848 --generation-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=1224,ServiceCode=702}' --validation-data-length 4
```

```
{
    "KeyArn": arn:aws:payment-cryptography:us-east-1:111122223333:key/7vrybrbvjcvwtunv,
    "KeyCheckValue": 7121C7,
    "ValidationData": "2365"
}
```

### 验证 iSCC
<a name="use-cases-issuers.networkfunctions.amex.icsc.validation"></a>

**Example**  
在此示例中，我们将验证 iSCC。  
如果 AWS 支付密码学能够验证，则会返回 http/200。如果该值未经过验证，它将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-card-validation-data  --key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/7vrybrbvjcvwtunv --primary-account-number=344131234567848 --verification-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=1224,ServiceCode=702}' --validation-data 2365
```

```
{
    "KeyArn": arn:aws:payment-cryptography:us-east-1:111122223333:key/7vrybrbvjcvwtunv,
    "KeyCheckValue": 7121C7
}
```

## 3DS AEVV
<a name="use-cases-issuers.networkfunctions.amex.3dsaevv"></a>

3DS AEVV（三维安全账户验证值）用于美国运通三维安全认证。它使用与之相同的算法 CSC2 ，但输入参数不同。到期日期字段应填入不可预测的（随机）数字，服务代码由 AEVV 身份验证结果代码（1 位）加上第二因素身份验证码（2 位数）组成。输出长度应为 3 位数。

有关所有可用参数，请参阅 API 参考指南中的 [AmexCardSecurityCodeVersion2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_AmexCardSecurityCodeVersion2.html)。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.amex.3dsaevv.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_C0_CARD_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"3DS_AEVV"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
        "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kw8djn5qxvfh3ztm",
        "KeyAttributes": {
            "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY"
            "KeyAlgorithm": "TDES_2KEY",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyModesOfUse": {
                "Decrypt": false,
                "DeriveKey": false,
                "Encrypt": false,
                "Generate": true,
                "NoRestrictions": false,
                "Sign": false,
                "Unwrap": false,
                "Verify": true,
                "Wrap": false
            },
        },
        "KeyCheckValue": "8F3A21",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "Enabled": true,
        "Exportable": true,
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "CreateTimestamp": "2025-02-02T10:30:15.209000-05:00",
        "UsageStartTimestamp": "2025-02-02T10:30:15.192000-05:00"
        }
     }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/kw8djn5qxvfh3z* tm。您需要在下一步中执行该操作。

### 生成 3DS AEVV
<a name="use-cases-issuers.networkfunctions.amex.3dsaevv.generate"></a>

在此示例中，我们将生成一个长度为 3 的 3DS AEVV。到期日期字段包含不可预测的（随机）数字（例如 1234），服务代码由 AEVV 身份验证结果代码（1 位数）加上第二因素身份验证码（2 位数）组成，例如 543，其中 5 是身份验证结果代码，43 是第二因素身份验证码。对于美国运通， PANs 应为 15 位数字，并以 34 或 37 开头。

**Example**  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kw8djn5qxvfh3ztm --primary-account-number=344131234567848 --generation-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=1234,ServiceCode=543}' --validation-data-length 3
```

```
{
    "KeyArn": arn:aws:payment-cryptography:us-east-2:111122223333:key/kw8djn5qxvfh3ztm,
    "KeyCheckValue": 8F3A21,
    "ValidationData": "921"
}
```

### 验证 3DS AEVV
<a name="use-cases-issuers.networkfunctions.amex.3dsaevv.validation"></a>

**Example**  
在本示例中，我们将验证 3DS AEVV。  
如果 AWS 支付密码学能够验证，则会返回 http/200。如果该值未经过验证，它将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-card-validation-data  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kw8djn5qxvfh3ztm --primary-account-number=344131234567848 --verification-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=1234,ServiceCode=543}' --validation-data 921
```

```
{
    "KeyArn": arn:aws:payment-cryptography:us-east-2:111122223333:key/kw8djn5qxvfh3ztm,
    "KeyCheckValue": 8F3A21
}
```

# JCB 特定函数
<a name="use-cases-issuers.networkfunctions.jcb"></a>

**Topics**
+ [ARQC- CVN04](#use-cases-issuers.networkfunctions.jcb.cvn04)
+ [ARQC- CVN01](#use-cases-issuers.networkfunctions.jcb.cvn01)

## ARQC- CVN04
<a name="use-cases-issuers.networkfunctions.jcb.cvn04"></a>

JCB CVN04 使用 [CSK 方法进行密钥派生](use-cases-issuers.generalfunctions.arqc.md)。有关构造交易数据字段的详细信息，请参阅方案文档。

## ARQC- CVN01
<a name="use-cases-issuers.networkfunctions.jcb.cvn01"></a>

CVN01 是 EMV 交易的较旧 JCB 方法，它使用每卡密钥派生而不是会话（每笔交易）派生，并且还使用不同的有效负载。Visa也使用此消息，因此元素名称具有该名称，尽管它也用于JCB。有关有效载荷内容的信息，请联系计划文档。

### 创建密钥
<a name="use-cases-issuers.networkfunctions.jcb.cvn01.setup"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{DeriveKey=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CVN10"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

响应会回显请求参数，包括后续调用的 ARN 以及密钥检查值 (KCV)。

```
{
                        "Key": {
                            "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
                            "KeyAttributes": {
                                "KeyUsage": "TR31_E0_EMV_MKEY_APP_CRYPTOGRAMS",
                                "KeyClass": "SYMMETRIC_KEY",
                                "KeyAlgorithm": "TDES_2KEY",
                                "KeyModesOfUse": {
                                    "Encrypt": false,
                                    "Decrypt": false,
                                    "Wrap": false,
                                    "Unwrap": false,
                                    "Generate": false,
                                    "Sign": false,
                                    "Verify": false,
                                    "DeriveKey": true,
                                    "NoRestrictions": false
                                }
                            },
                            "KeyCheckValue": "08D7B4",
                            "KeyCheckValueAlgorithm": "ANSI_X9_24",
                            "Enabled": true,
                            "Exportable": true,
                            "KeyState": "CREATE_COMPLETE",
                            "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                            "CreateTimestamp": "2024-03-07T06:41:46.648000-07:00",
                            "UsageStartTimestamp": "2024-03-07T06:41:46.626000-07:00"
                        }
                    }
```

注意代表密钥的那个`KeyArn`，例如 *arn: aws: payment-cryptography: us-east-2:111122223333: key/pw3s6nl62* t5ushfk。您需要在下一步中执行该操作。

### 验证 ARQC
<a name="use-cases-issuers.networkfunctions.jcb.cvn01.validation"></a>

**Example**  
在此示例中，我们将验证使用 JCB 生成的 ARQC。 CVN01它使用与 Visa 方法相同的选项，因此是参数的名称。  
如果 AWS 支付密码学能够验证 ARQC，则会返回 http/200。如果 arqc 未经过验证，将返回 http/400 响应。  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram D791093C8A921769 \
              --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \
              --major-key-derivation-mode EMV_OPTION_A \ 
              --transaction-data 00000000170000000000000008400080008000084016051700000000093800000B03011203000000 \
              --session-key-derivation-attributes='{"Visa":{"PanSequenceNumber":"01" \ 
              ,"PrimaryAccountNumber":"9137631040001422"}}'
```

```
{
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
                "KeyCheckValue": "08D7B4"
              }
```