7 个版本

0.2.0 2020 年 10 月 29 日
0.1.5 2019 年 6 月 23 日
0.1.3 2019 年 4 月 27 日
0.1.2 2018 年 10 月 10 日

#1582解析器实现

Download history 58/week @ 2024-04-08 49/week @ 2024-04-15 73/week @ 2024-04-22 89/week @ 2024-04-29 61/week @ 2024-05-06 58/week @ 2024-05-13 73/week @ 2024-05-20 74/week @ 2024-05-27 64/week @ 2024-06-03 71/week @ 2024-06-10 47/week @ 2024-06-17 39/week @ 2024-06-24 33/week @ 2024-07-01 93/week @ 2024-07-08 56/week @ 2024-07-15 51/week @ 2024-07-22

每月 241 次下载
sn0int 中使用

Apache-2.0 许可

46KB
520 代码行

slippy-rfc4880 构建状态 crates.io docs.rs

纯 Rust 解析器,用于 RFC-4880(OpenPGP 消息格式)。代码库基于 openpgp crate,但已移除所有加密代码,以保持仅需要解码二进制数据包格式的项目的依赖项数量最少。

此外,代码库已加固,以确保它可以处理任意输入而不会崩溃。还添加了一个可选的分配限制,以避免在无效输入上出现内存不足。

模糊测试

使用 cargo-fuzz 和 libfuzzer 对代码库进行了广泛的模糊测试。已使用 pgp 密钥服务器的完整转储启动语料库文件夹。

git clone https://github.com/kpcyrd/sloppy-rfc4880
mkdir pgp
cd pgp
wget -c -r -p -e robots=off -N -l1 --cut-dirs=3 -nH http://pgp.key-server.io/dump/2018-10-07/
cd ../sloppy-rfc4880

for x in ../pgp/sks-dump-*; do
    cat "$x" | cargo run --release --example split fuzz/corpus/rfc4880/pgp
    cargo +nightly fuzz cmin --release rfc4880
done

您可以从 发布页面 下载已预处理的语料库文件夹的副本。

要开始模糊测试,请运行

cargo +nightly fuzz run --release rfc4880 -j $(nproc) -- -timeout=240 -rss_limit_mb=500

许可证

Apache-2.0 许可

依赖项

~1.2–2MB
~42K SLoC