API C/C++
HSM Dinamo
Carregando...
Procurando...
Nenhuma entrada encontrado
Criptografia

Descrição detalhada

Operações de hash de criptogragia simétrica e assimétrica.

Funções

int AAP_API DEncrypt (HKEYCTX hKey, HHASHCTX hHash, BOOL bFinal, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen)
 
int AAP_API DDecrypt (HKEYCTX hKey, HHASHCTX hHash, BOOL bFinal, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
 
int AAP_API DCreateHash (HSESSIONCTX hSession, int nAlgId, HKEYCTX hKey, DWORD dwFlags, HHASHCTX *hHash)
 
int AAP_API DHashData (HHASHCTX hHash, BYTE *pbData, DWORD dwDataLen, DWORD dwFlags)
 
int AAP_API DSetHashParam (HHASHCTX hHash, DWORD dwParam, BYTE *pbData, DWORD dwDataLen, DWORD dwFlags)
 
int AAP_API DGetHashParam (HHASHCTX hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags)
 
int AAP_API DSignHash (HHASHCTX hHash, HKEYCTX hKey, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen)
 
int AAP_API DDestroyHash (HHASHCTX *phHash)
 
int AAP_API DVerifySignature (HHASHCTX hHash, BYTE *pbSignature, DWORD dwSigLen, HKEYCTX hPubKey, DWORD dwFlags)
 
int AAP_API DDuplicateHash (HHASHCTX hHash, DWORD dwFlag, HHASHCTX *phHash)
 
int AAP_API DGetRandom (HSESSIONCTX hSession, BYTE *pbData, DWORD dwDataLen)
 
int AAP_API DGenEcdhKey (HSESSIONCTX hSession, DWORD dwOP, char *szPriKey, void *pvInData, DWORD dwInDataLen, BYTE *pbOutData, DWORD *pdwOutDataLen, DWORD dwFlags)
 
int AAP_API DCRLCertCheck (HSESSIONCTX hSession, char *szCRL, char *szCertId, char *szVerifyInfo)
 
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 DMofNRecover (HSESSIONCTX hSession, DN_M_OF_N_PART *pstParts, DWORD dwPartsCount, BYTE *pbSecret, DWORD dwReserved)
 

Funções

◆ DEncrypt()

int AAP_API DEncrypt ( HKEYCTX hKey,
HHASHCTX hHash,
BOOL bFinal,
DWORD dwFlags,
BYTE * pbData,
DWORD * pdwDataLen,
DWORD dwBufLen )

#include <dinamo.h>

Criptografa de dados. O algoritmo usado depende da chave informada no parâmetro hKey.

Parâmetros
[in]hKeyContexto de chave.
[in]hHashContexto de hash se os dados forem submetidos à operação de hash antes de serem criptografados. Depois da operação completa, o valor do hash pode ser obtido através da função DGetHashParam().
[in]bFinalIndica o último bloco de uma série que foi cifrada. TRUE para último bloco ou FALSE caso contrário.
[in]dwFlagsDeve ser passado 0, os valores da tabela abaixo são aceitos para casos específicos.
Valor Significado
D_NO_RSA_PADDING Não faz/desfaz o padding para chaves RSA. Usar apenas para chaves RSA. Pode ser utilizada juntamente com a flag D_FORCE_ACTUAL_RSA.
D_FORCE_ACTUAL_RSA Utiliza a chave RSA de maneira direta. Encriptação com chave privada em DEncrypt e decript com DDecrypt. Pode ser utilizada juntamente com a flag D_NO_RSA_PADDING.
[in,out]pbDataPonteiro para um buffer que contem os dados a serem criptografados. Quando a função retorna, os dados originais são sobrescritos pelo resultado da operação de criptografia.
O tamanho buffer é especificado pelo parâmetro dwBufLen, o número de bytes a serem processados é especificado pelo parâmetro pdwDataLen. O tamanho do buffer deve ser grande o suficiente para conter os dados criptografados mais o padding.
[in,out]pdwDataLenPonteiro para um DWORD que contem o tamanho dos dados em pbData. Quando parâmetro de entrada, contém o número de bytes que serão processados, quando parâmetro de saída, contém o número de bytes dos dados criptografados.
Se o buffer alocado não for suficiente para receber todo o dado cifrado (faltar, por exemplo, espaço para o padding) a função irá falhar retornando D_MORE_DATA.
[in]dwBufLenTamanho do buffer passado em pbData. Para operações simétricas que exijam padding o buffer deve ter o tamanho mínimo do comprimento do dado mais o tamanho do bloco de operação do algoritmo a ser utilizado.
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Anotações
Se uma quantidade grande de dados for cifrada, ela pode ser feita em parte, com chamadas subsequentes de DEncrypt. Na última chamada o parâmetro bFinal deve ser passado com valor verdadeiro.
Apenas no último bloco o padding é feito (quando se aplicar), assim, os demais blocos devem ter tamanho condizente com o algoritmo usado. O buffer onde os dados são passados deve ter tamanho suficiente para acondicionar também o padding.
Essa API suporta operações RSA feitas diretamente nesta função. Os dados para serem operados devem ter comprimento igual ou menor que o tamanho da chave menos 11 bytes. Quando utilizada a chave pública para criptografia o padding utilizado é PKCS#1 tipo 2 e no processo de decriptografia, o padding é verificado e retirado. Para operações com a chave privada, utiliza-se o padding PKCS#1 tipo 1. O HSM irá verificar a formatação do padding mesmo quando a operação não tem padding definido como em D_NO_RSA_PADDING. As operações de encriptação e decriptação RSA só são habilitadas em modo não restrito (NRM).
Veja também
DGenerateKey().
Exemplos
crypt_sym.c.

◆ DDecrypt()

int AAP_API DDecrypt ( HKEYCTX hKey,
HHASHCTX hHash,
BOOL bFinal,
DWORD dwFlags,
BYTE * pbData,
DWORD * pdwDataLen )

#include <dinamo.h>

Decriptografa dados, muitas vezes cifrado pela função DEncrypt. O algoritmo usado depende da chave informada no parâmetro hKey.

Parâmetros
[in]hKeyContexto de chave.
[in]hHashContexto de hash se os dados forem submetidos à operação de hash depois de serem decriptografados. Depois da operação completa, o valor do hash pode ser obtido através da função DGetHashParam().
[in]bFinalIndica o último bloco de uma série que foi cifrada. TRUE para último bloco ou FALSE caso contrário.
[in]dwFlagsDeve ser passado 0, os valores da tabela abaixo são aceitos para casos específicos.
Valor Significado
D_NO_RSA_PADDING Não faz/desfaz o padding para chaves RSA. Usar apenas para chaves RSA. Pode ser utilizada juntamente com a flag D_FORCE_ACTUAL_RSA.
D_FORCE_ACTUAL_RSA Utiliza a chave RSA de maneira direta. Encriptação com chave privada em DEncrypt e decript com DDecrypt. Pode ser utilizada juntamente com a flag D_NO_RSA_PADDING.
[in,out]pbDataPonteiro para um buffer que contem os dados a serem decriptografados. Quando a função retorna, os dados originais são sobrescritos pelo resultado da operação de criptografia.
Para operações simétricas de bloco, é necessário que o tamanho dos dados seja sempre múltiplo do bloco usado pelo algoritmo em questão.
[in,out]pdwDataLenPonteiro para um DWORD que contem o tamanho dos dados em pbData. Quando parâmetro de entrada, contém o número de bytes que serão processados, quando parâmetro de saída, contém o número de bytes dos dados em texto claro.
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Anotações
Se uma quantidade grande de dados for decifrada, ela pode ser feita em parte, com chamadas subsequentes de DDecrypt. Na última chamada o parâmetro bFinal deve ser passado com valor verdadeiro.
Apenas no último bloco o padding é desfeito (quando se aplicar), assim, os demais blocos devem ter tamanho condizentes com algoritmo usado, e se o modo de operação de criptografia simétrica CBC estiver sendo usado, o vetor de incialização será zerado.
Essa API suporta operações RSA feitas diretamente nesta função. Os dados para serem operados devem ter comprimento igual ao tamanho da chave. Quando utilizada a chave pública para criptografia o padding utilizado é PKCS#1 tipo 2 e no processo de decriptografia, o padding é verificado e retirado. Para operações com a chave privada, utiliza-se o padding PKCS#1 tipo 1. O HSM irá verificar a formatação do padding mesmo quando a operação não tem padding definido como em D_NO_RSA_PADDING. As operações de encriptação e decriptação RSA só são habilitadas em modo não restrito (NRM).
Exemplos
crypt_sym.c.

◆ DCreateHash()

int AAP_API DCreateHash ( HSESSIONCTX hSession,
int nAlgId,
HKEYCTX hKey,
DWORD dwFlags,
HHASHCTX * hHash )

#include <dinamo.h>

Inicializa um contexto de hash para ser usado com um fluxo de dados. Esse contexto é usado para chamadas subseqüentes DHashData(), DHashSessionKey(), entre outras.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]nAlgIdDefine o algoritmo associado ao contexto de hash.
Valor Significado
ALG_MD5 Algoritmo de hash MD5. hKey deve ser NULL.
ALG_SHA1 Algoritmo de hash SHA1. hKey deve ser NULL.
ALG_SSL_SHA1_MD5 Hash para autenticação de cliente em SSLv3. hKey deve ser NULL.
ALG_SHA2_224 Algoritmo de hash SHA2 - 224. hKey deve ser NULL.
ALG_SHA2_256 Algoritmo de hash SHA2 - 256. hKey deve ser NULL.
ALG_SHA2_384 Algoritmo de hash SHA2 - 384. hKey deve ser NULL.
ALG_SHA2_512 Algoritmo de hash SHA2 - 512. hKey deve ser NULL.
ALG_SHA3_224 Algoritmo de hash SHA3 - 224. hKey deve ser NULL.
ALG_SHA3_256 Algoritmo de hash SHA3 - 256. hKey deve ser NULL.
ALG_SHA3_384 Algoritmo de hash SHA3 - 384. hKey deve ser NULL.
ALG_SHA3_512 Algoritmo de hash SHA3 - 512. hKey deve ser NULL.
ALG_HMAC_MD5 Algoritmo HMAC MD5. hKey deve ser o contexto para a chave utilizada no HMAC.
ALG_HMAC_SHA1 Algoritmo HMAC SHA1. hKey deve ser o contexto para a chave utilizada no HMAC.
ALG_HMAC_SHA2_256 Algoritmo HMAC SHA2 - 256. hKey deve ser o contexto para a chave utilizada no HMAC.
ALG_HMAC_SHA2_384 Algoritmo HMAC SHA2 - 384. hKey deve ser o contexto para a chave utilizada no HMAC.
ALG_HMAC_SHA2_512 Algoritmo HMAC SHA2 - 512. hKey deve ser o contexto para a chave utilizada no HMAC.
ALG_CMAC_DES Algoritmo CMAC 3DES. hKey deve ser o contexto para a chave 3DES utilizada no CMAC.
ALG_CMAC_AES Algoritmo CMAC AES. hKey deve ser o contexto para a chave AES utilizada no CMAC.
ALG_IDENTITY_FUNC Função identidade. Os dados de entrada são iguais aos dados de saída. hKey NULL.
[in]hKeyDeve ser passado de acordo com o tipo de algoritmo passado em nAlgId.
[in]dwFlagsReservado para uso futuro (deve ser 0).
[out]hHashPonteiro para o contexto do hash gerado. Depois do seu uso deverá ser liberado com a função DDestroyHash().
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
create_hash.c, sign_verify.c e sign_verify_eddsa.c.

◆ DHashData()

int AAP_API DHashData ( HHASHCTX hHash,
BYTE * pbData,
DWORD dwDataLen,
DWORD dwFlags )

#include <dinamo.h>

Adiciona dados à um determinado contexto de hash. Essa função pode ser chamada diversas vezes para adicionar dados discontinuos.

Parâmetros
[in]hHashContexto de hash gerado pela função DCreateHash().
[in]pbDataBuffer contendo os dados que serão adicionados ao contexto de hash.
[in]dwDataLenNúmero de bytes a ser adicionados.
[in]dwFlagsReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
create_hash.c, sign_verify.c e sign_verify_eddsa.c.

◆ DSetHashParam()

int AAP_API DSetHashParam ( HHASHCTX hHash,
DWORD dwParam,
BYTE * pbData,
DWORD dwDataLen,
DWORD dwFlags )

#include <dinamo.h>

Altera um contexto de hash criado por DCreateHash().

Parâmetros
[in]hHashContexto de hash gerado pela função DCreateHash().
[in]dwParamDefine o parâmetro do contexto de hash a ser modificado.
Valor Significado
DHP_HASH_VALUE Tipo de pbData: BYTE *
pbData deverá ser um ponteiro para um buffer contendo o valor do hash a ser associado ao contexto.
Depois que for atribuído algum valor a este parâmetro, o valor do hash não poderá mais ser alterado e chamadas futuras de DHashData ou DHashSessionKey falharão retornando o código de erro D_INVALID_HASH_STATE.
DHP_RESET Tipo de pbData: NULL
Reseta o contexto de hash para o estado inicial. O valor do hash é apagado.
[in]pbDataPonteiro para os dados ou estruturas especificados em dwParam.
[in]dwDataLenTamanho dos dados ou estrutura especificados em dwParam.
[in]dwFlagsReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.

◆ DGetHashParam()

int AAP_API DGetHashParam ( HHASHCTX hHash,
DWORD dwParam,
BYTE * pbData,
DWORD * pdwDataLen,
DWORD dwFlags )

#include <dinamo.h>

Retorna atributos associados à um determinado contexto de hash. O valor do hash pode ser recuperado usando essa função.

Parâmetros
[in]hHashContexto de hash gerado pela função DCreateHash().
[in]dwParamDefine o parâmetro do contexto de hash a ser recuperado.
Valor Significado
DHP_ALGID Tipo de pbData: DWORD
Recupera o algoritmo associado a esse contexto quando ele foi criado.
DHP_HASH_SIZE Tipo de pbData: DWORD
Recupera o comprimento do valor do hash.
DHP_HASH_VALUE Tipo de pbData: BYTE *
pbData será um ponteiro para um buffer contendo o valor do hash associado ao contexto.
Depois que esse atributo for retornado, o valor do hash não poderá mais ser alterado e chamadas futuras de DHashData ou DHashSessionKey falharão retornando o código de erro D_INVALID_HASH_STATE.
[in]pbDataPonteiro para os dados ou estruturas especificados em dwParam. Esse parâmetro pode ser NULL para que seja especificada a quantidade de memória necessária.
[in,out]pdwDataLenPonteiro para o tamanho do buffer, em bytes, especificado em pbData. Quando a função retorna, esse parâmetro conterá o tamanho dos dados armazenados em pbData.
[in]dwFlagsReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
create_hash.c.

◆ DSignHash()

int AAP_API DSignHash ( HHASHCTX hHash,
HKEYCTX hKey,
DWORD dwFlags,
BYTE * pbSignature,
DWORD * pdwSigLen )

#include <dinamo.h>

Assina um dado a partir do seu contexto de hash criado com a função DCreateHash().

Parâmetros
[in]hHashContexto de hash gerado pela função DCreateHash().
[in]hKeyContexto da chave privada a ser utilizada na assinatura.
[in]dwFlagsDeve-se passar 0 ou algum modificador definido na lista abaixo.
Valor Significado
DN_SIGN_NO_HASH_OID Quando essa flag é especificada, o identificador do objeto (OID) não é colocado na frente do valor do hash, como previsto no PKCS#7, atributo DigestInfo.
Por padrão, esse valor é sempre acrescentado à assinatura. Apenas para assinaturas RSA.
DN_SIGN_DISABLE_LEGACY_OPERATION Quando esta flag é especificada, a API cliente utiliza as versões mais novas de implementação de assinatura do HSM. Utilizar com HSMs versão 4.0 ou superior.
Por padrão, esta flag é desabilitada por motivos de compatibilidade. Algoritmos mais novos de assinatura utilizarão automaticamente a implementação mais nova e podem não ser suportados por HSMs mais antigos.
DN_SIGN_ECC_P11_FMT Utiliza o formato de assinatura ECC PKCS#11 v2.40 seção 2.3.1.
[out]pbSignatureBuffer que receberá a assinatura. Esse parâmetro pode ser NULL para que seja especificada a quantidade de memória necessária.
[in,out]pdwSigLenPonteiro para o tamanho da assinatura, em bytes. Quando a função retorna, esse parâmetro conterá o tamanho dos dados armazenados em pbSignature.
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Anotações
O formato da assinatura padrão gerado pela função DSignHash() está em conformidade com as especificações do PKCS#1 v.1.5, utilizando padding tipo 1 quando for usada uma chave RSA, com o uso de chaves ECDSA a assinatura estará no padrão DER ANSI X9.62/RFC 3278 seção-8.2.
Padrão DER ECDSA:
ECDSA-Sig-Value ::= SEQUENCE {
r INTEGER,
s INTEGER
}

As assinaturas geradas com chaves EdDSA são feitas utilizando o algoritmo de assinatura PureEdDSA como descrito na RFC 8032. Desta maneira, deve-se utilizar o algoritmo ALG_IDENTITY_FUNC nas APIs de hash para utilizar a função identidade. O tamanho máximo de dados aceitos para assinatura é de DN_SIG_EDDSA_MAX_DATA_LEN bytes.

Exemplos
sign_verify.c e sign_verify_eddsa.c.

◆ DDestroyHash()

int AAP_API DDestroyHash ( HHASHCTX * phHash)

#include <dinamo.h>

Libera o contexto de um hash depois do seu uso. Depois que este contexto foi liberado ele não pode ser mais usado por qualquer função, se tornando inválido.

Parâmetros
[in]phHashContexto de hash gerado pela função DCreateHash().
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
create_hash.c, sign_verify.c e sign_verify_eddsa.c.

◆ DVerifySignature()

int AAP_API DVerifySignature ( HHASHCTX hHash,
BYTE * pbSignature,
DWORD dwSigLen,
HKEYCTX hPubKey,
DWORD dwFlags )

#include <dinamo.h>

Verifica a assinatura do hash associado à um contexto.

Parâmetros
[in]hHashContexto de hash gerado pela função DCreateHash().
[in]pbSignatureBuffer contendo o a assinatura a ser verificada.
[in]dwSigLenNúmero de bytes da assinatura.
[in]hPubKeyContexto para a chave pública utilizada na verificação da assinatura.
[in]dwFlagsModificadores do comportamento da função.
Valor Significado
DN_VERIFY_NO_HASH_OID Quando essa flag é especificada, o identificador do objeto (OID) não é verificado, como previsto no PKCS#7, atributo DigestInfo.
Por padrão, esse valor é sempre verificado. Apenas em operações RSA.
DN_VERIFY_ECC_P11_FMT Utiliza o formato de assinatura ECC PKCS#11 v2.40 seção 2.3.1.
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Anotações
Mais detalhes sobre os formatos de assinatura aceitos por esta API podem ser vistos nas observações da API DSignHash().
Exemplos
sign_verify.c e sign_verify_eddsa.c.

◆ DDuplicateHash()

int AAP_API DDuplicateHash ( HHASHCTX hHash,
DWORD dwFlag,
HHASHCTX * phHash )

#include <dinamo.h>

Duplica o contexto de um hash, incluindo o seu estado interno.

Parâmetros
[in]hHashContexto de hash gerado pela função DCreateHash().
[in]dwFlagReservado para uso futuro (deve ser 0).
[in]phHashPonteiro para o contexto do hash gerado. Depois do seu uso deverá ser liberado com a função DDestroyHash().
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Anotações
Os contextos dos hashs são independentes, sendo assim, ao liberar o contexto original, o novo contexto continua a ser válido.

◆ DGetRandom()

int AAP_API DGetRandom ( HSESSIONCTX hSession,
BYTE * pbData,
DWORD dwDataLen )

#include <dinamo.h>

Recupera um número determinado de bytes pseudo-aleatórios para uso criptográfico.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[out]pbDataBuffer que será preenchido com os bytes pseudo-aleatórios.
[in]dwDataLenTamanho em bytes de pbData.
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.

◆ DGenEcdhKey()

int AAP_API DGenEcdhKey ( HSESSIONCTX hSession,
DWORD dwOP,
char * szPriKey,
void * pvInData,
DWORD dwInDataLen,
BYTE * pbOutData,
DWORD * pdwOutDataLen,
DWORD dwFlags )

#include <dinamo.h>

Gera um segredo compartilhado(shared secret)/chave utilizando o protocolo de acordo de chaves (key-agreement) ECDH (Elliptc Curve Diffie-Hellman).

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]dwOPModificadores do comportamento da função.
Valor Significado
DN_GEN_KEY_KDF_RAW_SECRET Retorna em pbOutData a chave secreta ECDH sem derivação.

Recomendamos derivar uma chave a partir desta, para comunicação com o par. O parâmetro passado em pvInData deve ser um ponteiro para um buffer contendo a chave pública do par no formato DER.
DN_GEN_KEY_X9_63_SHA256 Deriva uma chave secreta ECDH no padrão ANSI X9.63 utilizando SHA256. Deve ser passado pvInData a estrutura GEN_ECDH_X9_63. Ver documentação de GEN_ECDH_X9_63 para detalhes de preenchimento. Retorna opcionalmente em pbOutData a chave secreta gerada, ver GEN_ECDH_X9_63 para mais detalhes.
[in]szPriKeyIdentificador da chave privada dentro do HSM. Este identificador não deve conter espaços ou caracteres especiais. Caracteres maiúsculos e minúsculos são diferenciados ( case sensitive)
[in]pvInDataPonteiro para os dados de entrada da função. Deve ser preenchido de acordo com o descrito nas opções de dwOP
[in]dwInDataLenTamanho em bytes de pvInData.
[out]pbOutDataBuffer que receberá a chave/segredo de saída. Esse parâmetro pode ser NULL para que seja retornada a quantidade de memória necessária em pdwOutDataLen. Este parâmetro será ignorado quando a operação for de gravar a chave no HSM.
[in,out]pdwOutDataLenPonteiro para o tamanho do buffer pbOutData, em bytes, que conterá a chave/segredo de saída. Quando a função retorna, esse parâmetro conterá o tamanho dos dados efetivamente armazenados em pbOutData. Este parâmetro será ignorado quando a operação for de gravar a chave no HSM.
[in]dwFlagsReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
gen_ecdh.c e gen_xecdh.c.

◆ DCRLCertCheck()

int AAP_API DCRLCertCheck ( HSESSIONCTX hSession,
char * szCRL,
char * szCertId,
char * szVerifyInfo )

#include <dinamo.h>

Valida um certificado X.509 no HSM utilizando uma LCR(Lista de Certificados Revogados) e uma cadeia de certificados.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]szCRLNome da LCR(Lista de Certificados Revogados).
[in]szCertIdNome do certificado que será validado.
[in]szVerifyInfoNome da cadeia de certificados/certificado para validação do certificado especificado em szCertId. Pode ser passado NULL para não fazer a verificação de cadeia de certificados.

0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.

◆ DMofNSplit()

int AAP_API DMofNSplit ( HSESSIONCTX hSession,
BYTE bM,
BYTE bN,
BYTE * pbSecret,
DWORD dwSecretLen,
DN_M_OF_N_SPLIT_INFO * pstSplitInfo,
DWORD dwReserved )

#include <dinamo.h>

Faz a divisão M de N de um segredo. De acordo com o padrão de compartilhamento de segredos de Shamir.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bMQuantidade mínima de partes necessárias para reconstrução do segredo. Mínimo de DN_M_OF_N_S_MIN e máximo de DN_M_OF_N_S_MAX.
[in]bNQuantidade total de partes geradas. Mínimo de DN_M_OF_N_S_MIN e máximo de DN_M_OF_N_S_MAX.
[in]pbSecretSegredo que será compartilhado em várias partes. Deve ter tamanho DN_M_OF_N_S_LEN. Pode ser passado NULL para que um segredo seja gerado randomicamente pelo HSM, neste caso o valor será retornado em pstSplitInfo.
[in]dwSecretLenTamanho dos dados informados em pbSecret. Caso pbSecret seja NULL passar 0 neste parâmetro.
[out]pstSplitInfoDados de saída.
[in]dwReservedReservado para uso futuro (deve ser 0).

0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.

Anotações
A sessão utilizada nesta operação pode ser autenticada ou anônima.
Exemplos
m_of_n.c.

◆ DMofNRecover()

int AAP_API DMofNRecover ( HSESSIONCTX hSession,
DN_M_OF_N_PART * pstParts,
DWORD dwPartsCount,
BYTE * pbSecret,
DWORD dwReserved )

#include <dinamo.h>

Reconstrói o segredo M de N a partir das partes dos custodiantes. De acordo com o padrão de compartilhamento de segredos de Shamir.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]pstPartsArray de partes dos custodiantes.
[in]dwPartsCountQuantidade de partes passadas em pstParts.
[in]pbSecretSegredo reconstruído. Deve ter tamanho DN_M_OF_N_S_LEN.
[in]dwReservedReservado para uso futuro (deve ser 0).

0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.

Anotações
A sessão utilizada nesta operação pode ser autenticada ou anônima.
Exemplos
m_of_n.c.