I have implemented a ECC key generation scheme successfully. Now I need to find ECC key sizes of each generating key pairs. I assumed that ECC key size is the size of the ECC private Key.
So I would like to to know whether this is correct?
Cryptography Stack Exchange is a question and answer site for software developers, mathematicians and others interested in cryptography. It only takes a minute to sign up.
Sign up to join this communityThe size we speak of with regard to elliptic curves is the size of the field over which the elliptic curve is defined. This is not necessarily exactly the size of the private key.
For example: Curve25519 is a 255-bit elliptic curve and has, effectively, 252-bit private keys, though they are usually encoded as 256-bit values with four fixed bits. Public keys are 256-bit values, but only contain 255 bits of information since the last bit is always 0.
ECC public keys are (X,Y) points where X and Y are elements in a given field (e.g. Fp or F2m).
For example, secp160r1 uses a 160-bit prime field. X and Y can be up to 160 bits long. So (X,Y) is 320 bits.
The (X,Y) point can be represented in compressed form where only the X value and a bit of information is given, since Y is a function of X.
X.962 encoding can be used for these 3 cases. Note that X and Y are zero-padded to the prime modulus size in the case they are smaller:
Uncompressed:
0x04 | X | Y
Compressed (Y is even):
0x02 | X
Compressed (Y is odd):
0x03 | X
00
or0000
to my knowledge. So usinginteger(S).bitlength()
or similar may give you the wrong result. $\endgroup$