Remove useless data from the CRT private key.
[crypto_lab3.git] / src / RsaCrt.cpp
index 19bc4d7..ff3f21e 100644 (file)
@@ -7,25 +7,26 @@ using namespace std;
 
 pair<Rsa::KeyPub, RsaCrt::KeyPriv> RsaCrt::generateRSAKeys(uint exponent, uint keySizeBits)
 {
-   mpz_class phi;
+   mpz_class phi, d;
    Rsa::KeyPub kPub;
    KeyPriv kPriv;
 
    do
    {
-      kPub.e = kPriv.e = exponent;
+      kPub.e = exponent;
       kPriv.p = Rand::randPrime(keySizeBits / 2);
       kPriv.q = Rand::randPrime(keySizeBits / 2);
 
-      kPriv.n = kPub.n = kPriv.p * kPriv.q;
+      kPub.n = kPriv.p * kPriv.q;
       phi = (kPriv.p - 1) * (kPriv.q - 1);
 
    // d = e^-1 (mode phi).
-   } while (mpz_invert(kPriv.d.get_mpz_t(), kPub.e.get_mpz_t(), phi.get_mpz_t()) == 0);
+   } while (mpz_invert(d.get_mpz_t(), kPub.e.get_mpz_t(), phi.get_mpz_t()) == 0);
 
-   kPriv.dp = kPriv.d % (kPriv.p - 1);
-   kPriv.dq = kPriv.d % (kPriv.q - 1);
+   kPriv.dp = d % (kPriv.p - 1);
+   kPriv.dq = d % (kPriv.q - 1);
 
+   // qInv = q^-1 (mod p)
    mpz_invert(kPriv.qInv.get_mpz_t(), kPriv.q.get_mpz_t(), kPriv.p.get_mpz_t());
 
    return make_pair(kPub, kPriv);