Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   Related Pages  

CODEX_Ciphers::TranslationCertificate Class Reference

This class holds a proof that two ElGamalCipherTexts 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 Methods

 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 ElGamalCipherTexts 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
 
Returns:
z1=


const CODEX_ASN1::BigNumberz2bar () const
 
Returns:
z2=


const CODEX_ASN1::BigNumberG () const
 
Returns:
G


const CODEX_ASN1::BigNumberH () const
 
Returns:
H


const CODEX_ASN1::BigNumberdelta () const
 
Returns:
delta


const CODEX_ASN1::BigNumberF () const
 
Returns:
F


const CODEX_ASN1::BigNumberM () const
 
Returns:
M


const CODEX_ASN1::BigNumberd1 () const
 
Returns:
d1


const CODEX_ASN1::BigNumberd2 () const
 
Returns:
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.


Detailed Description

This class holds a proof that two ElGamalCipherTexts 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 48 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 ElGamalCipherTexts 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_Ciphers::ElGamalCipherText::c1(), CODEX_Ciphers::ElGamalPublicKey::g(), CODEX_ASN1::BigNumber::marshal(), CODEX_Ciphers::ElGamalPublicKey::p(), CODEX_Ciphers::ElGamalPublicKey::p1(), CODEX_ASN1::BigNumber::value(), and CODEX_Ciphers::ElGamalPublicKey::y().


Member Function Documentation

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_Ciphers::ElGamalCipherText::c1(), CODEX_Ciphers::ElGamalCipherText::c2(), CODEX_Ciphers::ElGamalPublicKey::g(), CODEX_ASN1::BigNumber::marshal(), CODEX_Ciphers::ElGamalPublicKey::p(), CODEX_Ciphers::ElGamalPublicKey::p1(), CODEX_ASN1::BigNumber::value(), and CODEX_Ciphers::ElGamalPublicKey::y().


The documentation for this class was generated from the following files:
Generated on Wed Jun 2 16:33:05 2004 for COrnell Data EXchange (CODEX) by doxygen1.2.18