~zooko/cryptopp/trunk

« back to all changes in this revision

Viewing changes to nbtheory.h

  • Committer: weidai
  • Date: 2010-06-18 01:52:34 UTC
  • Revision ID: svn-v4:57ff6487-cd31-0410-9ec3-f628ee90f5f0:trunk/c5:485
avoid SecBlock of arrays

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
 
57
57
CRYPTOPP_DLL unsigned int CRYPTOPP_API PrimeSearchInterval(const Integer &max);
58
58
 
59
 
CRYPTOPP_DLL AlgorithmParameters<AlgorithmParameters<AlgorithmParameters<NullNameValuePairs, Integer::RandomNumberType>, Integer>, Integer>
60
 
        CRYPTOPP_API MakeParametersForTwoPrimesOfEqualSize(unsigned int productBitLength);
 
59
CRYPTOPP_DLL AlgorithmParameters CRYPTOPP_API MakeParametersForTwoPrimesOfEqualSize(unsigned int productBitLength);
61
60
 
62
61
// ********** other number theoretic functions ************
63
62
 
70
69
inline Integer EuclideanMultiplicativeInverse(const Integer &a, const Integer &b)
71
70
        {return a.InverseMod(b);}
72
71
 
73
 
// use Chinese Remainder Theorem to calculate x given x mod p and x mod q
74
 
CRYPTOPP_DLL Integer CRYPTOPP_API CRT(const Integer &xp, const Integer &p, const Integer &xq, const Integer &q);
75
 
// use this one if u = inverse of p mod q has been precalculated
 
72
// use Chinese Remainder Theorem to calculate x given x mod p and x mod q, and u = inverse of p mod q
76
73
CRYPTOPP_DLL Integer CRYPTOPP_API CRT(const Integer &xp, const Integer &p, const Integer &xq, const Integer &q, const Integer &u);
77
74
 
78
75
// if b is prime, then Jacobi(a, b) returns 0 if a%b==0, 1 if a is quadratic residue mod b, -1 otherwise
81
78
 
82
79
// calculates the Lucas function V_e(p, 1) mod n
83
80
CRYPTOPP_DLL Integer CRYPTOPP_API Lucas(const Integer &e, const Integer &p, const Integer &n);
84
 
// calculates x such that m==Lucas(e, x, p*q), p q primes
85
 
CRYPTOPP_DLL Integer CRYPTOPP_API InverseLucas(const Integer &e, const Integer &m, const Integer &p, const Integer &q);
86
 
// use this one if u=inverse of p mod q has been precalculated
 
81
// calculates x such that m==Lucas(e, x, p*q), p q primes, u=inverse of p mod q
87
82
CRYPTOPP_DLL Integer CRYPTOPP_API InverseLucas(const Integer &e, const Integer &m, const Integer &p, const Integer &q, const Integer &u);
88
83
 
89
84
inline Integer ModularExponentiation(const Integer &a, const Integer &e, const Integer &m)
92
87
CRYPTOPP_DLL Integer CRYPTOPP_API ModularSquareRoot(const Integer &a, const Integer &p);
93
88
// returns x such that a==ModularExponentiation(x, e, p*q), p q primes,
94
89
// and e relatively prime to (p-1)*(q-1)
95
 
CRYPTOPP_DLL Integer CRYPTOPP_API ModularRoot(const Integer &a, const Integer &e, const Integer &p, const Integer &q);
96
 
// use this one if dp=d%(p-1), dq=d%(q-1), (d is inverse of e mod (p-1)*(q-1))
97
 
// and u=inverse of p mod q have been precalculated
 
90
// dp=d%(p-1), dq=d%(q-1), (d is inverse of e mod (p-1)*(q-1))
 
91
// and u=inverse of p mod q
98
92
CRYPTOPP_DLL Integer CRYPTOPP_API ModularRoot(const Integer &a, const Integer &dp, const Integer &dq, const Integer &p, const Integer &q, const Integer &u);
99
93
 
100
94
// find r1 and r2 such that ax^2 + bx + c == 0 (mod p) for x in {r1, r2}, p prime