An implementation of RSA, as specified in RFC 8017, using Rust.
The goal of this project is to implement a basic RSA library that includes encryption, decryption, key generation, signature, and verification functions.
This isn't intended to be a production-grade library; this is more of an exercise in writing Rust code, learning about RSA, and trying to write code that adheres to a written standard.
While the library contained herein is intended to adhere to RFC 8017 as much as possible, the end-product is not designed to be used for commercial purposes, and it is very much likely that the library itself will not be in complete compliance with the RFC. For more specific language as to the purposes of this repository, consult the license.
I am still very new to Rust, so this library is likely to be non-idiomatic. I'm also very new to the number theory behind RSA, so despite my attempts at making clean and correct code, this library isn't guaranteed to be very performant.
- Key Generation
- [] Stretch: user-defined prime testing functions
- [] Stretch: sieving w/ pre-computed primes
- Cryptographic Primitives
- [] Keypair Serialization/Deserialization
- DER
- PEM
- [] PKCS8
- [] Stretch: OpenSSH Integration
- [] Encryption
- Cryptographic Primitives
- [] RSAES-OAEP
- [] RSAES-PKCS1-v1_5
- [] Signatures
- [] RSASSA-PSS
- [] RSASSA-PKCS1-v1_5
- RFC 8017 - PKCS1 v2.2
- The usage of the CRT in RSA
- Miller-Rabin Primality Testing
- Prime testing website
- "Elegant Library APIs in Rust"
- "Idiomatic Rust Libraries" (Video)
- Rust Design Pattern
- Rust API Guidelines
- Idiomatic Rust Resources
- ASN1 & DER article
- Let's encrypt DER/ASN.1 intro
- Baillie-PSW prime test
- OpenSSL Repo