加载 pkcs8 会在 jsrsasign 中抛出格式错误的格式

Loading pkcs8 throws malformed format in jsrsasign

本文关键字:格式 错误 pkcs8 会在 jsrsasign 加载      更新时间:2023-09-26

我正在尝试使用 jsrsasign-5.0.7-all-min.js对字节数组进行签名,但是当我尝试签名时会抛出错误:

malformed format: SEQUENCE(0).items != 2: 1

历史:

我有一个 pfx(不是使用 openssl 创建的)文件,我使用以下 openssl 命令将其转换为 pkcs5

openssl pkcs12 -in signer001.pfx -nocerts -out signer001.key -nodes

JSRSAsign抛出了一个错误;它找不到加密的标头。所以我使用以下命令将文件转换为 pkcs8

openssl pkcs8 -in signer001.key -topk8 -v2 des3 -out signer001pkcs8.key

我在javascript中有以下代码:

var password = "13245";
var pkcs8key = "" +
"-----BEGIN ENCRYPTED PRIVATE KEY-----'r'n" +
$('#keyb64').val() 
"-----END ENCRYPTED PRIVATE KEY-----'r'n";
console.log('OK');
var result = PKCS5PKEY.getKeyFromEncryptedPKCS8PEM(pkcs8key, password) ;
console.log("doesn't get executed");

我已经跟踪了错误并被扔进了库本身。我在 c# 中检查了 pkcs8 文件,只是为了验证它构造良好并且看起来没问题。库中是否有错误或我遗漏了什么?

附言我用Javascript的数字签名举了一个例子,但它对我不起作用。

有什么建议吗?

我了解,pkcs8 已经解密,所以,

"-----BEGIN ENCRYPTED PRIVATE KEY-----'r'n"  

应该只是像:

"-----BEGIN PRIVATE KEY-----'r'n" 

我对此不是很确定,但是当我使用 Javascript 编写示例数字签名时,这是我的错误之一:D