May 26, 2018
RSA public-key cryptosystem
CryptRSA is a pure-perl, cleanroom implementation of the RSA public-key cryptosystem. It uses MathPari3, a perl interface to the blazingly fast PARI library, for big integer arithmetic and number theoretic computations.
CryptRSA provides arbitrary size key-pair generation, plaintext-aware encryption OAEP and digital signatures with appendix PSS. For compatibility with SSLv3, RSAREF2, PGP and other applications that follow the PKCS #1 v1.5 standard, it also provides PKCS #1 v1.5 encryption and signatures.
CryptRSA is structured as bundle of modules that encapsulate different parts of the RSA cryptosystem. The RSA algorithm is implemented in CryptRSAPrimitives3. Encryption schemes, located under CryptRSAES, and signature schemes, located under CryptRSASS, use the RSA algorithm to build encryption/signature schemes that employ secure padding. See the note on Security of Padding Schemes.
The key generation engine and other functions that work on both components of the key-pair are encapsulated in CryptRSAKey3. CryptRSAKeyPublic3 & CryptRSAKeyPrivate3 provide mechanisms for storage & retrival of keys from disk, decoding & encoding of keys in certain formats, and secure representation of keys in memory. Finally, the CryptRSA module provides a convenient, DWIM wrapper around the rest of the modules in the bundle.