/dart-bip340

naïve implementation of BIP-340 Schnorr Signatures in Dart

Primary LanguageDartMIT LicenseMIT

bip340 Pub

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:

  1. String sign(String privateKey, String message, String aux)

Generates a schnorr signature using the BIP-340 scheme.

  • privateKey must be 32-bytes hex-encoded, i.e., 64 characters.
  • message must also be 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.
  1. bool verify(String publicKey, String message, String signature)

Verifies a schnorr signature using the BIP-340 scheme.

  • publicKey must be 32-bytes hex-encoded, i.e., 64 characters (if you have a pubkey with 33 bytes just remove the first one).
  • message must also be hex-encoded (a hash of the actual message).
  • signature must be 64-bytes hex-encoded, i.e., 128 characters.
  • Returns true if the signature is valid, false otherwise.
  1. 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.