diff options
author | weidai <weidai11@users.noreply.github.com> | 2013-01-19 02:20:00 +0000 |
---|---|---|
committer | weidai <weidai11@users.noreply.github.com> | 2013-01-19 02:20:00 +0000 |
commit | 2fb44ea6db0df2bdc626c3028635ae41a2ef9f62 (patch) | |
tree | 0489fdbd8b1c5c6f87537d4136dcf1afeecb0bd8 /dsa.cpp | |
parent | 60a5ab4e66722e3ec2db18bfed836a0f0c718c81 (diff) | |
download | cryptopp-git-2fb44ea6db0df2bdc626c3028635ae41a2ef9f62.tar.gz |
add SHA-3
update DSA to FIPS 186-3
update version numbers
Diffstat (limited to 'dsa.cpp')
-rw-r--r-- | dsa.cpp | 56 |
1 files changed, 0 insertions, 56 deletions
@@ -58,62 +58,6 @@ size_t DSAConvertSignatureFormat(byte *buffer, size_t bufferSize, DSASignatureFo return (size_t)sink.TotalPutLength(); } -bool DSA::GeneratePrimes(const byte *seedIn, unsigned int g, int &counter, - Integer &p, unsigned int L, Integer &q, bool useInputCounterValue) -{ - assert(g%8 == 0); - - SHA sha; - SecByteBlock seed(seedIn, g/8); - SecByteBlock U(SHA::DIGESTSIZE); - SecByteBlock temp(SHA::DIGESTSIZE); - SecByteBlock W(((L-1)/160+1) * SHA::DIGESTSIZE); - const int n = (L-1) / 160; - const int b = (L-1) % 160; - Integer X; - - sha.CalculateDigest(U, seed, g/8); - - for (int i=g/8-1, carry=true; i>=0 && carry; i--) - carry=!++seed[i]; - - sha.CalculateDigest(temp, seed, g/8); - xorbuf(U, temp, SHA::DIGESTSIZE); - - U[0] |= 0x80; - U[SHA::DIGESTSIZE-1] |= 1; - q.Decode(U, SHA::DIGESTSIZE); - - if (!IsPrime(q)) - return false; - - int counterEnd = useInputCounterValue ? counter+1 : 4096; - - for (int c = 0; c < counterEnd; c++) - { - for (int k=0; k<=n; k++) - { - for (int i=g/8-1, carry=true; i>=0 && carry; i--) - carry=!++seed[i]; - if (!useInputCounterValue || c == counter) - sha.CalculateDigest(W+(n-k)*SHA::DIGESTSIZE, seed, g/8); - } - if (!useInputCounterValue || c == counter) - { - W[SHA::DIGESTSIZE - 1 - b/8] |= 0x80; - X.Decode(W + SHA::DIGESTSIZE - 1 - b/8, L/8); - p = X-((X % (2*q))-1); - - if (p.GetBit(L-1) && IsPrime(p)) - { - counter = c; - return true; - } - } - } - return false; -} - NAMESPACE_END #endif |