# 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.

## Member Summary

Member Functions: decryptionExponent, encryptionExponent, impl, modulus, name, save, size

## Enumerations

### Exponent

EXP_SMALL = 0

EXP_LARGE

### KeyLength

KL_512 = 512

KL_1024 = 1024

KL_2048 = 2048

KL_4096 = 4096

## Constructors

### RSAKey

explicit RSAKey(
const X509Certificate & cert
);

Extracts the RSA public key from the given certificate.

### 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. Can only by used for signing if a private key is available.

### RSAKey

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

Creates the RSAKey. Can only by used for signing if pPrivKey is not null. If a private key file is specified, you don't need to specify a public key file. OpenSSL will auto-create it 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.

### name

const std::string & name() const;

Returns "rsa"

### save

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

Exports the public and private keys to the given files.

If an empty filename is specified, the corresponding key is not exported.

### save

void save(
std::ostream * pPublicKeyStream,
std::ostream * pPrivateKeyStream = 0,
const std::string & privateKeyPassphrase = ""
);

Exports the public and private key to the given streams.

If a null pointer is passed for a stream, the corresponding key is not exported.

### size

int size() const;

Returns the RSA modulus size.