ecc: CHANGE point representation of Curve25519.
authorNIIBE Yutaka <gniibe@fsij.org>
Sat, 5 Dec 2015 01:08:51 +0000 (10:08 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Sat, 5 Dec 2015 01:08:51 +0000 (10:08 +0900)
commitdd3d06e7f113cf7608f060ceb043262efd0b0c9d
tree5295e15f1caf76ef1c11353c2f22540ec394e4fc
parent6fadbcd088e2af3e48407b95d8d0c2a8b7ad6c38
ecc: CHANGE point representation of Curve25519.

* cipher/ecc-misc.c (_gcry_ecc_mont_decodepoint): Decode point with
the prefix 0x40, additional 0x00 by MPI handling, and shorter octets
by MPI normalization.
* cipher/ecc.c (ecc_generate, ecc_encrypt_raw, ecc_decrypt_raw):
Always add the prefix 0x40.

--

Curve25519 native little-endian point representation is not friendly
to existing practice of OpenPGP code, where MPI is assumed.  MPI
handling might insert 0x00 in the beginning to avoid sign confusion.
MPI handling also might remove 0x00s in the front.  So, it is safe
to put the prefix 0x40.

While we support old point representation of no prefix in
ecc_mont_decodepoint, new libgcrypt always put the prefix.
cipher/ecc-misc.c
cipher/ecc.c