# 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::DigestEngine (Poco::MD5Engine or Poco::SHA1Engine) is 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, digestLength, digestToHex, reset, update, updateImpl

## Enumerations

### DigestType

DIGEST_MD5

DIGEST_SHA1

## Constructors

### RSADigestEngine

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

Creates the RSADigestEngine with the given RSA key, using the SHA-1 hash algorithm.

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

unsigned 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,
unsigned length
);

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