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

Exemplo de encriptação e decriptação simétrica utilizando o HSM.

Veja Nota sobre os exemplos.
using System;
using System.Collections.Generic;
using System.Text;
using Dinamo.Hsm;
namespace TesteNF
{
class Program
{
static void Main(string[] args)
{
DinamoClient dinamo = new DinamoClient();
dinamo.Connect( "10.0.62.16",
"master",
"12345678" );
//Nome da chave AES 256 dentro do HSM
string keyId = "aes256";
byte[] iv = new byte[DinamoApi.AES_IV_LEN]{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
//Dado original
byte[] originalData = Encoding.ASCII.GetBytes("asdfasdfasdfasdfasdfas");
//Adiciona o tamanho do bloco para caber um possivel padding.
//O tamanho do IV eh igual ao tamanho do bloco.
byte[] dataToEncrypt = new byte[originalData.Length + DinamoApi.AES_IV_LEN];
//Bloco que sera encriptado. Estes dados serao sobrescritos.
Array.Copy(originalData, dataToEncrypt, originalData.Length);
int dataToEncryptLen = originalData.Length;
dinamo.Encrypt( keyId,
IntPtr.Zero,
true,
iv,
DinamoClient.MODE_TYPE.MODE_CBC,
DinamoClient.PADDING_TYPE.PKCS5_PADDING,
dataToEncrypt,
ref dataToEncryptLen,
dataToEncrypt.Length);
dinamo.Decrypt( keyId,
IntPtr.Zero,
true,
iv,
DinamoClient.MODE_TYPE.MODE_CBC,
DinamoClient.PADDING_TYPE.PKCS5_PADDING,
dataToEncrypt,
ref dataToEncryptLen );
Console.Out.WriteLine("Dado decriptado:\n {0}", System.Text.Encoding.Default.GetString(dataToEncrypt));
Console.In.ReadLine();
}
}
}
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