コード例 #1
0
ファイル: txnUtils.py プロジェクト: nanangqq/bitcoin-homework
def verifyTxnSignature(txn):                    
    parsed = parseTxn(txn)      
    signableTxn = getSignableTxn(parsed)
    hashToSign = hashlib.sha256(hashlib.sha256(signableTxn.decode('hex')).digest()).digest().encode('hex')
    assert(parsed[1][-2:] == '01') # hashtype
    sig = keyUtils.derSigToHexSig(parsed[1][:-2])
    public_key = parsed[2]
    vk = ecdsa.VerifyingKey.from_string(public_key[2:].decode('hex'), curve=ecdsa.SECP256k1)
    assert(vk.verify_digest(sig.decode('hex'), hashToSign.decode('hex')))
コード例 #2
0
def verifyTxnSignature(txn):
    parsed = parseTxn(txn)
    signableTxn = getSignableTxn(parsed)
    hashToSign = hashlib.sha256(
        hashlib.sha256(
            signableTxn.decode('hex')).digest()).digest().encode('hex')
    assert (parsed[1][-2:] == '01')  # hashtype
    sig = keyUtils.derSigToHexSig(parsed[1][:-2])
    public_key = parsed[2]
    vk = ecdsa.VerifyingKey.from_string(public_key[2:].decode('hex'),
                                        curve=ecdsa.SECP256k1)
    assert (vk.verify_digest(sig.decode('hex'), hashToSign.decode('hex')))
    print "transaction verified"
    fo = open("ledger.txt", "wb")
    fo.write("new transaction added: \n" + txn)
コード例 #3
0
ファイル: txnUtils.py プロジェクト: gitonio/bitcoin-code
def verifyTxnSignature(txn, compressed='no', pubk = '0'):        
    print('txn:', txn)            
    parsed = parseTxn(txn)     
    print('parsed: ', parsed) 
    compressed=compressed
    print('compressed vts:', compressed)
    signableTxn = getSignableTxn(parsed, compressed=compressed)
    print('SignableTxn:', signableTxn)
    hashToSign = hashlib.sha256(hashlib.sha256(codecs.decode(signableTxn,'hex')).digest()).digest()
    assert(parsed[1][-2:] == '01') # hashtype
    sig = keyUtils.derSigToHexSig(parsed[1][:-2])
    if (compressed=='no'):
        public_key = parsed[2]
    else:
        public_key = pubk
    print('public_key: ', public_key)
    print('sig :', sig.encode('utf-8'))
    vk = ecdsa.VerifyingKey.from_string(codecs.decode(public_key[2:].encode('utf-8'),'hex'), curve=ecdsa.SECP256k1)
    #print(vk.verify_digest(codecs.decode(sig.encode('utf-8'),'hex'), hashToSign ))
    assert(vk.verify_digest(codecs.decode(sig.encode('utf-8'),'hex'), hashToSign ))
コード例 #4
0
def verifyTxnSignature(txn, compressed='no', pubk='0'):
    print('txn:', txn)
    parsed = parseTxn(txn)
    print('parsed: ', parsed)
    compressed = compressed
    print('compressed vts:', compressed)
    signableTxn = getSignableTxn(parsed, compressed=compressed)
    print('SignableTxn:', signableTxn)
    hashToSign = hashlib.sha256(
        hashlib.sha256(codecs.decode(signableTxn, 'hex')).digest()).digest()
    assert (parsed[1][-2:] == '01')  # hashtype
    sig = keyUtils.derSigToHexSig(parsed[1][:-2])
    if (compressed == 'no'):
        public_key = parsed[2]
    else:
        public_key = pubk
    print('public_key: ', public_key)
    print('sig :', sig.encode('utf-8'))
    vk = ecdsa.VerifyingKey.from_string(codecs.decode(
        public_key[2:].encode('utf-8'), 'hex'),
                                        curve=ecdsa.SECP256k1)
    #print(vk.verify_digest(codecs.decode(sig.encode('utf-8'),'hex'), hashToSign ))
    assert (vk.verify_digest(codecs.decode(sig.encode('utf-8'), 'hex'),
                             hashToSign))
コード例 #5
0
import bitcoin
import hashlib
import txnUtils
import keyUtils

tx = "01000000013c10dccdd96187ec065a2404a829be91ccb2a80ee7986d4cbbb31cd493f69e5d000000006c493046022100c9f051042467433b2199526db1ba327154d2bcd7c90c40070ba06869c5512194022100b1146f90fac7ed0db71d2f0c91f30c51d11310c508a64719dc424cdf710cb38b012102545d2c25b98ec8827f2d9bee22b7a9fb98091b2008bc45b3b806d44624dc038cffffffff0200c5015a020000001976a914f507b67f6af2dcc993f6958c05855f4861cefe8888acc427e9254f0600001976a914b3dd79fb3460c7b0d0bbb8d2ed93436b88b6d89c88ac00000000"

m = txnUtils.parseTxn(tx)
e = txnUtils.getSignableTxn(m)
z = hashlib.sha256(hashlib.sha256(e.decode('hex')).digest()).digest()
z1 = z[::-1].encode('hex_codec')
z = z.encode('hex_codec')
s = keyUtils.derSigToHexSig(m[1][:-2])
pub = m[2]
sigR = s[:64]
sigS = s[-64:]
sigZ = z
print('Signed TX is :', tx)
print('Signature (r, s pair) is :', s)
print('Public Key is :', pub)
print("")
print(
    "#################################################################################################"
)
print("")
print('Unsigned TX is :', e)
print('hash of message (sigZ) is USE This ONE :', z)
print('reversed z :', z1)
print("")
print(
    "#################################################################################################"