我正在尝试使用 OpenSC 工具派生密钥。我通过以下命令在 openssl 的帮助下生成了 EC 密钥:
openssl ecparam -in secp384r1param.pem -genkey -noout -out secp384r1key.pem
并尝试将此密钥传递给 opensc derive 命令:
pkcs11-tool.exe --module opensc-pkcs11.dll --derive -l -pin #### -id 03 -i secp384r1key.pem
但这给了我输出:
无法从 secp384r1key.pem 读取 EC 密钥
一个小的调试显示 openssl 函数d2i_EC_PUBKEY_bio
抛出了这个错误。我试图找到有关输入文件格式的任何帮助,但无济于事。你们能帮我吗?我在这个过程中哪里出错了?我刚刚开始使用智能卡和读卡器。
答案1
OpenSSL{d2i,i2d}_$type[_$io]
例程读取和写入 DER(d2i 表示 DER 到内部,i2d 表示内部到 DER);PEM_{read,write}[_$io]_$type
读取和写入 PEM。type 为的例程[$alg_]PUBKEY
读取和写入通用 X.509 SubjectPublicKeyInfo 格式的公钥,这通常是首选(尽管有其他选择)。您有一个 PEM 格式的私钥(非通用,但这并不重要),而程序需要一个通用 DER 格式的公钥。请执行
openssl ec -in blahkeyfile.pem -out blahpubfile.der -pubout -outform der
(或您选择的合适名称)并尝试使用它。