cryptocoinjs / eckey Goto Github PK
View Code? Open in Web Editor NEWA JavaScript component for Eliptical curve cryptography for crypto currencies such as Litecoin and Bitcoin
License: MIT License
A JavaScript component for Eliptical curve cryptography for crypto currencies such as Litecoin and Bitcoin
License: MIT License
Please add one. Preferably permissive MIT. ๐
Not much to say here really.
The compressed flag is also ignored in the alternative syntax case.
IMHO: this syntax is unnecessary.
https://github.com/cryptocoinjs/eckey/blob/master/lib/eckey.js#L9
We decided to move away from convert-hex
and convert-string
being separate libraries and merge them into binstring
. This module needs to move away from convert-hex
to binstring
.
Hey everyone. Thank you for having updated the repo. I was struggling to get it to work when I updated my electron version, but I was able to find out your latest pr.
Is there anyway the version can be updated to 1.0.1 so that yarn recognizes it? if I run yarn install eckey
it just downloads the regular package 1.0, without the latest changes.
If I run yarn add https://github.com/cryptocoinjs/eckey
it does download the updated code, but since another package depends on 1.0.0 it becomes a mess. Thank you!
here is the npm-debug.
looks like there is more than one lib that is not on npm.
0 info it worked if it ends with ok
1 verbose cli [ 'node', '/usr/bin/npm', 'install' ]
2 info using [email protected]
3 info using [email protected]
4 verbose readDependencies using package.json deps
5 verbose install where, deps [ '/home/dominic/c/eckey',
5 verbose install [ 'ecurve',
5 verbose install 'ecurve-names',
5 verbose install 'sha256',
5 verbose install 'ripemd160',
5 verbose install 'convert-hex',
5 verbose install 'btc-address',
5 verbose install 'ecdsa',
5 verbose install 'bigi',
5 verbose install 'bs58',
5 verbose install 'mocha',
5 verbose install 'terst' ] ]
6 info preinstall [email protected]
7 verbose readDependencies using package.json deps
8 verbose already installed skipping [email protected] /home/dominic/c/eckey
9 verbose cache add [ '[email protected]', null ]
10 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
11 verbose parsed url { protocol: null,
11 verbose parsed url slashes: null,
11 verbose parsed url auth: null,
11 verbose parsed url host: null,
11 verbose parsed url port: null,
11 verbose parsed url hostname: null,
11 verbose parsed url hash: null,
11 verbose parsed url search: null,
11 verbose parsed url query: null,
11 verbose parsed url pathname: '[email protected]',
11 verbose parsed url path: '[email protected]',
11 verbose parsed url href: '[email protected]' }
12 verbose cache add name="ecurve" spec="0.1.x" args=["ecurve","0.1.x"]
13 verbose parsed url { protocol: null,
13 verbose parsed url slashes: null,
13 verbose parsed url auth: null,
13 verbose parsed url host: null,
13 verbose parsed url port: null,
13 verbose parsed url hostname: null,
13 verbose parsed url hash: null,
13 verbose parsed url search: null,
13 verbose parsed url query: null,
13 verbose parsed url pathname: '0.1.x',
13 verbose parsed url path: '0.1.x',
13 verbose parsed url href: '0.1.x' }
14 verbose addNamed [ 'ecurve', '0.1.x' ]
15 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
16 verbose cache add [ '[email protected]', null ]
17 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
18 verbose parsed url { protocol: null,
18 verbose parsed url slashes: null,
18 verbose parsed url auth: null,
18 verbose parsed url host: null,
18 verbose parsed url port: null,
18 verbose parsed url hostname: null,
18 verbose parsed url hash: null,
18 verbose parsed url search: null,
18 verbose parsed url query: null,
18 verbose parsed url pathname: '[email protected]',
18 verbose parsed url path: '[email protected]',
18 verbose parsed url href: '[email protected]' }
19 verbose cache add name="ecurve-names" spec="0.1.x" args=["ecurve-names","0.1.x"]
20 verbose parsed url { protocol: null,
20 verbose parsed url slashes: null,
20 verbose parsed url auth: null,
20 verbose parsed url host: null,
20 verbose parsed url port: null,
20 verbose parsed url hostname: null,
20 verbose parsed url hash: null,
20 verbose parsed url search: null,
20 verbose parsed url query: null,
20 verbose parsed url pathname: '0.1.x',
20 verbose parsed url path: '0.1.x',
20 verbose parsed url href: '0.1.x' }
21 verbose addNamed [ 'ecurve-names', '0.1.x' ]
22 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
23 verbose already installed skipping [email protected] /home/dominic/c/eckey
24 silly lockFile 564b5415-ecurve-0-1-x [email protected]
25 verbose lock [email protected] /home/dominic/.npm/564b5415-ecurve-0-1-x.lock
26 silly lockFile 4a302f60-ecurve-names-0-1-x [email protected]
27 verbose lock [email protected] /home/dominic/.npm/4a302f60-ecurve-names-0-1-x.lock
28 verbose already installed skipping [email protected] /home/dominic/c/eckey
29 verbose cache add [ '[email protected]', null ]
30 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
31 verbose parsed url { protocol: null,
31 verbose parsed url slashes: null,
31 verbose parsed url auth: null,
31 verbose parsed url host: null,
31 verbose parsed url port: null,
31 verbose parsed url hostname: null,
31 verbose parsed url hash: null,
31 verbose parsed url search: null,
31 verbose parsed url query: null,
31 verbose parsed url pathname: '[email protected]',
31 verbose parsed url path: '[email protected]',
31 verbose parsed url href: '[email protected]' }
32 verbose cache add name="btc-address" spec="0.1.x" args=["btc-address","0.1.x"]
33 verbose parsed url { protocol: null,
33 verbose parsed url slashes: null,
33 verbose parsed url auth: null,
33 verbose parsed url host: null,
33 verbose parsed url port: null,
33 verbose parsed url hostname: null,
33 verbose parsed url hash: null,
33 verbose parsed url search: null,
33 verbose parsed url query: null,
33 verbose parsed url pathname: '0.1.x',
33 verbose parsed url path: '0.1.x',
33 verbose parsed url href: '0.1.x' }
34 verbose addNamed [ 'btc-address', '0.1.x' ]
35 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
36 silly lockFile fb1fc0ac-btc-address-0-1-x [email protected]
37 verbose lock [email protected] /home/dominic/.npm/fb1fc0ac-btc-address-0-1-x.lock
38 verbose cache add [ '[email protected]', null ]
39 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
40 verbose parsed url { protocol: null,
40 verbose parsed url slashes: null,
40 verbose parsed url auth: null,
40 verbose parsed url host: null,
40 verbose parsed url port: null,
40 verbose parsed url hostname: null,
40 verbose parsed url hash: null,
40 verbose parsed url search: null,
40 verbose parsed url query: null,
40 verbose parsed url pathname: '[email protected]',
40 verbose parsed url path: '[email protected]',
40 verbose parsed url href: '[email protected]' }
41 verbose cache add name="ecdsa" spec="0.2.x" args=["ecdsa","0.2.x"]
42 verbose parsed url { protocol: null,
42 verbose parsed url slashes: null,
42 verbose parsed url auth: null,
42 verbose parsed url host: null,
42 verbose parsed url port: null,
42 verbose parsed url hostname: null,
42 verbose parsed url hash: null,
42 verbose parsed url search: null,
42 verbose parsed url query: null,
42 verbose parsed url pathname: '0.2.x',
42 verbose parsed url path: '0.2.x',
42 verbose parsed url href: '0.2.x' }
43 verbose addNamed [ 'ecdsa', '0.2.x' ]
44 verbose addNamed [ null, '>=0.2.0-0 <0.3.0-0' ]
45 silly lockFile 3c6ddae0-ecdsa-0-2-x [email protected]
46 verbose lock [email protected] /home/dominic/.npm/3c6ddae0-ecdsa-0-2-x.lock
47 verbose already installed skipping bigi@~0.2.0 /home/dominic/c/eckey
48 verbose already installed skipping bs58@~0.2.0 /home/dominic/c/eckey
49 verbose already installed skipping mocha@1.* /home/dominic/c/eckey
50 verbose already installed skipping [email protected] /home/dominic/c/eckey
51 silly addNameRange { name: 'ecurve', range: '>=0.1.0-0 <0.2.0-0', hasData: false }
52 silly addNameRange { name: 'ecurve-names',
52 silly addNameRange range: '>=0.1.0-0 <0.2.0-0',
52 silly addNameRange hasData: false }
53 silly addNameRange { name: 'btc-address',
53 silly addNameRange range: '>=0.1.0-0 <0.2.0-0',
53 silly addNameRange hasData: false }
54 silly addNameRange { name: 'ecdsa', range: '>=0.2.0-0 <0.3.0-0', hasData: false }
55 verbose url raw ecurve
56 verbose url resolving [ 'https://registry.npmjs.org/', './ecurve' ]
57 verbose url resolved https://registry.npmjs.org/ecurve
58 info trying registry request attempt 1 at 18:27:53
59 verbose etag "BAVY2AFI5PFX9YFOYTMMR66LO"
60 http GET https://registry.npmjs.org/ecurve
61 verbose url raw ecurve-names
62 verbose url resolving [ 'https://registry.npmjs.org/', './ecurve-names' ]
63 verbose url resolved https://registry.npmjs.org/ecurve-names
64 info trying registry request attempt 1 at 18:27:53
65 verbose etag "2BR5D4R988VFPZA68K43L9WX1"
66 http GET https://registry.npmjs.org/ecurve-names
67 verbose url raw btc-address
68 verbose url resolving [ 'https://registry.npmjs.org/', './btc-address' ]
69 verbose url resolved https://registry.npmjs.org/btc-address
70 info trying registry request attempt 1 at 18:27:53
71 verbose etag "3FQS539I1KQQ2Q4MVZBOL9C1T"
72 http GET https://registry.npmjs.org/btc-address
73 verbose url raw ecdsa
74 verbose url resolving [ 'https://registry.npmjs.org/', './ecdsa' ]
75 verbose url resolved https://registry.npmjs.org/ecdsa
76 info trying registry request attempt 1 at 18:27:53
77 verbose etag "A2EI2XRUFMPNEKCNAVV3Z9MKS"
78 http GET https://registry.npmjs.org/ecdsa
79 http 304 https://registry.npmjs.org/ecdsa
80 silly registry.get cb [ 304,
80 silly registry.get { date: 'Sun, 19 Jan 2014 11:26:52 GMT',
80 silly registry.get server: 'Apache',
80 silly registry.get connection: 'Keep-Alive',
80 silly registry.get 'keep-alive': 'timeout=10, max=50',
80 silly registry.get etag: '"A2EI2XRUFMPNEKCNAVV3Z9MKS"',
80 silly registry.get vary: 'Accept' } ]
81 verbose etag ecdsa from cache
82 silly addNameRange number 2 { name: 'ecdsa', range: '>=0.2.0-0 <0.3.0-0', hasData: true }
83 silly addNameRange versions [ 'ecdsa', [ '0.1.0', '0.2.0', '0.3.0' ] ]
84 verbose addNamed [ 'ecdsa', '0.2.0' ]
85 verbose addNamed [ '0.2.0', '0.2.0' ]
86 silly lockFile 6649604a-ecdsa-0-2-0 [email protected]
87 verbose lock [email protected] /home/dominic/.npm/6649604a-ecdsa-0-2-0.lock
88 silly lockFile 6649604a-ecdsa-0-2-0 [email protected]
89 silly lockFile 6649604a-ecdsa-0-2-0 [email protected]
90 silly lockFile 3c6ddae0-ecdsa-0-2-x [email protected]
91 silly lockFile 3c6ddae0-ecdsa-0-2-x [email protected]
92 http 304 https://registry.npmjs.org/ecurve
93 silly registry.get cb [ 304,
93 silly registry.get { date: 'Sun, 19 Jan 2014 11:27:02 GMT',
93 silly registry.get server: 'Apache',
93 silly registry.get connection: 'Keep-Alive',
93 silly registry.get 'keep-alive': 'timeout=10, max=50',
93 silly registry.get etag: '"BAVY2AFI5PFX9YFOYTMMR66LO"',
93 silly registry.get vary: 'Accept' } ]
94 verbose etag ecurve from cache
95 silly addNameRange number 2 { name: 'ecurve', range: '>=0.1.0-0 <0.2.0-0', hasData: true }
96 silly addNameRange versions [ 'ecurve', [ '0.1.0', '0.2.0' ] ]
97 verbose addNamed [ 'ecurve', '0.1.0' ]
98 verbose addNamed [ '0.1.0', '0.1.0' ]
99 silly lockFile 75cfa2dc-ecurve-0-1-0 [email protected]
100 verbose lock [email protected] /home/dominic/.npm/75cfa2dc-ecurve-0-1-0.lock
101 silly lockFile 75cfa2dc-ecurve-0-1-0 [email protected]
102 silly lockFile 75cfa2dc-ecurve-0-1-0 [email protected]
103 silly lockFile 564b5415-ecurve-0-1-x [email protected]
104 silly lockFile 564b5415-ecurve-0-1-x [email protected]
105 http 304 https://registry.npmjs.org/ecurve-names
106 silly registry.get cb [ 304,
106 silly registry.get { date: 'Sun, 19 Jan 2014 11:27:04 GMT',
106 silly registry.get server: 'Apache',
106 silly registry.get connection: 'Keep-Alive',
106 silly registry.get 'keep-alive': 'timeout=10, max=50',
106 silly registry.get etag: '"2BR5D4R988VFPZA68K43L9WX1"',
106 silly registry.get vary: 'Accept' } ]
107 verbose etag ecurve-names from cache
108 silly addNameRange number 2 { name: 'ecurve-names',
108 silly addNameRange range: '>=0.1.0-0 <0.2.0-0',
108 silly addNameRange hasData: true }
109 silly addNameRange versions [ 'ecurve-names', [ '0.1.0', '0.1.1', '0.2.0' ] ]
110 verbose addNamed [ 'ecurve-names', '0.1.1' ]
111 verbose addNamed [ '0.1.1', '0.1.1' ]
112 silly lockFile ea101506-ecurve-names-0-1-1 [email protected]
113 verbose lock [email protected] /home/dominic/.npm/ea101506-ecurve-names-0-1-1.lock
114 http 304 https://registry.npmjs.org/btc-address
115 silly registry.get cb [ 304,
115 silly registry.get { date: 'Sun, 19 Jan 2014 11:27:04 GMT',
115 silly registry.get server: 'Apache',
115 silly registry.get connection: 'Keep-Alive',
115 silly registry.get 'keep-alive': 'timeout=10, max=50',
115 silly registry.get etag: '"3FQS539I1KQQ2Q4MVZBOL9C1T"',
115 silly registry.get vary: 'Accept' } ]
116 verbose etag btc-address from cache
117 silly addNameRange number 2 { name: 'btc-address',
117 silly addNameRange range: '>=0.1.0-0 <0.2.0-0',
117 silly addNameRange hasData: true }
118 silly addNameRange versions [ 'btc-address', [ '0.1.0', '0.2.0' ] ]
119 verbose addNamed [ 'btc-address', '0.1.0' ]
120 verbose addNamed [ '0.1.0', '0.1.0' ]
121 silly lockFile dd5dbc9c-btc-address-0-1-0 [email protected]
122 verbose lock [email protected] /home/dominic/.npm/dd5dbc9c-btc-address-0-1-0.lock
123 silly lockFile ea101506-ecurve-names-0-1-1 [email protected]
124 silly lockFile ea101506-ecurve-names-0-1-1 [email protected]
125 silly lockFile 4a302f60-ecurve-names-0-1-x [email protected]
126 silly lockFile 4a302f60-ecurve-names-0-1-x [email protected]
127 silly lockFile dd5dbc9c-btc-address-0-1-0 [email protected]
128 silly lockFile dd5dbc9c-btc-address-0-1-0 [email protected]
129 silly lockFile fb1fc0ac-btc-address-0-1-x [email protected]
130 silly lockFile fb1fc0ac-btc-address-0-1-x [email protected]
131 silly resolved [ { name: 'ecdsa',
131 silly resolved version: '0.2.0',
131 silly resolved description: 'Elliptical Curve Cryptography Digital Signing',
131 silly resolved keywords:
131 silly resolved [ 'cryptography',
131 silly resolved 'crypto',
131 silly resolved 'bitcoin',
131 silly resolved 'litecoin',
131 silly resolved 'elliptical',
131 silly resolved 'curve',
131 silly resolved 'digital',
131 silly resolved 'sign',
131 silly resolved 'signing' ],
131 silly resolved devDependencies:
131 silly resolved { mocha: '1.*',
131 silly resolved terst: '0.0.1',
131 silly resolved sha256: '~0.1.0',
131 silly resolved 'secure-random': '0.0.1' },
131 silly resolved repository: { url: 'https://github.com/cryptocoinjs/ecdsa', type: 'git' },
131 silly resolved main: './lib/ecdsa.js',
131 silly resolved dependencies:
131 silly resolved { 'cryptocoin-bigint': '~0.1.0',
131 silly resolved ecurve: '~0.1.0',
131 silly resolved 'ecurve-names': '~0.1.1',
131 silly resolved 'secure-random': '0.0.x' },
131 silly resolved readme: 'ecdsa\n======\n\nJavaScript component to Elliptical Curve Cryptography signing and verify.\n\n\nSee this article for more details: [bitcoin address](http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript).\n\n\n\nInstall\n-------\n\n### Node.js/Browserify\n\n npm install --save ecdsa\n\n### Component\n\n component install cryptocoinjs/ecdsa\n\n\n### Bower\n\n bower install ecdsa\n\n\n### Script\n\n```html\n<script src="/path/to/ecdsa.js"></script>\n```\n\n\nExample\n-------\n\n```js\nvar ecdsa = require(\'../lib/ecdsa\')\n , sha256 = require(\'sha256\')\n , secureRandom = require(\'secure-random\')\n , ecparams = require(\'ecurve-names\')(\'secp256k1\')\n , BigInteger = require(\'cryptocoin-bigint\')\n\nvar randArr = secureRandom(32, {array: true})\nvar privKey = BigInteger.fromByteArrayUnsigned(randArr)\n//var privKey = ecdsa.getBigRandom(ecparams.getN())\nvar pubPoint = ecparams.getG().multiply(privKey)\nvar pubKey = pubPoint.getEncoded(false) //true => compressed, fails though, must investigate\nvar msg = "hello world!"\nvar shaMsg = sha256(msg)\nvar signature = ecdsa.sign(shaMsg, privKey)\nvar isValid = ecdsa.verify(shaMsg, signature, pubKey)\nconsole.log(isValid) //true\n```\n\n\nCredits\n-------\n\nIt\'s not clear to me if this is based upon Tom Wu\'s work or Stefen Thomas. \n\n\n\n',
131 silly resolved readmeFilename: 'README.md',
131 silly resolved bugs: { url: 'https://github.com/cryptocoinjs/ecdsa/issues' },
131 silly resolved homepage: 'https://github.com/cryptocoinjs/ecdsa',
131 silly resolved _id: '[email protected]',
131 silly resolved _from: '[email protected]' },
131 silly resolved { name: 'ecurve',
131 silly resolved version: '0.1.0',
131 silly resolved description: 'Elliptic curve cryptography',
131 silly resolved keywords:
131 silly resolved [ 'cryptography',
131 silly resolved 'crypto',
131 silly resolved 'bitcoin',
131 silly resolved 'litecoin',
131 silly resolved 'eliptical',
131 silly resolved 'curve' ],
131 silly resolved devDependencies: { mocha: '1.*', terst: '0.0.1' },
131 silly resolved repository: { url: 'https://github.com/cryptocoinjs/ecurve', type: 'git' },
131 silly resolved main: './lib/ecurve.js',
131 silly resolved dependencies: { 'cryptocoin-bigint': '0.1.x' },
131 silly resolved readme: 'ecc\n===\n\nJavaScript component to [Elliptical Curve Cryptography]().\n\nSee this article for more details: [bitcoin address](http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript).\n\n\n\nInstall\n-------\n\n### Node.js/Browserify\n\n npm install --save ecurve\n\n### Component\n\n component install cryptocoinjs/ecurve\n\n\n### Bower\n\n bower install ecurve\n\n\n### Script\n\n```html\n<script src="/path/to/ecurve.js"></script>\n```\n\n\nUsage\n-----\n\nhttp://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript\n\n\nCredits\n-------\n\nIt\'s not clear to me if this is based upon Tom Wu\'s work or Stefen Thomas. \n\n\n\n',
131 silly resolved readmeFilename: 'README.md',
131 silly resolved bugs: { url: 'https://github.com/cryptocoinjs/ecurve/issues' },
131 silly resolved homepage: 'https://github.com/cryptocoinjs/ecurve',
131 silly resolved _id: '[email protected]',
131 silly resolved _from: '[email protected]' },
131 silly resolved { name: 'ecurve-names',
131 silly resolved version: '0.1.1',
131 silly resolved description: 'Elliptical Curve Cryptography Named Parameters',
131 silly resolved keywords:
131 silly resolved [ 'cryptography',
131 silly resolved 'crypto',
131 silly resolved 'bitcoin',
131 silly resolved 'litecoin',
131 silly resolved 'eliptical',
131 silly resolved 'curve' ],
131 silly resolved devDependencies: { mocha: '1.*', terst: '0.0.1' },
131 silly resolved repository:
131 silly resolved { url: 'https://github.com/cryptocoinjs/ecurve-names',
131 silly resolved type: 'git' },
131 silly resolved main: './lib/ecurve-names.js',
131 silly resolved dependencies: { 'cryptocoin-bigint': '0.1.x', ecurve: '0.1.x' },
131 silly resolved readme: 'ecc-named\n=========\n\nJavaScript component to [Elliptical Curve Cryptography]() named parameters from http://www.secg.org/collateral/sec2_final.pdf\n\nAMD/CommonJS compatible.\n\nSee this article for more details: [bitcoin address](http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript).\n\n\n\nInstall\n-------\n\n### Node.js/Browserify\n\n npm install --save ecurve-names\n\n### Component\n\n component install ecurve-names\n\n\n### Bower\n\n bower install ecurve-names\n\n\n### Script\n\n```html\n<script src="/path/to/ecurve-names.js"></script>\n```\n\n\nUsage\n-----\n\nhttp://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript\n\n```js\nvar getSECCurveByName = require(\'ecurve-names\')\n```\n\n\nCredits\n-------\n\nIt\'s not clear to me if this is based upon Tom Wu\'s work or Stefen Thomas. \n\n\n\n',
131 silly resolved readmeFilename: 'README.md',
131 silly resolved bugs: { url: 'https://github.com/cryptocoinjs/ecurve-names/issues' },
131 silly resolved homepage: 'https://github.com/cryptocoinjs/ecurve-names',
131 silly resolved _id: '[email protected]',
131 silly resolved _from: '[email protected]' },
131 silly resolved { name: 'btc-address',
131 silly resolved version: '0.1.0',
131 silly resolved description: 'Manage Bitcoin addresses',
131 silly resolved keywords:
131 silly resolved [ 'cryptography',
131 silly resolved 'crypto',
131 silly resolved 'bitcoin',
131 silly resolved 'litecoin',
131 silly resolved 'currency',
131 silly resolved 'cryptocurrency' ],
131 silly resolved devDependencies: { mocha: '1.*', terst: '0.0.1', 'convert-hex': '0.1.x' },
131 silly resolved repository:
131 silly resolved { url: 'https://github.com/cryptocoinjs/btc-address',
131 silly resolved type: 'git' },
131 silly resolved main: './lib/address.js',
131 silly resolved dependencies: { sha256: '0.1.x', 'cryptocoin-base58': '0.1.x' },
131 silly resolved readme: 'Bitcoin Address\n===============\n\nJavaScript component to handle Bitcoin addresses.\n\nAMD/CommonJS compatible.\n\nSee this article for more details: [bitcoin address](http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript).\n\nSee for more modifications: https://github.com/vbuterin/bitcoinjs-lib/blob/master/src/address.js\n\n\nInstall\n-------\n\n### Node.js/Browserify\n\n npm install --save btc-address\n\n### Component\n\n component install cryptocoinjs/btc-address\n\n\n### Bower\n\n bower install btc-address\n\n\n### Script\n\n```html\n<script src="/path/to/btc-address.js"></script>\n```\n\n\nUsage\n-----\n\nhttp://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript\n\n```js\nvar Address = require(\'cryptocoin-address-btc\')\nvar conv = require(\'cryptocoin-convert-hex\')\n\nvar hash160 = "3c176e659bea0f29a3e9bf7880c112b1b31b4dc8"\nvar address = new Address(conv.hexToBytes(hash160), \'prod\') //\'testnet is also valid\'\nconsole.log(address.toString()) //16UjcYNBG9GTK4uq2f7yYEbuifqCzoLMGS\n```\n\n\nCredits\n-------\n\nMost of the code from Stefan Thomas in https://github.com/bitcoinjs/bitcoinjs-lib with modifications from Roman Shtylman\n\n\nLicense\n-------\n\n(MIT License)\n\nCopyright 2013, JP Richardson <[email protected]>\n\n',
131 silly resolved readmeFilename: 'README.md',
131 silly resolved bugs: { url: 'https://github.com/cryptocoinjs/btc-address/issues' },
131 silly resolved homepage: 'https://github.com/cryptocoinjs/btc-address',
131 silly resolved _id: '[email protected]',
131 silly resolved _from: '[email protected]' } ]
132 info install [email protected] into /home/dominic/c/eckey
133 info install [email protected] into /home/dominic/c/eckey
134 info install [email protected] into /home/dominic/c/eckey
135 info install [email protected] into /home/dominic/c/eckey
136 info installOne [email protected]
137 info installOne [email protected]
138 info installOne [email protected]
139 info installOne [email protected]
140 info /home/dominic/c/eckey/node_modules/ecdsa unbuild
141 info /home/dominic/c/eckey/node_modules/ecurve unbuild
142 info /home/dominic/c/eckey/node_modules/ecurve-names unbuild
143 info /home/dominic/c/eckey/node_modules/btc-address unbuild
144 verbose tar unpack /home/dominic/.npm/ecdsa/0.2.0/package.tgz
145 silly lockFile 54e1db04-minic-c-eckey-node-modules-ecdsa tar:///home/dominic/c/eckey/node_modules/ecdsa
146 verbose lock tar:///home/dominic/c/eckey/node_modules/ecdsa /home/dominic/.npm/54e1db04-minic-c-eckey-node-modules-ecdsa.lock
147 silly lockFile b7ef3139-inic-npm-ecdsa-0-2-0-package-tgz tar:///home/dominic/.npm/ecdsa/0.2.0/package.tgz
148 verbose lock tar:///home/dominic/.npm/ecdsa/0.2.0/package.tgz /home/dominic/.npm/b7ef3139-inic-npm-ecdsa-0-2-0-package-tgz.lock
149 verbose tar unpack /home/dominic/.npm/ecurve/0.1.0/package.tgz
150 silly lockFile 0025ccb3-inic-c-eckey-node-modules-ecurve tar:///home/dominic/c/eckey/node_modules/ecurve
151 verbose lock tar:///home/dominic/c/eckey/node_modules/ecurve /home/dominic/.npm/0025ccb3-inic-c-eckey-node-modules-ecurve.lock
152 silly lockFile fc786d04-nic-npm-ecurve-0-1-0-package-tgz tar:///home/dominic/.npm/ecurve/0.1.0/package.tgz
153 verbose lock tar:///home/dominic/.npm/ecurve/0.1.0/package.tgz /home/dominic/.npm/fc786d04-nic-npm-ecurve-0-1-0-package-tgz.lock
154 verbose tar unpack /home/dominic/.npm/ecurve-names/0.1.1/package.tgz
155 silly lockFile 776885fa--eckey-node-modules-ecurve-names tar:///home/dominic/c/eckey/node_modules/ecurve-names
156 verbose lock tar:///home/dominic/c/eckey/node_modules/ecurve-names /home/dominic/.npm/776885fa--eckey-node-modules-ecurve-names.lock
157 silly lockFile cac2b270-m-ecurve-names-0-1-1-package-tgz tar:///home/dominic/.npm/ecurve-names/0.1.1/package.tgz
158 verbose lock tar:///home/dominic/.npm/ecurve-names/0.1.1/package.tgz /home/dominic/.npm/cac2b270-m-ecurve-names-0-1-1-package-tgz.lock
159 verbose tar unpack /home/dominic/.npm/btc-address/0.1.0/package.tgz
160 silly lockFile 3a48feb6-c-eckey-node-modules-btc-address tar:///home/dominic/c/eckey/node_modules/btc-address
161 verbose lock tar:///home/dominic/c/eckey/node_modules/btc-address /home/dominic/.npm/3a48feb6-c-eckey-node-modules-btc-address.lock
162 silly lockFile 83cac444-pm-btc-address-0-1-0-package-tgz tar:///home/dominic/.npm/btc-address/0.1.0/package.tgz
163 verbose lock tar:///home/dominic/.npm/btc-address/0.1.0/package.tgz /home/dominic/.npm/83cac444-pm-btc-address-0-1-0-package-tgz.lock
164 silly gunzTarPerm modes [ '755', '644' ]
165 silly gunzTarPerm modes [ '755', '644' ]
166 silly gunzTarPerm modes [ '755', '644' ]
167 silly gunzTarPerm modes [ '755', '644' ]
168 silly gunzTarPerm extractEntry package.json
169 silly gunzTarPerm extractEntry package.json
170 silly gunzTarPerm extractEntry package.json
171 silly gunzTarPerm extractEntry package.json
172 silly gunzTarPerm extractEntry .npmignore
173 silly gunzTarPerm extractEntry README.md
174 silly gunzTarPerm extractEntry .npmignore
175 silly gunzTarPerm extractEntry README.md
176 silly gunzTarPerm extractEntry .npmignore
177 silly gunzTarPerm extractEntry README.md
178 silly gunzTarPerm extractEntry .npmignore
179 silly gunzTarPerm extractEntry README.md
180 silly gunzTarPerm extractEntry CHANGELOG.md
181 silly gunzTarPerm extractEntry lib/ecurve.js
182 silly gunzTarPerm extractEntry CHANGELOG.md
183 silly gunzTarPerm extractEntry lib/ecdsa.js
184 silly gunzTarPerm extractEntry CHANGELOG.md
185 silly gunzTarPerm extractEntry lib/ecurve-names.js
186 silly gunzTarPerm extractEntry CHANGELOG.md
187 silly gunzTarPerm extractEntry lib/address.js
188 silly lockFile 3a48feb6-c-eckey-node-modules-btc-address tar:///home/dominic/c/eckey/node_modules/btc-address
189 silly lockFile 3a48feb6-c-eckey-node-modules-btc-address tar:///home/dominic/c/eckey/node_modules/btc-address
190 silly lockFile 83cac444-pm-btc-address-0-1-0-package-tgz tar:///home/dominic/.npm/btc-address/0.1.0/package.tgz
191 silly lockFile 83cac444-pm-btc-address-0-1-0-package-tgz tar:///home/dominic/.npm/btc-address/0.1.0/package.tgz
192 info preinstall [email protected]
193 silly lockFile 54e1db04-minic-c-eckey-node-modules-ecdsa tar:///home/dominic/c/eckey/node_modules/ecdsa
194 silly lockFile 54e1db04-minic-c-eckey-node-modules-ecdsa tar:///home/dominic/c/eckey/node_modules/ecdsa
195 silly lockFile 776885fa--eckey-node-modules-ecurve-names tar:///home/dominic/c/eckey/node_modules/ecurve-names
196 silly lockFile 776885fa--eckey-node-modules-ecurve-names tar:///home/dominic/c/eckey/node_modules/ecurve-names
197 silly lockFile b7ef3139-inic-npm-ecdsa-0-2-0-package-tgz tar:///home/dominic/.npm/ecdsa/0.2.0/package.tgz
198 silly lockFile b7ef3139-inic-npm-ecdsa-0-2-0-package-tgz tar:///home/dominic/.npm/ecdsa/0.2.0/package.tgz
199 silly lockFile cac2b270-m-ecurve-names-0-1-1-package-tgz tar:///home/dominic/.npm/ecurve-names/0.1.1/package.tgz
200 silly lockFile cac2b270-m-ecurve-names-0-1-1-package-tgz tar:///home/dominic/.npm/ecurve-names/0.1.1/package.tgz
201 verbose readDependencies using package.json deps
202 verbose readDependencies using package.json deps
203 info preinstall [email protected]
204 info preinstall [email protected]
205 verbose cache add [ '[email protected]', null ]
206 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
207 verbose parsed url { protocol: null,
207 verbose parsed url slashes: null,
207 verbose parsed url auth: null,
207 verbose parsed url host: null,
207 verbose parsed url port: null,
207 verbose parsed url hostname: null,
207 verbose parsed url hash: null,
207 verbose parsed url search: null,
207 verbose parsed url query: null,
207 verbose parsed url pathname: '[email protected]',
207 verbose parsed url path: '[email protected]',
207 verbose parsed url href: '[email protected]' }
208 verbose cache add name="cryptocoin-base58" spec="0.1.x" args=["cryptocoin-base58","0.1.x"]
209 verbose parsed url { protocol: null,
209 verbose parsed url slashes: null,
209 verbose parsed url auth: null,
209 verbose parsed url host: null,
209 verbose parsed url port: null,
209 verbose parsed url hostname: null,
209 verbose parsed url hash: null,
209 verbose parsed url search: null,
209 verbose parsed url query: null,
209 verbose parsed url pathname: '0.1.x',
209 verbose parsed url path: '0.1.x',
209 verbose parsed url href: '0.1.x' }
210 verbose addNamed [ 'cryptocoin-base58', '0.1.x' ]
211 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
212 silly lockFile 2a0a2b0c-cryptocoin-base58-0-1-x [email protected]
213 verbose lock [email protected] /home/dominic/.npm/2a0a2b0c-cryptocoin-base58-0-1-x.lock
214 verbose readDependencies using package.json deps
215 verbose readDependencies using package.json deps
216 silly addNameRange { name: 'cryptocoin-base58',
216 silly addNameRange range: '>=0.1.0-0 <0.2.0-0',
216 silly addNameRange hasData: false }
217 verbose readDependencies using package.json deps
218 verbose readDependencies using package.json deps
219 verbose url raw cryptocoin-base58
220 verbose url resolving [ 'https://registry.npmjs.org/', './cryptocoin-base58' ]
221 verbose url resolved https://registry.npmjs.org/cryptocoin-base58
222 info trying registry request attempt 1 at 18:28:08
223 http GET https://registry.npmjs.org/cryptocoin-base58
224 verbose cache add [ '[email protected]', null ]
225 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
226 verbose parsed url { protocol: null,
226 verbose parsed url slashes: null,
226 verbose parsed url auth: null,
226 verbose parsed url host: null,
226 verbose parsed url port: null,
226 verbose parsed url hostname: null,
226 verbose parsed url hash: null,
226 verbose parsed url search: null,
226 verbose parsed url query: null,
226 verbose parsed url pathname: '[email protected]',
226 verbose parsed url path: '[email protected]',
226 verbose parsed url href: '[email protected]' }
227 verbose cache add name="cryptocoin-bigint" spec="0.1.x" args=["cryptocoin-bigint","0.1.x"]
228 verbose parsed url { protocol: null,
228 verbose parsed url slashes: null,
228 verbose parsed url auth: null,
228 verbose parsed url host: null,
228 verbose parsed url port: null,
228 verbose parsed url hostname: null,
228 verbose parsed url hash: null,
228 verbose parsed url search: null,
228 verbose parsed url query: null,
228 verbose parsed url pathname: '0.1.x',
228 verbose parsed url path: '0.1.x',
228 verbose parsed url href: '0.1.x' }
229 verbose addNamed [ 'cryptocoin-bigint', '0.1.x' ]
230 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
231 silly lockFile b1a5085e-cryptocoin-bigint-0-1-x [email protected]
232 verbose lock [email protected] /home/dominic/.npm/b1a5085e-cryptocoin-bigint-0-1-x.lock
233 silly addNameRange { name: 'cryptocoin-bigint',
233 silly addNameRange range: '>=0.1.0-0 <0.2.0-0',
233 silly addNameRange hasData: false }
234 verbose url raw cryptocoin-bigint
235 verbose url resolving [ 'https://registry.npmjs.org/', './cryptocoin-bigint' ]
236 verbose url resolved https://registry.npmjs.org/cryptocoin-bigint
237 info trying registry request attempt 1 at 18:28:08
238 http GET https://registry.npmjs.org/cryptocoin-bigint
239 verbose cache add [ 'cryptocoin-bigint@~0.1.0', null ]
240 verbose cache add name=undefined spec="cryptocoin-bigint@~0.1.0" args=["cryptocoin-bigint@~0.1.0",null]
241 verbose parsed url { protocol: null,
241 verbose parsed url slashes: null,
241 verbose parsed url auth: null,
241 verbose parsed url host: null,
241 verbose parsed url port: null,
241 verbose parsed url hostname: null,
241 verbose parsed url hash: null,
241 verbose parsed url search: null,
241 verbose parsed url query: null,
241 verbose parsed url pathname: 'cryptocoin-bigint@~0.1.0',
241 verbose parsed url path: 'cryptocoin-bigint@~0.1.0',
241 verbose parsed url href: 'cryptocoin-bigint@~0.1.0' }
242 verbose cache add name="cryptocoin-bigint" spec="~0.1.0" args=["cryptocoin-bigint","~0.1.0"]
243 verbose parsed url { protocol: null,
243 verbose parsed url slashes: null,
243 verbose parsed url auth: null,
243 verbose parsed url host: null,
243 verbose parsed url port: null,
243 verbose parsed url hostname: null,
243 verbose parsed url hash: null,
243 verbose parsed url search: null,
243 verbose parsed url query: null,
243 verbose parsed url pathname: '~0.1.0',
243 verbose parsed url path: '~0.1.0',
243 verbose parsed url href: '~0.1.0' }
244 verbose addNamed [ 'cryptocoin-bigint', '~0.1.0' ]
245 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]
246 silly lockFile cd7dc585-cryptocoin-bigint-0-1-0 cryptocoin-bigint@~0.1.0
247 verbose lock cryptocoin-bigint@~0.1.0 /home/dominic/.npm/cd7dc585-cryptocoin-bigint-0-1-0.lock
248 verbose cache add [ '[email protected]', null ]
249 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
250 verbose parsed url { protocol: null,
250 verbose parsed url slashes: null,
250 verbose parsed url auth: null,
250 verbose parsed url host: null,
250 verbose parsed url port: null,
250 verbose parsed url hostname: null,
250 verbose parsed url hash: null,
250 verbose parsed url search: null,
250 verbose parsed url query: null,
250 verbose parsed url pathname: '[email protected]',
250 verbose parsed url path: '[email protected]',
250 verbose parsed url href: '[email protected]' }
251 verbose cache add name="secure-random" spec="0.0.x" args=["secure-random","0.0.x"]
252 verbose parsed url { protocol: null,
252 verbose parsed url slashes: null,
252 verbose parsed url auth: null,
252 verbose parsed url host: null,
252 verbose parsed url port: null,
252 verbose parsed url hostname: null,
252 verbose parsed url hash: null,
252 verbose parsed url search: null,
252 verbose parsed url query: null,
252 verbose parsed url pathname: '0.0.x',
252 verbose parsed url path: '0.0.x',
252 verbose parsed url href: '0.0.x' }
253 verbose addNamed [ 'secure-random', '0.0.x' ]
254 verbose addNamed [ null, '>=0.0.0-0 <0.1.0-0' ]
255 silly lockFile 0ac16206-secure-random-0-0-x [email protected]
256 verbose lock [email protected] /home/dominic/.npm/0ac16206-secure-random-0-0-x.lock
257 silly addNameRange { name: 'cryptocoin-bigint',
257 silly addNameRange range: '>=0.1.0-0 <0.2.0-0',
257 silly addNameRange hasData: false }
258 silly addNameRange { name: 'secure-random',
258 silly addNameRange range: '>=0.0.0-0 <0.1.0-0',
258 silly addNameRange hasData: false }
259 silly lockFile 0025ccb3-inic-c-eckey-node-modules-ecurve tar:///home/dominic/c/eckey/node_modules/ecurve
260 silly lockFile 0025ccb3-inic-c-eckey-node-modules-ecurve tar:///home/dominic/c/eckey/node_modules/ecurve
261 verbose url raw cryptocoin-bigint
262 verbose url resolving [ 'https://registry.npmjs.org/', './cryptocoin-bigint' ]
263 verbose url resolved https://registry.npmjs.org/cryptocoin-bigint
264 info trying registry request attempt 1 at 18:28:08
265 http GET https://registry.npmjs.org/cryptocoin-bigint
266 silly lockFile fc786d04-nic-npm-ecurve-0-1-0-package-tgz tar:///home/dominic/.npm/ecurve/0.1.0/package.tgz
267 silly lockFile fc786d04-nic-npm-ecurve-0-1-0-package-tgz tar:///home/dominic/.npm/ecurve/0.1.0/package.tgz
268 verbose url raw secure-random
269 verbose url resolving [ 'https://registry.npmjs.org/', './secure-random' ]
270 verbose url resolved https://registry.npmjs.org/secure-random
271 info trying registry request attempt 1 at 18:28:08
272 verbose etag "7DM8QRK83EAKXFAK22TG1WIGL"
273 http GET https://registry.npmjs.org/secure-random
274 info preinstall [email protected]
275 verbose readDependencies using package.json deps
276 verbose readDependencies using package.json deps
277 verbose cache add [ '[email protected]', null ]
278 verbose cache add name=undefined spec="[email protected]" args=["[email protected]",null]
279 verbose parsed url { protocol: null,
279 verbose parsed url slashes: null,
279 verbose parsed url auth: null,
279 verbose parsed url host: null,
279 verbose parsed url port: null,
279 verbose parsed url hostname: null,
279 verbose parsed url hash: null,
279 verbose parsed url search: null,
279 verbose parsed url query: null,
279 verbose parsed url pathname: '[email protected]',
279 verbose parsed url path: '[email protected]',
279 verbose parsed url href: '[email protected]' }
280 verbose cache add name="cryptocoin-bigint" spec="0.1.x" args=["cryptocoin-bigint","0.1.x"]
281 verbose parsed url { protocol: null,
281 verbose parsed url slashes: null,
281 verbose parsed url auth: null,
281 verbose parsed url host: null,
281 verbose parsed url port: null,
281 verbose parsed url hostname: null,
281 verbose parsed url hash: null,
281 verbose parsed url search: null,
281 verbose parsed url query: null,
281 verbose parsed url pathname: '0.1.x',
281 verbose parsed url path: '0.1.x',
281 verbose parsed url href: '0.1.x' }
282 verbose addNamed [ 'cryptocoin-bigint', '0.1.x' ]
283 http 404 https://registry.npmjs.org/cryptocoin-bigint
284 silly registry.get cb [ 404,
284 silly registry.get { date: 'Sun, 19 Jan 2014 11:27:08 GMT',
284 silly registry.get server: 'CouchDB/1.5.0 (Erlang OTP/R15B03)',
284 silly registry.get 'content-type': 'application/json',
284 silly registry.get 'cache-control': 'max-age=0',
284 silly registry.get 'content-length': '52',
284 silly registry.get 'accept-ranges': 'bytes',
284 silly registry.get via: '1.1 varnish',
284 silly registry.get age: '0',
284 silly registry.get 'x-served-by': 'cache-hk90-HKG',
284 silly registry.get 'x-cache': 'MISS',
284 silly registry.get 'x-cache-hits': '0',
284 silly registry.get 'x-timer': 'S1390130828.016255379,VS0,VE216',
284 silly registry.get 'keep-alive': 'timeout=10, max=50',
284 silly registry.get connection: 'Keep-Alive' } ]
285 silly lockFile b1a5085e-cryptocoin-bigint-0-1-x [email protected]
286 silly lockFile b1a5085e-cryptocoin-bigint-0-1-x [email protected]
287 verbose about to build /home/dominic/c/eckey/node_modules/ecurve-names
288 info /home/dominic/c/eckey/node_modules/ecurve-names unbuild
289 verbose about to build /home/dominic/c/eckey/node_modules/ecurve
290 info /home/dominic/c/eckey/node_modules/ecurve unbuild
291 info preuninstall [email protected]
292 info preuninstall [email protected]
293 info uninstall [email protected]
294 info uninstall [email protected]
295 verbose true,/home/dominic/c/eckey/node_modules,/home/dominic/c/eckey/node_modules unbuild [email protected]
296 info postuninstall [email protected]
297 verbose true,/home/dominic/c/eckey/node_modules,/home/dominic/c/eckey/node_modules unbuild [email protected]
298 info postuninstall [email protected]
299 error 404 'cryptocoin-bigint' is not in the npm registry.
299 error 404 You should bug the author to publish it
299 error 404
299 error 404 Note that you can also install from a
299 error 404 tarball, folder, or http url, or git url.
300 error System Linux 3.11.6-1-ARCH
301 error command "node" "/usr/bin/npm" "install"
302 error cwd /home/dominic/c/eckey
303 error node -v v0.10.21
304 error npm -v 1.3.21
305 error code E404
306 verbose exit [ 1, true ]
We decided to focus on NodeJS as primary environment, utilizing Browserify to make components browser-friendly. This module still needs to be stripped of the extra interface boilerplate to make that transition.
A JavaScript component for Eliptical curve cryptography for crypto currencies such as Litecoin and Bitcoin
s/Eliptical/Elliptical
Hi. Sorry for the stupid question.
Wikipedia article on ECDSA says that dA
(private key) must be in the interval [1, n - 1]
(n = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141
for secp256k1) but I can't find any checkings inside the library to ensure that given private key is in this range. Does it mean that library user should check it by himself?
I took a glance at another ECDSA implementation and it provides this checkings but the result of getting public key from private key = 2^256 - 1
tends to be the same.
Your great article also mentions this problem:
You'll notice that we generate 32 random values. And
n
does not have a maximum of2^256โ1
, so it's theoretically possible to generate a key larger than the standard dictates. However, in practice, you really don't have to worry about it.
but doesn't elaborate it further. Could you please explain it? Thanks.
I feel like that since this library is meant to be a low level library so developers to build applications on top of. We should not put too many layers of abstraction over it.
https://github.com/cryptocoinjs/eckey/blob/master/lib/eckey.js#L74
When using this library in production, if i do
new ECKey('SomeTestnetPrivKey')
Should not be able sucessfully parse the string, I think we shouldn't automatically detect whether it is testnet or mainnet key, and rather let user to specify and inform the user if a testnet key somehow got into the mainnet environment.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.