Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CODEX_Ciphers::TranslationCertificate Class Reference

This class holds a proof that two ElGamalCipherText%s decrypt to the same plaintext. More...

#include <TranslationCertificate.h>

Inheritance diagram for CODEX_Ciphers::TranslationCertificate:

Inheritance graph
[legend]
Collaboration diagram for CODEX_Ciphers::TranslationCertificate:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TranslationCertificate ()
 Default constructor, for creating an object to be unmarshalled.
 TranslationCertificate (const ElGamalPublicKey &pubKeyRecipient, const ElGamalPrivateKey &privKeyCreator, const CODEX_ASN1::BigNumber &h, const BIGNUM *k, const ElGamalCipherText &cipherTextCreator, const HashFunction &hashFunc)
 Create a TranslationCertificate from ElGamalCipherText%s and keys.
 TranslationCertificate (const CODEX_ASN1::BigNumber &z1bar, const CODEX_ASN1::BigNumber &z2bar, const CODEX_ASN1::BigNumber &G, const CODEX_ASN1::BigNumber &H, const CODEX_ASN1::BigNumber &delta, const CODEX_ASN1::BigNumber &F, const CODEX_ASN1::BigNumber &M, const CODEX_ASN1::BigNumber &d1, const CODEX_ASN1::BigNumber &d2)
 Create a TranslationCertificate from the basic components.
 TranslationCertificate (const TranslationCertificate &aCert)
 Create a TranslationCertificate from another one.
virtual ~TranslationCertificate ()
 Virtual Destructor.
void operator= (const TranslationCertificate &aCert)
 Assignment operator.
const CODEX_ASN1::BigNumberz1bar () const
 z1=
const CODEX_ASN1::BigNumberz2bar () const
 z2=
const CODEX_ASN1::BigNumberG () const
 G.
const CODEX_ASN1::BigNumberH () const
 H.
const CODEX_ASN1::BigNumberdelta () const
 delta
const CODEX_ASN1::BigNumberF () const
 F.
const CODEX_ASN1::BigNumberM () const
 M.
const CODEX_ASN1::BigNumberd1 () const
 d1
const CODEX_ASN1::BigNumberd2 () const
 d2
bool verify (const CODEX_ASN1::BigNumber &yCreator, const ElGamalPublicKey &pubKeyRecipient, const ElGamalCipherText &cipherTextCreator, const ElGamalCipherText &cipherTextRecipient, const CODEX_ASN1::BigNumber &h, const HashFunction &hashFunc) const
 Verify the translation certificate.
int marshal (unsigned char **pp) const
 Serialize the object.
void * unmarshal (void *bogus, unsigned char **pp, long length)
 Unserialize the object.
bool initialized () const

Protected Attributes

bool m_initialized
 Has this object been initialized yet, or is it still blank?

Detailed Description

This class holds a proof that two ElGamalCipherText%s decrypt to the same plaintext.

See also:
Markus Jakobsson. On Quorum Controlled Asymmetric Proxy Re-encryption. Public Key Cryptography, Proceedings of the Second International Workshop on Practice and Theory in Public Key Cryptography (PKC'99), pp.112-121, 1999.
Note:
In the above paper, Jakobsson mis-defines sigma as a2/a1 when it should be a1/a2. He also uses q as the modulus for computations involving exponents when the appropriate modulus is p-1. The notation differs slightly from that used here, as well as from what appears to be standard in the literature relating to ElGamal encryption. Jakobsson used b to refer to what we call c1, and a to refer to what we call c2. While a and b are commonly used as the components of an ElGamal ciphertext, their sense is usually reversed. Jakobsson's delta (in the original notation, not the translation certificate) is our k. His subscripts 1 and 2 generally refer to our creator and recipient, respectively.

Definition at line 51 of file TranslationCertificate.h.


Constructor & Destructor Documentation

TranslationCertificate::TranslationCertificate const ElGamalPublicKey pubKeyRecipient,
const ElGamalPrivateKey privKeyCreator,
const CODEX_ASN1::BigNumber h,
const BIGNUM *  k,
const ElGamalCipherText cipherTextCreator,
const HashFunction hashFunc
 

Create a TranslationCertificate from ElGamalCipherText%s and keys.

This is a very computation-intensive constructor.

Parameters:
pubKeyRecipient The ElGamalPublicKey for the recipient.
privKeyCreator The ElGamalPrivateKey for the certificate creator.
h The secondary shared generator.
k The random number used in encrypting with the recipient's public key.
cipherTextCreator The ElGamalCipherText encrypted with the creator's public key.
hashFunc A functional object to compute secure hashes.
Exceptions:
BignumContextException There was a problem allocating memory for the BN_CTX.
BignumNullException There was a problem allocating memory for a BIGNUM.
BignumModExpException There was an error during modular exponentiation.
BignumModInverseException There was an error during modular inversion.
BignumRandRangeException There was an error while generating a random number.
BignumModMulException There was an error during modular multiplication.
BignumAddException There was an error during addition.
BignumSubException There was an error during subtraction.
BignumModException There was an error while computing a remainder.
BignumBin2BNException There was an error converting a string to a BIGNUM.

Definition at line 30 of file TranslationCertificate.cc.

References CODEX_ASN1::BigNumber::marshal().


Member Function Documentation

bool CODEX_ASN1::Base::initialized  )  const [inline, inherited]
 

Returns:
Has this object been initialized?

Definition at line 175 of file Base.h.

References CODEX_ASN1::Base::m_initialized.

Referenced by CODEX_APSS::SecretManagement::addComputeMsg(), CODEX_APSS::SecretManagement::addEstablishMsg(), CODEX_APSS::SecretManagement::addEstablishResponse(), CODEX_APSS::SecretManagement::addInitMsg(), CODEX_APSS::SecretManagement::addSharing(), CODEX_APSS::SecretManagement::addSubsharing(), CODEX_VSS::Combinatoric< NumT, ThreshT >::apply(), CODEX_Server::ServerState::caKey(), CODEX_KeyService::ClientCreateCallback::ClientCreateCallback(), CODEX_VSS::Combinatoric< NumT, ThreshT >::count(), CODEX_Server::QuorumBuilderAct::handler(), CODEX_APSS::MessageVerifier::handler(), CODEX_KeyService::DelegateResponseVerifier::handler(), CODEX_KeyService::DelegateRequestDistributor::handler(), CODEX_KeyService::ClientMessageVerifier::handler(), CODEX_KeyService::ClientMessageSigner::handler(), CODEX_VSS::SubshareLabel< LabelType >::marshal(), CODEX_KeyService::KeyInfo::marshal(), CODEX_VSS::LabeledShare< ShareType, OneWay >::marshal(), CODEX_VSS::ShareLabel< _ShareType, _OneWay >::marshal(), CODEX_VSS::ModExpFunctionalArgs::marshal(), CODEX_VSS::Combinatoric< NumT, ThreshT >::marshal(), CODEX_KeyService::SignWriteCallback::operator()(), CODEX_KeyService::SignReadCallback::operator()(), CODEX_KeyService::SignCreateCallback::operator()(), CODEX_VSS::ModExpFunctional::operator()(), CODEX_KeyService::ClientReadCallback::operator()(), CODEX_KeyService::ClientCreateCallback::operator()(), CODEX_VSS::Combinatoric< NumT, ThreshT >::operator+=(), CODEX_Server::ServerState::readElGamalShares(), CODEX_VSS::Combinatoric< NumT, ThreshT >::recover(), CODEX_APSS::SecretManagement::sendFinished(), CODEX_Server::ServerState::serviceKey(), CODEX_Server::ServerState::setEGShareCallback(), and CODEX_Server::ServerState::setRSAShareCallback().

bool TranslationCertificate::verify const CODEX_ASN1::BigNumber yCreator,
const ElGamalPublicKey pubKeyRecipient,
const ElGamalCipherText cipherTextCreator,
const ElGamalCipherText cipherTextRecipient,
const CODEX_ASN1::BigNumber h,
const HashFunction hashFunc
const
 

Verify the translation certificate.

Parameters:
yCreator y from the certificate creator's public key.
pubKeyRecipient The ElGamalPublicKey of the recipient.
cipherTextCreator The ElGamalCipherText encrypted with the creator's public key.
cipherTextRecipient The ElGamalCipherText encrypted with the recipient's public key.
h The secondary shared generator.
hashFunc A functional object to compute secure hashes.
Returns:
Success or failure of the certificate verification
Exceptions:
BignumContextException There was a problem allocating memory for the BN_CTX.
BignumNullException There was a problem allocating memory for a BIGNUM.
BignumModInverseException There was an error during modular inversion.
BignumModMulException There was an error during modular multiplication.
BignumModExpException There was an error during modular exponentiation.
BignumBin2BNException There was an error converting a string to a BIGNUM.

Definition at line 497 of file TranslationCertificate.cc.

References CODEX_ASN1::BigNumber::marshal(), and CODEX_ASN1::BigNumber::value().


The documentation for this class was generated from the following files:
Generated on Fri May 6 17:41:54 2005 for COrnell Data EXchange (CODEX) by  doxygen 1.4.1