feisty meow concerns codebase  2.140
crypto::rsa_crypto Class Reference

Supports public key encryption and decryption. More...

#include <rsa_crypto.h>

Inheritance diagram for crypto::rsa_crypto:
Collaboration diagram for crypto::rsa_crypto:

Public Member Functions

 rsa_crypto (int key_size)
 constructs using a randomized private key of the "key_size". More...
 
 rsa_crypto (const basis::byte_array &key)
 constructs with the specified "key" as our private key. More...
 
 rsa_crypto (RSA *key)
 starts with a pre-existing "key" in the low-level form. More...
 
 rsa_crypto (const rsa_crypto &to_copy)
 
virtual ~rsa_crypto ()
 
const rsa_cryptooperator= (const rsa_crypto &to_copy)
 
 DEFINE_CLASS_NAME ("rsa_crypto")
 
bool set_key (basis::byte_array &key)
 resets this object's key to "key". More...
 
bool set_key (RSA *key)
 sets our new "key". More...
 
bool check_key (RSA *key)
 checks the RSA "key" provided for validity. More...
 
bool public_encrypt (const basis::byte_array &source, basis::byte_array &target) const
 encrypts "source" using our public key and stores it in "target". More...
 
bool private_decrypt (const basis::byte_array &source, basis::byte_array &target) const
 decrypts "source" using our private key and stores it in "target". More...
 
bool private_encrypt (const basis::byte_array &source, basis::byte_array &target) const
 encrypts "source" using our private key and stores it in "target". More...
 
bool public_decrypt (const basis::byte_array &source, basis::byte_array &target) const
 decrypts "source" using our public key and stores it in "target". More...
 
bool public_key (basis::byte_array &pubkey) const
 makes a copy of the public key held here. More...
 
bool private_key (basis::byte_array &privkey) const
 makes a copy of the private key held here. More...
 
- Public Member Functions inherited from basis::nameable
virtual const char * class_name () const =0
 Returns the bare name of this class as a constant character pointer. More...
 

Static Public Member Functions

static RSAgenerate_key (int key_size)
 creates a random RSA key using the lower-level openssl methods. More...
 

Detailed Description

Supports public key encryption and decryption.

This class uses the OpenSSL package's support for RSA encryption.

Definition at line 32 of file rsa_crypto.h.

Constructor & Destructor Documentation

◆ rsa_crypto() [1/4]

crypto::rsa_crypto::rsa_crypto ( int  key_size)

constructs using a randomized private key of the "key_size".

the "key_size" must be at least 1024 bits for acceptable security. smaller keys are considered insecure.

Definition at line 58 of file rsa_crypto.cpp.

References FUNCDEF, and LOG.

◆ rsa_crypto() [2/4]

crypto::rsa_crypto::rsa_crypto ( const basis::byte_array key)

constructs with the specified "key" as our private key.

the "key" is used for encryption rather than generating a random one. the key is only valid if it was created with this class. also, if the key is a public key, then only the public_encryption and public_decryption methods will be available.

Definition at line 67 of file rsa_crypto.cpp.

References FUNCDEF, LOG, set_key(), and crypto::static_ssl_initializer().

◆ rsa_crypto() [3/4]

crypto::rsa_crypto::rsa_crypto ( RSA key)

starts with a pre-existing "key" in the low-level form.

Definition at line 78 of file rsa_crypto.cpp.

References FUNCDEF, LOG, set_key(), and crypto::static_ssl_initializer().

◆ rsa_crypto() [4/4]

crypto::rsa_crypto::rsa_crypto ( const rsa_crypto to_copy)

Definition at line 88 of file rsa_crypto.cpp.

References FUNCDEF, LOG, set_key(), and crypto::static_ssl_initializer().

◆ ~rsa_crypto()

crypto::rsa_crypto::~rsa_crypto ( )
virtual

Definition at line 99 of file rsa_crypto.cpp.

References FUNCDEF, and LOG.

Member Function Documentation

◆ check_key()

bool crypto::rsa_crypto::check_key ( RSA key)

checks the RSA "key" provided for validity.

Definition at line 139 of file rsa_crypto.cpp.

◆ DEFINE_CLASS_NAME()

crypto::rsa_crypto::DEFINE_CLASS_NAME ( "rsa_crypto"  )

◆ generate_key()

RSA * crypto::rsa_crypto::generate_key ( int  key_size)
static

creates a random RSA key using the lower-level openssl methods.

Definition at line 115 of file rsa_crypto.cpp.

References continuable_error, FUNCDEF, LOG, NULL_POINTER, static_class_name, and crypto::static_ssl_initializer().

◆ operator=()

const rsa_crypto & crypto::rsa_crypto::operator= ( const rsa_crypto to_copy)

Definition at line 108 of file rsa_crypto.cpp.

References set_key().

◆ private_decrypt()

bool crypto::rsa_crypto::private_decrypt ( const basis::byte_array source,
basis::byte_array target 
) const

◆ private_encrypt()

bool crypto::rsa_crypto::private_encrypt ( const basis::byte_array source,
basis::byte_array target 
) const

encrypts "source" using our private key and stores it in "target".

private_encrypt and public_decrypt are also a pair. the trusted user with the private key can create encrypted chunks that anyone with the public key can decrypt.

Definition at line 362 of file rsa_crypto.cpp.

References basis::array< contents >::access(), FUNCDEF, basis::array< contents >::last(), basis::array< contents >::length(), and basis::array< contents >::reset().

◆ private_key()

bool crypto::rsa_crypto::private_key ( basis::byte_array privkey) const

makes a copy of the private key held here.

the private key should never be exposed to anyone else.

Definition at line 269 of file rsa_crypto.cpp.

References basis::array< contents >::access(), structures::attach(), FUNCDEF, basis::array< contents >::length(), and public_key().

Referenced by cromp::cromp_client::enable_encryption().

◆ public_decrypt()

bool crypto::rsa_crypto::public_decrypt ( const basis::byte_array source,
basis::byte_array target 
) const

◆ public_encrypt()

bool crypto::rsa_crypto::public_encrypt ( const basis::byte_array source,
basis::byte_array target 
) const

encrypts "source" using our public key and stores it in "target".

public_encrypt and private_decrypt are a pair. an untrusted user can encrypt with the public key and only the possessor of the private key should be able to decrypt it.

Definition at line 313 of file rsa_crypto.cpp.

References basis::array< contents >::access(), FUNCDEF, basis::array< contents >::last(), basis::array< contents >::length(), and basis::array< contents >::reset().

Referenced by octopi::encryption_infoton::prepare_blowfish_key().

◆ public_key()

bool crypto::rsa_crypto::public_key ( basis::byte_array pubkey) const

makes a copy of the public key held here.

Definition at line 245 of file rsa_crypto.cpp.

References basis::array< contents >::access(), structures::attach(), FUNCDEF, and basis::WHACK().

Referenced by octopi::encryption_infoton::prepare_public_key(), and private_key().

◆ set_key() [1/2]

bool crypto::rsa_crypto::set_key ( basis::byte_array key)

resets this object's key to "key".

the key is only valid if this class created it. note: the "key" is destructively consumed during the set method; do not pass in your only copy.

Definition at line 145 of file rsa_crypto.cpp.

References basis::array< contents >::access(), continuable_error, structures::detach(), FUNCDEF, basis::array< contents >::length(), NULL_POINTER, and static_class_name.

Referenced by operator=(), and rsa_crypto().

◆ set_key() [2/2]

bool crypto::rsa_crypto::set_key ( RSA key)

sets our new "key".

this must be a valid key created via the RSA algorithms.

Definition at line 226 of file rsa_crypto.cpp.

References continuable_error, FUNCDEF, NULL_POINTER, and static_class_name.


The documentation for this class was generated from the following files: