Пример #1
0
 def testSignAndVerify(self):
     msg = b'1231232131'
     keyPair = CryptoUtil.genKeyPair()  
     privKey = CryptoUtil.getPrivateKey(keyPair)
     pubKey = CryptoUtil.getPublicKey(keyPair)
     sig = CryptoUtil.signMessage(privKey, msg)
     self.assertTrue(CryptoUtil.verifySignature(pubKey, msg, sig), 'correct signature not verified')
Пример #2
0
 def testBadSignature(self):
     msg = b'1231232131'
     keyPair = CryptoUtil.genKeyPair()  
     privKey = CryptoUtil.getPrivateKey(keyPair)
     sig = CryptoUtil.signMessage(privKey, msg)
     keyPair2 = CryptoUtil.genKeyPair()
     pubKey2 = CryptoUtil.getPublicKey(keyPair2)
     self.assertFalse(CryptoUtil.verifySignature(pubKey2, msg, sig), 'incorrect signature was verified as correct')       
Пример #3
0
genesis.addOutput(genesisValue, scroogePubK)
genesis.finalize()

# Make an initial pool
initialPool = UTXOPool()
utxo = UTXO(genesis.getHash(), 0)
initialPool.addUTXO(utxo, genesis.getOutput(0))

# Note this transaction is not valid -- one of its inputs does not exist
tx2in2out = Transaction()
tx2in2out.addInput(genesis.hash, 0)
tx2in2out.addInput(genesis.hash, 1)
tx2in2out.addOutput(10.0, scroogePubK)
tx2in2out.addOutput(15.0, scroogePubK)
raw0 = tx2in2out.getRawDataToSign(0)
sig0 = CryptoUtil.signMessage(scroogePrivK, raw0)
tx2in2out.addSignature(sig0, 0)
raw1 = tx2in2out.getRawDataToSign(1)
sig1 = CryptoUtil.signMessage(scroogePrivK, raw1)
tx2in2out.addSignature(sig1, 1)
tx2in2out.finalize()

txValid = Transaction()
txValid.addInput(genesis.getHash(), 0)
txValid.addOutput(10.0, scroogePubK)
sig = CryptoUtil.signMessage(scroogePrivK, txValid.getRawDataToSign(0))
txValid.addSignature(sig, 0)
txValid.finalize()

txBadInput = Transaction()
txBadInput.addInput(genesis.getHash(), 1)
Пример #4
0
def signInput(tx, privKey, index):
    tx.addSignature(CryptoUtil.signMessage(privKey, tx.getRawDataToSign(index)), index)