Created
August 5, 2021 14:02
-
-
Save nemo83/84b356b8510e4d71607e3859e7e18ce0 to your computer and use it in GitHub Desktop.
Sign a transaction with Cardano wallet keys.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// implementation group: 'net.java.dev.jna', name: 'jna', version: '5.8.0' | |
// implementation group: 'net.java.dev.jna', name: 'jna-platform', version: '5.8.0' | |
// implementation group: 'org.bouncycastle', name: 'bcprov-jdk15to18', version: '1.68' | |
@Test | |
public void testThree() throws CborException { | |
var skeyCBORHex = "582004927daa27b227b379e0a7c8bc431200dde599e76793931082c37b3ecb8a6031"; | |
var vkeyCBORHex = "58203b90cdc93baa2a51689e6ae747dcc9ec6e3bf8f11963bcba50036a2443c09b0b"; | |
var skeyBytesActual = (ByteString) CborDecoder.decode(Hex.decode(skeyCBORHex)).get(0); | |
var vkeyBytesActual = (ByteString) CborDecoder.decode(Hex.decode(vkeyCBORHex)).get(0); | |
// This can be used as intermediary with cbor.me | |
// var skeyHex = ""; | |
// var vkeyHex = ""; | |
// var skeyBytes = Hex.decode(skeyHex); | |
// var vkeyBytes = Hex.decode(vkeyHex); | |
// assertArrayEquals(skeyBytes, skeyBytesActual.getBytes()); | |
// assertArrayEquals(vkeyBytes, vkeyBytesActual.getBytes()); | |
var privateKey = new Ed25519PrivateKeyParameters(skeyBytesActual.getBytes(), 0); | |
var actualVekey = privateKey.generatePublicKey(); | |
var publicKey = new Ed25519PublicKeyParameters(vkeyBytesActual.getBytes(), 0); | |
assertEquals( | |
new String(publicKey.getEncoded()), | |
new String(actualVekey.getEncoded()) | |
); | |
var msg = "Cardano is the best blockchain. Sign. Gimbalabs".getBytes(StandardCharsets.UTF_8); | |
// Generate new signature | |
var signer = new Ed25519Signer(); | |
signer.init(true, privateKey); | |
signer.update(msg, 0, msg.length); | |
byte[] signature = signer.generateSignature(); | |
var verifies = new Ed25519Signer(); | |
verifies.init(false, publicKey); | |
verifies.update(msg, 0, msg.length); | |
var outcome = verifies.verifySignature(signature); | |
System.out.println(outcome); | |
assertTrue(outcome); | |
System.out.printf("Message: %s\n", new String(msg)); | |
System.out.printf("Signature: %s\n", new String(signature)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment