Crypto++  5.6.3
Free C++ class library of cryptographic schemes
Classes | Typedefs | Enumerations | Functions
pubkey.h File Reference

This file contains helper classes/functions for implementing public key algorithms. More...

Go to the source code of this file.

Classes

class  TrapdoorFunctionBounds
 Provides range for plaintext and ciphertext lengths. More...
 
class  RandomizedTrapdoorFunction
 Applies the trapdoor function, using random data if required. More...
 
class  TrapdoorFunction
 Applies the trapdoor function. More...
 
class  RandomizedTrapdoorFunctionInverse
 Applies the inverse of the trapdoor function, using random data if required. More...
 
class  TrapdoorFunctionInverse
 Applies the inverse of the trapdoor function. More...
 
class  PK_EncryptionMessageEncodingMethod
 Message encoding method for public key encryption. More...
 
class  TF_Base< TFI, MEI >
 The base for trapdoor based cryptosystems. More...
 
class  PK_FixedLengthCryptoSystemImpl< BASE >
 Public key trapdoor function default implementation. More...
 
class  TF_CryptoSystemBase< INTERFACE, BASE >
 Trapdoor function cryptosystem base class. More...
 
class  TF_DecryptorBase
 Trapdoor function cryptosystems decryption base class. More...
 
class  TF_EncryptorBase
 
class  PK_SignatureMessageEncodingMethod
 Interface for message encoding method for public key signature schemes. More...
 
struct  PK_SignatureMessageEncodingMethod::HashIdentifierLookup
 
struct  PK_SignatureMessageEncodingMethod::HashIdentifierLookup::HashIdentifierLookup2< H >
 
class  PK_DeterministicSignatureMessageEncodingMethod
 Interface for message encoding method for public key signature schemes. More...
 
class  PK_RecoverableSignatureMessageEncodingMethod
 Interface for message encoding method for public key signature schemes. More...
 
class  DL_SignatureMessageEncodingMethod_DSA
 Interface for message encoding method for public key signature schemes. More...
 
class  DL_SignatureMessageEncodingMethod_NR
 Interface for message encoding method for public key signature schemes. More...
 
class  PK_MessageAccumulatorBase
 Interface for message encoding method for public key signature schemes. More...
 
class  PK_MessageAccumulatorImpl< HASH_ALGORITHM >
 Interface for message encoding method for public key signature schemes. More...
 
class  TF_SignatureSchemeBase< INTERFACE, BASE >
 _ More...
 
class  TF_SignerBase
 _ More...
 
class  TF_VerifierBase
 _ More...
 
struct  TF_CryptoSchemeOptions< T1, T2, T3 >
 _ More...
 
struct  TF_SignatureSchemeOptions< T1, T2, T3, T4 >
 _ More...
 
class  TF_ObjectImplBase< BASE, SCHEME_OPTIONS, KEY_CLASS >
 _ More...
 
class  TF_ObjectImplExtRef< BASE, SCHEME_OPTIONS, KEY >
 _ More...
 
class  TF_ObjectImpl< BASE, SCHEME_OPTIONS, KEY_CLASS >
 _ More...
 
class  TF_DecryptorImpl< SCHEME_OPTIONS >
 _ More...
 
class  TF_EncryptorImpl< SCHEME_OPTIONS >
 _ More...
 
class  TF_SignerImpl< SCHEME_OPTIONS >
 _ More...
 
class  TF_VerifierImpl< SCHEME_OPTIONS >
 _ More...
 
class  MaskGeneratingFunction
 Mask generation function interface. More...
 
class  P1363_MGF1
 P1363 mask generation function. More...
 
class  P1363_KDF2< H >
 
class  DL_BadElement
 Exception thrown when an invalid group element is encountered. More...
 
class  DL_GroupParameters< T >
 Interface for Discrete Log (DL) group parameters. More...
 
class  DL_GroupParametersImpl< GROUP_PRECOMP, BASE_PRECOMP, BASE >
 Base implmentation of Discrete Log (DL) group parameters. More...
 
class  DL_Key< T >
 Base class for a Discrete Log (DL) key. More...
 
class  DL_PublicKey< T >
 Interface for Discrete Log (DL) public keys. More...
 
class  DL_PrivateKey< T >
 Interface for Discrete Log (DL) private keys. More...
 
class  DL_KeyImpl< PK, GP, O >
 _ More...
 
class  DL_PrivateKeyImpl< GP >
 _ More...
 
class  DL_PrivateKey_WithSignaturePairwiseConsistencyTest< BASE, SIGNATURE_SCHEME >
 _ More...
 
class  DL_PublicKeyImpl< GP >
 _ More...
 
class  DL_ElgamalLikeSignatureAlgorithm< T >
 Interface for Elgamal-like signature algorithms. More...
 
class  DL_KeyAgreementAlgorithm< T >
 Interface for DL key agreement algorithms. More...
 
class  DL_KeyDerivationAlgorithm< T >
 Interface for key derivation algorithms used in DL cryptosystems. More...
 
class  DL_SymmetricEncryptionAlgorithm
 Interface for symmetric encryption algorithms used in DL cryptosystems. More...
 
class  DL_Base< KI >
 _ More...
 
class  DL_SignatureSchemeBase< INTERFACE, KEY_INTERFACE >
 _ More...
 
class  DL_SignerBase< T >
 _ More...
 
class  DL_VerifierBase< T >
 _ More...
 
class  DL_CryptoSystemBase< PK, KI >
 _ More...
 
class  DL_DecryptorBase< T >
 _ More...
 
class  DL_EncryptorBase< T >
 _ More...
 
struct  DL_SchemeOptionsBase< T1, T2 >
 _ More...
 
struct  DL_KeyedSchemeOptions< T1, T2 >
 _ More...
 
struct  DL_SignatureSchemeOptions< T1, T2, T3, T4, T5 >
 _ More...
 
struct  DL_CryptoSchemeOptions< T1, T2, T3, T4, T5 >
 _ More...
 
class  DL_ObjectImplBase< BASE, SCHEME_OPTIONS, KEY >
 _ More...
 
class  DL_ObjectImpl< BASE, SCHEME_OPTIONS, KEY >
 _ More...
 
class  DL_SignerImpl< SCHEME_OPTIONS >
 _ More...
 
class  DL_VerifierImpl< SCHEME_OPTIONS >
 _ More...
 
class  DL_EncryptorImpl< SCHEME_OPTIONS >
 _ More...
 
class  DL_DecryptorImpl< SCHEME_OPTIONS >
 _ More...
 
class  DL_SimpleKeyAgreementDomainBase< T >
 _ More...
 
class  DL_KeyAgreementAlgorithm_DH< ELEMENT, COFACTOR_OPTION >
 
class  PK_FinalTemplate< BASE >
 
struct  EncryptionStandard
 Base class for public key encryption standard classes. More...
 
struct  SignatureStandard
 Base class for public key signature standard classes. More...
 
class  TF_ES< STANDARD, KEYS, ALG_INFO >
 Trapdoor Function Based Encryption Scheme. More...
 
class  TF_ES< STANDARD, KEYS, ALG_INFO >
 Trapdoor Function Based Encryption Scheme. More...
 
class  TF_SS< STANDARD, H, KEYS, ALG_INFO >
 Trapdoor Function Based Signature Scheme. More...
 
class  TF_SS< STANDARD, H, KEYS, ALG_INFO >
 Trapdoor Function Based Signature Scheme. More...
 
class  DL_SS< KEYS, SA, MEM, H, ALG_INFO >
 Discrete Log Based Signature Scheme. More...
 
class  DL_SS< KEYS, SA, MEM, H, ALG_INFO >
 Discrete Log Based Signature Scheme. More...
 
class  DL_ES< KEYS, AA, DA, EA, ALG_INFO >
 Discrete Log Based Encryption Scheme. More...
 

Typedefs

typedef std::pair< const byte *, size_t > HashIdentifier
 
typedef EnumToType< CofactorMultiplicationOption, NO_COFACTOR_MULTIPLICTIONNoCofactorMultiplication
 
typedef EnumToType< CofactorMultiplicationOption, COMPATIBLE_COFACTOR_MULTIPLICTIONCompatibleCofactorMultiplication
 
typedef EnumToType< CofactorMultiplicationOption, INCOMPATIBLE_COFACTOR_MULTIPLICTIONIncompatibleCofactorMultiplication
 

Enumerations

enum  CofactorMultiplicationOption { NO_COFACTOR_MULTIPLICTION, COMPATIBLE_COFACTOR_MULTIPLICTION, INCOMPATIBLE_COFACTOR_MULTIPLICTION }
 Methods for avoiding "Small-Subgroup" attacks on Diffie-Hellman Key Agreement. More...
 

Functions

void P1363_MGF1KDF2_Common (HashTransformation &hash, byte *output, size_t outputLength, const byte *input, size_t inputLength, const byte *derivationParams, size_t derivationParamsLength, bool mask, unsigned int counterStart)
 

Detailed Description

This file contains helper classes/functions for implementing public key algorithms.

The class hierachies in this header file tend to look like this:

                  x1
                 +--+
                 |  |
                y1  z1
                 |  |
            x2<y1>  x2<z1>
                 |  |
                y2  z2
                 |  |
            x3<y2>  x3<z2>
                 |  |
                y3  z3

The TF_ prefix means an implementation using trapdoor functions on integers.

The DL_ prefix means an implementation using group operations (in groups where discrete log is hard).

Definition in file pubkey.h.

Enumeration Type Documentation

Methods for avoiding "Small-Subgroup" attacks on Diffie-Hellman Key Agreement.

Additional methods exist and include public key validation and choice of prime p.

See also
Methods for Avoiding the "Small-Subgroup" Attacks on the Diffie-Hellman Key Agreement Method for S/MIME
Enumerator
NO_COFACTOR_MULTIPLICTION 

No cofactor multiplication applied.

COMPATIBLE_COFACTOR_MULTIPLICTION 

Cofactor multiplication compatible with ordinary Diffie-Hellman.

Modifies the computation of ZZ by including j (the cofactor) in the computations and is compatible with ordinary Diffie-Hellman.

INCOMPATIBLE_COFACTOR_MULTIPLICTION 

Cofactor multiplication incompatible with ordinary Diffie-Hellman.

Modifies the computation of ZZ by including j (the cofactor) in the computations but is not compatible with ordinary Diffie-Hellman.

Definition at line 1866 of file pubkey.h.