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.

Las API del módulo Blockchain están destinadas a operaciones específicas para procesar la criptografía de la red blockchain y las especificaciones BIP, EIP y SLIP.

La firma ECDSA, por ejemplo, está especializada para evitar maleabilidad de la firmacon la restricción de BAJA-S.

Ejemplos de operaciones disponibles en el módulo Blockchain:

  1. Generación de claves privadas extendidas (XPrv) en el estándar BIP32.
  1. Derivación de claves infantiles en las normas BIP32 y SLIP10.
  1. Recuperación de direcciones.
  1. Firmas digitales ECDSA, en las normas SECG DER estrictas (BIP62/66 y BIP 146) y Schnorr en la norma BIP340;
  1. Firmas digitales Curva EdDSA 25519.
  1. Verificación de firmas.
  1. Importación y exportación de claves mediante varios formatos (WIF, Hex, Sec1, Xpriv, etc.).
  1. Recuperación de la clave pública con diferentes formatos (BIP32 Xpub, Sec1 con y sin compresión, Schnorr BIP340 etc).
  1. Dividir y recuperar secretos con el esquema M de N utilizando SSS (Shamir's Secret Sharing).
  1. Operaciones con la curva alt_bn128según la EIP-196.
Atención
El módulo blockchain no maneja ni ensambla los detalles de la transacción para cada red en particular; esto debe dejarse a la aplicación. El trabajo del HSM es proteger la clave privada en un entorno seguro, generar y devolver una firma de acuerdo con los parámetros pasados por la aplicación que llama.

Redes compatibles

A continuación figura la lista de redes cuyo cifrado es compatible con HSM:

Observación
Los algoritmos enumerados son los actualmente implementados en el HSM que permiten firmar transacciones en la red y no cubren necesariamente todas las opciones definidas en la especificación de red. Dinamo Networks Si tiene alguna pregunta, no dude en ponerse en contacto y preguntar.
Entonces Nombre Símbolo Alg. Firma en HSM Curva Obs
Bitcoin BTC ECDSA secp256k1
Ethereum ETH ECDSA secp256k1
Tether USDT ECDSA secp256k1 token en varias redes (por ejemplo, Ethereum, Algorand)
Binance Coin BNB ECDSA secp256k1
imagen Moneda USD USDC ECDSA secp256k1 ficha
Solana SOL EdDSA edwards25519
XRP XRP ECDSA, EdDSA secp256k1, edwards25519
Terra Classic LUNC ECDSA secp256k1
Cardano ADA EdDSA edwards25519
Avalancha AVAX ECDSA secp256k1
imagen Dogecoin DOGE ECDSA secp256k1
imagen Binance USD BUSD ECDSA secp256k1 ficha
Polkadot DOT ECDSA, EdDSA secp256k1, edwards25519
Shiba Inu SHIB ECDSA secp256k1 ficha
Bitcoin envuelto WBTC ECDSA, EdDSA secp256k1, edwards25519 ficha
Polígono MATIC ECDSA secp256k1
Cronos CRO ECDSA secp256k1
Dai DAI ECDSA secp256k1 ficha
Protocolo NEAR CERCA DE ECDSA secp256k1
Litecoin LTC ECDSA secp256k1
TRON TRX ECDSA secp256k1
imagen ApeCoin EPA ECDSA secp256k1 ficha
Cosmos ATOM ECDSA secp256k1
Bitcoin Efectivo BCH ECDSA secp256k1
Algoritmo ALGO EdDSA edwards25519
Token digital brasileño BRZ ECDSA secp256k1 ficha
Celo Real Brasileño CREAL ECDSA secp256k1 ficha
Celo Dólar CUSD ECDSA secp256k1 ficha
Axie Infinito AXS ECDSA secp256k1 ficha/moneda
Fantom FTM ECDSA secp256k1
Uniswap UNI ECDSA secp256k1 ficha
Estelar XLM EdDSA edwards25519
Tezos XTZ ECDSA, EdDSA secp256k1, edwards25519
CELO CELO ECDSA secp256k1 ficha/moneda
imagen Toncoin TON EdDSA edwards25519
Enlace en cadena ENLACE ECDSA secp256k1 ficha

La aplicación del HSM cumple las normas definidas en la documentación que se indica a continuación:

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

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 hSesión,
BYTE bTipo,
DWORD dwAttributes,
const char * szId,
const BYTE * pcbData,
DWORD dwDataLen,
DWORD dwReservado )

#include <dinamo.h>

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

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]bTipoTipo 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. Consulte las notas para obtener más detalles.
DN_BCHAIN_BIP32_ED25519_XPRV BIP32 Ed25519 XPrv. dwDataLen debe ser un BYTE que contenga la versión de la clave. Consulte las notas para obtener más detalles.
[en]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.
[en]szIdNombre de la clave en el HSM. Debe tener un tamaño máximo de MAX_OBJ_ID_FQN_LEN.
[en]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.
[en]dwDataLenTamaño de los datos introducidos pcbData.
[en]dwReservadoReservado 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 hSesión,
BYTE bVersión,
DWORD dwIndex,
DWORD dwAttributes,
const char * cszPar,
const char * cszDst,
DN_BCHAIN_KEY_INFO * pKeyInfo,
DWORD dwReservado )

#include <dinamo.h>

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

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]bVersiónVersió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.
[en]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 ...).
[en]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.
[en]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().
[en]cszDstNombre de la clave que se derivará en el HSM. Debe tener un tamaño máximo de MAX_OBJ_ID_FQN_LEN.
[fuera]pKeyInfoPuntero a la estructura DN_BCHAIN_KEY_INFO que contendrá la información de la clave generada.
[en]dwReservadoReservado 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 hSesión,
BYTE bTipo,
BYTE bVer,
const char * cszHrp,
const char * cszPk,
BYTE * pbDirección,
DWORD * pdwAddressLen,
DWORD dwReservado )

#include <dinamo.h>

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

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]bTipoTipo 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.
[en]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.
[en]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.
[en]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]pbDirecciónBuffer 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.
[en]dwReservadoReservado 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 hSesión,
BYTE bTipo,
BYTE bHashMode,
BYTE * pbHash,
DWORD dwHashLen,
const char * cszPk,
BYTE * pbSig,
DWORD * pdwSigLen,
DWORD dwReservado )

#include <dinamo.h>

Firma un hash utilizando el módulo blockchain.

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]bTipoTipo 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.
[en]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.
[en]pbHashHash calculado según bHashMode.
[en]dwHashLenTamaño del hash introducido en pbHash.
[en]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.
[en]dwReservadoReservado 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 hSesión,
BYTE bSigType,
BYTE bHashMode,
const BYTE * pbHash,
DWORD dwHashLen,
const BYTE * pbSig,
DWORD dwSigLen,
BYTE bInPbkType,
const BYTE * pbInPbk,
BYTE bInPbkLen,
DWORD dwReservado )

#include <dinamo.h>

Verifica una firma utilizando el módulo blockchain.

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]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.
[en]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.
[en]pbHashHash calculado según bHashMode.
[en]dwHashLenTamaño del hash introducido en pbHash.
[en]pbSigFirma de conformidad con bSigType.
[en]dwSigLenTamaño de firma introducido en pbSig.
[en]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.
[en]pbInPbkFirma de conformidad con bInPbkType.
[en]bInPbkLenTamaño de firma introducido en pbInPbk.
[en]dwReservadoReservado 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 hSesión,
BYTE bTipo,
const char * cszCtxStr,
BYTE * pbData,
DWORD dwDataLen,
const char * cszPk,
BYTE * pbSig,
DWORD * pdwSigLen,
DWORD dwReservado )

#include <dinamo.h>

Genera una firma EdDsa utilizando el módulo blockchain.

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]bTipoTipo 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.
[en]cszCtxStrCadena de contexto definida en RFC-8032 . Se puede pasar DN_BCHAIN_EDDSA_CSTR_UNUSED.
[en]pbDataDatos a firmar.
[en]dwDataLenTamaño de los datos a firmar.
[en]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.
[en]dwReservadoReservado 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 hSesión,
BYTE bTipo,
const char * cszCtxStr,
BYTE * pbData,
DWORD dwDataLen,
BYTE bPbkType,
BYTE * pbPbk,
DWORD dwPbkLen,
BYTE * pbSig,
DWORD dwSigLen,
DWORD dwReservado )

#include <dinamo.h>

Verifica una firma EdDsa utilizando el módulo blockchain.

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]bTipoTipo 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.
[en]cszCtxStrCadena de contexto definida en RFC-8032 de longitud máxima DN_BCHAIN_EDDSA_MAX_CSTRL. Se puede pasar DN_BCHAIN_EDDSA_CSTR_UNUSED.
[en]pbDataDatos por verificar.
[en]dwDataLenTamaño de los datos a comprobar.
[en]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.
[en]pbPbkClave pública utilizada para la verificación.
[en]dwPbkLenTamaño de la clave pública.
[en]pbSigFirma a verificar.
[en]dwSigLenTamaño de la firma.
[en]dwReservadoReservado 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 hSesión,
BYTE bFormato,
DWORD dwAttributes,
const char * cszId,
const BYTE * pcbData,
DWORD dwDataLen,
DWORD dwReservado )

#include <dinamo.h>

Importa una clave privada utilizando el módulo blockchain.

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]bFormatoFormato 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.
[en]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.
[en]cszIdNombre de la clave privada.
[en]pcbDataClave privada en el formato especificado en bFormato. El tamaño de este búfer debe introducirse en dwDataLen.
[en]dwDataLenTamaño del búfer pcbData.
[en]dwReservadoReservado 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 hSesión,
BYTE bFormato,
BYTE bVersión,
BYTE bComprimido,
const char * cszId,
BYTE ** ppbData,
DWORD * pdwDataLen,
DWORD dwReservado )

#include <dinamo.h>

Exporta una clave privada utilizando el módulo blockchain.

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]bFormatoFormato 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.
[en]bVersiónVersió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.
[en]bComprimido0 para exportar la clave en formato no comprimido y 1 para formato comprimido.
[en]cszIdNombre de la clave privada.
[fuera]ppbDatosClave privada. El tamaño de este búfer se introducirá en pdwDataLen. Este búfer debe liberarse con la API DFree().
[fuera]pdwDataLenTamaño del búfer ppcbData.
[en]dwReservadoReservado 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 hSesión,
BYTE bTipo,
const char * cszId,
BYTE * pbData,
DWORD * pdwDataLen,
DWORD dwReservado )

#include <dinamo.h>

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

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]bTipoFormato 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.
[en]cszIdNombre de la clave privada.
[fuera]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.
[en]dwReservadoReservado 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 hSesión,
BYTE bSigType,
BYTE bHashMode,
const BYTE * pbHash,
DWORD dwHashLen,
const BYTE * pbSig,
DWORD dwSigLen,
DN_BCHAIN_PBK * pPbk,
DWORD dwReservado )

#include <dinamo.h>

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

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]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.
[en]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.
[en]pbHashHash calculado según bHashMode.
[en]dwHashLenTamaño del hash introducido en pbHash.
[en]pbSigFirma de conformidad con bSigType.
[en]dwSigLenTamaño de firma introducido en pbSig.
[fuera]pPbkClave pública que debe recuperarse. Introduzca una estructura de tipo DN_BCHAIN_PBK.
[en]dwReservadoReservado 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 hSesión,
DWORD dwReservado,
const char * cszId,
vacío * pvData,
DWORD * pdwDataLen )

#include <dinamo.h>

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

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]dwReservadoReservado para uso futuro (debe ser 0).
[en]cszIdNombre de la clave privada.
[fuera]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 hSesión,
BYTE bMode,
BYTE * pbData,
DWORD dwDataLen,
BYTE * pbHash,
DWORD * pdwHashLen,
DWORD dwReservado )

#include <dinamo.h>

Calcula un hash utilizando el módulo blockchain.

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]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.
[en]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.
[en]dwDataLenTamaño del búfer pbData.
[fuera]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.
[en]dwReservadoReservado 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 hSesión,
const char * cszPk,
const char * cszTo,
DWORD dwAttr,
DWORD dwReservado )

#include <dinamo.h>

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

Parámetros
[en]hSesiónContexto adquirido a través de la función DOpenSession().
[en]cszPkNombre de la clave privada en formato Edwards que existe en el HSM.
[en]cszToNombre de la clave privada en formato Montgomery que se creará en el HSM.
[en]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.
[en]dwReservadoReservado 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.