Commit Graph

191 Commits

Author SHA1 Message Date
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
adbb260e70 also have keys and messages 2014-09-15 13:35:50 -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
8dc6a5023a test the case when no fromkeypair is used
...during encryption, and make sure you can still decrypt the message.
2014-09-15 10:52:32 -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
a095341a07 print the public key 2014-09-12 13:37:22 -07:00
Ryan X. Charles
8b875a5926 making a keypair is unnecessary 2014-09-12 13:26:14 -07:00
Ryan X. Charles
aa4251bff6 typo 2014-09-12 13:00:52 -07:00
Ryan X. Charles
88f3690ef6 StealthMessage example 2014-09-12 12:55:11 -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
779e48d562 expose new StealthAddress class 2014-09-02 15:27:25 -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
e3aa93614e one more test to make sure things are working 2014-09-01 16:44:27 -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
a481a0225e rename bundle from privsec to bitcore
...since this library is indeed likely to become the new bitcore
2014-09-01 14:59:42 -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
6ffb6574ed comment about npm shrinkwrap 2014-08-31 20:38:19 -07:00
Ryan X. Charles
004f8c29c8 npm shrinkwrap
This will ensure that the versions of the dependencies of the dependencies
remain the same on npm install, that way we can ensure bitcore works as
intended for the end-user. Note that this does not ensure byte-for-byte
compatibility. We may address that issue in the future.

See: https://www.npmjs.org/doc/cli/npm-shrinkwrap.html
2014-08-30 11:58:33 -07:00
Ryan X. Charles
d8e1f0d9b3 expose Opcode 2014-08-29 21:02:56 -07:00