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