

# AWS CLI를 사용한 AWS Payment Cryptography 데이터 플레인 예시
<a name="cli_payment-cryptography-data_code_examples"></a>

다음 코드 예시는 AWS Payment Cryptography 데이터 플레인과 함께 AWS Command Line Interface를 사용하여 작업을 수행하고 일반적인 시나리오를 구현하는 방법을 보여줍니다.

*작업*은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 개별 서비스 함수를 직접적으로 호출하는 방법을 보여주며 관련 시나리오의 컨텍스트에 맞는 작업을 볼 수 있습니다.

각 예시에는 전체 소스 코드에 대한 링크가 포함되어 있으며, 여기에서 컨텍스트에 맞춰 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있습니다.

**Topics**
+ [작업](#actions)

## 작업
<a name="actions"></a>

### `decrypt-data`
<a name="payment-cryptography-data_DecryptData_cli_topic"></a>

다음 코드 예시에서는 `decrypt-data`의 사용 방법을 보여줍니다.

**AWS CLI**  
**사이퍼텍스트 복호화**  
다음 `decrypt-data` 예시에서는 대칭 키를 사용하여 사이퍼텍스트 데이터를 복호화합니다. 이 작업을 수행하려면 키의 `KeyModesOfUse`을 `Decrypt`로 설정하고 `KeyUsage`를 `TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY`로 설정해야 합니다.  

```
aws payment-cryptography-data decrypt-data \
    --key-identifier arn:aws:payment-cryptography:us-east-2:123456789012:key/kwapwa6qaifllw2h \
    --cipher-text 33612AB9D6929C3A828EB6030082B2BD \
    --decryption-attributes 'Symmetric={Mode=CBC}'
```
출력:  

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:123456789012:key/kwapwa6qaifllw2h",
    "KeyCheckValue": "71D7AE",
    "PlainText": "31323334313233343132333431323334"
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [데이터 복호화](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/decrypt-data.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [DecryptData](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/decrypt-data.html)를 참조하세요.

### `encrypt-data`
<a name="payment-cryptography-data_EncryptData_cli_topic"></a>

다음 코드 예시에서는 `encrypt-data`의 사용 방법을 보여줍니다.

**AWS CLI**  
**데이터 암호화**  
다음 `encrypt-data` 예시에서는 대칭 키를 사용하여 일반 텍스트 데이터를 암호화합니다. 이 작업을 수행하려면 키의 `KeyModesOfUse`을 `Encrypt`로 설정하고 `KeyUsage`를 `TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY`로 설정해야 합니다.  

```
aws payment-cryptography-data encrypt-data \
    --key-identifier arn:aws:payment-cryptography:us-east-2:123456789012:key/kwapwa6qaifllw2h \
    --plain-text 31323334313233343132333431323334 \
    --encryption-attributes 'Symmetric={Mode=CBC}'
```
출력:  

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:123456789012:key/kwapwa6qaifllw2h",
    "KeyCheckValue": "71D7AE",
    "CipherText": "33612AB9D6929C3A828EB6030082B2BD"
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [데이터 암호화](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/encrypt-data.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [EncryptData](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/encrypt-data.html)를 참조하세요.

### `generate-card-validation-data`
<a name="payment-cryptography-data_GenerateCardValidationData_cli_topic"></a>

다음 코드 예시에서는 `generate-card-validation-data`의 사용 방법을 보여줍니다.

**AWS CLI**  
**CVV 생성**  
다음 `generate-card-validation-data` 예시에서는 CVV/CVV2를 생성합니다.  

```
aws payment-cryptography-data generate-card-validation-data \
    --key-identifier arn:aws:payment-cryptography:us-east-2:123456789012:key/kwapwa6qaifllw2h \
    --primary-account-number=171234567890123 \
    --generation-attributes CardVerificationValue2={CardExpiryDate=0123}
```
출력:  

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:123456789012:key/kwapwa6qaifllw2h",
    "KeyCheckValue": "CADDA1",
    "ValidationData": "801"
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [카드 데이터 생성](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/generate-card-data.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GenerateCardValidationData](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/generate-card-validation-data.html)를 참조하세요.

### `generate-mac`
<a name="payment-cryptography-data_GenerateMac_cli_topic"></a>

다음 코드 예시에서는 `generate-mac`의 사용 방법을 보여줍니다.

**AWS CLI**  
**MAC 생성**  
다음 `generate-card-validation-data` 예시에서는 HMAC\$1SHA256 알고리즘과 HMAC 암호화 키를 사용하여 카드 데이터 인증을 위한 해시 기반 메시지 인증 코드(HMAC)를 생성합니다. 키의 `KeyModesOfUse`을 `TR31_M7_HMAC_KEY`로 설정하고 `KeyUsage`를 `Generate`로 설정해야 합니다.  

```
aws payment-cryptography-data generate-mac \
    --key-identifier arn:aws:payment-cryptography:us-east-2:123456789012:key/kwapwa6qaifllw2h \
    --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \
    --generation-attributes Algorithm=HMAC_SHA256
```
출력:  

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:123456789012:key/kwapwa6qaifllw2h,
    "KeyCheckValue": "2976E7",
    "Mac": "ED87F26E961C6D0DDB78DA5038AA2BDDEA0DCE03E5B5E96BDDD494F4A7AA470C"
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [MAC 생성](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/generate-mac.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GenerateMac](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/generate-mac.html)을 참조하세요.

### `generate-pin-data`
<a name="payment-cryptography-data_GeneratePinData_cli_topic"></a>

다음 코드 예시에서는 `generate-pin-data`의 사용 방법을 보여줍니다.

**AWS CLI**  
**PIN 생성**  
다음 `generate-card-validation-data` 예시에서는 Visa PIN 체계를 사용하여 새 무작위 PIN을 생성합니다.  

```
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"
    }
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [PIN 데이터 생성](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/generate-pin-data.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [GeneratePinData](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/generate-pin-data.html)를 참조하세요.

### `re-encrypt-data`
<a name="payment-cryptography-data_ReEncryptData_cli_topic"></a>

다음 코드 예시에서는 `re-encrypt-data`의 사용 방법을 보여줍니다.

**AWS CLI**  
**다른 키로 데이터 다시 암호화**  
다음 `re-encrypt-data` 예시에서는 AES 대칭 키를 사용하여 암호화된 사이퍼텍스트를 복호화하고 Derived Unique Key Per Transaction(DUKPT) 키를 사용하여 다시 암호화합니다.  

```
aws payment-cryptography-data re-encrypt-data \
    --incoming-key-identifier arn:aws:payment-cryptography:us-west-2:111122223333:key/hyvv7ymboitd4vfy \
    --outgoing-key-identifier arn:aws:payment-cryptography:us-west-2:111122223333:key/jl6ythkcvzesbxen \
    --cipher-text 4D2B0BDBA192D5AEFEAA5B3EC28E4A65383C313FFA25140101560F75FE1B99F27192A90980AB9334 \
    --incoming-encryption-attributes "Dukpt={Mode=ECB,KeySerialNumber=0123456789111111}" \
    --outgoing-encryption-attributes '{"Symmetric": {"Mode": "ECB"}}'
```
출력:  

```
{
    "CipherText": "F94959DA30EEFF0C035483C6067667CF6796E3C1AD28C2B61F9CFEB772A8DD41C0D6822931E0D3B1",
    "KeyArn": "arn:aws:payment-cryptography:us-west-2:111122223333:key/jl6ythkcvzesbxen",
    "KeyCheckValue": "2E8CD9"
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [데이터 암호화 및 복호화](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/crypto-ops.encryptdecrypt.html)를 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [ReEncryptData](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/re-encrypt-data.html)를 참조하세요.

### `translate-pin-data`
<a name="payment-cryptography-data_TranslatePinData_cli_topic"></a>

다음 코드 예시에서는 `translate-pin-data`의 사용 방법을 보여줍니다.

**AWS CLI**  
**PIN 데이터 변환**  
다음 `translate-pin-data` 예시에서는 ISO 0 PIN 블록을 사용하는 PEK TDES 암호화의 PIN을 DUKPT 알고리즘을 사용하는 AES ISO 4 PIN 블록으로 변환합니다.  

```
aws payment-cryptography-data translate-pin-data \
    --encrypted-pin-block "AC17DC148BDA645E" \
    --incoming-translation-attributes=IsoFormat0='{PrimaryAccountNumber=171234567890123}' \
    --incoming-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt \
    --outgoing-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/4pmyquwjs3yj4vwe \
    --outgoing-translation-attributes IsoFormat4="{PrimaryAccountNumber=171234567890123}" \
    --outgoing-dukpt-attributes KeySerialNumber="FFFF9876543210E00008"
```
출력:  

```
{
    "PinBlock": "1F4209C670E49F83E75CC72E81B787D9",
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt
    "KeyCheckValue": "7CC9E2"
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [PIN 데이터 변환](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/translate-pin-data.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [TranslatePinData](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/translate-pin-data.html)를 참조하세요.

### `verify-auth-request-cryptogram`
<a name="payment-cryptography-data_VerifyAuthRequestCryptogram_cli_topic"></a>

다음 코드 예시에서는 `verify-auth-request-cryptogram`의 사용 방법을 보여줍니다.

**AWS CLI**  
**승인 요청 확인**  
다음 `verify-auth-request-cryptogram` 예시에서는 승인 요청 암호문(ARQC)을 확인합니다.  

```
aws payment-cryptography-data verify-auth-request-cryptogram \
    --auth-request-cryptogram F6E1BD1E6037FB3E \
    --auth-response-attributes '{"ArpcMethod1": {"AuthResponseCode": "1111"}}' \
    --key-identifier arn:aws:payment-cryptography:us-west-2:111122223333:key/pboipdfzd4mdklya \
    --major-key-derivation-mode "EMV_OPTION_A" \
    --session-key-derivation-attributes '{"EmvCommon": {"ApplicationTransactionCounter": "1234","PanSequenceNumber": "01","PrimaryAccountNumber": "471234567890123"}}' \
    --transaction-data "123456789ABCDEF"
```
출력:  

```
{
    "AuthResponseValue": "D899B8C6FBF971AA",
    "KeyArn": "arn:aws:payment-cryptography:us-west-2:111122223333:key/pboipdfzd4mdklya",
    "KeyCheckValue": "985792"
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [승인 요청 암호문(ARQC) 확인](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/data-operations.verifyauthrequestcryptogram.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [VerifyAuthRequestCryptogram](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/verify-auth-request-cryptogram.html)을 참조하세요.

### `verify-card-validation-data`
<a name="payment-cryptography-data_VerifyCardValidationData_cli_topic"></a>

다음 코드 예시에서는 `verify-card-validation-data`의 사용 방법을 보여줍니다.

**AWS CLI**  
**CVV 확인**  
다음 `verify-card-validation-data` 예시에서는 PAN에 대한 CVV/CVV2를 확인합니다.  

```
aws payment-cryptography-data verify-card-validation-data \
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \
    --primary-account-number=171234567890123 \
    --verification-attributes CardVerificationValue2={CardExpiryDate=0123} \
    --validation-data 801
```
출력:  

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "CADDA1"
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [카드 데이터 확인](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/verify-card-data.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [VerifyCardValidationData](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/verify-card-validation-data.html)를 참조하세요.

### `verify-mac`
<a name="payment-cryptography-data_VerifyMac_cli_topic"></a>

다음 코드 예시에서는 `verify-mac`의 사용 방법을 보여줍니다.

**AWS CLI**  
**MAC 확인**  
다음 `verify-mac` 예시에서는 HMAC\$1SHA256 알고리즘과 HMAC 암호화 키를 사용하여 카드 데이터 인증을 위한 해시 기반 메시지 인증 코드(HMAC)를 확인합니다.  

```
aws payment-cryptography-data verify-mac \
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 \
    --message-data "3b343038383439303031303733393431353d32343038323236303030373030303f33" \
    --verification-attributes='Algorithm=HMAC_SHA256' \
    --mac ED87F26E961C6D0DDB78DA5038AA2BDDEA0DCE03E5B5E96BDDD494F4A7AA470C
```
출력:  

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6,
    "KeyCheckValue": "2976E7",
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [MAC 확인](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/verify-mac.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [VerifyMac](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/verify-mac.html)을 참조하세요.

### `verify-pin-data`
<a name="payment-cryptography-data_VerifyPinData_cli_topic"></a>

다음 코드 예시에서는 `verify-pin-data`의 사용 방법을 보여줍니다.

**AWS CLI**  
**PIN 확인**  
다음 `verify-pin-data` 예시에서는 PAN의 PIN을 확인합니다.  

```
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",
}
```
자세한 내용은 *AWS Payment Cryptography 사용자 안내서*의 [PIN 데이터 확인](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/verify-pin-data.html)을 참조하세요.  
+  API 세부 정보는 *AWS CLI 명령 참조*의 [VerifyPinData](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/payment-cryptography-data/verify-pin-data.html)를 참조하세요.