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. | |
EftKeyParts | exportKeyParts (String keyId, int flags) throws TacException |
Exporta uma chave ZPK (Zone PIN Key) ou ZMK (Zone Master Key). | |
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 |
Gera um CVV (Card Verification Value), CVV2 ou iCVV utilizando uma chave dentro do HSM. | |
boolean | verifyCVV (String keyId, String pan, String expirationDate, String serviceCode, String cvv, int params) throws TacException |
Verifica um CVV (Card Verification Value), , CVV2 ou iCVV utilizando uma chave dentro do HSM. | |
boolean | verifyPINBlock (String ptk, String pgk, String pan, String offset, byte[] pinBlock, int param) throws TacException |
Verifica a validade de um PIN em um PIN Block. | |
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).
baKSI | Buffer de tamanho TacNDJavaLib.MIN_KSI_LEN contendo o KSI (primeiros 05 bytes do KSN). | ||||||||||||||
baDID_CTR | Buffer de tamanho TacNDJavaLib.MIN_CTR_LEN contendo o DID e CTR (últimos 05 bytes do KSN). | ||||||||||||||
dwParam | Flags de operação de acordo com a tabela abaixo.
|
TacException |
String generateDUKPTName | ( | byte[] | baKSI, |
byte[] | baDID_CTR ) throws TacException |
Gera o nome da DUKPT a partir de uma KSI e CTR informados.
baKSI | Buffer de tamanho TacNDJavaLib.MIN_KSI_LEN contendo o KSI (primeiros 05 bytes do KSN). |
baDID_CTR | Buffer de tamanho TacNDJavaLib.MIN_CTR_LEN contendo o DID e CTR (últimos 05 bytes do KSN). |
TacException |
String generateBDKName | ( | byte[] | baKSI | ) | throws TacException |
Gera o nome da BDK a partir de uma KSI (Key Serial Identification).
baKSI | Buffer de tamanho TacNDJavaLib.MIN_KSI_LEN contendo o KSI (primeiros 05 bytes do KSN). |
TacException |
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.
srcPEK | Identificador da chave de decriptação dentro do HSM. | ||||||||||||
dstPEK | Identificador da chave de encriptação dentro do HSM. | ||||||||||||
transBlockType | Identificador do formato do bloco de saída. De acordo com a tabela abaixo.
| ||||||||||||
PAN | PAN (Primary Account Number). | ||||||||||||
inPINBlock | PIN Block de entrada. O buffer deve ter o tamanho de um PIN Block, TacNDJavaLib.DES_BLOCK (8 bytes) |
TacException |
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.
kbpk | Nome da chave KBPK (Key Block Protection Key) utilizada para derivar as chaves de encriptação e autenticação. | ||||||||||||||||||||||||||
key | Nome da chave que será exportada do HSM. | ||||||||||||||||||||||||||
usage | Identificador 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. | ||||||||||||||||||||||||||
mode | Identificador 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.
| ||||||||||||||||||||||||||
export | Identificador 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.
|
TacException |
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 |
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.
kbpk | Nome da chave KBPK (Key Block Protection Key) utilizada para derivar as chaves de encriptação e autenticação. |
key | Nome da chave que será importada no HSM. |
keyAttributes | Parâmetros adicionais da chave. Veja as opções no método createKey(). |
keyBlock | key block |
TacException |
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 |
EftKeyParts exportKeyParts | ( | String | keyId, |
int | flags ) throws TacException |
Exporta uma chave ZPK (Zone PIN Key) ou ZMK (Zone Master Key).
A exportação é feita por partes, com os seus respectivos valores de verificação como descrito no VISA Payment Technology Standards Manual, october 2007.
keyId | Nome da chave que será exportada. | ||||||
flags | As seguintes opções são aceitas.
|
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 |
Gera um CVV (Card Verification Value), CVV2 ou iCVV utilizando uma chave dentro do HSM.
Esta API também pode ser usada para a geração dos códigos de verificação de cartão que suportam o protocolo 3-D Secure. No caso da Visa o serviço que implementa o protocolo é o Verified by Visa, e o HSM suporta o padrão CAVV (Cardholder Authentication Verification Value, que é o CVV2 com método ATN). No caso da Mastercard o protocolo 3-D Secure é implementado no serviço SecureCode, o HSM suporta os padrões CVC2 (Card Verification Code 2) e HMAC SHA1.
keyId | Nome da chave. Esta chave é a CVK (Card Verification Key), uma chave 3DES de 112 bits, e deve ser a mesma que será usada para a verificação do CVV. Esta chave pode ser gerada internamente no HSM ou importada manualmente. Normalmente esta chave também é usada na Visa, enviada cifrada pela ZCMK (Zone Contro Master Key). Conforme determinado no manual da Visa, a chave 3DES 112 usada como CVK deve ser diferente da chave usada para geração e verificação de PIN e não deve ser usada para outras aplicações do emissor, com exceção do CVV2 e iCVV. |
pan | PAN (Primary Account Number). Tamanho de de 12 a 19 caracteres. Para o cálculo de CVV, CVV2 e iCVV, conforme o padrão da Visa, no documento Payment Technology Standards Manual, de 2007, é independente do tamanho do PAN. Para o cálculo de CVC2, conforme o documento da Mastercard SPA Algorithm for the MasterCard Implementation of 3-D Secure – v1.04, o tamanho do PAN deve ser exatamente de 16 dígitos; quando for menor precisa se completado à esquerda com zeros, e quando for maior devem ser usados apenas os 16 dígitos mais à direita. |
expirationDate | Data de expiração. Tamanho de 4 dígitos. Na geração de CVV e iCVV o formato deve ser YYMM. Na geração de CVV2 o formato deve ser MMYY. No cáculo de CVC2 este campo deve ser uma string terminada em zero com os 4 dígitos menos significativos do Transaction Sequence Number, contido no AVV (Accountholder Authentication Value) convertido no BCD decimal equivalente. Qualquer valor menor que 4 dígitos deve ser completado à esquerda com zeros até inteirar os 4 dígitos. Para mais detalhes consulte o documento da Mastercard SPA Algorithm for the MasterCard Implementation of 3-D Secure – v1.04. No cáculo de CAVV (CVV2 com o Método ATN), este campo deve ser uma string terminada em zero com os 4 dígitos menos significativos do ATN (Authentication Tracking Number). Para mais detalhes consulte o documento da Visa 3-D Secure Functional Requirements Access Control Server v. 1.0.2. |
serviceCode | Service Code. Tamanho de 3 dígitos. Para a geração de iCVV (Alternate Card Verification Value), o Service Code deve ser 999. Para a geração de CVV 2, o Service Code deve ser 000. Para a geração de CVV tradicional, o Service Code normalmente é 101. |
params | Reservado para uso futuro (deve ser 0). |
TacException |
boolean verifyCVV | ( | String | keyId, |
String | pan, | ||
String | expirationDate, | ||
String | serviceCode, | ||
String | cvv, | ||
int | params ) throws TacException |
Verifica um CVV (Card Verification Value), , CVV2 ou iCVV utilizando uma chave dentro do HSM.
A API também pode ser usada para a verificação dos códigos de verificação de cartão que suportam o protocolo 3-D Secure. Veja mais detalhes na API generateCVV().
keyId | Nome da chave. Esta chave é a CVK (Card Verification Key), uma chave 3DES de 112 bits, e deve ser a mesma que foi usada na geração do CVV. |
pan | PAN (Primary Account Number). Tamanho de de 12 a 19 caracteres. Veja mais detalhes sobre este campo na API generateCVV(). |
expirationDate | Data de expiração. Tamanho de 4 dígitos. Na verificação de CVV e iCVV o formato deve ser YYMM. Na verificação de CVV 2 o formato deve ser MMYY. Para informações sobre o suporte aos algoritmos do protocolo 3-D Secure veja mais detalhes sobre este campo na API generateCVV(). |
serviceCode | Service Code. Tamanho de 3 dígitos. Para a verificação de iCVV (Alternate Card Verification Value), o Service Code deve ser 999. Para a verificação de CVV 2, o Service Code deve ser 000. |
cvv | CVV a ser validado. Tamanho de 3 dígitos. O valor informado pode também ser um CVV2 ou iCVV, conforme os valores informados de Service Code. |
params | Reservado para uso futuro (deve ser 0). |
TacException |
boolean verifyPINBlock | ( | String | ptk, |
String | pgk, | ||
String | pan, | ||
String | offset, | ||
byte[] | pinBlock, | ||
int | param ) throws TacException |
Verifica a validade de um PIN em um PIN Block.
ptk | Identificador da chave de decriptação do “PIN Block” dentro do HSM. É a PIN Transport Key. |
pgk | Identificador da chave a ser utilizada na verificação do PIN dentro do HSM. É a PIN Generation Key. |
pan | PAN (Primary Account Number). Tamanho de 12 a 19 caracteres. |
offset | Offset do PIN. Deve ter tamanho entre TacNDJavaLib.MIN_EFT_PIN_LEN e TacNDJavaLib.MAX_EFT_PIN_LEN. |
pinBlock | PIN Block a ser validado. O formato de PIN Block esperado é ISO PIN Block Format 0 (equivalente ao ANSI PIN Block Format 0 e ao VISA PIN Block Format 1). O buffer deve ter o tamanho de um PIN Block, TacNDJavaLib.DES_BLOCK (8 bytes). |
param | Reservado para uso futuro (deve ser 0). |
TacException |