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 +++++++++++++++-- lib/lib6.h | 2 ++ 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'lib') 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); + +} diff --git a/lib/lib6.h b/lib/lib6.h index dbd435b..d4578df 100644 --- a/lib/lib6.h +++ b/lib/lib6.h @@ -40,4 +40,6 @@ void dsa_recover_x_from_known_k(struct dsa_public_params *pub, BIGNUM *k, void dsa_recover_k_from_repeated_nonce(BIGNUM *mess1_hash, BIGNUM *mess2_hash, BIGNUM *s1, BIGNUM *s2, struct dsa_public_params *pub, struct dsa_per_user_param *priv, BIGNUM *k); +void dsa_generate_magic_signature(struct dsa_public_params *pub, struct dsa_per_user_param + *priv, BIGNUM *mess_hash); #endif /* __LIB_6_H__ */ -- cgit v1.2.3-70-g09d2