X-Git-Url: http://git.euphorik.ch/?p=crypto_lab3.git;a=blobdiff_plain;f=src%2FRsaCrt.cpp;fp=src%2FRsaCrt.cpp;h=b07801338575ecc550b40a00d8aab945deb5f084;hp=ff3f21e6d951f396d69964804d965ecad52e6dd0;hb=2745bc6570ac32789650336b8c84a52d1883c62a;hpb=d061bc06b7e5681e9da4c2c0b7642f50d126ff76 diff --git a/src/RsaCrt.cpp b/src/RsaCrt.cpp index ff3f21e..b078013 100644 --- a/src/RsaCrt.cpp +++ b/src/RsaCrt.cpp @@ -41,3 +41,17 @@ mpz_class RsaCrt::sign(const mpz_class& m, const KeyPriv& kPriv) return sq + ((kPriv.qInv * (sp - sq)) % kPriv.p) * kPriv.q; } + +mpz_class RsaCrt::signWithFaultySp(const mpz_class& m, const KeyPriv& kPriv) +{ + mpz_class sp, sq; + + mpz_powm_sec(sp.get_mpz_t(), m.get_mpz_t(), kPriv.dp.get_mpz_t(), kPriv.p.get_mpz_t()); + mpz_powm_sec(sq.get_mpz_t(), m.get_mpz_t(), kPriv.dq.get_mpz_t(), kPriv.q.get_mpz_t()); + + mpz_combit(sp.get_mpz_t(), 42); // Flip the fourty second bit. + + return sq + ((kPriv.qInv * (sp - sq)) % kPriv.p) * kPriv.q; +} + +