API C/C++
HSM Dinamo
Carregando...
Procurando...
Nenhuma entrada encontrado
Blockchain

Descrição detalhada

Operações de suporte à segurança de estruturas baseadas em Blockchain.

Consulte a documentação técnica do HSM.

Funções

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)
 

Funções

◆ DBchainCreateXPrv()

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

#include <dinamo.h>

Cria uma chave Extended Private Key (XPrv) para a blockchain no padrão BIP32.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bTypeTipo de geração da chave.
Valor Significado
DN_BCHAIN_BTC_MINIKEY Bitcoin minikey. pcbData deve ser NULL e dwDataLen deve ser 0.
DN_BCHAIN_BIP32_SEED_XPRV BIP32 seed XPrv. pcbData deve conter a estrutura DN_BCHAIN_BIP32_SEED_XPRV_DATA preenchida.
DN_BCHAIN_BIP39_SEED_XPRV BIP39 seed XPrv. pcbData deve conter a estrutura DN_BCHAIN_BIP39_SEED_XPRV_DATA preenchida.
DN_BCHAIN_BIP32_XPRV BIP32 XPrv. dwDataLen deve ser um BYTE contendo a versão da chave. Ver anotações para mais detalhes.
DN_BCHAIN_BIP32_ED25519_XPRV BIP32 Ed25519 XPrv. dwDataLen deve ser um BYTE contendo a versão da chave. Ver anotações para mais detalhes.
[in]dwAttributesParâmetros adicionais da chave. Veja as opções na função DGenerateKey(). Esta API inclui automaticamente a flag BCHAIN_KEY, que é necessária para as operações de blockchain.
[in]szIdNome da chave no HSM. Deve ter tamanho máximo de MAX_OBJ_ID_FQN_LEN.
[in]pcbDataBuffer contendo os dados necessários para a geração da chave. Os dados de entrada devem ser passados de acordo com a opção bType e o tamanho dos dados passados aqui devem ser especificados em dwDataLen.
[in]dwDataLenTamanho dos dados passados em pcbData.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Anotações
Tabela de opções de versão para a chave 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.
Exemplos
ckd_bchain.c, get_key_info_bchain.c, get_pub_key_bchain.c, import_export_bchain.c e 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>

Faz uma operação de Child Key Derivation (CKD). Deriva uma chave Extended Private Key (XPrv) para a blockchain no padrão BIP32.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bVersionVersão da chave.
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 da chave que será derivada. Chaves non hardened usam índice de 0 a 231-1 e chaves hardened (irrestritamente seguras) usam índices de 231 a 232-1, como especificado no padrão BIP32. É altamente recomendado gerar chaves hardened. Usar DN_BCHAIN_SECURE_BIP32_INDEX_BASE como base para gerar índices hardened (Ex. DN_BCHAIN_SECURE_BIP32_INDEX_BASE + 1 ...).
[in]dwAttributesParâmetros adicionais da chave. Veja as opções na função DGenerateKey(). Esta API inclui automaticamente a flag BCHAIN_KEY, que é necessária para as operações de blockchain.
[in]cszParNome da chave pai no HSM. Deve ter tamanho máximo de MAX_OBJ_ID_FQN_LEN. Deve ser uma chave XPrv (DN_BCHAIN_BIP32_XPRV etc.). Ver DBchainCreateXPrv().
[in]cszDstNome da chave que será derivada no HSM. Deve ter tamanho máximo de MAX_OBJ_ID_FQN_LEN.
[out]pKeyInfoPonteiro para a estrutura DN_BCHAIN_KEY_INFO que conterá as informações da chave gerada.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
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 o endereço de uma chave usando o módulo blockchain.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bTypeTipo do endereço a ser gerado. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_AT_BTC_P2PKH Endereço P2PKH.

bVer deve 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 ou DN_BCHAIN_VER_HTR_TESTNET.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_BTC_P2SH Endereço P2SH BIP13.

bVer deve 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 ou DN_BCHAIN_VER_HTR_TESTNET.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
cszPk deve ser o script-hash.
DN_BCHAIN_AT_BTC_B32_PKH Endereço BIP32 P2PKH BIP173.

bVer deve ser DN_BCHAIN_VER_BTC_B32_WITVER.
cszHrp pode ser DN_BCHAIN_HRP_BTC_MAIN_NET ou DN_BCHAIN_HRP_BTC_TEST_NET.
DN_BCHAIN_AT_BTC_B32_SH Endereço BIP32 P2SH.

bVer deve 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 ou DN_BCHAIN_VER_HTR_TESTNET.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
cszPk deve ser o script-hash.
DN_BCHAIN_AT_ETH_EOA Endereço ETH EOA.

bVer deve ser DN_BCHAIN_VER_UNUSED.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_ETH_EOA_MC_CKS Endereço ETH EOA MC CKS. EIP55.

bVer deve ser DN_BCHAIN_VER_UNUSED.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_ETH_EOA_ICAP Endereço ETH EOA ICAP.

bVer deve ser DN_BCHAIN_VER_UNUSED.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_ALGORAND Endereço Algorand.

bVer deve ser DN_BCHAIN_VER_UNUSED.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_TRON_HEX Endereço TRON hexadecimal.

bVer deve ser DN_BCHAIN_VER_UNUSED.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_TRON_B58 Endereço TRON Base 58.

bVer deve ser DN_BCHAIN_VER_UNUSED.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_XRP Endereço XRP Ledger/Ripple.

bVer deve ser DN_BCHAIN_VER_XRP_CLASSIC.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
DN_BCHAIN_AT_SOL Endereço Solana.

bVer deve ser DN_BCHAIN_VER_UNUSED.
cszHrp deve ser DN_BCHAIN_HRP_UNUSED.
[in]bVerVersão do endereço.
Valor Significado
DN_BCHAIN_VER_UNUSED Parâmetro não utilizado.
DN_BCHAIN_VER_BTC_A1_MAIN_NET Bitcoin A1 mainnet.
DN_BCHAIN_VER_XRP_CLASSIC XRP Ledger/Ripple Classic.
DN_BCHAIN_VER_BTC_AMN_TEST_NET Bitcoin P2PKH testnet.
DN_BCHAIN_VER_BTC_A3_MAIN_NET Bitcoin A3 mainnet.
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 Hathor P2SH mainnet.
DN_BCHAIN_VER_HTR_P2SH_TESTNET Hathor P2SH testnet.
[in]cszHrpHRP (Human Readable Part) da chave. Os valores da tabela são aceitos. Deve ter tamanho máximo de DN_BCHAIN_MAX_HRP.
Valor Significado
DN_BCHAIN_HRP_UNUSED Parâmetro não utilizado.
DN_BCHAIN_HRP_BTC_MAIN_NET Bitcoin mainnet.
DN_BCHAIN_HRP_BTC_TEST_NET Bitcoin testnet.
[in]cszPkChave privada que será gerado o endereço ou o script-hash. Caso use script-hash passar um buffer de tamanho MAX_OBJ_ID_FQN_LEN com script-hash com padding zero.
[in,out]pbAddressBuffer que receberá o endereço. Pode ser NULL para obter o tamanho necessário. É recomendado utilizar o tamanho máximo de DN_BCHAIN_MAX_ADDR_LEN.
[in,out]pdwAddressLenTamanho do buffer pbAddress. Caso o buffer pbAddress seja NULL, este parâmetro receberá o tamanho necessário.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
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>

Assina um hash usando o módulo blockchain.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bTypeTipo da assinatura a ser gerada. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_SIG_DER_ECDSA Assinatura DER, no formato v || DER. SECG!SEC1 strict DER com low S como descrito em BIP62/66, BIP146, EIP2. Tendo 'v' o tamanho de 1 byte. 'v' é o bit de paridade de 'r' podendo ter os valores 0 ou 1.
DN_BCHAIN_SIG_RAW_ECDSA Assinatura RAW, no formato v || r || s. Tendo 'v' o tamanho de 1 byte e 'r' e 's' cada uma o tamanho de 32 bytes. 'v' é o bit de paridade de 'r' podendo ter os valores 0 ou 1.
DN_BCHAIN_SIG_BIP340 Assinatura BIP340 - Schnorr 64 bytes.
DN_BCHAIN_DER_RFC_6979_ECDSA Assinatura ECDSA determinística padrão RFC-6979. Tipo DER no formato v || DER, tendo 'v' o tamanho de 1 byte. 'v' é o bit de paridade de 'r' podendo ter os valores 0 ou 1
DN_BCHAIN_RAW_RFC_6979_ECDSA Assinatura ECDSA determinística padrão RFC-6979. Tipo RAW no formato v || r || s, tendo 'v' o tamanho de 1 byte e 'r' e 's' cada uma o tamanho de 32 bytes. 'v' é o bit de paridade de 'r' podendo ter os valores 0 ou 1.
[in]bHashModeTipo do 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 de acordo com o informado em bHashMode.
[in]dwHashLenTamanho do hash informado em pbHash.
[in]cszPkNome da chave privada.
[in,out]pbSigBuffer que receberá a assinatura.Pode ser NULL para obter o tamanho necessário.É recomendado utilizar o tamanho máximo de DN_BCHAIN_MAX_SIG_LEN.
[in,out]pdwSigLenTamanho do buffer pbSig.Caso o buffer pbSig seja NULL, este parâmetro receberá o tamanho necessário.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
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 uma assinatura usando o módulo blockchain.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bSigTypeTipo da assinatura a ser gerada. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_SIG_DER_ECDSA Assinatura DER, no formato v || DER. SECG!SEC1 strict DER com low S como descrito em BIP62/66, BIP146, EIP2. Tendo 'v' o tamanho de 1 byte. 'v' é o bit de paridade de 'r' podendo ter os valores 0 ou 1.
DN_BCHAIN_SIG_RAW_ECDSA Assinatura RAW, no formato v || r || s. Tendo 'v' o tamanho de 1 byte e 'r' e 's' cada uma o tamanho de 32 bytes. 'v' é o bit de paridade de 'r' podendo ter os valores 0 ou 1.
DN_BCHAIN_SIG_BIP340 Assinatura BIP340 - Schnorr 64 bytes.
[in]bHashModeTipo do 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 de acordo com o informado em bHashMode.
[in]dwHashLenTamanho do hash informado em pbHash.
[in]pbSigAssinatura de acordo com o informado em bSigType.
[in]dwSigLenTamanho da assinatura informada em pbSig.
[in]bInPbkTypeFormato da chave pública. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_PBK_SEC1_UNCOMP ECDSA SEC1 não comprimida.
DN_BCHAIN_PBK_SEC1_COMP ECDSA SEC1 comprimida.
DN_BCHAIN_PBK_BIP340 Schnorr, BIP-340.
DN_BCHAIN_PBK_ED25519 Ed25519.
[in]pbInPbkAssinatura de acordo com o informado em bInPbkType.
[in]bInPbkLenTamanho da assinatura informada em pbInPbk.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
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>

Gera uma assinatura EdDsa usando o módulo blockchain.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bTypeTipo da assinatura a ser gerada. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_EDDSA_SIG_PURE Assinatura EdDsa Pure.
DN_BCHAIN_EDDSA_SIG_ALGORAND Assinatura EdDsa Algorand.
DN_BCHAIN_EDDSA_SIG_XRP Assinatura EdDsa XRP.
DN_BCHAIN_EDDSA_SIG_SOL Assinatura EdDsa Solana.
[in]cszCtxStrString de contexto (context-string) como definido na RFC-8032 . Pode ser passado DN_BCHAIN_EDDSA_CSTR_UNUSED.
[in]pbDataDados a serem assinados.
[in]dwDataLenTamanho dos dados a serem assinados.
[in]cszPkNome da chave privada.
[in,out]pbSigBuffer que receberá a assinatura. Pode ser NULL para obter o tamanho necessário. É recomendado utilizar o tamanho máximo de DN_BCHAIN_MAX_SIG_LEN.
[in,out]pdwSigLenTamanho do buffer pbSig. Caso o buffer pbSig seja NULL, este parâmetro receberá o tamanho necessário.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros 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 uma assinatura EdDsa usando o módulo blockchain.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bTypeTipo da assinatura a ser verificada. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_EDDSA_SIG_PURE Assinatura EdDsa Pure.
DN_BCHAIN_EDDSA_SIG_ALGORAND Assinatura EdDsa Algorand.
DN_BCHAIN_EDDSA_SIG_XRP Assinatura EdDsa XRP.
DN_BCHAIN_EDDSA_SIG_SOL Assinatura EdDsa Solana.
[in]cszCtxStrString de contexto (context-string) como definido na RFC-8032 de tamanho máximo DN_BCHAIN_EDDSA_MAX_CSTRL. Pode ser passado DN_BCHAIN_EDDSA_CSTR_UNUSED.
[in]pbDataDados a serem verificados.
[in]dwDataLenTamanho dos dados a serem verificados.
[in]bPbkTypeFormato da chave pública. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_PBK_ED25519 Ed25519.
DN_BCHAIN_PBK_AT_ALGORAND Algorand.
DN_BCHAIN_PBK_BIP32_XPUB BIP32 XPub.
DN_BCHAIN_PBK_AT_SOL Solana.
[in]pbPbkChave pública utilizada na verificação.
[in]dwPbkLenTamanho da chave pública.
[in]pbSigAssinatura a ser verificada.
[in]dwSigLenTamanho da assinatura.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros 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 uma chave privada usando o módulo blockchain.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bFormatFormato da chave a ser importada. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_KEY_WIF Wallet Import Format (WIF).
DN_BCHAIN_KEY_MINI Bitcoin minikey.
DN_BCHAIN_KEY_HEX Escalar da chave privada em hexadecimal. Importada como uma chave do tipo ALG_ECC_SECP256K1.
DN_BCHAIN_KEY_SEC1 SEC1.
DN_BCHAIN_KEY_XPRIV XPriv.
DN_BCHAIN_KEY_ED25519_B64 Ed25519 no formato Base 64.
DN_BCHAIN_KEY_ED25519_XPRIV Ed25519 no formato XPriv.
[in]dwAttributesParâmetros adicionais da chave. Veja as opções na função DGenerateKey(). Esta API inclui automaticamente a flag BCHAIN_KEY, que é necessária para as operações de blockchain.
[in]cszIdNome da chave privada.
[in]pcbDataChave privada no formato especificado em bFormat. O tamanho deste buffer deve ser informado em dwDataLen.
[in]dwDataLenTamanho do buffer pcbData.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
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 uma chave privada usando o módulo blockchain.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bFormatFormato da chave a ser exportada. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_KEY_WIF Wallet Import Format (WIF). bVersion pode ser DN_BCHAIN_VER_WIF_MAIN_NET ou DN_BCHAIN_VER_WIF_TEST_NET.
DN_BCHAIN_KEY_MINI Bitcoin minikey. bVersion deve ser DN_BCHAIN_VER_UNUSED.
DN_BCHAIN_KEY_HEX Escalar da chave privada em hexadecimal. bVersion deve ser DN_BCHAIN_VER_UNUSED.
DN_BCHAIN_KEY_SEC1 SEC1. bVersion deve ser DN_BCHAIN_VER_UNUSED.
DN_BCHAIN_KEY_XPRIV XPriv. bVersion deve ser DN_BCHAIN_VER_UNUSED.
DN_BCHAIN_KEY_ED25519_B64 Ed25519 no formato Base 64. bVersion deve ser DN_BCHAIN_VER_UNUSED e o parâmetro bCompressed é ignorado.
DN_BCHAIN_KEY_ED25519_XPRIV Ed25519 no formato XPriv. bVersion deve ser DN_BCHAIN_VER_UNUSED e o parâmetro bCompressed é ignorado.
[in]bVersionVersão da chave.
Valor Significado
DN_BCHAIN_VER_UNUSED Parâmetro não utilizado.
DN_BCHAIN_VER_WIF_MAIN_NET WIF main net.
DN_BCHAIN_VER_WIF_TEST_NET WIF test net.
[in]bCompressed0 para exportar a chave no formato não comprimido e 1 para o formato comprimido.
[in]cszIdNome da chave privada.
[out]ppbDataChave privada. O tamanho deste buffer será informado em pdwDataLen. Este buffer deverá ser liberado com a API DFree().
[out]pdwDataLenTamanho do buffer ppcbData.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
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>

Recupera uma chave pública a partir de uma chave privada usando o módulo blockchain.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bTypeFormato da chave pública a ser exportada. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_PBK_SEC1_UNCOMP ECDSA SEC1 não comprimida.
DN_BCHAIN_PBK_SEC1_COMP ECDSA SEC1 comprimida.
DN_BCHAIN_PBK_BIP340 Schnorr, BIP-340.
DN_BCHAIN_PBK_ED25519 Ed25519.
DN_BCHAIN_PBK_AT_ALGORAND Algorand.
DN_BCHAIN_PBK_BIP32_XPUB BIP32 XPub.
DN_BCHAIN_PBK_AT_SOL Solana.
[in]cszIdNome da chave privada.
[out]pbDataChave pública. Pode ser passado NULL para receber o tamanho esperado em pdwDataLen. O tamanho máximo deste buffer é DN_BCHAIN_MAX_PBK_LEN.
[in,out]pdwDataLenTamanho do buffer pcbData. Conterá, ao final da chamada, a quantidade de dados escritas em pcbData.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
get_pub_key_bchain.c.

◆ DBchainRecoverPbkFromSignature()

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 uma chave pública (PBK) a partir de uma assinatura tipo ECDSA.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bSigTypeTipo da assinatura a ser gerada. Pode ser um dos valores abaixo.
Valor Significado
DN_BCHAIN_SIG_DER_ECDSA Assinatura DER, no formato v || DER. SECG!SEC1 strict DER com low S como descrito em BIP62/66, BIP146, EIP2. Tendo 'v' o tamanho de 1 byte. 'v' é o bit de paridade de 'r' podendo ter os valores 0 ou 1.
DN_BCHAIN_SIG_RAW_ECDSA Assinatura RAW, no formato v || r || s. Tendo 'v' o tamanho de 1 byte e 'r' e 's' cada uma o tamanho de 32 bytes. 'v' é o bit de paridade de 'r' podendo ter os valores 0 ou 1.
[in]bHashModeTipo do 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 de acordo com o informado em bHashMode.
[in]dwHashLenTamanho do hash informado em pbHash.
[in]pbSigAssinatura de acordo com o informado em bSigType.
[in]dwSigLenTamanho da assinatura informada em pbSig.
[out]pPbkChave pública a ser recuperada. Informar uma estrutura do tipo DN_BCHAIN_PBK.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
sign_verify_bchain.c.

◆ DBchainGetKeyInfo()

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

#include <dinamo.h>

Recupera as propriedades de uma chave usando o módulo blockchain.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]dwReservedReservado para uso futuro (deve ser 0).
[in]cszIdNome da chave privada.
[out]pvDataPropriedades da chave. Recebe uma estrutura DN_BCHAIN_KEY_INFO. Pode ser passado NULL para receber o tamanho esperado em pdwDataLen.
[in,out]pdwDataLenTamanho do buffer pcbData. Conterá, ao final da chamada, a quantidade de dados escritas em pcbData.
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Exemplos
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 um hash usando o módulo blockchain.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]bModeTipo do 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]pbDataDados que serão processados. O tamanho deste buffer deve ser informado em dwDataLen. Tamanho máximo de DN_BCHAIN_MAX_HDATA_LEN.
[in]dwDataLenTamanho do buffer pbData.
[out]pbHashRecebe o hash calculado. Pode ser passado NULL para receber o tamanho esperado em pdwHashLen.
[in,out]pdwHashLenTamanho do buffer pbHash. Conterá, ao final da chamada, a quantidade de dados escritas em pbHash.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Anotações
Esta API está disponível para validação de implementação. Recomendamos a geração do hash por software para melhor performance e melhor uso dos recursos do HSM.
Exemplos
sign_verify_bchain.c.

◆ DBchainEd2X()

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

#include <dinamo.h>

Converte uma chave Edwards (Ed) para o formato Montgomery (x). Atualmente converte chaves Ed25519 para X25519.

Parâmetros
[in]hSessionContexto adquirido através da função DOpenSession().
[in]cszPkNome da chave privada no formato Edwards, existente no HSM.
[in]cszToNome da chave privada no formato Montgomery, que será criada no HSM.
[in]dwAttrAtributos da chave. Veja dwAttr em DGenerateKey() para detalhes sobre os atributos de chave. Os atributos são adicionados aos atributos atuais da chave de origem cszPk.
[in]dwReservedReservado para uso futuro (deve ser 0).
Retorna
0 (ZERO) se a função for bem sucedida.
Consulte a seção Códigos de Retorno sobre outros valores.
Observação
As chaves devem ser marcadas com a flag BCHAIN_KEY para serem convertidas.