API C/C++
HSM Dinamo
Cargando...
Buscando...
No se han encontrado entradas
Blockchain

Descripción detallada

Operaciones de apoyo a la seguridad de las estructuras basadas en Blockchain.

Consulte la documentación técnica del HSM.

Funciones

int AAP_API DBchainCreateXPrv(HSESSIONCTX hSession, BYTE bType, DWORD dwAttributes, const char *szId, const BYTE *pcbData, DWORD dwDataLen, DWORD dwReserved)
 
int AAP_API DBchainCreateBip32Ckd(HSESSIONCTX hSession, BYTE bVersion, DWORD dwIndex, DWORD dwAttributes, const char *cszPar, const char *cszDst, DN_BCHAIN_KEY_INFO *pKeyInfo, DWORD dwReserved)
 
int AAP_API DBchainGetAddress(HSESSIONCTX hSession, BYTE bType, BYTE bVer, const char *cszHrp, const char *cszPk, BYTE *pbAddress, DWORD *pdwAddressLen, DWORD dwReserved)
 
int AAP_API DBchainSignHash(HSESSIONCTX hSession, BYTE bType, BYTE bHashMode, BYTE *pbHash, DWORD dwHashLen, const char *cszPk, BYTE *pbSig, DWORD *pdwSigLen, DWORD dwReserved)
 
int AAP_API DBchainVerify(HSESSIONCTX hSession, BYTE bSigType, BYTE bHashMode, const BYTE *pbHash, DWORD dwHashLen, const BYTE *pbSig, DWORD dwSigLen, BYTE bInPbkType, const BYTE *pbInPbk, BYTE bInPbkLen, DWORD dwReserved)
 
int AAP_API DBchainEdDsaSign(HSESSIONCTX hSession, BYTE bType, const char *cszCtxStr, BYTE *pbData, DWORD dwDataLen, const char *cszPk, BYTE *pbSig, DWORD *pdwSigLen, DWORD dwReserved)
 
int AAP_API DBchainEdDsaVerify(HSESSIONCTX hSession, BYTE bType, const char *cszCtxStr, BYTE *pbData, DWORD dwDataLen, BYTE bPbkType, BYTE *pbPbk, DWORD dwPbkLen, BYTE *pbSig, DWORD dwSigLen, DWORD dwReserved)
 
int AAP_API DBchainPkImport(HSESSIONCTX hSession, BYTE bFormat, DWORD dwAttributes, const char *cszId, const BYTE *pcbData, DWORD dwDataLen, DWORD dwReserved)
 
int AAP_API DBchainPkExport(HSESSIONCTX hSession, BYTE bFormat, BYTE bVersion, BYTE bCompressed, const char *cszId, BYTE **ppbData, DWORD *pdwDataLen, DWORD dwReserved)
 
int AAP_API DBchainGetPubKey(HSESSIONCTX hSession, BYTE bType, const char *cszId, BYTE *pbData, DWORD *pdwDataLen, DWORD dwReserved)
 
int AAP_API DBchainRecoverPbkFromSignature(HSESSIONCTX hSession, BYTE bSigType, BYTE bHashMode, const BYTE *pbHash, DWORD dwHashLen, const BYTE *pbSig, DWORD dwSigLen, DN_BCHAIN_PBK *pPbk, DWORD dwReserved)
 
int AAP_API DBchainGetKeyInfo(HSESSIONCTX hSession, DWORD dwReserved, const char *cszId, void *pvData, DWORD *pdwDataLen)
 
int AAP_API DBchainHashData(HSESSIONCTX hSession, BYTE bMode, BYTE *pbData, DWORD dwDataLen, BYTE *pbHash, DWORD *pdwHashLen, DWORD dwReserved)
 
int AAP_API DBchainEd2X(HSESSIONCTX hSession, const char *cszPk, const char *cszTo, DWORD dwAttr, DWORD dwReserved)
 

Funciones

DBchainCreateXPrv()

int AAP_API DBchainCreateXPrv ( HSESSIONCTX hSession,
BYTE bType,
DWORD dwAttributes,
const char * szId,
const BYTE * pcbData,
DWORD dwDataLen,
DWORD dwReserved )

#include <dinamo.h>

Crea una clave privada extendida (XPrv) para el blockchain en el estándar BIP32.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bTypeTipo de generación de claves.
Valor Significado
DN_BCHAIN_BTC_MINIKEY Bitcoin minikey. pcbData debe ser NULL y dwDataLen debe ser 0.
DN_BCHAIN_BIP32_SEED_XPRV Semilla BIP32 XPrv. pcbData debe contener la estructura DN_BCHAIN_BIP32_SEED_XPRV_DATA lleno.
DN_BCHAIN_BIP39_SEED_XPRV BIP39 semilla XPrv. pcbData debe contener la estructura DN_BCHAIN_BIP39_SEED_XPRV_DATA lleno.
DN_BCHAIN_BIP32_XPRV BIP32 XPrv. dwDataLen debe ser un BYTE que contenga la versión de la clave. Véanse las anotaciones para más detalles.
DN_BCHAIN_BIP32_ED25519_XPRV BIP32 Ed25519 XPrv. dwDataLen debe ser un BYTE que contenga la versión de la clave. Véanse las anotaciones para más detalles.
[in]dwAttributesParámetros adicionales de la clave. Consulte las opciones de la función DGenerateKey(). Esta API incluye automáticamente el indicador BCHAIN_KEY, necesario para las operaciones de blockchain.
[in]szIdNombre de la clave en el HSM. Debe tener un tamaño máximo de MAX_OBJ_ID_FQN_LEN.
[in]pcbDataBuffer que contiene los datos necesarios para generar la clave. Los datos de entrada deben pasarse de acuerdo con la opción bTipo y el tamaño de los datos pasados aquí debe especificarse en dwDataLen.
[in]dwDataLenTamaño de los datos introducidos pcbData.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Notas
Tabla de opciones de versión para la clave XPrv.
Valor Significado
DN_BCHAIN_VER_BIP32_MAINNET Mainnet BIP32.
DN_BCHAIN_VER_BIP32_TESTNET Testnet BIP32.
DN_BCHAIN_VER_BIP32_HTR_MAINNET Mainnet BIP32 Hathor.
DN_BCHAIN_VER_BIP32_HTR_TESTNET Testnet BIP32 Hathor.
Ejemplos
ckd_bchain.c, get_key_info_bchain.c, get_pub_key_bchain.c, import_export_bchain.c y sign_verify_bchain.c.

DBchainCreateBip32Ckd()

int AAP_API DBchainCreateBip32Ckd ( HSESSIONCTX hSession,
BYTE bVersion,
DWORD dwIndex,
DWORD dwAttributes,
const char * cszPar,
const char * cszDst,
DN_BCHAIN_KEY_INFO * pKeyInfo,
DWORD dwReserved )

#include <dinamo.h>

Realiza una operación de derivación de clave secundaria (CKD). Deriva una clave privada extendida (XPrv) para la cadena de bloques en el estándar BIP32.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bVersionVersión clave.
Valor Significado
DN_BCHAIN_VER_BIP32_MAINNET Mainnet BIP32.
DN_BCHAIN_VER_BIP32_TESTNET Testnet BIP32.
DN_BCHAIN_VER_BIP32_HTR_MAINNET Mainnet BIP32 Hathor.
DN_BCHAIN_VER_BIP32_HTR_TESTNET Testnet BIP32 Hathor.
[in]dwIndexÍndice de la clave a derivar. Clave no endurecido utilizar el 0 a 231-1 y llaves endurecido índices de uso (sin restricciones de seguridad) de 231 a 232-1como se especifica en la norma BIP32. Se recomienda encarecidamente generar claves reforzadas. Utilice DN_BCHAIN_SECURE_BIP32_INDEX_BASE como base para generar índices endurecido (Ej. DN_BCHAIN_SECURE_BIP32_INDEX_BASE + 1 ...).
[in]dwAttributesParámetros adicionales de la clave. Consulte las opciones de la función DGenerateKey(). Esta API incluye automáticamente el indicador BCHAIN_KEY, necesario para las operaciones de blockchain.
[in]cszParNombre de la clave padre en el HSM. Debe tener un tamaño máximo de MAX_OBJ_ID_FQN_LEN. Debe ser una clave XPrv(DN_BCHAIN_BIP32_XPRV etc.). Véase DBchainCreateXPrv().
[in]cszDstNombre de la clave que se derivará en el HSM. Debe tener un tamaño máximo de MAX_OBJ_ID_FQN_LEN.
[out]pKeyInfoPuntero a la estructura DN_BCHAIN_KEY_INFO que contendrá la información de la clave generada.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Ejemplos
ckd_bchain.c.

DBchainGetAddress()

int AAP_API DBchainGetAddress ( HSESSIONCTX hSession,
BYTE bType,
BYTE bVer,
const char * cszHrp,
const char * cszPk,
BYTE * pbAddress,
DWORD * pdwAddressLen,
DWORD dwReserved )

#include <dinamo.h>

Recupera la dirección de una clave utilizando el módulo blockchain.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bTypeTipo de dirección a generar. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_AT_BTC_P2PKH Dirección P2PKH.

bVer debe ser DN_BCHAIN_VER_BTC_A1_MAIN_NET, DN_BCHAIN_VER_BTC_A3_MAIN_NET, DN_BCHAIN_VER_BTC_AMN_TEST_NET, DN_BCHAIN_VER_HTR_MAINNET o DN_BCHAIN_VER_HTR_TESTNET.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_BTC_P2SH Dirección P2SH BIP13.

bVer debe ser DN_BCHAIN_VER_BTC_A1_MAIN_NET, DN_BCHAIN_VER_BTC_A3_MAIN_NET, DN_BCHAIN_VER_BTC_AMN_TEST_NET, DN_BCHAIN_VER_HTR_MAINNET o DN_BCHAIN_VER_HTR_TESTNET.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
cszPk debe ser el script-hash.
DN_BCHAIN_AT_BTC_B32_PKH Dirección BIP32 P2PKH BIP173.

bVer debe ser DN_BCHAIN_VER_BTC_B32_WITVER.
cszHrp puede ser DN_BCHAIN_HRP_BTC_MAIN_NET o DN_BCHAIN_HRP_BTC_TEST_NET.
DN_BCHAIN_AT_BTC_B32_SH Dirección BIP32 P2SH.

bVer debe ser DN_BCHAIN_VER_BTC_A1_MAIN_NET, DN_BCHAIN_VER_BTC_A3_MAIN_NET, DN_BCHAIN_VER_BTC_AMN_TEST_NET, DN_BCHAIN_VER_HTR_MAINNET o DN_BCHAIN_VER_HTR_TESTNET.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
cszPk debe ser el script-hash.
DN_BCHAIN_AT_ETH_EOA Dirección ETH EOA.

bVer debe ser DN_BCHAIN_VER_UNUSED.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_ETH_EOA_MC_CKS Dirección ETH EOA MC CKS. EIP55.

bVer debe ser DN_BCHAIN_VER_UNUSED.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_ETH_EOA_ICAP Dirección ETH EOA ICAP.

bVer debe ser DN_BCHAIN_VER_UNUSED.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_ALGORAND Dirección Algorand.

bVer debe ser DN_BCHAIN_VER_UNUSED.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_TRON_HEX Dirección hexadecimal de TRON.

bVer debe ser DN_BCHAIN_VER_UNUSED.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_TRON_B58 Dirección TRON Base 58.

bVer debe ser DN_BCHAIN_VER_UNUSED.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_XRP Dirección de XRP Ledger/Ripple.

bVer debe ser DN_BCHAIN_VER_XRP_CLASSIC.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_SOL Dirección Solana.

bVer debe ser DN_BCHAIN_VER_UNUSED.
cszHrp debe ser DN_BCHAIN_HRP_UNUSED.
[in]bVerVersión de la dirección.
Valor Significado
DN_BCHAIN_VER_UNUSED Parámetro no utilizado.
DN_BCHAIN_VER_BTC_A1_MAIN_NET Red principal de Bitcoin A1.
DN_BCHAIN_VER_XRP_CLASSIC XRP Ledger/Ripple Classic.
DN_BCHAIN_VER_BTC_AMN_TEST_NET Red de prueba Bitcoin P2PKH.
DN_BCHAIN_VER_BTC_A3_MAIN_NET Red principal de Bitcoin A3.
DN_BCHAIN_VER_BTC_B32_WITVER Bitcoin B32 witver.
DN_BCHAIN_VER_HTR_MAINNET Hathor mainnet.
DN_BCHAIN_VER_HTR_TESTNET Hathor testnet.
DN_BCHAIN_VER_HTR_P2SH_MAINNET Red principal Hathor P2SH.
DN_BCHAIN_VER_HTR_P2SH_TESTNET Hathor P2SH testnet.
[in]cszHrpHRP (Human Readable Part) de la clave. Se aceptan los valores de la tabla. Debe tener un tamaño máximo de DN_BCHAIN_MAX_HRP.
Valor Significado
DN_BCHAIN_HRP_UNUSED Parámetro no utilizado.
DN_BCHAIN_HRP_BTC_MAIN_NET Bitcoin mainnet.
DN_BCHAIN_HRP_BTC_TEST_NET Bitcoin testnet.
[in]cszPkClave privada que generará la dirección o el script-hash. Si se utiliza script-hash pasar un buffer de tamaño MAX_OBJ_ID_FQN_LEN con script-hash con relleno cero.
[in,out]pbAddressBuffer que recibirá la dirección. Puede ser NULL para obtener el tamaño requerido. Se recomienda utilizar el tamaño máximo de DN_BCHAIN_MAX_ADDR_LEN.
[in,out]pdwAddressLenTamaño del búfer pbDirección. Si el búfer pbDirección es NULL, este parámetro recibirá el tamaño requerido.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Ejemplos
ckd_bchain.c.

DBchainSignHash()

int AAP_API DBchainSignHash ( HSESSIONCTX hSession,
BYTE bType,
BYTE bHashMode,
BYTE * pbHash,
DWORD dwHashLen,
const char * cszPk,
BYTE * pbSig,
DWORD * pdwSigLen,
DWORD dwReserved )

#include <dinamo.h>

Firma un hash utilizando el módulo blockchain.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bTypeTipo de suscripción que se va a generar. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_SIG_DER_ECDSA Firma DER, en el formato v || DER. SECG!SEC1 DER estricto con S baja como se describe en BIP62/66, BIP146, EIP2. Con 'v' de un tamaño de 1 byte. v' es el bit de paridad de 'r' y puede tener los valores 0 ó 1.
DN_BCHAIN_SIG_RAW_ECDSA Firma RAW, en el formato v || r || s. v' tiene un tamaño de 1 byte y 'r' y 's' tienen un tamaño de 32 bytes cada uno. v' es el bit de paridad de 'r' y puede tener los valores 0 o 1.
DN_BCHAIN_SIG_BIP340 Firma BIP340 - Schnorr 64 bytes.
DN_BCHAIN_DER_RFC_6979_ECDSA Firma ECDSA determinista estándar RFC-6979. Tipo DER en el formato v || DER, teniendo 'v' un tamaño de 1 byte. v' es el bit de paridad de 'r' y puede tener los valores 0 ó 1.
DN_BCHAIN_RAW_RFC_6979_ECDSA Firma ECDSA determinista estándar RFC-6979. Tipo RAW en el formato v || r || s, teniendo 'v' un tamaño de 1 byte y 'r' y 's' un tamaño de 32 bytes cada uno. v' es el bit de paridad de 'r' y puede tener los valores 0 ó 1.
[in]bHashModeTipo hash.
Valor Significado
DN_BCHAIN_HASH_BTC_H160 Bitcoin H160.
DN_BCHAIN_HASH_RIPEMD160 RIPEMD160.
DN_BCHAIN_HASH_SHA256 SHA256
DN_BCHAIN_HASH_BTC_SHA256_2X Bitcoin SHA256 2x.
DN_BCHAIN_HASH_KECCAK256 KECCAK256.
[in]pbHashHash calculado según bHashMode.
[in]dwHashLenTamaño del hash introducido en pbHash.
[in]cszPkNombre de la clave privada.
[in,out]pbSigBuffer que recibirá la firma.Puede ser NULL para obtener el tamaño requerido.Se recomienda utilizar el tamaño máximo de DN_BCHAIN_MAX_SIG_LEN.
[in,out]pdwSigLenTamaño del búfer pbSig.Case el búfer pbSig es NULL, este parámetro recibirá el tamaño requerido.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Ejemplos
sign_verify_bchain.c.

DBchainVerify()

int AAP_API DBchainVerify ( HSESSIONCTX hSession,
BYTE bSigType,
BYTE bHashMode,
const BYTE * pbHash,
DWORD dwHashLen,
const BYTE * pbSig,
DWORD dwSigLen,
BYTE bInPbkType,
const BYTE * pbInPbk,
BYTE bInPbkLen,
DWORD dwReserved )

#include <dinamo.h>

Verifica una firma utilizando el módulo blockchain.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bSigTypeTipo de suscripción que se va a generar. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_SIG_DER_ECDSA Firma DER, en el formato v || DER. SECG!SEC1 DER estricto con S baja como se describe en BIP62/66, BIP146, EIP2. Con 'v' de un tamaño de 1 byte. v' es el bit de paridad de 'r' y puede tener los valores 0 ó 1.
DN_BCHAIN_SIG_RAW_ECDSA Firma RAW, en el formato v || r || s. v' tiene un tamaño de 1 byte y 'r' y 's' tienen un tamaño de 32 bytes cada uno. v' es el bit de paridad de 'r' y puede tener los valores 0 o 1.
DN_BCHAIN_SIG_BIP340 Firma BIP340 - Schnorr 64 bytes.
[in]bHashModeTipo hash.
Valor Significado
DN_BCHAIN_HASH_BTC_H160 Bitcoin H160.
DN_BCHAIN_HASH_RIPEMD160 RIPEMD160.
DN_BCHAIN_HASH_SHA256 SHA256
DN_BCHAIN_HASH_BTC_SHA256_2X Bitcoin SHA256 2x.
DN_BCHAIN_HASH_KECCAK256 KECCAK256.
[in]pbHashHash calculado según bHashMode.
[in]dwHashLenTamaño del hash introducido en pbHash.
[in]pbSigFirma de conformidad con bSigType.
[in]dwSigLenTamaño de firma introducido en pbSig.
[in]bInPbkTypeFormato de la clave pública. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_PBK_SEC1_UNCOMP ECDSA SEC1 sin comprimir.
DN_BCHAIN_PBK_SEC1_COMP ECDSA SEC1 comprimido.
DN_BCHAIN_PBK_BIP340 Schnorr, BIP-340.
DN_BCHAIN_PBK_ED25519 Ed25519.
[in]pbInPbkFirma de conformidad con bInPbkType.
[in]bInPbkLenTamaño de firma introducido en pbInPbk.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Ejemplos
sign_verify_bchain.c.

DBchainEdDsaSign()

int AAP_API DBchainEdDsaSign ( HSESSIONCTX hSession,
BYTE bType,
const char * cszCtxStr,
BYTE * pbData,
DWORD dwDataLen,
const char * cszPk,
BYTE * pbSig,
DWORD * pdwSigLen,
DWORD dwReserved )

#include <dinamo.h>

Genera una firma EdDsa utilizando el módulo blockchain.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bTypeTipo de suscripción que se va a generar. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_EDDSA_SIG_PURE EdDsa Pure Signature.
DN_BCHAIN_EDDSA_SIG_ALGORAND Firma del algoritmo EdDsa.
DN_BCHAIN_EDDSA_SIG_XRP Firma EdDsa XRP.
DN_BCHAIN_EDDSA_SIG_SOL Firma EdDsa Solana.
[in]cszCtxStrCadena de contexto definida en RFC-8032 . Se puede pasar DN_BCHAIN_EDDSA_CSTR_UNUSED.
[in]pbDataDatos a firmar.
[in]dwDataLenTamaño de los datos a firmar.
[in]cszPkNombre de la clave privada.
[in,out]pbSigBuffer que recibirá la firma. Puede ser NULL para obtener el tamaño requerido. Se recomienda utilizar el tamaño máximo de DN_BCHAIN_MAX_SIG_LEN.
[in,out]pdwSigLenTamaño del búfer pbSig. Si el búfer pbSig es NULL, este parámetro recibirá el tamaño requerido.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.

DBchainEdDsaVerify()

int AAP_API DBchainEdDsaVerify ( HSESSIONCTX hSession,
BYTE bType,
const char * cszCtxStr,
BYTE * pbData,
DWORD dwDataLen,
BYTE bPbkType,
BYTE * pbPbk,
DWORD dwPbkLen,
BYTE * pbSig,
DWORD dwSigLen,
DWORD dwReserved )

#include <dinamo.h>

Verifica una firma EdDsa utilizando el módulo blockchain.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bTypeTipo de firma a verificar. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_EDDSA_SIG_PURE EdDsa Pure Signature.
DN_BCHAIN_EDDSA_SIG_ALGORAND Firma del algoritmo EdDsa.
DN_BCHAIN_EDDSA_SIG_XRP Firma EdDsa XRP.
DN_BCHAIN_EDDSA_SIG_SOL Firma EdDsa Solana.
[in]cszCtxStrCadena de contexto definida en RFC-8032 de longitud máxima DN_BCHAIN_EDDSA_MAX_CSTRL. Se puede pasar DN_BCHAIN_EDDSA_CSTR_UNUSED.
[in]pbDataDatos por verificar.
[in]dwDataLenTamaño de los datos a comprobar.
[in]bPbkTypeFormato de la clave pública. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_PBK_ED25519 Ed25519.
DN_BCHAIN_PBK_AT_ALGORAND Algoritmo.
DN_BCHAIN_PBK_BIP32_XPUB BIP32 XPub.
DN_BCHAIN_PBK_AT_SOL Solana.
[in]pbPbkClave pública utilizada para la verificación.
[in]dwPbkLenTamaño de la clave pública.
[in]pbSigFirma a verificar.
[in]dwSigLenTamaño de la firma.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.

DBchainPkImport()

int AAP_API DBchainPkImport ( HSESSIONCTX hSession,
BYTE bFormat,
DWORD dwAttributes,
const char * cszId,
const BYTE * pcbData,
DWORD dwDataLen,
DWORD dwReserved )

#include <dinamo.h>

Importa una clave privada utilizando el módulo blockchain.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bFormatFormato de la clave a importar. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_KEY_WIF Formato de importación de carteras (WIF).
DN_BCHAIN_KEY_MINI Bitcoin minikey.
DN_BCHAIN_KEY_HEX Escala de la clave privada en hexadecimal. Importada como una clave de tipo ALG_ECC_SECP256K1.
DN_BCHAIN_KEY_SEC1 SEC1.
DN_BCHAIN_KEY_XPRIV XPriv.
DN_BCHAIN_KEY_ED25519_B64 Ed25519 en formato Base 64.
DN_BCHAIN_KEY_ED25519_XPRIV Ed25519 en formato XPriv.
[in]dwAttributesParámetros adicionales de la clave. Consulte las opciones de la función DGenerateKey(). Esta API incluye automáticamente el indicador BCHAIN_KEY, necesario para las operaciones de blockchain.
[in]cszIdNombre de la clave privada.
[in]pcbDataClave privada en el formato especificado en bFormato. El tamaño de este búfer debe introducirse en dwDataLen.
[in]dwDataLenTamaño del búfer pcbData.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Ejemplos
import_export_bchain.c.

DBchainPkExport()

int AAP_API DBchainPkExport ( HSESSIONCTX hSession,
BYTE bFormat,
BYTE bVersion,
BYTE bCompressed,
const char * cszId,
BYTE ** ppbData,
DWORD * pdwDataLen,
DWORD dwReserved )

#include <dinamo.h>

Exporta una clave privada utilizando el módulo blockchain.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bFormatFormato de la clave a exportar. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_KEY_WIF Formato de importación de carteras (WIF). bVersión puede ser DN_BCHAIN_VER_WIF_MAIN_NET o DN_BCHAIN_VER_WIF_TEST_NET.
DN_BCHAIN_KEY_MINI Bitcoin minikey. bVersión debe ser DN_BCHAIN_VER_UNUSED.
DN_BCHAIN_KEY_HEX Escalar de la clave privada en hexadecimal. bVersión debe ser DN_BCHAIN_VER_UNUSED.
DN_BCHAIN_KEY_SEC1 SEC1. bVersión debe ser DN_BCHAIN_VER_UNUSED.
DN_BCHAIN_KEY_XPRIV XPriv. bVersión debe ser DN_BCHAIN_VER_UNUSED.
DN_BCHAIN_KEY_ED25519_B64 Ed25519 en formato Base 64. bVersión debe ser DN_BCHAIN_VER_UNUSED y el parámetro bComprimido se ignora.
DN_BCHAIN_KEY_ED25519_XPRIV Ed25519 en formato XPriv. bVersión debe ser DN_BCHAIN_VER_UNUSED y el parámetro bComprimido se ignora.
[in]bVersionVersión clave.
Valor Significado
DN_BCHAIN_VER_UNUSED Parámetro no utilizado.
DN_BCHAIN_VER_WIF_MAIN_NET Red principal de WIF.
DN_BCHAIN_VER_WIF_TEST_NET Red de prueba WIF.
[in]bCompressed0 para exportar la clave en formato no comprimido y 1 para formato comprimido.
[in]cszIdNombre de la clave privada.
[out]ppbDataClave privada. El tamaño de este búfer se introducirá en pdwDataLen. Este búfer debe liberarse con la API DFree().
[out]pdwDataLenTamaño del búfer ppcbData.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Ejemplos
import_export_bchain.c.

DBchainGetPubKey()

int AAP_API DBchainGetPubKey ( HSESSIONCTX hSession,
BYTE bType,
const char * cszId,
BYTE * pbData,
DWORD * pdwDataLen,
DWORD dwReserved )

#include <dinamo.h>

Recuperar una clave pública a partir de una clave privada utilizando el módulo blockchain.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bTypeFormato de la clave pública a exportar. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_PBK_SEC1_UNCOMP ECDSA SEC1 sin comprimir.
DN_BCHAIN_PBK_SEC1_COMP ECDSA SEC1 comprimido.
DN_BCHAIN_PBK_BIP340 Schnorr, BIP-340.
DN_BCHAIN_PBK_ED25519 Ed25519.
DN_BCHAIN_PBK_AT_ALGORAND Algoritmo.
DN_BCHAIN_PBK_BIP32_XPUB BIP32 XPub.
DN_BCHAIN_PBK_AT_SOL Solana.
[in]cszIdNombre de la clave privada.
[out]pbDataClave pública. Se puede pasar NULL para recibir el tamaño esperado en pdwDataLen. El tamaño máximo de este búfer es DN_BCHAIN_MAX_PBK_LEN.
[in,out]pdwDataLenTamaño del búfer pcbData. Contendrá, al final de la llamada, la cantidad de datos escritos en pcbData.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Ejemplos
get_pub_key_bchain.c.

DBchainRecuperarPbkDeFirma()

int AAP_API DBchainRecoverPbkFromSignature ( HSESSIONCTX hSession,
BYTE bSigType,
BYTE bHashMode,
const BYTE * pbHash,
DWORD dwHashLen,
const BYTE * pbSig,
DWORD dwSigLen,
DN_BCHAIN_PBK * pPbk,
DWORD dwReserved )

#include <dinamo.h>

Recupera una clave pública (PBK) de una firma de tipo ECDSA.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bSigTypeTipo de suscripción que se va a generar. Puede ser uno de los valores siguientes.
Valor Significado
DN_BCHAIN_SIG_DER_ECDSA Firma DER, en el formato v || DER. SECG!SEC1 DER estricto con S baja como se describe en BIP62/66, BIP146, EIP2. Con 'v' de un tamaño de 1 byte. v' es el bit de paridad de 'r' y puede tener los valores 0 ó 1.
DN_BCHAIN_SIG_RAW_ECDSA Firma RAW, en el formato v || r || s. v' tiene un tamaño de 1 byte y 'r' y 's' tienen un tamaño de 32 bytes cada uno. v' es el bit de paridad de 'r' y puede tener los valores 0 o 1.
[in]bHashModeTipo hash.
Valor Significado
DN_BCHAIN_HASH_BTC_H160 Bitcoin H160.
DN_BCHAIN_HASH_RIPEMD160 RIPEMD160.
DN_BCHAIN_HASH_SHA256 SHA256
DN_BCHAIN_HASH_BTC_SHA256_2X Bitcoin SHA256 2x.
DN_BCHAIN_HASH_KECCAK256 KECCAK256.
[in]pbHashHash calculado según bHashMode.
[in]dwHashLenTamaño del hash introducido en pbHash.
[in]pbSigFirma de conformidad con bSigType.
[in]dwSigLenTamaño de firma introducido en pbSig.
[out]pPbkClave pública que debe recuperarse. Introduzca una estructura de tipo DN_BCHAIN_PBK.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Ejemplos
sign_verify_bchain.c.

DBchainGetKeyInfo()

int AAP_API DBchainGetKeyInfo ( HSESSIONCTX hSession,
DWORD dwReserved,
const char * cszId,
void * pvData,
DWORD * pdwDataLen )

#include <dinamo.h>

Recupera las propiedades de una clave utilizando el módulo blockchain.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]dwReservedReservado para uso futuro (debe ser 0).
[in]cszIdNombre de la clave privada.
[out]pvDataPropiedades clave. Recibe una estructura DN_BCHAIN_KEY_INFO. Se puede pasar NULL para recibir el tamaño esperado en pdwDataLen.
[in,out]pdwDataLenTamaño del búfer pcbData. Contendrá, al final de la llamada, la cantidad de datos escritos en pcbData.
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Ejemplos
get_key_info_bchain.c.

DBchainHashData()

int AAP_API DBchainHashData ( HSESSIONCTX hSession,
BYTE bMode,
BYTE * pbData,
DWORD dwDataLen,
BYTE * pbHash,
DWORD * pdwHashLen,
DWORD dwReserved )

#include <dinamo.h>

Calcula un hash utilizando el módulo blockchain.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]bModeTipo hash.
Valor Significado
DN_BCHAIN_HASH_BTC_H160 Bitcoin H160.
DN_BCHAIN_HASH_RIPEMD160 RIPEMD160.
DN_BCHAIN_HASH_SHA256 SHA256
DN_BCHAIN_HASH_BTC_SHA256_2X Bitcoin SHA256 2x.
DN_BCHAIN_HASH_KECCAK256 KECCAK256.
[in]pbDataDatos que se van a procesar. El tamaño de este búfer debe introducirse en dwDataLen. Tamaño máximo de DN_BCHAIN_MAX_HDATA_LEN.
[in]dwDataLenTamaño del búfer pbData.
[out]pbHashRecibe el hash calculado. Se puede pasar NULL para recibir el tamaño esperado en pdwHashLen.
[in,out]pdwHashLenTamaño del búfer pbHash. Contendrá, al final de la llamada, la cantidad de datos escritos en pbHash.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Notas
Esta API está disponible para la validación de la implementación. Recomendamos generar el hash por software para un mejor rendimiento y un mejor uso de los recursos del HSM.
Ejemplos
sign_verify_bchain.c.

DBchainEd2X()

int AAP_API DBchainEd2X ( HSESSIONCTX hSession,
const char * cszPk,
const char * cszTo,
DWORD dwAttr,
DWORD dwReserved )

#include <dinamo.h>

Convierte una clave Edwards (Ed) al formato Montgomery (x). Actualmente convierte claves Ed25519 a X25519.

Parámetros
[in]hSessionContexto adquirido a través de la función DOpenSession().
[in]cszPkNombre de la clave privada en formato Edwards que existe en el HSM.
[in]cszToNombre de la clave privada en formato Montgomery que se creará en el HSM.
[in]dwAttrAtributos clave. Véase dwAttr en DGenerateKey() para obtener más información sobre los atributos de la clave. Los atributos se añaden a los atributos actuales de la clave de origen cszPk.
[in]dwReservedReservado para uso futuro (debe ser 0).
Devolución
0 (CERO) si la función tiene éxito.
Consulte la sección Códigos de retorno para conocer otros valores.
Observación
Las claves deben estar marcadas con la bandera BCHAIN_KEY para ser convertidas.