diff options
| author | Benedict <benedict@0xb8000.de> | 2016-11-14 22:47:17 +0100 |
|---|---|---|
| committer | Benedict <benedict@0xb8000.de> | 2017-02-21 13:00:26 +0100 |
| commit | 65b62ef0ce1fbd15ca9402ca21861ba8ef820c8e (patch) | |
| tree | 329a85872eda5d21e43bb9b84717d4558cfb02c0 /lib/lib5.h | |
| parent | 723222e769785563babdda5f78a0ce21a276cb9f (diff) | |
set5: completed task39
Diffstat (limited to 'lib/lib5.h')
| -rw-r--r-- | lib/lib5.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/lib5.h b/lib/lib5.h new file mode 100644 index 0000000..dbfd901 --- /dev/null +++ b/lib/lib5.h @@ -0,0 +1,66 @@ +#ifndef __LIB_5__ +#define __LIB_5__ + +#include <stdlib.h> +#include <stdint.h> +#include <gmp.h> +#include <openssl/bn.h> + +struct dh_param { + mpz_t A; + mpz_t B; + unsigned char *a; + unsigned char *b; + unsigned char *p; + unsigned char *g; + mpz_t s1; + mpz_t s2; +}; + +// global openssl context for auxaliry results +BN_CTX *ctx; + +struct extended_euclid { + int d; + int s; + int t; +}; + +struct extended_euclid_bignum { + BIGNUM *d; + BIGNUM *s; + BIGNUM *t; +}; + +struct rsa_key { + int exponent; + int modulo; +}; + +struct rsa_key_bignum { + BIGNUM *exponent; + BIGNUM *modulo; +}; + +void mod_bignums(unsigned char *number, unsigned char *mod, unsigned int base, unsigned char **erg); +void modexp_bignums(unsigned char *base, unsigned char *exp, unsigned char *mod, int string_base, + mpz_t *erg_mp); +void modexp_mpz(mpz_t *base_mp, unsigned char *exp, unsigned char *mod, int string_base, + mpz_t *erg_mp); +void dh_init(struct dh_param *dh); +void dh_generate_secret_keys(struct dh_param *dh); +void dh_generate_public_keys(struct dh_param *dh); +void dh_get_session_key(struct dh_param *dh); +void do_dh_key_exchange(struct dh_param *dh); +void sha1_key_from_dh(struct dh_param *dh, unsigned char *key); +void dh_mitm(struct dh_param *dh); +int rsa_decrypt_bignum(BIGNUM *message, BIGNUM *res, struct rsa_key_bignum *private); +int rsa_encrypt_bignum(BIGNUM *message, BIGNUM *res, struct rsa_key_bignum *public); +void die(char *message); +int rsa_decrpyt(int message, struct rsa_key *private); +int rsa_encrypt(int message, struct rsa_key *public); +int modulo(int a, int b); +void extended_euclid_algo(int a, int b, struct extended_euclid *e); +int rsa_generate_key_bignum(struct rsa_key_bignum *public, struct rsa_key_bignum *private); +int free_rsa_key_bignum(struct rsa_key_bignum *t); +#endif |
