9 pair
<Rsa::KeyPub
, RsaStd::KeyPriv
> RsaStd::generateRSAKeys(uint exponent
, uint keySizeBits
)
18 p
= Rand::randPrime(keySizeBits
/ 2);
19 q
= Rand::randPrime(keySizeBits
/ 2);
21 kPriv
.n
= kPub
.n
= p
* q
;
22 phi
= (p
- 1) * (q
- 1);
24 // d = e^-1 (mode phi).
25 } while (mpz_invert(kPriv
.d
.get_mpz_t(), kPub
.e
.get_mpz_t(), phi
.get_mpz_t()) == 0); // If 'd' is not invertible we try another primes.
27 return make_pair(kPub
, kPriv
);
30 mpz_class
RsaStd::sign(const mpz_class
& m
, const KeyPriv
& kPriv
)
35 mpz_powm_sec(result
.get_mpz_t(), m
.get_mpz_t(), kPriv
.d
.get_mpz_t(), kPriv
.n
.get_mpz_t());