Commit Graph

220 Commits

Author SHA1 Message Date
Ryan X. Charles
0212e4bd4c replace .buffer with .read 2014-09-17 15:49:45 -07:00
Ryan X. Charles
8e049b7244 smarter 2014-09-17 15:44:59 -07:00
Ryan X. Charles
6cee393c5d put brains in read 2014-09-17 15:43:15 -07:00
Ryan X. Charles
6e1dfd3003 allow bufferreader.read to specify length
...to be more symmetric with the write function of bufferwriter
2014-09-17 15:41:30 -07:00
Ryan X. Charles
7918f53f12 bnjs -> BN ... for consistency 2014-09-17 15:32:58 -07:00
Ryan X. Charles
aee8547093 add fromString method for library consistency 2014-09-17 15:32:14 -07:00
Ryan X. Charles
6494ca5076 convenience: varint -> vi 2014-09-17 15:27:12 -07:00
Ryan X. Charles
0eeba8eadb canonical BN notation 2014-09-17 15:22:52 -07:00
Ryan X. Charles
5f21059bf8 more convenient names 2014-09-17 15:20:01 -07:00
Ryan X. Charles
eb34a16511 more convenient name 2014-09-17 15:17:54 -07:00
Ryan X. Charles
9473bdf9b0 more convenient name 2014-09-17 15:15:56 -07:00
Ryan X. Charles
bd16eddf54 Key -> Keypair 2014-09-17 15:13:57 -07:00
Ryan X. Charles
7390b15f89 add set function to bip32 2014-09-17 15:11:16 -07:00
Ryan X. Charles
0641184e84 support string input in constructor 2014-09-17 15:02:11 -07:00
Ryan X. Charles
c41419b6ef use buffer functions
...instead of adhoc uint functions
2014-09-17 14:49:17 -07:00
Ryan X. Charles
5da964739d remove unused base58 dependency 2014-09-17 14:44:16 -07:00
Ryan X. Charles
9e188574f7 base58check in extendedPrivateKeyString 2014-09-17 14:43:14 -07:00
Ryan X. Charles
70d9f0db93 use base58check in extendedPublicKeyString 2014-09-17 14:41:51 -07:00
Ryan X. Charles
70659ad9d4 use base58check in fromString 2014-09-17 14:40:29 -07:00
Ryan X. Charles
334c443d8b "gc" was some find-replace error from earlier 2014-09-17 14:37:53 -07:00
Ryan X. Charles
af6932a313 console.log?
this must have been a remnant of some earlier debugging, either in bitcore2 or
in bitcore.
2014-09-17 14:35:20 -07:00
Ryan X. Charles
78ef76eb2f more convenient constructor
...allow inputing strings or buffers in the constructor.
2014-09-17 14:29:53 -07:00
Ryan X. Charles
40ea68a3ff more convenient Base58 constructor 2014-09-17 14:26:19 -07:00
Ryan X. Charles
ac85264a28 Address().fromBuffer(buf); 2014-09-17 14:22:18 -07:00
Ryan X. Charles
8a52e6c316 Block 2014-09-16 18:42:11 -07:00
Ryan X. Charles
0d180810de Blockheader 2014-09-16 17:28:00 -07:00
Ryan X. Charles
5b25679e15 Transaction 2014-09-16 14:35:26 -07:00
Ryan X. Charles
6c42969d01 improve error message 2014-09-16 11:44:51 -07:00
Ryan X. Charles
6e9755b009 sign, verify convenience functions 2014-09-16 11:34:28 -07:00
Ryan X. Charles
ed335f35f7 throw error if hashbuf is not 32 bytes 2014-09-16 11:33:49 -07:00
Ryan X. Charles
3daeabaf30 "undefined"s are unnecessary 2014-09-16 10:10:06 -07:00
Ryan X. Charles
ced35a07eb Txout 2014-09-15 18:38:21 -07:00
Ryan X. Charles
42130c78a0 Txin 2014-09-15 17:08:09 -07:00
Ryan X. Charles
4594cbb9e7 add bn support to varint class 2014-09-15 15:29:39 -07:00
Ryan X. Charles
f6a8878aa2 Varint class
...will be useful in transactions. Note that we already have a primitive
understanding of Varints in the BufferReader and BufferWriter classes. However,
the new Varint class is a varint object which actually depends on BufferReader
and BufferWriter for reading and writing varints. This class is for keeping
track of the raw buffer that is read in from a buffer.
2014-09-15 15:05:54 -07:00
Ryan X. Charles
54e705f7e8 missing semicolon 2014-09-15 14:53:42 -07:00
Ryan X. Charles
9cb31ebb6a extra semicolon 2014-09-15 14:52:43 -07:00
Ryan X. Charles
4bb9105b2d varInt -> varint
I don't like having to capitalize things unnecessarily
2014-09-15 14:41:46 -07:00
Ryan X. Charles
30c96721a0 varIntNum 2014-09-15 14:36:31 -07:00
Ryan X. Charles
d363956ba1 add readVarIntBuf function
...will be useful for new Varint class
2014-09-15 14:27:42 -07:00
Ryan X. Charles
3c668c9cf0 readVarInt -> readVarIntNum
"varInt" refers to the varInt object, which is not actually implemented yet.
This function should therefore really be called readVarIntNum.
2014-09-15 14:19:08 -07:00
Ryan X. Charles
8e959426e2 support reading varInt nums up to js precision
Javascript only supports 64 bit floating points, which have uint precision up
to Math.pow(2, 53). We now support reading variable sized numbers up to that
size. If the number is bigger than that, then we need to use BN.
2014-09-15 13:58:24 -07:00
Ryan X. Charles
cf4668f501 typo 2014-09-15 13:56:42 -07:00
Ryan X. Charles
9d5d136993 "function" not used 2014-09-15 13:48:51 -07:00
Ryan X. Charles
543762bc67 fromBuffer convenience function for pubkey 2014-09-15 11:32:39 -07:00
Ryan X. Charles
385edbcc92 simplify ECIES interface
the toKeypair doesn't really need to be a keypair. upon encrypting, it merely
needs to be a pubkey. and upon decrypting, it needs to be a privkey.
2014-09-15 11:19:18 -07:00
Ryan X. Charles
fbfa64582c autogenerated fromkeypair if not present 2014-09-15 10:43:14 -07:00
Ryan X. Charles
4a027e260a Address().fromScript(script)
It is convenient to be able to derive an address directly from a script for
p2sh transactions.
2014-09-12 17:49:01 -07:00
Ryan X. Charles
79d79012d4 fix bug where you can't use isForMe without payloadKeypair
It should be possible to check to see if a message isForMe with only the
scanKeypair, and not the payloadKeypair. There was a bug where only the
scanKeypair was being used to produce the receiveKeypair, but this was a
mistake. Both the scanPubkey and payloadPubkey should be necessary to produce
the receivePubkey, and both the scanPrivkey and payloadPrivkey should be
necessary to produce the receivePrivkey. If an online computer has only the
public keys of both (and the scanPrivkey), then that is good enough to check
for isForMe.
2014-09-12 17:24:00 -07:00
Ryan X. Charles
5a86a1a5c6 StealthMessage
This code should be regarded as being a proof-of-concept, and needs more review
before being used in production code. At least one thing is guaranteed to
change, and that is the format of a stealth address.
2014-09-10 14:00:53 -07:00
Ryan X. Charles
74549a53ec key -> keypair
Since the class has been renamed Key -> Keypair, instances should be renamed
key -> keypair.
2014-09-02 16:36:21 -07:00
Ryan X. Charles
219aa528c8 AsReceiver implied 2014-09-02 15:54:24 -07:00
Ryan X. Charles
558a7672ef Stealthkey AsSender functions obsolete
use StealthAddress instead
2014-09-02 15:28:32 -07:00
Ryan X. Charles
d1a570135d getSharedKeypair & getReceivePubkey 2014-09-02 15:25:16 -07:00
Ryan X. Charles
48ae69cab0 convenience: StealthAddress(str) or StealthAddress(buf) 2014-09-02 14:23:11 -07:00
Ryan X. Charles
36fd6b2d9c take address stuff out of stealthkey
...that is what StealthAddress is now for
2014-09-02 12:53:41 -07:00
Ryan X. Charles
139fe02355 StealthAddress 2014-09-02 12:48:36 -07:00
Ryan X. Charles
258dab9d6d convenience: Stealth(payloadKeypair, scanKeypair) 2014-09-02 12:08:33 -07:00
Ryan X. Charles
073ee0a0e4 fix: Pubkey(point) and Privkey(bn) 2014-09-02 12:07:18 -07:00
Ryan X. Charles
caf6c87419 Signature(r, s) should work 2014-09-02 11:59:42 -07:00
Ryan X. Charles
a768755764 convenience: new Pubkey(point) 2014-09-01 21:16:10 -07:00
Ryan X. Charles
6f56c8d1fc convenience: new Privkey(bn) 2014-09-01 21:13:44 -07:00
Ryan X. Charles
ef3a89f254 add Signature(r, s) convenience 2014-09-01 21:08:16 -07:00
Ryan X. Charles
8a3d71b596 throw error for invalid strings 2014-09-01 20:03:22 -07:00
Ryan X. Charles
eaaf8aade3 throw error if there is no string representation 2014-09-01 20:00:54 -07:00
Ryan X. Charles
3b2b725070 Script().fromString(str)
...the format of fromString and toString are deliberately not compatible with
bitcoind. The format here is supposed to be both human-readable, and
byte-for-byte isomorphic to the binary representation. In the future we will
need to add support for bitcoind-like strings, both for the test data (e.g.,
script_invalid.json) or for the bitcoind console style.
2014-09-01 19:42:20 -07:00
Ryan X. Charles
6375941ef8 script.toString() 2014-09-01 18:31:02 -07:00
Ryan X. Charles
e6af57f4fa script.toBuffer(); 2014-09-01 18:01:17 -07:00
Ryan X. Charles
378dc923ef preserve claimed length and op code
When parsing OP_PUSHDATAX commands, the the length of data might not require
the size integer of OP_PUSHDATAX. For instance, you might write 1 byte, and yet
use OP_PUSHDATA4. We need to record which OP_PUSHDATAX was used so that when we
write the buffer back out, we can write the same one. Also, the claimed length
may be different. For instance, we may OP_PUSHDATA of length 100 to the stack,
but there may only be 50 bytes left in the script. In that case, buf.length and
chunk.len will be different. I'm not sure if that would be considered a valid
script, but in any case, for script analysis, we need both values.
2014-09-01 17:27:39 -07:00
Ryan X. Charles
697b3e5009 Script().fromBuffer(buf)
...code heavily inspired/copied from bitcore
2014-09-01 16:41:07 -07:00
Ryan X. Charles
8b3ad7ac85 read a buffer, like slicing while iterating pos 2014-09-01 16:40:31 -07:00
Ryan X. Charles
572582938f more convenient bufferreader 2014-09-01 15:53:26 -07:00
Ryan X. Charles
15801773e3 the beginnings of script 2014-09-01 15:45:03 -07:00
Ryan X. Charles
6a26813955 p2sh -> scripthash
more appealing and memorable name
2014-09-01 12:06:18 -07:00
Ryan X. Charles
a0150f82ef fromNumber, toNumber, fromString, toString
...like the rest of the library.
2014-08-31 20:38:39 -07:00
Ryan X. Charles
03578e2ba5 Opcode
...code from bitcore
2014-08-29 19:24:51 -07:00
Ryan X. Charles
c59013eb46 remove useless Address dependency from Keypair
to get an address from a key, just do Address().fromPubkey(key.pubkey)
2014-08-29 15:42:30 -07:00
Ryan X. Charles
f028b6b913 Stealth -> Stealthkey
More explanatory. Will break up into separate Stealthkey, StealthAddress, and
StealthMessage classes.
2014-08-29 14:34:01 -07:00
Ryan X. Charles
32fabd0c0f Key -> Keypair
"Keypair" is a more explanatory name, and also should be less confused with
other kinds of keys (particularly "cipher keys", which are the keys used in
symmetric block ciphers, especially AES).
2014-08-29 14:18:56 -07:00
Ryan X. Charles
40a2007e18 confusingly named SymEnc -> accurately named AESCBC
This will also further discourage use amongst anyone who doesn't understand
what this is.
2014-08-29 13:07:49 -07:00
Ryan X. Charles
faa7a81cac Key().fromPrivkey() 2014-08-29 12:43:55 -07:00
Ryan X. Charles
40e8dfec06 compressed by default with fromRandom 2014-08-29 12:38:43 -07:00
Ryan X. Charles
80625fdbef move static isValid next to instance isValid
...to be easier for developers to parse and distinguish
2014-08-28 20:27:45 -07:00
Ryan X. Charles
5313085773 Pubkey().fromPrivkey() 2014-08-28 20:19:30 -07:00
Ryan X. Charles
c39acbcca3 Privkey().fromRandom() 2014-08-28 19:27:22 -07:00
Ryan X. Charles
2ef5e2f003 network -> networkstr 2014-08-28 17:55:33 -07:00
Ryan X. Charles
280578d641 network -> networkstr
...for compatibility with address, and to make the types obvious
2014-08-28 17:53:11 -07:00
Ryan X. Charles
e2824035bb Pubkey.prototype.set 2014-08-28 17:41:38 -07:00
Ryan X. Charles
356ddcfa4e test invalid address 2014-08-28 17:32:08 -07:00
Ryan X. Charles
ac47796acd .isValid() is more convenient than .validate() 2014-08-28 17:30:32 -07:00
Ryan X. Charles
109f31cfdb Privkey.prototype.set 2014-08-28 17:26:56 -07:00
Ryan X. Charles
6b4bc4c49c Stealth.prototype.set 2014-08-28 17:00:34 -07:00
Ryan X. Charles
0ca390d45b Message.prototype.set 2014-08-28 16:42:47 -07:00
Ryan X. Charles
a5f79c7651 Signature.prototype.set 2014-08-28 16:38:21 -07:00
Ryan X. Charles
28d3a40704 Key.prototype.set 2014-08-28 16:18:36 -07:00
Ryan X. Charles
75c1503a92 ECDSA.prototype.set 2014-08-28 16:07:28 -07:00
Ryan X. Charles
0d9b54711e BufferWriter.prototype.set 2014-08-28 16:02:24 -07:00
Ryan X. Charles
3475ee973c BufferReader.prototype.set 2014-08-28 15:52:32 -07:00
Ryan X. Charles
3919b24685 make bip32 mostly compatible with the rest of the lib
the constructor shouldn't do much. just set some varibles. in this case, i have
yet to write the code that sets the varibles. but better this than
autogenerating a new random BIP32. for that, call fromRandom()
2014-08-28 15:38:29 -07:00
Ryan X. Charles
d50d766352 Base58Check.prototype.set 2014-08-28 15:31:06 -07:00