【问题标题】:Loading pkcs8 throws malformed format in jsrsasign加载 pkcs8 会在 jsrsasign 中引发格式错误的格式
【发布时间】:2016-07-04 08:20:59
【问题描述】:

我正在尝试使用 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 文件,只是为了验证它是否构造良好并且看起来没问题。库中有错误还是我遗漏了什么?

附:我从Digital signature with Javascript 中拿了这个例子,但它对我不起作用。

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    应该只是:

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

    我不太确定,但是当我编写示例 Digital signature with Javascript 时,这是我的错误之一:D

    【讨论】:

    • 我从标题中删除了“ENCRYPTED”部分,但库现在抛出了一个找不到 PEM 标题:ENCRYPTED PRIVATE KEY
    • 请阅读规范,这是不正确的。 en.wikipedia.org/wiki/PKCS_8
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多