Commit Graph

429 Commits

Author SHA1 Message Date
Braydon Fuller 3c9cc23501 Address: Improved error messages and type, and added inspect prototype for console output. 2014-11-21 22:20:44 -05:00
Braydon Fuller 5ff349758c Address: Fix Buffer data recognition in browsers 2014-11-21 19:58:47 -05:00
Braydon Fuller 0df97a42fe Address: Fix indentation, typos and simplify isValid 2014-11-21 19:02:58 -05:00
Braydon Fuller 8f32063375 Address: Add missing semicolons 2014-11-21 14:31:34 -05:00
Braydon Fuller 90341f2ab6 Address: Modified interface so that any instance of Address can be assumed to be valid. 2014-11-21 14:18:31 -05:00
Manuel Araoz 4508fb6765 fix references to encoding 2014-11-21 12:54:56 -03:00
Manuel Araoz deee8c6887 refactor protocol->encoding 2014-11-21 11:43:37 -03:00
Manuel Araoz e0340213fe remove KDF 2014-11-21 10:43:12 -03:00
Manuel Araoz 5440baad83 fix tests for random 2014-11-20 18:46:43 -03:00
Manuel Araoz f0a4aebdfb reorder tests 2014-11-20 18:08:31 -03:00
Manuel Araoz a9d029341d remove extras 2014-11-20 13:31:51 -03:00
Manuel Araoz 044337a30f use strict to core 2014-11-20 12:56:35 -03:00
Manuel Araoz ca9b8d8f7b use strict to protocol 2014-11-20 12:52:32 -03:00
Manuel Araoz 56ca8a20c1 use strict to protocol 2014-11-20 12:23:46 -03:00
Manuel Araoz 7650b35482 use strict to extras 2014-11-20 12:18:08 -03:00
Manuel Araoz 2bf1ed8f34 use strict to crypto 2014-11-20 12:16:27 -03:00
Manuel Araoz 6f2913eed4 fix references 2014-11-20 11:50:23 -03:00
Manuel Araoz 481aa04cdb add comment to identity.js 2014-11-20 11:44:46 -03:00
Manuel Araoz 5dd3eae34f move more files 2014-11-19 12:19:10 -03:00
Manuel Araoz cebd3aaa18 move files 2014-11-19 11:57:07 -03:00
Manuel Araoz 54fa31c85d remove crypto 2014-11-18 18:59:31 -03:00
Braydon Fuller 0cd68b5384 removed unused module references 2014-11-18 11:16:39 -05:00
Braydon Fuller 8ca49fb523 update to include new version of bn.js and elliptic that include hex padding 2014-11-03 16:53:14 -05:00
Eric Martindale 14748ae2b5 Make more tests pass with Identity(). 2014-10-06 17:54:20 -04:00
Eric Martindale 4b6e9aaf03 Improve tests. 2014-10-06 15:40:30 -04:00
Eric Martindale dac2acc743 Clean example for full identities. 2014-10-06 14:00:03 -04:00
Eric Martindale 75cf4c4f9a tidy up identity class, add tests. 2014-10-02 22:27:18 -04:00
Eric Martindale 5fc9721647 Add support for identities. 2014-10-02 15:08:44 -04:00
Eric Martindale f01ebd97d2 Buffers, identities, and randomNumbers. 2014-10-01 21:08:06 -04:00
Eric Martindale e8d4786e48 CLASSICAL INHERITANCE IS FOR THE DOGS. 2014-10-01 19:20:03 -04:00
Eric Martindale 541196cb5a Re-implement addresses. 2014-10-01 16:28:57 -04:00
Eric Martindale 5f60d26a2b Migrate from Address() to Identity(). 2014-10-01 16:26:09 -04:00
Ryan X. Charles f54edfb618 Varint(BN()) convenience
...and add some tests for the various constructor conveniences
2014-09-23 22:19:01 -07:00
Ryan X. Charles 8e85eba08b pushin, pushout
Add convenience methods for adding new inputs and outputs.
2014-09-23 22:09:41 -07:00
Ryan X. Charles c07d509623 initialize transaction
In order to add convenience methods to a transaction, such as pushing new
inputs and outputs, we need to first have the notion of an initialized
transaction, which is actually not blank. An initialized transaction just has
default values for everything, such as no inputs and no outputs, and default
version and nlocktime.
2014-09-23 22:01:30 -07:00
Ryan X. Charles 729049a7da Add error for when pushdata is exceptionally large 2014-09-23 21:37:18 -07:00
Ryan X. Charles b37e39abca Script().writeXX convenience methods
Script().writeOp('OP_CHECKMULTISIG'), or...
Script().writeOp(174), or...
Script().writeBuffer([push data buffer]), or...
Script().write([op string, number, or push data buffer])

These convenience methods let you easily write a script.
2014-09-23 21:28:03 -07:00
Ryan X. Charles 4f71535869 StealthTx
For spotting transactions to which you have the stealth key (or at least the
scan key) and creating transactions to a stealth address. So far it is only
partially working - you can see if a transaction is a stealth transaction (or
at least one of a limited kind of stealth transactions), and you can see that
you do not have the stealth key to spend one of these transactions. However, I
have not yet tested whether you can see a stealth transaction that you actually
have the key to. Also, it is not yet easy to spend to a stealth address.
2014-09-23 16:54:52 -07:00
Ryan X. Charles 4fabad21a1 get rid of obsolete 'bitcore' stealth addr format 2014-09-23 14:27:48 -07:00
Ryan X. Charles 22b87325d7 make Dark Wallet buffer/string formats the default
and rename the old functions to "bitcore buffer" and "bitcore string"
2014-09-23 14:27:48 -07:00
Ryan X. Charles 96df77429f add support for Dark Wallet-style addresses
These functions are prefixed DW which stands for Dark Wallet. The code for the
Dark Wallet address format can be found here:

https://github.com/darkwallet/darkwallet/blob/develop/js/util/stealth.js

Note that I deliberately support only the simplest possible format, which is
where there is only one payload pubkey and the prefix is blank. I should now go
back and replace my old toString, fromString, toBuffer, fromBuffer functions
with these Dark Wallet versions, since they are much more well-thought out than
mine.
2014-09-22 18:23:10 -07:00
Ryan X. Charles 9b8ce05b15 BufferWriter().toBuffer convenience method
It does the same thing as .concat(), but may be easier to remember, since the
rest of the library uses the ".toBuffer()" convention
2014-09-22 17:09:53 -07:00
Ryan X. Charles 792e8080c8 classify pubkeyhash and scripthash scripts
...both the "in" (ScriptSig) and "out" (ScriptPubkey)
2014-09-22 16:04:06 -07:00
Ryan X. Charles 6f92775b2c extra curly braces for code readability 2014-09-22 14:56:07 -07:00
Ryan X. Charles 5c7149aeab Stealthkey toJSON/fromJSON 2014-09-22 14:45:41 -07:00
Ryan X. Charles d6e3266179 toJSON/fromJSON for privkey, pubkey, keypair 2014-09-22 13:55:40 -07:00
Ryan X. Charles f3614e4a90 Key -> Keypair
...that is what is called everywhere else.
2014-09-22 13:14:39 -07:00
Ryan X. Charles e984736736 allow bufs in constructors
For Transaction, Block and Blockheader. This is a convenience so if you happen
to have the buffer for one of these, you can make a new one like this:

Transaction(txbuf);

Rather than having to do this:

Transaction().fromBuffer(txbuf);
2014-09-22 13:07:39 -07:00
Ryan X. Charles e6a424303e remove unused base58check dependency 2014-09-22 12:51:18 -07:00
Ryan X. Charles 1bda566679 stealth address to/from JSON 2014-09-22 12:48:13 -07:00
Ryan X. Charles 27fbdb42ad isOpReturn
standard OP_RETURN scripts contain either just an OP_RETURN or an OP_RETURN
followed by a single pushdata OP with not more than 40 bytes.
2014-09-19 21:59:19 -07:00
Ryan X. Charles cc3196085f add .hash() function for a block
This is the plain old hash, which is a double sha256. The id of a block is the
reverse of this.
2014-09-19 17:29:40 -07:00
Ryan X. Charles aff3992ffb transaction hash and id
...the hash is the usual hash, and the id is the reverse of that, which is what
is usually graphically displayed by bitcoind.
2014-09-19 17:25:35 -07:00
Ryan X. Charles 40d17c5180 block id
The block id is the reverse of the double sha256 hash of the blockheader.
2014-09-19 17:08:44 -07:00
Ryan X. Charles cfd509f859 make receivePubkey compatible with dark wallet
I had been using this formula for the receiveKeypair:

scanKeypair + payloadKeypair + sharedKeypair

However, Dark Wallet uses this formula:

payloadKeypair + sharedKeypair

It is not actually necessary to add the scanKeypair in order to have all the
features of stealth addresses, at least as far as I can tell. So in order to
bring my implementation closer to Dark Wallet's, I have removed the scanKeypair
from this calculation.
2014-09-19 14:32:32 -07:00
Ryan X. Charles e11019a083 toJSON, fromJSON
Every object should have toJSON and fromJSON methods so you can have a reliable
way to store and retrieve objects.
2014-09-18 17:52:02 -07:00
Ryan X. Charles f17d604e44 Address().fromHashbuf() convenience method
...useful for when you have the pubkeyhash, but not the version byte.
2014-09-18 15:18:53 -07:00
Ryan X. Charles cf5b2f1250 varint -> vi canonical spelling 2014-09-17 16:48:23 -07:00
Ryan X. Charles 2caf7c6471 bn -> BN canonical capitalization 2014-09-17 16:08:42 -07:00
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
Ryan X. Charles da8989b649 add set function to Base58 2014-08-28 15:27:58 -07:00
Ryan X. Charles 6b7592d67b add address validation convenience function 2014-08-28 15:22:03 -07:00
Ryan X. Charles f52e679f93 refactor address - use "set" function
...intend for this to become standard throughout the lib
2014-08-28 15:18:48 -07:00
Ryan X. Charles cc316e9455 ECIES 2014-08-28 14:43:21 -07:00
Ryan X. Charles 6f54d4cde6 Encryption -> SymEnc
This is more explanatory ("symmetric encryption") and also does not encourage
its use for people who don't know what they're doing. (It should only be used
in combination with some type of message authentication.)
2014-08-28 11:10:40 -07:00
Ryan X. Charles 1cb2f900af symmetric encryption convenience class 2014-08-27 17:15:10 -07:00
Ryan X. Charles 73b904ce21 CBC decrypt 2014-08-25 21:16:33 -07:00
Ryan X. Charles dfa190b5a5 blockbufs2buf 2014-08-25 21:02:00 -07:00
Ryan X. Charles ae319ffcbc unpad 2014-08-25 20:53:29 -07:00
Ryan X. Charles a6e74666c8 decrypt blocks 2014-08-25 20:38:39 -07:00
Ryan X. Charles eddeb60d7d decrypt block 2014-08-25 20:25:18 -07:00
Ryan X. Charles 97e40f9ac6 rename keybuf -> cipherkeybuf
...since this use of "key" is very different than the public/private key pair
that is key.js
2014-08-25 16:38:53 -07:00
Ryan X. Charles a09cac4ba6 block cipher should support "encrypt" and "decrypt" 2014-08-25 16:30:04 -07:00
Ryan X. Charles 12f29a9b52 CBC encryption 2014-08-25 16:25:01 -07:00
Ryan X. Charles 38d9ab65af xor buffers ... will be useful for CBC 2014-08-24 20:51:56 -07:00
Ryan X. Charles 1b1ecd989a pkcs7
This is a standard algorithm for the purposes of padding a block for a block
cipher. It will be used in CBC, which in turned will be used with AES for
ECIES.
2014-08-24 19:38:20 -07:00
Ryan X. Charles 1dead4cbc4 AES 2014-08-24 17:33:09 -07:00
Ryan X. Charles f3dcb5bba1 typo in error message 2014-08-24 14:31:30 -07:00
Ryan X. Charles b81e4c75fb put static methods at the top 2014-08-24 14:27:47 -07:00
Ryan X. Charles ea0ee1b687 add info on public key recovery 2014-08-24 14:26:17 -07:00
Ryan X. Charles e6a88118ae fix error message 2014-08-24 12:50:21 -07:00
Ryan X. Charles bc94a5cb59 sign/verify with uncompressed pubkeys 2014-08-22 19:43:32 -07:00
Ryan X. Charles 7c945cdc01 add "compressed" feature to pubkeys
...not just privkeys. since, of course, they can be compressed or uncompressed.
2014-08-22 17:43:22 -07:00
Ryan X. Charles 8e6a28162b it is a "Compact" signature, not "Compressed" 2014-08-22 16:34:45 -07:00
Ryan X. Charles 6176ad4a98 verify signed messages
...and fix bug where i (recover param) was stored incorrectly
2014-08-22 16:15:44 -07:00
Ryan X. Charles 3b3ebb0458 sign convenience function 2014-08-21 16:21:21 -07:00
Ryan X. Charles 15f9a99e65 message signing 2014-08-21 15:50:38 -07:00
Ryan X. Charles e6d89a76d7 use standard language - hash -> hashbuf 2014-08-21 14:00:18 -07:00
Ryan X. Charles 2131dbdfee remove unnecessary tab 2014-08-21 11:52:43 -07:00
Ryan X. Charles ddc9e2d2a4 handle varInts better 2014-08-21 11:47:09 -07:00
Ryan X. Charles 4cff6a41f4 remove "(classname): " from tests
...to reduce the burden on writing new code
2014-08-20 13:03:07 -07:00
Ryan X. Charles 912bed1d9c support BN in bufferwriter
So that the precision of writing a variable sized integer is sufficient.
2014-08-20 12:52:37 -07:00
Ryan X. Charles cde44d689c fix precision error by handling BNs correctly 2014-08-20 12:35:55 -07:00
Ryan X. Charles 3e82c57e19 "hashbuf" indicates type is a buffer 2014-08-20 10:46:01 -07:00
Ryan X. Charles ca7fdd77c1 recover public key from signature 2014-08-19 17:15:54 -07:00
Ryan X. Charles 65c3545cb6 include i in sig obj + cosmetic improvements 2014-08-19 16:27:28 -07:00
Ryan X. Charles 39236fab14 formatting 2014-08-19 12:02:34 -07:00
Ryan X. Charles 9d600f4784 BufferWriter 2014-08-18 18:20:54 -07:00
Ryan X. Charles 5e3ad3d09d BufferReader 2014-08-18 18:04:47 -07:00
Ryan X. Charles f11ed4d20b bug: should mod bn addition
when adding two private keys to get a new private key, you should mod the
result with N so that it is always less than N.
2014-08-15 15:09:28 -04:00
Ryan X. Charles d73ff6fa6a give Base58 the normal bitcore2 interface 2014-08-14 12:13:09 -04:00
Ryan X. Charles de08f78d74 give Base58Check the same fromString toString
...interface like the rest of the classes
2014-08-14 11:56:17 -04:00
Ryan X. Charles bc1c4235f2 basic stealth address support
Math only. Does not yet support transactions. Not yet compatible with Dark
Wallet.
2014-08-13 20:54:05 -04:00
Ryan X. Charles f8fc3812f0 add BN.prototype.fromBuffer 2014-08-13 19:23:45 -04:00
Ryan X. Charles f6f7a870fb allow creating objects without using "new" 2014-08-13 18:55:33 -04:00
Ryan X. Charles a2512226f8 address convenience functions 2014-08-13 18:00:41 -04:00
Ryan X. Charles 8743c68ce6 kdf 2014-08-13 17:31:28 -04:00
Ryan X. Charles a2e471ae9e more consistency: n -> bn, p -> point 2014-08-13 15:23:06 -04:00
Ryan X. Charles cc310fbc23 add bip32: to error messages
...to be consistent with the rest of the library
2014-08-09 23:54:08 -07:00
Ryan X. Charles efbebb3528 throw error if deriving an invalid path string
...the path consists "m", numbers, /, and ' characters
2014-08-09 23:52:19 -07:00
Ryan X. Charles 7def2609ec add toString method for bip32
...so that it is consistent with the rest of the library
2014-08-09 23:29:05 -07:00
Ryan X. Charles be37f5e37f improve bip32 interface slightly 2014-08-09 23:16:15 -07:00
Ryan X. Charles 9649cc58e9 bip32
code from bitcore. original implementation derived from here:
https://github.com/sarchar/brainwallet.github.com/blob/bip32/js/bip32.js
2014-08-09 22:19:28 -07:00
Ryan X. Charles 5606e083e2 sha512hmac and sha256hmac 2014-08-09 21:51:26 -07:00
Ryan X. Charles 3871e43dd8 make address more consistent with rest of lib 2014-08-09 20:26:03 -07:00
Ryan X. Charles cd6c2b2410 refactor privkey 2014-08-09 19:58:48 -07:00
Ryan X. Charles 304210c132 add tests for all ecdsa functions 2014-08-09 19:42:25 -07:00
Ryan X. Charles 2ed5290a4e make "new Point()" work 2014-08-09 19:03:59 -07:00
Ryan X. Charles c4064cc6e1 ecdsa 2014-08-09 17:43:24 -07:00
Ryan X. Charles 1a01674532 signature 2014-08-09 14:42:23 -07:00
Ryan X. Charles 333c075ae7 key 2014-08-07 21:31:36 -07:00
Ryan X. Charles 5a79879e63 use process.browser only, which is sufficient 2014-08-07 20:39:20 -07:00
Ryan X. Charles e43c7e3c3a random
...code from bitcore
2014-08-07 16:51:24 -07:00
Ryan X. Charles 448f532738 pubkey 2014-08-07 16:18:17 -07:00
Ryan X. Charles 3df3d41434 privkey 2014-08-06 22:47:10 -07:00
Ryan X. Charles 9f7e01b8ca rename redundant point.pointFromX to point.fromX 2014-08-06 21:39:25 -07:00
Ryan X. Charles 657f992e7b point 2014-08-06 21:02:42 -07:00
Ryan X. Charles ca4131ab05 remove ripemd160 dep., replace with hash.js 2014-08-06 19:06:32 -07:00
Ryan X. Charles e0deb0407c add big number support
Extend bn.js with some convenience methods. Extension code taken from bitcore.
2014-08-06 18:36:30 -07:00
Ryan X. Charles 862235e57e initial commit
address, base58, base58check, hash all working with tests.

base58check code taken from bitcore.
2014-08-06 18:25:45 -07:00