On Mon May 27, 2024 at 8:25 PM EEST, Jarkko Sakkinen wrote:
> Hi,
>
> The documentation of ecdsa_set_pub_key() is the following:
>
> /*
> * Set the public key given the raw uncompressed key data from an X509
> * certificate. The key data contain the concatenated X and Y coordinates of
> * the public key.
> */
>
> If you interpret this literally it would mean 64 bytes buffer for p256
> with two 32 byte blobs for x and y.
>
> With such buffer the function fails with -EINVAL, which is obvious from
> the code that does checks on the contents.
>
> Instead of responding to this, can you please fix the documentation bug?
>
> There was also badly documented stuff in akcipher that has been
> unreacted so far so putting also that one here:
>
> https://lore.kernel.org/keyrings/[email protected]/
>
> BR, Jarkko
The best reference I could quickly find is Wikipedia:
"The older uncompressed keys are 65 bytes, consisting of constant prefix
(0x04), followed by two 256-bit integers called x and y (2 * 32 bytes).
The prefix of a compressed key allows for the y value to be derived from
the x value."
The documentation says absolutely nothing about the prefix byte, and
neither Wikipedia nor kernel documentation has a reference to this
"older format".
BR, Jarkko