- Main Page
- Namespaces
- Classes
- Files

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# PK_Signer Class Reference

`#include <cryptlib.h>`

Inheritance diagram for PK_Signer:

List of all members.

## Detailed Description

interface for public-key signers

Definition at line 1281 of file cryptlib.h.

## Public Member Functions
virtual PK_MessageAccumulator * | NewSignatureAccumulator (RandomNumberGenerator &rng) const =0
| create a new HashTransformation to accumulate the message to be signed
virtual void | InputRecoverableMessage (PK_MessageAccumulator &messageAccumulator, const byte *recoverableMessage, size_t recoverableMessageLength) const =0
virtual size_t | Sign (RandomNumberGenerator &rng, PK_MessageAccumulator *messageAccumulator, byte *signature) const
| sign and delete messageAccumulator (even in case of exception thrown)
virtual size_t | SignAndRestart (RandomNumberGenerator &rng, PK_MessageAccumulator &messageAccumulator, byte *signature, bool restart=true) const =0
| sign and restart messageAccumulator
virtual size_t | SignMessage (RandomNumberGenerator &rng, const byte *message, size_t messageLen, byte *signature) const
| sign a message
virtual size_t | SignMessageWithRecovery (RandomNumberGenerator &rng, const byte *recoverableMessage, size_t recoverableMessageLength, const byte *nonrecoverableMessage, size_t nonrecoverableMessageLength, byte *signature) const
| sign a recoverable message
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 PrivateKey & | AccessPrivateKey ()=0
virtual const PrivateKey & | GetPrivateKey () 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

size_t PK_Signer::Sign | ( | RandomNumberGenerator & | rng,
|  | PK_MessageAccumulator * | messageAccumulator,
|  | byte * | signature |
| ) |  |  | const`[virtual]`

sign and delete messageAccumulator (even in case of exception thrown)

Precondition:
  size of signature == MaxSignatureLength()

Returns:
  actual signature length

Definition at line 617 of file cryptlib.cpp.

References SignAndRestart().

Referenced by SignerFilter::Put2().

virtual size_t PK_Signer::SignAndRestart | ( | RandomNumberGenerator & | rng,
|  | PK_MessageAccumulator & | messageAccumulator,
|  | byte * | signature,
|  | bool | restart = `true` |
| ) |  |  | const`[pure virtual]`

sign and restart messageAccumulator

Precondition:
  size of signature == MaxSignatureLength()

Returns:
  actual signature length

Implemented in TF_SignerBase, DL_SignerBase< T >, and DL_SignerBase< SCHEME_OPTIONS::Element >.

Referenced by Sign(), SignMessage(), and SignMessageWithRecovery().

size_t PK_Signer::SignMessage | ( | RandomNumberGenerator & | rng,
|  | const byte * | message,
|  | size_t | messageLen,
|  | byte * | signature |
| ) |  |  | const`[virtual]`

sign a message

Precondition:
  size of signature == MaxSignatureLength()

Returns:
  actual signature length

Definition at line 623 of file cryptlib.cpp.

References NewSignatureAccumulator(), and SignAndRestart().

size_t PK_Signer::SignMessageWithRecovery | ( | RandomNumberGenerator & | rng,
|  | const byte * | recoverableMessage,
|  | size_t | recoverableMessageLength,
|  | const byte * | nonrecoverableMessage,
|  | size_t | nonrecoverableMessageLength,
|  | byte * | signature |
| ) |  |  | const`[virtual]`

sign a recoverable message

Precondition:
  size of signature == MaxSignatureLength(recoverableMessageLength)

Returns:
  actual signature length

Definition at line 630 of file cryptlib.cpp.

References NewSignatureAccumulator(), and SignAndRestart().

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 &

Implemented in TF_SignatureSchemeBase< PK_Verifier, TF_Base< TrapdoorFunction, PK_SignatureMessageEncodingMethod > >, TF_SignatureSchemeBase< PK_Signer, TF_Base< RandomizedTrapdoorFunctionInverse, PK_SignatureMessageEncodingMethod > >, DL_SignatureSchemeBase< PK_Signer, DL_PrivateKey< SCHEME_OPTIONS::Element > >, DL_SignatureSchemeBase< PK_Verifier, DL_PublicKey< SCHEME_OPTIONS::Element > >, DL_SignatureSchemeBase< PK_Verifier, DL_PublicKey< T > >, and DL_SignatureSchemeBase< PK_Signer, DL_PrivateKey< T > >.

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

- cryptlib.h
- cryptlib.cpp