DINAMO Networks ¡Ahora es una empresa de ciberseguridad deDINAMO !
NET API
HSM DINAMO
Cargando...
Buscando...
No se han encontrado entradas
pix_handle_request.cs

Ejemplo de uso del handle PIX, que encapsula la conexión HTTP persistente y el material TLS, con las operaciones HTTP POST, PUT, GET y DELETE según el estándar PIX definido en el SPI (Sistema de Pagos Instantáneos).

Véase la nota sobre ejemplos.
using Dinamo.Hsm;
using System;
using System.Text;
namespace PIXHandleRequest
{
class Program
{
private static String strAddr = "127.0.0.1";
private static String strUsrId = "master";
private static String strPwd = "12345678";
static void Main(string[] args)
{
String strKey = "key";
String strKeyCert = "key_cert";
String strPIXChain = "pix_chain";
String strUrl = "https://127.0.0.1:8000";
String[] pstrHeaderContents = { "Content-Type: application/xml; charset=utf-8" };
byte[] pbRequestData = Encoding.ASCII.GetBytes(
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><xml>teste</xml>");
try
{
/* Configura o cache de conexões HTTP, de escopo da biblioteca */
DinamoPixHttpSession.CacheMaxHandles = 8;
DinamoPixHttpSession.CacheIdleTtlSeconds = 300;
/*
Não há Connect aqui. O handle guarda as credenciais e a identificação
dos objetos; a sessão com o HSM é aberta apenas durante o handshake
TLS, e liberada em seguida. Sem noCache o handle é uma referência
leve: a conexão HTTP vem do cache da biblioteca a cada requisição.
*/
using (DinamoPixHttpSession session = new DinamoPixHttpSession(strAddr,
strUsrId,
strPwd,
strKey,
strKeyCert,
strPIXChain))
{
PIXHttpResponse response = session.Post(strUrl, pstrHeaderContents, pbRequestData, 30000, 0);
Console.Out.WriteLine("POST HTTP " + response.HttpCode + ", " + response.Body.Length + " bytes de corpo.");
response = session.Put(strUrl, pstrHeaderContents, pbRequestData, 30000, 0);
Console.Out.WriteLine("PUT HTTP " + response.HttpCode + ", " + response.Body.Length + " bytes de corpo.");
response = session.Get(strUrl, pstrHeaderContents, 30000, 0);
Console.Out.WriteLine("GET HTTP " + response.HttpCode + ", " + response.Body.Length + " bytes de corpo.");
response = session.Delete(strUrl, pstrHeaderContents, 30000, 0);
Console.Out.WriteLine("DELETE HTTP " + response.HttpCode + ", " + response.Body.Length + " bytes de corpo.");
/* Detalhes e tempos da última requisição */
PIXRequestDetails details = session.GetRequestDetails();
Console.Out.WriteLine("Tempo total: " + details.TotalTime + " ms.");
/*
Os contadores vivem no handle, então precisam ser lidos antes de
ele ser destruído.
*/
PIXHandleStats stats = session.GetStats();
Console.Out.WriteLine("Conexões TLS novas: " + stats.SslHookCount);
Console.Out.WriteLine("Assinaturas no HSM: " + stats.HsmSignCount);
Console.Out.WriteLine("Retomadas de sessão TLS: " + (stats.SslHookCount - stats.HsmSignCount));
}
/* Contadores do cache, de escopo da biblioteca */
PIXCacheStats cacheStats = DinamoPixHttpSession.GetCacheStats();
Console.Out.WriteLine("Conexões no cache: " + cacheStats.HandlesLive);
Console.Out.WriteLine("Pico de conexões no cache: " + cacheStats.HandlesHighWater);
/*
Fecha as conexões do cache. É o que faz a troca do certificado, da
cadeia ou da chave passar a valer sem esperar a conexão cair sozinha.
*/
DinamoPixHttpSession.ClearCache();
}
catch (DinamoException e)
{
Console.Out.WriteLine(e.Message);
Console.Out.WriteLine(e.ErrorCode);
}
}
}
}
Classe de Excecao para erros do Dinamo.
Definição DinamoException.cs:10
override string Message
Definição DinamoException.cs:42
int ErrorCode
Definição DinamoException.cs:26
Namespace que denota um conjunto de funções para acesso ao HSM Dinamo e suas respectivas exceptions.
Definição DinamoClient.cs:12