Gestión del ciclo de vida de las claves criptográficas en HSM.
Consulte la documentación técnica del HSM.
Estructuras de datos | |
struct | DN_EXPORT_BYOK_AZURE |
Definiciones y macros | |
#define | D_IMPORT_ALG_PRIV_KEY_RSA (0xFFFFFFE1) /* Importar una clave privada RSA. */ |
#define | D_IMPORT_ALG_PRIV_KEY_ECC (0xFFFFFFE0) /* Importa una clave privada ECC (Curvas Elípticas excepto ECX). */ |
#define | D_IMPORT_ALG_PRIV_KEY_P8 (0xFFFFDF) /* Importar una clave en formato P8 */ |
#define | D_IMPORT_ALG_PRIV_KEY_ECX (0xFFFFDE) /* Importar una clave privada ECX */ |
#define | DN_FORM_DER (1) |
#define | DN_BYOK_TYPE_AZURE (1) |
#define | DN_BYOK_TYPE_AWS (2) |
Funciones | |
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>
Exportar clave BYOK a Azure.
#define DN_BYOK_TYPE_AWS (2) |
#include <dinamo.h>
Exportar clave BYOK a AWS.
int AAP_API DGenerateKey | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
int | nAlgId, | ||
DWORD | dwFlags, | ||
HKEYCTX * | phKey ) |
#include <dinamo.h>
Crea y almacena en el HSM una clave criptográfica asociada a un algoritmo según los parámetros introducidos.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | szKeyId | Identificador de la clave dentro del HSM. Este identificador no debe contener espacios ni caracteres especiales. Los caracteres en mayúsculas y minúsculas distinguen entre mayúsculas y minúsculas. Un identificador de objeto en el HSM puede tener una longitud máxima, en caracteres, de MAX_OBJ_ID (incluido el carácter terminador). Al crear claves en la partición de otro usuario (se requiere permiso), el nombre debe estar completamente cualificado con un FQN(Full Qualified Name: partition_id/obj_id), la longitud máxima para un FQN es MAX_OBJ_ID_FQN_LEN (incluido el carácter terminador). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | nAlgId | Define el algoritmo asociado a la clave criptográfica que se va a generar. Claves simétricas
Claves asimétricas RSA
Claves asimétricas ECC
Claves asimétricas ECX
Claves HMAC
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | dwFlags | Parámetros clave adicionales.
Además de los valores de la tabla anterior, puede añadir una definición de perfil de utilización de claves. Puede definir el perfil de utilización de las teclas (Atributo Perfil de uso), utilizando sólo uno de los valores indicados a continuación. Si no se especifica ninguno de los valores siguientes, el perfil de conmutación se establece como libre para cualquier uso. Es obligatorio definir el perfil de uso cuando el HSM está en RM3.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[in] | phKey | Puntero al contexto de la clave generada. Tras su uso, debe liberarse con la función DDestroyKey(). Se puede pasar NULL para no devolver el contexto de la clave. |
Parámetros | Valor |
---|---|
Vector de inicialización | Será un vector con todos los bytes iguales a cero y del mismo tamaño que el bloque de operaciones del algoritmo de claves. |
Modo de funcionamiento del cifrado simétrico | Se utilizará el modo CBC (cadena de bloques cifrados) |
Acolchado | Se utilizará el formato definido en la norma PKCS#5 como relleno. |
Valor | Tamaño del bloque |
---|---|
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>
Genera una clave criptográfica y devuelve su contenido. Esta operación genera una clave utilizando el HSM y devuelve el contenido de la clave sin persistir la clave en el HSM.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | nAlgId | Define el algoritmo de la clave criptográfica que se va a generar. Esta operación sólo admite algoritmos de clave simétrica. Véase la lista de algoritmos en DGenerateKey(). |
[in] | pbData | Buffer que contendrá la clave generada. Se puede pasar NULL para recibir el tamaño esperado de pbData en pdwDataLen. |
[in,out] | pdwDataLen | Puntero que contiene el tamaño del búfer pbData. Esta variable contendrá el tamaño exacto de los datos copiados en pbData. Si pbData es NULL o el tamaño introducido no es suficiente para completar la operación, pdwDataLen contendrá el tamaño 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 el contexto de una clave, siempre que el usuario actual tenga acceso, almacenada en el HSM. Esta función no crea una nueva clave.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||
[in] | szKeyId | Identificador de la clave dentro del HSM. Este identificador no debe contener espacios ni caracteres especiales. Los caracteres en mayúsculas y minúsculas distinguen entre mayúsculas y minúsculas. Véase szKeyId en DGenerateKey() para obtener más información sobre el tamaño máximo de los identificadores. | ||||||
[in] | dwFlags | Pasa cero. De lo contrario, se acepta la siguiente tabla.
| ||||||
[out] | phKey | Puntero al contexto de la clave generada. Tras su uso, debe liberarse con la función 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 una clave criptográfica al HSM. Las claves pueden ser permanentes o temporales. Las claves exportadas con la función DExportKey() pueden importarse sin cambiar su formato.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||||||||||||||||
[in] | szKeyId | Identificador de la clave dentro del HSM. Este identificador no debe contener espacios ni caracteres especiales. Los caracteres en mayúsculas y minúsculas distinguen entre mayúsculas y minúsculas. Véase szKeyId en DGenerateKey() para obtener más información sobre el tamaño máximo de los identificadores. | ||||||||||||||||||||||||||||
[in] | hKEKey | Contexto de la clave con la que se cifra el blob de la clave que se va a importar - KEK (clave de cifrado de la clave) | ||||||||||||||||||||||||||||
[in] | dwBlobType | Formato del búfer de claves en el parámetro pbData .
| ||||||||||||||||||||||||||||
[in] | nAlgId | Indica el algoritmo asociado a la clave criptográfica que se generará. Véase la lista de algoritmos en DGenerateKey(). Utilice D_IMPORT_ALG_PRIV_KEY_RSA cuando la clave privada importada sea RSA y esté cifrada por KEK, el algoritmo específico será detectado automáticamente por el HSM tras abrir el BLOB cifrado. | ||||||||||||||||||||||||||||
[in] | dwFlags | Parámetros adicionales de la clave. Consulte las opciones de la función DGenerateKey(). | ||||||||||||||||||||||||||||
[in] | pbData | Buffer que contiene la clave a importar. | ||||||||||||||||||||||||||||
[in] | dwDataLen | Tamaño del bloque de datos con la clave a importar. | ||||||||||||||||||||||||||||
[out] | phKey | Puntero al contexto de la clave generada. Tras su uso, debe liberarse con la función DDestroyKey. |
Formato SIMPLE_BLOB:
EB = 00 || BT || PS || 00 || D
Estructuras DER PRIVATEKEY_BLOB:
Estructura DER de PUBLICKEY_BLOB:
Estructura 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 una clave almacenada en el HSM para que pueda ser transportada. Dinamo La clave puede importarse de nuevo con la funciónDImportKey().
[in] | hKey | Contexto de la clave a exportar. |
[in] | hKEKey | Contexto de la clave con la que se cifrará el bloque de claves - KEK (clave de cifrado de claves). |
[in] | dwBlobType | Formato del búfer de claves en el parámetro pbData . Ver parámetro dwBlobType en DImportKey() para la lista de tipos. |
[in] | dwFlags | Reservado para uso futuro (debe ser 0). |
[in] | pbData | Buffer que contiene los datos de la clave según el parámetro dwBlobType. Este parámetro puede ser NULL para especificar la cantidad de memoria necesaria. |
[in,out] | pdwDataLen | Puntero al tamaño del búfer, en bytes, especificado en pbData . Cuando la función retorne, este parámetro contendrá el tamaño de los datos almacenados en pbData . |
int AAP_API DPKCS8ImportKey | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
char * | szSecret, | ||
DWORD | dwKeyAlg, | ||
DWORD | dwAttrib, | ||
BYTE * | pbKeyEnvelope, | ||
DWORD | dwKeyEnvelopeLen ) |
#include <dinamo.h>
Importa una clave privada RSA asimétrica envuelta según el estándar PKCS#8 en el HSM. La clave privada RSA puede importarse en texto claro o protegida por una envoltura digital. Para obtener más información sobre los estándares, consulte los documentos de RSA Labs Public-Key Cryptography Standards (PKCS). En los modos de funcionamiento restringidos (RM1 y RM2), las claves RSA sólo pueden importarse a través del estándar PKCS#8 utilizando un sobre digital, derivando una clave AES 256 a partir de una contraseña de al menos 01 carácter y no más de 16, y la derivación se realiza según el estándar PKCS#5 versión 2.0.
El sobre utilizado puede proceder de cualquier sistema que se adhiera a los estándares descritos.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||||||||||||||||||
[in] | szKeyId | Identificador de la clave RSA que se creará en la base HSM. Véase szKeyId en DGenerateKey() para obtener más información sobre el tamaño máximo de los identificadores. | ||||||||||||||||||||||||||||||
[in] | szSecret | Contraseña utilizada para obtener la clave AES 256. Se puede pasar NULL para ninguna contraseña (importación en texto claro) o una contraseña de no ND_MAX_P8_PWD_LEN caracteres más terminador nulo. | ||||||||||||||||||||||||||||||
[in] | dwKeyAlg | Indica el algoritmo asociado a la clave criptográfica a generar.
| ||||||||||||||||||||||||||||||
[in] | dwAttrib | Parámetros clave adicionales.
| ||||||||||||||||||||||||||||||
[in] | pbKeyEnvelope | Búfer que contiene el sobre PKCS#8 de entrada. | ||||||||||||||||||||||||||||||
[in] | dwKeyEnvelopeLen | Tamaño en bytes del sobre PKCS#8 entrante. |
int AAP_API DPKCS8ExportKey | ( | HSESSIONCTX | hSession, |
char * | szKeyId, | ||
char * | szSecret, | ||
BYTE ** | ppbKeyEnvelope, | ||
DWORD * | pdwKeyEnvelopeLen ) |
#include <dinamo.h>
Exporta una clave privada RSA asimétrica almacenada en el HSM según el estándar PKCS#8. La clave privada RSA puede exportarse en texto claro o protegida por un sobre digital. Para más información sobre las normas, consulte los documentos de RSA Labs Public-Key Cryptography Standards (PKCS). En los modos de funcionamiento restringidos (RM1 y RM2) las claves RSA exportables sólo se pueden exportar mediante el estándar PKCS#8 utilizando un sobre digital, derivando una clave AES 256 a partir de una contraseña de longitud comprendida entre ND_MIN_P8_PWD_LEN y ND_MAX_P8_PWD_LEN, y la derivación se realiza según el estándar PKCS#5 versión 2.0. El sobre de salida puede importarse a cualquier sistema que cumpla las normas descritas.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szKeyId | Identificador de la clave RSA a exportar. Véase szKeyId en DGenerateKey() para obtener más información sobre el tamaño máximo de los identificadores. |
[in] | szSecret | Contraseña con una longitud comprendida entre ND_MIN_P8_PWD_LEN y ND_MAX_P8_PWD_LEN más terminador nulo, utilizada para derivar la clave AES 256. Se puede pasar NULL para exportar en texto claro, sin contraseña. |
[out] | ppbKeyEnvelope | Puntero que contendrá el sobre PKCS#8 saliente. La asignación de memoria se realiza internamente por la biblioteca. La aplicación que llama es responsable de liberar la memoria asignada. Se debe utilizar la función DFree() para liberar este búfer. |
[out] | pdwKeyEnvelopeLen | Puntero a DWORD que contendrá el tamaño en bytes del sobre PKCS#8 saliente. |
int AAP_API DSetKeyParam | ( | HKEYCTX | hKey, |
DWORD | dwParam, | ||
BYTE * | pbData, | ||
DWORD | dwDataLen, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Cambia los parámetros de los contextos clave que, en general, influirán en su manipulación.
[in] | hKey | Contexto de la clave a exportar. | ||||||||||||||
[in] | dwParam | Define la operación que se realizará y, en consecuencia, la estructura o los datos pasados en el parámetro pbData .
| ||||||||||||||
[in] | pbData | Puntero a los datos o estructuras especificados en dwParam . | ||||||||||||||
[in] | dwDataLen | Tamaño de los datos o de la estructura especificada en dwParam . | ||||||||||||||
[in] | dwFlags | REMOVE_ATTRIBUTE se puede utilizar para eliminar los privilegios de un usuario sobre una clave. Este indicador sólo debe utilizarse junto con DKP_OWNER o DKP_USER. |
int AAP_API DGetKeyParam | ( | HKEYCTX | hKey, |
DWORD | dwParam, | ||
BYTE * | pbData, | ||
DWORD * | pdwDataLen, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Recupera parámetros de contextos clave.
[in] | hKey | Contexto de la clave a exportar | ||||||||||||||||
[in] | dwParam | Define la operación que se realizará y, en consecuencia, la estructura o los datos pasados en el parámetro pbData . Todos los valores descritos en DSetKeyParam() y mucho más:
| ||||||||||||||||
[in] | pbData | Puntero a los datos o estructuras especificados en dwParam | ||||||||||||||||
[in] | pdwDataLen | Tamaño de los datos o de la estructura especificada en dwParam | ||||||||||||||||
[in] | dwFlags | Reservado para uso futuro (debe ser 0). |
int AAP_API DDeriveKey | ( | HHASHCTX | hHash, |
char * | szKeyId, | ||
int | nAlgId, | ||
DWORD | dwFlags, | ||
HKEYCTX * | phKey ) |
#include <dinamo.h>
Deriva una clave a partir del hash introducido. Si el hash aún no está completo, se finalizará y su valor se utilizará como clave simétrica.
[in] | hHash | Contexto Hash creado con DCreateHash. |
[in] | szKeyId | Identificador de la clave dentro del HSM. Este identificador no debe contener espacios ni caracteres especiales. Los caracteres en mayúsculas y minúsculas distinguen entre mayúsculas y minúsculas. Véase szKeyId en DGenerateKey() para obtener más información sobre el tamaño máximo de los identificadores. |
[in] | nAlgId | Indica el algoritmo asociado a la clave criptográfica que se generará. Véase la lista de algoritmos en DGenerateKey(). |
[in] | dwFlags | Parámetros de clave adicionales. Véase la lista de parámetros de clave adicionales en DGenerateKey(). |
[in] | phKey | Puntero al contexto de la clave generada. Tras su uso, debe liberarse con la función DDestroyKey(). |
#include <dinamo.h>
Duplica el contexto de una clave, incluido su estado interno.
[in] | hKey | Contexto clave. |
[in] | dwFlags | Reservado para uso futuro (debe ser 0). |
[out] | phKey | Puntero al contexto de la clave generada. Tras su uso, debe liberarse con la función DDestroyKey(). |
#include <dinamo.h>
Utiliza el valor de una clave simétrica como dato de entrada para la ejecución de un hash. El contexto hash debe tener un contexto limpio para poder ser utilizado en esta función, es decir, no puede haber sido utilizado con la función DHashData().
[in] | hKey | Contexto clave. |
[in] | hHash | Contexto Hash creado con DCreateHash(). |
[in] | dwFlags | Reservado para uso futuro (debe ser 0). |
#include <dinamo.h>
Libera el contexto de una tecla después de haber sido utilizada. Una vez liberado este contexto, ya no puede ser utilizado por ninguna función y deja de ser válido.
[in] | phKey | Puntero a un contexto clave que será liberado. | ||||
[in] | dwFlags | Modificadores de operación.
|
int AAP_API DGeneratePKCS10CSR | ( | HSESSIONCTX | hSession, |
char * | szPrivateKeyName, | ||
BYTE | bVersion, | ||
char * | szDN, | ||
DWORD | dwOutType, | ||
DWORD * | pdwCSRLen, | ||
BYTE ** | ppbCSR, | ||
DWORD | dwParam ) |
#include <dinamo.h>
Genera una CSR (solicitud de firma de certificado). Se trata de una función especializada de la API de generación de CSR PKCS#10 de HSM.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||
[in] | szPrivateKeyName | Identificador de la clave privada. | ||||||||||||||
[in] | bVersion | CSR versión PKCS#10. Se admite la siguiente tabla.
| ||||||||||||||
[in] | szDN | DN (Dinstinguished Name), para generar la CSR, con un tamaño máximo de CORE_P10_CSR_DN_MAX_LEN. Los campos DN deben estar separados por '/'. | ||||||||||||||
[in] | dwOutType | Tipo de salida CSR. Se admite la siguiente tabla.
| ||||||||||||||
[out] | pdwCSRLen | Puntero al tamaño del búfer asignado en ppbCSR. | ||||||||||||||
[out] | ppbCSR | Puntero que recibirá el CSR. El tamaño del búfer asignado estará disponible a través de pdwCSRLen. La asignación de memoria se realiza internamente. La aplicación que llama es responsable de liberar la memoria asignada utilizando la API DFree(). | ||||||||||||||
[in] | dwParam | Parámetros adicionales. Se admite la siguiente tabla.
|
int AAP_API DAssociatePKCS11Key | ( | HSESSIONCTX | hSession, |
char * | szPriKey, | ||
char * | szPubKey, | ||
char * | szCert, | ||
void * | pvReserved, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
Asocia una clave privada con un certificado y opcionalmente una clave pública siguiendo las especificaciones PKCS#11 Base v2.40 sección 4.6.3 y la utilizada por Firefox.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szPriKey | Nombre de la clave privada a asociar. |
[in] | szPubKey | Nombre de la clave pública a asociar. Puede pasar NULL para evitar generar la clave pública asociada. Debe estar relacionada con la clave privada. |
[in] | szCert | Nombre del certificado a exportar. Debe estar relacionado con la clave privada. |
[in] | pvReserved | Reservado para uso futuro. Debe ser NULL. |
[in] | dwReserved | Reservado para uso futuro. Debe ser 0. |
Atributo | Valor |
---|---|
CKA_ID | SHA1 del módulo de clave pública. Definido para clave privada, clave pública y certificado. |
CKA_LABEL | Id. del certificado. Definido para la clave privada y el certificado. |
CKA_SUJETO | Asunto recuperado del certificado. Definido para la clave privada y el certificado. |
En el caso de las claves EC, el CKA_ID será el hash SHA1 del valor 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 una clave privada y un certificado RSA en formato PKCS#12.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||
[in] | szPkcs12Pwd | Contraseña para el archivo PKCS#12. Pase NULL para generar PKCS#12 sin contraseña. | ||||
[in] | szKeyId | Nombre de la clave privada a exportar. Véase szKeyId en DGenerateKey() para obtener más información sobre el tamaño máximo de los identificadores. | ||||
[in] | szCertId | Nombre del certificado a exportar. Debe estar relacionado con la clave privada. | ||||
[in] | szReserved | Reservado para uso futuro. Debe ser NULL. | ||||
[out] | ppbPkcs12 | Puntero a un puntero que contendrá el PKCS#12 generado. Esta área de datos se asignará internamente y debe liberarse utilizando DFree(). | ||||
[out] | pdwPkcs12Len | Puntero al tamaño de los datos escritos en ppbPkcs12 . | ||||
[in] | dwFlags | Pase 0 o una de las opciones de la tabla siguiente.
|
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 una clave privada/pública y un certificado desde un buffer en formato PKCS#12.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | pbPkcs12 | PKCS#12 que se importará. |
[in] | dwPkcs12Len | Tamaño del búfer que contiene PKCS#12 en pbPkcs12 . |
[in] | szPkcs12Pwd | Contraseña para PKCS#12. Pase NULL en caso de que no haya contraseña. |
[in] | szKeyId | Nombre de la clave privada a importar. Véase szKeyId en DGenerateKey() para obtener más información sobre el tamaño máximo de los identificadores. |
[in] | dwKeyAttr | Atributos de la clave privada que se desea importar Véase dwFlags en DGenerateKey() para más detalles sobre los atributos clave. |
[in] | szCertId | Nombre del certificado a importar. Debe estar relacionado con la clave privada. |
[in] | szPubKeyId | Nombre de la clave pública que se puede importar. Puede ser NULL si no desea que se importe la clave pública. |
[in] | dwFlags | Reservado para uso futuro. Debe 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 una clave privada/pública y un certificado desde un archivo en formato PKCS#12.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szPkcs12File | Nombre del archivo PKCS#12 que se va a importar. |
[in] | szPkcs12Pwd | Contraseña para PKCS#12. Pase NULL en caso de que no haya contraseña. |
[in] | szKeyId | Nombre de la clave privada a importar. Véase szKeyId en DGenerateKey() para obtener más información sobre el tamaño máximo de los identificadores. |
[in] | dwKeyAttr | Atributos de la clave privada que se desea importar Véase dwFlags en DGenerateKey() para más detalles sobre los atributos clave. |
[in] | szCertId | Nombre del certificado a importar. Debe estar relacionado con la clave privada. |
int AAP_API DRSAPublicKey2Info | ( | BYTE * | pbKey, |
DWORD | dwKeyLen, | ||
DWORD | dwInForm, | ||
void * | pvPubKeyInfo, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
Descifra la información de una clave pública RSA. Acepta claves públicas en formato PKCS#1 RSAPublicKey o X.509 SubjectPublicKeyInfo.
[in] | pbKey | Clave pública. | ||||
[in] | dwKeyLen | Tamaño del búfer pbKey . | ||||
[in] | dwInForm | Formato de introducción de claves en pbKey . Se acepta la tabla siguiente.
| ||||
[out] | pvPubKeyInfo | Puntero a una estructura DN_RSA_PUB_KEY_INFO. | ||||
[in] | dwReserved | Reservado para uso futuro (debe ser 0). |
int AAP_API DRSAPrivateKey2Info | ( | const BYTE * | pbRsa, |
DWORD | dwRsaLen, | ||
DWORD | dwInForm, | ||
DN_RSA_PRIVATE_KEY_INFO * | stRsaInfo, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
Descifra la información de una clave privada RSA. Acepta claves privadas en formato PKCS#1 RSAPrivateKey o PKCS#8 PrivateKeyInfo sin cifrar.
[in] | pbRsa | Llave privada. | ||||
[in] | dwRsaLen | Tamaño del búfer pbRsa . | ||||
[in] | dwInForm | Formato de introducción de claves en pbRsa . Se acepta la tabla siguiente.
| ||||
[out] | stRsaInfo | Puntero a una estructura DN_RSA_PRIVATE_KEY_INFO. | ||||
[in] | dwReserved | Reservado para uso futuro (debe 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>
Exportar una clave en formato BYOK (Bring Your Own Key) a un proveedor de la nube.
[in] | hSession | Contexto de la sesión. | ||||||
[in] | cszKeyId | Identificador de la clave que se va a exportar. Véase szKeyId en DGenerateKey() para obtener más información sobre el tamaño máximo de los identificadores. | ||||||
[in] | cszKekId | Identificador de la clave KEK que se utilizará para cifrar la clave que se exportará. | ||||||
[in] | dwType | Tipo de exportación. Se acepta el cuadro siguiente.
| ||||||
[in] | pvData | Puntero a una estructura de datos específica para cada tipo de exportación. Véase dwType para más detalles. | ||||||
[out] | ppbOutData | Puntero a un puntero que contendrá los datos de salida. Esta área de datos se asignará internamente y debe liberarse utilizando DFree(). | ||||||
[out] | pdwOutDataLen | Puntero al tamaño de los datos escritos en ppbOutData . | ||||||
[in] | dwReserved | Reservado para uso futuro (debe ser 0). |