25 {
26
27
28 bool doCheck(false);
29 int nChecks(1);
30 if ( argc > 1 ) {
31 std::string
arg(argv[1]);
32 if ( arg == "-c" ) doCheck = true;
33 }
34 if ( argc > 2 ) {
35 nChecks =
atoi(argv[2]);
36 }
37
38
40
41
43
44 std::cout << "\nBlinding keys generated:\n";
45 std::cout <<
" Private key: " <<
keys.first <<
"\n";
46 std::cout <<
" Public key: " <<
keys.second <<
"\n";
47 std::cout << std::endl;
48
49
50 if ( doCheck ) {
51 srand(
static_cast<unsigned>(
time(0)));
52
53 std::cout << "Encryption test:\n";
54 int nOK(0);
55
56
57 for (
int i=0;
i<nChecks; ++
i) {
58
59
60 float val = 10000.*
static_cast <float>(
rand())/(
static_cast <float> (RAND_MAX));
61
64 if ( dec == val ) ++nOK;
65 if ( i == 0 || dec != val ) {
66 std::cout <<
" Test # " <<
i <<
"\n";
67 std::cout <<
" val = " <<
val <<
"\n";
68 std::cout << " enc = " << enc << "\n";
69 std::cout << " dec = " << dec << "\n";
70 if ( dec == val ) {
71 std::cout << " => worked!\n";
72 } else {
73 std::cout << " => FAILED!\n";
74 }
75 }
76 }
77 std::cout << std::endl;
78 std::cout << "Summary:\n";
79 std::cout << " nChecks: " << std::setw(12) << nChecks << "\n";
80 std::cout << " nOK : " << std::setw(12) << nOK << "\n";
81 std::cout << " nFailed: " << std::setw(12) << nChecks - nOK << std::endl;
82 }
83
84 return 0;
85}
Provide simple asymmetric encryption for blinding of float values.
virtual ULLI_t encrypt(ULLI_t x)
Encrypt a positive integer value.
virtual ULLI_t decrypt(ULLI_t x)
Decrypt a positive integer value.
virtual std::pair< std::string, std::string > genKeyPair()
Generate private and public keys.
time(flags, cells_name, *args, **kw)
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...