00001
00002
00003
00004
00005
00006
00007
00008
#include "wvoakley.h"
00009
00010
00011 static unsigned char group1_key[] =
00012 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2,
00013 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
00014 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6,
00015 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
00016 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D,
00017 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
00018 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9,
00019 0xA6, 0x3A, 0x36, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
00020 };
00021
00022
00023 static unsigned char group2_key[] =
00024 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2,
00025 0x21, 0x68, 0xC2, 0x34, 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
00026 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, 0x02, 0x0B, 0xBE, 0xA6,
00027 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
00028 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D,
00029 0xF2, 0x5F, 0x14, 0x37, 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
00030 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, 0xF4, 0x4C, 0x42, 0xE9,
00031 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,
00032 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11,
00033 0x7C, 0x4B, 0x1F, 0xE6, 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE6, 0x53, 0x81,
00034 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
00035 };
00036
00037 WvOakleyAuth::WvOakleyAuth(
int group)
00038 {
00039
switch (group)
00040 {
00041
case 1:
00042 dh =
new WvDiffieHellman(
group1_key,
sizeof(
group1_key),
00043 DH_GENERATOR_2);
00044
break;
00045
case 2:
00046 dh =
new WvDiffieHellman(
group2_key,
sizeof(
group2_key),
00047 DH_GENERATOR_2);
00048
break;
00049
case 3:
case 4:
00050
00051
break;
00052 }
00053 pub_len = dh->
pub_key_len();
00054 }
00055
00056 short WvOakleyAuth::public_len()
00057 {
00058
return pub_len;
00059 }
00060
00061 short WvOakleyAuth::get_public_key(
WvBuf &outbuf,
short len)
00062 {
00063
return dh->
get_public_value(outbuf, len);
00064 }
00065
00066 void WvOakleyAuth::create_secret(
WvBuf &_other_pub_key,
short len)
00067 {
00068 other_pub_key.
put(_other_pub_key.
peek(0, len), len);
00069 other_len = len;
00070 dh->
create_secret(_other_pub_key, len,
dh_secret);
00071
return;
00072 }
00073
00074 short WvOakleyAuth::other_pub_len()
00075 {
00076
return other_len;
00077 }
00078
00079 short WvOakleyAuth::get_other_public_key(
WvBuf &outbuf,
short len)
00080 {
00081
if (len > other_len)
00082 len = other_len;
00083
00084 outbuf.
put(other_pub_key.
peek(0, len), len);
00085
return len;
00086 }