BCrypt (C++) API(BCryptImportKeyPair 类似)是否允许直接以压缩形式导入 secp256r1(又名 P-256)曲线的 ECDSA 公钥,即 1 字节前缀 0x02 或 0x03 后跟 32-字节 X 坐标(或不包含 Y 坐标的某种变体)?
我知道重新计算 Y 坐标所需的数学知识;但我宁愿不编码。
更新:阅读BCRYPT_ECCKEY_BLOB的文档,我没有看到任何方法。
回答我自己的问题
NO,压缩形式的 ECDSA 公钥无法导入到 Windows BCrypt 中。
需要在外部进行减压。这又需要了解大整数的曲线参数和模幂(secp256r1 为 256 位)。