Implements basic signing and verification functions for the BIP-340 Schnorr Signature Scheme.
It passes the tests attached to the BIP (dart test
to run that), but no guarantees are made of anything and this is not safe cryptography, do not use to store Bitcoins.
Provides these functions:
String sign(String privateKey, String message, String aux)
Generates a schnorr signature using the BIP-340 scheme.
privateKey
must be 32-bytes lowercase hex-encoded, i.e., 64 characters.message
must also be lowercase hex-encoded (a hash of the actual message).aux
must be 32-bytes random bytes, generated at signature time.- Returns the signature as a string of 64 bytes hex-encoded, i.e., 128 characters.
bool verify(String publicKey, String message, String signature)
Verifies a schnorr signature using the BIP-340 scheme.
publicKey
must be 32-bytes lowercase hex-encoded, i.e., 64 characters (if you have a pubkey with 33 bytes just remove the first one).message
must also be lowercase hex-encoded (a hash of the actual message).signature
must be 64-bytes lowercase hex-encoded, i.e., 128 characters.- Returns true if the signature is valid, false otherwise.
String getPublicKey(String privateKey)
Produces the public key from a private key
privateKey
must be a 32-bytes hex-encoded string, i.e. 64 characters.- Returns a public key as also 32-bytes hex-encoded.
Made for integration with Nostr.