Beispiel #1
0
def test_verify_two_inputs():
    """BTC transaction:
    1e976937f0dadc7c7fac9b7c62291f7843bc781ec44ee65c41b9b9e4f10cf0b3"""

    r1 = int(
        '6545773c1a86326a2e27b0c06af1eccc43304518e3be1f7fe3949a2a7fde8a6f', 16)
    s1 = int(
        '7bf41875ef112a731835875e187086a322226759d410a2e8ee2fb91813340d43', 16)
    x1 = int(
        'c0dae3dc13a30b6fc4fbe361a943680148cc028d96d91d6997cbbb572258b308', 16)
    y1 = int(
        '17defc0d8dde6f62da3e4256ddb164b5847ef0112907e4d9e99c74035efe46c2', 16)
    public_key1 = Point(secp256k1, x1, y1)
    encoded_public_key1 = b'\x02' + x1.to_bytes(32, byteorder='big')
    hashed_public_key1 = hashlib.sha256(encoded_public_key1).digest()
    digest_public_key1 = hashlib.new('ripemd160', hashed_public_key1).digest()
    funding_script1 = (OP_DUP + OP_HASH160 + OP_PUSH_20 + digest_public_key1 +
                       OP_EQUALVERIFY + OP_CHECKSIG)
    raw_transaction_mod1 = (
        '0200000002999422d4e2a72c7bd5890922129498b7b0e68141aadb6ec920b6baee57e2586a00000000'
        + reverse_byte_hex(hex(len(funding_script1))[2:]) +
        funding_script1.hex() +
        'feffffff999422d4e2a72c7bd5890922129498b7b0e68141aadb6ec920b6baee57e2586a01000000'
        + '00' +
        'feffffff0286e75900000000001976a914f640fe9c961287aeceefe8499754aa4516c9a31c88acc00e1602000000001976a9140272b913f2755541abcdeeea8cb9845d615daa2b88acd9080800'
        + '01000000')
    r2 = int(
        '75dbfcbe3f05076ff6ad90525afec4e8ca110fb80555fc3c91d5f2d54f82ee2c', 16)
    s2 = int(
        '4a12501fd9704ae713ba2cd1500bca3e9cb34bb0bae145921c91ddce9c32017f', 16)
    x2 = int(
        '7940f42f1dbfc7af95ce0b8c9bc2565cc1b0b1e39924941dd07833a01e4f6d05', 16)
    y2 = int(
        '9c29c8439dc9e60b3d3809f7e9b648f3a78229801d691b581bd6492112154625', 16)
    public_key2 = Point(secp256k1, x2, y2)
    encoded_public_key2 = b'\x03' + x2.to_bytes(32, byteorder='big')
    hashed_public_key2 = hashlib.sha256(encoded_public_key2).digest()
    digest_public_key2 = hashlib.new('ripemd160', hashed_public_key2).digest()
    funding_script2 = (OP_DUP + OP_HASH160 + OP_PUSH_20 + digest_public_key2 +
                       OP_EQUALVERIFY + OP_CHECKSIG)

    raw_transaction_mod2 = (
        '0200000002999422d4e2a72c7bd5890922129498b7b0e68141aadb6ec920b6baee57e2586a00000000'
        + '00' +
        'feffffff999422d4e2a72c7bd5890922129498b7b0e68141aadb6ec920b6baee57e2586a01000000'
        + reverse_byte_hex(hex(len(funding_script2))[2:]) +
        funding_script2.hex() +
        'feffffff0286e75900000000001976a914f640fe9c961287aeceefe8499754aa4516c9a31c88acc00e1602000000001976a9140272b913f2755541abcdeeea8cb9845d615daa2b88acd9080800'
        + '01000000')

    result1 = verify(bytes.fromhex(raw_transaction_mod1), (r1, s1),
                     public_key1, secp256k1, double_sha256)
    result2 = verify(bytes.fromhex(raw_transaction_mod2), (r2, s2),
                     public_key2, secp256k1, double_sha256)

    assert result1
    assert result2
Beispiel #2
0
def test_verify_one_input():
    """ BTC transaction:
     b2fcadebe12b9f8ec1820ef22e1e4fafb119876149bb9013a65dbc91c4921549 """

    r = int('059c71db0d01d284fc4589c03b09947d21b98d7cefae614ac1039b6de0fa28ba',
            16)
    s = int('6cde9c0649fe2242b1dd90f40615e1bb247280b8f152c0ae9151b9c4d7abaf87',
            16)
    x = int('8cc516ad062ac55d5ed980c4f743a366621fa409060188df3c39e289720090ae',
            16)
    y = int('bba61faf69a3f2a39fac2745a565e5b2a4a9a5c90a71c9ee770135695231832c',
            16)
    public_key = Point(secp256k1, x, y)
    encoded_public_key = b'\x04' + x.to_bytes(
        32, byteorder='big') + y.to_bytes(32, byteorder='big')
    hashed_public_key = hashlib.sha256(encoded_public_key).digest()
    digest_public_key = hashlib.new('ripemd160', hashed_public_key).digest()
    funding_script = OP_DUP + OP_HASH160 + OP_PUSH_20 + digest_public_key + OP_EQUALVERIFY + OP_CHECKSIG
    raw_transaction_mod = '020000000169ab945e88fc3d73d052e8c3ce546309a635458fea2c6b3e69981945b0d2a62201000000' + reverse_byte_hex(
        hex(len(funding_script))[2:]
    ) + funding_script.hex(
    ) + 'fdffffff025641e52d000000001976a914759d667709c9d1fbd7aa26537b5c441747d88f2588ac80c3c901000000001976a9146928f2f330f57e6916543481ab3af69597ae289d88ac06d70700' + '01000000'

    result = verify(bytes.fromhex(raw_transaction_mod), (r, s), public_key,
                    secp256k1, double_sha256)

    assert result
Beispiel #3
0
def test_verify_one_input_zeit():
    """ZEIT transaction:
    975e4d8a5530ba43dd607c62af925ad20a5347e2fd5873c65364bc4a89b6a829"""

    r = int('5f69442b8ffd4ce39997c27a3f1c134a1ce6d1cdeb6dd39c5191d3e748419577',
            16)
    s = int('67d9c5b4144c80aac91701130686b66dc3da15799de960edb22ee9f90be6f554',
            16)
    x = int('771b0c5df5773a9c3f8da066d6b9e8e577025caeaa15ef1289c9e83050124eca',
            16)
    y = int('c71f2fe45289be22f857d721489e871dce3e7e6a951534f0504c5784c796def9',
            16)
    public_key = Point(secp256k1, x, y)
    encoded_public_key = encode_point(public_key, compressed=True)
    hashed_public_key = hashlib.sha256(encoded_public_key).digest()
    digest_public_key = hashlib.new('ripemd160', hashed_public_key).digest()
    funding_script = (OP_DUP + OP_HASH160 + OP_PUSH_20 + digest_public_key +
                      OP_EQUALVERIFY + OP_CHECKSIG)
    raw_transaction_mod = (
        '010000006bbc345b01ec2636bc0dc4a0fa774a1448b5cd26f90b1ebf6ab7474cb87b003dc15280043a00000000'
        + reverse_byte_hex(hex(len(funding_script))[2:]) +
        funding_script.hex() +
        'ffffffff016e2ae671000000001976a91415cdc3710d179a525dc6011f4588befc5a04ff4488ac00000000'
        + '01000000')

    result = verify(bytes.fromhex(raw_transaction_mod), (r, s), public_key,
                    secp256k1, double_sha256)

    assert result