关键操作的问题出现在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但不是我坚持这一点。
非常感谢。
答案 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。
如果没有更完整的示例表明您的行为(示例值和浏览器构建版本),我认为我或其他任何人都无法提供更多帮助。