# PK_Verifier Class Reference

`#include <cryptlib.h>`

Inheritance diagram for PK_Verifier:

List of all members.

## Detailed Description

interface for public-key signature verifiers

The Recover* functions throw NotImplemented if the signature scheme does not support message recovery. The Verify* functions throw InvalidDataFormat if the scheme does support message recovery and the signature contains a non-empty recoverable message part. The Recovery* functions should be used in that case.

Definition at line 1401 of file cryptlib.h.

## Public Member Functions
virtual PK_MessageAccumulator * | NewVerificationAccumulator () const =0
| create a new HashTransformation to accumulate the message to be verified
virtual void | InputSignature (PK_MessageAccumulator &messageAccumulator, const byte *signature, size_t signatureLength) const =0
| input signature into a message accumulator
virtual bool | Verify (PK_MessageAccumulator *messageAccumulator) const
| check whether messageAccumulator contains a valid signature and message, and delete messageAccumulator (even in case of exception thrown)
virtual bool | VerifyAndRestart (PK_MessageAccumulator &messageAccumulator) const =0
| check whether messageAccumulator contains a valid signature and message, and restart messageAccumulator
virtual bool | VerifyMessage (const byte *message, size_t messageLen, const byte *signature, size_t signatureLength) const
| check whether input signature is a valid signature for input message
virtual DecodingResult | Recover (byte *recoveredMessage, PK_MessageAccumulator *messageAccumulator) const
| recover a message from its signature
virtual DecodingResult | RecoverAndRestart (byte *recoveredMessage, PK_MessageAccumulator &messageAccumulator) const =0
| recover a message from its signature
virtual DecodingResult | RecoverMessage (byte *recoveredMessage, const byte *nonrecoverableMessage, size_t nonrecoverableMessageLength, const byte *signature, size_t signatureLength) const
| recover a message from its signature
virtual size_t | SignatureLength () const =0
| signature length if it only depends on the key, otherwise 0
virtual size_t | MaxSignatureLength (size_t recoverablePartLength=0) const
| maximum signature length produced for a given length of recoverable message part
virtual size_t | MaxRecoverableLength () const =0
| length of longest message that can be recovered, or 0 if this signature scheme does not support message recovery
virtual size_t | MaxRecoverableLengthFromSignatureLength (size_t signatureLength) const =0
| length of longest message that can be recovered from a signature of given length, or 0 if this signature scheme does not support message recovery
virtual bool | IsProbabilistic () const =0
| requires a random number generator to sign
virtual bool | AllowNonrecoverablePart () const =0
| whether or not a non-recoverable message part can be signed
virtual bool | SignatureUpfront () const
| if this function returns true, during verification you must input the signature before the message, otherwise you can input it at anytime */
virtual bool | RecoverablePartFirst () const =0
| whether you must input the recoverable part before the non-recoverable part during signing
CryptoMaterial & | AccessMaterial ()
| returns a reference to the crypto material used by this object
const CryptoMaterial & | GetMaterial () const
| returns a const reference to the crypto material used by this object
virtual PublicKey & | AccessPublicKey ()=0
virtual const PublicKey & | GetPublicKey () const
void | BERDecode (BufferedTransformation &bt)
| for backwards compatibility, calls AccessMaterial().Load(bt)
void | DEREncode (BufferedTransformation &bt) const
| for backwards compatibility, calls GetMaterial().Save(bt)
virtual std::string | AlgorithmName () const
| returns name of this algorithm, not universally implemented yet
virtual Clonable * | Clone () const
| this is not implemented by most classes yet

## Member Function Documentation

DecodingResult PK_Verifier::Recover | ( | byte * | recoveredMessage,
|  | PK_MessageAccumulator * | messageAccumulator |
| ) |  |  | const`[virtual]`

recover a message from its signature

Precondition:
  size of recoveredMessage == MaxRecoverableLengthFromSignatureLength(signatureLength)

Definition at line 785 of file cryptlib.cpp.

References RecoverAndRestart().

virtual DecodingResult PK_Verifier::RecoverAndRestart | ( | byte * | recoveredMessage,
|  | PK_MessageAccumulator & | messageAccumulator |
| ) |  |  | const`[pure virtual]`

recover a message from its signature

Precondition:
  size of recoveredMessage == MaxRecoverableLengthFromSignatureLength(signatureLength)

Implemented in TF_VerifierBase, DL_VerifierBase< T >, and DL_VerifierBase< SCHEME_OPTIONS::Element >.

Referenced by Recover(), and RecoverMessage().

DecodingResult PK_Verifier::RecoverMessage | ( | byte * | recoveredMessage,
|  | const byte * | nonrecoverableMessage,
|  | size_t | nonrecoverableMessageLength,
|  | const byte * | signature,
|  | size_t | signatureLength |
| ) |  |  | const`[virtual]`

recover a message from its signature

Precondition:
  size of recoveredMessage == MaxRecoverableLengthFromSignatureLength(signatureLength)

Definition at line 791 of file cryptlib.cpp.

References InputSignature(), NewVerificationAccumulator(), and RecoverAndRestart().

virtual bool PK_SignatureScheme::IsProbabilistic | ( |  | ) | const`[pure virtual, inherited]`

requires a random number generator to sign

if this returns false, NullRNG() can be passed to functions that take RandomNumberGenerator &

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

- cryptlib.h
- cryptlib.cpp