/AWS1/IF_PCD=>GENERATEMAC()¶
About GenerateMac¶
Generates a Message Authentication Code (MAC) cryptogram within Amazon Web Services Payment Cryptography.
You can use this operation to authenticate card-related data by using known data values to generate MAC for data validation between the sending and receiving parties. This operation uses message data, a secret encryption key and MAC algorithm to generate a unique MAC value for transmission. The receiving party of the MAC must use the same message data, secret encryption key and MAC algorithm to reproduce another MAC value for comparision.
You can use this operation to generate a DUPKT, CMAC, HMAC or EMV MAC by setting generation attributes and algorithm to the associated values. The MAC generation encryption key must have valid values for KeyUsage such as TR31_M7_HMAC_KEY for HMAC generation, and the key must have KeyModesOfUse set to Generate and Verify.
For information about valid keys for this operation, see Understanding key attributes and Key types for specific data operations in the Amazon Web Services Payment Cryptography User Guide.
Cross-account use: This operation can't be used across different Amazon Web Services accounts.
Related operations:
Method Signature¶
METHODS /AWS1/IF_PCD~GENERATEMAC
IMPORTING
!IV_KEYIDENTIFIER TYPE /AWS1/PCDKEYARNORKEYALIASTYPE OPTIONAL
!IV_MESSAGEDATA TYPE /AWS1/PCDMESSAGEDATATYPE OPTIONAL
!IO_GENERATIONATTRIBUTES TYPE REF TO /AWS1/CL_PCDMACATTRIBUTES OPTIONAL
!IV_MACLENGTH TYPE /AWS1/PCDINTEGERRANGEBETWEEN01 OPTIONAL
RETURNING
VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_pcdgeneratemacoutput
RAISING
/AWS1/CX_PCDACCESSDENIEDEX
/AWS1/CX_PCDINTERNALSERVEREX
/AWS1/CX_PCDRESOURCENOTFOUNDEX
/AWS1/CX_PCDTHROTTLINGEX
/AWS1/CX_PCDVALIDATIONEX
/AWS1/CX_PCDCLIENTEXC
/AWS1/CX_PCDSERVEREXC
/AWS1/CX_RT_TECHNICAL_GENERIC
/AWS1/CX_RT_SERVICE_GENERIC.
IMPORTING¶
Required arguments:¶
iv_keyidentifier TYPE /AWS1/PCDKEYARNORKEYALIASTYPE /AWS1/PCDKEYARNORKEYALIASTYPE¶
The
keyARNof the MAC generation encryption key.
iv_messagedata TYPE /AWS1/PCDMESSAGEDATATYPE /AWS1/PCDMESSAGEDATATYPE¶
The data for which a MAC is under generation. This value must be hexBinary.
io_generationattributes TYPE REF TO /AWS1/CL_PCDMACATTRIBUTES /AWS1/CL_PCDMACATTRIBUTES¶
The attributes and data values to use for MAC generation within Amazon Web Services Payment Cryptography.
Optional arguments:¶
iv_maclength TYPE /AWS1/PCDINTEGERRANGEBETWEEN01 /AWS1/PCDINTEGERRANGEBETWEEN01¶
The length of a MAC under generation.
RETURNING¶
oo_output TYPE REF TO /aws1/cl_pcdgeneratemacoutput /AWS1/CL_PCDGENERATEMACOUTPUT¶
Domain /AWS1/RT_ACCOUNT_ID Primitive Type NUMC
Examples¶
Syntax Example¶
This is an example of the syntax for calling the method. It includes every possible argument and initializes every possible value. The data provided is not necessarily semantically accurate (for example the value "string" may be provided for something that is intended to be an instance ID, or in some cases two arguments may be mutually exclusive). The syntax shows the ABAP syntax for creating the various data structures.
DATA(lo_result) = lo_client->generatemac(
io_generationattributes = new /aws1/cl_pcdmacattributes(
io_dukptcmac = new /aws1/cl_pcdmacalgorithmdukpt(
iv_dukptderivationtype = |string|
iv_dukptkeyvariant = |string|
iv_keyserialnumber = |string|
)
io_dukptiso9797algorithm1 = new /aws1/cl_pcdmacalgorithmdukpt(
iv_dukptderivationtype = |string|
iv_dukptkeyvariant = |string|
iv_keyserialnumber = |string|
)
io_dukptiso9797algorithm3 = new /aws1/cl_pcdmacalgorithmdukpt(
iv_dukptderivationtype = |string|
iv_dukptkeyvariant = |string|
iv_keyserialnumber = |string|
)
io_emvmac = new /aws1/cl_pcdmacalgorithmemv(
io_sessionkeyderivationvalue = new /aws1/cl_pcdsesskeyderivatio00(
iv_applicationcryptogram = |string|
iv_applicationtransactcnter = |string|
)
iv_majorkeyderivationmode = |string|
iv_pansequencenumber = |string|
iv_primaryaccountnumber = |string|
iv_sessionkeyderivationmode = |string|
)
iv_algorithm = |string|
)
iv_keyidentifier = |string|
iv_maclength = 123
iv_messagedata = |string|
).
This is an example of reading all possible response values
lo_result = lo_result.
IF lo_result IS NOT INITIAL.
lv_keyarn = lo_result->get_keyarn( ).
lv_keycheckvalue = lo_result->get_keycheckvalue( ).
lv_macoutputtype = lo_result->get_mac( ).
ENDIF.