0

按键操作问题出现在 Outlook for mac 和 Safari 11 上。当我在 Mac 上尝试 Chrome/Firefox 时,它运行良好。

我使用 js 的 webCrypto 库: https ://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API

此外,另一个需要解决 safari 问题的加密库: https ://github.com/vibornoff/webcrypto-shim

它停留在“importKey”功能的级别:

                    window.crypto.subtle.importKey(
                    "jwk",
                    {
                        "kty": "RSA",
                        "e": E VALUE,
                        "n": N VALUE,
                        "alg": "RSA-OAEP",
                        "ext": true
                    },
                    {
                        name: "RSA-OAEP",
                        hash: { name: "SHA-1" },
                    },
                    true, 
                    ["encrypt"]
                    ).then(function (publicKey) { })

我得到的错误 : OpeartionTypeError :Member JsonWebKey.kty 是必需的,并且必须是 DOMString 的实例。

我读了这个问题:Safari WebCrypto API RSA-OAEP encryption and the solution accepted using 'RSA-OAEP' alg and hash of 'SHA-1' 但无论我尝试更改什么,我总是得到相同的错误。

我不确定 webcrypto 的所有其他功能是否可以在 safari 11 上运行,但不是我坚持这一点。

非常感谢。

4

1 回答 1

0

我们创建了一个名为https://github.com/PeculiarVentures/webcrypto-liner的 shim 层,它统一了各种浏览器的行为,并为下层浏览器提供了 JS 实现。

您可以使用https://peculiarventures.github.io/pv-webcrypto-tests/来测试每个浏览器的预期支持,无论有没有这个插件。

话虽如此,在 Safari 11.0 (13604.1.38.1.6) 上,我似乎能够在不使用该 shim 层的情况下导入 RSA-OAEP /w SHA1。

如果没有更完整的示例来说明您所做的事情(示例值和浏览器构建版本),我认为我或其他任何人都无法提供太多帮助。

于 2017-10-09T04:55:47.433 回答