{
public:
struct KeyPriv {
- mpz_class n; // Modulus.
- uint e; // Exponent.
-
mpz_class p;
mpz_class q;
mpz_class dp;
mpz_class dq;
mpz_class qInv;
- mpz_class d;
};
+ /**
+ * Generate a pair of keys (public, private).
+ */
static std::pair<Rsa::KeyPub, KeyPriv> generateRSAKeys(uint exponent, uint keySizeBits);
+ /**
+ * m must not be greater or equal than kPriv.n.
+ */
static mpz_class sign(const mpz_class& m, const KeyPriv& kPriv);
+
+ static mpz_class signWithFaultySp(const mpz_class& m, const KeyPriv& kPriv);
};
#endif