15 : m_p(p), m_q(q), m_g(g)
53 pass = pass && !(m_g.c1.
IsNegative() || m_g.c2.
IsNegative() || m_g.c1 >= m_p || m_g.c2 >= m_p || m_g == three);
57 pass = pass && ((m_p.
Squared()-m_p+1)%m_q).IsZero();
64 pass = pass && XTR_Exponentiate(m_g, (m_p.
Squared()-m_p+1)/m_q, m_p) != three;
66 pass = pass && XTR_Exponentiate(m_g, m_q, m_p) == three;
74 return GetValueHelper(
this, name, valueType, pValue).Assignable()
75 CRYPTOPP_GET_FUNCTION_ENTRY(
Modulus)
83 AssignFromHelper(
this, source)
84 CRYPTOPP_SET_FUNCTION_ENTRY(
Modulus)
104bool XTR_DH::Agree(
byte *agreedValue,
const byte *privateKey,
const byte *otherPublicKey,
bool validateOtherPublicKey)
const
107 if (validateOtherPublicKey)
113 if (XTR_Exponentiate(w, m_q, m_p) != three)
Standard names for retrieving values by name when working with NameValuePairs.
Classes and functions for working with ANS.1 objects.
GF(p^2), optimal normal basis.
Multiple precision integer with arithmetic operations.
void DEREncode(BufferedTransformation &bt) const
Encode in DER format.
static const Integer & Zero()
Integer representing 0.
Integer Squared() const
Multiply this integer by itself.
void BERDecode(const byte *input, size_t inputLen)
Decode from BER format.
bool IsNegative() const
Determines if the Integer is negative.
bool IsOdd() const
Determines if the Integer is odd parity.
static const Integer & One()
Integer representing 1.
Interface for retrieving values given their names.
Interface for random number generators.
bool Agree(byte *agreedValue, const byte *privateKey, const byte *otherPublicKey, bool validateOtherPublicKey=true) const
Derive agreed value.
bool Validate(RandomNumberGenerator &rng, unsigned int level) const
Check this object for errors.
bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const
Get a named value.
unsigned int AgreedValueLength() const
Provides the size of the agreed value.
unsigned int PublicKeyLength() const
Provides the size of the public key.
unsigned int PrivateKeyLength() const
Provides the size of the private key.
void AssignFrom(const NameValuePairs &source)
Assign values to this object.
void GeneratePrivateKey(RandomNumberGenerator &rng, byte *privateKey) const
Generate private key in this domain.
void GeneratePublicKey(RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const
Generate a public key from a private key in this domain.
Multiple precision integer with arithmetic operations.
Class file for performing modular arithmetic.
Crypto++ library namespace.
const char * Modulus()
Integer.
const char * SubgroupGenerator()
Integer, ECP::Point, or EC2N::Point.
const char * SubgroupOrder()
Integer.
Classes and functions for number theoretic operations.
CRYPTOPP_DLL bool VerifyPrime(RandomNumberGenerator &rng, const Integer &p, unsigned int level=1)
Verifies a number is probably prime.
#define CRYPTOPP_ASSERT(exp)
Debugging and diagnostic assertion.
void XTR_FindPrimesAndGenerator(RandomNumberGenerator &rng, Integer &p, Integer &q, GFP2Element &g, unsigned int pbits, unsigned int qbits)
Creates primes p,q and generator g for XTR.