API .Net HSM Dinamo
API Proprietária .Net do HSM Dinamo
eft_verify_pinblock.cs

Exemplo de verificação de PIN block.

Veja Nota sobre os exemplos.
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";
DinamoClient hsm = new DinamoClient();
/*
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();
}
}
}
Namespace que denota um conjunto de funções para acesso ao HSM Dinamo e suas respectivas exceptions.
Definition: DinamoClient.cs:12
Definition: DinamoClient.cs:12