- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi! I'm currently in the process of porting from another ecc library to ippcp and am having trouble with the size of the public keys. I'm using secp256r1. I know that the 6096 byte PointState for the public key can be reduced to 32+32 bytes with ECCPGetPoint, however standard practice is usually to compress this further into 33 bytes by only including the x coordinate and the sign of the y coordinate. Are there standardized ippcp functions for public key compression and decompression that I'm just missing or will I have to write these myself in c++ (with probably worse performance)? Cheers for any help!
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
There is no is special function(s) transforming EC point to/from compressed representation in IPP.
Compressed representation is important for transmission purpose. IPP, in contrast, focused on processing.
Seems there is no problem in affine -> compresed representation.
t's possible to use ippsGFpSqrt() for inverse (compressed -> affine representtaion.) transformation.
I'm a confused and can't understand where did you get 6096 byte for PointState. Thus I see the following in IPP's headers:
typedef struct _cpGFpECPoint {
IppCtxId idCtx; /* EC Point identifier */
int flags; /* flags: affine */
int elementSize; /* size of each coordinate */
BNU_CHUNK_T* pData; /* coordinatex X, Y, Z */
} cpGFPECPoint;
So, size of point should be 32+32+32+4+4+4 = 108 bytes in case of 256-bit modulus
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page