7
typedef unsigned char byte;
9
void taocrypt_test(void*);
10
void file_test(const char*, byte*);
12
void client_test(void*);
13
void echoclient_test(void*);
15
THREAD_RETURN YASSL_API server_test(void*);
16
THREAD_RETURN YASSL_API echoserver_test(void*);
18
void wait_tcp_ready(func_args&);
22
int main(int argc, char** argv)
24
func_args args(argc, argv);
25
func_args server_args(argc, argv);
27
// *** Crypto Test ***
29
assert(args.return_code == 0);
32
// *** Simple yaSSL client server test ***
34
server_args.SetSignal(&ready);
36
THREAD_TYPE serverThread;
37
start_thread(server_test, &server_args, &serverThread);
38
wait_tcp_ready(server_args);
41
assert(args.return_code == 0);
42
join_thread(serverThread);
43
assert(server_args.return_code == 0);
46
// *** Echo input yaSSL client server test ***
47
start_thread(echoserver_test, &server_args, &serverThread);
48
wait_tcp_ready(server_args);
52
const int numArgs = 3;
53
echo_args.argc = numArgs;
54
char* myArgv[numArgs];
64
echo_args.argv = myArgv;
66
strcpy(echo_args.argv[0], "echoclient");
67
strcpy(echo_args.argv[1], "input");
68
strcpy(echo_args.argv[2], "output");
72
echoclient_test(&echo_args);
73
assert(echo_args.return_code == 0);
76
// *** Echo quit yaSSL client server test ***
78
strcpy(echo_args.argv[1], "quit");
80
echoclient_test(&echo_args);
81
assert(echo_args.return_code == 0);
82
join_thread(serverThread);
83
assert(server_args.return_code == 0);
86
// input output compare
87
byte input[TaoCrypt::MD5::DIGEST_SIZE];
88
byte output[TaoCrypt::MD5::DIGEST_SIZE];
89
file_test("input", input);
90
file_test("output", output);
91
assert(memcmp(input, output, sizeof(input)) == 0);
93
printf("\nAll tests passed!\n");
101
void start_thread(THREAD_FUNC fun, func_args* args, THREAD_TYPE* thread)
103
#ifndef _POSIX_THREADS
104
*thread = _beginthreadex(0, 0, fun, args, 0, 0);
106
pthread_create(thread, 0, fun, args);
111
void join_thread(THREAD_TYPE thread)
113
#ifndef _POSIX_THREADS
114
int res = WaitForSingleObject(reinterpret_cast<HANDLE>(thread), INFINITE);
115
assert(res == WAIT_OBJECT_0);
116
res = CloseHandle(reinterpret_cast<HANDLE>(thread));
119
pthread_join(thread, 0);
125
void wait_tcp_ready(func_args& args)
127
#ifdef _POSIX_THREADS
128
pthread_mutex_lock(&args.signal_->mutex_);
130
if (!args.signal_->ready_)
131
pthread_cond_wait(&args.signal_->cond_, &args.signal_->mutex_);
132
args.signal_->ready_ = false; // reset
134
pthread_mutex_unlock(&args.signal_->mutex_);
139
int test_openSSL_des()
141
/* test des encrypt/decrypt */
142
char data[] = "this is my data ";
143
int dataSz = strlen(data);
144
DES_key_schedule key[3];
146
EVP_BytesToKey(EVP_des_ede3_cbc(), EVP_md5(), NULL, (byte*)data, dataSz, 1,
150
DES_ede3_cbc_encrypt((byte*)data, cipher, dataSz, &key[0], &key[1],
153
DES_ede3_cbc_encrypt(cipher, plain, 16, &key[0], &key[1], &key[2],