Safari WebCrypto API RSA-OAEP加密

时间:2015-08-03 23:17:38

标签: javascript safari webcryptoapi

我有以下代码来测试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);"工作正常。

3 个答案:

答案 0 :(得分:2)

当前版本的Safari,Safari Technology Preview和WebKit不支持RSA-OAEP-256。它们仅支持使用SHA-1的旧版RSA-OAEP:

https://bugs.webkit.org/show_bug.cgi?id=151308

答案 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:

  • RSA-OAEP mod:2048 pubExp:3 / w SHA1格式:jwk
  • RSA-OAEP mod:2048 pubExp:65535 / w SHA1格式:jwk

如果你改变: hash:{name:" SHA-256"}

于: hash:{name:" SHA-1"}

我怀疑这会奏效。