Operaciones de transferencia electrónica de fondos.
Consulte la documentación técnica del HSM.
Definiciones y macros | |
#define | DN_CALC_ARPC_EMV_4_2_M1_ICC (1) |
#define | DN_CALC_ARPC_EMV_4_2_M1_SK (2) |
#define | DN_CALC_ARPC_EMV_4_2_M2 (3) |
#define | DN_EFT_AES_KCV_TYPE_CMAC (1) |
#define | DN_EFT_GET_KCV_TYPE_X9_24 (1) |
#define | DN_EFT_GET_KCV_TYPE_CMAC (2) |
#define | DN_EXP_ZPK_FLAG_FULL_CKS (1) |
#define | DN_EFT_GET_KCV_MAX_LEN (3) |
#define | DN_EFT_GEN_OFFLINE_KCV_TYPE_X9_24 (1) |
#define | DN_EFT_GEN_OFFLINE_KCV_TYPE_CMAC (2) |
#define | DN_EFT_KCV_TYPE_X9_24_LEN (3) |
#define | DN_EFT_KCV_TYPE_CMAC_LEN (3) |
Funciones | |
int AAP_API | DPINBlockTranslate(HSESSIONCTX hSession, char *szSrcPEK, char *szDstPEK, BYTE bTransBlockType, char *szPAN, BYTE *pbInPinBlock, BYTE *pbOutPinBlock, DWORD dwParam) |
int AAP_API | DGenerateCVV(HSESSIONCTX hSession, char *szKeyId, char *szPAN, char *szExpirationDate, char *szServiceCode, char *szCVV, DWORD dwParam) |
int AAP_API | DVerifyCVV(HSESSIONCTX hSession, char *szKeyId, char *szPAN, char *szExpirationDate, char *szServiceCode, char *szCVV, DWORD dwParam) |
int AAP_API | DGeneratePIN(HSESSIONCTX hSession, char *szPGK, char *szPAN, DWORD dwOperation, int nPinLen, char *szInPin, char *szOffset, char *szOutPin, DWORD dwParam) |
int AAP_API | DVerifyPINBlock(HSESSIONCTX hSession, char *szPTK, char *szPGK, char *szPAN, char *szOffset, BYTE *pbInPinBlock, DWORD dwParam) |
int AAP_API | DEFTCheckKeyParts (int nKeyAlgId, EFT_VISA_KEY_PARTS *pstKeyParts, DWORD dwParam) |
int AAP_API | DGenerateDUKPT(HSESSIONCTX hSession, BYTE *pbKSI, BYTE *pbDID_CTR, char *szDUKPT, DWORD dwParam) |
void AAP_API | DGenerateBDKName(BYTE *pbKSI, char *szBDKName, DWORD dwParam) |
void AAP_API | DGenerateDUKPTName(BYTE *pbKSI, BYTE *pbDID_CTR, char *szDUKPTName, DWORD dwParam) |
int AAP_API | DGeneratePVV(HSESSIONCTX hSession, char *szPGK, BYTE bPVKI, char *szPAN, char *szPIN, char *szPVV, DWORD dwParam) |
int AAP_API | DGenerateDAC(HSESSIONCTX hSession, char *szIMKDAC, char *szPAN, BYTE *pbSEQ, BYTE *pbDAC, DWORD dwParam) |
int AAP_API | DVerifyDAC(HSESSIONCTX hSession, char *szIMKDAC, char *szPAN, BYTE *pbSEQ, BYTE *pbDAC, DWORD dwParam) |
int AAP_API | DSignSDA(HSESSIONCTX hSession, char *szIK, BYTE *pbDAC, DWORD dwSDA_DATALen, BYTE *pbSDA_DATA, DWORD *pdwSigLen, BYTE *pbSig, DWORD dwParam) |
int AAP_API | DGenerateDDA_ICCCert(HSESSIONCTX hSession, BYTE bOP, char *szIK, char *szPAN, DWORD dwDDA_DATALen, BYTE *pbDDA_DATA, DWORD *pdwSigLen, BYTE *pbSig, DWORD dwParam) |
int AAP_API | DGenerateICCMK(HSESSIONCTX hSession, BYTE bOP, char *szIK, char *szKeK, char *szPAN, BYTE *pbSEQ, DWORD *pdwEnvelopeLen, BYTE *pbEnvelope, DWORD dwParam) |
int AAP_API | DGenerateEMV_HMAC(HSESSIONCTX hSession, BYTE bOP, char *szIK, char *szPAN, BYTE *pbSEQ, BYTE *pbNONCE, DWORD dwDataLen, BYTE *pbData, BYTE *pbMAC, DWORD dwParam) |
int AAP_API | DGenerateEMV_MAC(HSESSIONCTX hSession, BYTE bOP, char *szIK, char *szPAN, BYTE *pbSEQ, BYTE *pbNONCE, DWORD dwDataLen, BYTE *pbData, BYTE *pbMAC, DWORD dwParam) |
int AAP_API | DCheckIDN(HSESSIONCTX hSession, char *szIK, char *szPAN, BYTE *pbSEQ, BYTE *pbATC, BYTE *pbUN, BYTE *pbIDN, DWORD dwParam) |
int AAP_API | DEncryptEMV(HSESSIONCTX hSession, BYTE bEncOP, char *szEncIK, BYTE *pbEncNONCE, BYTE bMacOP, char *szMacIK, BYTE *pbMacNONCE, char *szPAN, BYTE *pbSEQ, DWORD dwDataLen, BYTE *pbData, DWORD *pdwEncDataLen, BYTE *pbEncData, BYTE *pbMAC, DWORD dwParam) |
int AAP_API | DGenerateEMV_CSR(HSESSIONCTX hSession, BYTE bOP, char *szIK, BYTE *pbTrackNum, BYTE *pbServiceID, BYTE *pbIssuerID, BYTE *pbExpDate, DWORD *pdwCSRLen, BYTE *pbCSR, DWORD dwParam) |
int AAP_API | DGenerateEMV_CSREx(HSESSIONCTX hSession, BYTE bOP, char *szIK, BYTE *pbTrackNum, BYTE *pbServiceID, BYTE *pbIssuerID, BYTE *pbExpDate, DBLOB *pdbCSR, BYTE *pbHash, DWORD dwParam) |
int AAP_API | DGenerateEMV_PinBlock(HSESSIONCTX hSession, BYTE bOP, BYTE *pbNONCE, char *szTransportKey, char *szISSUER_MK, char *szISSUER_SMC_MK, char *szPAN, BYTE *pbSEQ, BYTE *pbOLD_PB, BYTE *pbNEW_PB, BYTE *pbOutBlock, DWORD *pdwOutBlockLen, DWORD dwParam) |
int AAP_API | DDeriveEMV_Key(HSESSIONCTX hSession, char *szSrcKey, WORD wBufferLen, BYTE *pbBuffer, BYTE bOP, DWORD dwAttrib, char *szDstKey, HKEYCTX *phKey, DWORD dwParam) |
int AAP_API | DCalculateARPC(HSESSIONCTX hSession, char *szIssuerMK, char *szPAN, BYTE *pbSEQ, BYTE *pbARQC, BYTE *pbARC, BYTE *pbARPC, DWORD dwParam) |
int AAP_API | DCalculateARPC_Ex(HSESSIONCTX hSession, DWORD dwOp, void *pvInData, BYTE *pbARPC, DWORD dwParam) |
int AAP_API | DMAC_ISO9797_1_Met2(DWORD dwType, BYTE *pbKey, DWORD dwAlg, const BYTE *pbMsg, DWORD dwMsgLen, BYTE *pbMAC) |
int AAP_API | DEFTImportKey(HSESSIONCTX hSession, char *szKeyId, int nKeyAlgId, void *pstKeyParts, DWORD dwParam) |
int AAP_API | DEFTExportAESKeyParts(HSESSIONCTX hSession, BYTE bKcvType, const char *szKeyId, void *pvKeyParts, DWORD dwReserved) |
int AAP_API | DEFTExportKey(HSESSIONCTX hSession, BYTE bExportMode, char *szKEKId, char *szKeyId, BYTE *pbEncryptedBlock, DWORD *pdwEncryptedBlockLen, BYTE *pbKeyCheckValue, DWORD dwParam) |
int AAP_API | DEFTKeKImport(HSESSIONCTX hSession, BYTE bOP, DWORD dwAlgId, char *szKeKName, char *szKeyName, DWORD dwAttr, BYTE *pbKCV1, BYTE *pbKCV2, BYTE *pbKCV3, BYTE *pbKCVFinal, BYTE *pbBlob, DWORD dwFlags) |
int AAP_API | DEFTExportZPK(HSESSIONCTX hSession, char *szKeyId, int *pnKeyAlg, int *pnKeySize, EFT_VISA_KEY_PARTS *pstKeyParts, DWORD dwParam) |
int AAP_API | DEFTGetKcv(HSESSIONCTX hSession, BYTE bType, const char *szKeyId, BYTE *pbKcv, DWORD *pdwKcvLen, DWORD dwReserved) |
int AAP_API | DEFTGenKCVOffline(DWORD dwType, int nAlgId, const BYTE *pbKey, DWORD dwKeyLen, BYTE *pbKCV, DWORD *pdwKCVLen, DWORD reserved) |
int AAP_API | DEFTExportTR31(HSESSIONCTX hSession, const char *szKBPK, const char *szKey, void *pvReserved, WORD wUsage, BYTE bMode, BYTE bExport, BYTE *pbOutBlock, DWORD *pdwOutBlockLen, DWORD dwParam) |
int AAP_API | DEFTImportTR31(HSESSIONCTX hSession, const char *szKBPK, const char *szKey, DWORD dwKeyAttributes, BYTE *pbKeyBlock, DWORD dwKeyBlockLen, DWORD dwParam) |
#define DN_CALC_ARPC_EMV_4_2_M1_ICC (1) |
#include <dinamo.h>
#define DN_CALC_ARPC_EMV_4_2_M1_SK (2) |
#include <dinamo.h>
#define DN_CALC_ARPC_EMV_4_2_M2 (3) |
#include <dinamo.h>
#define DN_EFT_AES_KCV_TYPE_CMAC (1) |
#include <dinamo.h>
KCV de tipo CMAC. De conformidad con los "Requisitos de seguridad del PIN" de la PCI.
#define DN_EFT_GET_KCV_TYPE_X9_24 (1) |
#include <dinamo.h>
Exporta una clave AES por partes en formato ANSI X9.24.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||
[in] | bKcvType | Tipo de KCV que se utilizará para la exportación.
| ||||||
[in] | szKeyId | Nombre de la clave a exportar. | ||||||
[out] | pvKeyParts | Puntero a una estructura EFT_AES_KEY_PARTS que contendrá los datos para reconstruir la clave. | ||||||
[in] | dwReserved | Reservado para uso futuro (debe ser 0). |
#define DN_EFT_GET_KCV_TYPE_CMAC (2) |
#include <dinamo.h>
Genera el KCV (Key Check Value) de la clave tal y como se define en los requisitos de seguridad del PIN PCI con un tamaño de 3 bytes.
#define DN_EXP_ZPK_FLAG_FULL_CKS (1) |
#include <dinamo.h>
#define DN_EFT_GET_KCV_MAX_LEN (3) |
#include <dinamo.h>
Tamaño máximo del KCV (Key Check Value) generado.
#define DN_EFT_GEN_OFFLINE_KCV_TYPE_X9_24 (1) |
#include <dinamo.h>
Genera el KCV (Key Check Value) de la clave según se define en ANSI X.9.24 con un tamaño de 3 bytes.
#define DN_EFT_GEN_OFFLINE_KCV_TYPE_CMAC (2) |
#include <dinamo.h>
Genera el KCV (Key Check Value) de la clave tal y como se define en los requisitos de seguridad del PIN PCI con un tamaño de 3 bytes.
#define DN_EFT_KCV_TYPE_X9_24_LEN (3) |
#include <dinamo.h>
Tamaño del KCV (Key Check Value) generado.
#define DN_EFT_KCV_TYPE_CMAC_LEN (3) |
#include <dinamo.h>
Tamaño del KCV (Key Check Value) generado.
int AAP_API DPINBlockTranslate | ( | HSESSIONCTX | hSession, |
char * | szSrcPEK, | ||
char * | szDstPEK, | ||
BYTE | bTransBlockType, | ||
char * | szPAN, | ||
BYTE * | pbInPinBlock, | ||
BYTE * | pbOutPinBlock, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Traduce un bloque PIN, descifrando el bloque con una clave y cifrándolo con otra. El formato del bloque entrante se identifica automáticamente, y el formato del bloque saliente puede ser definido por el llamante, siempre que el cambio de formato no sea de un PAN Unbound a un PAN Bound. Los formatos PAN Bound son aquellos que utilizan información PAN en su composición. Por lo tanto, es posible realizar tanto la traducción de claves como la traducción de formatos. El llamante puede realizar una validación forzada del formato indicando para el formato saliente, el mismo que está utilizando en el Bloque PIN entrante.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||
[in] | szSrcPEK | Identificador de la clave de descifrado dentro del HSM. | ||||||||||||
[in] | szDstPEK | Identificador de la clave de cifrado dentro del HSM. | ||||||||||||
[in] | bTransBlockType | Identificador del formato del bloque de salida. Según la tabla siguiente.
| ||||||||||||
[in] | szPAN | PAN (Número de cuenta principal). | ||||||||||||
[in] | pbInPinBlock | Búfer que contiene el PIN Block de entrada. El búfer debe tener el tamaño de un PIN Block, DES_BLOCK (8 bytes) . | ||||||||||||
[out] | pbOutPinBlock | Búfer que contendrá el PIN Block saliente. El búfer debe tener el tamaño de un PIN Block, DES_BLOCK (8 bytes). | ||||||||||||
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGenerateCVV | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
char * | szPAN, | ||
char * | szExpirationDate, | ||
char * | szServiceCode, | ||
char * | szCVV, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera un CVV (Card Verification Value), CVV2 o iCVV utilizando una clave dentro del HSM.
Esta API también puede utilizarse para generar códigos de verificación de tarjetas compatibles con el protocolo 3-D Secure. En el caso de Visa, el servicio que implementa el protocolo es Verified by Visa, y el HSM soporta el estándar CAVV (Cardholder Authentication Verification Value, que es CVV2 con método ATN). En el caso de Mastercard, el protocolo 3-D Secure se implementa en el servicio SecureCode, y el HSM soporta los estándares CVC2 (Card Verification Code 2) y HMAC SHA1.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szKeyId | Identificador de la clave dentro del HSM. Este identificador no debe contener espacios ni caracteres especiales. Los caracteres en mayúsculas y minúsculas distinguen entre mayúsculas y minúsculas. Esta clave es la CVK (Card Verification Key), una clave 3DES de 112 bits, y debe ser la misma que la utilizada para la verificación del CVV. Esta clave puede generarse internamente en el HSM o importarse manualmente. Normalmente esta clave también se utiliza en Visa, enviada cifrada por ZCMK (Zone Contro Master Key). Como se indica en el manual de Visa, la clave 3DES 112 utilizada como CVK debe ser diferente de la clave utilizada para la generación y verificación del PIN y no debe utilizarse para otras aplicaciones del emisor, a excepción de CVV2 e iCVV. |
[in] | szPAN | PAN (Número de cuenta principal). Tamaño de 12 a 19 caracteres. Para el cálculo de CVV, CVV2 e iCVV, según el estándar de Visa en el Payment Technology Standards Manual 2007, el tamaño del PAN es independiente. Para el cálculo del CVC2, según el documento de Mastercard SPA Algorithm for the MasterCard Implementation of 3-D Secure - v1.04, el tamaño del PAN debe ser exactamente de 16 dígitos; cuando es menor, debe completarse por la izquierda con ceros, y cuando es mayor, sólo deben utilizarse los 16 dígitos del extremo derecho. |
[in] | szExpirationDate | Fecha de caducidad. Longitud de 4 dígitos. Al generar CVV e iCVV, el formato debe ser AAMM. Para la generación de CVV2, el formato debe ser MMYY. Al calcular el CVC2, este campo debe ser una cadena terminada en cero con los 4 dígitos menos significativos del número de secuencia de la transacción, contenido en el AVV (Accountholder Authentication Value) convertido al BCD decimal equivalente. Cualquier valor inferior a 4 dígitos debe completarse a la izquierda con ceros hasta llegar a 4 dígitos. Para más detalles, consulte el documento de Mastercard SPA Algorithm for the MasterCard Implementation of 3-D Secure - v1.04. Al calcular CAVV (CVV2 con el método ATN), este campo debe ser una cadena terminada en cero con los 4 dígitos menos significativos del ATN (Authentication Tracking Number). Para obtener más información, consulte el documento de Visa 3-D Secure Requisitos funcionales Servidor de control de acceso v. 1.0.2. |
[in] | szServiceCode | Código de servicio. Longitud de 3 dígitos. Para la generación iCVV (Alternate Card Verification Value), el Código de Servicio debe ser 999. Para la generación de CVV 2, el Código de Servicio debe ser 000. Para la generación de CVV tradicional, el Código de Servicio suele ser 101. |
[out] | szCVV | Búfer de salida que contiene la cadena CVV generada. Longitud de 3 dígitos. El valor generado también puede ser un CVV2 o un iCVV, dependiendo de los valores del Código de Servicio introducidos. |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DVerifyCVV | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
char * | szPAN, | ||
char * | szExpirationDate, | ||
char * | szServiceCode, | ||
char * | szCVV, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Verifica un CVV (Card Verification Value), CVV2 o iCVV utilizando una clave dentro del HSM. La API también puede utilizarse para verificar códigos de verificación de tarjeta compatibles con el protocolo 3-D Secure. Consulte más detalles en la API DGenerateCVV().
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szKeyId | Identificador de la clave dentro del HSM. Este identificador no debe contener espacios ni caracteres especiales. Los caracteres en mayúsculas y minúsculas distinguen entre mayúsculas y minúsculas. Esta clave es la CVK (Card Verification Key), una clave 3DES de 112 bits, y debe ser la misma que la utilizada para generar el CVV. |
[in] | szPAN | PAN (Número de cuenta principal). Longitud de 12 a 19 caracteres. Consulte más detalles sobre este campo en la API DGenerateCVV(). |
[in] | szExpirationDate | Fecha de caducidad. Longitud de 4 dígitos. Para la verificación CVV e iCVV, el formato debe ser AAMM. Para la verificación CVV 2, el formato debe ser MMYY. Para obtener información sobre la compatibilidad con los algoritmos del protocolo 3-D Secure, consulte más detalles sobre este campo en la API DGenerateCVV(). |
[in] | szServiceCode | Código de servicio. Longitud de 3 dígitos. Para la verificación iCVV (Alternate Card Verification Value), el Código de servicio debe ser 999. Para la verificación CVV 2, el código de servicio debe ser 000. |
[in] | szCVV | CVV a validar. Longitud de 3 dígitos. El valor introducido también puede ser un CVV2 o iCVV, en función de los valores del Código de Servicio introducidos. |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGeneratePIN | ( | HSESSIONCTX | hSession, |
char * | szPGK, | ||
char * | szPAN, | ||
DWORD | dwOperation, | ||
int | nPinLen, | ||
char * | szInPin, | ||
char * | szOffset, | ||
char * | szOutPin, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Realiza operaciones de generación de PIN basadas en los datos PAN (Personal Account Number) y PGK (Key Name) introducidos, con o sin el uso de offset.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||
[in] | szPGK | Identificador de clave dentro del HSM. | ||||||||
[in] | szPAN | PAN (Número de cuenta principal). | ||||||||
[in] | dwOperation | Tipo de generación de PIN. Según la tabla siguiente.
| ||||||||
[in] | nPinLen | Tamaño del PIN que se utilizará/generará en la operación. Debe estar comprendido entre MIN_EFT_PIN_LEN y MAX_EFT_PIN_LEN. | ||||||||
[in] | szInPin | PIN de entrada. El búfer debe estar comprendido entre MIN_EFT_PIN_LEN + 1 y MAX_EFT_PIN_LEN + 1. | ||||||||
[out] | szOffset | Búfer que contiene la cadena de desplazamiento. El búfer debe estar entre MIN_EFT_PIN_LEN + 1 y MAX_EFT_PIN_LEN + 1. | ||||||||
[out] | szOutPin | Búfer que contiene la cadena de PIN saliente. El búfer debe estar entre MIN_EFT_PIN_LEN + 1 y MAX_EFT_PIN_LEN + 1. | ||||||||
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DVerifyPINBlock | ( | HSESSIONCTX | hSession, |
char * | szPTK, | ||
char * | szPGK, | ||
char * | szPAN, | ||
char * | szOffset, | ||
BYTE * | pbInPinBlock, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Comprueba la validez de un PIN en un Bloque PIN. Primero se extrae el PIN del Bloque PIN con la clave PTK, y luego se verifica con la clave PGK, la misma que se utilizó para generar el PIN, con la función DGeneratePIN().
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szPTK | Identificador de la clave de descifrado del "Bloque PIN" dentro del HSM. Es la clave de transporte del PIN. |
[in] | szPGK | Identificador de la clave que se utilizará para la verificación del PIN en el HSM. Es la clave de generación del PIN. |
[in] | szPAN | PAN (Número de cuenta principal). |
[in] | szOffset | Desplazamiento del PIN. El búfer debe estar entre MIN_EFT_PIN_LEN + 1 y MAX_EFT_PIN_LEN + 1. |
[in] | pbInPinBlock | Memoria intermedia que contiene el bloque de PIN de entrada que debe verificarse. El formato de PIN Block esperado es ISO PIN Block Format 0 (equivalente a ANSI PIN Block Format 0 y VISA PIN Block Format 1). El búfer debe tener el tamaño de un PIN Block, DES_BLOCK (8 bytes). |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DEFTCheckKeyParts | ( | int | nKeyAlgId, |
EFT_VISA_KEY_PARTS * | pstKeyParts, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Comprueba la validez de las partes de una clave VISA con sus respectivos valores de comprobación, en el formato descrito en el VISA Payment Technology Standards Manual, octubre de 2007.
[in] | nKeyAlgId | Algoritmo de la clave a verificar. |
[in] | pstKeyParts | Puntero a una estructura EFT_VISA_KEY_PARTS que contiene las partes de la clave que deben verificarse y sus valores de verificación por partes. |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGenerateDUKPT | ( | HSESSIONCTX | hSession, |
BYTE * | pbKSI, | ||
BYTE * | pbDID_CTR, | ||
char * | szDUKPT, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera una clave DUKPT dentro del HSM utilizando un KSI (Key Serial Identification), un DID (Device ID) y un CTR (Transaction Counter) del mismo KSN (Key Serial Number).
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||||
[in] | pbKSI | Buffer de tamaño MIN_KSI_LEN que contiene el KSI (primeros 05 bytes del KSN). | ||||||||||||||||
[in] | pbDID_CTR | Buffer de tamaño MIN_CTR_LEN que contiene el DID y el CTR (últimos 05 bytes del KSN). | ||||||||||||||||
[out] | szDUKPT | Buffer de tamaño MAX_OBJ_ID que contendrá el nombre de la clave DKUPT generada a partir de los parámetros introducidos. | ||||||||||||||||
[in] | dwParam | Banderas de funcionamiento según la tabla siguiente.
|
#include <dinamo.h>
Genera el nombre BDK a partir de un KSI (Key Serial Identification).
[in] | pbKSI | Buffer de tamaño MIN_KSI_LEN que contiene el KSI. |
[out] | szBDKName | Buffer de tamaño MAX_OBJ_ID que contendrá el nombre de la clave BDK generada a partir del KSI introducido en pbKSI. |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
void AAP_API DGenerateDUKPTName | ( | BYTE * | pbKSI, |
BYTE * | pbDID_CTR, | ||
char * | szDUKPTName, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera el nombre del DUKPT a partir del KSI y el CTR introducidos.
[in] | pbKSI | Buffer de tamaño MIN_KSI_LEN que contiene el KSI (Key Serial Identification). |
[in] | pbDID_CTR | Buffer de tamaño MIN_CTR_LEN que contiene el CTR (ID de dispositivo y contador de transacciones). |
[out] | szDUKPTName | Memoria intermedia de tamaño MAX_OBJ_ID que contendrá el nombre de la clave DKUPT generada a partir del KSI y el CTR introducidos en pbKSI y pbCTR. |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGeneratePVV | ( | HSESSIONCTX | hSession, |
char * | szPGK, | ||
BYTE | bPVKI, | ||
char * | szPAN, | ||
char * | szPIN, | ||
char * | szPVV, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera un PVV (Pin Verification Value) a partir de un PAN (Primary Account Number), un PIN (Personal Identification Number) y un PGK.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szPGK | Identificador de clave dentro del HSM. |
[in] | bPVKI | Identificador de clave que va de EFT_MIN_PVKI a EFT_MAX_PVKI. |
[in] | szPAN | PAN (Número de cuenta principal). |
[in] | szPIN | PIN (Número de Identificación Personal). |
[out] | szPVV | Buffer que contiene la cadena PVV generada. Debe tener un tamaño mínimo de EFT_PVV_LEN + 1 (terminador cero). |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGenerateDAC | ( | HSESSIONCTX | hSession, |
char * | szIMKDAC, | ||
char * | szPAN, | ||
BYTE * | pbSEQ, | ||
BYTE * | pbDAC, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera un DAC (Data Authentication Code) recibiendo como parámetros el PAN (Primary Account Number), el SEQ (PAN Sequence Number) y la IMKDAC (Issuer Master Key) utilizada en el DAC.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szIMKDAC | Identificador de clave dentro del HSM. |
[in] | szPAN | PAN (Número de cuenta principal). |
[in] | pbSEQ | Memoria intermedia de tamaño EFT_EMV_SDA_SEQ_LEN que contiene el SEQ (número de secuencia PAN). |
[out] | pbDAC | Memoria intermedia de tamaño EFT_EMV_SDA_DAC_LEN que contiene el DAC (código de autenticación de datos) que debe verificarse. |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DVerifyDAC | ( | HSESSIONCTX | hSession, |
char * | szIMKDAC, | ||
char * | szPAN, | ||
BYTE * | pbSEQ, | ||
BYTE * | pbDAC, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Verifica un DAC (Data Authentication Code) recibiendo como parámetros el PAN (Primary Account Number), el SEQ (PAN Sequence Number) y la clave IMKDAC (Issuer Master Key) utilizada en el DAC.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szIMKDAC | Identificador de clave dentro del HSM. |
[in] | szPAN | PAN (Número de cuenta principal). |
[in] | pbSEQ | Memoria intermedia de tamaño EFT_EMV_SDA_SEQ_LEN que contiene el SEQ (número de secuencia PAN). |
[in] | pbDAC | Memoria intermedia de tamaño EFT_EMV_SDA_DAC_LEN que contiene el DAC (código de autenticación de datos) que debe verificarse. |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DSignSDA | ( | HSESSIONCTX | hSession, |
char * | szIK, | ||
BYTE * | pbDAC, | ||
DWORD | dwSDA_DATALen, | ||
BYTE * | pbSDA_DATA, | ||
DWORD * | pdwSigLen, | ||
BYTE * | pbSig, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Firma un SAD (Static Application Data) en tarjetas SDA (Static Data Authentication), generando un SSDA (Signed Static Application Data).
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szIK | Nombre de la clave privada dentro del HSM que se utilizará para firmar el DUA. |
[in] | pbDAC | Memoria intermedia de tamaño EFT_EMV_SDA_DAC_LEN que contiene el DAC (código de autenticación de datos) que debe verificarse. |
[in] | dwSDA_DATALen | Tamaño del búfer indicado por pbSDA_DATA . |
[in] | pbSDA_DATA | Buffer que contiene los SDA (Static Application Data) a firmar de un tamaño especificado en dwSDA_DATALen . |
[in,out] | pdwSigLen | Puntero a un DWORD que contiene el tamaño del búfer apuntado por pbSig . |
[out] | pbSig | Tamaño del búfer apuntado por pdwSigLen que recibirá los SSDA (Signed Static Application Data). Se puede pasar NULL para recuperar el tamaño requerido de pbSig que se devolverá en pdwSigLen . |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGenerateDDA_ICCCert | ( | HSESSIONCTX | hSession, |
BYTE | bOP, | ||
char * | szIK, | ||
char * | szPAN, | ||
DWORD | dwDDA_DATALen, | ||
BYTE * | pbDDA_DATA, | ||
DWORD * | pdwSigLen, | ||
BYTE * | pbSig, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera el certificado ICC (Integrated Circuit Card) utilizado en la autenticación DDA (Dynamic Data Authentication).
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||
[in] | bOP | Tipo de operación que debe aplicarse según la tabla siguiente.
| ||||
[in] | szIK | Nombre de la clave privada del HSM que se utilizará para firmar el certificado. | ||||
[in] | szPAN | PAN (Número de cuenta principal). | ||||
[in] | dwDDA_DATALen | Tamaño del búfer indicado por pbDDA_DATA . | ||||
[in] | pbDDA_DATA | Buffer que contiene los datos del certificado a firmar. Pasa la estructura descrita en las Tablas 10 a 14 del Libro 2 de EMV, sin incluir los campos Recovered Data Header y Trailer. | ||||
[in,out] | pdwSigLen | Puntero a un DWORD que contiene el tamaño del búfer pbSig . | ||||
[out] | pbSig | Buffer que recibirá el certificado firmado. Se puede pasar NULL para recuperar el tamaño requerido de pbSig que se devolverá en pdwSigLen . | ||||
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGenerateICCMK | ( | HSESSIONCTX | hSession, |
BYTE | bOP, | ||
char * | szIK, | ||
char * | szKeK, | ||
char * | szPAN, | ||
BYTE * | pbSEQ, | ||
DWORD * | pdwEnvelopeLen, | ||
BYTE * | pbEnvelope, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera claves maestras ICC (Integrated Circuit Card).
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||
[in] | bOP | Tipo de operación que debe aplicarse según la tabla siguiente.
| ||||||
[in] | szIK | Nombre de la clave dentro del HSM que se utilizará para generar la clave maestra. | ||||||
[in] | szKeK | Nombre de la clave de transporte utilizada para cifrar la clave generada. | ||||||
[in] | szPAN | PAN (Número de cuenta principal). | ||||||
[in] | pbSEQ | Memoria intermedia de tamaño EFT_EMV_SDA_SEQ_LEN que contiene el SEQ (número de secuencia PAN). | ||||||
[in,out] | pdwEnvelopeLen | Puntero a un DWORD que contiene el tamaño del búfer apuntado por pbSobre . | ||||||
[out] | pbEnvelope | Buffer que recibirá el sobre con la clave generada. Se puede pasar NULL para recuperar el tamaño requerido de pbSig que se devolverá en pdwEnvelopeLen . | ||||||
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGenerateEMV_HMAC | ( | HSESSIONCTX | hSession, |
BYTE | bOP, | ||
char * | szIK, | ||
char * | szPAN, | ||
BYTE * | pbSEQ, | ||
BYTE * | pbNONCE, | ||
DWORD | dwDataLen, | ||
BYTE * | pbData, | ||
BYTE * | pbMAC, | ||
DWORD | dwParam ) |
#include <dinamo.h>
int AAP_API DGenerateEMV_MAC | ( | HSESSIONCTX | hSession, |
BYTE | bOP, | ||
char * | szIK, | ||
char * | szPAN, | ||
BYTE * | pbSEQ, | ||
BYTE * | pbNONCE, | ||
DWORD | dwDataLen, | ||
BYTE * | pbData, | ||
BYTE * | pbMAC, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera un criptograma estándar EMV o MAC (Message Authentication Code), utilizado en los comandos EMV.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||||||||||
[in] | bOP | Tipo de operación (relleno, derivación de clave, etc.) que se aplicará en la construcción del criptograma (MAC) según la tabla siguiente.
| ||||||||||||||||||||||
[in] | szIK | Nombre de la clave dentro del HSM que se utilizará para generar la MAC. | ||||||||||||||||||||||
[in] | szPAN | PAN (Número de cuenta principal). | ||||||||||||||||||||||
[in] | pbSEQ | Memoria intermedia de tamaño EFT_EMV_SDA_SEQ_LEN que contiene el SEQ (número de secuencia PAN). Debe estar en formato ASCII. | ||||||||||||||||||||||
[in] | pbNONCE | Buffer que contiene el material diversificador utilizado para generar el MAC, debe tener un tamaño de DES_BLOQUE.
|
El CVN (Cryptogram Version Number) determina la versión del criptograma utilizado y depende de las definiciones empresariales. La aplicación debe utilizar el NONCE siguiente a la versión CVN, cuando proceda.
Para más información sobre el CVN que debe utilizarse, consulte al proveedor de su red de tarjetas.
[in] | dwDataLen | Tamaño del búfer indicado por pbData . |
[in] | pbData | Tamaño del búfer especificado por dwDataLen que contiene los datos que se utilizarán para generar la MAC. Tenga en cuenta que el relleno lo realizará el HSM, según el parámetro bOP Por lo tanto, la aplicación de llamada no debe rellenar los datos en pbData . |
[out] | pbMAC | Búfer de tamaño DES_BLOCK que contiene la MAC generada. |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DCheckIDN | ( | HSESSIONCTX | hSession, |
char * | szIK, | ||
char * | szPAN, | ||
BYTE * | pbSEQ, | ||
BYTE * | pbATC, | ||
BYTE * | pbUN, | ||
BYTE * | pbIDN, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Compruebe el IDN (número dinámico ICC).
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szIK | Nombre de la clave dentro del HSM que se utilizará para verificar el IDN. |
[in] | szPAN | PAN (Número de cuenta principal). |
[in] | pbSEQ | Memoria intermedia de tamaño EFT_EMV_SDA_SEQ_LEN que contiene el SEQ (número de secuencia PAN). |
[in] | pbATC | Buffer de tamaño EFT_EMV_IDN_ATC_LEN que contiene el ATC (contador de transacciones de aplicación). |
[in] | pbUN | Buffer de tamaño EFT_EMV_IDN_UN_LEN que contiene el UN (Número Impredecible). |
[in] | pbIDN | Memoria intermedia de tamaño EFT_EMV_IDN_LEN que contiene el IDN (número dinámico ICC). |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DEncryptEMV | ( | HSESSIONCTX | hSession, |
BYTE | bEncOP, | ||
char * | szEncIK, | ||
BYTE * | pbEncNONCE, | ||
BYTE | bMacOP, | ||
char * | szMacIK, | ||
BYTE * | pbMacNONCE, | ||
char * | szPAN, | ||
BYTE * | pbSEQ, | ||
DWORD | dwDataLen, | ||
BYTE * | pbData, | ||
DWORD * | pdwEncDataLen, | ||
BYTE * | pbEncData, | ||
BYTE * | pbMAC, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Cifra los datos en SMC (Mensaje Seguro con Confidencialidad) y genera MACs (Message Authenticatino Code) en SMC/SMI (Mensajería Segura con Confidencialidad/Integridad).
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||||
[in] | bEncOP | Tipo de operación que debe aplicarse según la tabla siguiente.
| ||||||||||||||||
[in] | szEncIK | Nombre de la clave dentro del HSM que se utilizará para cifrar los datos. | ||||||||||||||||
[in] | pbEncNONCE | Buffer que contiene el material diversificador utilizado para cifrar los datos, debe tener un tamaño DES_BLOCK. | ||||||||||||||||
[in] | bMacOP | Tipo de operación que debe aplicarse según la tabla siguiente.
| ||||||||||||||||
[in] | szMacIK | Nombre de la clave dentro del HSM que se utilizará para generar la MAC. | ||||||||||||||||
[in] | pbMacNONCE | Buffer que contiene el material diversificador utilizado para generar el MAC, debe tener tamaño DES_BLOCK. | ||||||||||||||||
[in] | szPAN | PAN (Número de cuenta principal). | ||||||||||||||||
[in] | pbSEQ | Memoria intermedia de tamaño EFT_EMV_SDA_SEQ_LEN que contiene el SEQ (número de secuencia PAN). | ||||||||||||||||
[in] | dwDataLen | Tamaño del búfer indicado por pbData . | ||||||||||||||||
[in] | pbData | Buffer del tamaño especificado por dwDataLen que contiene los datos que se utilizarán en el cifrado/generación de la MAC. | ||||||||||||||||
[in,out] | pdwEncDataLen | Puntero a un DWORD que contiene el tamaño del búfer apuntado por pbEncData . | ||||||||||||||||
[out] | pbEncData | Buffer que contendrá los datos encriptados. Se puede pasar NULL para recuperar el tamaño requerido de pdwEncDataLen que se devolverá en pdwEncDataLen . | ||||||||||||||||
[out] | pbMAC | Tamaño del búfer DES_BLOQUE que contendrá la MAC generada. Puede ser NULL si szMacIK e pbMacNONCE son NULL. | ||||||||||||||||
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGenerateEMV_CSR | ( | HSESSIONCTX | hSession, |
BYTE | bOP, | ||
char * | szIK, | ||
BYTE * | pbTrackNum, | ||
BYTE * | pbServiceID, | ||
BYTE * | pbIssuerID, | ||
BYTE * | pbExpDate, | ||
DWORD * | pdwCSRLen, | ||
BYTE * | pbCSR, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera la CSR (solicitud de firma de certificado) del emisor.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||
[in] | bOP | Tipo de operación que debe aplicarse según la tabla siguiente.
| ||||||||
[in] | szIK | Nombre de la clave dentro del HSM que se utilizará para generar la CSR (clave de emisor). | ||||||||
[in] | pbTrackNum | Memoria intermedia de tamaño EFT_EMV_CSR_VISA_TRACK_NUM_LEN que contiene el número de pista. | ||||||||
[in] | pbServiceID | Memoria intermedia de tamaño EFT_EMV_CSR_VISA_SERVICE_ID_LEN que contiene el ID de servicio. | ||||||||
[in] | pbIssuerID | Memoria intermedia de tamaño EFT_EMV_CSR_VISA_ISSUER_ID_LEN que contiene el ID de emisor. | ||||||||
[in] | pbExpDate | Buffer de tamaño EFT_EXP_DATE_LEN que contiene la fecha de caducidad en formato MMYY. Debe estar en formato ASCII. | ||||||||
[in,out] | pdwCSRLen | Puntero a un DWORD que contiene el tamaño del búfer apuntado por pbCSR . | ||||||||
[out] | pbCSR | Búfer que contendrá la CSR. Se puede pasar NULL para recuperar el tamaño requerido de pbCSR que se devolverá en pdwCSRLen . | ||||||||
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGenerateEMV_CSREx | ( | HSESSIONCTX | hSession, |
BYTE | bOP, | ||
char * | szIK, | ||
BYTE * | pbTrackNum, | ||
BYTE * | pbServiceID, | ||
BYTE * | pbIssuerID, | ||
BYTE * | pbExpDate, | ||
DBLOB * | pdbCSR, | ||
BYTE * | pbHash, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera la CSR (solicitud de firma de certificado) del emisor;
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||
[in] | bOP | Tipo de operación que debe aplicarse según la tabla siguiente.
| ||||||||||
[in] | szIK | Nombre de la clave dentro del HSM que se utilizará para generar la CSR (clave de emisor). | ||||||||||
[in] | pbTrackNum | Memoria intermedia de tamaño EFT_EMV_CSR_VISA_TRACK_NUM_LEN que contiene el número de pista. Si EFT_EMV_OP_CSR_JCB está definido en bOP, este campo debe contener el número de serie de tamaño EFT_EMV_CSR_VISA_TRACK_NUM_LEN. | ||||||||||
[in] | pbServiceID | Memoria intermedia de tamaño EFT_EMV_CSR_VISA_SERVICE_ID_LEN que contiene el ID de servicio. | ||||||||||
[in] | pbIssuerID | Memoria intermedia de tamaño EFT_EMV_CSR_VISA_ISSUER_ID_LEN que contiene el ID de emisor. | ||||||||||
[in] | pbExpDate | Buffer de tamaño EFT_EXP_DATE_LEN que contiene la fecha de caducidad en formato MMYY. Debe estar en formato ASCII. | ||||||||||
[out] | pdbCSR | Puntero a un DBLOB que contendrá el CSR y su tamaño. El miembro pvData debe liberarse con DFree() después de su uso. | ||||||||||
[out] | pbHash | Buffer que contendrá el HASH. Consulte la tabla en bOP para conocer los valores esperados para este parámetro. | ||||||||||
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DGenerateEMV_PinBlock | ( | HSESSIONCTX | hSession, |
BYTE | bOP, | ||
BYTE * | pbNONCE, | ||
char * | szTransportKey, | ||
char * | szISSUER_MK, | ||
char * | szISSUER_SMC_MK, | ||
char * | szPAN, | ||
BYTE * | pbSEQ, | ||
BYTE * | pbOLD_PB, | ||
BYTE * | pbNEW_PB, | ||
BYTE * | pbOutBlock, | ||
DWORD * | pdwOutBlockLen, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera un segmento de datos para un comando de cambio de PIN (Número de Identificación Personal) desde Bloques PIN. Este comando suele ser una APDU (unidad de datos de protocolo de aplicación) para una tarjeta ISO-7816.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||
[in] | bOP | Identificador del tipo de derivación de las claves de operación para generar el bloque de salida. Según la tabla siguiente.
| ||||||||||||
[in] | pbNONCE | Tampón que contiene el material diversificador, debe tener un tamaño de DES_BLOQUE.
| ||||||||||||
[in] | szTransportKey | Identificador de la clave de transporte dentro del HSM. Esta clave debe ser del tipo DES o 3DES. | ||||||||||||
[in] | szISSUER_MK | Identificador de la clave "Issuer MK" dentro del HSM. Esta clave debe ser del tipo 3DES 112 bits. Esta clave puede ser la misma que la clave "SMC MK del emisor" en determinados casos. | ||||||||||||
[in] | szISSUER_SMC_MK | Identificador de la clave "Issuer SMC MK" dentro del HSM. Esta clave debe ser del tipo 3DES 112 bits. | ||||||||||||
[in] | szPAN | PAN (Número de cuenta principal). | ||||||||||||
[in] | pbSEQ | Memoria intermedia de tamaño EFT_EMV_SDA_SEQ_LEN que contiene el SEQ (número de secuencia PAN). Debe estar en formato ASCII. | ||||||||||||
[in] | pbOLD_PB | Búfer que contiene el bloque PIN con el PIN actual. El búfer debe tener el tamaño DES_BLOCK (8 bytes). Se debe pasar NULL si no se necesita el Bloque PIN con la contraseña actual. Se admiten bloques en formato ISO 0/1/2/3. | ||||||||||||
[in] | pbNEW_PB | Búfer que contiene el PIN Block con el nuevo PIN. El búfer debe tener el tamaño de un DES_BLOCK (8 bytes). Se admiten bloques en formato ISO 0/1/2/3. | ||||||||||||
[out] | pbOutBlock | Buffer que contendrá el segmento de datos de salida. Se puede utilizar un tamaño máximo de búfer de PBC_EMV_PIN_BLOCK_MAX_OUTPUT, que será suficiente para todos los casos. | ||||||||||||
[in,out] | pdwOutBlockLen | Puntero a un DWORD que contiene el tamaño del búfer puesto a disposición en pbOutPinblock . Contendrá el tamaño de los datos escritos en pbOutPinblock en caso de éxito. En caso de fallo, contendrá el tamaño requerido de pbOutPinblock . | ||||||||||||
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DDeriveEMV_Key | ( | HSESSIONCTX | hSession, |
char * | szSrcKey, | ||
WORD | wBufferLen, | ||
BYTE * | pbBuffer, | ||
BYTE | bOP, | ||
DWORD | dwAttrib, | ||
char * | szDstKey, | ||
HKEYCTX * | phKey, | ||
DWORD | dwParam ) |
#include <dinamo.h>
int AAP_API DCalculateARPC | ( | HSESSIONCTX | hSession, |
char * | szIssuerMK, | ||
char * | szPAN, | ||
BYTE * | pbSEQ, | ||
BYTE * | pbARQC, | ||
BYTE * | pbARC, | ||
BYTE * | pbARPC, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Calcula un ARPC (Criptograma de Respuesta de Autorización) siguiendo el estándar EMV Book 2 (v4.2, 2008), Sección 8.2.1, Método ARPC 1.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szIssuerMK | Nombre de la clave del remitente dentro del HSM que se utilizará para generar la MAC. |
[in] | szPAN | PAN (Número de cuenta principal). |
[in] | pbSEQ | Memoria intermedia de tamaño EFT_EMV_SDA_SEQ_LEN que contiene el SEQ (número de secuencia PAN). |
[in] | pbARQC | Búfer de tamaño DES_BLOCK que contiene el ARQC (criptograma de solicitud de autorización). |
[in] | pbARC | Buffer de tamaño 2 (dos bytes) que contiene el ARC (Authorisation Response Code). |
[out] | pbARPC | Buffer de tamaño DES_BLOCK que contendrá el ARPC generado. |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DCalculateARPC_Ex | ( | HSESSIONCTX | hSession, |
DWORD | dwOp, | ||
void * | pvInData, | ||
BYTE * | pbARPC, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Calcula un ARPC (Criptograma de Respuesta de Autorización).
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||
[in] | dwOp | Tipo de operación ARPC a ejecutar.
| ||||||||
[in] | pvInData | Datos de entrada para calcular el ARPC, como se describe en el parámetro dwOP . | ||||||||
[out] | pbARPC | Buffer de tamaño DES_BLOCK que contendrá el ARPC generado. | ||||||||
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
int AAP_API DMAC_ISO9797_1_Met2 | ( | DWORD | dwType, |
BYTE * | pbKey, | ||
DWORD | dwAlg, | ||
const BYTE * | pbMsg, | ||
DWORD | dwMsgLen, | ||
BYTE * | pbMAC ) |
#include <dinamo.h>
Genera un MAC (Message Authentication Code) según la norma ISO/IEC 9797-1 Método 2. Esta operación se realiza offline en la biblioteca, fuera del HSM.
[in] | dwType | Tipo de operación a realizar, según la tabla siguiente. |
[in] | pbKey | El búfer que contiene la clave utilizada para generar la MAC debe tener el mismo tamaño que el tipo de clave introducido en dwAlg . |
[in] | dwAlg | Tipo de clave utilizada para generar la MAC. |
[in] | pbMsg | Buffer que pasará por el proceso MAC. |
[in] | dwMsgLen | Tamaño del búfer pbMsg . |
[out] | pbMAC | El búfer que contiene la MAC generada debe tener un tamaño DES_BLOCK. |
int AAP_API DEFTImportKey | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
int | nKeyAlgId, | ||
void * | pstKeyParts, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Importar una llave por partes en formatos EFT.
Permite importar llaves por partes:
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||
[in] | szKeyId | Nombre de la clave que se importará en el HSM. | ||||||
[in] | nKeyAlgId | Admite los siguientes algoritmos.
| ||||||
[in] | pstKeyParts | Puntero a una estructura que contiene los datos para reconstruir la clave como se describe en nKeyAlgId . | ||||||
[in] | dwParam | Pasa 0. O cualquiera de los valores de abajo.
|
int AAP_API DEFTExportAESKeyParts | ( | HSESSIONCTX | hSession, |
BYTE | bKcvType, | ||
const char * | szKeyId, | ||
void * | pvKeyParts, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
int AAP_API DEFTExportKey | ( | HSESSIONCTX | hSession, |
BYTE | bExportMode, | ||
char * | szKEKId, | ||
char * | szKeyId, | ||
BYTE * | pbEncryptedBlock, | ||
DWORD * | pdwEncryptedBlockLen, | ||
BYTE * | pbKeyCheckValue, | ||
DWORD | dwParam ) |
#include <dinamo.h>
int AAP_API DEFTKeKImport | ( | HSESSIONCTX | hSession, |
BYTE | bOP, | ||
DWORD | dwAlgId, | ||
char * | szKeKName, | ||
char * | szKeyName, | ||
DWORD | dwAttr, | ||
BYTE * | pbKCV1, | ||
BYTE * | pbKCV2, | ||
BYTE * | pbKCV3, | ||
BYTE * | pbKCVFinal, | ||
BYTE * | pbBlob, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
int AAP_API DEFTExportZPK | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
int * | pnKeyAlg, | ||
int * | pnKeySize, | ||
EFT_VISA_KEY_PARTS * | pstKeyParts, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Exporta una clave ZPK (Clave PIN de Zona) o ZMK (Clave Maestra de Zona). La exportación se realiza por partes, con sus respectivos valores de verificación, tal y como se describe en el VISA Payment Technology Standards Manual, octubre de 2007.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||
[in] | szKeyId | Nombre de la clave que se importará en el HSM. | ||||||
[out] | pnKeyAlg | Algoritmo de la clave a exportada. | ||||||
[out] | pnKeySize | Tamaño de la clave exportada. | ||||||
[out] | pstKeyParts | Puntero a una estructura EFT_VISA_KEY_PARTS que contendrá las partes de la clave exportada y sus KCV (Key Check Value). | ||||||
[in] | dwParam | Se aceptan las siguientes opciones.
|
int AAP_API DEFTGetKcv | ( | HSESSIONCTX | hSession, |
BYTE | bType, | ||
const char * | szKeyId, | ||
BYTE * | pbKcv, | ||
DWORD * | pdwKcvLen, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||
[in] | bType | Tipo de clave que se utilizará para generar el KCV.
| ||||||
[in] | szKeyId | Nombre de la clave que se utilizará para generar el KCV. | ||||||
[out] | pbKcv | Puntero a un búfer que contendrá el KCV generado. Puede ser NULL para obtener el tamaño del KCV en pdwKcvLen . | ||||||
[in,out] | pdwKcvLen | Tamaño del búfer pbKcv . Al final de la llamada contendrá el tamaño del KCV generado. | ||||||
[in] | dwReserved | Reservado para uso futuro (debe ser 0). |
int AAP_API DEFTGenKCVOffline | ( | DWORD | dwType, |
int | nAlgId, | ||
const BYTE * | pbKey, | ||
DWORD | dwKeyLen, | ||
BYTE * | pbKCV, | ||
DWORD * | pdwKCVLen, | ||
DWORD | reserved ) |
#include <dinamo.h>
Genera un KCV (Key Check Value) de una clave offline.
[in] | dwType | Tipo KCV.
| ||||||
[in] | nAlgId | Algoritmo de clave. Actualmente sólo se aceptan DES, 3DES y AES. | ||||||
[in] | pbKey | Puntero al búfer que contiene la clave. | ||||||
[in] | dwKeyLen | Tamaño de la llave. | ||||||
[out] | pbKCV | Puntero al búfer que contendrá el KCV generado. | ||||||
[in,out] | pdwKCVLen | Tamaño del búfer pbKCV . Al final de la llamada contendrá el tamaño del KCV generado. | ||||||
[in] | reserved | Reservado para uso futuro (debe ser 0). |
int AAP_API DEFTExportTR31 | ( | HSESSIONCTX | hSession, |
const char * | szKBPK, | ||
const char * | szKey, | ||
void * | pvReserved, | ||
WORD | wUsage, | ||
BYTE | bMode, | ||
BYTE | bExport, | ||
BYTE * | pbOutBlock, | ||
DWORD * | pdwOutBlockLen, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Exporta una clave en formato TR-31 según la norma ASC X9 TR 31-2018.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | szKBPK | Nombre de la clave KBPK (Key Block Protection Key) utilizada para derivar las claves de cifrado y autenticación. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | szKey | Nombre de la clave que se exportará del HSM. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | pvReserved | Reservado para uso futuro (debe ser NULL). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | wUsage | Identificador de uso de clave, como se describe en ASC X9 TR 31-2018 Sección A.5.1 tabla 6. Se aceptan las siguientes opciones.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | bMode | Identificador del modo de uso de la clave, como se describe en ASC X9 TR 31-2018 Sección A.5.3 tabla 8. Se aceptan las siguientes opciones.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | bExport | Identificador clave de exportabilidad, como se describe en ASC X9 TR 31-2018 Sección A.5.5 tabla 10. Se aceptan las siguientes opciones.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[out] | pbOutBlock | Buffer que contendrá el bloque de claves. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in,out] | pdwOutBlockLen | Puntero al tamaño del búfer pasado pbOutBlock . Tras la devolución de la API contendrá el tamaño real del bloque de teclas almacenado en pbOutBlock . Si el tamaño no es suficiente, esta variable contendrá el tamaño requerido de pbOutBlock . | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
Algoritmo KBPK | Método de exportación |
---|---|
3DES | 5.3.2.1 Método vinculante de derivación de claves - TDEA |
AES | 5.3.2.3 Método de vinculación de bloques de claves - AES |
int AAP_API DEFTImportTR31 | ( | HSESSIONCTX | hSession, |
const char * | szKBPK, | ||
const char * | szKey, | ||
DWORD | dwKeyAttributes, | ||
BYTE * | pbKeyBlock, | ||
DWORD | dwKeyBlockLen, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Importe una clave en formato TR-31 según la norma ASC X9 TR 31-2018.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szKBPK | Nombre de la clave KBPK (Key Block Protection Key) utilizada para derivar las claves de cifrado y autenticación. |
[in] | szKey | Nombre de la clave que se importará en el HSM. |
[in] | dwKeyAttributes | Parámetros adicionales de la clave. Consulte las opciones de la función DGenerateKey(). |
[in] | pbKeyBlock | Buffer que contiene el bloque de claves. |
[in] | dwKeyBlockLen | Tamaño del búfer anterior pbKeyBlock . |
[in] | dwParam | Reservado para uso futuro (debe ser 0). |
Algoritmo KBPK | Método |
---|---|
3DES | 5.3.2.1 Método vinculante de derivación de claves - TDEA |
AES | 5.3.2.3 Método de vinculación de bloques de claves - AES |