Web Cryptography API支持通过JavaScript使用浏览器本机加密功能,例如可靠的随机数生成器或使用不同算法进行加密或签名的可能性。
规范列出了overview of algorithms作为实施者的起点,但添加了以下编辑说明:
注意:列出的所有算法都应被视为“风险特征”,禁止实施者采用它们。它们包含在编辑草案中反映了社区成员将其纳入的要求,并作为练习包含在内,以确保本规范中定义的API的稳健性。
因此,算法列表和建议可能会在将来的修订中发生重大变化。
据我所知,规范背后的想法是为密码学提供一个接口,而不是写下特定的算法(这完全有意义!)。
如何确定客户端是否支持特定算法?隐藏实现细节是一种很好的做法,但由于算法必须具有所谓的识别的算法名称,我不明白为什么您不希望公开已注册的算法。 仍然没有指定接口,您注册算法的对象描述如下:
该规范使用内部对象[[supportedAlgorithms]]。
此内部对象不会向应用程序公开。
在当前状态下发现可用算法的唯一可能性是捕获微妙界面的 NotSupportedError 。
从我的角度来看,发现是简单的程序流程,错误应作为例外处理,而不是实现逻辑。
任何提示或建议?还欢迎链接到正确的w3c-mailinglist讨论。
答案 0 :(得分:3)
未计划支持算法发现界面。
2012年w3c工作组邮件列表详细讨论了这个问题,提出了一些问题,请参阅主题" RE: Strawman proposal for the low-level API - about the interoperable set of algo and algo naming"和" RE: Algorithm Discovery (was Re: Strawman proposal for the low-level API - about the interoperable set of algo and algo naming)"。
讨论的一个方面总结了发现机制的问题:
(1)发现当我阅读各种附件,处理 算法不是可以允许的参数的排列 支持,因此发现算法可能是成功的但是 可能仍然会失败,因此发现的额外努力是开销 和额外的代码路径
问题部分再次与"Bug 25985 - WebCrypto should be inter-operable"讨论,在a phone conference in July 2014期间,工作组决定"稍后解决问题"通过使用配置文件。 这也在说明书中提到:
特别是,我们期待一个"浏览器配置文件"被创造 用于Web浏览器的可互操作算法。
我们的想法是创建配置文件,例如传统的网络浏览器,智能电视等。如果存在特定的配置文件,则必须支持某些算法。这将在测试阶段后确定。
答案 1 :(得分:0)
我不确定您的实现要求是什么,在运行时需要知道支持的算法,但我在一个特定项目中使用了WebCrypto API,其中预先知道所需的算法。
我们能够在初始化期间执行一系列简单测试,确定我们的算法是否得到支持。这与一些已知的无能力(window.msCrypto定义?IE11和SHA-1缺失,window.crypto.webkitSubtle定义?Webkit和AES-GCM缺失等)相结合,使我们至少早知道是否支持在那里,要么使用替代算法,替代实施或失败。