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

时间:2016-03-17 19:21:07

标签: javascript digital-signature digital-certificate pkcs#8

我尝试使用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文件,只是为了验证它是否构造良好,似乎没问题。库中是否有错误或者我遗漏了什么?

P.S。我从Digital signature with Javascript那里得到了例子,但它对我没用。

有什么建议吗?

1 个答案:

答案 0 :(得分:-1)

据我所知,pkcs8已被解密,所以,

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

应该只是:

"-----BEGIN PRIVATE KEY-----\r\n" 

我对此不太确定,但是当我写下Digital signature with Javascript这个错误的例子时:D