OVMS3/OVMS.V3/components/wolfssl/IDE/Renesas/cs+/Projects/t4_demo/wolf_main.c

126 lines
2.8 KiB
C

/* wolf_main.c
*
* Copyright (C) 2006-2020 wolfSSL Inc.
*
* This file is part of wolfSSL.
*
* wolfSSL is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* wolfSSL is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
*/
#include "user_settings.h"
#include "wolfssl/ssl.h"
#include <stdio.h>
#include <stdint.h>
#include "wolf_demo.h"
static WOLFSSL_CTX *wolfSSL_sv_ctx;
static WOLFSSL_CTX *wolfSSL_cl_ctx;
static long tick;
static void timeTick(void *pdata)
{
tick++;
}
#define FREQ 10000 /* Hz */
double current_time(int reset)
{
if(reset) tick = 0 ;
return ((double)tick/FREQ) ;
}
#define ARG_SZ 256
static char argBuff[ARG_SZ];
static int get_arg(func_args *args)
{
int i;
char *arg = argBuff;
args->argc = 0;
for(i=0; i<ARG_SZ; i++) {
*arg = getchar();
switch(*arg){
case '\n':
*arg = '\0';
return args->argc;
case ' ':
*arg++ = '\0';
while(*arg++ == ' '); /* Skip space */
args->argv[++args->argc] = arg;
break;
default:
arg++;
}
}
return args->argc ;
}
void wolfSSL_init()
{
uint32_t channel;
R_CMT_CreatePeriodic(FREQ, &timeTick, &channel);
wolfSSL_sv_ctx = wolfSSL_TLS_server_init();
wolfSSL_cl_ctx = wolfSSL_TLS_client_init();
wolfSSL_main();
}
void wolfSSL_main()
{
int c;
func_args args = {0};
printf("wolfSSL Demo\nt: test, b: benchmark, s: server, or c <IP addr> <Port>: client\n$ ");
c = getchar();
switch(c) {
case 't':
get_arg(&args);
printf("Start wolfCrypt Test\n");
wolfcrypt_test(&args);
printf("End wolfCrypt Test\n");
break;
case 'b':
get_arg(&args);
printf("Start wolfCrypt Benchmark\n");
benchmark_test(NULL);
printf("End wolfCrypt Benchmark\n");
break;
case 'c':
if(get_arg(&args) < 0)
break;
printf("Start TLS Client(%s, %s)\n", args.argv[1], args.argv[2]);
wolfSSL_TLS_client(wolfSSL_cl_ctx, &args);
printf("End TLS Client\n");
break;
case 's':
if(get_arg(&args) < 0)
break;
printf("Start TLS Server\n");
wolfSSL_TLS_server(wolfSSL_sv_ctx, &args);
printf("End TLS Server\n");
break;
default:
printf("Command Error\n");
}
}