importKey alg RSA-OAEP与SHA-1不兼容safari 11

时间:2017-10-04 09:41:00

标签: cryptography rsa webcryptoapi

关键操作的问题出现在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:成员JsonWebKey.kty是必需的,必须是DOMString的实例。

我读到了这个问题:Safari WebCrypto API RSA-OAEP encryption并且使用'RSA-OAEP'alg和'SHA-1'的哈希接受了解决方案但是我总是得到同样的错误,而不管我试图改变什么。

我不确定webcrypto的所有其他功能是否都适用于safari 11但不是我坚持这一点。

非常感谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

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