首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:导入pem密钥时没有密钥导入器

错误:导入pem密钥时没有密钥导入器
EN

Stack Overflow用户
提问于 2021-03-27 05:23:08
回答 1查看 346关注 0票数 0

该应用程序遵循node-jose 2.0.0上的说明导入.pem密钥。以下是文档:

代码语言:javascript
复制
To import and existing Key from a PEM or DER:

// input is either a:
// *  String serialization of a JSON JWK/(base64-encoded) PEM/(binary-encoded) DER
// *  Buffer of a JSON JWK/(base64-encoded) PEM/(binary-encoded) DER
// form is either a:
// * "json" for a JSON stringified JWK
// * "private" for a DER encoded 'raw' private key
// * "pkcs8" for a DER encoded (unencrypted!) PKCS8 private key
// * "public" for a DER encoded SPKI public key (alternate to 'spki')
// * "spki" for a DER encoded SPKI public key
// * "pkix" for a DER encoded PKIX X.509 certificate
// * "x509" for a DER encoded PKIX X.509 certificate
// * "pem" for a PEM encoded of PKCS8 / SPKI / PKIX  //<<=="pem"
keystore.add(input, form).
        then(function(result) {
          // {result} is a jose.JWK.Key
        });

密钥已经通过.pem表单生成,其内容存储在nodejs配置文件中,如下所示,保存在变量process.env.josePrivateKey

代码语言:javascript
复制
-----BEGIN PRIVATE KEY-----
NC4CAQAwBQYcK2VwBCIEIIWUb0/MoKaBxQkmmPlHIGyPfDQb/U3D6jQ+gMUGtvpa
-----END PRIVATE KEY-----

下面是将pem密钥添加到密钥库的代码:

代码语言:javascript
复制
const jose = require('node-jose');
let keystore = jose.JWK.createKeyStore();
let privkey = await keystore.add(process.env.josePrivateKey, "pem"); //<<==this code throws error

但是有一个错误:

代码语言:javascript
复制
(node:11572) UnhandledPromiseRejectionWarning: Error: no importer for key
    at JWKStore.value (C:\d\code\js\xyz\node_modules\node-jose\lib\jwk\keystore.js:305:21)
    at initKeystore (C:\d\code\js\xyz\startup\accessstorageinfo.js:9:34)  //<<==code as above
    at Object.<anonymous> (C:\d\code\js\xyz\startup\accessstorageinfo.js:14:1)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (C:\d\code\js\xyz\server.js:13:1)

对于密钥导入,这里缺少什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-29 18:36:48

(截至2021年3月) node-jose不支持以下密钥: Ed25519、Ed448、X25519或X448。它也不支持secp256k1 EC曲线。对于其中的任何一个,它都将返回您遇到的错误。因此,它不支持JWS算法EdDSAES256K

另一方面,在Node.js运行时,https://github.com/panva/jose支持上述所有功能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66824469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档