Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Jan 6, 2023. It is now read-only.

Conversation

@matluca
Copy link

@matluca matluca commented May 20, 2022

According to RFC4492 section 5.10 "the premaster
secret is the x-coordinate of the ECDH shared secret
elliptic curve point represented as an octet string.
Note that this octet string (Z in IEEE 1363 terminology),
as output by FE2OSP (Field Element to Octet String
Conversion Primitive), has constant length for any given
field; leading zeros found in this octet string MUST
NOT be truncated."

Therefore, FillBytes() and not Bytes() must be used
to convert the x-coordinate into []byte.

Notice that this is also done by the standard golang/tls
library when implementing Diffie-Hellman. (https://github.com/golang/go/blob/master/src/crypto/tls/key_schedule.go#L176)

According to RFC8422 section 5.10 "the premaster
secret is the x-coordinate of the ECDH shared secret
elliptic curve point represented as an octet string.
Note that this octet string (Z in IEEE 1363 terminology),
as output by FE2OSP (Field Element to Octet String
Conversion Primitive), has constant length for any given
field; leading zeros found in this octet string MUST
NOT be truncated."

Therefore, `FillBytes()` and not `Bytes()` must be used
to convert the x-coordinate into `[]byte`.

Notice that this is also done by the standard golang/tls
library when implementing Diffie-Hellman.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant