

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Genera e verifica un MAC EMV
<a name="use-cases-issuers.generalfunctions.emvmac"></a>

EMV MAC è un MAC che utilizza l'input di una chiave derivata EMV e quindi esegue un MAC ISO9797 -3 (Retail) sui dati risultanti. EMV MAC viene in genere utilizzato per inviare comandi a una scheda EMV, ad esempio per sbloccare gli script. 

**Nota**  
 AWS La crittografia dei pagamenti non convalida il contenuto dello script. Consultate il manuale dello schema o della carta per i dettagli sui comandi specifici da includere. 

Per ulteriori informazioni, [MacAlgorithmEmv](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_MacAlgorithmEmv.html)consulta la guida alle API.

**Topics**
+ [Crea la chiave](#use-cases-issuers.generalfunctions.emvmac.setup)
+ [Genera un MAC EMV](#use-cases-issuers.generalfunctions.emvmac.generate)

## Crea la chiave
<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"}]'
```

La risposta richiama i parametri della richiesta, tra cui un ARN per le chiamate successive e un Key Check Value (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"
        }
    }
```

*Prendi nota di `KeyArn` ciò che rappresenta la chiave, ad esempio arn:aws:payment-cryptography:us-east- 2:111122223333:key/pw3s6nl62t5ushfk.* Ne hai bisogno nel passaggio successivo.

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

Il flusso tipico prevede che un processo di backend generi uno script EMV (ad esempio card unblock), lo firmi utilizzando questo comando (che ricava una chiave monouso specifica per una scheda particolare) e quindi restituisca il MAC. Quindi il comando \$1 MAC viene inviato alla scheda da applicare. L'invio del comando alla carta non rientra nell'ambito della crittografia dei AWS pagamenti. 

**Nota**  
 Questo comando è destinato ai comandi quando non vengono inviati dati crittografati (come il PIN). EMV Encrypt può essere combinato con questo comando per aggiungere dati crittografati allo script dell'emittente prima di richiamare questo comando 

Dati dei messaggi  
I dati del messaggio includono l'intestazione e il comando APDU. Sebbene ciò possa variare in base all'implementazione, questo esempio è l'intestazione APDU per unblock (84 24 00 00 08), seguita da ATC (0007) e quindi ARQC della transazione precedente (999E57 F47CACE). FD0 Il servizio non convalida il contenuto di questo campo.

Modalità di derivazione della chiave di sessione  
Questo campo definisce come viene generata la chiave di sessione. EMV\$1COMMON\$1SESSION\$1KEY viene generalmente utilizzato per le nuove implementazioni, mentre è possibile utilizzare anche EMV2000 \$1 AMEX \$1 MASTERCARD\$1SESSION\$1KEY \$1 VISA. 

MajorKeyDerivationMode  
EMV definisce la modalità A, B o C. La modalità A è la più comune e la crittografia dei pagamenti attualmente supporta la modalità A o la modalità B. AWS 

PAN  
Il numero di conto, generalmente disponibile nel campo del chip 5A o nel ISO8583 campo 2, ma può anche essere recuperato dal sistema della carta.

PSN  
Il numero di sequenza della carta. Se non viene utilizzato, immettere 00.

SessionKeyDerivationValue  
Si tratta dei dati di derivazione per sessione. Può essere l'ultimo ARQC (ApplicationCryptogram) dal campo 9F26 o l'ultimo ATC da 9F36 a seconda dello schema di derivazione.

Padding  
Il padding viene applicato automaticamente e utilizza il metodo di riempimento 9797-1 2. ISO/IEC 

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