Operaciones hash criptográficas simétricas y asimétricas.
Funciones | |
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) |
int AAP_API DEncrypt | ( | HKEYCTX | hKey, |
HHASHCTX | hHash, | ||
BOOL | bFinal, | ||
DWORD | dwFlags, | ||
BYTE * | pbData, | ||
DWORD * | pdwDataLen, | ||
DWORD | dwBufLen ) |
#include <dinamo.h>
Cifrado de datos. El algoritmo utilizado depende de la clave introducida en el parámetro hKey.
[in] | hKey | Contexto clave. | ||||||
[in] | hHash | Contexto hash si los datos se someten a hash antes de ser encriptados. Una vez finalizada la operación, el valor hash puede obtenerse mediante la función DGetHashParam(). | ||||||
[in] | bFinal | Indica el último bloque cifrado de una serie. TRUE para el último bloque o FALSE en caso contrario. | ||||||
[in] | dwFlags | Los valores de la tabla siguiente son aceptables para casos concretos.
| ||||||
[in,out] | pbData | Puntero a un búfer que contiene los datos que se van a cifrar. Cuando la función regresa, los datos originales se sobrescriben con el resultado de la operación de cifrado. El tamaño del búfer se especifica mediante el parámetro dwBufLen, y el número de bytes que deben procesarse se especifica mediante el parámetro pdwDataLen. El tamaño del búfer debe ser suficiente para contener los datos cifrados más el relleno. | ||||||
[in,out] | pdwDataLen | Puntero a un DWORD que contiene el tamaño de los datos en pbData . Cuando parámetro de entrada, contiene el número de bytes a procesar, cuando parámetro de salida, contiene el número de bytes de datos encriptados.Si el búfer asignado no es suficiente para recibir todos los datos cifrados (por ejemplo, no hay espacio para el relleno) la función fallará y devolverá D_MÁS_DATA. | ||||||
[in] | dwBufLen | Tamaño del búfer introducido pbData . Para las operaciones simétricas que requieren relleno, el búfer debe tener al menos la longitud de los datos más el tamaño del bloque de operaciones del algoritmo que se vaya a utilizar. |
int AAP_API DDecrypt | ( | HKEYCTX | hKey, |
HHASHCTX | hHash, | ||
BOOL | bFinal, | ||
DWORD | dwFlags, | ||
BYTE * | pbData, | ||
DWORD * | pdwDataLen ) |
#include <dinamo.h>
Desencripta los datos, a menudo encriptados por la función DEncrypt. El algoritmo utilizado depende de la clave introducida en el parámetro hKey.
[in] | hKey | Contexto clave. | ||||||
[in] | hHash | Contexto hash si los datos se someten a la operación hash después de ser descifrados. Una vez finalizada la operación, el valor hash puede obtenerse mediante la función DGetHashParam(). | ||||||
[in] | bFinal | Indica el último bloque cifrado de una serie. TRUE para el último bloque o FALSE en caso contrario. | ||||||
[in] | dwFlags | Los valores de la tabla siguiente son aceptables para casos concretos.
| ||||||
[in,out] | pbData | Puntero a un búfer que contiene los datos que se van a descifrar. Cuando la función regresa, los datos originales se sobrescriben con el resultado de la operación de cifrado. Para las operaciones simétricas de bloque, el tamaño de los datos debe ser siempre múltiplo del bloque utilizado por el algoritmo en cuestión. | ||||||
[in,out] | pdwDataLen | Puntero a un DWORD que contiene el tamaño de los datos en pbData . Cuando parámetro de entrada, contiene el número de bytes a procesar, cuando parámetro de salida, contiene el número de bytes de datos en texto claro. |
int AAP_API DCreateHash | ( | HSESSIONCTX | hSession, |
int | nAlgId, | ||
HKEYCTX | hKey, | ||
DWORD | dwFlags, | ||
HHASHCTX * | hHash ) |
#include <dinamo.h>
Inicializa un contexto hash que se utilizará con un flujo de datos. Este contexto se utiliza para llamadas posteriores a DHashData(), DHashSessionKey(), entre otras.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||||||||||||||||||||||||||||||||||||
[in] | nAlgId | Define el algoritmo asociado al contexto hash.
| ||||||||||||||||||||||||||||||||||||||||
[in] | hKey | Debe pasarse según el tipo de algoritmo pasado en nAlgId. | ||||||||||||||||||||||||||||||||||||||||
[in] | dwFlags | Reservado para uso futuro (debe ser 0). | ||||||||||||||||||||||||||||||||||||||||
[out] | hHash | Puntero al contexto del hash generado. Tras su uso, debe liberarse con la función DDestroyHash(). |
#include <dinamo.h>
Añade datos a un contexto hash dado. Esta función puede llamarse varias veces para añadir datos discontinuos.
[in] | hHash | Contexto hash generado por la función DCreateHash(). |
[in] | pbData | Buffer que contiene los datos que se añadirán al contexto hash. |
[in] | dwDataLen | Número de bytes a añadir. |
[in] | dwFlags | Reservado para uso futuro (debe ser 0). |
int AAP_API DSetHashParam | ( | HHASHCTX | hHash, |
DWORD | dwParam, | ||
BYTE * | pbData, | ||
DWORD | dwDataLen, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Cambia un contexto hash creado por DCreateHash().
[in] | hHash | Contexto hash generado por la función DCreateHash(). | ||||||
[in] | dwParam | Define el parámetro de contexto hash que se va a modificar.
| ||||||
[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 | Reservado para uso futuro (debe ser 0). |
int AAP_API DGetHashParam | ( | HHASHCTX | hHash, |
DWORD | dwParam, | ||
BYTE * | pbData, | ||
DWORD * | pdwDataLen, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Devuelve los atributos asociados a un contexto hash dado. El valor hash se puede recuperar utilizando esta función.
[in] | hHash | Contexto hash generado por la función DCreateHash(). | ||||||||
[in] | dwParam | Define el parámetro de contexto hash que se va a recuperar.
| ||||||||
[in] | pbData | Puntero a los datos o estructuras especificados en dwParam . 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 . | ||||||||
[in] | dwFlags | Reservado para uso futuro (debe ser 0). |
int AAP_API DSignHash | ( | HHASHCTX | hHash, |
HKEYCTX | hKey, | ||
DWORD | dwFlags, | ||
BYTE * | pbSignature, | ||
DWORD * | pdwSigLen ) |
#include <dinamo.h>
Firma un dato a partir de su contexto hash creado con la función DCreateHash().
[in] | hHash | Contexto hash generado por la función DCreateHash(). | ||||||||
[in] | hKey | Contexto de la clave privada que se utilizará en la firma. | ||||||||
[in] | dwFlags | Debe pasar 0 o algún modificador definido en la lista de abajo.
| ||||||||
[out] | pbSignature | Buffer que recibirá la firma. Este parámetro puede ser NULL para especificar la cantidad de memoria necesaria. | ||||||||
[in,out] | pdwSigLen | Puntero al tamaño de la firma, en bytes. Cuando la función regresa, este parámetro contendrá el tamaño de los datos almacenados en pbSignature. |
Las firmas generadas con claves EdDSA se realizan utilizando el algoritmo de firma PureEdDSA descrito en el RFC 8032. Por lo tanto, debe utilizarse el algoritmo ALG_IDENTITY_FUNC en las API de hash para utilizar la función de identidad. El tamaño máximo de datos aceptado para la firma es DN_SIG_EDDSA_MAX_DATA_LEN bytes.
#include <dinamo.h>
Libera el contexto de un hash después de que haya sido utilizado. Una vez liberado este contexto, ya no puede ser utilizado por ninguna función y deja de ser válido.
[in] | phHash | Contexto hash generado por la función DCreateHash(). |
int AAP_API DVerifySignature | ( | HHASHCTX | hHash, |
BYTE * | pbSignature, | ||
DWORD | dwSigLen, | ||
HKEYCTX | hPubKey, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Comprueba la firma del hash asociado a un contexto.
[in] | hHash | Contexto hash generado por la función DCreateHash(). | ||||||
[in] | pbSignature | Buffer que contiene la firma a verificar. | ||||||
[in] | dwSigLen | Número de bytes de la firma. | ||||||
[in] | hPubKey | Contexto de la clave pública utilizada para verificar la firma. | ||||||
[in] | dwFlags | Modificadores del comportamiento de las funciones.
|
#include <dinamo.h>
Duplica el contexto de un hash, incluyendo su estado interno.
[in] | hHash | Contexto hash generado por la función DCreateHash(). |
[in] | dwFlag | Reservado para uso futuro (debe ser 0). |
[in] | phHash | Puntero al contexto del hash generado. Tras su uso, debe liberarse con la función DDestroyHash(). |
int AAP_API DGetRandom | ( | HSESSIONCTX | hSession, |
BYTE * | pbData, | ||
DWORD | dwDataLen ) |
#include <dinamo.h>
Recupera un cierto número de bytes pseudoaleatorios para uso criptográfico.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[out] | pbData | Buffer que se llenará con bytes pseudoaleatorios. |
[in] | dwDataLen | Tamaño en bytes de pbData . |
int AAP_API DGenEcdhKey | ( | HSESSIONCTX | hSession, |
DWORD | dwOP, | ||
char * | szPriKey, | ||
void * | pvInData, | ||
DWORD | dwInDataLen, | ||
BYTE * | pbOutData, | ||
DWORD * | pdwOutDataLen, | ||
DWORD | dwFlags ) |
#include <dinamo.h>
Genera unaclave/secreto compartido utilizando el protocolo deacuerdo de claves ECDH (Elliptc Curve Diffie-Hellman).
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). | ||||||
[in] | dwOP | Modificadores del comportamiento de las funciones.
| ||||||
[in] | szPriKey | Identificador de la clave privada dentro del HSM. Este identificador no debe contener espacios ni caracteres especiales. Los caracteres en mayúsculas y minúsculas se diferencian ( se distingue entre mayúsculas y minúsculas). | ||||||
[in] | pvInData | Puntero a los datos de entrada de la función. Debe rellenarse como se describe en las opciones de dwOP | ||||||
[in] | dwInDataLen | Tamaño en bytes de pvInData . | ||||||
[out] | pbOutData | Buffer que recibirá la clave/secreto de salida. Este parámetro puede ser NULL para devolver la cantidad de memoria necesaria en pdwOutDataLen . Este parámetro se ignorará cuando la operación consista en escribir la clave en el HSM. | ||||||
[in,out] | pdwOutDataLen | Puntero al tamaño del búfer pbOutData en bytes, que contendrá la clave/secreto de salida. Cuando la función retorne, este parámetro contendrá el tamaño de los datos realmente almacenados en pbOutData . Este parámetro se ignorará cuando la operación consista en escribir la clave en el HSM. | ||||||
[in] | dwFlags | Reservado para uso futuro (debe ser 0). |
int AAP_API DCRLCertCheck | ( | HSESSIONCTX | hSession, |
char * | szCRL, | ||
char * | szCertId, | ||
char * | szVerifyInfo ) |
#include <dinamo.h>
Valida un certificado X.509 en el HSM mediante una LCR (lista de certificados revocados) y una cadena de certificados.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | szCRL | Nombre de la LCR (Lista de Certificados Revocados). |
[in] | szCertId | Nombre del certificado a validar. |
[in] | szVerifyInfo | Nombre de la cadena/certificado para validar el certificado especificado en szCertId. Se puede pasar NULL para evitar comprobar la cadena de certificados. |
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
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>
Divide M de N en secreto. Según el estándar de compartición de secretos de Shamir.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | bM | Número mínimo de piezas necesarias para reconstruir el secreto. DN_M_OF_N_S_MIN mínimo y DN_M_OF_N_S_MAX máximo. |
[in] | bN | Número total de piezas generadas. DN_M_OF_N_S_MIN mínimo y DN_M_OF_N_S_MAX máximo. |
[in] | pbSecret | Un secreto que se compartirá en varias partes. Debe ser DN_M_DE_N_S_LEN. Se puede pasar NULL para que el HSM genere aleatoriamente un secreto, en cuyo caso el valor se devolverá en pstSplitInfo . |
[in] | dwSecretLen | Tamaño de los datos introducidos pbSecret . Caso pbSecret es NULL pase 0 en este parámetro. |
[out] | pstSplitInfo | Datos de salida. |
[in] | dwReserved | Reservado para uso futuro (debe ser 0). |
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
int AAP_API DMofNRecover | ( | HSESSIONCTX | hSession, |
DN_M_OF_N_PART * | pstParts, | ||
DWORD | dwPartsCount, | ||
BYTE * | pbSecret, | ||
DWORD | dwReserved ) |
#include <dinamo.h>
Reconstruye el secreto M de N a partir de las partes de los custodios. Según el patrón de compartición de secretos de Shamir.
[in] | hSession | Contexto adquirido a través de la función DOpenSession(). |
[in] | pstParts | Conjunto de piezas de custodia. |
[in] | dwPartsCount | Número de piezas introducidas pstPartes . |
[in] | pbSecret | Secreto reconstruido. Debe tener un tamaño DN_M_OF_N_S_LEN. |
[in] | dwReserved | Reservado para uso futuro (debe ser 0). |
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.