{"_id":"tiny-secp256k1-native","_rev":"4583600","name":"tiny-secp256k1-native","description":"A tiny secp256k1 native wrapper","dist-tags":{"latest":"1.1.0"},"maintainers":[{"name":"junderw","email":"junderwood@bitcoinbank.co.jp"}],"time":{"modified":"2026-04-10T16:23:29.000Z","created":"2019-04-12T19:18:35.246Z","1.1.0":"2019-05-22T03:59:00.435Z","1.0.0":"2019-05-21T08:59:08.192Z","0.0.1-security":"2019-04-12T19:18:35.246Z"},"users":{},"author":"","repository":{"type":"git","url":"git+https://github.com/bitcoinjs/tiny-secp256k1-native.git"},"versions":{"1.1.0":{"name":"tiny-secp256k1-native","version":"1.1.0","description":"A tiny secp256k1 native wrapper","main":"index.js","gypfile":true,"engines":{"node":">=8.0.0"},"scripts":{"build":"node-gyp rebuild","unit":"tape tests/index.js | tap-difflet -p","test":"npm run unit","install":"node-gyp rebuild"},"repository":{"type":"git","url":"git+https://github.com/bitcoinjs/tiny-secp256k1-native.git"},"author":"","license":"MIT","bugs":{"url":"https://github.com/bitcoinjs/tiny-secp256k1-native/issues"},"homepage":"https://github.com/bitcoinjs/tiny-secp256k1-native#readme","dependencies":{"bindings":"^1.3.0","nan":"^2.13.2"},"devDependencies":{"browserify":"^16.2.2","tap-difflet":"^0.7.1","tape":"^4.9.0"},"gitHead":"71f62404cc4a9f43c2b33d06b4b26bfbe9c5e6cd","_id":"tiny-secp256k1-native@1.1.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"shasum":"b554a73061836a0914e7f9461fc336dd7386de73","size":164001,"noattachment":false,"key":"/tiny-secp256k1-native/-/tiny-secp256k1-native-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tiny-secp256k1-native/download/tiny-secp256k1-native-1.1.0.tgz"},"maintainers":[{"name":"junderw","email":"junderwood@bitcoinbank.co.jp"}],"_npmUser":{"name":"junderw","email":"junderwood@bitcoinbank.co.jp"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tiny-secp256k1-native_1.1.0_1558497540256_0.22015198210055598"},"_hasShrinkwrap":false,"publish_time":1558497540435,"_cnpm_publish_time":1558497540435,"_cnpmcore_publish_time":"2021-12-16T14:18:19.457Z","hasInstallScript":true},"1.0.0":{"name":"tiny-secp256k1-native","version":"1.0.0","description":"A tiny secp256k1 native wrapper","main":"index.js","gypfile":true,"engines":{"node":">=8.0.0"},"scripts":{"build":"node-gyp rebuild","unit":"tape tests/index.js | tap-difflet -p","test":"npm run unit","install":"node-gyp rebuild"},"repository":{"type":"git","url":"git+https://github.com/bitcoinjs/tiny-secp256k1-native.git"},"author":"","license":"MIT","bugs":{"url":"https://github.com/bitcoinjs/tiny-secp256k1-native/issues"},"homepage":"https://github.com/bitcoinjs/tiny-secp256k1-native#readme","dependencies":{"bindings":"^1.3.0","nan":"^2.13.2"},"devDependencies":{"browserify":"^16.2.2","tap-difflet":"^0.7.1","tape":"^4.9.0"},"gitHead":"b450ace955529720170643667d12d3d375c09b17","_id":"tiny-secp256k1-native@1.0.0","_nodeVersion":"10.15.3","_npmVersion":"6.9.0","dist":{"shasum":"7627a80b9532cd95f04a9a90f3032418e20acd05","size":164000,"noattachment":false,"key":"/tiny-secp256k1-native/-/tiny-secp256k1-native-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/tiny-secp256k1-native/download/tiny-secp256k1-native-1.0.0.tgz"},"maintainers":[{"name":"junderw","email":"junderwood@bitcoinbank.co.jp"}],"_npmUser":{"name":"junderw","email":"junderwood@bitcoinbank.co.jp"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tiny-secp256k1-native_1.0.0_1558429148026_0.7811077542010487"},"_hasShrinkwrap":false,"publish_time":1558429148192,"_cnpm_publish_time":1558429148192,"_cnpmcore_publish_time":"2021-12-16T14:18:20.100Z","hasInstallScript":true},"0.0.1-security":{"name":"tiny-secp256k1-native","version":"0.0.1-security","description":"security holding package","repository":{"type":"git","url":"git+https://github.com/npm/security-holder.git"},"bugs":{"url":"https://github.com/npm/security-holder/issues"},"homepage":"https://github.com/npm/security-holder#readme","_id":"tiny-secp256k1-native@0.0.1-security","_nodeVersion":"10.13.0","_npmVersion":"6.9.0","dist":{"shasum":"bc78fa2f8332a844bd5561a68a4ecdf7cb764cdf","size":425,"noattachment":false,"key":"/tiny-secp256k1-native/-/tiny-secp256k1-native-0.0.1-security.tgz","tarball":"http://registry.cnpm.dingdandao.com/tiny-secp256k1-native/download/tiny-secp256k1-native-0.0.1-security.tgz"},"maintainers":[{"name":"junderw","email":"junderwood@bitcoinbank.co.jp"}],"_npmUser":{"name":"shanisebarona","email":"shanise@npmjs.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tiny-secp256k1-native_0.0.1-security_1555096715134_0.0598183657387521"},"_hasShrinkwrap":false,"publish_time":1555096715246,"_cnpm_publish_time":1555096715246,"_cnpmcore_publish_time":"2021-12-16T14:18:20.298Z"}},"readme":"# tiny-secp256k1-native\n[![Build Status](https://travis-ci.org/bitcoinjs/tiny-secp256k1-native.png?branch=master)](https://travis-ci.org/bitcoinjs/tiny-secp256k1-native)\n[![NPM](https://img.shields.io/npm/v/tiny-secp256k1-native.svg)](https://www.npmjs.org/package/tiny-secp256k1-native)\n[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)\n\nThis library is under development,  and,  like the [secp256k1](https://github.com/bitcoin-core/secp256k1) C library it depends on,  this is a research effort to determine an optimal API for end-users of the bitcoinjs ecosystem.\n\n*This library is the native component of tiny-secp256k1. It is an optional dependency so that npm install will not fail for tiny-secp256k1 and it will fallback to the JS implementation*\n\n## Installation\n\n### npm\n\n``` bash\nnpm install tiny-secp256k1-native\n```\n\n### yarn\n\n```bash\nyarn add tiny-secp256k1-native\n```\n\nIf you are having problems,  please read the guide at [secp256k1-node](https://github.com/cryptocoinjs/secp256k1-node#installation),  as the build instructions should be exactly the same (and this module is a direct derivation).\n\n\n## Documentation\n\n### isPoint (A)\n``` haskell\nisPoint :: Buffer -> Bool\n```\nReturns `false` if\n* `A` is not encoded with a sequence tag of `0x02`, `0x03` or `0x04`\n* `A.x` is not in `[1...p - 1]`\n* `A.y` is not in `[1...p - 1]`\n\n\n### isPointCompressed (A)\n``` haskell\nisPointCompressed :: Buffer -> Bool\n```\nReturns `false` if the signature is **not** compressed.\n\n\n### isPrivate (d)\n``` haskell\nisPrivate :: Buffer -> Bool\n```\nReturns `false` if\n* `d` is not 256-bit, or\n* `d` is not in `[1..order - 1]`\n\n\n### pointAdd (A, B[, compressed])\n``` haskell\npointAdd :: Buffer -> Buffer [-> Bool] -> Maybe Buffer\n```\nReturns `null` if result is at infinity.\n\n##### Throws:\n* `Expected Point` if `!isPoint(A)`\n* `Expected Point` if `!isPoint(B)`\n\n\n### pointAddScalar (A, tweak[, compressed])\n``` haskell\npointAddScalar :: Buffer -> Buffer [-> Bool] -> Maybe Buffer\n```\nReturns `null` if result is at infinity.\n\n##### Throws:\n* `Expected Point` if `!isPoint(A)`\n* `Expected Tweak` if `tweak` is not in `[0...order - 1]`\n\n\n### pointCompress (A, compressed)\n``` haskell\npointCompress :: Buffer -> Bool -> Buffer\n```\n\n##### Throws:\n* `Expected Point` if `!isPoint(A)`\n\n\n### pointFromScalar (d[, compressed])\n``` haskell\npointFromScalar :: Buffer [-> Bool] -> Maybe Buffer\n```\nReturns `null` if result is at infinity.\n\n##### Throws:\n* `Expected Private` if `!isPrivate(d)`\n\n\n### pointMultiply (A, tweak[, compressed])\n``` haskell\npointMultiply :: Buffer -> Buffer [-> Bool] -> Maybe Buffer\n```\nReturns `null` if result is at infinity.\n\n##### Throws:\n* `Expected Point` if `!isPoint(A)`\n* `Expected Tweak` if `tweak` is not in `[0...order - 1]`\n\n\n### privateAdd (d, tweak)\n``` haskell\nprivateAdd :: Buffer -> Buffer -> Maybe Buffer\n```\nReturns `null` if result is equal to `0`.\n\n##### Throws:\n* `Expected Private` if `!isPrivate(d)`\n* `Expected Tweak` if `tweak` is not in `[0...order - 1]`\n\n\n### privateSub (d, tweak)\n``` haskell\nprivateSub :: Buffer -> Buffer -> Maybe Buffer\n```\nReturns `null` if result is equal to `0`.\n\n##### Throws:\n* `Expected Private` if `!isPrivate(d)`\n* `Expected Tweak` if `tweak` is not in `[0...order - 1]`\n\n\n### sign (h, d)\n``` haskell\nsign :: Buffer -> Buffer -> Buffer\n```\nReturns normalized signatures, each of (r, s) values are guaranteed to less than `order / 2`.\nUses RFC6979.\n\n##### Throws:\n* `Expected Private` if `!isPrivate(d)`\n* `Expected Scalar` if `h` is not 256-bit\n\n\n### signWithEntropy (h, d, e)\n``` haskell\nsign :: Buffer -> Buffer -> Buffer -> Buffer\n```\nReturns normalized signatures, each of (r, s) values are guaranteed to less than `order / 2`.\nUses RFC6979.\nAdds `e` as Added Entropy to the deterministic k generation.\n\n##### Throws:\n* `Expected Private` if `!isPrivate(d)`\n* `Expected Scalar` if `h` is not 256-bit\n* `Expected Extra Data (32 bytes)` if `e` is not 256-bit\n\n\n### verify (h, Q, signature[, strict = false])\n``` haskell\nverify :: Buffer -> Buffer -> Buffer -> Bool\n```\nReturns `false` if any of (r, s) values are equal to `0`,  or if the signature is rejected.\n\nIf `strict` is `true`, valid signatures with any of (r, s) values greater than `order / 2` are rejected.\n\n##### Throws:\n* `Expected Point` if `!isPoint(Q)`\n* `Expected Signature` if `signature` has any (r, s) values not in range `[0...order - 1]`\n* `Expected Scalar` if `h` is not 256-bit\n\n---\n\n## Credit\nThis is a partially derived work of https://github.com/cryptocoinjs/secp256k1-node, specifically [this commit](https://github.com/bitcoinjs/tiny-secp256k1-native/commit/03a1d0ab5d61dc05ab42a7e884cf37d628a10724).\n\nThis library uses the native library [secp256k1](https://github.com/bitcoin-core/secp256k1) by the bitcoin-core developers,  including derivatives of its tests and test vectors.\n\n\n# LICENSE [MIT](LICENSE)\n","_attachments":{},"homepage":"https://github.com/bitcoinjs/tiny-secp256k1-native#readme","bugs":{"url":"https://github.com/bitcoinjs/tiny-secp256k1-native/issues"},"license":"MIT"}