From 29591502e2ab22a262063e5552438b23380b3e55 Mon Sep 17 00:00:00 2001 From: Benedict Date: Sat, 17 Dec 2016 17:40:31 +0100 Subject: set6: challenge 43: completed --- lib/lib6.h | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'lib/lib6.h') diff --git a/lib/lib6.h b/lib/lib6.h index 23741b0..88fc530 100644 --- a/lib/lib6.h +++ b/lib/lib6.h @@ -8,9 +8,33 @@ #include "lib.h" +struct dsa_public_params { + BIGNUM *p; + BIGNUM *q; + BIGNUM *g; + unsigned int bits; +}; + +struct dsa_per_user_param { + BIGNUM *public; + BIGNUM *private; + // signature data here also because they should not be here + BIGNUM *r; + BIGNUM *s; +}; + + int rsa_sign_bignum(BIGNUM *message, BIGNUM *signed_message, struct rsa_key_bignum *private); int rsa_verify_bignum(BIGNUM *signed_message, BIGNUM *org_message, struct rsa_key_bignum *public); int shitty_pkcs1_5_padding_verify(char *to_verify, int len, char *message); int pkcs1_5_padding_verify(char *to_verify, int len, char *message); - +void init_dsa_pub_param(struct dsa_public_params *p); +void dsa_compute_per_user_keys(struct dsa_public_params *pub_param, struct + dsa_per_user_param *priv_param); +void dsa_sign(char *mess, struct dsa_public_params *pub_param, struct dsa_per_user_param + *priv_param, BIGNUM *k); +int dsa_verify(char *mess, struct dsa_public_params *pub, struct dsa_per_user_param + *priv); +void dsa_recover_x_from_known_k(struct dsa_public_params *pub, BIGNUM *k, + struct dsa_per_user_param *priv, BIGNUM *mess_hash); #endif /* __LIB_6_H__ */ -- cgit v1.2.3-70-g09d2