Exemplo de criação de chave XPrv BIP32, assinatura de hash e verificação de assinatura ECDSA com o módulo blockchain.
package doxy.examples;
import com.dinamonetworks.Dinamo;
import br.com.trueaccess.TacException;
import br.com.trueaccess.TacNDJavaLib;
public class BchainCreateXPrvSignHash {
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_sign_example";
api.bchainCreateXPrv(TacNDJavaLib.DN_BCHAIN_BIP32_XPRV,
TacNDJavaLib.DN_BCHAIN_VER_BIP32_MAINNET,
0,
xprvId);
System.out.println("Chave XPrv criada: " + xprvId);
byte[] hash = new byte[] {
(byte) 0xAB, (byte) 0xCD, (byte) 0xEF, (byte) 0x01,
(byte) 0x23, (byte) 0x45, (byte) 0x67, (byte) 0x89,
(byte) 0xAB, (byte) 0xCD, (byte) 0xEF, (byte) 0x01,
(byte) 0x23, (byte) 0x45, (byte) 0x67, (byte) 0x89,
(byte) 0xAB, (byte) 0xCD, (byte) 0xEF, (byte) 0x01,
(byte) 0x23, (byte) 0x45, (byte) 0x67, (byte) 0x89,
(byte) 0xAB, (byte) 0xCD, (byte) 0xEF, (byte) 0x01,
(byte) 0x23, (byte) 0x45, (byte) 0x67, (byte) 0x89
};
byte[] signature = api.bchainSignHash(TacNDJavaLib.DN_BCHAIN_SIG_DER_ECDSA,
TacNDJavaLib.DN_BCHAIN_HASH_SHA256,
hash,
xprvId);
System.out.println("Assinatura gerada (" + signature.length + " bytes).");
byte[] pubKey = api.bchainGetPubKey(TacNDJavaLib.DN_BCHAIN_PBK_SEC1_COMP, xprvId);
System.out.println("Chave pública recuperada (" + pubKey.length + " bytes).");
api.bchainVerify(TacNDJavaLib.DN_BCHAIN_SIG_DER_ECDSA,
TacNDJavaLib.DN_BCHAIN_HASH_SHA256,
hash,
signature,
TacNDJavaLib.DN_BCHAIN_PBK_SEC1_COMP,
pubKey);
System.out.println("Assinatura verificada com sucesso.");
api.deleteKeyIfExists(xprvId);
System.out.println("Chave XPrv removida: " + xprvId);
api.closeSession();
}
}