summaryrefslogtreecommitdiff
path: root/lib/lib6.c
diff options
context:
space:
mode:
authorBenedict <benedict@0xb8000.de>2016-12-19 20:06:52 +0100
committerBenedict <benedict@0xb8000.de>2017-02-21 13:00:26 +0100
commit530fcd5aaf841210a9d2d189f551c309970916e9 (patch)
treeb82ff437605f29e157874922a39ea25957ec8225 /lib/lib6.c
parent7e8ed345e50edd4253d9c409c10650b08a39fa87 (diff)
set6: challenge 46: completed
Diffstat (limited to 'lib/lib6.c')
-rw-r--r--lib/lib6.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/lib6.c b/lib/lib6.c
index 432c959..5999e91 100644
--- a/lib/lib6.c
+++ b/lib/lib6.c
@@ -228,12 +228,20 @@ void dsa_recover_k_from_repeated_nonce(BIGNUM *mess1_hash, BIGNUM *mess2_hash,
void dsa_generate_magic_signature(struct dsa_public_params *pub, struct dsa_per_user_param
*priv, BIGNUM *mess_hash)
{
- BIGNUM *tmp = BN_new();
+ BIGNUM *tmp = BN_new();
- BN_mod_exp(tmp, priv->public, mess_hash, pub->p, ctx);
- BN_mod(priv->r, tmp, pub->q, ctx);
+ BN_mod_exp(tmp, priv->public, mess_hash, pub->p, ctx);
+ BN_mod(priv->r, tmp, pub->q, ctx);
- BN_mod_inverse(tmp, mess_hash, pub->q, ctx);
- BN_mod_mul(priv->s, priv->r, tmp, pub->q, ctx);
+ BN_mod_inverse(tmp, mess_hash, pub->q, ctx);
+ BN_mod_mul(priv->s, priv->r, tmp, pub->q, ctx);
+
+}
+int rsa_parity_orcale(BIGNUM *message, struct rsa_key_bignum *private)
+{
+ BIGNUM *decrypted = BN_new();
+ // decrypt and check last bit
+ rsa_decrypt_bignum(message, decrypted, private);
+ return BN_is_odd(decrypted);
}