root 7621d6d22a 221005-1449-Kim | 2 năm trước cách đây | |
---|---|---|
.. | ||
build | 2 năm trước cách đây | |
native | 2 năm trước cách đây | |
node_modules | 2 năm trước cách đây | |
scripts | 2 năm trước cách đây | |
.gitmodules | 2 năm trước cách đây | |
.travis.yml | 2 năm trước cách đây | |
LICENSE | 2 năm trước cách đây | |
README.md | 2 năm trước cách đây | |
binding.gyp | 2 năm trước cách đây | |
index.js | 2 năm trước cách đây | |
js.js | 2 năm trước cách đây | |
native.js | 2 năm trước cách đây | |
package.json | 2 năm trước cách đây | |
rfc6979.js | 2 năm trước cách đây |
This library is under development, and, like the secp256k1 C library it depends on, this is a research effort to determine an optimal API for end-users of the bitcoinjs ecosystem.
npm install tiny-secp256k1
yarn add tiny-secp256k1
If you are having problems, please read the guide at secp256k1-node, as the build instructions should be exactly the same (and this module is a direct derivation).
isPoint :: Buffer -> Bool
Returns false
if
A
is not encoded with a sequence tag of 0x02
, 0x03
or 0x04
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
if tweak
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
if tweak
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
if tweak
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
if tweak
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
if h
is not 256-bitsign :: 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
if h
is not 256-bitExpected Extra Data (32 bytes)
if e
is not 256-bitverify :: 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
if signature
has any (r, s) values not in range [0...order - 1]
Expected Scalar
if h
is not 256-bitThis is a partially derived work of https://github.com/cryptocoinjs/secp256k1-node, specifically this commit.
This library uses the native library secp256k1 by the bitcoin-core developers, including derivatives of its tests and test vectors.