21 unstable releases (3 breaking)

0.3.0 Oct 19, 2024
0.2.0-alpha.1 Sep 25, 2024
0.1.1 Jun 23, 2024
0.0.4 Mar 28, 2024

#558 in Cryptography

Download history 178/week @ 2024-07-30 118/week @ 2024-08-06 72/week @ 2024-08-13 5/week @ 2024-08-20 10/week @ 2024-08-27 9/week @ 2024-09-03 266/week @ 2024-09-10 117/week @ 2024-09-17 196/week @ 2024-09-24 122/week @ 2024-10-01 21/week @ 2024-10-08 378/week @ 2024-10-15 88/week @ 2024-10-22 24/week @ 2024-10-29 36/week @ 2024-11-05

533 downloads per month
Used in 6 crates (5 directly)

MIT/Apache

120KB
2.5K SLoC

rpgpie 🦀️🔐🥧

A higher-level OpenPGP API based on rPGP.

rpgpie is an experimental wrapping API on top of the rPGP library.

Main goals of rpgpie include simplicity, collaboration and fun 🥳.

Objectives of rpgpie

More concretely, rpgpie currently has the following objectives:

  • Expose an API to implement stateless OpenPGP (SOP) functionality (see rsop).
  • Experiment with applying the terminology and conceptual framing of the "OpenPGP for application developers" documentation.
  • Experiment with high level API design for OpenPGP.
  • Add a basic policy to rPGP (e.g. to limit accepted algorithms).

Limitations and non-objectives

rpgpie does not currently process messages in an efficient, streaming manner. Messages that are too large to be conveniently processed in RAM can currently not be handled with rpgpie.

The rpgpie API currently limits itself to using certificates (also known as "OpenPGP public keys") and TSKs (also known as "OpenPGP secret/private keys") as they are. Updating or altering certificates or TSKs is currently out of scope.

For the current phase of exploration, proper error handling is not a goal of rpgpie. The code may panic in all kinds of circumstances.

API stability is not a goal in the current phase of development.

Technical Details

Rpgpie implements some higher-order OpenPGP facilities:

  • Certificate-level:

    • A policy on cryptographic primitives (to reject use of weak algorithms).
    • Asserting validity of individual OpenPGP signature packets.
    • Evaluating stacks of OpenPGP signatures (which make statements about the same component) over time.
    • OpenPGP semantics guarantees on the certificate level (evaluating self-signature graphs).
  • Message-level:

    • Generate/validate data signatures,
    • Encrypt/decrypt data.
    • Apply a policy for acceptable cryptographic mechanisms.

Warning, early-stage project!

The code in this project is NOT currently intended for production use.

Dependencies

~17–24MB
~324K SLoC