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

Exemplo de bloqueio e desbloqueio de objeto.

Veja Nota sobre os exemplos.
using System;
using System.IO;
using Dinamo.Hsm;
namespace BlockObject
{
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);
/*
Gera uma chave de testes e faz um teste em seguida.
*/
string keyId = "key_id";
IntPtr keyHandle = hsm.GenerateKey(keyId, DinamoClient.KEY_ALG.ALG_RSA_2048, true);
//O handle da chave não será mais necessário neste teste.
hsm.DestroyKey(keyHandle);
Console.WriteLine("\nTeste chave recém criada.");
Console.WriteLine("Chave bloqueada: {0}",
hsm.IsObjectBlocked(keyId));
TestAsymKeyAccess(hsm, keyId);
/*
Bloqueia e testa a chave.
*/
Console.WriteLine("\nTeste chave bloqueada.");
hsm.BlockObject(keyId, true);
Console.WriteLine("Chave bloqueada: {0}",
hsm.IsObjectBlocked(keyId));
TestAsymKeyAccess(hsm, keyId);
/*
Desbloqueia e testa a chave.
*/
Console.WriteLine("\nTeste chave desbloqueada.");
hsm.BlockObject(keyId, false);
Console.WriteLine("Chave bloqueada: {0}",
hsm.IsObjectBlocked(keyId));
TestAsymKeyAccess(hsm, keyId);
/*
Remove a chave de testes e desconecta do HSM.
*/
hsm.RemoveObject(keyId);
hsm.Disconnect();
}
static void TestAsymKeyAccess(DinamoClient hsm, string keyId)
{
var data = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 };
try{
hsm.SignHash(keyId, data, DinamoClient.HASH_ALG.ALG_SHA2_256);
}catch (DinamoException e)
{
Console.WriteLine("Falha no sign hash: " + e.Message);
return;
}
Console.WriteLine("Chave testada com sucesso.");
}
}
}
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