Gerência do ciclo de vida de chaves criptográficas no HSM.
Consulte a documentação técnica do HSM.
Estruturas de Dados | |
struct | DN_EXPORT_BYOK_AZURE |
Definições e Macros | |
#define | D_IMPORT_ALG_PRIV_KEY_RSA (0xFFFFFFE1) /* Importa uma chave privada RSA. */ |
#define | D_IMPORT_ALG_PRIV_KEY_ECC (0xFFFFFFE0) /* Importa uma chave privada ECC(Curvas Elípticas com exceção de ECX). */ |
#define | D_IMPORT_ALG_PRIV_KEY_P8 (0xFFFFFFDF) /* Importa uma chave no formato P8 */ |
#define | D_IMPORT_ALG_PRIV_KEY_ECX (0xFFFFFFDE) /* Import uma chave privada ECX */ |
#define | DN_FORM_DER (1) |
#define | DN_BYOK_TYPE_AZURE (1) |
#define | DN_BYOK_TYPE_AWS (2) |
Funções | |
int AAP_API | DGenerateKey (HSESSIONCTX hSession, char *szKeyId, int nAlgId, DWORD dwFlags, HKEYCTX *phKey) |
int AAP_API | DGenerateKeyMaterial (HSESSIONCTX hSession, int nAlgId, BYTE *pbData, DWORD *pdwDataLen, DWORD dwReserved) |
int AAP_API | DGetUserKey (HSESSIONCTX hSession, char *szKeyId, DWORD dwFlags, HKEYCTX *phKey) |
int AAP_API | DImportKey (HSESSIONCTX hSession, char *szKeyId, HKEYCTX hKEKey, DWORD dwBlobType, int nAlgId, DWORD dwFlags, BYTE *pbData, DWORD dwDataLen, HKEYCTX *phKey) |
int AAP_API | DExportKey (HKEYCTX hKey, HKEYCTX hKEKey, DWORD dwBlobType, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen) |
int AAP_API | DPKCS8ImportKey (HSESSIONCTX hSession, char *szKeyId, char *szSecret, DWORD dwKeyAlg, DWORD dwAttrib, BYTE *pbKeyEnvelope, DWORD dwKeyEnvelopeLen) |
int AAP_API | DPKCS8ExportKey (HSESSIONCTX hSession, char *szKeyId, char *szSecret, BYTE **ppbKeyEnvelope, DWORD *pdwKeyEnvelopeLen) |
int AAP_API | DSetKeyParam (HKEYCTX hKey, DWORD dwParam, BYTE *pbData, DWORD dwDataLen, DWORD dwFlags) |
int AAP_API | DGetKeyParam (HKEYCTX hKey, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags) |
int AAP_API | DDeriveKey (HHASHCTX hHash, char *szKeyId, int nAlgId, DWORD dwFlags, HKEYCTX *phKey) |
int AAP_API | DDuplicateKey (HKEYCTX hKey, DWORD dwFlags, HKEYCTX *phKey) |
int AAP_API | DHashSessionKey (HKEYCTX hKey, HHASHCTX hHash, DWORD dwFlags) |
int AAP_API | DDestroyKey (HKEYCTX *phKey, DWORD dwFlags) |
int AAP_API | DGeneratePKCS10CSR (HSESSIONCTX hSession, char *szPrivateKeyName, BYTE bVersion, char *szDN, DWORD dwOutType, DWORD *pdwCSRLen, BYTE **ppbCSR, DWORD dwParam) |
int AAP_API | DAssociatePKCS11Key (HSESSIONCTX hSession, char *szPriKey, char *szPubKey, char *szCert, void *pvReserved, DWORD dwReserved) |
int AAP_API | DExportPKCS12 (const HSESSIONCTX hSession, const char *szPkcs12Pwd, const char *szKeyId, const char *szCertId, const char *szReserved, BYTE **ppbPkcs12, DWORD *pdwPkcs12Len, DWORD dwFlags) |
int AAP_API | DImportPKCS12Buffer (const HSESSIONCTX hSession, BYTE *pbPkcs12, DWORD dwPkcs12Len, const char *szPkcs12Pwd, const char *szKeyId, DWORD dwKeyAttr, const char *szCertId, const char *szPubKeyId, DWORD dwFlags) |
int AAP_API | DImportPKCS12 (const HSESSIONCTX hSession, const char *szPkcs12File, const char *szPkcs12Pwd, const char *szKeyId, const DWORD dwKeyAttr, const char *szCertId) |
int AAP_API | DRSAPublicKey2Info (BYTE *pbKey, DWORD dwKeyLen, DWORD dwInForm, void *pvPubKeyInfo, DWORD dwReserved) |
int AAP_API | DRSAPrivateKey2Info (const BYTE *pbRsa, DWORD dwRsaLen, DWORD dwInForm, DN_RSA_PRIVATE_KEY_INFO *stRsaInfo, DWORD dwReserved) |
int AAP_API | DByokExport (HSESSIONCTX hSession, const char *cszKeyId, const char *cszKekId, DWORD dwType, const void *pvData, BYTE **ppbOutData, DWORD *pdwOutDataLen, DWORD dwReserved) |
#define D_IMPORT_ALG_PRIV_KEY_RSA (0xFFFFFFE1) /* Importa uma chave privada RSA. */ |
#include <dinamo.h>
#define D_IMPORT_ALG_PRIV_KEY_ECC (0xFFFFFFE0) /* Importa uma chave privada ECC(Curvas Elípticas com exceção de ECX). */ |
#include <dinamo.h>
#define D_IMPORT_ALG_PRIV_KEY_P8 (0xFFFFFFDF) /* Importa uma chave no formato P8 */ |
#include <dinamo.h>
#define D_IMPORT_ALG_PRIV_KEY_ECX (0xFFFFFFDE) /* Import uma chave privada ECX */ |
#include <dinamo.h>
#define DN_FORM_DER (1) |
#include <dinamo.h>
Formato DER.
#define DN_BYOK_TYPE_AZURE (1) |
#include <dinamo.h>
Exporta chave BYOK para Azure.
#define DN_BYOK_TYPE_AWS (2) |
#include <dinamo.h>
Exporta chave BYOK para AWS.
int AAP_API DGenerateKey | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
int | nAlgId, | ||
DWORD | dwFlags, | ||
HKEYCTX * | phKey ) |
#include <dinamo.h>
Cria e armazena uma chave criptográfica associada a um algoritmo de acordo com os parâmetros informados, dentro do HSM.
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | szKeyId | Identificador da chave 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). Um identificador de objeto no HSM pode ter tamanho máximo, em caracteres, de MAX_OBJ_ID (já incluído o caracter terminador). Quando está criando chaves na partição de outro usuário (é necessária permissão) o nome deve ser qualificado por inteiro com um FQN (Full Qualified Name: partition_id/obj_id), o tamanho máximo para um FQN é MAX_OBJ_ID_FQN_LEN (já incluído o caracter terminador). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | nAlgId | Define o algoritmo associado à chave criptográfica a ser gerada. Chaves Simétricas
Chaves Assimétricas RSA
Chaves Assimétricas ECC
Chaves Assimétricas ECX
Chaves HMAC
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | dwFlags | Parâmetros adicionais da chave.
Além dos valores da tabela anterior é possível adicionar uma definição de perfil de uso de chave. É possível definir o perfil de uso da chave (Attribute Usage-profile), utilizando apenas um dos valores abaixo. Se nenhum dos valores abaixo for especificado o perfil da chave é definido como livre para qualquer uso. É obrigatório a definição do perfil de uso quando o HSM estiver em modo RM3.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | phKey | Ponteiro para o contexto da chave gerada. Depois do seu uso deverá ser liberado com a função DDestroyKey(). Pode ser passado NULL para não retornar o contexto da chave. |
Parâmetro | Valor |
---|---|
Vetor de Inicialização | Será um vetor com todos os bytes igual a zero e com o mesmo tamanho do bloco de operação do algoritmo da chave. |
Modo de Operação de Criptografia Simétrica | Será usado o modo CBC (Cipher Block Chain) |
Padding | Será usado o formato definido no padrão PKCS#5 como padding. |
Valor | Tamanho do bloco |
---|---|
ALG_DES | 8 bytes |
ALG_3DES_112 | 8 bytes |
ALG_3DES_168 | 8 bytes |
ALG_AES_128 | 16 bytes |
ALG_AES_192 | 16 bytes |
ALG_AES_256 | 16 bytes |
ALG_ARC5 | 8 bytes |
int AAP_API DGenerateKeyMaterial | ( | HSESSIONCTX | hSession, |
int | nAlgId, | ||
BYTE * | pbData, | ||
DWORD * | pdwDataLen, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
Gera uma chave criptográfica e retorna o seu material. Esta operação gera uma chave utilizando o HSM e retorna o conteúdo da chave sem persistir a chave no HSM.
[in] | hSession | Contexto adquirido através da função DOpenSession(). |
[in] | nAlgId | Define o algoritmo da chave criptográfica a ser gerada. Esta operação suporta apenas algoritmos de chaves simétricas. Veja lista de algoritmos em DGenerateKey(). |
[in] | pbData | Buffer que conterá a chave gerada. Pode ser passado NULL para receber o tamanho esperado de pbData em pdwDataLen. |
[in,out] | pdwDataLen | Ponteiro contendo o tamanho do buffer pbData. Esta variável conterá o tamanho exato dos dados copiados em pbData. Caso pbData seja NULL ou o tamanho informado não seja suficiente para completar a operação, pdwDataLen conterá o tamanho esperado de pbData. |
[in] | dwReserved | Reservado para uso futuro. |
int AAP_API DGetUserKey | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
DWORD | dwFlags, | ||
HKEYCTX * | phKey ) |
#include <dinamo.h>
Recupera o contexto de uma chave, desde que o usuário corrente tenha acesso, armazenada dentro do HSM. Essa função não cria uma nova chave.
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||||
[in] | szKeyId | Identificador da chave 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). Veja szKeyId em DGenerateKey() para detalhes sobre tamanhos máximos de identificadores. | ||||||
[in] | dwFlags | Passar zero. Caso contrário a seguinte tabela é aceita.
| ||||||
[out] | phKey | Ponteiro para o contexto da chave gerada. Depois do seu uso deverá ser liberado com a função DDestroyKey(). |
int AAP_API DImportKey | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
HKEYCTX | hKEKey, | ||
DWORD | dwBlobType, | ||
int | nAlgId, | ||
DWORD | dwFlags, | ||
BYTE * | pbData, | ||
DWORD | dwDataLen, | ||
HKEYCTX * | phKey ) |
#include <dinamo.h>
Importa uma chave criptográfica para dentro do HSM. As chaves podem ser permanentes ou temporárias. As chaves exportadas com a função DExportKey() podem ser importadas sem alteração de formato.
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||||||||||||||||||||||||||
[in] | szKeyId | Identificador da chave 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). Veja szKeyId em DGenerateKey() para detalhes sobre tamanhos máximos de identificadores. | ||||||||||||||||||||||||||||
[in] | hKEKey | Contexto da chave com a qual o blob da chave a ser importada está cifrada - KEK (key encryption key) | ||||||||||||||||||||||||||||
[in] | dwBlobType | Formato do buffer da chave no parâmetro pbData .
| ||||||||||||||||||||||||||||
[in] | nAlgId | Indica o algoritmo associado à chave criptográfica que será gerada. Veja lista de algoritmos em DGenerateKey(). Utilizar D_IMPORT_ALG_PRIV_KEY_RSA quando a chave privada importada for RSA e encriptada por KEK, o algoritmo específico será detectado automáticamente pelo HSM após abertura do BLOB encriptado. | ||||||||||||||||||||||||||||
[in] | dwFlags | Parâmetros adicionais da chave. Veja as opções na função DGenerateKey(). | ||||||||||||||||||||||||||||
[in] | pbData | Buffer contendo a chave a ser importada. | ||||||||||||||||||||||||||||
[in] | dwDataLen | Tamanho do bloco de dados com a chave a ser importada. | ||||||||||||||||||||||||||||
[out] | phKey | Ponteiro para o contexto da chave gerada. Depois do seu uso deverá ser liberado com a função DDestroyKey. |
Formato do SIMPLE_BLOB:
EB = 00 || BT || PS || 00 || D
Estruturas DER de PRIVATEKEY_BLOB:
Estrutura DER de PUBLICKEY_BLOB:
Estrutura DER de PUBLICKEY_BLOB_X509:
int AAP_API DExportKey | ( | HKEYCTX | hKey, |
HKEYCTX | hKEKey, | ||
DWORD | dwBlobType, | ||
DWORD | dwFlags, | ||
BYTE * | pbData, | ||
DWORD * | pdwDataLen ) |
#include <dinamo.h>
Exporta uma chave armazenada no HSM para que possa ser transportada. A chave poderá ser novamente importada para o Dinamo com a função DImportKey().
[in] | hKey | Contexto da chave a ser exportada. |
[in] | hKEKey | Contexto da chave com a qual o bloco da chave será cifrado - KEK (key encryption key). |
[in] | dwBlobType | Formato do buffer da chave no parâmetro pbData . Veja parâmetro dwBlobType em DImportKey() para lista de tipos. |
[in] | dwFlags | Reservado para uso futuro (deve ser 0). |
[in] | pbData | Buffer contendo os dados da chave conforme o parâmetro dwBlobType. Esse parâmetro pode ser NULL para que seja especificada a quantidade de memória necessária. |
[in,out] | pdwDataLen | Ponteiro 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 . |
int AAP_API DPKCS8ImportKey | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
char * | szSecret, | ||
DWORD | dwKeyAlg, | ||
DWORD | dwAttrib, | ||
BYTE * | pbKeyEnvelope, | ||
DWORD | dwKeyEnvelopeLen ) |
#include <dinamo.h>
Importa para o HSM uma chave assimétrica privada RSA envelopada segundo o padrão PKCS#8. A chave privada RSA pode ser importada em texto claro ou protegida por envelope digital. Para detalhes sobre os padrões, consulte os documentos Public-Key Cryptography Standards (PKCS) da RSA Labs. Nos modos de operação restritos (RM1 e RM2) as chaves RSA só podem ser importadas via o padrão PKCS#8 com uso de envelope digital, derivando uma chave AES 256 a partir de uma senha de no mínimo 01 caracter e no máximo 16, sendo a derivação feita conforme o padrão PKCS#5 versão 2.0.
O envelope utilizado poderá ser proveniente de qualquer sistema aderente aos padrões descritos.
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||||||||||||||||||||||||||||
[in] | szKeyId | Indentificador para a chave RSA que será criada na base do HSM. Veja szKeyId em DGenerateKey() para detalhes sobre tamanhos máximos de identificadores. | ||||||||||||||||||||||||||||||
[in] | szSecret | Senha utilizada para derivar a chave AES 256. Pode ser passado NULL para não utilizar senha (importação em texto claro) ou uma senha de no ND_MAX_P8_PWD_LEN caracteres mais terminador nulo. | ||||||||||||||||||||||||||||||
[in] | dwKeyAlg | Indica o algoritmo associado à chave criptográfica a ser gerada.
| ||||||||||||||||||||||||||||||
[in] | dwAttrib | Parâmetros adicionais da chave.
| ||||||||||||||||||||||||||||||
[in] | pbKeyEnvelope | Buffer que contém o envelope PKCS#8 de entrada. | ||||||||||||||||||||||||||||||
[in] | dwKeyEnvelopeLen | Tamanho em bytes do envelope PKCS#8 de entrada. |
int AAP_API DPKCS8ExportKey | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
char * | szSecret, | ||
BYTE ** | ppbKeyEnvelope, | ||
DWORD * | pdwKeyEnvelopeLen ) |
#include <dinamo.h>
Exporta uma chave assimétrica privada RSA armazenada no HSM segundo o padrão PKCS#8. A chave privada RSA pode ser exportada em texto claro ou protegida por envelope digital. Para detalhes sobre os padrões, consulte os documentos Public-Key Cryptography Standards (PKCS) da RSA Labs. Nos modos de operação restritos (RM1 e RM2) as chaves RSA exportáveis só podem ser exportadas via o padrão PKCS#8 com uso de envelope digital, derivando uma chave AES 256 a partir de uma senha com tamanho entre ND_MIN_P8_PWD_LEN e ND_MAX_P8_PWD_LEN caracteres, sendo a derivação feita conforme o padrão PKCS#5 versão 2.0. O envelope de saída poderá ser importado em qualquer sistema aderente aos padrões descritos.
[in] | hSession | Contexto adquirido através da função DOpenSession(). |
[in] | szKeyId | Indentificador da chave RSA a ser exportada. Veja szKeyId em DGenerateKey() para detalhes sobre tamanhos máximos de identificadores. |
[in] | szSecret | Senha com tamanho entre ND_MIN_P8_PWD_LEN e ND_MAX_P8_PWD_LEN mais terminaor nulo, utilizada para derivar a chave AES 256. Pode ser passado NULL para exportar em texto claro, sem senha. |
[out] | ppbKeyEnvelope | Ponteiro de ponteiro que irá conter o envelope PKCS#8 de saída. A alocação de memória é feita internamente pela biblioteca. A aplicação chamadora é responsável por liberar a memória alocada. Deve ser utilizada a função DFree() para liberar este buffer. |
[out] | pdwKeyEnvelopeLen | Ponteiro para DWORD que conterá o tamanho em bytes do envelope PKCS#8 de saída. |
int AAP_API DSetKeyParam | ( | HKEYCTX | hKey, |
DWORD | dwParam, | ||
BYTE * | pbData, | ||
DWORD | dwDataLen, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Altera parâmetros dos contextos de chaves que, em geral, vão influenciar na sua manipulação.
[in] | hKey | Contexto da chave a ser exportada. | ||||||||||||||
[in] | dwParam | Define a operação que será executada e por conseqüência a estrutura ou dados passados no parâmetro pbData .
| ||||||||||||||
[in] | pbData | Ponteiro para os dados ou estruturas especificados em dwParam . | ||||||||||||||
[in] | dwDataLen | Tamanho dos dados ou estrutura especificados em dwParam . | ||||||||||||||
[in] | dwFlags | REMOVE_ATTRIBUTE pode ser usado para remover privilégio de um usuário sobre uma chave. Essa flag só deve ser usada em conjunto com DKP_OWNER ou DKP_USER. |
int AAP_API DGetKeyParam | ( | HKEYCTX | hKey, |
DWORD | dwParam, | ||
BYTE * | pbData, | ||
DWORD * | pdwDataLen, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Recupera parâmetros dos contextos de chave.
[in] | hKey | Contexto da chave a ser exportada | ||||||||||||||||
[in] | dwParam | Define a operação que será executada e por conseqüência a estrutura ou dados passados no parâmetro pbData . Todos os valores descritos em DSetKeyParam() e mais:
| ||||||||||||||||
[in] | pbData | Ponteiro para os dados ou estruturas especificados em dwParam | ||||||||||||||||
[in] | pdwDataLen | Tamanho dos dados ou estrutura especificados em dwParam | ||||||||||||||||
[in] | dwFlags | Reservado para uso futuro (deve ser 0). |
int AAP_API DDeriveKey | ( | HHASHCTX | hHash, |
char * | szKeyId, | ||
int | nAlgId, | ||
DWORD | dwFlags, | ||
HKEYCTX * | phKey ) |
#include <dinamo.h>
Deriva uma chave a partir do hash informado. Se o hash ainda não estiver completo, ele será finalizado e seu valor utilizado como uma chave simétrica.
[in] | hHash | Contexto de hash criado com DCreateHash. |
[in] | szKeyId | Identificador da chave 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). Veja szKeyId em DGenerateKey() para detalhes sobre tamanhos máximos de identificadores. |
[in] | nAlgId | Indica o algoritmo associado à chave criptográfica que será gerada. Veja lista de algoritmos em DGenerateKey(). |
[in] | dwFlags | Parâmetros adicionais da chave. Veja lista de parâmetros adicionais da chave em DGenerateKey(). |
[in] | phKey | Ponteiro para o contexto da chave gerada. Depois do seu uso deverá ser liberado com a função DDestroyKey(). |
#include <dinamo.h>
Duplica o contexto de uma chave, incluindo o seu estado interno.
[in] | hKey | Contexto de chave. |
[in] | dwFlags | Reservado para uso futuro (deve ser 0). |
[out] | phKey | Ponteiro para o contexto da chave gerada. Depois do seu uso deverá ser liberado com a função DDestroyKey(). |
#include <dinamo.h>
Usa o valor de uma chave simétrica como dados de entrada para a execução de um hash. O contexto de hash deve ter um contexto limpo para que possa ser usado nessa função, ou seja, não pode ter sido usado com a função DHashData().
[in] | hKey | Contexto de chave. |
[in] | hHash | Contexto de hash criado com DCreateHash(). |
[in] | dwFlags | Reservado para uso futuro (deve ser 0). |
#include <dinamo.h>
Libera o contexto de uma chave 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.
[in] | phKey | Ponteiro para um contexto de chave que será liberado. | ||||
[in] | dwFlags | Modificadores da operação.
|
int AAP_API DGeneratePKCS10CSR | ( | HSESSIONCTX | hSession, |
char * | szPrivateKeyName, | ||
BYTE | bVersion, | ||
char * | szDN, | ||
DWORD | dwOutType, | ||
DWORD * | pdwCSRLen, | ||
BYTE ** | ppbCSR, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Gera um CSR (Certificate Signing Request / Requisição de Assinatura de Certificado). É uma função especializada da API de geração de CSR PKCS#10 do HSM.
[in] | hSession | Contexto adquirido através da função DOpenSession(). | ||||||||||||||
[in] | szPrivateKeyName | Identificador da chave privada. | ||||||||||||||
[in] | bVersion | Versão do CSR PKCS#10. A seguinte tabela é suportada.
| ||||||||||||||
[in] | szDN | DN (Dinstinguished Name), para a geração do CSR, com tamanho máximo CORE_P10_CSR_DN_MAX_LEN. Os campos de DN deverão ser separados por '/'. | ||||||||||||||
[in] | dwOutType | Tipo de saída do CSR. A seguinte tabela é suportada.
| ||||||||||||||
[out] | pdwCSRLen | Ponteiro para o tamanho do buffer alocado em ppbCSR. | ||||||||||||||
[out] | ppbCSR | Ponteiro de ponteiro que irá receber o CSR. O tamanho do buffer alocado estará disponível através de pdwCSRLen. A alocação de memória é feita internamente. A aplicação chamadora é responsável por liberar a memória alocada usando a API DFree(). | ||||||||||||||
[in] | dwParam | Parâmetros adicionais. A seguinte tabela é suportada.
|
int AAP_API DAssociatePKCS11Key | ( | HSESSIONCTX | hSession, |
char * | szPriKey, | ||
char * | szPubKey, | ||
char * | szCert, | ||
void * | pvReserved, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
Associa uma chave privada a um certificado e opcionalmente uma chave pública seguindo dentro das especificações PKCS#11 Base v2.40 seção 4.6.3 e o utilizado pelo Firefox.
[in] | hSession | Contexto adquirido através da função DOpenSession(). . |
[in] | szPriKey | Nome da chave privada que será associada. |
[in] | szPubKey | Nome da chave pública que será associada. Pode passar NULL para não gerar a chave pública associada. Deve ser relacionado a chave privada. |
[in] | szCert | Nome do certificado que será exportado. Deve ser relacionado a chave privada. |
[in] | pvReserved | Reservado para uso futuro. Deve ser NULL. |
[in] | dwReserved | Reservado para uso futuro. Deve ser 0. |
Atributo | Valor |
---|---|
CKA_ID | SHA1 do módulo da chave pública. Definido para Chave privada, chave pública e certificado. |
CKA_LABEL | Id do certificado. Definido para chave privada e certificado. |
CKA_SUBJECT | Subject recuperado do certificado. Definido para chave privada e certificado. |
No caso de chaves EC o CKA_ID será o hash SHA1 do valor de CKA_PUBLIC_KEY_INFO.
int AAP_API DExportPKCS12 | ( | const HSESSIONCTX | hSession, |
const char * | szPkcs12Pwd, | ||
const char * | szKeyId, | ||
const char * | szCertId, | ||
const char * | szReserved, | ||
BYTE ** | ppbPkcs12, | ||
DWORD * | pdwPkcs12Len, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Exporta uma chave privada e um certificado RSA no formato PKCS#12.
[in] | hSession | Contexto adquirido através da função DOpenSession(). . | ||||
[in] | szPkcs12Pwd | Senha do arquivo PKCS#12. Passar NULL para gerar PKCS#12 sem senha. | ||||
[in] | szKeyId | Nome da chave privada que será exportada. Veja szKeyId em DGenerateKey() para detalhes sobre tamanhos máximos de identificadores. | ||||
[in] | szCertId | Nome do certificado que será exportado. Deve ser relacionado a chave privada. | ||||
[in] | szReserved | Reservado para uso futuro. Deve ser NULL. | ||||
[out] | ppbPkcs12 | Ponteiro para um ponteiro que conterá o PKCS#12 gerado. Esta área de dados será alocada internamente e deve ser liberada utilizando DFree(). | ||||
[out] | pdwPkcs12Len | Ponteiro para o tamanho dos dados escritos em ppbPkcs12 . | ||||
[in] | dwFlags | Passar 0 ou uma das opções da tabela abaixo.
|
int AAP_API DImportPKCS12Buffer | ( | const HSESSIONCTX | hSession, |
BYTE * | pbPkcs12, | ||
DWORD | dwPkcs12Len, | ||
const char * | szPkcs12Pwd, | ||
const char * | szKeyId, | ||
DWORD | dwKeyAttr, | ||
const char * | szCertId, | ||
const char * | szPubKeyId, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Importa uma chave privada/pública e um certificado a partir de um buffer no formato PKCS#12.
[in] | hSession | Contexto adquirido através da função DOpenSession(). . |
[in] | pbPkcs12 | PKCS#12 que será importado. |
[in] | dwPkcs12Len | Tamanho do buffer que contém o PKCS#12 em pbPkcs12 . |
[in] | szPkcs12Pwd | Senha do PKCS#12. Passar NULL para o caso de não haver senha. |
[in] | szKeyId | Nome da chave privada que será importada. Veja szKeyId em DGenerateKey() para detalhes sobre tamanhos máximos de identificadores. |
[in] | dwKeyAttr | Atributos da chave privada que será importada Veja dwFlags em DGenerateKey() para detalhes sobre os atributos de chave. |
[in] | szCertId | Nome do certificado que será importado. Deve ser relacionado a chave privada. |
[in] | szPubKeyId | Nome da chave pública que poderá ser importada. Pode ser NULL caso não queira que a chave pública seja importada. |
[in] | dwFlags | Reservado para uso futuro. Deve ser 0. |
int AAP_API DImportPKCS12 | ( | const HSESSIONCTX | hSession, |
const char * | szPkcs12File, | ||
const char * | szPkcs12Pwd, | ||
const char * | szKeyId, | ||
const DWORD | dwKeyAttr, | ||
const char * | szCertId ) |
#include <dinamo.h>
Importa uma chave privada/pública e um certificado a partir de um arquivo no formato PKCS#12.
[in] | hSession | Contexto adquirido através da função DOpenSession(). . |
[in] | szPkcs12File | Nome do arquivo PKCS#12 que será importado. |
[in] | szPkcs12Pwd | Senha do PKCS#12. Passar NULL para o caso de não haver senha. |
[in] | szKeyId | Nome da chave privada que será importada. Veja szKeyId em DGenerateKey() para detalhes sobre tamanhos máximos de identificadores. |
[in] | dwKeyAttr | Atributos da chave privada que será importada Veja dwFlags em DGenerateKey() para detalhes sobre os atributos de chave. |
[in] | szCertId | Nome do certificado que será importado. Deve ser relacionado a chave privada. |
int AAP_API DRSAPublicKey2Info | ( | BYTE * | pbKey, |
DWORD | dwKeyLen, | ||
DWORD | dwInForm, | ||
void * | pvPubKeyInfo, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
Decodifica as informações de uma chave pública RSA. Aceita chaves públicas no formato PKCS#1 RSAPublicKey ou X.509 SubjectPublicKeyInfo.
[in] | pbKey | Chave pública. | ||||
[in] | dwKeyLen | Tamanho do buffer pbKey . | ||||
[in] | dwInForm | Formato de entrada da chave em pbKey . A tabela abaixo é aceita.
| ||||
[out] | pvPubKeyInfo | Ponteiro para uma estrutura DN_RSA_PUB_KEY_INFO. | ||||
[in] | dwReserved | Reservado para uso futuro (deve ser 0). |
int AAP_API DRSAPrivateKey2Info | ( | const BYTE * | pbRsa, |
DWORD | dwRsaLen, | ||
DWORD | dwInForm, | ||
DN_RSA_PRIVATE_KEY_INFO * | stRsaInfo, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
Decodifica as informações de uma chave privada RSA. Aceita chaves privadas no formato PKCS#1 RSAPrivateKey ou PKCS#8 PrivateKeyInfo sem encriptação.
[in] | pbRsa | Chave privada. | ||||
[in] | dwRsaLen | Tamanho do buffer pbRsa . | ||||
[in] | dwInForm | Formato de entrada da chave em pbRsa . A tabela abaixo é aceita.
| ||||
[out] | stRsaInfo | Ponteiro para uma estrutura DN_RSA_PRIVATE_KEY_INFO. | ||||
[in] | dwReserved | Reservado para uso futuro (deve ser 0). |
int AAP_API DByokExport | ( | HSESSIONCTX | hSession, |
const char * | cszKeyId, | ||
const char * | cszKekId, | ||
DWORD | dwType, | ||
const void * | pvData, | ||
BYTE ** | ppbOutData, | ||
DWORD * | pdwOutDataLen, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
Exporta uma chave no formato BYOK (Bring Your Own Key) para um provedor de nuvem.
[in] | hSession | Contexto de sessão. | ||||||
[in] | cszKeyId | Identificador da chave que será exportada. Veja szKeyId em DGenerateKey() para detalhes sobre tamanhos máximos de identificadores. | ||||||
[in] | cszKekId | Identificador da chave KEK que será utilizada para encriptar a chave que será exportada. | ||||||
[in] | dwType | Tipo de exportação. A tabela abaixo é aceita.
| ||||||
[in] | pvData | Ponteiro para uma estrutura de dados específica para cada tipo de exportação. Ver dwType para detalhes. | ||||||
[out] | ppbOutData | Ponteiro para um ponteiro que conterá os dados de saída. Esta área de dados será alocada internamente e deve ser liberada utilizando DFree(). | ||||||
[out] | pdwOutDataLen | Ponteiro para o tamanho dos dados escritos em ppbOutData . | ||||||
[in] | dwReserved | Reservado para uso futuro (deve ser 0). |