Operaciones de transferencia electrónica de fondos.
Véase Documentación técnica de HSM.
Funciones | |
Cadena | generateDUKPT (byte[] baKSI, byte[] baDID_CTR, int dwParam) throws TacException |
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). | |
Cadena | generateDUKPTName (byte[] baKSI, byte[] baDID_CTR) throws TacException |
Genera el nombre del DUKPT a partir del KSI y el CTR introducidos. | |
Cadena | generateBDKName (byte[] baKSI) throws TacException |
Genera el nombre BDK a partir de un KSI (Key Serial Identification). | |
byte[] | translatePINBlock (String srcPEK, String dstPEK, int transBlockType, String PAN, byte[] inPINBlock) throws TacException |
Traduce un bloque PIN, descifrándolo con una clave y cifrándolo con otra. | |
byte[] | exportTR31 (String kbpk, String key, int usage, byte mode, byte export) throws TacException |
Exporta una clave en formato TR-31 según la norma ASC X9 TR 31-2018. | |
void | importTR31 (String kbpk, String key, int keyAttributes, byte[] keyBlock) throws TacException |
Importe una clave en formato TR-31 según la norma ASC X9 TR 31-2018. | |
EftKeyParts | exportKeyParts (String keyId, int flags) throws TacException |
Exportar una clave ZPK (Clave PIN de Zona) o ZMK (Clave Maestra de Zona). | |
void | importKeyParts (String keyId, int keyAlg, EftKeyParts parts, int flags) throws TacException |
Cadena | generateCVV (String keyId, String pan, String expirationDate, String serviceCode, int params) throws TacException |
Genera un CVV (Card Verification Value), CVV2 o iCVV utilizando una clave dentro del HSM. | |
booleano | verifyCVV (String keyId, String pan, String expirationDate, String serviceCode, String cvv, int params) throws TacException |
Comprueba un CVV (Card Verification Value), CVV2 o iCVV utilizando una clave dentro del HSM. | |
booleano | verifyPINBlock (String ptk, String pgk, String pan, String offset, byte[] pinBlock, int param) throws TacException |
Comprueba la validez de un PIN en un bloque de PIN. | |
String generateDUKPT | ( | byte[] | baKSI, |
byte[] | baDID_CTR, | ||
int | dwParam ) throws TacException |
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).
baKSI | Buffer de tamaño TacNDJavaLib.MIN_KSI_LEN que contiene el KSI (primeros 05 bytes del KSN). | ||||||||||||||
baDID_CTR | Buffer de tamaño TacNDJavaLib.MIN_CTR_LEN que contiene el DID y el CTR (últimos 05 bytes del KSN). | ||||||||||||||
dwParam | Banderas de funcionamiento según la tabla siguiente.
|
TacException |
String generateDUKPTName | ( | byte[] | baKSI, |
byte[] | baDID_CTR ) throws TacException |
Genera el nombre del DUKPT a partir del KSI y el CTR introducidos.
baKSI | Buffer de tamaño TacNDJavaLib.MIN_KSI_LEN que contiene el KSI (primeros 05 bytes del KSN). |
baDID_CTR | Buffer de tamaño TacNDJavaLib.MIN_CTR_LEN que contiene el DID y el CTR (últimos 05 bytes del KSN). |
TacException |
String generateBDKName | ( | byte[] | baKSI | ) | throws TacException |
Genera el nombre BDK a partir de un KSI (Key Serial Identification).
baKSI | Buffer de tamaño TacNDJavaLib.MIN_KSI_LEN que contiene el KSI (primeros 05 bytes del KSN). |
TacException |
byte[] translatePINBlock | ( | String | srcPEK, |
String | dstPEK, | ||
int | transBlockType, | ||
String | PAN, | ||
byte[] | inPINBlock ) throws TacException |
Traduce un bloque PIN, descifrándolo con una clave y cifrándolo con otra.
El formato de bloque entrante se identifica automáticamente, y el formato de bloque saliente puede ser definido por el emisor de la llamada, 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 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.
srcPEK | Identificador de la clave de descifrado dentro del HSM. | ||||||||||||
dstPEK | Identificador de la clave de cifrado dentro del HSM. | ||||||||||||
transBlockType | Identificador del formato del bloque de salida. Según la tabla siguiente.
| ||||||||||||
PAN | PAN (Número de cuenta principal). | ||||||||||||
inPINBlock | Entrada de bloque PIN. El búfer debe tener el tamaño de un PIN Block, TacNDJavaLib.DES_BLOCK (8 bytes). |
TacException |
byte[] exportTR31 | ( | String | kbpk, |
String | key, | ||
int | usage, | ||
byte | mode, | ||
byte | export ) throws TacException |
Exporta una clave en formato TR-31 según la norma ASC X9 TR 31-2018.
kbpk | Nombre de la clave KBPK (Key Block Protection Key) utilizada para derivar las claves de cifrado y autenticación. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
key | Nombre de la clave que se exportará del HSM. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
usage | 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.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mode | 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.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
export | 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.
|
TacException |
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 |
void importTR31 | ( | String | kbpk, |
String | key, | ||
int | keyAttributes, | ||
byte[] | keyBlock ) throws TacException |
Importe una clave en formato TR-31 según la norma ASC X9 TR 31-2018.
kbpk | Nombre de la clave KBPK (Key Block Protection Key) utilizada para derivar las claves de cifrado y autenticación. |
key | Nombre de la clave que se importará en el HSM. |
keyAttributes | Parámetros adicionales de la clave. Consulte las opciones del método createKey(). |
keyBlock | bloque de teclas |
TacException |
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 |
EftKeyParts exportKeyParts | ( | String | keyId, |
int | flags ) throws TacException |
Exportar 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 comprobación, tal como se describe en el VISA Payment Technology Standards Manual, octubre de 2007.
keyId | Nombre de la clave a exportar. | ||||||
flags | Se aceptan las siguientes opciones.
|
TacException |
void importKeyParts | ( | String | keyId, |
int | keyAlg, | ||
EftKeyParts | parts, | ||
int | flags ) throws TacException |
String generateCVV | ( | String | keyId, |
String | pan, | ||
String | expirationDate, | ||
String | serviceCode, | ||
int | params ) throws TacException |
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.
keyId | Nombre de la clave. 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. |
pan | 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. |
expirationDate | 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. |
serviceCode | 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. |
params | Reservado para uso futuro (debe ser 0). |
TacException |
boolean verifyCVV | ( | String | keyId, |
String | pan, | ||
String | expirationDate, | ||
String | serviceCode, | ||
String | cvv, | ||
int | params ) throws TacException |
Comprueba 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 tarjetas compatibles con el protocolo 3-D Secure. Consulte más detalles en la API generateCVV().
keyId | Nombre de la clave. 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. |
pan | PAN (Número de cuenta principal). Longitud de 12 a 19 caracteres. Consulte más detalles sobre este campo en la API generateCVV(). |
expirationDate | 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 generateCVV(). |
serviceCode | 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. |
cvv | 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. |
params | Reservado para uso futuro (debe ser 0). |
TacException |
boolean verifyPINBlock | ( | String | ptk, |
String | pgk, | ||
String | pan, | ||
String | offset, | ||
byte[] | pinBlock, | ||
int | param ) throws TacException |
Comprueba la validez de un PIN en un bloque de PIN.
ptk | Identificador de la clave de descifrado del "Bloque PIN" dentro del HSM. Es la clave de transporte del PIN. |
pgk | Identificador de la clave que se utilizará para la verificación del PIN en el HSM. Es la clave de generación del PIN. |
pan | PAN (Número de cuenta principal). Longitud de 12 a 19 caracteres. |
offset | Desplazamiento del PIN. Debe estar comprendido entre TacNDJavaLib. MIN_EFT_PIN_LEN y TacNDJavaLib.MAX_EFT_PIN_LEN. |
pinBlock | Bloque PIN que debe validarse. 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, TacNDJavaLib.DES_BLOCK (8 bytes). |
param | Reservado para uso futuro (debe ser 0). |
TacException |