Operações de suporte à segurança de estruturas baseadas em Blockchain.
As APIs do módulo Blockchain são destinadas às operações específicas para processamento de criptografia de redes blockchain e especificações BIP, EIP e SLIP.
A assinatura ECDSA por exemplo é especializada para evitar signature malleability, com a a restrição de LOW-S
.
Exemplos de operações disponíveis no módulo Blockchain:
- Geração de chaves Extended Private Key (XPrv) no padrão BIP32.
- Derivação de chaves filha (Child Key Derivation) nos padrões BIP32 e SLIP10.
- Recuperação de endereço.
- Assinaturas digitais ECDSA, nos padrões SECG strict DER (BIP62/66 e BIP 146) e Schnorr no padrão BIP340;
- Assinaturas digitais EdDSA curva 25519.
- Verificação de assinatura.
- Importação e exportação de chaves via diversos formatos (WIF, Hex, Sec1, Xpriv etc).
- Recuperação da chave pública com diversos formatos (BIP32 Xpub, Sec1 com e sem compressão, Schnorr BIP340 etc).
- Split e Recover de segredos com esquema M de N usando SSS (Shamir's Secret Sharing).
- Operações com a curva
alt_bn128
, de acordo com a EIP-196.
- Atenção
- O módulo blockchain não trata ou monta os detalhes da transação de cada rede em particular; isto deve estar a cargo da aplicação. A função do HSM é proteger a chave privada em ambiente seguro, gerar e retornar uma assinatura conforme os parâmetros passados pela aplicação chamadora.
Redes compatíveis
A seguir a lista das redes cuja criptografia é compatível com o HSM:
- Observação
- Os algoritmos listados são os atualmente implementados no HSM que permitem a assinatura de transações na rede e não necessariamente cobrem todas as opções definidas na especificação da rede. Em caso de dúvida sinta-se à vontade para procurar o suporte da Dinamo Networks e esclarecer suas dúvidas.
A implementação do HSM está de acordo com os padrões definidos na documentação listada abaixo:
- BIP32 - Hierarchical Deterministic Wallets
- BIP62 - Dealing with malleability
- BIP66 - Strict DER signatures
- BIP340 - Schnorr Signatures for secp256k1
- SLIP10 - Universal private key derivation from master private key
- EIP-2 - Homestead Hard-fork Changes
- EIP-196 - Precompiled contracts for addition and scalar multiplication on the elliptic curve alt_bn128
- EIP-197 - Precompiled contracts for optimal ate pairing check on the elliptic curve alt_bn128
|
byte[] | bchainSignHash (byte bType, byte bHashMode, byte[] pbHash, String strPk) throws TacException |
| Assina um hash usando o módulo blockchain.
|
|
byte[] | bchainGetPubKey (byte bType, String jszId) throws TacException |
| Recupera uma chave pública a partir de uma chave privada usando o módulo blockchain.
|
|
◆ bchainSignHash()
byte[] bchainSignHash |
( |
byte | bType, |
|
|
byte | bHashMode, |
|
|
byte[] | pbHash, |
|
|
String | strPk ) throws TacException |
Assina um hash usando o módulo blockchain.
- Parâmetros
-
bType | Tipo da assinatura a ser gerada. Pode ser um dos valores abaixo.
Valor | Significado |
TacNDJavaLib.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. |
TacNDJavaLib.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. |
TacNDJavaLib.DN_BCHAIN_SIG_BIP340 | Assinatura BIP340 - Schnorr 64 bytes. |
|
bHashMode | Tipo do hash.
|
pbHash | Hash a ser assinado. |
strPk | Identificador da chave privada. |
- Retorna
- Assinatura no formato especificado em
bType
.
- Exceções
-
◆ bchainGetPubKey()
byte[] bchainGetPubKey |
( |
byte | bType, |
|
|
String | jszId ) throws TacException |
Recupera uma chave pública a partir de uma chave privada usando o módulo blockchain.
- Parâmetros
-
bType | Formato da chave pública a ser exportada. Pode ser um dos valores abaixo.
|
jszId | Identificador da chave privada. |
- Retorna
- Chave pública no formato especificado em
bType
.
- Exceções
-