{"_id":"@dashincubator/secp256k1","_rev":"6-0099c8f56189cea7280de08f21282554","name":"@dashincubator/secp256k1","dist-tags":{"latest":"1.7.1-5"},"versions":{"1.7.0":{"name":"@dashincubator/secp256k1","version":"1.7.0","description":"Browser, Node, and bundler compatible release of @noble/secp256k1. Independently audited, high-security, 0-dependency ECDSA & Schnorr signatures","main":"secp256k1.js","types":"lib/index.d.ts","scripts":{"lint":"prettier --print-width 100 --single-quote --check index.ts","format":"prettier --print-width 100 --single-quote --write index.ts","test":"jest","coverage":"jest --coverage","bench":"node test/benchmark.js"},"author":{"name":"Paul Miller","url":"https://paulmillr.com"},"homepage":"https://paulmillr.com/noble/","repository":{"type":"git","url":"git+https://github.com/dashhive/secp256k1.git"},"license":"MIT","browser":{"crypto":false},"devDependencies":{"@noble/hashes":"1.1.2","@rollup/plugin-commonjs":"22.0.0","@rollup/plugin-node-resolve":"13.3.0","@types/jest":"28.1.1","@types/node":"17.0.18","fast-check":"3.0.0","jest":"28.1.0","micro-bmark":"0.2.0","prettier":"2.6.2","rollup":"2.75.5","ts-jest":"28.0.4","typescript":"4.7.3"},"keywords":["secp256k1","secp","secp256","elliptic","elliptic curve","curve","signature","ecc","rfc6979","schnorr","sig","bip0340","bip340","ecdsa","endomorphism","cryptography","security","noble"],"jest":{"testRegex":"/test/.*?\\.ts","transform":{"^.+\\.ts$":"ts-jest"}},"gitHead":"cfd9d32598daee5ae87d433bc46b5090a5662bbd","bugs":{"url":"https://github.com/dashhive/secp256k1/issues"},"_id":"@dashincubator/secp256k1@1.7.0","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-Uxy1rYoJKDXBryrt3PqMu/mFZQbmcJKuZfmrhCBXzYyEpU0USMf4qkTBJZxRJLJW1Im9FoXJoI/a5KDQbr8Tpw==","shasum":"beaf3fb333a4aa1bba9d8f826e3d2538a883aaa6","tarball":"https://registry.npmjs.org/@dashincubator/secp256k1/-/secp256k1-1.7.0.tgz","fileCount":4,"unpackedSize":66155,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIApMjmvIunhqEKyk/WPlhTBXk9rzLdyLEjGJRgukjPFIAiEA1Dzh5pvCnj2IrvHCvktjcxLZSrCIpswabY45P3FKBaM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhuuBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmopBw/+Lygo/SVJ5SQb02Ze70fkOUbUS1iEpJsxOKBrrLiDIh0c5gpv\r\n9o4nMyx20gRvQFsp74+y7fnOuCj/h+LQ2UG/P3cKBN1TdPMv7HqTp7XoKZLk\r\nuWvCSo9UG2yGbVZwZnrgUTsL8+paawcK7sfPN2IQ1Mr0ANWHfeWBa7bWuDku\r\n8AwAxMvpNNdyH1vvGGDvDv/e/Gx0sqbFBikqqVz3zmkfiOOFhBnssXkk05tP\r\n917uB/Miqjc/OZJdUIi3wZru8iROD5J8gp01ITmcSyDv959SVI23mny8khfX\r\nh1UV10GFVLM66Ws7EfERpdc0cjgdL3+L8iToSoyWv5I8PLCKGsgqPkJf0RU8\r\nKU0Aeur6EWgzeL8Rs8yu43L7tBwdLOekMzsFNWPdF71Sv/Z26XQYRkWBBLiF\r\nqdJJ+1UBp0ZwYrz9BrcQkklqnr9i8clRgRESb154uUIlXFaZdsE/bvvQuR47\r\nUEMictyzXmzK191z8s7NL0pxru0Pww4AXYp4vejqJATapIUaDZVCbhJpNLWc\r\nw3VtmQMbYYHObRDLjZazkE8eV+2QQnYl+1HR+61ukqSqoQTou04Gy1dIGX9c\r\nenk4Gg7YG/2P+Xt3WzdacVhV5t4/xo1NUtVI7In66idVuULeQxFSvLxDaZYo\r\n6OXExyJRGzttYqEGbWHMC5heIkM8RT1dd30=\r\n=E8xm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"directories":{},"maintainers":[{"name":"jojobyte","email":"byte.me.npm@0t.lc"},{"name":"coolaj86","email":"coolaj86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secp256k1_1.7.0_1669786497172_0.3459744473106121"},"_hasShrinkwrap":false},"1.7.1-0":{"name":"@dashincubator/secp256k1","version":"1.7.1-0","description":"Browser, Node, and bundler compatible release of @noble/secp256k1. Independently audited, high-security, 0-dependency ECDSA & Schnorr signatures","main":"secp256k1.js","types":"lib/index.d.ts","scripts":{"lint":"prettier --print-width 100 --single-quote --check index.ts","format":"prettier --print-width 100 --single-quote --write index.ts","test":"jest","coverage":"jest --coverage","bench":"node test/benchmark.js"},"author":{"name":"Paul Miller","url":"https://paulmillr.com"},"homepage":"https://paulmillr.com/noble/","repository":{"type":"git","url":"git+https://github.com/dashhive/secp256k1.git"},"license":"MIT","browser":{"crypto":false},"devDependencies":{"@noble/hashes":"1.1.2","@rollup/plugin-commonjs":"22.0.0","@rollup/plugin-node-resolve":"13.3.0","@types/jest":"28.1.1","@types/node":"17.0.18","fast-check":"3.0.0","jest":"28.1.0","micro-bmark":"0.2.0","prettier":"2.6.2","rollup":"2.75.5","ts-jest":"28.0.4","typescript":"4.7.3"},"keywords":["secp256k1","secp","secp256","elliptic","elliptic curve","curve","signature","ecc","rfc6979","schnorr","sig","bip0340","bip340","ecdsa","endomorphism","cryptography","security","noble"],"jest":{"testRegex":"/test/.*?\\.ts","transform":{"^.+\\.ts$":"ts-jest"}},"gitHead":"3dcda4aee928e0b622953f1e46d5cd897c755746","bugs":{"url":"https://github.com/dashhive/secp256k1/issues"},"_id":"@dashincubator/secp256k1@1.7.1-0","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-ximJhou6YwJw0UHfsfeoDv1svhgriaWZrTV2yKhdZbs1BR/VaChGt+c+qpvQwPuMiP8MoW5B7n3HbXTtHLhS/w==","shasum":"a30b5531778897f70bf27bf49773b9d011a0b235","tarball":"https://registry.npmjs.org/@dashincubator/secp256k1/-/secp256k1-1.7.1-0.tgz","fileCount":4,"unpackedSize":66678,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAyu/Hk0sfG5wQLso2ym2m+/o6kamfrW8L1NqjEZECurAiAjzYDM5GsdK6+xP8L5jdO/7A+ez1JYtfrJjVntTGx44g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhuywACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoibA//U2Gj5XlXnWKvl7EknYZBTyBJQ2QbJRo0wnQrRXt5Rr3f6aa2\r\nO7sx3r3FNNcfRanHMeiJxW8Bi12uBXJXLqa9yoo6uR5VkjSc3XAyLSYN+ofC\r\n1oRQmUoV9OakoL/XTi++lsPE0nupIruAp6SZ0kQQy1mP39J7fCEoedOk/v3D\r\n+74QUn3h5yrH3wR/c7osLDCPREDtRxEouQffwNwwHeyC3i22iVFC9WWhSWWx\r\nA35IreDlMkMl9gqwUnECyuXub2/q5ENIMsrk3hrzN7G5j1KkgdPwseJy3cKe\r\ngLzhfLV7XryK3yLc0Uv63mZdFYR/xJicqeKelPQrn1iq712oSWejCyLCi+gF\r\nijiBUtxQwx5tbse4vway0IIQevB2clZ8WdvUDOV/lIiDu4jKQAfsHgtz5BI9\r\n68uFMoCrtkGcORVWqC3GAsNO9SHi06LW1RDAg4CV6RZHh6bfy8OktAu/Dtx0\r\nrD+GuDg4wnwPr4n7dc82M7Q0cDZ3VQuV1plenQW9CDaWvSQlakeoawz0MBdb\r\nJm19NaxSOATIYux4JejRejMFaCTt3uI21gRhl1UOONuoB3K5zjuY6mN2UGi5\r\nSDOtmfXeOR/c7/zOEFEyp9GVb/1sKMo9rWgSUcOCiXJCoyVO8heBX+HqrBOk\r\n1cNFbdkOWj3JRM2RHC0fWG2zNLf7lfdLBq0=\r\n=dEdy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"directories":{},"maintainers":[{"name":"jojobyte","email":"byte.me.npm@0t.lc"},{"name":"coolaj86","email":"coolaj86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secp256k1_1.7.1-0_1669786800319_0.0018815773947535863"},"_hasShrinkwrap":false},"1.7.1-1":{"name":"@dashincubator/secp256k1","version":"1.7.1-1","description":"Browser, Node, and bundler compatible release of @noble/secp256k1. Independently audited, high-security, 0-dependency ECDSA & Schnorr signatures","main":"secp256k1.js","browser":{"./shims/node-crypto.js":"./shims/browser-crypto.js","crypto":false},"types":"lib/index.d.ts","scripts":{"lint":"prettier --print-width 100 --single-quote --check index.ts","format":"prettier --print-width 100 --single-quote --write index.ts","test":"jest","coverage":"jest --coverage","bench":"node test/benchmark.js"},"author":{"name":"Paul Miller","url":"https://paulmillr.com"},"homepage":"https://paulmillr.com/noble/","repository":{"type":"git","url":"git+https://github.com/dashhive/secp256k1.git"},"license":"MIT","devDependencies":{"@noble/hashes":"1.1.2","@rollup/plugin-commonjs":"22.0.0","@rollup/plugin-node-resolve":"13.3.0","@types/jest":"28.1.1","@types/node":"17.0.18","fast-check":"3.0.0","jest":"28.1.0","micro-bmark":"0.2.0","prettier":"2.6.2","rollup":"2.75.5","ts-jest":"28.0.4","typescript":"4.7.3"},"keywords":["secp256k1","secp","secp256","elliptic","elliptic curve","curve","signature","ecc","rfc6979","schnorr","sig","bip0340","bip340","ecdsa","endomorphism","cryptography","security","noble"],"jest":{"testRegex":"/test/.*?\\.ts","transform":{"^.+\\.ts$":"ts-jest"}},"gitHead":"8883565096e4785a0540f20d3089b078919d764f","bugs":{"url":"https://github.com/dashhive/secp256k1/issues"},"_id":"@dashincubator/secp256k1@1.7.1-1","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-zkCfHPiIBWkSHojMEVBGNi9y9vX0NHGxkwO5zdZVlhbiqpWGOPbFRbUIwbEFdlnx4tS2x8w8InNzl36qVYWsGg==","shasum":"f506d1a414ddaad90e494654cdc7f26c8de8cf54","tarball":"https://registry.npmjs.org/@dashincubator/secp256k1/-/secp256k1-1.7.1-1.tgz","fileCount":6,"unpackedSize":66798,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOcUhLi3GexeEja6BYL1eKP8MdQA8mIxKCUiC+AEk7iAiBKJPSoPYgyYQKWWp3WMjZiu73jm+qPznViT9zQxdzvXg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjr7JmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrH+Q/5ALWFNZczpgbOU6g6K800FIu83/f7NrGmdWNdZtkj9NYmnuq1\r\n0+R2qazxY9ikUuBM9k0ZSBeNfve6cxYZDPCpb8lTFxzKPUm6dS3g73d90vWc\r\nFaLjYaStmGLwUPF1B7ucTIC+WZs77bimf3nh9hQMSrRF2kvzxzRF1yb8GEPH\r\nWSqKmmUTi80Uo/zO/0Xmwq3zPDK4Kj/CC4UcYrDuHUg3KG4EelqkVfLhJLnn\r\nTjMFCOoGYN8ttHVuU2M9ktCkVf9rUWmZ1GdenqkbPxMGmxo+brym4PgKKcqz\r\nRPELehc+PpvbRlieg0Qjdp+xMOWfcVKuzuMM/e3bS43sx4mh4+tSZEDNpEqI\r\nPxh9biZuks14/onySEl0QNgAJKaZutezbDK3EKklCt3zlGRXmJk8N8vVdRjz\r\nexrcIHGdJdYzE6+V0Mi6g1jYYV+bjDnQPpC05ySbrujhiXMXgNmnt58w4DSA\r\nzRYTIo6vJ4D0WCEBv95kpM3F9lXj8reVMMzczhFqOmJfZle7UNuLzRCP8BuC\r\nxA9QTfmW8lETnNSV2QdeMhgjftrZNqz4LI6QkY0Hv39sPGM1kSJLoXYA3eUc\r\nTBlwdodVWALg/w/S4xquSZA//JnZfqFcQNUDzGpbXpvOVnKOKSsgvEsyb0ub\r\nwElVhlMNc0TT6oe0rCnRSaro+MjrIKiw7ys=\r\n=bJjx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"directories":{},"maintainers":[{"name":"jojobyte","email":"byte.me.npm@0t.lc"},{"name":"coolaj86","email":"coolaj86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secp256k1_1.7.1-1_1672458853767_0.0920662838294748"},"_hasShrinkwrap":false},"1.7.1-2":{"name":"@dashincubator/secp256k1","version":"1.7.1-2","description":"Browser, Node, and bundler compatible release of @noble/secp256k1. Independently audited, high-security, 0-dependency ECDSA & Schnorr signatures","main":"secp256k1.js","browser":{"./shims/node-crypto.js":"./shims/browser-crypto.js","crypto":false},"types":"lib/index.d.ts","scripts":{"lint":"prettier --print-width 100 --single-quote --check index.ts","format":"prettier --print-width 100 --single-quote --write index.ts","test":"jest","coverage":"jest --coverage","bench":"node test/benchmark.js"},"author":{"name":"Paul Miller","url":"https://paulmillr.com"},"homepage":"https://paulmillr.com/noble/","repository":{"type":"git","url":"git+https://github.com/dashhive/secp256k1.git"},"license":"MIT","devDependencies":{"@noble/hashes":"1.1.2","@rollup/plugin-commonjs":"22.0.0","@rollup/plugin-node-resolve":"13.3.0","@types/jest":"28.1.1","@types/node":"17.0.18","fast-check":"3.0.0","jest":"28.1.0","micro-bmark":"0.2.0","prettier":"2.6.2","rollup":"2.75.5","ts-jest":"28.0.4","typescript":"4.7.3"},"keywords":["secp256k1","secp","secp256","elliptic","elliptic curve","curve","signature","ecc","rfc6979","schnorr","sig","bip0340","bip340","ecdsa","endomorphism","cryptography","security","noble"],"jest":{"testRegex":"/test/.*?\\.ts","transform":{"^.+\\.ts$":"ts-jest"}},"gitHead":"e0e0bdb6a9fd569414e1cc4c9945508c48fbbc45","bugs":{"url":"https://github.com/dashhive/secp256k1/issues"},"_id":"@dashincubator/secp256k1@1.7.1-2","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-50XIgfLOOo2n67Jo1woNbM3Kd9+UbU54aAg7GyAcVyyshp15aobZwzB6VF0cZST1fhWF8S2KOjCcpnFRprfdNQ==","shasum":"7077da3f6422fc1bb2e6d10e7a465bbfa3af8dcf","tarball":"https://registry.npmjs.org/@dashincubator/secp256k1/-/secp256k1-1.7.1-2.tgz","fileCount":6,"unpackedSize":66806,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIETNTBTO3aWgNqPJPry1mcfqKDTrCONRUw2n2dAeudF5AiAKrEcrSXle/2OT0i8BLESr/j40Gfp+jurU/9UJlNngDw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3EkwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqD/w//aFruiMIVz7rgGLDVNKkyWDjaAD1RisAaAUiwrvSoAoq1RAU3\r\ndQDWKDnGMcSgm2KJjX6Cbo3S5SOyZka9bJF4dYeh5626F/X8mM/laDA7nrMx\r\n5J/l+HQwQ1ZIT3/XZKhwHTvC/+2qiFJkCT6N2Y7TntNySxcQmfEOH5iODaxi\r\nd8dCNzA783MEkDPy4J8EWmZOPH7zDD5PbmGSIxhN9LLoyxHZCUGE39Lc2vd8\r\ndBlJau0YOY9mnnyES/GH7Ylj5ZVfTCiDgiWxlJ/MFicjF0suksjOnohHrNVT\r\nCMvCHXqCqmXqdp+VPuX4rGbCnRw+DGLb+jQ7YfvvKkmkpwRnHAZStLfYX9e+\r\n/fiDl1iiN7E5Bkdn3vUfhLO2NhiNd/LN2OwiGnMfnYvTpk3X+hngH2Qgqec6\r\nAJ/liwKs3uhgVjb5JJ69LwZssEhyhhQ8J8J7gAAI3jEcDWoN5Mn0g3Eu14Oy\r\n3isLFb3V2Sg3Bnlt+UOryY/qUe78bqD1p6TudZRmJFfBLj30gAYWYWkr2qDH\r\nrAmV8H+N9vLBsm125fm0tEiDNyvIr8Og4xx05IKqsTGXMVyKegYMZFLGwpDw\r\nitybjfjVux/BHDvmqK7kTfXbPZ0F7brIX4JzpfhKreQI9hZPuSYyN5gLmcib\r\n593aB/83u/tQ2H5KOs4tWW9D0ybkeiFFq3w=\r\n=rIwX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"directories":{},"maintainers":[{"name":"jojobyte","email":"byte.me.npm@0t.lc"},{"name":"coolaj86","email":"coolaj86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secp256k1_1.7.1-2_1675381040749_0.441179768937106"},"_hasShrinkwrap":false},"1.7.1-3":{"name":"@dashincubator/secp256k1","version":"1.7.1-3","description":"Browser, Node, and bundler compatible release of @noble/secp256k1. Independently audited, high-security, 0-dependency ECDSA & Schnorr signatures","main":"secp256k1.js","browser":{"./shims/node-crypto.js":"./shims/browser-crypto.js","crypto":false},"types":"lib/index.d.ts","scripts":{"lint":"prettier --print-width 100 --single-quote --check index.ts","format":"prettier --print-width 100 --single-quote --write index.ts","test":"jest","coverage":"jest --coverage","bench":"node test/benchmark.js"},"author":{"name":"Paul Miller","url":"https://paulmillr.com"},"homepage":"https://paulmillr.com/noble/","repository":{"type":"git","url":"git+https://github.com/dashhive/secp256k1.git"},"license":"MIT","devDependencies":{"@noble/hashes":"1.1.2","@rollup/plugin-commonjs":"22.0.0","@rollup/plugin-node-resolve":"13.3.0","@types/jest":"28.1.1","@types/node":"17.0.18","fast-check":"3.0.0","jest":"28.1.0","micro-bmark":"0.2.0","prettier":"2.6.2","rollup":"2.75.5","ts-jest":"28.0.4","typescript":"4.7.3"},"keywords":["secp256k1","secp","secp256","elliptic","elliptic curve","curve","signature","ecc","rfc6979","schnorr","sig","bip0340","bip340","ecdsa","endomorphism","cryptography","security","noble"],"jest":{"testRegex":"/test/.*?\\.ts","transform":{"^.+\\.ts$":"ts-jest"}},"gitHead":"e0c4c1b473596324b04df377a3738501cf0f6d8b","bugs":{"url":"https://github.com/dashhive/secp256k1/issues"},"_id":"@dashincubator/secp256k1@1.7.1-3","_nodeVersion":"14.21.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-H7zQIaVUzzh3GNKfXopgMknzA5ae967+Qzo8xUgaqXvsFdMXnCGZPIjo4/qffRKMQoy3Q3a8Iq8mQ0DYEJitbA==","shasum":"41dbc9f594e1aa4d7582e96e31b01852f2905902","tarball":"https://registry.npmjs.org/@dashincubator/secp256k1/-/secp256k1-1.7.1-3.tgz","fileCount":4,"unpackedSize":66881,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBVkmxG4dniiVr3yNT3VRn64/1b6Zbun08oi3iZ4BAQEAiB0x/R/6K+efOOxKTPrbDxehRTe4c+DJcWjvUMSxd+Iag=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3O+sACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmooPBAAnuvCU9ZiqOiy5eZ888HbST04dI2z+wVEIZULa1CH9vFVEsjF\r\n+3jaOZzZtFgmSBt5JF09yBWSYdxu+mOwcX+aXlSlPmI0AziF/LYINaGWezh8\r\ncc0xVdQErlcB3aEOnJJbda8Z+rRJLTWtUdImPlMelDUbHaKWCYBpA9L1PDMi\r\nPVawkczLxRQdg4PPodD9edinsf72CKIhWD3y+3C3hXX7aR9uLjQYpYU87D4Y\r\nfFpiHax5f1HwtgPfV/QbDb1TPshLpeCXVciibCo2Mtb1uV2dxuvrNR8l8Ntq\r\nB7GwRwycvh95BY5v88dswl+BcNGFU2H2UN0Ft331QnRQlrs5u7ZnVyRQRbn/\r\npjeGU4suZV4EtopDlGINICSLPpJFF+dXND34ye2aatXYfKCbKJLLgzEOW+4n\r\nhN5xiYkvpzaJ3zJhOD+YHgxrTXq6RlybRCVJ+JSTEQzLVAV0iMgt02oqkioB\r\ndMrDxX4CNbzDOLjBCYisXk3UaonBz4u2oFvIo7C9xwn7KGEgUqwSwxsCpWKB\r\nY6oGvyUtNGDPW2XRf8aiPXfiVgIHqkXn1cBbXpTe7Pf9ekJ2UFNFm1OWSf7K\r\ndFZ9pVJn2/WSiBuUelxvLQmpEeQp9WgbixyQSttoSKUtUk7AadJ9zccZX/q2\r\npH3dAamumDKp8e4N1vp8rV6TFx4EL4N2FqE=\r\n=HyI6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"directories":{},"maintainers":[{"name":"jojobyte","email":"byte.me.npm@0t.lc"},{"name":"coolaj86","email":"coolaj86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secp256k1_1.7.1-3_1675423660592_0.8382525376621142"},"_hasShrinkwrap":false},"1.7.1-4":{"name":"@dashincubator/secp256k1","version":"1.7.1-4","description":"Browser, Node, and bundler compatible release of @noble/secp256k1. Independently audited, high-security, 0-dependency ECDSA & Schnorr signatures","main":"secp256k1.js","browser":{"./shims/node-crypto.js":"./shims/browser-crypto.js","crypto":false},"types":"lib/index.d.ts","scripts":{"lint":"prettier --print-width 100 --single-quote --check index.ts","format":"prettier --print-width 100 --single-quote --write index.ts","test":"jest","coverage":"jest --coverage","bench":"node test/benchmark.js"},"author":{"name":"Paul Miller","url":"https://paulmillr.com"},"homepage":"https://paulmillr.com/noble/","repository":{"type":"git","url":"git+https://github.com/dashhive/secp256k1.git"},"license":"MIT","devDependencies":{"@noble/hashes":"1.1.2","@rollup/plugin-commonjs":"22.0.0","@rollup/plugin-node-resolve":"13.3.0","@types/jest":"28.1.1","@types/node":"17.0.18","fast-check":"3.0.0","jest":"28.1.0","micro-bmark":"0.2.0","prettier":"2.6.2","rollup":"2.75.5","ts-jest":"28.0.4","typescript":"4.7.3"},"keywords":["secp256k1","secp","secp256","elliptic","elliptic curve","curve","signature","ecc","rfc6979","schnorr","sig","bip0340","bip340","ecdsa","endomorphism","cryptography","security","noble"],"jest":{"testRegex":"/test/.*?\\.ts","transform":{"^.+\\.ts$":"ts-jest"}},"gitHead":"5e8b32d8e64c94a502f478f57ec39a7e7ddaadb6","bugs":{"url":"https://github.com/dashhive/secp256k1/issues"},"_id":"@dashincubator/secp256k1@1.7.1-4","_nodeVersion":"18.14.0","_npmVersion":"9.3.1","dist":{"integrity":"sha512-dQ6ZOZQL0nWGc1bs6baD/qD4LJsiNlT4E7kXgTkK86o0po1rN/H0lVcikeBMfLJIaVUVYjH6sygScEGOy+17wA==","shasum":"c499ac724b46369fed3210632616f5cad6139ce4","tarball":"https://registry.npmjs.org/@dashincubator/secp256k1/-/secp256k1-1.7.1-4.tgz","fileCount":6,"unpackedSize":67138,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCU1TL7PX04TbmhiDNB1zYDK2+42xmgHYYn1croJg3ArwIgHx1TYun3CfyYrD27fwAnxMk7fykxptGzbkx86GfC9B4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3PIKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrckw/+ILEd80Xj2MPdI0Hvn/wa/qekC3gM0QdcqLIVga59Krm9Atv1\r\nKuTJvS2Gz0JG6ZJQlXhNqOtr7F9BhSiyJrU0sSHpmcDiCkmarKMOmkvg3y0a\r\ni2/bdtw9o+2zel8gOFInJErAlw0idGALcU5JWezhMptUFTCuHY1jwl22Ys3o\r\nFqijYk+72f1pWWdJCjnM2srZvbt7tps0XlYbBJIc1m1wviVjzhi7DCLsukKF\r\nDP5j7GLAqg+uJqvjF9qXueGaHo0g2F+DYv+EfC0NxxdnPgGhm5VhgoWXNR9+\r\nAsUoZewxdjNuG1vVExxPiiIeTHis8DW2yDRj/+8HqJil802r4uYeKioovWM3\r\nLh2GvH+u7VFIVfXdHSf+4K2OTMhAv0DVCHOaF8NGyrEQvQm3SRIys9CQticf\r\nP+u34AxsO1qfvaPgB/2fKap5rlb+VW19SRtcVfbJUizjN0oNLZI62ZtJ8MTu\r\nRH32Fak8vAYPaukGQ1fNVaJxwQlNKKTktHv7aCEYpmNopk0TmdNZ4Tw819zE\r\nQ29lVkIE88sZzLQ4Uzjwx4HZ2XoPRXVQ5O9npKx3qUH2V0QpizeM0s0y9iOg\r\nYeAD+KffI3hw3nB2pLPYgRTkjWC17ZHDRHOqoOY9hdfXcCQuHktpYbDx5Nxb\r\ne/29Ax6bSdzwqVsIjK72KxCuR62xpieMtWU=\r\n=gQeK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"directories":{},"maintainers":[{"name":"jojobyte","email":"byte.me.npm@0t.lc"},{"name":"coolaj86","email":"coolaj86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secp256k1_1.7.1-4_1675424265973_0.6723772440653273"},"_hasShrinkwrap":false},"1.7.1-5":{"name":"@dashincubator/secp256k1","version":"1.7.1-5","description":"Browser, Node, and bundler compatible release of @noble/secp256k1. Independently audited, high-security, 0-dependency ECDSA & Schnorr signatures","main":"secp256k1.js","browser":{"./shims/node-crypto.js":"./shims/browser-crypto.js","crypto":false},"types":"lib/index.d.ts","scripts":{"lint":"prettier --print-width 100 --single-quote --check index.ts","format":"prettier --print-width 100 --single-quote --write index.ts","test":"jest","coverage":"jest --coverage","bench":"node test/benchmark.js"},"author":{"name":"Paul Miller","url":"https://paulmillr.com"},"homepage":"https://paulmillr.com/noble/","repository":{"type":"git","url":"git+https://github.com/dashhive/secp256k1.git"},"license":"MIT","devDependencies":{"@noble/hashes":"1.1.2","@rollup/plugin-commonjs":"22.0.0","@rollup/plugin-node-resolve":"13.3.0","@types/jest":"28.1.1","@types/node":"17.0.18","fast-check":"3.0.0","jest":"28.1.0","micro-bmark":"0.2.0","prettier":"2.6.2","rollup":"2.75.5","ts-jest":"28.0.4","typescript":"4.7.3"},"keywords":["secp256k1","secp","secp256","elliptic","elliptic curve","curve","signature","ecc","rfc6979","schnorr","sig","bip0340","bip340","ecdsa","endomorphism","cryptography","security","noble"],"jest":{"testRegex":"/test/.*?\\.ts","transform":{"^.+\\.ts$":"ts-jest"}},"gitHead":"c41b5c8c4eb3fe9ab6691515644c10300ec81171","bugs":{"url":"https://github.com/dashhive/secp256k1/issues"},"_id":"@dashincubator/secp256k1@1.7.1-5","_nodeVersion":"18.14.0","_npmVersion":"9.3.1","dist":{"integrity":"sha512-3iA+RDZrJsRFPpWhlYkp3EdoFAlKjdqkNFiRwajMrzcpA/G/IBX0AnC1pwRLkTrM+tUowcyGrkJfT03U4ETZeg==","shasum":"de613c85edfd037a108efdfe5cfc2200f7ae70f3","tarball":"https://registry.npmjs.org/@dashincubator/secp256k1/-/secp256k1-1.7.1-5.tgz","fileCount":6,"unpackedSize":67046,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIADtBKCSDiUcLIl2um/3hqF/Pg+TEmHBkB7DpRA7vaglAiEAzHFAPp06boC8mKypS/xUP9lY8+OWsJPuVf2X5lx3fCk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3evGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmodEA//TjmC/lWdPS55H2Fdv3uWwkJ8s7m91RokIQaWG+PV8n/YsmQd\r\nDPfPLzx1NVsczbzPCvt//UUECfveh8S4Q2jluCkIPcwLq/Bda6j0oFJNJmDZ\r\niKRejbqb+Dzlq9fJYcLXIht5jNIXkZ/dEZBbyFFfhxRvrq76CaIuNiZHgGeA\r\n3SgtleOCECWWQDiB+sizMHL9y09Ckfycjm+RPCtzMmw7JLGJMLce3esjVVfP\r\ncr9n7vT0+0qm2FYgs8EsUjhn1XsaqWY7qyXB15PfecuB/JBBggrxCN1cIL8u\r\ncHnhDmYafHGvLtpo8mEEmdwurGgdPkY++3/obFR8Cybdqg+blI1EqFqfeN90\r\nB9gRjuKUflE2ZX1ZYQXOJA1K9MXGhlGYKY+JWeDzly0yWEjA+aE51JrZGOyd\r\niXdxbsG0W01w4kxwqvzeyYGGKBVbfSDrAvC8BDrqkA6avVQtRx0dcALrL2lv\r\nTyVJ9JsUYK4Nez6AcI8oriOkg1ONW62TUbhynr+3iDxLfmlEpbPxn/WdGB2+\r\nY9EWqrbp2oG6ysrzpWIevo5YUboF2QDtAaF1xaQW8YbFzkhhd4DVMJoXSCjC\r\nO95+LSn07fL9MRgQbezj+DZ2Cpjx1qgpXgGfeTBK14nZx+K0c4EGma9xMfXH\r\n1BNnSI5zUnuC6Br7RoGVDksdyf/bGdHQPiE=\r\n=fTb5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"coolaj86","email":"coolaj86@gmail.com"},"directories":{},"maintainers":[{"name":"jojobyte","email":"byte.me.npm@0t.lc"},{"name":"coolaj86","email":"coolaj86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secp256k1_1.7.1-5_1675488198398_0.8579956955432715"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-30T05:34:57.097Z","1.7.0":"2022-11-30T05:34:57.387Z","modified":"2023-02-04T05:23:18.677Z","1.7.1-0":"2022-11-30T05:40:00.568Z","1.7.1-1":"2022-12-31T03:54:14.461Z","1.7.1-2":"2023-02-02T23:37:20.917Z","1.7.1-3":"2023-02-03T11:27:40.758Z","1.7.1-4":"2023-02-03T11:37:46.181Z","1.7.1-5":"2023-02-04T05:23:18.578Z"},"maintainers":[{"name":"jojobyte","email":"byte.me.npm@0t.lc"},{"name":"coolaj86","email":"coolaj86@gmail.com"}],"description":"Browser, Node, and bundler compatible release of @noble/secp256k1. Independently audited, high-security, 0-dependency ECDSA & Schnorr signatures","homepage":"https://paulmillr.com/noble/","keywords":["secp256k1","secp","secp256","elliptic","elliptic curve","curve","signature","ecc","rfc6979","schnorr","sig","bip0340","bip340","ecdsa","endomorphism","cryptography","security","noble"],"repository":{"type":"git","url":"git+https://github.com/dashhive/secp256k1.git"},"author":{"name":"Paul Miller","url":"https://paulmillr.com"},"bugs":{"url":"https://github.com/dashhive/secp256k1/issues"},"license":"MIT","readme":"# @dashincubator/secp256k1\n\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\n\nBrowser, Node, and bundler compatible release of\n[@noble/secp256k1](https://github.com/paulmillr/noble-secp256k1).\n\n[Fastest](#speed) JS implementation of\n[secp256k1](https://www.secg.org/sec2-v2.pdf), an elliptic curve that could be\nused for asymmetric encryption, ECDH key agreement protocol and signature\nschemes. Supports deterministic **ECDSA** from RFC6979 and **Schnorr**\nsignatures from\n[BIP0340](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki).\n\n[**Audited**](#security) by an independent security firm. Check out\n[the online demo](https://paulmillr.com/ecc) and blog post:\n[Learning fast elliptic-curve cryptography in JS](https://paulmillr.com/posts/noble-secp256k1-fast-ecc/)\n\n### This fork is a standalone browser-compatible release of _noble_ crypto\n\n> **noble-crypto** — high-security, easily auditable set of contained\n> cryptographic libraries and tools.\n\n- No dependencies, one small file\n- Easily auditable TypeScript/JS code\n- Supported in all major browsers and stable node.js versions\n- Also check out the [@noble suite](https://paulmillr.com/noble/) & all libraries:\n  [secp256k1](https://github.com/paulmillr/noble-secp256k1),\n  [ed25519](https://github.com/paulmillr/noble-ed25519),\n  [bls12-381](https://github.com/paulmillr/noble-bls12-381),\n  [hashes](https://github.com/paulmillr/noble-hashes)\n\n## Install\n\n### Node, Bun, & Bundlers\n\n```sh\nnpm install --save @dashincubator/secp256k1\n```\n\nCommonJS and ECMAScript Modules (ESM)\n\n```js\nvar Secp256k1 = require(\"@dashincubator/secp256k1\");\n```\n\n```js\nimport * as Secp256k1 from \"@dashincubator/secp256k1\";\n```\n\n### Browsers\n\n```html\n<script src=\"https://unpkg.com/@dashincubator/secp256k1@1.7.0/secp256k1.js\"></script>\n<script>\n  let Secp256k1 = window.nobleSecp256k1;\n</script>\n```\n\n## Usage\n\nUse NPM in node.js / browser, or include single file from\n[GitHub's releases page](https://github.com/paulmillr/noble-secp256k1/releases):\n\n```js\n// Supports both async and sync methods, see docs\n(async () => {\n  // keys, messages & other inputs can be Uint8Arrays or hex strings\n  // Uint8Array.from([0xde, 0xad, 0xbe, 0xef]) === 'deadbeef'\n  const privKey = Secp256k1.utils.randomPrivateKey();\n  const pubKey = Secp256k1.getPublicKey(privKey);\n  const msgHash = await Secp256k1.utils.sha256(\"hello world\");\n  const signature = await Secp256k1.sign(msgHash, privKey);\n  const isValid = Secp256k1.verify(signature, msgHash, pubKey);\n\n  // Schnorr signatures\n  const rpub = Secp256k1.schnorr.getPublicKey(privKey);\n  const rsignature = await Secp256k1.schnorr.sign(message, privKey);\n  const risValid = await Secp256k1.schnorr.verify(rsignature, message, rpub);\n})();\n```\n\nTo use the module with [Deno](https://deno.land), you will need\n[import map](https://deno.land/manual/linking_to_external_code/import_maps):\n\n- `deno run --import-map=imports.json app.ts`\n- app.ts: `import * as Secp256k1 from \"https://deno.land/x/secp256k1/mod.ts\";`\n- imports.json:\n  `{\"imports\": {\"crypto\": \"https://deno.land/std@0.153.0/node/crypto.ts\"}}`\n\n## API\n\n- [`getPublicKey(privateKey)`](#getpublickeyprivatekey)\n- [`sign(msgHash, privateKey)`](#signmsghash-privatekey)\n- [`verify(signature, msgHash, publicKey)`](#verifysignature-msghash-publickey)\n- [`getSharedSecret(privateKeyA, publicKeyB)`](#getsharedsecretprivatekeya-publickeyb)\n- [`recoverPublicKey(hash, signature, recovery)`](#recoverpublickeyhash-signature-recovery)\n- [`schnorr.getPublicKey(privateKey)`](#schnorrgetpublickeyprivatekey)\n- [`schnorr.sign(message, privateKey)`](#schnorrsignmessage-privatekey)\n- [`schnorr.verify(signature, message, publicKey)`](#schnorrverifysignature-message-publickey)\n- [Utilities](#utilities)\n\n##### `getPublicKey(privateKey)`\n\n```typescript\nfunction getPublicKey(\n  privateKey: Uint8Array | string | bigint,\n  isCompressed = false,\n): Uint8Array;\n```\n\nCreates public key for the corresponding private key. The default is full\n65-byte key.\n\n- `isCompressed = false` determines whether to return compact (33-byte), or full\n  (65-byte) key.\n\nInternally, it does `Point.BASE.multiply(privateKey)`. If you need actual\n`Point` instead of `Uint8Array`, use `Point.fromPrivateKey(privateKey)`.\n\n##### `sign(msgHash, privateKey)`\n\n```typescript\nfunction sign(\n  msgHash: Uint8Array | string,\n  privateKey: Uint8Array | string,\n  opts?: Options,\n): Promise<Uint8Array>;\nfunction sign(\n  msgHash: Uint8Array | string,\n  privateKey: Uint8Array | string,\n  opts?: Options,\n): Promise<[Uint8Array, number]>;\n```\n\nGenerates low-s deterministic ECDSA signature as per RFC6979.\n\n- `msgHash: Uint8Array | string` - 32-byte message hash which would be signed\n- `privateKey: Uint8Array | string | bigint` - private key which will sign the\n  hash\n- `options?: Options` - _optional_ object related to signature value and format\n  with following keys:\n  - `recovered: boolean = false` - whether the recovered bit should be included\n    in the result. In this case, the result would be an array of two items.\n  - `canonical: boolean = true` - whether a signature `s` should be no more than\n    1/2 prime order. `true` (default) makes signatures compatible with\n    libsecp256k1, `false` makes signatures compatible with openssl\n  - `der: boolean = true` - whether the returned signature should be in DER\n    format. If `false`, it would be in Compact format (32-byte r + 32-byte s)\n  - `extraEntropy: Uint8Array | string | true` - additional entropy `k'` for\n    deterministic signature, follows section 3.6 of RFC6979. When `true`, it\n    would automatically be filled with 32 bytes of cryptographically secure\n    entropy. **Strongly recommended** to pass `true` to improve security:\n    - Schnorr signatures are doing it every time\n    - It would help a lot in case there is an error somewhere in `k` generation.\n      Exposing `k` could leak private keys\n    - If the entropy generator is broken, signatures would be the same as they\n      are without the option\n    - Signatures with extra entropy would have different `r` / `s`, which means\n      they would still be valid, but may break some test vectors if you're\n      cross-testing against other libs\n\nThe function is asynchronous because we're utilizing built-in HMAC API to not\nrely on dependencies.\n\n```ts\n(async () => {\n  // Signatures with improved security\n  const signatureE = await Secp256k1.sign(msgHash, privKey, {\n    extraEntropy: true,\n  });\n  // Malleable signatures, but compatible with openssl\n  const signatureM = await Secp256k1.sign(msgHash, privKey, {\n    canonical: false,\n  });\n})();\n```\n\n```typescript\nfunction signSync(\n  msgHash: Uint8Array | string,\n  privateKey: Uint8Array | string,\n  opts?: Options,\n): Uint8Array | [Uint8Array, number];\n```\n\n`signSync` counterpart could also be used, you need to set\n`utils.hmacSha256Sync` to a function with signature\n`key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array`. Example with\n`noble-hashes` package:\n\n```ts\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nsecp256k1.utils.hmacSha256Sync = (key, ...msgs) =>\n  hmac(sha256, key, secp256k1.utils.concatBytes(...msgs));\nsecp256k1.utils.sha256Sync = (...msgs) =>\n  sha256(secp256k1.utils.concatBytes(...msgs));\n// Can be used now\nsecp256k1.signSync(msgHash, privateKey);\nschnorr.signSync(message, privateKey);\n```\n\n##### `verify(signature, msgHash, publicKey)`\n\n```typescript\nfunction verify(\n  signature: Uint8Array | string,\n  msgHash: Uint8Array | string,\n  publicKey: Uint8Array | string,\n): boolean;\nfunction verify(\n  signature: Signature,\n  msgHash: Uint8Array | string,\n  publicKey: Point,\n): boolean;\n```\n\n- `signature: Uint8Array | string | { r: bigint, s: bigint }` - object returned\n  by the `sign` function\n- `msgHash: Uint8Array | string` - message hash that needs to be verified\n- `publicKey: Uint8Array | string | Point` - e.g. that was generated from\n  `privateKey` by `getPublicKey`\n- `options?: Options` - _optional_ object related to signature value and format\n  - `strict: boolean = true` - whether a signature `s` should be no more than\n    1/2 prime order. `true` (default) makes signatures compatible with\n    libsecp256k1, `false` makes signatures compatible with openssl\n- Returns `boolean`: `true` if `signature == hash`; otherwise `false`\n\n##### `getSharedSecret(privateKeyA, publicKeyB)`\n\n```typescript\nfunction getSharedSecret(\n  privateKeyA: Uint8Array | string | bigint,\n  publicKeyB: Uint8Array | string | Point,\n  isCompressed = false,\n): Uint8Array;\n```\n\nComputes ECDH (Elliptic Curve Diffie-Hellman) shared secret between a private\nkey and a different public key.\n\n- To get Point instance, use `Point.fromHex(publicKeyB).multiply(privateKeyA)`\n- `isCompressed = false` determines whether to return compact (33-byte), or full\n  (65-byte) key\n- If you have one public key you'll be creating lots of secrets against,\n  consider massive speed-up by using precomputations:\n\n  ```js\n  const pub = Secp256k1.utils.precompute(8, publicKeyB);\n  // Use pub everywhere instead of publicKeyB\n  getSharedSecret(privKey, pub); // Now 12x faster\n  ```\n\n##### `recoverPublicKey(hash, signature, recovery)`\n\n```typescript\nfunction recoverPublicKey(\n  msgHash: Uint8Array | string,\n  signature: Uint8Array | string,\n  recovery: number,\n  isCompressed = false,\n): Uint8Array | undefined;\n```\n\nRecovers public key from message hash, signature & recovery bit. The default is\nfull 65-byte key.\n\n- `msgHash: Uint8Array | string` - message hash which would be signed\n- `signature: Uint8Array | string | { r: bigint, s: bigint }` - object returned\n  by the `sign` function\n- `recovery: number` - recovery bit returned by `sign` with `recovered` option\n- `isCompressed = false` determines whether to return compact (33-byte), or full\n  (65-byte) key\n\nPublic key is generated by doing scalar multiplication of a base Point(x, y) by\na fixed integer. The result is another `Point(x, y)` which we will by default\nencode to hex Uint8Array. If signature is invalid - function will return\n`undefined` as result. To get Point instance, use\n`Point.fromSignature(hash, signature, recovery)`.\n\n##### `schnorr.getPublicKey(privateKey)`\n\n```typescript\nfunction schnorrGetPublicKey(privateKey: Uint8Array | string): Uint8Array;\n```\n\nCalculates 32-byte public key from a private key.\n\n_Warning:_ it is incompatible with non-schnorr pubkey. Specifically, its _y_\ncoordinate may be flipped. See\n[BIP340](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki) for\nclarification.\n\n##### `schnorr.sign(message, privateKey)`\n\n```typescript\nfunction schnorrSign(\n  message: Uint8Array | string,\n  privateKey: Uint8Array | string,\n  auxilaryRandom?: Uint8Array,\n): Promise<Uint8Array>;\n```\n\nGenerates Schnorr signature as per BIP0340. Asynchronous, so use `await`.\n\n- `message: Uint8Array | string` - message (not hash) which would be signed\n- `privateKey: Uint8Array | string | bigint` - private key which will sign the\n  hash\n- `auxilaryRandom?: Uint8Array` — optional 32 random bytes. By default, the\n  method gathers cryptogarphically secure entropy\n- Returns Schnorr signature in Hex format.\n\n##### `schnorr.verify(signature, message, publicKey)`\n\n```typescript\nfunction schnorrVerify(\n  signature: Uint8Array | string,\n  message: Uint8Array | string,\n  publicKey: Uint8Array | string,\n): boolean;\n```\n\n- `signature: Uint8Array | string | { r: bigint, s: bigint }` - object returned\n  by the `sign` function\n- `message: Uint8Array | string` - message (not hash) that needs to be verified\n- `publicKey: Uint8Array | string | Point` - e.g. that was generated from\n  `privateKey` by `getPublicKey`\n- Returns `boolean`: `true` if `signature == hash`; otherwise `false`\n\n#### Utilities\n\nsecp256k1 exposes a few internal utilities for improved developer experience.\n\n```js\n// Default output is Uint8Array. If you need hex string as an output:\nlet hex = Secp256k1.utils.bytesToHex(pubKey);\nconsole.log(hex);\n```\n\n```typescript\nconst utils: {\n  // Can take 40 or more bytes of uniform input e.g. from CSPRNG or KDF\n  // and convert them into private key, with the modulo bias being neglible.\n  // As per FIPS 186 B.1.1.\n  hashToPrivateKey: (hash: Hex) => Uint8Array;\n  // Returns `Uint8Array` of 32 cryptographically secure random bytes that can be used as private key\n  randomPrivateKey: () => Uint8Array;\n  // Checks private key for validity\n  isValidPrivateKey(privateKey: PrivKey): boolean;\n\n  // Returns `Uint8Array` of x cryptographically secure random bytes.\n  randomBytes: (bytesLength?: number) => Uint8Array;\n  // Converts Uint8Array to hex string\n  bytesToHex(uint8a: Uint8Array): string;\n  hexToBytes(hex: string): Uint8Array;\n  concatBytes(...arrays: Uint8Array[]): Uint8Array;\n  // Modular division over curve prime\n  mod: (number: number | bigint, modulo = CURVE.P): bigint;\n  // Modular inversion\n  invert(number: bigint, modulo?: bigint): bigint;\n\n  sha256: (message: Uint8Array) => Promise<Uint8Array>;\n  hmacSha256: (key: Uint8Array, ...messages: Uint8Array[]) => Promise<Uint8Array>;\n\n  // You can set up your synchronous methods for `signSync`/`signSchnorrSync` to work.\n  // The argument order is identical to async methods from above\n  sha256Sync: undefined;\n  hmacSha256Sync: undefined;\n\n  // BIP0340-style tagged hashes\n  taggedHash: (tag: string, ...messages: Uint8Array[]) => Promise<Uint8Array>;\n  taggedHashSync: (tag: string, ...messages: Uint8Array[]) => Uint8Array;\n\n  // 1. Returns cached point which you can use to pass to `getSharedSecret` or to `#multiply` by it.\n  // 2. Precomputes point multiplication table. Is done by default on first `getPublicKey()` call.\n  // If you want your first getPublicKey to take 0.16ms instead of 20ms, make sure to call\n  // utils.precompute() somewhere without arguments first.\n  precompute(windowSize?: number, point?: Point): Point;\n};\n\nsecp256k1.CURVE.P // Field, 2 ** 256 - 2 ** 32 - 977\nsecp256k1.CURVE.n // Order, 2 ** 256 - 432420386565659656852420866394968145599\nsecp256k1.Point.BASE // new secp256k1.Point(Gx, Gy) where\n// Gx = 55066263022277343669578718895168534326250603453777594175500187360389116729240n\n// Gy = 32670510020758816978083085130507043184471273380659243275938904335757337482424n;\n\n// Elliptic curve point in Affine (x, y) coordinates.\nsecp256k1.Point {\n  constructor(x: bigint, y: bigint);\n  // Supports compressed and non-compressed hex\n  static fromHex(hex: Uint8Array | string);\n  static fromPrivateKey(privateKey: Uint8Array | string | number | bigint);\n  static fromSignature(\n    msgHash: Hex,\n    signature: Signature,\n    recovery: number | bigint\n  ): Point | undefined {\n  toRawBytes(isCompressed = false): Uint8Array;\n  toHex(isCompressed = false): string;\n  equals(other: Point): boolean;\n  negate(): Point;\n  add(other: Point): Point;\n  subtract(other: Point): Point;\n  // Constant-time scalar multiplication.\n  multiply(scalar: bigint | Uint8Array): Point;\n}\nsecp256k1.Signature {\n  constructor(r: bigint, s: bigint);\n  // DER encoded ECDSA signature\n  static fromDER(hex: Uint8Array | string);\n  // R, S 32-byte each\n  static fromCompact(hex: Uint8Array | string);\n  assertValidity(): void;\n  hasHighS(): boolean; // high-S sigs cannot be produced using { canonical: true }\n  toDERRawBytes(): Uint8Array;\n  toDERHex(): string;\n  toCompactRawBytes(): Uint8Array;\n  toCompactHex(): string;\n}\n```\n\n## Security\n\nNoble is production-ready.\n\n1. The library has been audited by an independent security firm cure53:\n   [PDF](https://cure53.de/pentest-report_noble-lib.pdf). See\n   [changes since audit](https://github.com/paulmillr/noble-secp256k1/compare/1.2.0..main).\n   - The audit has been\n     [crowdfunded](https://gitcoin.co/grants/2451/audit-of-noble-secp256k1-cryptographic-library)\n     by community with help of [Umbra.cash](https://umbra.cash).\n2. The library has also been fuzzed by\n   [Guido Vranken's cryptofuzz](https://github.com/guidovranken/cryptofuzz). You\n   can run the fuzzer by yourself to check it.\n\nWe're using built-in JS `BigInt`, which is potentially vulnerable to\n[timing attacks](https://en.wikipedia.org/wiki/Timing_attack) as\n[per official spec](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#cryptography).\nBut, _JIT-compiler_ and _Garbage Collector_ make \"constant time\" extremely hard\nto achieve in a scripting language. Which means _any other JS library doesn't\nuse constant-time bigints_. Including bn.js or anything else. Even statically\ntyped Rust, a language without GC,\n[makes it harder to achieve constant-time](https://www.chosenplaintext.ca/open-source/rust-timing-shield/security)\nfor some cases. If your goal is absolute security, don't use any JS lib —\nincluding bindings to native ones. Use low-level libraries & languages.\nNonetheless we've hardened implementation of ec curve multiplication to be\nalgorithmically constant time.\n\nWe however consider infrastructure attacks like rogue NPM modules very\nimportant; that's why it's crucial to minimize the amount of 3rd-party\ndependencies & native bindings. If your app uses 500 dependencies, any dep could\nget hacked and you'll be downloading malware with every `npm install`. Our goal\nis to minimize this attack vector.\n\n## Speed\n\nBenchmarks measured with Apple M2 on MacOS 12 with node.js 18.8.\n\n    getPublicKey(utils.randomPrivateKey()) x 7,093 ops/sec @ 140μs/op\n    sign x 5,615 ops/sec @ 178μs/op\n    signSync (@noble/hashes) x 5,209 ops/sec @ 191μs/op\n    verify x 1,114 ops/sec @ 896μs/op\n    recoverPublicKey x 1,018 ops/sec @ 982μs/op\n    getSharedSecret aka ecdh x 665 ops/sec @ 1ms/op\n    getSharedSecret (precomputed) x 7,426 ops/sec @ 134μs/op\n    Point.fromHex (decompression) x 14,582 ops/sec @ 68μs/op\n    schnorr.sign x 805 ops/sec @ 1ms/op\n    schnorr.verify x 1,129 ops/sec @ 885μs/op\n\nCompare to other libraries on M1 (`openssl` uses native bindings, not JS):\n\n    elliptic#getPublicKey x 1,940 ops/sec\n    sjcl#getPublicKey x 211 ops/sec\n\n    elliptic#sign x 1,808 ops/sec\n    sjcl#sign x 199 ops/sec\n    openssl#sign x 4,243 ops/sec\n    ecdsa#sign x 116 ops/sec\n    bip-schnorr#sign x 60 ops/sec\n\n    elliptic#verify x 812 ops/sec\n    sjcl#verify x 166 ops/sec\n    openssl#verify x 4,452 ops/sec\n    ecdsa#verify x 80 ops/sec\n    bip-schnorr#verify x 56 ops/sec\n\n    elliptic#ecdh x 971 ops/sec\n\n## Contributing\n\nCheck out a blog post about this library:\n[Learning fast elliptic-curve cryptography in JS](https://paulmillr.com/posts/noble-secp256k1-fast-ecc/).\n\n1. Clone the repository.\n2. `npm install` to install build dependencies like TypeScript\n3. `npm run build` to compile TypeScript code\n4. `npm test` to run jest on `test/index.ts`\n\nSpecial thanks to [Roman Koblov](https://github.com/romankoblov), who have\nhelped to improve scalar multiplication speed.\n\n## License\n\nMIT (c) Paul Miller [(https://paulmillr.com)](https://paulmillr.com), see\nLICENSE file.\n","readmeFilename":"README.md"}