Commit graph

937 commits

Author SHA1 Message Date
Chris Stewart
e075a239a4 Adding restrictions inside of ScriptPubKeyFactory for MultiSignaturePubKeys, now need to have atleast 2 ScriptNumberOperations 2016-03-25 14:22:23 -05:00
Chris Stewart
c891d220ac Refactoring functionality inside of TranasctionSignatureChecker to reuse the same code for both p2sh multisig redeem scripts & regular multisig scripts. Also redoing how maxSigs is calculated for MultiSignatureScriptPubKeys 2016-03-25 13:48:03 -05:00
Chris Stewart
c495261f3a Adding empty signature to ECDigitalSignature, adding unit tests for empty signature. Factoring DER signature encoding out of TransactionSignatureChecker 2016-03-25 12:03:47 -05:00
Chris Stewart
c141bbda7d Putting band aid on bip66 example 6 right now using a Try type if public key verification fails inside of bitcoinj 2016-03-24 21:02:14 -05:00
Chris Stewart
b2332596e2 Fixing bug where isStrictDerEncoding was not working for the empty signature 2016-03-24 20:20:55 -05:00
Chris Stewart
4b7eb99836 Adding functionality inside of OP_CHECKSIG to see if the DERSIG flag is set 2016-03-24 19:35:16 -05:00
Chris Stewart
215cdddf20 Adding function to detect if a signature is strictly der encoded according to BIP66 2016-03-24 17:43:18 -05:00
Chris Stewart
7d8699e822 Adding ScriptVerifyFlag to indicate if CLTV is enforced or not 2016-03-24 11:23:19 -05:00
Chris Stewart
91feb92709 Creating ScriptFlagFactory to parse script flags and create them from strings 2016-03-23 15:25:57 -05:00
Chris Stewart
be8ae500c7 Adding ScriptVerify flags for script evaluation 2016-03-23 13:40:54 -05:00
Chris Stewart
07c2ed3669 Decoding (r,s) from DER signatures 2016-03-23 11:25:48 -05:00
Chris Stewart
72657b898f Adding functionality to check if a signature isDEREncoded' 2016-03-22 20:05:45 -05:00
Chris Stewart
b9197a8613 Adding spongycastle as a dependency, cleaning up more usages of ScalacoinUtil 2016-03-22 08:15:16 -05:00
Chris Stewart
82d5713549 Fixing bug where single OP_0 was being classified as a MultiSignatureScriptSig 2016-03-21 15:41:15 -05:00
Chris Stewart
df085162a4 Switching to explicitly parsing redeemScripts now instead of parsing them while they are running through ScriptParser - this is how bitcoin core treats redeemScripts. This will make it easier for evaluating scriptSigs with redeemScripts in them 2016-03-21 14:02:04 -05:00
Chris Stewart
26ba8d956e Slightly modifying line in script_valid.json to separate an OP_PUSHDATA op from the size of the data being pushed 2016-03-21 09:39:24 -05:00
Chris Stewart
55ae249f52 Adding new hash types to the available hashtypes inside of HashTypeFactory 2016-03-20 13:04:12 -05:00
Chris Stewart
e3f96968b2 Successfully building crediting tx and spending tx for bitcoin core tests inside of script_valid.json 2016-03-19 21:12:40 -05:00
Chris Stewart
cbac956ba7 adding requirement to buildSpendingTransaction to make sure it is the same as bitcoin core's buildSpendingTransaction 2016-03-19 15:12:32 -05:00
Chris Stewart
a9c52728f3 Adding code to mimic how transactions are built for script_valid.json inside of bitcoin core 2016-03-18 13:12:42 -05:00
Chris Stewart
86c7841cac Fixing bug in how p2pk are evaluated in opCheckSig 2016-03-17 11:26:59 -05:00
Chris Stewart
f90b5d15d5 Fixing bug where p2pk scriptPubKeys were not being assigned the correct case class 2016-03-16 13:14:56 -05:00
Chris Stewart
f2f849f23b Adding functionality to parse a p2pk scriptSig into the correct case class 2016-03-16 13:01:33 -05:00
Chris Stewart
82eac5ea15 Refactoring codebase back to use explicit ScriptPubKeyFactory & ScriptSignatureFactory - I think this will be better for long term maintainability 2016-03-16 09:46:34 -05:00
Chris Stewart
207674c6f9 Fixing bug in finding requiredSigs for MultiSignatureScriptPubKey - the number of sigs always follows the OP_0 that has to be placed in the scriptPubKey 2016-03-15 13:05:29 -05:00
Chris Stewart
c8ed1662d7 Addign case object to represent the empty script sig 2016-03-15 12:07:23 -05:00
Chris Stewart
0efe9d970b Adding case inside of ECDigitalSignature for empty digital signatures - these are used inside of Bitcoin Core's script_valid.json test cases 2016-03-15 10:09:12 -05:00
Chris Stewart
00fde6fe56 Refactoring interface for script interpreter - now clients are responsible for building ScriptPrograms. Also adding another parameter for scriptSigs/scriptPubKeys to pass in the parsed asm representation along with the hexadecimal representation 2016-03-14 15:56:28 -05:00
Chris Stewart
4843ee5c5e Adding a wrapper scriptSig/scriptPubKey from core test cases 2016-03-14 12:52:23 -05:00
Chris Stewart
26d827cde9 Merge pull request #2 from Christewart/checksig_implementation
Checksig implementation
2016-03-14 10:13:14 -05:00
Chris Stewart
a4a4b0bea4 Cleaning up some compiler warnings 2016-03-14 10:08:48 -05:00
Chris Stewart
2e9d362a83 Validating 2/3 p2sh scriptSig and making sure it fails to validate a 2/3 scriptSig that doesn't have enough sigs 2016-03-14 09:46:52 -05:00
Chris Stewart
aa25c4d199 Adding scaladocs for traits 2016-03-13 19:37:00 -05:00
Chris Stewart
df73627ae5 Removing ScriptSignatureFactory companion object - creating dependency inside of ScriptSignatureFactory to be injected with a ScriptSignature 2016-03-12 07:02:32 -06:00
Chris Stewart
57920765dc Fixing compiler warnings about matching exhaustiveness inside of TransactionSignatureChecker - adding BitcoinSLogger trait for common logging across the implementation 2016-03-11 10:24:58 -06:00
Chris Stewart
588737eec8 Removing ScriptPubKeyFactory companion objecting - creating dependency of ScriptPubKeyFactory to be injected with a ScriptPubKey 2016-03-11 09:44:39 -06:00
Chris Stewart
23dfba3788 Adding case to handle p2pk scriptSignature type inside of TransactionSignatureChecker 2016-03-10 07:08:10 -06:00
Chris Stewart
db0355a453 Successfully verifying a 2 of 2 p2sh scriptSig against its scriptPubKey - next is validating m/n where m != n 2016-03-09 19:12:40 -06:00
Chris Stewart
c800777981 Fixing bug in SIGHASH_SINGLE implementation - now added a regression test in the translated bitcoinj hashForSignature & my home grown translated version to make sure the hashes are identical 2016-03-09 18:19:12 -06:00
Chris Stewart
22fa7af6dc Changing type of redeemScript inside of P2SHScriptSignature from Seq[ScriptToken] to ScriptPubKey 2016-03-08 19:51:06 -06:00
Chris Stewart
629c65cd7b Refactoring test cases from scriptPubkeys/scriptSigs into their own files 2016-03-08 09:53:24 -06:00
Chris Stewart
dbfb367fac Successfully validating a multisignature script signature is spending a multi signature scriptPubKey correctly 2016-03-07 15:59:17 -06:00
Chris Stewart
f5063bc8c2 Implementing function to find public keys, required sigs, and maximum signatures inside a multisignature scriptPubKey output 2016-03-07 15:28:58 -06:00
Chris Stewart
002d1111f3 Creating product types for scriptPubKeys 2016-03-07 14:49:05 -06:00
Chris Stewart
30821f32bd Creating product types for scriptSignatures 2016-03-07 14:04:36 -06:00
Chris Stewart
71a3a5d707 Fixing bug in ECFactory to change dumped private key's from bitcoin-cli into native Bitcoin-S ECPrivateKeys 2016-03-07 11:13:39 -06:00
Chris Stewart
bbedc9b5e3 Major refactor in scriptPubKey - the byte size of the scriptPubKey is now in the TransactionOutput NOT the scriptPubKey. 2016-03-06 19:59:23 -06:00
Chris Stewart
c5b3590dff partially refactoring the ScriptPubKey parsing - now everything goes through ScriptPubKeyFactory - need to figure out how to handle the scriptPubKey size - does the bytes/hex need to contain the script size or not? Right now it does which has issues with compatability with bitcionj 2016-03-05 11:01:41 -06:00
Chris Stewart
ebc5ebe1cf Explicitly parsing the redeem script to a list of script tokens inside of a scriptSignature - previously was just placed into a ScriptConstant 2016-03-04 11:24:52 -06:00
Chris Stewart
69d6cc58b1 Creating bitcoinj test util 2016-03-03 16:28:58 -06:00