Skip to contentSkip to conversation

ecdsa_set_pub_key

DISCUSSION Jarkko Sakkinen 1 participant 2 messages May 27, 2024

Subsystems (2)
lore
Share & tools
lore

Jarkko Sakkinen

author maintainer
#0 lore raw

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

author maintainer
#1 lore raw
Quoted 16 lines · Jarkko Sakkinen

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.

Quoted 8 lines

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