我有以下代码来测试WebCrypto API。它适用于Firefox和Chrome,我试图让它在Safari中运行。
For Each x In ActiveWorkbook.SlicerCaches("Slicer_State").SlicerItems
If x.Selected = True Then
a = x.Value
End If
问题是subtle.encrypt显然没有被执行。调用console.log和console.error都不会被调用。有什么线索发生了什么?上一行" console.log(publicKey);"工作正常。
答案 0 :(得分:2)
当前版本的Safari,Safari Technology Preview和WebKit不支持RSA-OAEP-256。它们仅支持使用SHA-1的旧版RSA-OAEP:
答案 1 :(得分:1)
在你的' generateKey'调用,key.publicKey和key.privateKey实际上是CryptoKey对象吗?在我修改Safari(在iPad上)时,他们似乎只是对象......当我打电话给出口钥匙时我得到一个TypeError被抛出
P.S。没关系,我正在使用' RSASSA-PKCS1-v1_5',而不是' RSA-OAEP'。
答案 2 :(得分:1)
目前,WebCrypto的Safari实现以及Edge实现存在许多问题。浏览器之间的算法支持差异使这变得复杂。
您可以访问:https://peculiarventures.github.io/pv-webcrypto-tests/
,探索给定浏览器支持的内容鉴于这些差异,我们实现了这个掩盖了许多差异的库,并添加了一些算法(可选)以使它们互操作:https://github.com/PeculiarVentures/webcrypto-liner/blob/master/BrowserSupport.md
对于Safari,他们只支持以下RSA-OAEP:
如果你改变: hash:{name:" SHA-256"}
于: hash:{name:" SHA-1"}
我怀疑这会奏效。