我正在尝试使用名为easy-ecc的外部库生成 ECDSA 密钥对。我不明白的是这个库为公钥生成了一个坐标。据我从书籍、在线 ECDSA 生成器或 NIST 测试向量中看到,公钥在曲线上总是有两个坐标(X 和 Y)。例如,如果P-384 curve
使用 ,则私钥的长度将为 48 字节,公钥将有两个不同的点 X 和 Y,48 bytes
每个点。所以,总共96 bytes
. 然而,该ecc_make_key
函数的行为并不像预期的那样。
下面是创建密钥对的函数原型:
int ecc_make_key(
uint8_t p_publicKey[ECC_BYTES+1],
uint8_t p_privateKey[ECC_BYTES]
);
此函数使用按引用传递策略填充空数组。但是,为什么p_publicKey
必须ECC_BYTES+1
代替ECC_BYTES*2
?