API C/C
HSM Dinamo
Cargando...
Buscando...
No se han encontrado entradas
m_de_n.c

Ejemplo de M para N.

Véase la nota sobre ejemplos.
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <dinamo.h> /* header do Dinamo */
#define HOST_ADDR "127.0.0.1"
int main()
{
int nRet = 0;
struct AUTH_PWD authPwd;
HSESSIONCTX hSession = NULL;
DN_M_OF_N_SPLIT_INFO stSplitInfo = {};
BYTE secret[DN_M_OF_N_S_LEN] = {};
//Inicializa as bibliotecas do Dinamo
nRet = DInitialize(0);
si (nRet){
printf("Fallo de función: DInicializar \nCódigo de error: %d\n", nRet);
ir a limpiar;
}
printf("Bibliotecas inicializadas.\n");
/*
Inicializa la estructura para conectar con el HSM mediante un
sesión anónima.
*/
strncpy(authPwd. szAddr, HOST_ADDR, sizeof(authPwd.szAddr));
authPwd. nPort = DEFAULT_PORT;
nRet = DOpenSession(&hSession, SS_ANONYMOUS,(BYTE *)&authPwd, sizeof(authPwd), ENCRYPTED_CONN);
si (nRet){
printf("Fallo de función: DOpenSession \nCódigo de error: %d\n", nRet);
ir a limpiar;
}
printf("Sesión con Dinamo establecida.\n");
/*
Divide el secreto en un esquema M de N, donde hay un conjunto de
Se necesitan 6 partes y 2 partes para reconstruir el secreto.
En este caso, como se pasó NULL en el parámetro secreto, el secreto es
generados aleatoriamente en el HSM.
*/
nRet = DMofNSplit(hSession, 2, 6, NULL, 0, &stSplitInfo, 0);
si (nRet)
{
printf("\nFallo de función: DMofNSplit\nCódigo de error: %d\n\n", nRet);
ir a limpiar;
}
printf("Secreto de M de N dividido con éxito.\n");
nRet = DMofNRecover(hSession, stSplitInfo. pstParts, stSplitInfo. dwPartCount, secret, 0);
si (nRet)
{
printf("\nFallo de función: DMofNRecover\nCódigo de error: %d\n\n", nRet);
ir a limpiar;
}
printf("Secreto de M de N recuperado con éxito.\n");
limpia:
if (hSession) {
DCloseSession(&hSession, 0);
printf("Sesión cerrada.\n");
}
printf("Bibliotecas finalizadas.\n");
devolver nRet;
}
Interfaz de programación de aplicaciones (API) de HSM Dinamo.
void * HSESSIONCTX
Definición dinamo.h:68
#define PUERTO_DEFAULT
Definición dinamo.h:1948
unsigned char BYTE
Definición dinamo.h:45
#define SS_ANONYMOUS
dinamoDefinición.h:575
#define DN_M_OF_N_S_LEN
Definición dinamo.h:3536
#define ENCRYPTED_CONN
dinamoDefinición.h:585
int AAP_API DMofNRecover(HSESSIONCTX hSession, DN_M_OF_N_PART *pstParts, DWORD dwPartsCount, BYTE *pbSecret, DWORD dwReserved)
int AAP_API DMofNSplit(HSESSIONCTX hSession, BYTE bM, BYTE bN, BYTE *pbSecret, DWORD dwSecretLen, DN_M_OF_N_SPLIT_INFO *pstSplitInfo, DWORD dwReserved)
int AAP_API DOpenSession(HSESSIONCTX *phSession, DWORD dwParam, BYTE *pbData, DWORD dwDataLen, DWORD dwFlags)
int AAP_API DCloseSession(HSESSIONCTX *phSession, DWORD dwFlags)
int AAP_API DInitialize(DWORD dwReserved)
int AAP_API DFinalize()
Definición dinamo.h:3089
int nPuerto
Definición dinamo.h:3091
char szAddr[MAX_ADDR_LEN]
Definición dinamo.h:3090
dinamoDefinición.h:3565
DWORD dwPartCount
dinamoDefinición.h:3569
DN_M_OF_N_PART pstParts[DN_M_OF_N_S_MAX]
dinamoDefinición.h:3568