00001 00006 #include <stdio.h> 00007 #include <stdlib.h> 00008 #include <gmp.h> 00009 00010 class DHGenerator{ 00011 00012 mpz_t n; 00013 mpz_t g; 00014 mpz_t a; // random 00015 mpz_t x; // generated 00016 mpz_t y; // received 00017 mpz_t key; 00018 00019 00020 00021 00022 public: 00026 DHGenerator(); 00027 00033 DHGenerator(unsigned char *keyPart,int length); 00034 00038 ~DHGenerator(); 00039 00043 void generateRandomNumber(); 00044 00048 void generatePartialKey(); 00049 00055 void getPartialKey(unsigned char *,size_t ); 00056 00057 00063 void generateSessionKey(unsigned char *,unsigned int ); 00064 00070 void setPartialKey(unsigned char *,int ); 00071 00075 void generateSessionKey(); 00076 00082 void getSessionKey(unsigned char *sessionKey,size_t length); 00083 00087 unsigned long int randomSeed(); 00088 00089 };