1
1
Starting from a private key, a working functional example provides details for how an Ethereum address can be calculated from an uncompressed secp256k1 elliptic curve public key. This functional example made it clear the computation of an Ethereum address had to use the proper Keccak hashing function, quite different from the NIST SHA3 implementation. Was wondering if Ethereum supports compressed secp256k1 public keys, if so are there any test vectors for testing implementations?
Uncompressed Address Synthesis:
% echo b205a1e03ddf50247d8483435cd91f9c732bad281ad420061ab4310c33166276 | bx ec-to-public -u046cb84859e85b1d9a27e060fdede38bb818c93850fb6e42d9c7e4bd879f8b9153fd94ed48e1f63312dce58f4d778ff45a2e5abb08a39c1bc0241139f5e54de7df – skaht – 2016-05-22T21:55:56.947% ./kec -x -256 6cb84859e85b1d9a27e060fdede38bb818c93850fb6e42d9c7e4bd879f8b9153fd94ed48e1f63312dce58f4d778ff45a2e5abb08a39c1bc0241139f5e54de7df787EC5A5313A976F7BDF9EEDAFDEFC1937AE294C3BD55386A8B9775539D81653 – skaht – 2016-05-22T22:00:04.087Hypothesized Compressed Address Synthesis:
% echo b205a1e03ddf50247d8483435cd91f9c732bad281ad420061ab4310c33166276 | bx ec-to-public036cb84859e85b1d9a27e060fdede38bb818c93850fb6e42d9c7e4bd879f8b9153 – skaht – 2016-05-22T22:04:47.290% ./kec -x -256 6cb84859e85b1d9a27e060fdede38bb818c93850fb6e42d9c7e4bd879f8b915378389290CA1CDEE2ADC06DF05477163B24B75D3AE4714F48E76C144F4766CDE7 – skaht – 2016-05-22T22:07:52.273Since the public addresses above are not encoded, it does not appear there is a means to determine if the Ethereum key is uncompressed or compressed. This makes me think all Ethereum public addresses must be derived only from uncompressed addresses. – skaht – 2016-05-29T02:50:58.193