Thanks for the response!
I was looking for some kind of constant that I can use in a constexpr 
context (for setting array sizes and suchlike), but apparently that 
actually doesn't exist.

Still, good to get some insight in the other functions available.

Tom

On Saturday, 27 April 2019 04:54:43 UTC+2, Jeffrey Walton wrote:
>
>
>
> On Friday, April 26, 2019 at 5:47:27 AM UTC-4, Tom Smeding wrote:
>>
>> Hi all,
>>
>> The GetPublicElement() method of the 
>> CryptoPP::ECDSA<CryptoPP::ECP>::PublicKey class returns a value of type 
>> CryptoPP::ECP::Point, which represents the elliptic curve point that is 
>> the public key.
>> This public key consists of two integers, x and y, that, if I am 
>> correct, are always 32 bytes in size (though their MinEncodedSize could 
>> be less if the leading byte is zero).
>>
>> However, in my application I would like to be able to get this size (32 
>> bytes) from the CryptoPP API somewhere, to reduce the number of magic 
>> constants in my code.
>> Is this exported somewhere? I have not been able to find it, but that may 
>> be my fault.
>>
>
> So this is kind of a trick question...
>
> An x or y component of a coordinate only needs to be as large as a field 
> element. When serialized leading 0's are usually preserved. For example, 
> that means secp160 would use field element size of 20-bytes. However, SEC-1 
> says to use subgroup order and not field elements. So in the case of 
> secp160, the component would use 21 bytes, not 20. SEC-2 was supposed to 
> switch to field element but the change did not appear to occur. Also see 
> https://github.com/weidai11/cryptopp/issues/785 .
>
> With that said, you can use this for a private key (just the exponent):
>
>     GetAbstractGroupParameters().GetSubgroupOrder().ByteCount();
>
> And you can use the following for a public point ((x,y) pair or just the (y) 
> part of the coordinate). The boolean argument means "compressed". Compressed 
> means just the y-coordinate.
>
>     GetAbstractGroupParameters().GetEncodedElementSize(false);
>
> Jeff
>
>

-- 
You received this message because you are subscribed to "Crypto++ Users". More 
information about Crypto++ and this group is available at 
http://www.cryptopp.com and 
http://groups.google.com/forum/#!forum/cryptopp-users.
--- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to