NET API
HSM Dinamo
Cargando...
Buscando...
No se han encontrado entradas
EFT

Descripción detallada

Operaciones de transferencia electrónica de fondos.

Consulte la documentación técnica del HSM.

Estructuras de datos

clase  DinamoClient.PinComponentes
 Clase que encapsula los componentes de generación de PIN. Más...
 

Enumeraciones

enum  GenPINOperation : UInt32 { DEFAULT_PIN = DinamoApi.GP_DEFAULT_PIN , USER_DEF_PIN = DinamoApi.GP_USER_DEF_PIN , RANDOM_PIN = DinamoApi.GP_RANDOM_PIN }
 Opciones de funcionamiento del PIN. Más...
 

Funciones

cadena GenBDKName (byte[] pbKSI)
 Genera el nombre BDK a partir de un KSI (Key Serial Identification).
 
cadena GenBDKName (byte[] pbKSI, uint dwParam)
 Genera el nombre BDK a partir de un KSI (Key Serial Identification).
 
cadena GenDUKPT (byte[] pbKSI, byte[] pbDID_CTR, uint dwParam)
 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 GenCVV (cadena keyId, cadena pan, cadena expirationDate, cadena serviceCode)
 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 tarjeta 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 es compatible con 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.
 
bool VerifyCVV (cadena keyId, cadena pan, cadena expirationDate, cadena serviceCode, cadena cvv)
 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 tarjetas compatibles con el protocolo 3-D Secure. Consulte más detalles en la API GenCVV().
 
PinComponents GenPIN (string pgk, string pan, GenPINOperation operation, int pinLen, string inPin)
 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.
 
bool VerifyPINBlock (cadena ptk, cadena pgk, cadena pan, cadena offset, byte[] pinblock)
 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 GenPIN().
 
byte[] ExportTR31 (string kbpk, string key, EftExportUsage usage, EftExportMode mode, EftExportExpType exp)
 Exporta una clave en formato TR-31 según la norma ASC X9 TR 31-2018.
 
void ImportTR31 (string kbpk, string key, bool isExportable, bool isTemporary, byte[] keyBlock)
 Importe una clave en formato TR-31 según la norma ASC X9 TR 31-2018.
 

Enumeraciones

GenPINOperación

enum GenPINOperation : UInt32

Opciones de funcionamiento del PIN.

Enumeradores
DEFAULT_PIN 
USER_DEF_PIN 
RANDOM_PIN 
Ejemplos
eft_gen_pin.cs.

Funciones

GenBDKName() [1/2]

string GenBDKName ( byte[] pbKSI)
inline

Genera el nombre BDK a partir de un KSI (Key Serial Identification).

Parámetros
pbKSIBuffer de tamaño MIN_KSI_LEN que contiene el KSI.
Devolución
El nombre de la clave BDK generada a partir de KSI se introduce en pbKSI.
Excepciones
DinamoExceptionLanza una excepción en caso de error.
Ejemplos
dukpt.cs.

GenBDKName() [2/2]

string GenBDKName ( byte[] pbKSI,
uint dwParam )
inline

Genera el nombre BDK a partir de un KSI (Key Serial Identification).

Parámetros
pbKSIBuffer de tamaño MIN_KSI_LEN que contiene el KSI.
dwParamReservado para uso futuro.
Devolución
El nombre de la clave BDK generada a partir de KSI se introduce en pbKSI.
Excepciones
DinamoExceptionLanza una excepción en caso de error.

GenDUKPT()

string GenDUKPT ( byte[] pbKSI,
byte[] pbDID_CTR,
uint dwParam )
inline

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).

Parámetros
pbKSIBuffer de tamaño MIN_KSI_LEN que contiene el KSI.
pbDID_CTRBuffer de tamaño MIN_CTR_LEN que contiene el DID y el CTR (últimos 05 bytes del KSN).
dwParamIndicadores de operación según la tabla siguiente. NEW_DUKPT_MODE_DUK : Genera una clave DUK (clave única derivada) estándar de acuerdo con el manual ISO X9.24-1-2004. NEW_DUKPT_MODE_PEK : Genera una clave PEK (Clave de cifrado PIN) según el manual ISO X9.24-1-2004 A aplicando el XOR de la máscara 0000 0000 0000 FF00 a las partes de la clave. NEW_DUKPT_MODE_MEK : Genera una clave MEK (MAC Encryption Key) según la norma ISO X9.24-1-2004 A manual aplicando el XOR de la máscara 0000 0000 0000 00FF a las partes de la clave. NEW_DUKPT_MODE_DE : Diversifica la clave generada en formato de Cifrado de Datos. Aplica un XOR de la máscara 0000 0000 00FF 0000 0000 00FF 0000 a la clave DUKPT generada, cifra la clave izquierda del DUKPT utilizando el DUKPT generado y repite el cifrado con la clave derecha. Tras esta operación, une las partes izquierda y derecha cifradas para formar la clave de cifrado de datos. Como se describe en el MANUAL DE USUARIO IDTECH SecureMag Encrypted MagStripe Reader (80096504-001 RevL 06/19/14).
Debe utilizarse en combinación (mediante la operación OR) con uno de los indicadores: NEW_DUKPT_MODE_DUK, NEW_DUKPT_MODE_PEK o NEW_DUKPT_MODE_MEK NEW_DUKPT_MODE_EXP : Genera una clave DUKPT exportable. Se trata de un indicador de atributo y debe utilizarse en combinación con otros indicadores. Utilícelo sólo si es necesario. NEW_DUKPT_MODE_TMP : Genera una clave DUKPT temporal. Se trata de un indicador de atributo y debe utilizarse en combinación con otros indicadores. NEW_DUKPT_MODE_IPEK : Genera una clave IPEK (Initially Loaded PIN Entry Device Key) de acuerdo con el manual ISO X9.24-1-2004 A-6.
Devolución
El nombre de la clave BDK generada a partir de KSI se introduce en pbKSI.
Excepciones
DinamoExceptionLanza una excepción en caso de error.
Ejemplos
dukpt.cs.

GenCVV()

string GenCVV ( string keyId,
string pan,
string expirationDate,
string serviceCode )
inline

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 tarjeta 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 es compatible con 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.

Parámetros
keyIdIdentificador 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.
panPAN (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.
expirationDateFecha 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.
serviceCodeCó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.
Devolución
El CVV generado, con una longitud de 3 dígitos. El valor generado también puede ser un CVV2 o iCVV, en función de los valores de Código de servicio introducidos.
Excepciones
DinamoExceptionLanza una excepción en caso de error.
Notas
La API también es compatible con la norma American Express.
Ejemplos
eft_gen_verify_cvv.cs.

VerificarCVV()

bool VerifyCVV ( string keyId,
string pan,
string expirationDate,
string serviceCode,
string cvv )
inline

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 tarjetas compatibles con el protocolo 3-D Secure. Consulte más detalles en la API GenCVV().

Parámetros
keyIdIdentificador 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.
panPAN (Número de cuenta principal). Longitud de 12 a 19 caracteres.
Consulte más detalles sobre este campo en la API GenCVV().
expirationDateFecha 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 GenCVV().
serviceCodeCó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.
cvvCVV 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.
Devolución
true si el CVV se ha validado correctamente y false si no es válido.
Excepciones
DinamoExceptionLanza una excepción en caso de error.
Ejemplos
eft_gen_verify_cvv.cs.

GenPIN()

PinComponents GenPIN ( string pgk,
string pan,
GenPINOperation operation,
int pinLen,
string inPin )
inline

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.

Parámetros
pgkIdentificador de clave PGK (clave de generación de PIN), dentro del HSM.
panPAN (Número de cuenta principal).
operationTipo de generación de PIN. Según la tabla siguiente.
Valor Significado
GenPINOperation.DEFAULT_PIN Genera el PIN por defecto basado en PAN y PGK. El parámetro inPin debe ser null.
GenPINOperation.USER_DEF_PIN Genera un offset referido al PIN definido por el llamante. El parámetro inPin debe contener el PIN.
GenPINOperation.RANDOM_PIN Genera aleatoriamente un PIN y un offset basados en PAN y PGK. inPin debe ser nulo.
Parámetros
pinLenTamaño del PIN que se utilizará/generará en la operación. Debe estar entre DinamoApi .MIN_EFT_PIN_LEN y DinamoApi.MAX_EFT_PIN_LEN.
inPinPIN de entrada. Debe tener un tamaño comprendido entre DinamoApi .MIN_EFT_PIN_LEN y DinamoApi.MAX_EFT_PIN_LEN.
Devolución
PIN y offset.
Excepciones
DinamoExceptionLanza una excepción en caso de error.
Ejemplos
eft_gen_pin.cs.

VerificarBloquePIN()

bool VerifyPINBlock ( string ptk,
string pgk,
string pan,
string offset,
byte[] pinblock )
inline

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 GenPIN().

Parámetros
ptkIdentificador de la clave de descifrado "PIN Block" dentro del HSM. Clave de transporte del PIN (PTK).
pgkIdentificador de la clave que se utilizará para la verificación del PIN en el HSM. Clave de generación de PIN (PGK).
panPAN (Número de cuenta principal).
offsetDesplazamiento del PIN. Debe tener un tamaño comprendido entre DinamoApi .MIN_EFT_PIN_LEN y DinamoApi.MAX_EFT_PIN_LEN.
pinblockMemoria 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, DinamoApi.DES_BLOCK (8 bytes).
Devolución
true si el PIN ha sido validado con éxito y false si no es válido.
Excepciones
DinamoExceptionLanza una excepción en caso de error.
Ejemplos
eft_verify_pinblock.cs.

ExportTR31()

byte[] ExportTR31 ( string kbpk,
string key,
EftExportUsage usage,
EftExportMode mode,
EftExportExpType exp )
inline

Exporta una clave en formato TR-31 según la norma ASC X9 TR 31-2018.

Parámetros
kbpkNombre de la clave KBPK (Key Block Protection Key) utilizada para derivar las claves de cifrado y autenticación.
keyNombre de la clave que se exportará del HSM.
usageIdentificador de uso de clave, tal como se describe en ASC X9 TR 31-2018, sección A.5.1, cuadro 6.
modeIdentificador del modo de uso de la clave, tal como se describe en ASC X9 TR 31-2018, sección A.5.3, cuadro 8.
expIdentificador clave de exportabilidad, tal como se describe en ASC X9 TR 31-2018, sección A.5.5, cuadro 10.
Devolución
Bloque de llaves
Excepciones
DinamoExceptionLanza una excepción en caso de error.
Notas
Esta API exporta una clave utilizando los métodos para generar bloque_clave abajo.
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
Ejemplos
export_import_tr31.cs.

ImportTR31()

void ImportTR31 ( string kbpk,
string key,
bool isExportable,
bool isTemporary,
byte[] keyBlock )
inline

Importe una clave en formato TR-31 según la norma ASC X9 TR 31-2018.

Parámetros
kbpkNombre de la clave KBPK (Key Block Protection Key) utilizada para derivar las claves de cifrado y autenticación.
keyNombre de la clave que se importará en el HSM.
isExportableDefine si la clave importada es exportable.
isTemporaryDefine si la clave importada será temporal.
keyBlockBloque clave en formato TR-31.
Excepciones
DinamoExceptionLanza una excepción en caso de error.
Notas
Esta API importa claves protegidas por los métodos de generación de la aplicación bloque_clave.
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
Ejemplos
export_import_tr31.cs.