First part: RSA CRT versus RSA std.
[crypto_lab3.git] / src / Rsa.cpp
index be21998..23db34c 100644 (file)
@@ -1,47 +1,11 @@
 #include "Rsa.h"
 
+#include <iostream>
 using namespace std;
 
-#include "Rand.h"
-#include "Utils.h"
-
-pair<Rsa::KeyPub, Rsa::KeyPriv> Rsa::generateRSAKeys(uint exponent, uint keySizeBits)
-{
-   mpz_class p, q, phi;
-   KeyPub kPub;
-   KeyPriv kPriv;
-
-   do
-   {
-      kPub.e = exponent;
-      p = Rand::randPrime(keySizeBits / 2);
-      q = Rand::randPrime(keySizeBits / 2);
-
-      kPriv.n = kPub.n = p * q;
-      phi = (p - 1) * (q - 1);
-
-   } while (mpz_invert(kPriv.d.get_mpz_t(), kPub.e.get_mpz_t(), phi.get_mpz_t()) == 0);
-
-// For debugging purpose.
-//   print("p", p);
-//   print("q", q);
-//   print("n", kPub.n);
-//   print("phi", phi);
-//   print("d", kPriv.d);
-
-   return make_pair(kPub, kPriv);
-}
-
-mpz_class Rsa::sign(const mpz_class& m, const KeyPriv& kPriv)
-{
-   mpz_class result;
-   mpz_powm_sec(result.get_mpz_t(), m.get_mpz_t(), kPriv.d.get_mpz_t(), kPriv.n.get_mpz_t());
-   return result;
-}
-
 bool Rsa::verifySignature(const mpz_class& m, const mpz_class& sig, const KeyPub& kPub)
 {
-   mpz_class mPrime;
-   mpz_powm_sec(mPrime.get_mpz_t(), sig.get_mpz_t(), kPub.e.get_mpz_t(), kPub.n.get_mpz_t());
-   return m == mPrime;
+   mpz_class m2;
+   mpz_powm_sec(m2.get_mpz_t(), sig.get_mpz_t(), kPub.e.get_mpz_t(), kPub.n.get_mpz_t());
+   return m == m2;
 }