rpgp
pysequoia
rpgp | pysequoia | |
---|---|---|
6 | 2 | |
693 | 5 | |
36.1% | - | |
8.9 | 7.9 | |
19 days ago | 17 days ago | |
Rust | Rust | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
rpgp
-
rpgp: Pure Rust Implementation of OpenPGP
I just finished implementing sha1collision detection, and it will be integrated into rpgp soon https://github.com/rpgp/rpgp/issues/293
This is the same algorithm used by git.
There are higher level implementations that use the dates on signatures to straight out reject sha1 material, but that gives only a limited protection.
-
Ditching OpenPGP, a new approach to signing APT repositories
https://github.com/rpgp/rpgp (MIT/Apache2.0 Rust).
pysequoia
-
rpgp: Pure Rust Implementation of OpenPGP
I agree that gpg did not age well. If we compare it to a different project with similar history: curl, it's apparent that gpg chose wrong on several fronts. It should be a library first instead of a cli tool. Funny part is that even the library of gpg (gpgme) is internally calling the binary.
I've played around with designing a higher level library to OpenPGP once (https://pypi.org/project/pysequoia/) and personally I think it yields more readable, faster and secure code.
-
Calling Rust from Python
I'd also recommend PyO3 and Maturin. The amount of help these crates give is mind boggling (automatic type marshaling and even github CI jobs for creating cross platform precompiled wheels).
I've created a library using this crate (https://github.com/wiktor-k/pysequoia/) and most of the time I could just focus on the problem domain instead of technical details of the bindings.
There are just a couple of smaller issues (eg. Python to Rust async is not built in) but overall it's really nice.
What are some alternatives?
deltachat-core-rust - Delta Chat Rust Core library, used by Android/iOS/desktop apps, bindings and bots 📧
PyO3 - Rust bindings for the Python interpreter
seclip - A CLI utility to secretly copy secrets to clipboard. :lock::memo:
bat - A cat(1) clone with wings.
rust - Empowering everyone to build reliable and efficient software.