# Poco::Crypto

# class RSAKey

Library: Crypto
Package: RSA
Header: Poco/Crypto/RSAKey.h

## Description

This class stores an RSA key pair, consisting of private and public key. Storage of the private key is optional.

If a private key is available, the RSAKey can be used for decrypting data (encrypted with the public key) or computing secure digital signatures.

## Inheritance

Direct Base Classes: KeyPair

All Base Classes: KeyPair

## Member Summary

Member Functions: decryptionExponent, encryptionExponent, impl, modulus, operator =

Inherited Functions: impl, name, operator =, save, size, type

## Enumerations

### Exponent

EXP_SMALL = 0

EXP_LARGE

### KeyLength

KL_512 = 512

KL_1024 = 1024

KL_2048 = 2048

KL_4096 = 4096

## Constructors

### RSAKey

RSAKey(
const EVPPKey & key
);

Constructs RSAKey by extracting the RSA key.

### RSAKey

RSAKey(
const X509Certificate & cert
);

Extracts the RSA public key from the given certificate.

### RSAKey

RSAKey(
const PKCS12Container & cert
);

Extracts the RSA private key from the given certificate.

### RSAKey

RSAKey(
const RSAKey & other
);

Copy constructor.

### RSAKey

RSAKey(
RSAKey && other
) noexcept;

Move constructor.

### RSAKey

RSAKey(
KeyLength keyLength,
Exponent exp
);

Creates the RSAKey. Creates a new public/private keypair using the given parameters. Can be used to sign data and verify signatures.

### RSAKey

RSAKey(
const std::string & publicKeyFile,
const std::string & privateKeyFile = "",
const std::string & privateKeyPassphrase = ""
);

Creates the RSAKey, by reading public and private key from the given files and using the given passphrase for the private key.

Cannot be used for signing or decryption unless a private key is available.

If a private key is specified, you don't need to specify a public key file. OpenSSL will auto-create the public key from the private key.

### RSAKey

RSAKey(
std::istream * pPublicKeyStream,
std::istream * pPrivateKeyStream = nullptr,
const std::string & privateKeyPassphrase = ""
);

Creates the RSAKey, by reading public and private key from the given streams and using the given passphrase for the private key.

Cannot be used for signing or decryption unless a private key is available.

If a private key is specified, you don't need to specify a public key file. OpenSSL will auto-create the public key from the private key.

## Destructor

### ~RSAKey

~RSAKey();

Destroys the RSAKey.

## Member Functions

### decryptionExponent

RSAKeyImpl::ByteVec decryptionExponent() const;

Returns the RSA decryption exponent.

### encryptionExponent

RSAKeyImpl::ByteVec encryptionExponent() const;

Returns the RSA encryption exponent.

### impl

RSAKeyImpl::Ptr impl() const;

Returns the impl object.

### modulus

RSAKeyImpl::ByteVec modulus() const;

Returns the RSA modulus.

### operator =

RSAKey & operator = (
const RSAKey & other
);

Assignment.

### operator =

RSAKey & operator = (
RSAKey && other
) noexcept;

Move assignment.