<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>Crypto++: pubkey.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul> </div> </div> <div class="contents"> <h1>pubkey.h File Reference</h1> <p>This file contains helper classes/functions for implementing public key algorithms. <a href="#_details">More...</a></p> <code>#include "modarith.h"</code><br/> <code>#include "filters.h"</code><br/> <code>#include "eprecomp.h"</code><br/> <code>#include "<a class="el" href="fips140_8h_source.html">fips140.h</a>"</code><br/> <code>#include "argnames.h"</code><br/> <code>#include <memory></code><br/> <p><a href="pubkey_8h_source.html">Go to the source code of this file.</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_trapdoor_function_bounds.html">TrapdoorFunctionBounds</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_trapdoor_function_bounds.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_randomized_trapdoor_function.html">RandomizedTrapdoorFunction</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_randomized_trapdoor_function.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_trapdoor_function.html">TrapdoorFunction</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_trapdoor_function.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_randomized_trapdoor_function_inverse.html">RandomizedTrapdoorFunctionInverse</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_randomized_trapdoor_function_inverse.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_trapdoor_function_inverse.html">TrapdoorFunctionInverse</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_trapdoor_function_inverse.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_k___encryption_message_encoding_method.html">PK_EncryptionMessageEncodingMethod</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">message encoding method for public key encryption <a href="class_p_k___encryption_message_encoding_method.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___base.html">TF_Base< TFI, MEI ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_k___fixed_length_crypto_system_impl.html">PK_FixedLengthCryptoSystemImpl< BASE ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_p_k___fixed_length_crypto_system_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___crypto_system_base.html">TF_CryptoSystemBase< INTERFACE, BASE ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___crypto_system_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___decryptor_base.html">TF_DecryptorBase</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___decryptor_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___encryptor_base.html">TF_EncryptorBase</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___encryptor_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_k___signature_message_encoding_method.html">PK_SignatureMessageEncodingMethod</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">interface for message encoding method for public key signature schemes <a href="class_p_k___signature_message_encoding_method.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_k___signature_message_encoding_method_1_1_hash_identifier_lookup.html">PK_SignatureMessageEncodingMethod::HashIdentifierLookup</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_k___signature_message_encoding_method_1_1_hash_identifier_lookup_1_1_hash_identifier_lookup2.html">PK_SignatureMessageEncodingMethod::HashIdentifierLookup::HashIdentifierLookup2< H ></a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_k___deterministic_signature_message_encoding_method.html">PK_DeterministicSignatureMessageEncodingMethod</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_k___recoverable_signature_message_encoding_method.html">PK_RecoverableSignatureMessageEncodingMethod</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___signature_message_encoding_method___d_s_a.html">DL_SignatureMessageEncodingMethod_DSA</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___signature_message_encoding_method___n_r.html">DL_SignatureMessageEncodingMethod_NR</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_k___message_accumulator_base.html">PK_MessageAccumulatorBase</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_k___message_accumulator_impl.html">PK_MessageAccumulatorImpl< HASH_ALGORITHM ></a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___signature_scheme_base.html">TF_SignatureSchemeBase< INTERFACE, BASE ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___signature_scheme_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___signer_base.html">TF_SignerBase</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___signer_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___verifier_base.html">TF_VerifierBase</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___verifier_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_t_f___crypto_scheme_options.html">TF_CryptoSchemeOptions< T1, T2, T3 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="struct_t_f___crypto_scheme_options.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_t_f___signature_scheme_options.html">TF_SignatureSchemeOptions< T1, T2, T3, T4 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="struct_t_f___signature_scheme_options.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___object_impl_base.html">TF_ObjectImplBase< BASE, SCHEME_OPTIONS, KEY_CLASS ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___object_impl_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___object_impl_ext_ref.html">TF_ObjectImplExtRef< BASE, SCHEME_OPTIONS, KEY ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___object_impl_ext_ref.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___object_impl.html">TF_ObjectImpl< BASE, SCHEME_OPTIONS, KEY_CLASS ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___object_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___decryptor_impl.html">TF_DecryptorImpl< SCHEME_OPTIONS ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___decryptor_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___encryptor_impl.html">TF_EncryptorImpl< SCHEME_OPTIONS ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___encryptor_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___signer_impl.html">TF_SignerImpl< SCHEME_OPTIONS ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___signer_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___verifier_impl.html">TF_VerifierImpl< SCHEME_OPTIONS ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_t_f___verifier_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_mask_generating_function.html">MaskGeneratingFunction</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_mask_generating_function.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_p1363___m_g_f1.html">P1363_MGF1</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_p1363___m_g_f1.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_p1363___k_d_f2.html">P1363_KDF2< H ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_p1363___k_d_f2.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___bad_element.html">DL_BadElement</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">to be thrown by DecodeElement and AgreeWithStaticPrivateKey <a href="class_d_l___bad_element.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___group_parameters.html">DL_GroupParameters< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">interface for DL group parameters <a href="class_d_l___group_parameters.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___group_parameters_impl.html">DL_GroupParametersImpl< GROUP_PRECOMP, BASE_PRECOMP, BASE ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___group_parameters_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___key.html">DL_Key< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___key.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___public_key.html">DL_PublicKey< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">interface for DL public keys <a href="class_d_l___public_key.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___private_key.html">DL_PrivateKey< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">interface for DL private keys <a href="class_d_l___private_key.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___key_impl.html">DL_KeyImpl< PK, GP, O ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___key_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___private_key_impl.html">DL_PrivateKeyImpl< GP ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___private_key_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___private_key___with_signature_pairwise_consistency_test.html">DL_PrivateKey_WithSignaturePairwiseConsistencyTest< BASE, SIGNATURE_SCHEME ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___private_key___with_signature_pairwise_consistency_test.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___public_key_impl.html">DL_PublicKeyImpl< GP ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___public_key_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___elgamal_like_signature_algorithm.html">DL_ElgamalLikeSignatureAlgorithm< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">interface for Elgamal-like signature algorithms <a href="class_d_l___elgamal_like_signature_algorithm.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___key_agreement_algorithm.html">DL_KeyAgreementAlgorithm< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">interface for DL key agreement algorithms <a href="class_d_l___key_agreement_algorithm.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___key_derivation_algorithm.html">DL_KeyDerivationAlgorithm< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">interface for key derivation algorithms used in DL cryptosystems <a href="class_d_l___key_derivation_algorithm.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___symmetric_encryption_algorithm.html">DL_SymmetricEncryptionAlgorithm</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">interface for symmetric encryption algorithms used in DL cryptosystems <a href="class_d_l___symmetric_encryption_algorithm.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___base.html">DL_Base< KI ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___signature_scheme_base.html">DL_SignatureSchemeBase< INTERFACE, KEY_INTERFACE ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___signature_scheme_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___signer_base.html">DL_SignerBase< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___signer_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___verifier_base.html">DL_VerifierBase< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___verifier_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___crypto_system_base.html">DL_CryptoSystemBase< PK, KI ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___crypto_system_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___decryptor_base.html">DL_DecryptorBase< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___decryptor_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___encryptor_base.html">DL_EncryptorBase< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___encryptor_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d_l___scheme_options_base.html">DL_SchemeOptionsBase< T1, T2 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="struct_d_l___scheme_options_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d_l___keyed_scheme_options.html">DL_KeyedSchemeOptions< T1, T2 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="struct_d_l___keyed_scheme_options.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d_l___signature_scheme_options.html">DL_SignatureSchemeOptions< T1, T2, T3, T4, T5 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="struct_d_l___signature_scheme_options.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d_l___crypto_scheme_options.html">DL_CryptoSchemeOptions< T1, T2, T3, T4, T5 ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="struct_d_l___crypto_scheme_options.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___object_impl_base.html">DL_ObjectImplBase< BASE, SCHEME_OPTIONS, KEY ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___object_impl_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___object_impl.html">DL_ObjectImpl< BASE, SCHEME_OPTIONS, KEY ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___object_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___signer_impl.html">DL_SignerImpl< SCHEME_OPTIONS ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___signer_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___verifier_impl.html">DL_VerifierImpl< SCHEME_OPTIONS ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___verifier_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___encryptor_impl.html">DL_EncryptorImpl< SCHEME_OPTIONS ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___encryptor_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___decryptor_impl.html">DL_DecryptorImpl< SCHEME_OPTIONS ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___decryptor_impl.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___simple_key_agreement_domain_base.html">DL_SimpleKeyAgreementDomainBase< T ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">_ <a href="class_d_l___simple_key_agreement_domain_base.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___key_agreement_algorithm___d_h.html">DL_KeyAgreementAlgorithm_DH< ELEMENT, COFACTOR_OPTION ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">DH key agreement algorithm. <a href="class_d_l___key_agreement_algorithm___d_h.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_p_k___final_template.html">PK_FinalTemplate< BASE ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">A template implementing constructors for public key algorithm classes. <a href="class_p_k___final_template.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_encryption_standard.html">EncryptionStandard</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Base class for public key encryption standard classes. These classes are used to select from variants of algorithms. Note that not all standards apply to all algorithms. <a href="struct_encryption_standard.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_signature_standard.html">SignatureStandard</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Base class for public key signature standard classes. These classes are used to select from variants of algorithms. Note that not all standards apply to all algorithms. <a href="struct_signature_standard.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___e_s.html">TF_ES< STANDARD, KEYS, ALG_INFO ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Trapdoor Function Based Encryption Scheme. <a href="class_t_f___e_s.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_t_f___s_s.html">TF_SS< STANDARD, H, KEYS, ALG_INFO ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Trapdoor Function Based Signature Scheme. <a href="class_t_f___s_s.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___s_s.html">DL_SS< KEYS, SA, MEM, H, ALG_INFO ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Discrete Log Based Signature Scheme. <a href="class_d_l___s_s.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_l___e_s.html">DL_ES< KEYS, AA, DA, EA, ALG_INFO ></a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Discrete Log Based Encryption Scheme. <a href="class_d_l___e_s.html#_details">More...</a><br/></td></tr> <tr><td colspan="2"><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef874ed3f2d212ac4629255c8ef86dd0"></a><!-- doxytag: member="pubkey.h::HashIdentifier" ref="aef874ed3f2d212ac4629255c8ef86dd0" args="" --> typedef std::pair< const byte <br class="typebreak"/> *, size_t > </td><td class="memItemRight" valign="bottom"><b>HashIdentifier</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69cc5e4d394475c502bf76daee3ee2be"></a><!-- doxytag: member="pubkey.h::NoCofactorMultiplication" ref="a69cc5e4d394475c502bf76daee3ee2be" args="" --> typedef <a class="el" href="struct_enum_to_type.html">EnumToType</a><br class="typebreak"/> < CofactorMultiplicationOption, <br class="typebreak"/> NO_COFACTOR_MULTIPLICTION > </td><td class="memItemRight" valign="bottom"><b>NoCofactorMultiplication</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a762cc7fc032dea36d6c45e101cfb580a"></a><!-- doxytag: member="pubkey.h::CompatibleCofactorMultiplication" ref="a762cc7fc032dea36d6c45e101cfb580a" args="" --> typedef <a class="el" href="struct_enum_to_type.html">EnumToType</a><br class="typebreak"/> < CofactorMultiplicationOption, <br class="typebreak"/> COMPATIBLE_COFACTOR_MULTIPLICTION > </td><td class="memItemRight" valign="bottom"><b>CompatibleCofactorMultiplication</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad4281288ded47691c195822e3e08ec9"></a><!-- doxytag: member="pubkey.h::IncompatibleCofactorMultiplication" ref="aad4281288ded47691c195822e3e08ec9" args="" --> typedef <a class="el" href="struct_enum_to_type.html">EnumToType</a><br class="typebreak"/> < CofactorMultiplicationOption, <br class="typebreak"/> INCOMPATIBLE_COFACTOR_MULTIPLICTION > </td><td class="memItemRight" valign="bottom"><b>IncompatibleCofactorMultiplication</b></td></tr> <tr><td colspan="2"><h2>Enumerations</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><b>CofactorMultiplicationOption</b> { <b>NO_COFACTOR_MULTIPLICTION</b>, <b>COMPATIBLE_COFACTOR_MULTIPLICTION</b>, <b>INCOMPATIBLE_COFACTOR_MULTIPLICTION</b> }</td></tr> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca700ec196ece2df0ebe8e06d61f3240"></a><!-- doxytag: member="pubkey.h::P1363_MGF1KDF2_Common" ref="aca700ec196ece2df0ebe8e06d61f3240" args="(HashTransformation &hash, byte *output, size_t outputLength, const byte *input, size_t inputLength, const byte *derivationParams, size_t derivationParamsLength, bool mask, unsigned int counterStart)" --> void __cdecl </td><td class="memItemRight" valign="bottom"><b>P1363_MGF1KDF2_Common</b> (<a class="el" href="class_hash_transformation.html">HashTransformation</a> &hash, byte *output, size_t outputLength, const byte *input, size_t inputLength, const byte *derivationParams, size_t derivationParamsLength, bool mask, unsigned int counterStart)</td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>This file contains helper classes/functions for implementing public key algorithms. </p> <p>The class hierachies in this .h file tend to look like this: </p> <pre> x1 / \ y1 z1 | | x2<y1> x2<z1> | | y2 z2 | | x3<y2> x3<z2> | | y3 z3 </pre><ul> <li>x1, y1, z1 are abstract interface classes defined in <a class="el" href="cryptlib_8h.html">cryptlib.h</a></li> <li>x2, y2, z2 are implementations of the interfaces using "abstract policies", which are pure virtual functions that should return interfaces to interchangeable algorithms. These classes have "Base" suffixes.</li> <li>x3, y3, z3 hold actual algorithms and implement those virtual functions. These classes have "Impl" suffixes.</li> </ul> <p>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). </p> <p>Definition in file <a class="el" href="pubkey_8h_source.html">pubkey.h</a>.</p> </div> <hr size="1"/><address style="text-align: right;"><small>Generated on 9 Dec 2009 for Crypto++ by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address> </body> </html>