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 -u 046cb84859e85b1d9a27e060fdede38bb818c93850fb6e42d9c7e4bd879f8b9153fd94ed48e1f63312dce58f4d778ff45a2e5abb08a39c1bc0241139f5e54de7df – skaht May 22 '16 at 21:55
  • % ./kec -x -256 6cb84859e85b1d9a27e060fdede38bb818c93850fb6e42d9c7e4bd879f8b9153fd94ed48e1f63312dce58f4d778ff45a2e5abb08a39c1bc0241139f5e54de7df 787EC5A5313A976F7BDF9EEDAFDEFC1937AE294C3BD55386A8B9775539D81653 – skaht May 22 '16 at 22:00
  • Hypothesized Compressed Address Synthesis: % echo b205a1e03ddf50247d8483435cd91f9c732bad281ad420061ab4310c33166276 | bx ec-to-public 036cb84859e85b1d9a27e060fdede38bb818c93850fb6e42d9c7e4bd879f8b9153 – skaht May 22 '16 at 22:04
  • % ./kec -x -256 6cb84859e85b1d9a27e060fdede38bb818c93850fb6e42d9c7e4bd879f8b9153 78389290CA1CDEE2ADC06DF05477163B24B75D3AE4714F48E76C144F4766CDE7 – skaht May 22 '16 at 22:07
  • Since 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 May 29 '16 at 2:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.