mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge remote-tracking branch 'upstream/develop' into stateTests
Conflicts: test/vm.cpp test/vmArithmeticTestFiller.json test/vmSha3TestFiller.json
This commit is contained in:
commit
8e6bfb1fb3
311
crypto.cpp
311
crypto.cpp
@ -28,6 +28,7 @@
|
||||
#include <libethereum/Transaction.h>
|
||||
#include <boost/test/unit_test.hpp>
|
||||
#include <libdevcrypto/EC.h>
|
||||
#include <libdevcrypto/SHA3MAC.h>
|
||||
#include "TestHelperCrypto.h"
|
||||
|
||||
using namespace std;
|
||||
@ -46,107 +47,220 @@ BOOST_AUTO_TEST_CASE(common_encrypt_decrypt)
|
||||
KeyPair k = KeyPair::create();
|
||||
bytes cipher;
|
||||
encrypt(k.pub(), bcr, cipher);
|
||||
assert(cipher != asBytes(message) && cipher.size() > 0);
|
||||
BOOST_REQUIRE(cipher != asBytes(message) && cipher.size() > 0);
|
||||
|
||||
bytes plain;
|
||||
decrypt(k.sec(), bytesConstRef(&cipher), plain);
|
||||
|
||||
assert(asString(plain) == message);
|
||||
assert(plain == asBytes(message));
|
||||
BOOST_REQUIRE(asString(plain) == message);
|
||||
BOOST_REQUIRE(plain == asBytes(message));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(cryptopp_vs_secp256k1)
|
||||
{
|
||||
ECIES<ECP>::Decryptor d(pp::PRNG(), pp::secp256k1());
|
||||
ECIES<ECP>::Decryptor d(pp::PRNG, pp::secp256k1Curve);
|
||||
ECIES<ECP>::Encryptor e(d.GetKey());
|
||||
|
||||
Secret s;
|
||||
pp::SecretFromDL_PrivateKey_EC(d.GetKey(), s);
|
||||
pp::exportPrivateKey(d.GetKey(), s);
|
||||
|
||||
Public p;
|
||||
pp::PublicFromDL_PublicKey_EC(e.GetKey(), p);
|
||||
pp::exportPublicKey(e.GetKey(), p);
|
||||
|
||||
assert(dev::toAddress(s) == right160(dev::sha3(p.ref())));
|
||||
BOOST_REQUIRE(dev::toAddress(s) == right160(dev::sha3(p.ref())));
|
||||
|
||||
Secret previous = s;
|
||||
for (auto i = 0; i < 30; i++)
|
||||
for (auto i = 0; i < 2; i++)
|
||||
{
|
||||
ECIES<ECP>::Decryptor d(pp::PRNG(), pp::secp256k1());
|
||||
ECIES<ECP>::Decryptor d(pp::PRNG, pp::secp256k1Curve);
|
||||
ECIES<ECP>::Encryptor e(d.GetKey());
|
||||
|
||||
Secret s;
|
||||
pp::SecretFromDL_PrivateKey_EC(d.GetKey(), s);
|
||||
assert(s != previous);
|
||||
pp::exportPrivateKey(d.GetKey(), s);
|
||||
BOOST_REQUIRE(s != previous);
|
||||
|
||||
Public p;
|
||||
pp::PublicFromDL_PublicKey_EC(e.GetKey(), p);
|
||||
pp::exportPublicKey(e.GetKey(), p);
|
||||
|
||||
assert(dev::toAddress(s) == right160(dev::sha3(p.ref())));
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(cryptopp_keys_cryptor_sipaseckp256k1)
|
||||
h160 secp256k1Addr = dev::toAddress(s);
|
||||
h160 cryptoppAddr = right160(dev::sha3(p.ref()));
|
||||
if (secp256k1Addr != cryptoppAddr)
|
||||
{
|
||||
KeyPair k = KeyPair::create();
|
||||
Secret s = k.sec();
|
||||
BOOST_REQUIRE(secp256k1Addr == cryptoppAddr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Convert secret to exponent used by pp
|
||||
Integer e = pp::ExponentFromSecret(s);
|
||||
BOOST_AUTO_TEST_CASE(cryptopp_cryptopp_secp256k1libport)
|
||||
{
|
||||
// cryptopp implementation of secp256k1lib sign_compact w/recid parameter and recovery of public key from signature
|
||||
|
||||
// Test that exported DL_EC private is same as exponent from Secret
|
||||
CryptoPP::DL_PrivateKey_EC<CryptoPP::ECP> privatek;
|
||||
privatek.AccessGroupParameters().Initialize(pp::secp256k1());
|
||||
privatek.SetPrivateExponent(e);
|
||||
assert(e == privatek.GetPrivateExponent());
|
||||
// base secret
|
||||
Secret secret(sha3("privacy"));
|
||||
|
||||
// Test that exported secret is same as decryptor(privatek) secret
|
||||
ECIES<ECP>::Decryptor d;
|
||||
d.AccessKey().AccessGroupParameters().Initialize(pp::secp256k1());
|
||||
d.AccessKey().SetPrivateExponent(e);
|
||||
assert(d.AccessKey().GetPrivateExponent() == e);
|
||||
// we get ec params from signer
|
||||
const CryptoPP::DL_GroupParameters_EC<CryptoPP::ECP> params = pp::secp256k1Params;
|
||||
ECDSA<ECP, SHA3_256>::Signer signer;
|
||||
|
||||
// Test that decryptor->encryptor->public == private->makepublic->public
|
||||
CryptoPP::DL_PublicKey_EC<CryptoPP::ECP> pubk;
|
||||
pubk.AccessGroupParameters().Initialize(pp::secp256k1());
|
||||
privatek.MakePublicKey(pubk);
|
||||
// e := sha3(msg)
|
||||
bytes e(fromHex("0x01"));
|
||||
e.resize(32);
|
||||
int tests = 2; // Oct 29: successful @ 1500
|
||||
while (sha3(&e, &e), secret = sha3(secret.asBytes()), tests--)
|
||||
{
|
||||
KeyPair key(secret);
|
||||
Public pkey = key.pub();
|
||||
pp::initializeDLScheme(secret, signer);
|
||||
|
||||
ECIES<ECP>::Encryptor enc(d);
|
||||
assert(pubk.GetPublicElement() == enc.AccessKey().GetPublicElement());
|
||||
h256 he(sha3(e));
|
||||
Integer heInt(he.asBytes().data(), 32);
|
||||
h256 k(crypto::kdf(secret, he));
|
||||
Integer kInt(k.asBytes().data(), 32);
|
||||
kInt %= params.GetSubgroupOrder()-1;
|
||||
|
||||
// Test against sipa/seckp256k1
|
||||
Public p;
|
||||
pp::PublicFromExponent(pp::ExponentFromSecret(s), p);
|
||||
assert(toAddress(s) == dev::right160(dev::sha3(p.ref())));
|
||||
assert(k.pub() == p);
|
||||
ECP::Point rp = params.ExponentiateBase(kInt);
|
||||
Integer const& q = params.GetGroupOrder();
|
||||
Integer r = params.ConvertElementToInteger(rp);
|
||||
int recid = ((r >= q) ? 2 : 0) | (rp.y.IsOdd() ? 1 : 0);
|
||||
|
||||
Integer kInv = kInt.InverseMod(q);
|
||||
Integer s = (kInv * (Integer(secret.asBytes().data(), 32)*r + heInt)) % q;
|
||||
BOOST_REQUIRE(!!r && !!s);
|
||||
|
||||
/*
|
||||
// For future reference:
|
||||
// According to maths, this codepath can't be reached, however, it's in secp256k1.
|
||||
// Commenting this out diverges from codebase implementation.
|
||||
// To be removed after upstream PR and proof are evaulated.
|
||||
|
||||
if (s > params.GetSubgroupOrder())
|
||||
{
|
||||
// note: this rarely happens
|
||||
s = params.GetGroupOrder() - s;
|
||||
if (recid)
|
||||
recid ^= 1;
|
||||
}
|
||||
*/
|
||||
|
||||
Signature sig;
|
||||
r.Encode(sig.data(), 32);
|
||||
s.Encode(sig.data() + 32, 32);
|
||||
sig[64] = recid;
|
||||
|
||||
Public p = dev::recover(sig, he);
|
||||
BOOST_REQUIRE(p == pkey);
|
||||
|
||||
// verify w/cryptopp
|
||||
BOOST_REQUIRE(crypto::verify(pkey, sig, bytesConstRef(&e)));
|
||||
|
||||
// verify with secp256k1lib
|
||||
byte encpub[65] = {0x04};
|
||||
memcpy(&encpub[1], pkey.data(), 64);
|
||||
byte dersig[72];
|
||||
size_t cssz = DSAConvertSignatureFormat(dersig, 72, DSA_DER, sig.data(), 64, DSA_P1363);
|
||||
BOOST_CHECK(cssz <= 72);
|
||||
BOOST_REQUIRE(1 == secp256k1_ecdsa_verify(he.data(), sizeof(he), dersig, cssz, encpub, 65));
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(cryptopp_ecdsa_sipaseckp256k1)
|
||||
{
|
||||
// cryptopp integer encoding
|
||||
Integer nHex("f2ee15ea639b73fa3db9b34a245bdfa015c260c598b211bf05a1ecc4b3e3b4f2H");
|
||||
Integer nB(fromHex("f2ee15ea639b73fa3db9b34a245bdfa015c260c598b211bf05a1ecc4b3e3b4f2").data(), 32);
|
||||
BOOST_REQUIRE(nHex == nB);
|
||||
|
||||
bytes sbytes(fromHex("0x01"));
|
||||
Secret secret(sha3(sbytes)); // 5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2
|
||||
KeyPair key(secret);
|
||||
|
||||
bytes m(fromHex("0x01"));
|
||||
int tests = 2;
|
||||
while (m[0]++, tests--)
|
||||
{
|
||||
h256 hm(sha3(m));
|
||||
Integer hInt(hm.asBytes().data(), 32);
|
||||
h256 k(hm ^ key.sec());
|
||||
Integer kInt(k.asBytes().data(), 32);
|
||||
|
||||
// raw sign w/cryptopp (doesn't pass through cryptopp hash filter)
|
||||
ECDSA<ECP, SHA3_256>::Signer signer;
|
||||
pp::initializeDLScheme(key.sec(), signer);
|
||||
Integer r, s;
|
||||
signer.RawSign(kInt, hInt, r, s);
|
||||
|
||||
// verify cryptopp raw-signature w/cryptopp
|
||||
ECDSA<ECP, SHA3_256>::Verifier verifier;
|
||||
pp::initializeDLScheme(key.pub(), verifier);
|
||||
Signature sigppraw;
|
||||
r.Encode(sigppraw.data(), 32);
|
||||
s.Encode(sigppraw.data() + 32, 32);
|
||||
BOOST_REQUIRE(verifier.VerifyMessage(m.data(), m.size(), sigppraw.data(), 64));
|
||||
BOOST_REQUIRE(crypto::verify(key.pub(), sigppraw, bytesConstRef(&m)));
|
||||
BOOST_REQUIRE(dev::verify(key.pub(), sigppraw, hm));
|
||||
|
||||
// sign with cryptopp, verify, recover w/sec256lib
|
||||
Signature seclibsig(dev::sign(key.sec(), hm));
|
||||
BOOST_REQUIRE(verifier.VerifyMessage(m.data(), m.size(), seclibsig.data(), 64));
|
||||
BOOST_REQUIRE(crypto::verify(key.pub(), seclibsig, bytesConstRef(&m)));
|
||||
BOOST_REQUIRE(dev::verify(key.pub(), seclibsig, hm));
|
||||
BOOST_REQUIRE(dev::recover(seclibsig, hm) == key.pub());
|
||||
|
||||
// sign with cryptopp (w/hash filter?), verify with cryptopp
|
||||
bytes sigppb(signer.MaxSignatureLength());
|
||||
size_t ssz = signer.SignMessage(pp::PRNG, m.data(), m.size(), sigppb.data());
|
||||
Signature sigpp;
|
||||
memcpy(sigpp.data(), sigppb.data(), 64);
|
||||
BOOST_REQUIRE(verifier.VerifyMessage(m.data(), m.size(), sigppb.data(), ssz));
|
||||
BOOST_REQUIRE(crypto::verify(key.pub(), sigpp, bytesConstRef(&m)));
|
||||
BOOST_REQUIRE(dev::verify(key.pub(), sigpp, hm));
|
||||
|
||||
// sign with cryptopp and stringsource hash filter
|
||||
string sigstr;
|
||||
StringSource ssrc(asString(m), true, new SignerFilter(pp::PRNG, signer, new StringSink(sigstr)));
|
||||
FixedHash<sizeof(Signature)> retsig((byte const*)sigstr.data(), Signature::ConstructFromPointer);
|
||||
BOOST_REQUIRE(verifier.VerifyMessage(m.data(), m.size(), retsig.data(), 64));
|
||||
BOOST_REQUIRE(crypto::verify(key.pub(), retsig, bytesConstRef(&m)));
|
||||
BOOST_REQUIRE(dev::verify(key.pub(), retsig, hm));
|
||||
|
||||
/// verification w/sec256lib
|
||||
// requires public key and sig in standard format
|
||||
byte encpub[65] = {0x04};
|
||||
memcpy(&encpub[1], key.pub().data(), 64);
|
||||
byte dersig[72];
|
||||
|
||||
// verify sec256lib sig w/sec256lib
|
||||
size_t cssz = DSAConvertSignatureFormat(dersig, 72, DSA_DER, seclibsig.data(), 64, DSA_P1363);
|
||||
BOOST_CHECK(cssz <= 72);
|
||||
BOOST_REQUIRE(1 == secp256k1_ecdsa_verify(hm.data(), sizeof(hm), dersig, cssz, encpub, 65));
|
||||
|
||||
// verify cryptopp-raw sig w/sec256lib
|
||||
cssz = DSAConvertSignatureFormat(dersig, 72, DSA_DER, sigppraw.data(), 64, DSA_P1363);
|
||||
BOOST_CHECK(cssz <= 72);
|
||||
BOOST_REQUIRE(1 == secp256k1_ecdsa_verify(hm.data(), sizeof(hm), dersig, cssz, encpub, 65));
|
||||
|
||||
// verify cryptopp sig w/sec256lib
|
||||
cssz = DSAConvertSignatureFormat(dersig, 72, DSA_DER, sigppb.data(), 64, DSA_P1363);
|
||||
BOOST_CHECK(cssz <= 72);
|
||||
BOOST_REQUIRE(1 == secp256k1_ecdsa_verify(hm.data(), sizeof(hm), dersig, cssz, encpub, 65));
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(cryptopp_public_export_import)
|
||||
{
|
||||
ECIES<ECP>::Decryptor d(pp::PRNG(), pp::secp256k1());
|
||||
ECIES<ECP>::Decryptor d(pp::PRNG, pp::secp256k1Curve);
|
||||
ECIES<ECP>::Encryptor e(d.GetKey());
|
||||
|
||||
Secret s;
|
||||
pp::SecretFromDL_PrivateKey_EC(d.GetKey(), s);
|
||||
pp::exportPrivateKey(d.GetKey(), s);
|
||||
Public p;
|
||||
pp::PublicFromDL_PublicKey_EC(e.GetKey(), p);
|
||||
pp::exportPublicKey(e.GetKey(), p);
|
||||
Address addr = right160(dev::sha3(p.ref()));
|
||||
assert(toAddress(s) == addr);
|
||||
BOOST_REQUIRE(toAddress(s) == addr);
|
||||
|
||||
KeyPair l(s);
|
||||
assert(l.address() == addr);
|
||||
|
||||
DL_PublicKey_EC<ECP> pub;
|
||||
pub.Initialize(pp::secp256k1(), pp::PointFromPublic(p));
|
||||
assert(pub.GetPublicElement() == e.GetKey().GetPublicElement());
|
||||
|
||||
KeyPair k = KeyPair::create();
|
||||
Public p2;
|
||||
pp::PublicFromExponent(pp::ExponentFromSecret(k.sec()), p2);
|
||||
assert(k.pub() == p2);
|
||||
|
||||
Address a = k.address();
|
||||
Address a2 = toAddress(k.sec());
|
||||
assert(a2 == a);
|
||||
BOOST_REQUIRE(l.address() == addr);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ecies_eckeypair)
|
||||
@ -158,10 +272,10 @@ BOOST_AUTO_TEST_CASE(ecies_eckeypair)
|
||||
|
||||
bytes b = asBytes(message);
|
||||
encrypt(k.pub(), b);
|
||||
assert(b != asBytes(original));
|
||||
BOOST_REQUIRE(b != asBytes(original));
|
||||
|
||||
decrypt(k.sec(), b);
|
||||
assert(b == asBytes(original));
|
||||
BOOST_REQUIRE(b == asBytes(original));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ecdhe_aes128_ctr_sha3mac)
|
||||
@ -172,9 +286,6 @@ BOOST_AUTO_TEST_CASE(ecdhe_aes128_ctr_sha3mac)
|
||||
// All connections should share seed for PRF (or PRNG) for nonces
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(cryptopp_ecies_message)
|
||||
@ -183,7 +294,7 @@ BOOST_AUTO_TEST_CASE(cryptopp_ecies_message)
|
||||
|
||||
string const message("Now is the time for all good persons to come to the aide of humanity.");
|
||||
|
||||
ECIES<ECP>::Decryptor localDecryptor(pp::PRNG(), pp::secp256k1());
|
||||
ECIES<ECP>::Decryptor localDecryptor(pp::PRNG, pp::secp256k1Curve);
|
||||
SavePrivateKey(localDecryptor.GetPrivateKey());
|
||||
|
||||
ECIES<ECP>::Encryptor localEncryptor(localDecryptor);
|
||||
@ -191,43 +302,43 @@ BOOST_AUTO_TEST_CASE(cryptopp_ecies_message)
|
||||
|
||||
ECIES<ECP>::Decryptor futureDecryptor;
|
||||
LoadPrivateKey(futureDecryptor.AccessPrivateKey());
|
||||
futureDecryptor.GetPrivateKey().ThrowIfInvalid(pp::PRNG(), 3);
|
||||
futureDecryptor.GetPrivateKey().ThrowIfInvalid(pp::PRNG, 3);
|
||||
|
||||
ECIES<ECP>::Encryptor futureEncryptor;
|
||||
LoadPublicKey(futureEncryptor.AccessPublicKey());
|
||||
futureEncryptor.GetPublicKey().ThrowIfInvalid(pp::PRNG(), 3);
|
||||
futureEncryptor.GetPublicKey().ThrowIfInvalid(pp::PRNG, 3);
|
||||
|
||||
// encrypt/decrypt with local
|
||||
string cipherLocal;
|
||||
StringSource ss1 (message, true, new PK_EncryptorFilter(pp::PRNG(), localEncryptor, new StringSink(cipherLocal) ) );
|
||||
StringSource ss1 (message, true, new PK_EncryptorFilter(pp::PRNG, localEncryptor, new StringSink(cipherLocal) ) );
|
||||
string plainLocal;
|
||||
StringSource ss2 (cipherLocal, true, new PK_DecryptorFilter(pp::PRNG(), localDecryptor, new StringSink(plainLocal) ) );
|
||||
StringSource ss2 (cipherLocal, true, new PK_DecryptorFilter(pp::PRNG, localDecryptor, new StringSink(plainLocal) ) );
|
||||
|
||||
// encrypt/decrypt with future
|
||||
string cipherFuture;
|
||||
StringSource ss3 (message, true, new PK_EncryptorFilter(pp::PRNG(), futureEncryptor, new StringSink(cipherFuture) ) );
|
||||
StringSource ss3 (message, true, new PK_EncryptorFilter(pp::PRNG, futureEncryptor, new StringSink(cipherFuture) ) );
|
||||
string plainFuture;
|
||||
StringSource ss4 (cipherFuture, true, new PK_DecryptorFilter(pp::PRNG(), futureDecryptor, new StringSink(plainFuture) ) );
|
||||
StringSource ss4 (cipherFuture, true, new PK_DecryptorFilter(pp::PRNG, futureDecryptor, new StringSink(plainFuture) ) );
|
||||
|
||||
// decrypt local w/future
|
||||
string plainFutureFromLocal;
|
||||
StringSource ss5 (cipherLocal, true, new PK_DecryptorFilter(pp::PRNG(), futureDecryptor, new StringSink(plainFutureFromLocal) ) );
|
||||
StringSource ss5 (cipherLocal, true, new PK_DecryptorFilter(pp::PRNG, futureDecryptor, new StringSink(plainFutureFromLocal) ) );
|
||||
|
||||
// decrypt future w/local
|
||||
string plainLocalFromFuture;
|
||||
StringSource ss6 (cipherFuture, true, new PK_DecryptorFilter(pp::PRNG(), localDecryptor, new StringSink(plainLocalFromFuture) ) );
|
||||
StringSource ss6 (cipherFuture, true, new PK_DecryptorFilter(pp::PRNG, localDecryptor, new StringSink(plainLocalFromFuture) ) );
|
||||
|
||||
|
||||
assert(plainLocal == message);
|
||||
assert(plainFuture == plainLocal);
|
||||
assert(plainFutureFromLocal == plainLocal);
|
||||
assert(plainLocalFromFuture == plainLocal);
|
||||
BOOST_REQUIRE(plainLocal == message);
|
||||
BOOST_REQUIRE(plainFuture == plainLocal);
|
||||
BOOST_REQUIRE(plainFutureFromLocal == plainLocal);
|
||||
BOOST_REQUIRE(plainLocalFromFuture == plainLocal);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(cryptopp_aes128_ctr)
|
||||
{
|
||||
const int aesKeyLen = 16;
|
||||
assert(sizeof(char) == sizeof(byte));
|
||||
BOOST_REQUIRE(sizeof(char) == sizeof(byte));
|
||||
|
||||
// generate test key
|
||||
AutoSeededRandomPool rng;
|
||||
@ -250,7 +361,7 @@ BOOST_AUTO_TEST_CASE(cryptopp_aes128_ctr)
|
||||
CTR_Mode<AES>::Encryption e;
|
||||
e.SetKeyWithIV(key, key.size(), ctr);
|
||||
e.ProcessData(out, in, text.size());
|
||||
assert(text != original);
|
||||
BOOST_REQUIRE(text != original);
|
||||
cipherCopy = text;
|
||||
}
|
||||
catch(CryptoPP::Exception& e)
|
||||
@ -263,7 +374,7 @@ BOOST_AUTO_TEST_CASE(cryptopp_aes128_ctr)
|
||||
CTR_Mode< AES >::Decryption d;
|
||||
d.SetKeyWithIV(key, key.size(), ctr);
|
||||
d.ProcessData(out, in, text.size());
|
||||
assert(text == original);
|
||||
BOOST_REQUIRE(text == original);
|
||||
}
|
||||
catch(CryptoPP::Exception& e)
|
||||
{
|
||||
@ -274,7 +385,7 @@ BOOST_AUTO_TEST_CASE(cryptopp_aes128_ctr)
|
||||
// reencrypt ciphertext...
|
||||
try
|
||||
{
|
||||
assert(cipherCopy != text);
|
||||
BOOST_REQUIRE(cipherCopy != text);
|
||||
in = (unsigned char*)&cipherCopy[0];
|
||||
out = (unsigned char*)&cipherCopy[0];
|
||||
|
||||
@ -283,7 +394,7 @@ BOOST_AUTO_TEST_CASE(cryptopp_aes128_ctr)
|
||||
e.ProcessData(out, in, text.size());
|
||||
|
||||
// yep, ctr mode.
|
||||
assert(cipherCopy == original);
|
||||
BOOST_REQUIRE(cipherCopy == original);
|
||||
}
|
||||
catch(CryptoPP::Exception& e)
|
||||
{
|
||||
@ -295,7 +406,7 @@ BOOST_AUTO_TEST_CASE(cryptopp_aes128_ctr)
|
||||
BOOST_AUTO_TEST_CASE(cryptopp_aes128_cbc)
|
||||
{
|
||||
const int aesKeyLen = 16;
|
||||
assert(sizeof(char) == sizeof(byte));
|
||||
BOOST_REQUIRE(sizeof(char) == sizeof(byte));
|
||||
|
||||
AutoSeededRandomPool rng;
|
||||
SecByteBlock key(0x00, aesKeyLen);
|
||||
@ -310,11 +421,11 @@ BOOST_AUTO_TEST_CASE(cryptopp_aes128_cbc)
|
||||
|
||||
CryptoPP::CBC_Mode<Rijndael>::Encryption cbcEncryption(key, key.size(), iv);
|
||||
cbcEncryption.ProcessData((byte*)&string128[0], (byte*)&string128[0], string128.size());
|
||||
assert(string128 != plainOriginal);
|
||||
BOOST_REQUIRE(string128 != plainOriginal);
|
||||
|
||||
CBC_Mode<Rijndael>::Decryption cbcDecryption(key, key.size(), iv);
|
||||
cbcDecryption.ProcessData((byte*)&string128[0], (byte*)&string128[0], string128.size());
|
||||
assert(plainOriginal == string128);
|
||||
BOOST_REQUIRE(plainOriginal == string128);
|
||||
|
||||
|
||||
// plaintext whose size isn't divisible by block size must use stream filter for padding
|
||||
@ -324,10 +435,10 @@ BOOST_AUTO_TEST_CASE(cryptopp_aes128_cbc)
|
||||
string cipher;
|
||||
StreamTransformationFilter* aesStream = new StreamTransformationFilter(cbcEncryption, new StringSink(cipher));
|
||||
StringSource source(string192, true, aesStream);
|
||||
assert(cipher.size() == 32);
|
||||
BOOST_REQUIRE(cipher.size() == 32);
|
||||
|
||||
cbcDecryption.ProcessData((byte*)&cipher[0], (byte*)&string192[0], cipher.size());
|
||||
assert(string192 == plainOriginal);
|
||||
BOOST_REQUIRE(string192 == plainOriginal);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(eth_keypairs)
|
||||
@ -340,14 +451,14 @@ BOOST_AUTO_TEST_CASE(eth_keypairs)
|
||||
BOOST_REQUIRE(p.address() == Address(fromHex("8a40bfaa73256b60764c1bf40675a99083efb075")));
|
||||
{
|
||||
eth::Transaction t(1000, 0, 0, h160(fromHex("944400f4b88ac9589a0f17ed4671da26bddb668b")), bytes(), 0, p.secret());
|
||||
auto rlp = t.rlp(false);
|
||||
auto rlp = t.rlp(eth::WithoutSignature);
|
||||
cnote << RLP(rlp);
|
||||
cnote << toHex(rlp);
|
||||
cnote << t.sha3(false);
|
||||
rlp = t.rlp(true);
|
||||
cnote << t.sha3(eth::WithoutSignature);
|
||||
rlp = t.rlp(eth::WithSignature);
|
||||
cnote << RLP(rlp);
|
||||
cnote << toHex(rlp);
|
||||
cnote << t.sha3(true);
|
||||
cnote << t.sha3(eth::WithSignature);
|
||||
BOOST_REQUIRE(t.sender() == p.address());
|
||||
}
|
||||
|
||||
@ -360,18 +471,18 @@ int cryptoTest()
|
||||
secp256k1_start();
|
||||
|
||||
KeyPair p(Secret(fromHex("3ecb44df2159c26e0f995712d4f39b6f6e499b40749b1cf1246c37f9516cb6a4")));
|
||||
assert(p.pub() == Public(fromHex("97466f2b32bc3bb76d4741ae51cd1d8578b48d3f1e68da206d47321aec267ce78549b514e4453d74ef11b0cd5e4e4c364effddac8b51bcfc8de80682f952896f")));
|
||||
assert(p.address() == Address(fromHex("8a40bfaa73256b60764c1bf40675a99083efb075")));
|
||||
BOOST_REQUIRE(p.pub() == Public(fromHex("97466f2b32bc3bb76d4741ae51cd1d8578b48d3f1e68da206d47321aec267ce78549b514e4453d74ef11b0cd5e4e4c364effddac8b51bcfc8de80682f952896f")));
|
||||
BOOST_REQUIRE(p.address() == Address(fromHex("8a40bfaa73256b60764c1bf40675a99083efb075")));
|
||||
{
|
||||
eth::Transaction t(1000, 0, 0, h160(fromHex("944400f4b88ac9589a0f17ed4671da26bddb668b")), bytes(), 0, p.secret());
|
||||
auto rlp = t.rlp(false);
|
||||
auto rlp = t.rlp(eth::WithoutSignature);
|
||||
cnote << RLP(rlp);
|
||||
cnote << toHex(rlp);
|
||||
cnote << t.sha3(false);
|
||||
rlp = t.rlp(true);
|
||||
cnote << t.sha3(eth::WithoutSignature);
|
||||
rlp = t.rlp(eth::WithSignature);
|
||||
cnote << RLP(rlp);
|
||||
cnote << toHex(rlp);
|
||||
cnote << t.sha3(true);
|
||||
cnote << t.sha3(eth::WithSignature);
|
||||
assert(t.sender() == p.address());
|
||||
}
|
||||
|
||||
@ -397,8 +508,8 @@ int cryptoTest()
|
||||
|
||||
auto msg = t.rlp(false);
|
||||
cout << "TX w/o SIG: " << RLP(msg) << endl;
|
||||
cout << "RLP(TX w/o SIG): " << toHex(t.rlpString(false)) << endl;
|
||||
std::string hmsg = sha3(t.rlpString(false), false);
|
||||
cout << "RLP(TX w/o SIG): " << toHex(t.rlp(false)) << endl;
|
||||
std::string hmsg = sha3(t.rlp(false), false);
|
||||
cout << "SHA256(RLP(TX w/o SIG)): 0x" << toHex(hmsg) << endl;
|
||||
|
||||
bytes privkey = sha3Bytes("123");
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -12,7 +12,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6002600360045057",
|
||||
"code" : "0x6002600360045055",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -40,7 +40,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x5060026003600457",
|
||||
"code" : "0x5060026003600455",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -68,7 +68,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600260035157",
|
||||
"code" : "0x600260035155",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -96,7 +96,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600260035257",
|
||||
"code" : "0x600260035255",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -488,7 +488,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6023600058",
|
||||
"code" : "0x600056",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -516,7 +516,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x60236007586001600257",
|
||||
"code" : "0x60236007566001600255",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -543,7 +543,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x602360085860015d600257",
|
||||
"code" : "0x602360075660015b600255",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -571,7 +571,63 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x602360075860015d600257",
|
||||
"code" : "0x602360085660015b600255",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
"exec" : {
|
||||
"address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
|
||||
"origin" : "cd1722f3947def4cf144679da39c4c32bdc35681",
|
||||
"caller" : "cd1722f3947def4cf144679da39c4c32bdc35681",
|
||||
"value" : "1000000000000000000",
|
||||
"data" : "",
|
||||
"gasPrice" : "100000000000000",
|
||||
"gas" : "10000"
|
||||
}
|
||||
},
|
||||
|
||||
"jump0_jumpdest2": {
|
||||
"env" : {
|
||||
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6",
|
||||
"currentNumber" : "0",
|
||||
"currentGasLimit" : "1000000",
|
||||
"currentDifficulty" : "256",
|
||||
"currentTimestamp" : 1,
|
||||
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"
|
||||
},
|
||||
"pre" : {
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6023600a6008505660015b600255",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
"exec" : {
|
||||
"address" : "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6",
|
||||
"origin" : "cd1722f3947def4cf144679da39c4c32bdc35681",
|
||||
"caller" : "cd1722f3947def4cf144679da39c4c32bdc35681",
|
||||
"value" : "1000000000000000000",
|
||||
"data" : "",
|
||||
"gasPrice" : "100000000000000",
|
||||
"gas" : "10000"
|
||||
}
|
||||
},
|
||||
|
||||
"jump0_jumpdest3": {
|
||||
"env" : {
|
||||
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6",
|
||||
"currentNumber" : "0",
|
||||
"currentGasLimit" : "1000000",
|
||||
"currentDifficulty" : "256",
|
||||
"currentTimestamp" : 1,
|
||||
"currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba"
|
||||
},
|
||||
"pre" : {
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6023600b6008505660015b600255",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -599,7 +655,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x602360016009596001600257",
|
||||
"code" : "0x602360016009576001600255",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -627,7 +683,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x60236001600a5960015d600257",
|
||||
"code" : "0x60236001600a5760015b600255",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -655,7 +711,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x602360006009596001600257",
|
||||
"code" : "0x602360006009576001600255",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -683,7 +739,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff596002600357",
|
||||
"code" : "0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff576002600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
|
@ -12,7 +12,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x60ff600357",
|
||||
"code" : "0x60ff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -68,7 +68,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x61eeff600357",
|
||||
"code" : "0x61eeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -96,7 +96,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x62ddeeff600357",
|
||||
"code" : "0x62ddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -124,7 +124,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x63ccddeeff600357",
|
||||
"code" : "0x63ccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -152,7 +152,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x64bbccddeeff600357",
|
||||
"code" : "0x64bbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -180,7 +180,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x65aabbccddeeff600357",
|
||||
"code" : "0x65aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -208,7 +208,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6699aabbccddeeff600357",
|
||||
"code" : "0x6699aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -236,7 +236,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x678899aabbccddeeff600357",
|
||||
"code" : "0x678899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -264,7 +264,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x68778899aabbccddeeff600357",
|
||||
"code" : "0x68778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -292,7 +292,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6966778899aabbccddeeff600357",
|
||||
"code" : "0x6966778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -320,7 +320,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6a5566778899aabbccddeeff600357",
|
||||
"code" : "0x6a5566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -348,7 +348,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6b445566778899aabbccddeeff600357",
|
||||
"code" : "0x6b445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -376,7 +376,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6c33445566778899aabbccddeeff600357",
|
||||
"code" : "0x6c33445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -404,7 +404,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6d2233445566778899aabbccddeeff600357",
|
||||
"code" : "0x6d2233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -432,7 +432,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6e112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x6e112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -460,7 +460,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6f10112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x6f10112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -488,7 +488,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x70ff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x70ff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -516,7 +516,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x71eeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x71eeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -544,7 +544,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x72ddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x72ddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -572,7 +572,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x73ccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x73ccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -600,7 +600,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x74bbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x74bbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -628,7 +628,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x75aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x75aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -656,7 +656,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7699aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x7699aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -684,7 +684,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x778899aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x778899aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -712,7 +712,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x78778899aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x78778899aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -740,7 +740,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7966778899aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x7966778899aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -769,7 +769,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7a5566778899aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x7a5566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -797,7 +797,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7b445566778899aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x7b445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -825,7 +825,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7c33445566778899aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x7c33445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -853,7 +853,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7d2233445566778899aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x7d2233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -881,7 +881,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7e112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x7e112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -909,7 +909,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -937,7 +937,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600357",
|
||||
"code" : "0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -965,7 +965,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff80600357",
|
||||
"code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff80600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -993,7 +993,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff81600357",
|
||||
"code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff81600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1021,7 +1021,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6002600181600357",
|
||||
"code" : "0x6002600181600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1049,7 +1049,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x60036002600182600357",
|
||||
"code" : "0x60036002600182600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1077,7 +1077,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600460036002600183600357",
|
||||
"code" : "0x600460036002600183600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1105,7 +1105,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6005600460036002600184600357",
|
||||
"code" : "0x6005600460036002600184600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1133,7 +1133,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x60066005600460036002600185600357",
|
||||
"code" : "0x60066005600460036002600185600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1161,7 +1161,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600760066005600460036002600186600357",
|
||||
"code" : "0x600760066005600460036002600186600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1189,7 +1189,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6008600760066005600460036002600187600357",
|
||||
"code" : "0x6008600760066005600460036002600187600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1217,7 +1217,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x60096008600760066005600460036002600188600357",
|
||||
"code" : "0x60096008600760066005600460036002600188600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1245,7 +1245,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600a60096008600760066005600460036002600189600357",
|
||||
"code" : "0x600a60096008600760066005600460036002600189600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1273,7 +1273,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600b600a6009600860076006600560046003600260018a600357",
|
||||
"code" : "0x600b600a6009600860076006600560046003600260018a600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1301,7 +1301,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600c600b600a6009600860076006600560046003600260018b600357",
|
||||
"code" : "0x600c600b600a6009600860076006600560046003600260018b600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1329,7 +1329,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600d600c600b600a6009600860076006600560046003600260018c600357",
|
||||
"code" : "0x600d600c600b600a6009600860076006600560046003600260018c600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1357,7 +1357,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600e600d600c600b600a6009600860076006600560046003600260018d600357",
|
||||
"code" : "0x600e600d600c600b600a6009600860076006600560046003600260018d600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1385,7 +1385,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600f600e600d600c600b600a6009600860076006600560046003600260018e600357",
|
||||
"code" : "0x600f600e600d600c600b600a6009600860076006600560046003600260018e600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1413,7 +1413,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6010600f600e600d600c600b600a6009600860076006600560046003600260018f600357",
|
||||
"code" : "0x6010600f600e600d600c600b600a6009600860076006600560046003600260018f600355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1441,7 +1441,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039057",
|
||||
"code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039055",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1469,7 +1469,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039157",
|
||||
"code" : "0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039155",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1497,7 +1497,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6002600160039157",
|
||||
"code" : "0x6002600160039155",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1525,7 +1525,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x60036002600160039257",
|
||||
"code" : "0x60036002600160039255",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1553,7 +1553,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600460036002600160039357",
|
||||
"code" : "0x600460036002600160039355",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1581,7 +1581,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6005600460036002600160039457",
|
||||
"code" : "0x6005600460036002600160039455",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1609,7 +1609,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x60066005600460036002600160039557",
|
||||
"code" : "0x60066005600460036002600160039555",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1637,7 +1637,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600760066005600460036002600160039657",
|
||||
"code" : "0x600760066005600460036002600160039655",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1665,7 +1665,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6008600760066005600460036002600160039757",
|
||||
"code" : "0x6008600760066005600460036002600160039755",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1693,7 +1693,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x60096008600760066005600460036002600160039857",
|
||||
"code" : "0x60096008600760066005600460036002600160039855",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1721,7 +1721,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600a60096008600760066005600460036002600160039957",
|
||||
"code" : "0x600a60096008600760066005600460036002600160039955",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1749,7 +1749,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600b600a60096008600760066005600460036002600160039a57",
|
||||
"code" : "0x600b600a60096008600760066005600460036002600160039a55",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1777,7 +1777,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600c600b600a60096008600760066005600460036002600160039b57",
|
||||
"code" : "0x600c600b600a60096008600760066005600460036002600160039b55",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1805,7 +1805,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600d600c600b600a60096008600760066005600460036002600160039c57",
|
||||
"code" : "0x600d600c600b600a60096008600760066005600460036002600160039c55",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1833,7 +1833,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600e600d600c600b600a60096008600760066005600460036002600160039d57",
|
||||
"code" : "0x600e600d600c600b600a60096008600760066005600460036002600160039d55",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1861,7 +1861,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x600f600e600d600c600b600a60096008600760066005600460036002600160039e57",
|
||||
"code" : "0x600f600e600d600c600b600a60096008600760066005600460036002600160039e55",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -1889,7 +1889,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "0x6010600f600e600d600c600b600a60096008600760066005600460036002600160039f57",
|
||||
"code" : "0x6010600f600e600d600c600b600a60096008600760066005600460036002600160039f55",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
|
@ -111,7 +111,7 @@
|
||||
}
|
||||
},
|
||||
|
||||
"sha3_3": {
|
||||
"sha3_4": {
|
||||
"env" : {
|
||||
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6",
|
||||
"currentNumber" : "0",
|
||||
@ -139,7 +139,7 @@
|
||||
}
|
||||
},
|
||||
|
||||
"sha3_4": {
|
||||
"sha3_5": {
|
||||
"env" : {
|
||||
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6",
|
||||
"currentNumber" : "0",
|
||||
@ -152,7 +152,7 @@
|
||||
"0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : {
|
||||
"balance" : "1000000000000000000",
|
||||
"nonce" : 0,
|
||||
"code" : "{ [[ 0 ]] (SHA3 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 100)}",
|
||||
"code" : "{ [[ 0 ]] (SHA3 10000 0xfffffffff )}",
|
||||
"storage": {}
|
||||
}
|
||||
},
|
||||
@ -167,7 +167,7 @@
|
||||
}
|
||||
},
|
||||
|
||||
"sha3_5": {
|
||||
"sha3_6": {
|
||||
"env" : {
|
||||
"previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6",
|
||||
"currentNumber" : "0",
|
||||
@ -193,5 +193,5 @@
|
||||
"gasPrice" : "100000000000000",
|
||||
"gas" : "10000"
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user