我正在开发一个需要使用 DTLS 进行通信的 Flutter 应用程序。据我所知,目前 Dart API 中不支持 DTLS,只有 TLS。
谁能推荐我能做什么?也许只是关于如何让 Flutter 应用程序在 DTLS 中通信的高级步骤?关于我应该注意什么的任何提示?
谢谢!
十年前,我用 Java 编写了一个 DTLS 服务器(在 Bouncy Castle 支持之前),在过去的几年里,我将很多 Java 代码移植到了 Dart(但不是 DTLS!)。
我快速浏览了服务器代码,以了解在纯 Dart 实现中最大的陷阱可能是什么(客户端的 - 希望这是一个正确的假设)。两个直接的困难似乎是解析服务器的证书链(DER 解码以获取可用的 RSA 公钥),然后使用该 RSA 密钥加密预主密钥。(在 pub 中有一个旧的 RSA 实现,但我找不到任何 ASN/DER 库来帮助处理证书。)如果不访问信任库,验证根 CA 证书会很棘手。
大多数其他东西,如随机数生成(有多安全?)、SHA/MD5 散列、序列化到/从网络字节顺序、处理计时器都是可行的。
总而言之,鉴于 BC 的支持,Rémi 向 Java 建议一个平台通道是正确的。