Reading the BIP 32 section of how to generate Public child key from Public parent key, I got stuck in the following:

The returned child key Ki is point(parse256(IL)) + Kpar.

As I could understand point(p) is the Elliptical Curve multiplication which will output X and Y coords, so how can I add them with Kpar? Also, it should return me a Compressed public key right?

2 Answers 2


A public key is an elliptic curve point. So K_par is also an elliptic curve point. You can then just do a EC point add to add the point given by point(p) with K_par to get a new point, which is also a public key.

  • So if I have K_par as compressed I need to recover Y value using ModPow(a, (p+1)/4, p) ? Commented Apr 8, 2020 at 20:32
  • 1
    @AllanRomanato Yes, converting a compressed serialization of a point to a point requires recovering the Y coordinate (and negating if necessary, to make the oddness match up). Commented Apr 8, 2020 at 20:42

The addition operation in that context refers to the Elliptic Curve group operation ("point addition").

The child key returned is a point, not a serialization. So the question of whether it's compressed or not is not technically relevant. In practice, every time a serialization of a point is used in BIP32, it is compressed though.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.