API Java
HSM Dinamo
Carregando...
Procurando...
Nenhuma entrada encontrado
EFT

Descrição detalhada

Operações para Transferência Eletrônica de Fundos.

Consulte a documentação técnica do HSM.

Funções

String generateDUKPT (byte[] baKSI, byte[] baDID_CTR, int dwParam) throws TacException
 Gera uma chave DUKPT dentro do HSM utilizando uma KSI (Key Serial Identification), um DID (Device ID) e um CTR (Transaction Counter) de uma mesma KSN (Key Serial Number).
 
String generateDUKPTName (byte[] baKSI, byte[] baDID_CTR) throws TacException
 Gera o nome da DUKPT a partir de uma KSI e CTR informados.
 
String generateBDKName (byte[] baKSI) throws TacException
 Gera o nome da BDK a partir de uma KSI (Key Serial Identification).
 
byte[] translatePINBlock (String srcPEK, String dstPEK, int transBlockType, String PAN, byte[] inPINBlock) throws TacException
 Faz a tradução de um PIN Block, decriptando o bloco com uma chave e encriptando com outra.
 
byte[] exportTR31 (String kbpk, String key, int usage, byte mode, byte export) throws TacException
 Exporta uma chave no formato TR-31 de acordo com o padrão ASC X9 TR 31-2018.
 
void importTR31 (String kbpk, String key, int keyAttributes, byte[] keyBlock) throws TacException
 Importa uma chave no formato TR-31 de acordo com o padrão ASC X9 TR 31-2018.
 

Funções

◆ generateDUKPT()

String generateDUKPT ( byte[] baKSI,
byte[] baDID_CTR,
int dwParam ) throws TacException

Gera uma chave DUKPT dentro do HSM utilizando uma KSI (Key Serial Identification), um DID (Device ID) e um CTR (Transaction Counter) de uma mesma KSN (Key Serial Number).

Parâmetros
baKSIBuffer de tamanho TacNDJavaLib.MIN_KSI_LEN contendo o KSI (primeiros 05 bytes do KSN).
baDID_CTRBuffer de tamanho TacNDJavaLib.MIN_CTR_LEN contendo o DID e CTR (últimos 05 bytes do KSN).
dwParamFlags de operação de acordo com a tabela abaixo.
Valor Significado
TacNDJavaLib.NEW_DUKPT_MODE_DUK Gera uma chave DUK (Derived Unique Key) padrão de acordo com o manual ISO X9.24-1-2004.
TacNDJavaLib.NEW_DUKPT_MODE_PEK Gera uma chave PEK (PIN Encryption Key) de acordo com o manual ISO X9.24-1-2004 A-1,A-6 aplicando o XOR da máscara 0000 0000 0000 FF00 nas partes da chave.
TacNDJavaLib.NEW_DUKPT_MODE_MEK Gera uma chave MEK (MAC Encryption Key) de acordo com o manual ISO X9.24-1-2004 A-1,A-6 aplicando o XOR da máscara 0000 0000 0000 00FF nas partes da chave.
TacNDJavaLib.NEW_DUKPT_MODE_DE Diversifica a chave gerada no formato Data Encryption. Aplica um XOR da máscara 0000 0000 00FF 0000 0000 0000 00FF 0000 sobre a chave DUKPT gerada, encripta a chave esquerda da DUKPT utilizando a DUKPT gerada e repete a encriptação com a chave direita. Após esta operação junta as partes esquerda e direita encriptadas para formar a Data Encryption Key. Como descrito em IDTECH USER MANUAL SecureMag Encrypted MagStripe Reader (80096504-001 RevL 06/19/14).
Deve ser utilizada combinada (via operação OR) com uma das flags: TacNDJavaLib.NEW_DUKPT_MODE_DUK, TacNDJavaLib.NEW_DUKPT_MODE_PEK ou TacNDJavaLib.NEW_DUKPT_MODE_MEK
TacNDJavaLib.NEW_DUKPT_MODE_EXP Gera uma chave DUKPT exportável. Esta é uma flag de atributo e deve ser utilizada combinada com outras flags. Utilizar apenas se especificamente necessário.
TacNDJavaLib.NEW_DUKPT_MODE_TMP Gera uma chave DUKPT temporária. Esta é uma flag de atributo e deve ser utilizada combinada com outras flags.
Retorna
Retorna o nome da chave DUKPT gerada.
Exceções
TacException

◆ generateDUKPTName()

String generateDUKPTName ( byte[] baKSI,
byte[] baDID_CTR ) throws TacException

Gera o nome da DUKPT a partir de uma KSI e CTR informados.

Parâmetros
baKSIBuffer de tamanho TacNDJavaLib.MIN_KSI_LEN contendo o KSI (primeiros 05 bytes do KSN).
baDID_CTRBuffer de tamanho TacNDJavaLib.MIN_CTR_LEN contendo o DID e CTR (últimos 05 bytes do KSN).
Retorna
Retorna o nome da chave DUKPT.
Exceções
TacException

◆ generateBDKName()

String generateBDKName ( byte[] baKSI) throws TacException

Gera o nome da BDK a partir de uma KSI (Key Serial Identification).

Parâmetros
baKSIBuffer de tamanho TacNDJavaLib.MIN_KSI_LEN contendo o KSI (primeiros 05 bytes do KSN).
Retorna
Retorna o nome da chave BDK.
Exceções
TacException

◆ translatePINBlock()

byte[] translatePINBlock ( String srcPEK,
String dstPEK,
int transBlockType,
String PAN,
byte[] inPINBlock ) throws TacException

Faz a tradução de um PIN Block, decriptando o bloco com uma chave e encriptando com outra.

O formato de bloco de entrada é identificado automaticamente, e o formato de bloco de saída pode ser definido pelo chamador, desde que a troca do formato não seja de um PAN Unbound para um PAN Bound. Os formatos PAN Bound são aqueles que utilizam informação de PAN em sua composição. É possível, portanto, realizar tanto tradução de chaves quanto tradução de formato. O chamador pode fazer uma validação forçada do formato indicando para o formato de saída, o mesmo que está usando no PIN Block de entrada.

Parâmetros
srcPEKIdentificador da chave de decriptação dentro do HSM.
dstPEKIdentificador da chave de encriptação dentro do HSM.
transBlockTypeIdentificador do formato do bloco de saída. De acordo com a tabela abaixo.
Valor Significado
TacNDJavaLib.TP_TRANSLATE_TYPE_AUTO Faz uma conversão de forma opaca, traduzindo do bloco com a chave de origem para o bloco com a chave de destino, sem análise do formato ou conteúdo do bloco.
PAN Bound: não se aplica.
TacNDJavaLib.TP_TRANSLATE_TYPE_ISO_0 Utiliza o tipo de bloco ISO PIN Block Format 0 (equivalente ao ANSI PIN Block Format 0 e ao VISA PIN Block Format 1).
PAN Bound: sim.
TacNDJavaLib.TP_TRANSLATE_TYPE_ISO_1 Utiliza o tipo de bloco ISO PIN Block Format 1.
PAN Bound: não.
TacNDJavaLib.TP_TRANSLATE_TYPE_ISO_3 Utiliza o tipo de bloco ISO PIN Block Format 3.
PAN Bound: sim.
TacNDJavaLib.TP_TRANSLATE_TYPE_IBM_3624 Utilizada o tipo de bloco IBM 3624.
Não implementado.
PANPAN (Primary Account Number).
inPINBlockPIN Block de entrada. O buffer deve ter o tamanho de um PIN Block, TacNDJavaLib.DES_BLOCK (8 bytes)
Retorna
PIN block de saída.
Exceções
TacException
Anotações
No caso de uma conversão não opaca, ou seja de uma tradução de formato, se o formato do PIN Block de entrada não puder ser reconhecido, será retornado erro D_ERR_OPERATION_FAILED.
O método ISO PIN Block Format 2 não é implementado no HSM, pois este formato é destinado para ser usado na proteção do PIN quando é submetido da leitora do chip do cartão.

◆ exportTR31()

byte[] exportTR31 ( String kbpk,
String key,
int usage,
byte mode,
byte export ) throws TacException

Exporta uma chave no formato TR-31 de acordo com o padrão ASC X9 TR 31-2018.

Parâmetros
kbpkNome da chave KBPK (Key Block Protection Key) utilizada para derivar as chaves de encriptação e autenticação.
keyNome da chave que será exportada do HSM.
usageIdentificador de uso de chave, como descrito no ASC X9 TR 31-2018 Seção A.5.1 tabela 6. As seguintes opções são aceitas.
Valor Significado
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_AUTO Define o identificador automaticamente. Os seguintes valores são utilizados: TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_D0 para chave simétrica e TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_D1 para chave assimétrica.
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_B0 BDK Base Derivation Key
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_B1 Initial DUKPT Key
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_B2 Base Key Variant Key
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_C0 CVK Card Verification Key
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_D0 Symmetric Key for Data Encryption
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_D1 Asymmetric Key for Data Encryption
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_D2 Data Encryption Key for Decimalization Table
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E0 EMV/chip Issuer Master Key: Application cryptograms
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E1 EMV/chip Issuer Master Key: Secure Messaging for Confidentiality
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E2 EMV/chip Issuer Master Key: Secure Messaging for Integrity
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E3 EMV/chip Issuer Master Key: Data Authentication Code
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E4 EMV/chip Issuer Master Key: Dynamic Numbers
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E5 EMV/chip Issuer Master Key: Card Personalization
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E6 EMV/chip Issuer Master Key: Other
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_I0 Initialization Vector (IV)
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_K0 Key Encryption or wrapping
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_K1 TR-31 Key Block Protection Key
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_K2 TR-34 Asymmetric key
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_K3 Asymmetric key for key agreement/key wrapping
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M0 ISO 16609 MAC algorithm 1 (using TDEA)
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M1 ISO 9797-1 MAC Algorithm 1
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M2 ISO 9797-1 MAC Algorithm 2
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M3 ISO 9797-1 MAC Algorithm 3
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M4 ISO 9797-1 MAC Algorithm 4
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M5 ISO 9797-1:1999 MAC Algorithm 5
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M6 ISO 9797-1:2011 MAC Algorithm 5/CMAC
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M7 HMAC
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M8 ISO 9797-1:2011 MAC Algorithm 6
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_P0 PIN Encryption
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_S0 Asymmetric key pair for digital signature
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_S1 Asymmetric key pair, CA key
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_S2 Asymmetric key pair, nonX9.24 key
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_V0 PIN verification, KPV, other algorithm
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_V1 PIN verification, IBM 3624
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_V2 PIN Verification, VISA PVV
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_V3 PIN Verification, X9.132 algorithm 1
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_V4 PIN Verification, X9.132 algorithm 2
modeIdentificador do modo de uso da chave, como descrito no ASC X9 TR 31-2018 Seção A.5.3 tabela 8. As seguintes opções são aceitas.
Valor Significado
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_AUTO Define o identificador de modo de uso automaticamente. O seguinte valor é utilizado TacNDJavaLib.EFT_ME_TR31_EXP_MODE_N.
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_B Ambos Encriptação & Decriptação / Wrap & Unwrap
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_C Ambos Geração & Verificação
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_D Decriptação / Unwrap Apenas
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_E Encriptação / Wrap Apenas
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_G Geração Apenas
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_N Sem restrições especiais (exceto as restrições definidas pelo identificador de uso da chave)
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_S Assinatura Apenas
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_T Ambos Assinatura & Decriptação
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_V Verificação Apenas
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_X Chave usada para derivar outra(s) chave(s)
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_Y Chave usada para criar variantes de chaves
exportIdentificador de exportabilidade da chave, como descrito no ASC X9 TR 31-2018 Seção A.5.5 tabela 10. As seguintes opções são aceitas.
Valor Significado
TacNDJavaLib.EFT_ME_TR31_EXP_AUTO Define o identificador de exportabilidade automaticamente. O seguinte valor é utilizado TacNDJavaLib.EFT_ME_TR31_EXP_X9_24.
TacNDJavaLib.EFT_ME_TR31_EXP_X9_24 Exportável sob uma KEK (Key Encryption Key) em um formato de encontro com o definido nos requisitos do X9.24 Partes 1 ou 2.
TacNDJavaLib.EFT_ME_TR31_EXP_NON_EXPORTABLE Não exportável pelo recebedor do Key Block, ou local de armazenamento. Não impede a exportação de chaves derivadas de uma chave não exportável.
TacNDJavaLib.EFT_ME_TR31_EXP_KEK_EXPORTABLE Sensível, Exportável sob uma KEK (Key Encryption Key) em um formato não necessariamente de acordo com os requisitos do X9.24 Partes 1 ou 2.
Retorna
key block
Exceções
TacException
Anotações
Essa API exporta uma chave usando os métodos de geração de key_block abaixo.
Algoritmo da KBPK Método de exportação
3DES 5.3.2.1 Key Derivation Binding Method - TDEA
AES 5.3.2.3 Key Block Binding Method – AES

◆ importTR31()

void importTR31 ( String kbpk,
String key,
int keyAttributes,
byte[] keyBlock ) throws TacException

Importa uma chave no formato TR-31 de acordo com o padrão ASC X9 TR 31-2018.

Parâmetros
kbpkNome da chave KBPK (Key Block Protection Key) utilizada para derivar as chaves de encriptação e autenticação.
keyNome da chave que será importada no HSM.
keyAttributesParâmetros adicionais da chave. Veja as opções no método createKey().
keyBlockkey block
Exceções
TacException
Anotações
Essa API importa chaves protegidas pelos métodos de geração do key_block.
Algoritmo da KBPK Método
3DES 5.3.2.1 Key Derivation Binding Method - TDEA
AES 5.3.2.3 Key Block Binding Method – AES