summaryrefslogtreecommitdiff
path: root/lib/lib6.c
diff options
context:
space:
mode:
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);
}