'01' at the end of signatures

1

I am confused about the end marker at the end of signatures (in my case, individual sigs for a Tx that spends a P2SH) in pybitcointools:

pybitcointools: 304402204dae851c29a117383c5c535086a7fe899c9c5f0d927a4e680498fdd9b244cb15022058fea40a9f8c3988b17556fceacdce063860057fd8c6ad84de40515d287758dd01

Bitcore: 304402204dae851c29a117383c5c535086a7fe899c9c5f0d927a4e680498fdd9b244cb15022058fea40a9f8c3988b17556fceacdce063860057fd8c6ad84de40515d287758dd

These are two same signatures (i.e., same Tx, input, private key). Only, in pybitcointools' implementation, you have a 01 at the end. Why?

Does it perhaps have to do with the hashtype?

Thx

hartmut

Posted 2016-08-20T15:11:17.383

Reputation: 571

Answers

2

It is the hash type, in this case it is SIGHASH_ALL. To verify the digital signature inside of the Script language, it is required to have a hash type appended to the end of the digital signature. However if you verifying the signature using something like openssl, the bitcore signature would be valid.

Chris Stewart

Posted 2016-08-20T15:11:17.383

Reputation: 865

thanks. Does it imply that using openssl to check the signature, we don't need to know about the hash type?hartmut 2016-08-21T08:30:39.167

1@hartmut That's right. OpenSSL only checks the DER signature. Byte 2 of the DER is the signature length (i.e. No hashcode)Wizard Of Ozzie 2016-08-21T11:18:30.363

@WizardOfOzzie Ok thanks. If you have any link you can recommend for me to read on that please feel free to post them :).hartmut 2016-08-21T14:18:19.193

1

In bitcore-lib, the sighash type is added when building the input script (scriptSig) for the transaction, for example here: https://github.com/bitpay/bitcore-lib/blob/9e82395e71f8c1a9d4b1e4e4fc2b90085d5443d9/lib/script/script.js#L865-L886

As well as with the toTxFormat method: https://github.com/bitpay/bitcore-lib/blob/764aa6d4e9f28969192db2e8c1c82326cdbb6a6b/lib/crypto/signature.js#L300-L305

Braydon Fuller

Posted 2016-08-20T15:11:17.383

Reputation: 36

Thanks! Together with http://bitcoin.stackexchange.com/questions/37125/how-are-sighash-flags-encoded-into-a-signature your answer helped me finally get it.

hartmut 2016-08-22T17:24:58.323