【问题标题】:Curve25519 ECDH in WebCryptoWebCrypto 中的 Curve25519 ECDH
【发布时间】:2018-04-10 07:10:45
【问题描述】:

我已阅读此 document 以通过 ECDH-CURVE25519 算法生成密钥对。但是当我在 window.crypto.subtle.generateKey 中将 ECDH-CURVE25519 指定为算法名称时,会抛出 JS 错误(DOMException: Algorithm: Unrecognized name) >.

    window.crypto.subtle.generateKey(
    {
        name: "ECDH-CURVE25519"
    },
    true, 
    ["deriveKey", "deriveBits"] 
)
.then(function(key){
    console.log(key);
   pk = key.publicKey;
    vk = key.privateKey;
})
.catch(function(err){
    console.error(err);
});

【问题讨论】:

  • 很好。说真的,什么错误,你的问题是什么?注意:没有投反对票。
  • 您指向的文档为:“初稿”,因此任何浏览器供应商都不太可能实现它,因为 API 之后可能会发生变化。

标签: javascript cryptography webcrypto-api


【解决方案1】:

WebCryptographyApi 不支持 Curve25519。

您可以改为使用 P-256 (secp256r1)、P-384(secp386r1) 和 P-521(secp521r1)。见https://www.w3.org/TR/WebCryptoAPI/#dfn-EcKeyGenParams

代码应该是这样的

window.crypto.subtle.generateKey(
    {
        name: "ECDH",
        namedCurve: "P-256", // "P-256", "P-384", or "P-521"
    },
    true, 
    ["deriveKey", "deriveBits"] 
)
.then(function(key){
   console.log(key);
   pk = key.publicKey;
   vk = key.privateKey;
})
.catch(function(err){
    console.error(err);
});

【讨论】:

    猜你喜欢
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2020-08-24
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多