

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Fungsi Umum
<a name="use-cases-issuers.generalfunctions"></a>

**Topics**
+ [Hasilkan pin acak dan PVV terkait lalu verifikasi nilainya](use-cases-issuers.generalfunctions.pvv.md)
+ [Menghasilkan atau memverifikasi CVV untuk kartu tertentu](use-cases-issuers.generalfunctions.cvv.md)
+ [Menghasilkan atau memverifikasi CVV2 untuk kartu tertentu](use-cases-issuers.generalfunctions.cvv2.md)
+ [Buat atau verifikasi iCVV untuk kartu tertentu](use-cases-issuers.generalfunctions.icvv.md)
+ [Verifikasi EMV ARQC dan hasilkan ARPC](use-cases-issuers.generalfunctions.arqc.md)
+ [Hasilkan dan Verifikasi EMV MAC](use-cases-issuers.generalfunctions.emvmac.md)
+ [Hasilkan EMV MAC untuk Perubahan PIN](use-cases-issuers.generalfunctions.emvpinchange.md)

# Hasilkan pin acak dan PVV terkait lalu verifikasi nilainya
<a name="use-cases-issuers.generalfunctions.pvv"></a>

**Topics**
+ [Buat kunci (s)](#use-cases-issuers.generalfunctions.pvv.setup)
+ [Hasilkan pin acak, hasilkan PVV dan kembalikan PIN dan PVV terenkripsi](#use-cases-issuers.generalfunctions.pvv.generate)
+ [Validasi PIN terenkripsi menggunakan metode PVV](#use-cases-issuers.generalfunctions.pvv.verify)

## Buat kunci (s)
<a name="use-cases-issuers.generalfunctions.pvv.setup"></a>

Untuk menghasilkan pin acak dan [PVV](terminology.md#terms.pvv), Anda memerlukan dua kunci, Kunci [Verifikasi Pin (PVK) untuk menghasilkan PVV dan Kunci](terminology.md#terms.pvk) Enkripsi Pin untuk [mengenkripsi pin](terminology.md#terms.pek). Pin itu sendiri dihasilkan secara acak dengan aman di dalam layanan dan tidak terkait dengan salah satu kunci secara kriptografi. 

PGK harus menjadi kunci algoritma TDES\$12KEY berdasarkan algoritma PVV itu sendiri. PEK dapat berupa TDES\$12KEY, TDES\$13KEY atau AES\$1128. Dalam hal ini, karena PEK ditujukan untuk penggunaan internal dalam sistem Anda, AES\$1128 akan menjadi pilihan yang baik. Jika PEK digunakan untuk pertukaran dengan sistem lain (misalnya jaringan kartu, pengakuisisi, ATMs) atau sedang dipindahkan sebagai bagian dari migrasi, TDES\$12KEY mungkin menjadi pilihan yang lebih tepat untuk alasan kompatibilitas. 

### Buat 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"}]'
```

Respons menggemakan kembali parameter permintaan, termasuk ARN untuk panggilan berikutnya serta Nilai Pemeriksaan Kunci (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"
               }
           }
```

Perhatikan `KeyArn` yang mewakili kunci, misalnya *arn:aws:payment-cryptography:us-east- 2:111122223333:key/ivi5ksfsuplneuyt*. Anda membutuhkannya di langkah berikutnya.

### Buat 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"}]'
```

Respons menggemakan kembali parameter permintaan, termasuk ARN untuk panggilan berikutnya serta Nilai Pemeriksaan Kunci (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"
                  }
              }
```

Perhatikan `KeyArn` yang mewakili kunci, misalnya *arn:aws:payment-cryptography:us-east- 2:111122223333:key/ov6icy4ryas4zcza*. Anda membutuhkannya di langkah berikutnya.

## Hasilkan pin acak, hasilkan PVV dan kembalikan PIN dan PVV terenkripsi
<a name="use-cases-issuers.generalfunctions.pvv.generate"></a>

**Example**  
Dalam contoh ini, kami akan menghasilkan pin 4 digit baru (acak) di mana output akan dienkripsi `PIN block` (. PinData PinBlock) dan a `PVV` (pinData. VerificationValue). Input kuncinya adalah`PAN`, `Pin Verification Key` (juga dikenal sebagai kunci pembuatan pin), `Pin Encryption Key` dan format [Blok PIN](terminology.md#terms.pinblock).   
 Perintah ini mengharuskan kuncinya bertipe`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"
            }
        }
```

## Validasi PIN terenkripsi menggunakan metode PVV
<a name="use-cases-issuers.generalfunctions.pvv.verify"></a>

**Example**  
Dalam contoh ini, kita akan memvalidasi PIN untuk PAN tertentu. PIN biasanya disediakan oleh pemegang kartu atau pengguna selama waktu transaksi untuk validasi dan dibandingkan dengan nilai pada file (input dari pemegang kartu diberikan sebagai nilai terenkripsi dari terminal atau penyedia hulu lainnya). Untuk memvalidasi input ini, nilai berikut juga akan diberikan saat runtime - Pin terenkripsi, kunci yang digunakan untuk mengenkripsi pin input (sering disebut sebagai [IWK](terminology.md#terms.iwk)), `PAN` dan nilai untuk memverifikasi terhadap (baik a atau). `PVV` `PIN offset`   
Jika Kriptografi AWS Pembayaran dapat memvalidasi pin, http/200 dikembalikan. Jika pin tidak divalidasi, itu akan mengembalikan 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",
}
```

# Menghasilkan atau memverifikasi CVV untuk kartu tertentu
<a name="use-cases-issuers.generalfunctions.cvv"></a>

[CVV](terminology.md#terms.cvv) atau CVV1 merupakan nilai yang secara tradisional tertanam dalam strip magnetik kartu. Ini tidak sama dengan CVV2 (terlihat oleh pemegang kartu dan untuk digunakan untuk pembelian online).

Langkah pertama adalah membuat kunci. Untuk tutorial ini, Anda membuat kunci 3DES (2KEY TDES) panjang ganda [CVK](terminology.md#terms.cvk). 

**catatan**  
CVV, CVV2 dan iCVV semuanya menggunakan algoritma yang serupa jika tidak identik tetapi memvariasikan data input. Semua menggunakan jenis kunci yang sama TR31 \$1C0\$1CARD\$1VERIFICATION\$1KEY tetapi disarankan untuk menggunakan kunci terpisah untuk setiap tujuan. Ini dapat dibedakan menggunakan and/or tag alias seperti pada contoh di bawah ini. 

## Buat kuncinya
<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"}]'
```

Respons menggemakan kembali parameter permintaan, termasuk ARN untuk panggilan berikutnya serta Nilai Pemeriksaan Kunci (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"
            }
        }
```

Perhatikan yang mewakili kunci, misalnya `KeyArn` *arn:aws:payment-cryptography:us-east* - 2:111122223333:key/r52o3wbqxyf6qlqr. Anda membutuhkannya di langkah berikutnya.

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

**Example**  
Dalam contoh ini, kami akan menghasilkan [CVV](terminology.md#terms.cvv) untuk PAN tertentu dengan input`PAN`, kode layanan (sebagaimana didefinisikan oleh ISO/IEC 7813) dari 121 dan tanggal kedaluwarsa kartu.   
Untuk semua parameter yang tersedia, lihat [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) di panduan referensi API.   

```
$ 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"
                  }
```

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

**Example**  
Dalam contoh ini, kami akan memverifikasi [CVV](terminology.md#terms.cvv) untuk PAN tertentu dengan input CVK,, kode layanan 121`PAN`, tanggal kedaluwarsa kartu dan CVV yang disediakan selama transaksi untuk divalidasi.   
Untuk semua parameter yang tersedia, lihat, [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) di panduan referensi API.   
CVV bukan nilai yang dimasukkan pengguna (seperti CVV2) tetapi biasanya disematkan pada magstripe. Pertimbangan harus diberikan apakah harus selalu memvalidasi saat disediakan.

```
$ 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"
}
```

# Menghasilkan atau memverifikasi CVV2 untuk kartu tertentu
<a name="use-cases-issuers.generalfunctions.cvv2"></a>

[CVV2](terminology.md#terms.cvv2)adalah nilai yang secara tradisional disediakan di bagian belakang kartu dan digunakan untuk pembelian online. Untuk kartu virtual, mungkin juga ditampilkan di aplikasi atau layar. Secara kriptografis, itu sama dengan CVV1 tetapi dengan nilai kode layanan yang berbeda.

## Buat kuncinya
<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"}]'
```

Respons menggemakan kembali parameter permintaan, termasuk ARN untuk panggilan berikutnya serta Nilai Pemeriksaan Kunci (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"
               }
           }
```

Perhatikan yang mewakili kunci, misalnya `KeyArn` *arn:aws:payment-cryptography:us-east- 2:111122223333:key/7f7g4spf3xcklhzu*. Anda membutuhkannya di langkah berikutnya.

## Menghasilkan CVV2
<a name="use-cases-issuers.generalfunctions.cvv2.generate"></a>

**Example**  
Dalam contoh ini, kami akan menghasilkan [CVV2](terminology.md#terms.cvv2)untuk PAN tertentu dengan input `PAN` dan tanggal kedaluwarsa kartu.   
Untuk semua parameter yang tersedia, lihat [CardVerificationValue2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue2.html) di panduan referensi API.   

```
$ 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"
                     }
```

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

**Example**  
Dalam contoh ini, kami akan memverifikasi PAN yang diberikan dengan input CVK, `PAN` dan tanggal kedaluwarsa kartu dan CVV yang disediakan [CVV2](terminology.md#terms.cvv2)selama transaksi untuk divalidasi.   
Untuk semua parameter yang tersedia, lihat, [CardVerificationValue2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue2.html) di panduan referensi API.   
CVV2 dan input lainnya adalah nilai yang dimasukkan pengguna. Dengan demikian, ini belum tentu merupakan tanda masalah yang gagal divalidasi secara berkala.

```
$ 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"
   }
```

# Buat atau verifikasi iCVV untuk kartu tertentu
<a name="use-cases-issuers.generalfunctions.icvv"></a>

[ICVV](terminology.md#terms.icvv) menggunakan algoritma yang sama dengan CVV2 CVV/tetapi iCVV tertanam di dalam kartu chip. Kode layanannya adalah 999.

## Buat kuncinya
<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"}]'
```

Respons menggemakan kembali parameter permintaan, termasuk ARN untuk panggilan berikutnya serta Nilai Pemeriksaan Kunci (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"
               }
           }
```

Perhatikan yang mewakili kunci, misalnya `KeyArn` *arn:aws:payment-cryptography:us-east- 2:111122223333:key/c7dsi763r6s7lfp3*. Anda membutuhkannya di langkah berikutnya.

## Menghasilkan iCVV
<a name="use-cases-issuers.generalfunctions.icvv.generate"></a>

**Example**  
Dalam contoh ini, kami akan menghasilkan [iCVV](terminology.md#terms.icvv) untuk PAN tertentu dengan input`PAN`, kode layanan (sebagaimana didefinisikan oleh ISO/IEC 7813) dari 999 dan tanggal kedaluwarsa kartu.   
Untuk semua parameter yang tersedia, lihat [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) di panduan referensi API.   

```
$ 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"
                     }
```

## Validasi iCVV
<a name="use-cases-issuers.generalfunctions.icvv.verify"></a>

**Example**  
Untuk validasi, inputnya adalah CVK, kode layanan 999`PAN`, tanggal kedaluwarsa kartu dan iCVV yang disediakan selama transaksi untuk divalidasi.   
Untuk semua parameter yang tersedia, lihat, [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) di panduan referensi API.   
iCVV bukan nilai yang dimasukkan pengguna (seperti CVV2) tetapi biasanya disematkan pada kartu. EMV/chip Pertimbangan harus diberikan apakah harus selalu memvalidasi saat disediakan.

```
$ 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"
   }
```

# Verifikasi EMV ARQC dan hasilkan ARPC
<a name="use-cases-issuers.generalfunctions.arqc"></a>

[ARQC](terminology.md#terms.arqc) (Authorization Request Cryptogram) adalah kriptogram yang dihasilkan oleh kartu EMV (chip) dan digunakan untuk memvalidasi detail transaksi serta penggunaan kartu resmi. Ini menggabungkan data dari kartu, terminal dan transaksi itu sendiri.

Pada waktu validasi di backend, input yang sama diberikan ke Kriptografi AWS Pembayaran, kriptogram dibuat ulang secara internal dan ini dibandingkan dengan nilai yang diberikan dengan transaksi. Dalam hal ini, ini mirip dengan MAC. [EMV 4.4 Buku 2](https://www.emvco.com/specifications/?post_id=80377) mendefinisikan tiga aspek fungsi ini - metode derivasi kunci (dikenal sebagai kunci sesi umum - CSK) untuk menghasilkan kunci transaksi satu kali, muatan minimum dan metode untuk menghasilkan respons (ARPC).

 Skema kartu individu dapat menentukan bidang transaksional tambahan untuk dimasukkan atau urutan bidang tersebut muncul. Skema derivasi spesifik lainnya (umumnya tidak digunakan lagi) juga ada dan tercakup di tempat lain dalam dokumentasi ini. 

Untuk informasi selengkapnya, lihat [VerifyCardValidationData](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyCardValidationData.html)di panduan API.

## Buat kuncinya
<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"}]'
```

Respons menggemakan kembali parameter permintaan, termasuk ARN untuk panggilan berikutnya serta Nilai Pemeriksaan Kunci (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"
                }
            }
```

Perhatikan yang mewakili kunci, misalnya `KeyArn` *arn:aws:payment-cryptography:us-east- 2:111122223333:key/pw3s6nl62t5ushfk*. Anda membutuhkannya di langkah berikutnya.

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

ARQC dihasilkan secara eksklusif oleh kartu EMV. Dengan demikian, Kriptografi AWS Pembayaran tidak memiliki fasilitas untuk menghasilkan muatan seperti itu. Untuk tujuan pengujian, sejumlah perpustakaan tersedia secara online yang dapat menghasilkan muatan yang sesuai serta nilai yang diketahui yang umumnya disediakan oleh berbagai skema. 

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

**Example**  
Jika Kriptografi AWS Pembayaran dapat memvalidasi ARQC, http/200 dikembalikan. ARPC (respons) secara opsional dapat diberikan dan dimasukkan dalam respons setelah ARQC divalidasi.  

```
$ 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"
}
```

# Hasilkan dan Verifikasi EMV MAC
<a name="use-cases-issuers.generalfunctions.emvmac"></a>

EMV MAC adalah MAC menggunakan input dari kunci turunan EMV dan kemudian melakukan ISO9797 -3 (Retail) MAC atas data yang dihasilkan. EMV MAC biasanya digunakan untuk mengirim perintah ke kartu EMV seperti skrip buka blokir. 

**catatan**  
 AWS Kriptografi Pembayaran tidak memvalidasi isi skrip. Silakan berkonsultasi dengan skema atau manual kartu Anda untuk detail tentang perintah tertentu untuk disertakan. 

Untuk informasi selengkapnya, lihat [MacAlgorithmEmv](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_MacAlgorithmEmv.html)di panduan API.

**Topics**
+ [Buat kuncinya](#use-cases-issuers.generalfunctions.emvmac.setup)
+ [Menghasilkan EMV MAC](#use-cases-issuers.generalfunctions.emvmac.generate)

## Buat kuncinya
<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"}]'
```

Respons menggemakan kembali parameter permintaan, termasuk ARN untuk panggilan berikutnya serta Nilai Pemeriksaan Kunci (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"
        }
    }
```

Perhatikan yang mewakili kunci, misalnya `KeyArn` *arn:aws:payment-cryptography:us-east- 2:111122223333:key/pw3s6nl62t5ushfk*. Anda membutuhkannya di langkah berikutnya.

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

Aliran tipikal adalah bahwa proses backend akan menghasilkan skrip EMV (seperti membuka blokir kartu), menandatanganinya menggunakan perintah ini (yang memperoleh kunci satu kali khusus untuk satu kartu tertentu) dan kemudian mengembalikan MAC. Kemudian perintah\$1MAC dikirim ke kartu yang akan diterapkan. Mengirim perintah ke kartu berada di luar cakupan Kriptografi AWS Pembayaran. 

**catatan**  
 Perintah ini dimaksudkan untuk perintah ketika tidak ada data terenkripsi (seperti PIN) yang dikirim. EMV Encrypt dapat dikombinasikan dengan perintah ini untuk menambahkan data terenkripsi ke skrip penerbit sebelum memanggil perintah ini 

Data Pesan  
Data pesan termasuk header dan perintah APDU. Meskipun ini dapat bervariasi berdasarkan implementasi, contoh ini adalah header APDU untuk membuka blokir (84 24 00 00 08), diikuti oleh ATC (0007) dan kemudian ARQC dari transaksi sebelumnya (999E57 F47CACE). FD0 Layanan tidak memvalidasi isi bidang ini.

Mode Derivasi Kunci Sesi  
Bidang ini mendefinisikan bagaimana kunci sesi dihasilkan. EMV\$1COMMON\$1SESSION\$1KEY umumnya digunakan untuk implementasi baru, sedangkan EMV2000 \$1 AMEX \$1 MASTERCARD\$1SESSION\$1KEY \$1 VISA dapat digunakan juga. 

MajorKeyDerivationMode  
EMV Mendefinisikan Mode A, B atau C. Mode A adalah yang paling umum dan Kriptografi AWS Pembayaran saat ini mendukung mode A atau mode B.

PANCI  
Nomor rekening, biasanya tersedia di bidang chip 5A atau ISO8583 bidang 2 tetapi juga dapat diambil dari sistem kartu.

PSN  
Nomor urutan kartu. Jika tidak digunakan, masukkan 00.

SessionKeyDerivationValue  
Ini adalah data derivasi per sesi. Ini bisa berupa ARQC terakhir (ApplicationCryptogram) dari bidang 9F26 atau ATC terakhir dari 9F36 tergantung pada skema derivasi.

Bantalan  
Padding diterapkan secara otomatis dan menggunakan metode 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"
}
```

# Hasilkan EMV MAC untuk Perubahan PIN
<a name="use-cases-issuers.generalfunctions.emvpinchange"></a>

Perubahan PIN EMV menggabungkan dua operasi: menghasilkan MAC untuk skrip penerbit dan mengenkripsi PIN baru untuk perubahan PIN offline pada kartu chip EMV. Perintah ini hanya diperlukan di negara-negara tertentu di mana pin disimpan pada kartu chip (ini umum untuk negara-negara Eropa). Ini biasanya digunakan ketika pemegang kartu perlu mengubah PIN mereka dan PIN baru harus dikirim dengan aman ke kartu bersama dengan MAC untuk memverifikasi keaslian perintah. 

**catatan**  
 Jika Anda hanya perlu mengirim perintah ke kartu tetapi tidak mengubah PIN, pertimbangkan untuk menggunakan perintah [ARPC CSU](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyAuthRequestCryptogram.html) atau [Generate EMV MAC](use-cases-issuers.generalfunctions.emvmac.md) sebagai gantinya. 

Untuk informasi selengkapnya, lihat [GenerateMacEmvPinChange](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMacEmvPinChange.html)di panduan API.

## Hasilkan EMV MAC dan PIN terenkripsi untuk perubahan PIN
<a name="use-cases-issuers.generalfunctions.emvpinchange.generate"></a>

Operasi ini memerlukan dua kunci: kunci integritas EMV (: TR31 \$1E2\$1EMV\$1MKEY\$1INTEGRITY) untuk pembuatan MAC dan kunci kerahasiaan EMV (KeyUsage: \$1E4\$1EMV\$1MKEY\$1CONFIDENTIALITY) untuk enkripsi PIN. KeyUsage TR31 Aliran tipikal adalah bahwa proses backend akan menghasilkan skrip perubahan PIN EMV, yang mencakup MAC untuk skrip penerbit dan PIN baru yang dienkripsi. Perintah dan PIN terenkripsi kemudian dikirim ke kartu untuk memperbarui PIN offline. Mengirim perintah ke kartu berada di luar cakupan Kriptografi AWS Pembayaran. 

Data Pesan  
Data pesan termasuk perintah APDU untuk skrip penerbit. Layanan tidak memvalidasi isi bidang ini.

Blok PIN Terenkripsi Baru  
Blok PIN terenkripsi baru yang akan dikirim ke kartu. Ini harus disediakan sebagai nilai terenkripsi menggunakan kunci enkripsi PIN.

Pengenal PIN PEK Baru  
Kunci yang digunakan untuk mengenkripsi PIN baru sebelum diteruskan ke API ini.

Kunci Integritas Pesan Aman  
Kunci integritas EMV (KeyUsage: TR31 \$1E2\$1EMV\$1MKEY\$1INTEGRITY) digunakan untuk pembuatan MAC.

Kunci Kerahasiaan Pesan Aman  
Kunci kerahasiaan EMV (KeyUsage: TR31 \$1E4\$1EMV\$1MKEY\$1CONFIDENTIALITY) digunakan untuk enkripsi PIN.

MajorKeyDerivationMode  
EMV mendefinisikan Mode A, B, atau C. Mode A adalah yang paling umum dan Kriptografi AWS Pembayaran saat ini mendukung mode A atau mode B.

Modus  
Mode enkripsi, biasanya CBC untuk operasi perubahan PIN.

PANCI  
Nomor rekening, biasanya tersedia di bidang chip 5A atau ISO8583 bidang 2 tetapi juga dapat diambil dari sistem kartu.

PanSequenceNumber  
Nomor urutan kartu. Jika tidak digunakan, masukkan 00.

ApplicationCryptogram  
Ini adalah data derivasi per sesi, biasanya ARQC terakhir dari bidang 9F26.

PinBlockLengthPosition  
Menentukan di mana panjang blok PIN dikodekan. Biasanya diatur ke NONE. Periksa spesifikasi skema kartu Anda jika Anda tidak yakin.

PinBlockPaddingType  
Menentukan jenis padding untuk blok PIN. Biasanya diatur ke NO\$1PADDING. Periksa spesifikasi skema kartu Anda jika Anda tidak yakin.

**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"
}
```