NET API
HSM Dinamo
Loading...
Looking for...
No entries found
eft_verify_pinblock.cs

Example of PIN block verification.

See Note on examples.
using System;
using System.IO;
using Dinamo.Hsm;
namespace EFTVerifyPINBlock
{
class Program
{
static void Main(string[] args)
{
string address = "127.0.0.1";
string user = "master";
string pass = "12345678";
/*
Conecta ao HSM
*/
hsm.Connect(address, user, pass);
/*
Importa chaves de teste, PGK e PTK.
*/
string pgk = "pgk";
byte[] pgkKeyData = {0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23,
0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23,
0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23};
IntPtr pgkHandle = hsm.ImportKey(pgk, IntPtr.Zero, pgkKeyData,
DinamoClient.BLOB_TYPE.PLAINTEXTKEY_BLOB,
DinamoClient.KEY_ALG.ALG_3DES_168);
string ptk = "ptk";
byte[] ptkKeyData = {0x4F, 0xDA, 0x0D, 0xE0, 0x7F, 0xCE, 0xD9, 0x58,
0xB5, 0x45, 0x4C, 0x25, 0xE3, 0xBA, 0xF4, 0x13,
0x16, 0xFD, 0x19, 0x0B, 0x31, 0xBF, 0xAD, 0x54 };
IntPtr ptkHandle = hsm.ImportKey(ptk, IntPtr.Zero, ptkKeyData,
DinamoClient.BLOB_TYPE.PLAINTEXTKEY_BLOB,
DinamoClient.KEY_ALG.ALG_3DES_168);
/*
Verifica um PINBlock
*/
byte[] pinblock = {0x5B, 0xFC, 0x77, 0x9A, 0x3A, 0x52, 0x60, 0xAA };
string pan ="4987654321098765";
string offset = "3152";
bool isValidPIN = hsm.VerifyPINBlock(ptk, pgk, pan, offset, pinblock);
Console.WriteLine("PIN is {0}!", isValidPIN ? "valid" : "invalid");
/*
Libera handle, remove chave e desconecta
*/
hsm.DestroyKey(pgkHandle);
hsm.DestroyKey(ptkHandle);
hsm.RemoveObject(pgk);
hsm.RemoveObject(ptk);
hsm.Disconnect();
}
}
}
Classe de API para acesso às funcionalidades do HSM Dinamo. Nessa classe é possível programar utiliza...
Definição DinamoClient.cs:93
KEY_ALG
Definição DinamoClient.cs:227
BLOB_TYPE
Definição DinamoClient.cs:449
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...
Definição DinamoClient.cs:4453
void DestroyKey(IntPtr hKey)
Libera handle de chave.
Definição DinamoClient.cs:1953
IntPtr ImportKey(string KeyId, IntPtr hKeyEncryptionKey, byte[] byKeyBlob, BLOB_TYPE BlobType, KEY_ALG AlgId)
Definição DinamoClient.cs:2668
void RemoveObject(string ObjectId)
Remove um objeto do HSM.
Definição DinamoClient.cs:2397
void Connect(string User, string Password)
Estabelece uma conexão cifrada com o HSM utilizando as configurações de load balance.
Definição DinamoClient.cs:562
void Disconnect(bool flagClose)
Encerra a conexão com o HSM.
Definição DinamoClient.cs:814
Namespace que denota um conjunto de funções para acesso ao HSM Dinamo e suas respectivas exceptions.
Definição DinamoClient.cs:12