minor changes

pull/2/head
weidai 2003-03-25 02:11:53 +00:00
parent a7d2ffa2b3
commit 2ccaf2ef1d
4 changed files with 18 additions and 3 deletions

View File

@ -440,7 +440,7 @@ bool FirstPrime(Integer &p, const Integer &max, const Integer &equiv, const Inte
else
pItr = primeTable;
while (pItr < primeTable+primeTableSize && *pItr%mod != equiv)
while (pItr < primeTable+primeTableSize && !(*pItr%mod == equiv && (!pSelector || pSelector->IsAcceptable(*pItr))))
++pItr;
if (pItr < primeTable+primeTableSize)

View File

@ -217,13 +217,17 @@ Integer InvertibleRSAFunction::CalculateInverse(RandomNumberGenerator &rng, cons
{
DoQuickSanityCheck();
ModularArithmetic modn(m_n);
Integer r(rng, Integer::One(), m_n - Integer::One());
Integer r, rInv;
do { // do this loop for people using small numbers for testing
r.Randomize(rng, Integer::One(), m_n - Integer::One());
rInv = modn.MultiplicativeInverse(r);
} while (rInv.IsZero());
Integer re = modn.Exponentiate(r, m_e);
re = modn.Multiply(re, x); // blind
// here we follow the notation of PKCS #1 and let u=q inverse mod p
// but in ModRoot, u=p inverse mod q, so we reverse the order of p and q
Integer y = ModularRoot(re, m_dq, m_dp, m_q, m_p, m_u);
y = modn.Divide(y, r); // unblind
y = modn.Multiply(y, rInv); // unblind
if (modn.Exponentiate(y, m_e) != x) // check
throw Exception(Exception::OTHER_ERROR, "InvertibleRSAFunction: computational error during private key operation");
return y;

View File

@ -15,6 +15,15 @@
NAMESPACE_BEGIN(CryptoPP)
unsigned int WaitObjectContainer::MaxWaitObjects()
{
#ifdef USE_WINDOWS_STYLE_SOCKETS
return MAXIMUM_WAIT_OBJECTS * (MAXIMUM_WAIT_OBJECTS-1);
#else
return FD_SETSIZE;
#endif
}
WaitObjectContainer::WaitObjectContainer()
{
Clear();

2
wait.h
View File

@ -29,6 +29,8 @@ public:
Err(const std::string& s) : Exception(IO_ERROR, s) {}
};
static unsigned int MaxWaitObjects();
WaitObjectContainer();
void Clear();