API Java
HSM Dinamo
Carregando...
Procurando...
Nenhuma entrada encontrado
BchainCreateCkdEd25519.java

Exemplo de derivação de chave filha Ed25519 XPrv (CKD SLIP-0010), assinatura EdDSA e verificação com o módulo blockchain.

Veja Nota sobre os exemplos.
package doxy.examples;
import com.dinamonetworks.BchainKeyInfo;
import com.dinamonetworks.Dinamo;
import br.com.trueaccess.TacException;
import br.com.trueaccess.TacNDJavaLib;
public class BchainCreateCkdEd25519 {
public static void main(String[] args) throws TacException {
String ip = "127.0.0.1";
String user = "master";
String password = "12345678";
Dinamo api = new Dinamo();
api.openSession(ip, user, password);
String xprvId = "xprv_ckd_ed25519_parent";
String childId = "xprv_ckd_ed25519_child";
// Cria a chave pai Ed25519 XPrv BIP32 (mainnet)
api.bchainCreateXPrv(TacNDJavaLib.DN_BCHAIN_BIP32_ED25519_XPRV,
TacNDJavaLib.DN_BCHAIN_VER_BIP32_MAINNET,
0,
xprvId);
System.out.println("Chave pai Ed25519 XPrv criada: " + xprvId);
// Deriva uma chave filha hardened usando SLIP-0010 (índice 0')
BchainKeyInfo childInfo = api.bchainCreateCkdEd25519(
TacNDJavaLib.DN_BCHAIN_BIP32_Ed_KDT_SLIP10,
TacNDJavaLib.DN_BCHAIN_VER_BIP32_MAINNET,
TacNDJavaLib.DN_BCHAIN_SECURE_BIP32_INDEX_BASE,
0,
xprvId,
childId);
System.out.printf("Chave filha Ed25519 derivada: %s (profundidade BIP32: %d)%n",
childId, childInfo.getBip32Depth());
// Dados a serem assinados
byte[] data = new byte[] {
(byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
(byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08,
(byte) 0x09, (byte) 0x0A, (byte) 0x0B, (byte) 0x0C,
(byte) 0x0D, (byte) 0x0E, (byte) 0x0F, (byte) 0x10
};
// Assina os dados com EdDsa Pure usando a chave filha
byte[] signature = api.bchainEdDsaSign(TacNDJavaLib.DN_BCHAIN_EDDSA_SIG_PURE,
TacNDJavaLib.DN_BCHAIN_EDDSA_CSTR_UNUSED,
data,
childId);
System.out.println("Assinatura EdDsa gerada (" + signature.length + " bytes).");
// Recupera a chave pública Ed25519 da chave filha
byte[] pubKey = api.bchainGetPubKey(TacNDJavaLib.DN_BCHAIN_PBK_ED25519, childId);
System.out.println("Chave pública Ed25519 recuperada (" + pubKey.length + " bytes).");
// Verifica a assinatura com a chave pública
api.bchainEdDsaVerify(TacNDJavaLib.DN_BCHAIN_EDDSA_SIG_PURE,
TacNDJavaLib.DN_BCHAIN_EDDSA_CSTR_UNUSED,
data,
TacNDJavaLib.DN_BCHAIN_PBK_ED25519,
pubKey,
signature);
System.out.println("Assinatura EdDsa verificada com sucesso.");
// Remove as chaves criadas
api.deleteKeyIfExists(childId);
api.deleteKeyIfExists(xprvId);
System.out.println("Chaves removidas.");
api.closeSession();
}
}