您好!
对于关键协议方案、我需要能够使用具有 Nistp256曲线的 ECDH 计算共享机密。
我现在面临的 TI ECDH 驱动程序问题是、它需要一整套(x、y)的公钥、但密钥交换协议仅为我提供压缩的公钥。
我尝试向驱动器提供压缩密钥、但它会生成错误-9 "ECDH_STATUS_INVALID_KEY_SIZE "。
通过查看代码(如下所示)、我看到它专门检查第一个字节是否为4、表示完整密钥。 但我 的公钥有2或3、表示已压缩的密钥。
else /* Validate key sizes to make sure octet string format is used for short Weierstrass curves */
{
if (operation->myPrivateKey->u.plaintext.keyLength != operation->curve->length ||
operation->theirPublicKey->u.plaintext.keyLength != 2 * operation->curve->length + OCTET_STRING_OFFSET ||
operation->theirPublicKey->u.plaintext.keyMaterial[0] != 0x04 ||
operation->sharedSecret->u.plaintext.keyLength != 2 * operation->curve->length + OCTET_STRING_OFFSET)
{
return ECDH_STATUS_INVALID_KEY_SIZE;
}
}
如何让 ECDH 驱动程序使用压缩密钥生成共享机密?