Crypto++
8.3
Free C++ class library of cryptographic schemes
|
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)
104 bool 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)
const char * SubgroupOrder()
Integer.
GF(p^2), optimal normal basis.
bool Validate(RandomNumberGenerator &rng, unsigned int level) const
Check this object for errors.
Classes and functions for number theoretic operations.
void DEREncode(BufferedTransformation &bt) const
Encode in DER format.
const char * Modulus()
Integer.
Integer Squared() const
Multiply this integer by itself.
unsigned int PublicKeyLength() const
Provides the size of the public key.
static const Integer &CRYPTOPP_API One()
Integer representing 1.
#define CRYPTOPP_ASSERT(exp)
Debugging and diagnostic assertion.
void AssignFrom(const NameValuePairs &source)
Assign values to this object.
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.
CRYPTOPP_DLL bool CRYPTOPP_API VerifyPrime(RandomNumberGenerator &rng, const Integer &p, unsigned int level=1)
Verifies a number is probably prime.
Class file for performing modular arithmetic.
Interface for random number generators.
Standard names for retrieving values by name when working with NameValuePairs.
bool IsOdd() const
Determines if the Integer is odd parity.
bool Agree(byte *agreedValue, const byte *privateKey, const byte *otherPublicKey, bool validateOtherPublicKey=true) const
Derive agreed value.
bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const
Get a named value.
Classes and functions for working with ANS.1 objects.
void GeneratePublicKey(RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const
Generate a public key from a private key in this domain.
const char * SubgroupGenerator()
Integer, ECP::Point, or EC2N::Point.
void BERDecode(const byte *input, size_t inputLen)
Decode from BER format.
unsigned int AgreedValueLength() const
Provides the size of the agreed value.
static const Integer &CRYPTOPP_API Zero()
Integer representing 0.
Crypto++ library namespace.
void GeneratePrivateKey(RandomNumberGenerator &rng, byte *privateKey) const
Generate private key in this domain.
bool IsNegative() const
Determines if the Integer is negative.
Interface for retrieving values given their names.
unsigned int PrivateKeyLength() const
Provides the size of the private key.
Multiple precision integer with arithmetic operations.
Multiple precision integer with arithmetic operations.