00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __WVDIFFIEHELLMAN_H
00009 #define __WVDIFFIEHELLMAN_H
00010
00011 #include <openssl/dh.h>
00012
00013 #include "wvstream.h"
00014 #include "wvlog.h"
00015
00016 class WvDiffieHellman
00017 {
00018 public:
00019 WvDiffieHellman(const unsigned char *_key, int _keylen,
00020 BN_ULONG _generator);
00021 ~WvDiffieHellman() { DH_free(info); }
00022
00023 void get_created_secret(WvBuf &outbuf, size_t len);
00024 int get_public_value(WvBuf &outbuf, int len);
00025
00026 int pub_key_len();
00027 bool create_secret(WvBuf &inbuf, size_t in_len, WvBuf& outbuf);
00028
00029 protected:
00030 struct dh_st *info;
00031 BN_ULONG generator;
00032
00033 private:
00034
00035 WvLog log;
00036 };
00037
00038 #endif