- Hash function
H(m) = SHA256(m)
- For a private key
x, the public key isxG. - A signature on the message
mwith private keyxis(R, s)whereR=kG,s=k+H(R,X,m)x. - Verifying a signature is testing whether
sG=R+H(R,X,m)X.
- When doing the point operations, the modulo operation uses
p, but the Schnorr operations usen(https://en.bitcoin.it/wiki/Secp256k1); this applies only to the creation ofsin the signature part (which usesn).
The hash function here is single SHA256, aka SHA256(m).
Given (as big endian (hash style) 256 bit numbers):
x = bed123a21c0e50b003d302e83e755a444cbd436dfc4ea6635696c49499e47da6, a private keyk = 6dfb9c259dc3b79f03470418af01cb1e064692dacc353f0f656cad0bfec583a7, an ephemeral random value (supposed to change for every signature)m = 21fbd20b359eee7bfea88e837108be44a1a421e33a05a45bc832d3e1a7aa713a, the message being signed, aka the sighash
Input: m (message), x (privkey)
Output: (R, s) (signature)
- pubkey
X = (7f032a1e20deb84dc51d44cd11657c4a4d3c6bccb19c05cfd5b4b007e8a478d3 , 56e3dcb493aa83b590954d6c33cdfd20ef4b083d33b051efda091486035a4a69)= (serialized) =037f032a1e20deb84dc51d44cd11657c4a4d3c6bccb19c05cfd5b4b007e8a478d3 - ephemeral random nonce
k = 6dfb9c259dc3b79f03470418af01cb1e064692dacc353f0f656cad0bfec583a7 R(point) =kG=(83b62cb5324d37f5ad971ce99fda0d8e2a922407df6fa9b73dea4835b7fdb1dc , ef1f1211e51938e79f9c0b6929f1da6feba68f2dd48db68adc4539f39d9fa52e)R(serialized) =0283b62cb5324d37f5ad971ce99fda0d8e2a922407df6fa9b73dea4835b7fdb1dc- `H(R,X,m) = 64821fe9a06c9daa280f7ac4182e82e18b6e0fba1eefb8620a434289aaee9560
s = k + H(R,X,m)*x = 154f020e7841eab3507bf3bb1b0b2cdc4e0ee413c380098096128171c26c2ee0(R, s) = ((83b62cb5324d37f5ad971ce99fda0d8e2a922407df6fa9b73dea4835b7fdb1dc , ef1f1211e51938e79f9c0b6929f1da6feba68f2dd48db68adc4539f39d9fa52e), 154f020e7841eab3507bf3bb1b0b2cdc4e0ee413c380098096128171c26c2ee0)
Input: m (message), (R, s) (signature), X (pubkey)
Output: true or false
sG = 03cc83cf2ae222fb66ece196534d6608fba8ee0faef867e0f94ab7ecb225b44e4fR(point)+ H(R(serialized),X,m)X = 03cc83cf2ae222fb66ece196534d6608fba8ee0faef867e0f94ab7ecb225b44e4f- Equality check
sG = R + H(R,X,m)X:true