#input #parser #zero-allocation #data #unsafe #zero-panic #zero-crashing

不可信的

Rust 中不可信输入的安全、快速、零恐慌、零崩溃、零分配解析

5 个不稳定版本

0.9.0 2021 年 7 月 13 日
0.7.1 2020 年 4 月 28 日
0.7.0 2019 年 7 月 16 日
0.6.2 2018 年 6 月 21 日
0.2.0 2016 年 7 月 1 日

#333调试

Download history 1809428/week @ 2024-03-14 1813369/week @ 2024-03-21 1777979/week @ 2024-03-28 1880491/week @ 2024-04-04 1840375/week @ 2024-04-11 1834788/week @ 2024-04-18 1771922/week @ 2024-04-25 1746774/week @ 2024-05-02 1746665/week @ 2024-05-09 1845495/week @ 2024-05-16 1808622/week @ 2024-05-23 1991224/week @ 2024-05-30 1969142/week @ 2024-06-06 1951802/week @ 2024-06-13 1957998/week @ 2024-06-20 1621961/week @ 2024-06-27

7,893,224 每月下载量
8,656 crate 中使用 (75 个直接使用)

ISC 许可证

30KB
373 代码行

本软件按“原样”提供,且作者放弃与此软件相关的所有保证,包括所有默示的适销性和适用性保证。在任何情况下,作者均不对任何特殊、直接、间接或后果性损害或任何因使用或性能引起的损害(无论基于合同、疏忽或其他侵权行为)承担责任,无论此类损害是否因使用或性能而引起。

untrusted.rs

在 Rust 中安全、快速、零恐慌、零崩溃、零分配地解析不可信输入。

untrusted.rs 是 100% Rust 编写的,不使用 unsafe。它从不使用堆。untrusted.rs API 的任何部分都不会引发恐慌或导致崩溃。它是 #![no_std],因此与基于 libcore- 和 libstd- 的项目完美兼容。它不依赖于任何除了 libcore 之外的 crate。

untrusted.rs 旨在与 Rust 稳定版的最新版本一起使用。通常,它也可以与最新的 Rust 测试版和 Rust 夜间版本一起使用。不推荐使用 crate.io 上提供的最新发布版本之外的 untrusted.rs 版本。

文档

请参阅 https://briansmith.org/rustdoc/untrusted/ 中的文档。

使用说明

[dependencies]
untrusted = "0.2"

示例

ring 的 ASN.1 DER 子集解析器,ring::der,基于 untrusted.rs 构建。 ring 还使用 untrusted.rs 解析 ECC 公钥、RSA PKCS#1 1.5 填充以及所有其他内容。

webpki 对 X.509 证书(包括 ASN.1 DER 格式)的解析全部使用 untrusted.rs 完成。

贡献代码

欢迎提交补丁!

提交更改时,请在提交消息底部声明您同意将您的贡献按照与现有代码相同的条款进行许可。


I agree to license my contributions to each file under the terms given
at the top of each file I changed.

目前,这个库最大的需求包括

  • 单元测试。
  • 文档。
  • 更多示例。
  • 静态分析和模糊测试。

在线自动化测试

Travis CI 用于 Android、Linux 和 Mac OS X。测试会针对每个 Rust 频道(稳定版、测试版、夜间版)的当前版本运行。由于 untrusted.rs 只依赖于 libcore,并且它仅使用 100% 的跨平台代码,不使用 unsafe,因此只要这些平台通过测试,它应该在任何地方都能工作。

<img src=https://travis-ci.org/briansmith/untrusted.svg?branch=master>

错误报告

请通过拉取请求或在 问题跟踪器 中报告错误。untrusted.rs 具有完整的披露漏洞政策。请勿尝试将此代码中的任何安全漏洞私下报告给任何人。

许可协议

请参阅 LICENSE.txt,这是一个 ISC 风格的(简化版 MIT)许可协议。

无运行时依赖