- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
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!
コピーされたリンク
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
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
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
