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

Ejemplo de SPB para la generación de claves, CSR e importación de certificados.

Véase la nota sobre ejemplos.
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dinamo.h>
#ifdef WIN32
#include <process.h>
#define FSTAT(x,y) _fstat(_fileno(x), y)
#define STAT _stat
#else
#define FSTAT(x,y) fstat(fileno(x),y)
#define STAT stat
#endif
/* Parámetros de conexión */
#define HSM_IP "127.0.0.1"
#define HSM_USR "maestro"
#define HSM_PWD "12345678"
int main(void)
{
int nRet = 0;
struct AUTH_PWD_EX stAUTPWD = {0};
HSESSIONCTX hSession = NULL;
char szOutPrivKeyName[MAX_OBJ_ID_FQN_LEN] = {0};
char *szISPB_DOMAIN = "12345678@MES01";
char *szSubject = "/CN=BANCO TESTE S/A P001/OU=SISBACEN-00888/OU=ISPB-54444619/O=ICP-Brasil/L=Sao Paulo/S=Sao Paulo/C=BR";
DWORD dwCSRLen = 0;
BYTE *pbCSR = NULL;
char *szDominio = "MES01";
¡¡¡/* Nota: !!! ¡¡¡Cambiar este buffer con el certificado recibido de la Autoridad de Certificación !!! */
BYTE pbCertificate[] = {0x00, 0x00};
// Preenche a estrutura de usuario
strncpy(stAUTPWD. szAddr, HSM_IP, sizeof(stAUTPWD.szAddr));
strncpy(stAUTPWD.szUserId, HSM_USR, sizeof(stAUTPWD.szUserId));
strncpy(stAUTPWD. szPassword, HSM_PWD, sizeof(stAUTPWD.szPassword));
stAUTPWD. nPort = DEFAULT_PORT;
stAUTPWD. nStrongAuthLen = 0;
stAUTPWD. pbStrongAuth = NULL;
stAUTPWD. dwAuthType = SA_AUTH_NONE;
nRet = DOpenSession(&hSession, SS_USR_PWD_EX,(BYTE *)&stAUTPWD, sizeof(struct AUTH_PWD_EX), CACHE_BYPASS | LB_BYPASS | ENCRYPTED_CONN);
si (nRet)
{
printf("DOpenSession : ¡Falló! %d.\n", nRet);
ir a limpiar;
}
/* Genera la clave privada */
nRet = DSPBGenerateKey( hSession, szISPB_DOMAIN, szOutPrivKeyName, EXPORTABLE_KEY, 0 );
if( nRet )
{
printf("DSPBGenerateKey : ¡Falló! %d.\n", nRet);
ir a limpiar;
}
/* Genera el CSR */
nRet = DSPBGenerateCSR(hSession,
szOutPrivKeyName,
szAsunto,
&dwCSRLen,
&pbCSR,
0);
si (nRet)
{
printf("DSPBGenerateKey : ¡Falló! %d.\n", nRet);
ir a limpiar;
}
/* Importa el certificado relacionado con la clave privada en el HSM */
nRet = DSPBImportCertificate (hSession, 0, NULL, pbCertificate, sizeof(pbCertificate), szDomain, 0);
if( nRet ) {
printf("DSPBImportCertificate(sin filtro) : ¡Error! %d.\n", nRet);
ir a limpiar;
}
limpia:
if( hSession ) {
DCloseSession(&hSession, 0);
}
if( pbCSR ) {
DFree(pbCSR);
}
devolver nRet;
}
Interfaz de programación de aplicaciones (API) de HSM Dinamo.
void * HSESSIONCTX
Definición dinamo.h:68
#define CORE_P10_CSR_VERSION1
dinamoDefinición.h:1818
#define PUERTO_DEFAULT
Definición dinamo.h:1948
#define CACHE_BYPASS
dinamoDefinición.h:589
#define SA_AUTH_NONE
dinamoDefinición.h:594
unsigned char BYTE
Definición dinamo.h:45
#define LB_BYPASS
dinamoDefinición.h:588
unsigned int DWORD
Definición dinamo.h:46
#define ENCRYPTED_CONN
dinamoDefinición.h:585
#define P10_CSR_PEM
dinamoDefinición.h:1822
#define MAX_OBJ_ID_FQN_LEN
dinamoDefinición.h:1713
#define SS_USR_PWD_EX
dinamoDefinición.h:579
#define EXPORTABLE_KEY
dinamoDefinición.h:1422
void AAP_API DFree(void *p)
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()
int AAP_API DSPBImportCertificate(HSESSIONCTX hSession, BYTE bActivate, const char *szUser, BYTE *pbCertificate, DWORD dwCertificateLen, const char *szDomain, DWORD dwParam)
int AAP_API DSPBGenerateCSR(HSESSIONCTX hSession, char *szPrivateKeyName, BYTE bVersion, char *szSPBSubject, DWORD dwOutType, DWORD *pdwCSRLen, BYTE **ppbCSR, DWORD dwParam)
int AAP_API DSPBGenerateKey(HSESSIONCTX hSession, char *szID, char *szPrivateKeyName, DWORD dwKeyParam, DWORD dwParam)
dinamoDefinición.h:3101
int nPuerto
Definición dinamo.h:3103
char szUserId[MAX_USR_LEN]
Definición dinamo.h:3104
DWORD dwAuthType
Definición dinamo.h:3106
char szAddr[MAX_ADDR_LEN]
Definición dinamo.h:3102
char szContraseña[MAX_USR_PWD]
Definición dinamo.h:3105
int nStrongAuthLen
dinamoDefinición.h:3112
BYTE * pbStrongAuth
Definición dinamo.h:3111