Operações para Transferência Eletrônica de Fundos.
Consulte a documentação técnica do HSM.
Estruturas de Dados | |
class | DinamoClient.PinComponents |
Classe que encapsula os componentes da geração de PIN. Mais... | |
Enumerações | |
enum | GenPINOperation : UInt32 { DEFAULT_PIN = DinamoApi.GP_DEFAULT_PIN , USER_DEF_PIN = DinamoApi.GP_USER_DEF_PIN , RANDOM_PIN = DinamoApi.GP_RANDOM_PIN } |
Opções de operação de PIN. Mais... | |
Funções | |
string | GenBDKName (byte[] pbKSI) |
Gera o nome da BDK a partir de uma KSI (Key Serial Identification). | |
string | GenBDKName (byte[] pbKSI, uint dwParam) |
Gera o nome da BDK a partir de uma KSI (Key Serial Identification). | |
string | GenDUKPT (byte[] pbKSI, byte[] pbDID_CTR, uint dwParam) |
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 | GenCVV (string keyId, string pan, string expirationDate, string serviceCode) |
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. | |
bool | VerifyCVV (string keyId, string pan, string expirationDate, string serviceCode, string cvv) |
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 GenCVV(). | |
PinComponents | GenPIN (string pgk, string pan, GenPINOperation operation, int pinLen, string inPin) |
Faz operações de geração de PIN a partir dos dados de PAN (Personal Account Number) e nome de chave (PGK) informadas, com ou sem uso de offset. | |
bool | VerifyPINBlock (string ptk, string pgk, string pan, string offset, byte[] pinblock) |
Verifica a validade de um PIN em um PIN Block. Primeiro o PIN é extraído do PIN Block com a chave PTK, e depois é feita sua verificação com a chave PGK, a mesma que foi usada para geração do PIN, com a função GenPIN(). | |
byte[] | ExportTR31 (string kbpk, string key, EftExportUsage usage, EftExportMode mode, EftExportExpType exp) |
Exporta uma chave no formato TR-31 de acordo com o padrão ASC X9 TR 31-2018. | |
void | ImportTR31 (string kbpk, string key, bool isExportable, bool isTemporary, byte[] keyBlock) |
Importa uma chave no formato TR-31 de acordo com o padrão ASC X9 TR 31-2018. | |
enum GenPINOperation : UInt32 |
|
inline |
Gera o nome da BDK a partir de uma KSI (Key Serial Identification).
pbKSI | Buffer de tamanho MIN_KSI_LEN contendo o KSI. |
DinamoException | Lança exceção em caso de erro. |
|
inline |
Gera o nome da BDK a partir de uma KSI (Key Serial Identification).
pbKSI | Buffer de tamanho MIN_KSI_LEN contendo o KSI. |
dwParam | Reservado para uso futuro. |
DinamoException | Lança exceção em caso de erro. |
|
inline |
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).
pbKSI | Buffer de tamanho MIN_KSI_LEN contendo o KSI. |
pbDID_CTR | Buffer de tamanho MIN_CTR_LEN contendo o DID e CTR (últimos 05 bytes do KSN). |
dwParam | Flags de operação de acordo com a tabela abaixo. NEW_DUKPT_MODE_DUK : Gera uma chave DUK (Derived Unique Key) padrão de acordo com o manual ISO X9.24-1-2004. NEW_DUKPT_MODE_PEK : Gera uma chave PEK (PIN Encryption Key) de acordo com o manual ISO X9.24-1-2004 A aplicando o XOR da máscara 0000 0000 0000 FF00 nas partes da chave. NEW_DUKPT_MODE_MEK : Gera uma chave MEK (MAC Encryption Key) de acordo com o manual ISO X9.24-1-2004 A aplicando o XOR da máscara 0000 0000 0000 00FF nas partes da chave. 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: NEW_DUKPT_MODE_DUK, NEW_DUKPT_MODE_PEK ou NEW_DUKPT_MODE_MEK 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. NEW_DUKPT_MODE_TMP : Gera uma chave DUKPT temporária. Esta é uma flag de atributo e deve ser utilizada combinada com outras flags. NEW_DUKPT_MODE_IPEK : Gera uma chave IPEK (Initially Loaded PIN Entry Device Key) de acordo com o manual ISO X9.24-1-2004 A-6. |
DinamoException | Lança exceção em caso de erro. |
|
inline |
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 | Identificador da chave dentro do HSM. Este identificador não deve conter espaços ou caracteres especiais. Caracteres maiúsculos e minúsculos são diferenciados (case-sensitive). 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. |
DinamoException | Lança exceção em caso de erro. |
|
inline |
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 GenCVV().
keyId | Identificador da chave dentro do HSM. Este identificador não deve conter espaços ou caracteres especiais. Caracteres maiúsculos e minúsculos são diferenciados (case-sensitive). 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 GenCVV(). |
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 GenCVV(). |
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. |
DinamoException | Lança exceção em caso de erro. |
|
inline |
Faz operações de geração de PIN a partir dos dados de PAN (Personal Account Number) e nome de chave (PGK) informadas, com ou sem uso de offset.
pgk | Identificador da chave PGK (PIN Generation Key), dentro do HSM. | ||||||||
pan | PAN (Primary Account Number). | ||||||||
operation | Tipo da geração do PIN. Segundo a tabela abaixo.
|
pinLen | Tamanho de PIN a ser utilizado/gerado na operação. Deve ter tamanho entre DinamoApi.MIN_EFT_PIN_LEN e DinamoApi.MAX_EFT_PIN_LEN. |
inPin | PIN de entrada. Deve ter tamanho entre DinamoApi.MIN_EFT_PIN_LEN e DinamoApi.MAX_EFT_PIN_LEN. |
DinamoException | Lança exceção em caso de erro. |
|
inline |
Verifica a validade de um PIN em um PIN Block. Primeiro o PIN é extraído do PIN Block com a chave PTK, e depois é feita sua verificação com a chave PGK, a mesma que foi usada para geração do PIN, com a função GenPIN().
ptk | Identificador da chave de decriptação do “PIN Block” dentro do HSM. PIN Transport Key (PTK). |
pgk | Identificador da chave a ser utilizada na verificação do PIN dentro do HSM. PIN Generation Key (PGK). |
pan | PAN (Primary Account Number). |
offset | Offset do PIN. Deve ter tamanho entre DinamoApi.MIN_EFT_PIN_LEN e DinamoApi.MAX_EFT_PIN_LEN. |
pinblock | Buffer contendo o Pin Block de entrada que será verificado. 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, DinamoApi.DES_BLOCK (8 bytes). |
DinamoException | Lança exceção em caso de erro. |
|
inline |
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. |
mode | Identificador do modo de uso da chave, como descrito no ASC X9 TR 31-2018 Seção A.5.3 tabela 8. |
exp | Identificador de exportabilidade da chave, como descrito no ASC X9 TR 31-2018 Seção A.5.5 tabela 10. |
DinamoException | Lança exceção em caso de erro. |
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 |
|
inline |
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. |
isExportable | Define se a chave importada será exportável. |
isTemporary | Define se a chave importada será temporária. |
keyBlock | Key block no formato TR-31. |
DinamoException | Lança exceção em caso de erro. |
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 |