From 7e8ed345e50edd4253d9c409c10650b08a39fa87 Mon Sep 17 00:00:00 2001 From: Benedict Date: Sun, 18 Dec 2016 17:31:32 +0100 Subject: set6: challenge 45: completed --- lib/lib6.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'lib/lib6.c') diff --git a/lib/lib6.c b/lib/lib6.c index ef0db85..432c959 100644 --- a/lib/lib6.c +++ b/lib/lib6.c @@ -152,7 +152,7 @@ void dsa_sign(char *mess, struct dsa_public_params *pub_param, struct dsa_per_us BN_zero(priv_param->r); BN_zero(priv_param->s); - while(BN_is_zero(priv_param->r) || BN_is_zero(priv_param->s)) { + //while(BN_is_zero(priv_param->r) || BN_is_zero(priv_param->s)) { if(BN_is_zero(k)) { BN_pseudo_rand(k, pub_param->bits, -1, -1); BN_mod(k, k, pub_param->q, ctx); @@ -164,7 +164,7 @@ void dsa_sign(char *mess, struct dsa_public_params *pub_param, struct dsa_per_us BN_mod_add(tmp, hash_bn, tmp, pub_param->q, ctx); BN_mod_inverse(k_1, k, pub_param->q, ctx); BN_mod_mul(priv_param->s, k_1, tmp, pub_param->q, ctx); - } + //} } @@ -224,3 +224,16 @@ void dsa_recover_k_from_repeated_nonce(BIGNUM *mess1_hash, BIGNUM *mess2_hash, printf("recoverd k is: \n"); BN_print(out, k); } + +void dsa_generate_magic_signature(struct dsa_public_params *pub, struct dsa_per_user_param + *priv, BIGNUM *mess_hash) +{ + 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_inverse(tmp, mess_hash, pub->q, ctx); + BN_mod_mul(priv->s, priv->r, tmp, pub->q, ctx); + +} -- cgit v1.2.3-70-g09d2