ac75df1f1a7ab658ee3163590a67a779f13553cf
[crypto_lab3.git] / src / main.cpp
1 /**
2 * ICR - Labo 3.
3 * It uses GMPxx lib and C++11.
4 * It needs the RNG file "/dev/urandom".
5 *
6 * Author: Grégory Burri
7 */
8
9 #include <iostream>
10 using namespace std;
11
12 #include <gmpxx.h>
13
14 #include "Rsa.h"
15 #include "RsaCrt.h"
16
17 const uint KEY_SIZE_BITS = 1024;
18 const uint RSA_PUBLIC_EXPONENT = 65537;
19
20 int main(int argc, char** argv)
21 {
22 vector<string> args;
23 for (int i = 0; i < argc; i++)
24 args.push_back(string(argv[i]));
25
26 const auto& keys = Rsa::generateRSAKeys(RSA_PUBLIC_EXPONENT, KEY_SIZE_BITS);
27 const auto& kPub = keys.first;
28 const auto& kPriv = keys.second;
29
30 mpz_class message(42);
31 mpz_class signature = Rsa::sign(message, kPriv);
32
33 mpz_class message2(42);
34 cout << "verify: " << Rsa::verifySignature(message2, signature, kPub) << endl;
35
36 mpz_class message3(43);
37 cout << "verify: " << Rsa::verifySignature(message3, signature, kPub) << endl;
38
39 return 0;
40 }