This library is under heavy development. Currently only supports nodejs environment.
npm install tiny-secp256k1-wasm
yarn add tiny-secp256k1-wasm
isPoint :: Buffer -> Bool
Returns false
if
A
is not encoded with a sequence tag of0x02
,0x03
or0x04
A.x
is not in[1...p - 1]
A.y
is not in[1...p - 1]
isPointCompressed :: Buffer -> Bool
Returns false
if the signature is not compressed.
isPrivate :: Buffer -> Bool
Returns false
if
d
is not 256-bit, ord
is not in[1..order - 1]
pointAdd :: Buffer -> Buffer [-> Bool] -> Maybe Buffer
Returns null
if result is at infinity.
Expected Point
if!isPoint(A)
Expected Point
if!isPoint(B)
pointAddScalar :: Buffer -> Buffer [-> Bool] -> Maybe Buffer
Returns null
if result is at infinity.
Expected Point
if!isPoint(A)
Expected Tweak
iftweak
is not in[0...order - 1]
pointCompress :: Buffer -> Bool -> Buffer
Expected Point
if!isPoint(A)
pointFromScalar :: Buffer [-> Bool] -> Maybe Buffer
Returns null
if result is at infinity.
Expected Private
if!isPrivate(d)
pointMultiply :: Buffer -> Buffer [-> Bool] -> Maybe Buffer
Returns null
if result is at infinity.
Expected Point
if!isPoint(A)
Expected Tweak
iftweak
is not in[0...order - 1]
privateAdd :: Buffer -> Buffer -> Maybe Buffer
Returns null
if result is equal to 0
.
Expected Private
if!isPrivate(d)
Expected Tweak
iftweak
is not in[0...order - 1]
privateSub :: Buffer -> Buffer -> Maybe Buffer
Returns null
if result is equal to 0
.
Expected Private
if!isPrivate(d)
Expected Tweak
iftweak
is not in[0...order - 1]
sign :: Buffer -> Buffer -> Buffer
Returns normalized signatures, each of (r, s) values are guaranteed to less than order / 2
.
Uses RFC6979.
Expected Private
if!isPrivate(d)
Expected Scalar
ifh
is not 256-bit
sign :: Buffer -> Buffer -> Buffer -> Buffer
Returns normalized signatures, each of (r, s) values are guaranteed to less than order / 2
.
Uses RFC6979.
Adds e
as Added Entropy to the deterministic k generation.
Expected Private
if!isPrivate(d)
Expected Scalar
ifh
is not 256-bitExpected Extra Data (32 bytes)
ife
is not 256-bit
verify :: Buffer -> Buffer -> Buffer -> Bool
Returns false
if any of (r, s) values are equal to 0
, or if the signature is rejected.
If strict
is true
, valid signatures with any of (r, s) values greater than order / 2
are rejected.
Expected Point
if!isPoint(Q)
Expected Signature
ifsignature
has any (r, s) values not in range[0...order - 1]
Expected Scalar
ifh
is not 256-bit
This library uses rust-secp256k1 to access the native library secp256k1 by the bitcoin-core developers, including derivatives of its tests and test vectors.
Special thanks go to yuki-js, wg-wasm and beginners channel on the Rust Discord, and #rust-bitcoin on freenode IRC.