Class Poco::Crypto::RSADigestEngine
Author: Applied Informatics Software Engineering GmbH and Contributors

# Poco::Crypto

# class RSADigestEngine

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

## Description

This class implements a Poco::DigestEngine that can be used to compute a secure digital signature.

First another Poco::Crypto::DigestEngine is created and used to compute a cryptographic hash of the data to be signed. Then, the hash value is encrypted, using the RSA private key.

To verify a signature, pass it to the verify() member function. It will decrypt the signature using the RSA public key and compare the resulting hash with the actual hash of the data.

## Inheritance

Direct Base Classes: Poco::DigestEngine

All Base Classes: Poco::DigestEngine

## Member Summary

Member Functions: digest, digestLength, reset, signature, updateImpl, verify

Inherited Functions: digest, digestFromHex, digestLength, digestToHex, reset, update, updateImpl

## Enumerations

### DigestType

DIGEST_MD5

DIGEST_SHA1

## Constructors

### RSADigestEngine

RSADigestEngine(
const RSAKey & key,
DigestType digestType = DIGEST_SHA1
);

Deprecated. This function is deprecated and should no longer be used.

Creates the RSADigestEngine with the given RSA key, using the MD5 or SHA-1 hash algorithm. Kept for backward compatibility

### RSADigestEngine

RSADigestEngine(
const RSAKey & key,
const std::string & name
);

Creates the RSADigestEngine with the given RSA key, using the hash algorithm with the given name (e.g., "MD5", "SHA1", "SHA256", "SHA512", etc.). See the OpenSSL documentation for a list of supported digest algorithms.

Throws a Poco::NotFoundException if no algorithm with the given name exists.

## Destructor

### ~RSADigestEngine

~RSADigestEngine();

Destroys the RSADigestEngine.

## Member Functions

### digest

const DigestEngine::Digest & digest();

Finishes the computation of the digest (the first time it's called) and returns the message digest.

Can be called multiple times.

### digestLength

std::size_t digestLength() const;

Returns the length of the digest in bytes.

See also: Poco::DigestEngine::digestLength()

### reset

void reset();

Resets the engine so that a new digest can be computed.

See also: Poco::DigestEngine::reset()

### signature

const DigestEngine::Digest & signature();

Signs the digest using the RSA algorithm and the private key (teh first time it's called) and returns the result.

Can be called multiple times.

### verify

bool verify(
const DigestEngine::Digest & signature
);

Verifies the data against the signature.

Returns true if the signature can be verified, false otherwise.

### updateImpl

void updateImpl(
const void * data,
std::size_t length
);

See also: Poco::DigestEngine::updateImpl()