Ejemplo n.º 1
0
    def _verify_signature(self, inputs, tx):
        if (tx.sigtype  == Transaction.SigType.utxo):
            for input_utxo in inputs:
                if (input_utxo['spending_sig'] == ZERO_SIGNATURE or get_sender(input_utxo['spending_tx_hash'], input_utxo['spending_sig']) != input_utxo['owner']):
                    raise InvalidTxSignatureException()
        elif (tx.sigtype == Transaction.SigType.txn):
            if (tx.txnsig == ZERO_SIGNATURE):
                raise InvalidTxSignatureException()                
            
            signature_address = recoverPersonalSignature(tx.readable_str, tx.txnsig)
            print("signature_address is %s" % signature_address.hex())

            for input_utxo in inputs:
                if input_utxo['utxotype'] == Transaction.UTXOType.transfer:
                    if input_utxo['owner'] != signature_address:
                        raise InvalidTxSignatureException()                
Ejemplo n.º 2
0
 def sender2(self):
     return get_sender(self.hash, self.sig2)
Ejemplo n.º 3
0
 def sender1(self):
     return get_sender(self.hash, self.sig1)
Ejemplo n.º 4
0
def test_signature(t, block):
    block.sign(t.k0)
    assert block.sig == sign(block.hash, t.k0)
    assert block.sender == get_sender(block.hash, sign(block.hash, t.k0))