To run the Schnorr Signature example with JVM: nix run github:msgilligan/secp256k1-jdk-flake#secp256k1-jdk To run it the natively-compiled version: nix run github:msgilligan/secp256k1-jdk-flake#secp256k1-jdk-native If you want to play with source, do: nix shell nixpkgs#jbang enter the below code into a file named SecpEcdsa.java and then `jbang SecpEcdsa.java`. (Schnorr sig is little trickier to run in JBang because you need libsecp256k installed, but the flakes above handle it.) —— ///usr/bin/env jbang "$0" "$@" ; exit $? //JAVA 17+ //REPOS mavencentral, secpjdk=https://gitlab.com/api/v4/projects/55956336/packages/maven //DEPS org.bitcoinj.secp:secp-bouncy:0.2 import org.bitcoinj.secp.*; byte[] message = sha256("Hello World!"); void main() { IO.println("secp256k1-jdk ECDSA Sample"); try (Secp256k1 secp = Secp256k1.getById("bouncy-castle")) { var pair = secp.ecKeyPairCreate(); var sig = secp.ecdsaSign(message, pair).get(); var isValid = secp.ecdsaVerify(sig, message, pair.publicKey()).get(); IO.println("Valid ECDSA signature = " + isValid); } } byte[] sha256(String message) { try { return MessageDigest.getInstance("SHA-256").digest(message.getBytes()); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); // Can't happen. } } ——

Replies (1)

sedited's avatar
sedited 1 month ago
That's some nice tooling, had to slightly tweak your example to include the correct imports, but ran all of them. Nix is magic in the sense that this would have been really annoying to setup by myself and now it just works .