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

CC BY-SA 4.0
2020-04-08T20:32:15.667Z
So if I have K_par as compressed I need to recover Y value using `ModPow(a, (p+1)/4, p)` ?
Allan Romanato
CC BY-SA 4.0
2020-04-08T20:42:22.997Z
@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).
Pieter Wuille
CC BY-SA 4.0
2020-04-08T20:15:11.420Z
2020-04-08T20:15:11.420Z
Ava Chow
<p>The addition operation in that context refers to the Elliptic Curve group operation ("point addition").</p>

<p>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.</p>

CC BY-SA 4.0
2020-04-08T20:12:14.010Z
2020-04-08T20:12:14.010Z
Pieter Wuille
<p>Reading the BIP 32 section of how to generate Public child key from Public parent key, I got stuck in the following:</p>

<blockquote>
  <p>The returned child key Ki is point(parse256(IL)) + Kpar.</p>
</blockquote>

<p>As I could understand <strong>point(p)</strong> 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?</p>

<bip32-hd-wallets>
BIP 32 Public Parent Key -> Public Child Key
Allan Romanato
# BIP 32 Public Parent Key -> Public Child Key

(Asked by: username_0 on 2020-04-08)

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?

**Tags:** bip32-hd-wallets


---

## 2 answers

### Answer by username_1 on 2020-04-08. Score: 1 | Accepted answer

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.

> **Comments:**
> **username_0**: So if I have K_par as compressed I need to recover Y value using `ModPow(a, (p+1)/4, p)` ?  
> **username_2**: @username_0 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).  

---

### Answer by username_2 on 2020-04-08. Score: 1

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.


---

