summaryrefslogtreecommitdiff
path: root/lib/lib6.c
diff options
context:
space:
mode:
authorBenedict <benedict@0xb8000.de>2016-12-18 17:31:32 +0100
committerBenedict <benedict@0xb8000.de>2017-02-21 13:00:26 +0100
commit7e8ed345e50edd4253d9c409c10650b08a39fa87 (patch)
tree4c2bb0d14366f28b2e67d1d6364c41803d29f21c /lib/lib6.c
parenta5b4baa713ed4ffeca70573193ecbc3c0d7421a4 (diff)
set6: challenge 45: completed
Diffstat (limited to 'lib/lib6.c')
-rw-r--r--lib/lib6.c17
1 files changed, 15 insertions, 2 deletions
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);
+
+}