· 7 years ago · Jan 02, 2019, 03:40 PM
1from Crypto.Hash import keccak
2from ecdsa import SigningKey, SECP256k1
3
4ENCLAVE_ADDR = "0xdf22b3f1dbb0de0434b889ea7c1c0f0b1763f3ff"
5ENCLAVE_SECRET = "8af15acf1a2fd76828a8030772a8f9fe772f9917a77c38c208a83497d189cbde"
6ENCLAVE_PUBLIC = "71cf1e495ec34fab1132580f6d2df092ac917c8b629b44fdb0bf9723daf6ddaac42bb83785f5b7c47489f36824a329d141ea9be7f296104ffe3fbce5e9248eb9"
7
8def secretToVerifyingKey(secret):
9 secret_key = SigningKey.from_string(secret.decode("hex"), curve=SECP256k1)
10 return secret_key.get_verifying_key()
11
12def verifyingKeyToAddress(pub_key):
13 keccak_hash = keccak.new(digest_bits=256)
14 keccak_hash.update(pub_key.to_string())
15 return "0x"+keccak_hash.hexdigest()[24:]
16
17def secretToAddr(secret):
18 return verifyingKeyToAddress(secretToVerifyingKey(secret))
19
20assert secretToAddr(ENCLAVE_SECRET) == ENCLAVE_ADDR
21
22print "Verifying Key: ", secretToVerifyingKey(ENCLAVE_SECRET)
23print "Ethereum address: ", secretToAddr(ENCLAVE_SECRET)