21个版本 (6个重大更新)

0.9.0 2024年6月8日
0.9.0-alpha.92024年5月29日
0.6.0 2024年3月11日

密码学类别中排名437

Download history 136/week @ 2024-04-08 277/week @ 2024-04-15 76/week @ 2024-05-06 325/week @ 2024-05-13 265/week @ 2024-05-20 247/week @ 2024-05-27 408/week @ 2024-06-03 40/week @ 2024-06-10

每月下载量1,516
stimmgabel中使用

MPL-2.0许可

200KB
3.5K SLoC

Discord Matrix Build Coverage Blue status badge, reading 'Alpha'

polyproto

提供(泛型)Rust类型和特质,以快速实现polyproto实现,以及用于polyproto API的HTTP客户端。

基于derx509_certspkicrate提供的类型构建,此crate提供了一组类型和特质,以快速实现polyproto规范。只需将您选择的加密和签名算法crate添加到其中,即可开始。

所有polyproto证书类型都可以转换为x509_certcrate提供的类型。

实现polyproto

首先,为所选的签名算法实现crate::signature::Signature特质。流行的加密和签名算法crate提供了自己的PublicKeyPrivateKey类型。您应该使用自己的结构体扩展这些类型,并实现针对这些新结构的crate::key特质。

然后,您可以使用crate::certs类型构建证书,使用上述特质的实现。

查看示例目录,了解如何使用ED25519签名算法实现和使用此crate的简单示例。

密码学

此crate不提供任何加密功能;其唯一目的是通过将polyproto规范转换为定义良好且可适应的Rust类型来帮助实现polyproto。

安全性

请参考各个函数的文档,了解它们提供的哪些安全保证。返回证书、证书请求和其他类型的方法,其中数据的有效性和正确性可能会影响系统的安全性,在各自的文档中都会提及它们提供的安全保证。

此crate尚未经过任何安全审计。

WebAssembly

此crate旨在与wasm32-unknown-unknown目标一起使用。要编译为wasm,您必须使用wasm功能。

[dependencies]
polyproto = { version = "0", features = ["wasm"] }

通过reqwest的HTTP API客户端

如果激活了reqwest功能,此crate提供了一个polyproto HTTP API客户端,使用reqwest crate。

reqwest的替代方案

如果您想使用除reqwest以外的任何东西来实现HTTP客户端,只需启用typesserde功能。使用这些功能,您可以实现自己的HTTP客户端,其中polyproto crate作为请求和响应类型、请求路由和方法的单一来源,通过导出的static Route

依赖项

~3–16MB
~195K SLoC