问题标签 [webcrypto-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1289 浏览

javascript - Web Crypto API:importKey 在 Firefox 中不起作用

我在 Google Chrome 46 和 Firefox 41 ( JSBin ) 中为 importKey 尝试了这个示例:

它在 Chrome 中工作,但我在 Firefox 中得到一个无效或非法字符串被指定错误。哪个字符串无效或非法,为什么?

0 投票
1 回答
347 浏览

javascript - 如何使用 Web Crypto 生成密钥对并在 Firefox 插件中访问其密钥?

我想调用window.crypto.subtle.generateKey我的 Firefox AddOn。由于我无法windowmain.js中访问,我创建了一个带有内容脚本的页面工作者

我可以调用call-web-crypto.jswindow.crypto.subtle.generateKey,但我无法访问生成的密钥对的密钥属性:

XrayWrapper 拒绝访问属性 publicKey(原因:值与目标不同源)。有关更多信息,请参阅https://developer.mozilla.org/en-US/docs/Xray_vision。请注意,只会报告来自给定全局对象的第一个被拒绝的属性访问。

如何在我的 Firefox 插件中生成密钥对并访问其密钥?

0 投票
1 回答
766 浏览

javascript - 有没有办法在 WebCrypto API 中获取 RSA 密钥的组件?

我可以使用 WebCrypto API 创建一个像这样的 rsa 密钥(请参阅此处真正有用的示例集https://vibornoff.github.io/webcrypto-examples/index.html

我如何才能真正找到生成的公钥的模数?

0 投票
2 回答
1676 浏览

javascript - 导入 WebCrypto 生成的 ECDSA 公钥以进行验证操作

我正在尝试使用 OpenSSL(用于验证签名)在 C++ 中导入ECDSA公钥,但d2i_ECPKParameters返回 NULL。

使用 Web Cryptographi API 生成的密钥;以spki格式导出的公钥(W3 TR 文档在导出密钥时讨论 ASN.1 结构,以及 spki 的 DER 编码)。

我是 OpenSSL 的新手,我做错了什么?

进口:

更新: 其他导入尝试(但仍然无效):

出口:

更新 2:

我生成了 PEM 密钥(从 JS 中的导出密钥),但主要的是,我不使用 PEM 密钥。在 JavaScript 中导出公钥后,我从 ArrayBuffer 中创建一个新的 Uint8Array,通过 WebSocket(二进制帧)将其发送到服务器,并尝试解析它。接收到的 uint8_t 数组总是 158 字节长度。我使用 P-521——secp521r1。

pkcs8中导出的私钥!

一些细节:

调用 o2i_ECPublicKey 时的错误代码:

(使用相同的数据调用,但每次错误都不同——无论如何都会重复。)

更新 3:

从 C++ 中,我将接收到的数据(密钥)写到一个文件中:

十六进制编码的导出 SPKI(WebCrypto 导出的结果):

私人的:

上市:

更新 4:

私钥 jwk 格式:

0 投票
2 回答
1887 浏览

javascript - How to export Web Crypto key to jsrsasign

I try to generate a RSA key with Web Crypto and use it to sign a string with jsrsasign (Firefox does not support RSA-PSS). Therefore, I export the Web Crypto key and convert it to PKCS8-PEM, but when I call KEYUTIL.getKeyFromPlainPrivatePKCS8PEM to import the key to jsrsasign an error is thrown: malformed plain PKCS8 private key(code:001)

What did I wrong? JSBin

Edit:

I just realized that jsrsasign can handle jwk:

I prefer this solution, but I still like to know why my pkcs8 solution does not work.

0 投票
1 回答
144 浏览

javascript - UInt8 转换时,像 дей 这样的表情和字符被破坏

我遇到的问题是,我得到的 JS-Objects 的字段如下......

处理转换的代码如下所示(并且在一般情况下正常工作......)

然而,在这些情况下,我有这样的输入:“title”:“действительный有效なដែលមានសុពលភាព有效有效માન્યમાבתוקף”和输出,在将其格式化回字符串后,如“title”“45AB28” =K9 ¹j¶»¶ HH®¾¨Í¯®¾ÑêÕçã"

你知道为什么会这样吗?谢谢!

0 投票
0 回答
864 浏览

javascript - 使用 Web Crypto 从 PKCS#7 验证 RSA 签名

我正在尝试使用 JavaScript 验证 PKCS#7 签名。我知道 Web Cryptography API 不支持 PKCS#7,但我只是想验证原始 RSA 签名,而不是完整的 PKCS#7 结构。

我能够解析 PKCS#7、验证证书链、提取签名数据并使用forge验证签名。我不明白为什么无法使用 Web Cryptography API 验证此签名。

考虑这个例子:

使用 forge 验证成功,但使用 Web Cryptography API 验证失败。我不明白这是怎么回事,因为他们使用的是相同的算法规范。

我能够使用 OpenSSL 验证 Web Cryptography API 生成的签名。使用 OpenSSL 检查这两个签名有一点不同:

这可能是问题的原因吗?如果是这样,是否可以将外部签名转换为 Web Cryptography API 使用的编码?

0 投票
1 回答
2186 浏览

encryption - 使用 WebCrypto 生成对加密和签名都有用的密钥对

在 Chrome 中,这失败了:

为什么这是不可能的?为什么我无法创建可用于加密和签名的密钥对?RSA 密钥本身没有此限制。

0 投票
1 回答
764 浏览

javascript - 如何区分 JS 不透明对象?

WebCrypto API引入了不可导出私钥的概念,可以导出到 IndexDB 但不能导出到 LocalStorage 或通过网络。这在 Charles Engleke 的博客“在浏览器中保存加密密钥”中有很好的解释。

但是这些对象实际上是如何工作的呢?有没有办法从 JS 中判断一个对象是否不透明?我无法找到有关此的任何信息。

0 投票
1 回答
684 浏览

javascript - 用于加密、解密以及签名、验证的 Webcrypto API/算法

我正在尝试实现非对称加密并尝试通过不安全的传输通道发送字符串。我正在使用 RSA-OAEP 算法来加密我的数据。我使用公钥加密字符串,但是在接收者端我想验证加密的字符串没有更改(在传输期间)。

查看 API 会发现没有迹象,验证 RSA-OAEP 算法可用的功能。我正在考虑使用字符串添加哈希(可能基于 SHA)并在接收器处验证这一点。从安全的角度来看,这是否合理?是否有一个 API(使用 RSA)可以让我使用相同的算法实现加密、解密、签名、验证功能。