#ifndef __LIB_6_H__ #define __LIB_6_H__ #include "lib6.h" #include "lib5.h" #include "lib4.h" #include "lib3.h" #include "lib2.h" #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); 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__ */