问题标签 [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 投票
2 回答
1551 浏览

javascript - WebCrypto:Safari 不能 exportKey() 并且承诺似乎永远不会解决/失败

我正在创建一个密钥对,然后使用 Web Crypto API 从密钥对导出一个密钥:

在 Chrome 和 Firefox 上,代码运行良好,打印:

但是在 Safari 上它失败了,只打印:

然后什么都不做。如何在 Safari 上导出密钥?

0 投票
1 回答
1341 浏览

javascript - 为什么我的 crypto.sublte.digest 实现会导致等长字符串的等效十六进制哈希?

以下代码改编自这两个来源:

http://qnimate.com/hashing-using-web-cryptography-api/

https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest

在 Chrome 或 Firefox 控制台中运行时使用sha256.digest("this string").then(function (x) { console.log(x) } );sha256.digest("that strong").then(function (x) { console.log(x) } );生成相同的十六进制字符串。

事实上,任何两个长度相同的字符串都将具有相同的十六进制表示。

我读过的所有内容都说很少有两个等效的哈希值。这意味着我在这里做错了什么。我不知道那是什么东西。

0 投票
3 回答
2003 浏览

javascript - Safari WebCrypto API RSA-OAEP 加密

我有以下代码来测试 WebCrypto API。它适用于 Firefox 和 Chrome,我正在尝试让它在 Safari 中运行。

问题是微妙的.encrypt 显然没有执行。既不调用 console.log 也不调用 console.error。任何线索发生了什么?上一行“console.log(publicKey);” 工作正常。

0 投票
1 回答
587 浏览

javascript - 使用 SubtleCrypto 时对无消息 OperationError 进行故障排除

我正在尝试使用 SubtleCrypto.unwrapkey 解包密钥...我的解包算法是:

而我的 unwrappedKeyAlgo 是:

我的电话看起来像这样:

我一直在尝试一些不同的事情但无济于事,虽然在一天的大部分时间里我收到一个没有任何消息的 OperationError(即 error.message 是''),但最后我开始得到:

即使在我所见的范围内看不到 192 位密钥。

有没有人有任何关于如何调试/排除无消息 OperationError 案例(实际上并没有太多事情要做)和/或后者的提示。类似主题的问题的首选位置(堆栈溢出除外)是什么?

0 投票
0 回答
588 浏览

javascript - 在 IE11 中包装密钥时出现 NotSupportedError

下面是一个非常简单的测试,它生成两个密钥,然后尝试使用另一个来包装一个。Internet Explorer 11 中的“wrapKey”调用抛出“NotSupportedError”,我不知道它到底指的是什么/抱怨什么。

提示/建议将非常受欢迎!根据文档(https://msdn.microsoft.com/en-us/library/dn302337%28v=vs.85%29.aspx),应该支持用于包装的算法(RSA-OAEP)。 .而且我不太明白“wrapKey方法保护用JSON Web Encryption(JWE)封装的JSON Web Key(JWK)结构中的密钥材料。具体来说,密钥的密钥材料是使用随机生成的内容加密进行加密的密钥,然后使用指定的 keyWrappingAlgorithm 使用 keyEncryptionKey 对其进行加密。” - 听起来像是在谈论在我的调用代码中理论上我不需要担心的幕后/幕后完成的事情?

0 投票
1 回答
847 浏览

javascript - ie11中的RSA-OEP加密

我一直无法在 IE11 中找到任何 RSA-OAEP 加密的示例。

这是我的实现的一个片段,其中给了我一个非常模糊的错误。

当我将算法更改为 RSAES-PKCS1-v1_5 时,一切正常

0 投票
2 回答
1177 浏览

encryption - Microsoft Edge 中的公钥加密

我有以下 JavaScript 代码来使用 Web Cryptography API 实现公钥加密。它适用于 Firefox 和 Chrome,但不适用于 Microsoft Edge。我从 Edge 得到的错误是“由于错误 80700011 无法完成操作”。我错过了什么?

0 投票
1 回答
1812 浏览

internet-explorer - Internet Explorer 11 中的公钥加密

我正在尝试使用带有以下代码的 IE11 的 JavaScript 实现公钥加密:

它生成密钥对,但无法通过错误事件进行加密。具有对称 AES 密钥的类似代码可以工作。IE11是否支持公钥加密?我的代码有什么问题吗?

0 投票
4 回答
43206 浏览

javascript - 使用纯 JavaScript 签署 PDF

随着 WebCrypto API 的发展和 Chrome 和 Firefox 的支持,我想用它来对 PDF 文档进行数字签名。周围的文献不多,但我找到了一些示例 [1] 和一个名为 PKI.js [2] 的库。在示例中,描述了签名过程,但最终返回了签名。我希望我的 Base64 PDF 文件以签名的 Base64 字符串再次返回,但遗憾的是,这不是发生的情况。据我所知,PKI.js 也没有提供对我的 Base64 PDF 进行签名的方法。

有没有办法仅使用 JavaScript 和 WebCrypto API 签署 PDF?可以将私钥输入<textarea>到浏览器的证书设置中,或者更好地存储在证书设置中。

Base64 PDF(来自 REST API)→ 使用 JS 和证书签名 → 签名的 Base64 PDF(发送到 REST)

0 投票
0 回答
441 浏览

mobile-safari - 在 iOS9 Mobile Safari 上导入 WebCrypto 密钥

这个错误在 Mobile Safari 上意味着什么?

只有 ArrayBuffer 和 ArrayBufferView 对象可以作为 CryptoOperationData 传递

有问题的代码是这样的:

请注意,keyisnew Uint8Array([251, 23, 127, ... ])因此key.buffer应该是 的一个实例ArrayBuffer

iOS 想从我这里得到什么!?!?

更新

虚惊。Mobile Safari is missing TypedArray.prototype.slice,它在其他地方用 填充Array.prototype.slice,导致对象不是缓冲区。