# Why public key has two parts in my secure messaging client similar to signal

I am working on a Golang code similar to Signal protocol. I need to modify it. I am confused on tripartite Diffie-Hellman handshake part of code, i.e. why public key has two separate parts as compared to private key which has only one part in bytes as shown below. I can more info if needed. Thanks.

• Start with a primer on elliptic curve cryptography? – Squeamish Ossifrage Mar 24 '19 at 22:24
• And consider using Noise if you need to design a new protocol? – Squeamish Ossifrage Mar 24 '19 at 22:24
• Thanks a lot. A lecture on cryptography made me understood it. – Tahir Abbas Mar 24 '19 at 23:20

The answer to this question is simple. In simple words, in elliptic curve cryptography, the public key is calculated by multiplying the private key value $$s$$ with the base point $$G$$, which results a point on the elliptic curve point: $$W = s \cdot G$$. This point consists of has two values on the x-axis and one on y-axis if the curve is considered to be within a 2D coordinate system.