Merge branch 'master' of https://github.com/tisb/cyassl into ti

This commit is contained in:
toddouska 2014-05-09 11:38:40 -07:00
commit ec5f3cc681
35 changed files with 1074 additions and 19 deletions

View File

@ -783,7 +783,7 @@ static RNG rng;
static char *certRSAname = "certs/rsa2048.der" ; static char *certRSAname = "certs/rsa2048.der" ;
static void set_Bench_RSA_File(char * cert) { certRSAname = cert ; } static void set_Bench_RSA_File(char * cert) { certRSAname = cert ; }
/* set by shell command */ /* set by shell command */
#elif defined(CYASSL_MDK_SHELL) #elif defined(CYASSL_MDK_SHELL) || defined(TIRTOS)
/* nothing */ /* nothing */
#else #else
static const char *certRSAname = "certs/rsa2048.der" ; static const char *certRSAname = "certs/rsa2048.der" ;
@ -888,7 +888,7 @@ void bench_rsa(void)
static char *certDHname = "certs/dh2048.der" ; static char *certDHname = "certs/dh2048.der" ;
void set_Bench_DH_File(char * cert) { certDHname = cert ; } void set_Bench_DH_File(char * cert) { certDHname = cert ; }
/* set by shell command */ /* set by shell command */
#elif defined(CYASSL_MDK_SHELL) #elif defined(CYASSL_MDK_SHELL) || defined(TIRTOS)
/* nothing */ /* nothing */
#else #else
static const char *certDHname = "certs/dh2048.der" ; static const char *certDHname = "certs/dh2048.der" ;
@ -1204,6 +1204,10 @@ void bench_eccKeyAgree(void)
return (double)tickCount / 1000; return (double)tickCount / 1000;
} }
#elif defined (TIRTOS)
extern double current_time(int reset);
#else #else
#include <sys/time.h> #include <sys/time.h>

View File

@ -320,6 +320,21 @@ time_t mqx_time(time_t* timer)
#endif /* FREESCALE_MQX */ #endif /* FREESCALE_MQX */
#ifdef TIRTOS
time_t XTIME(time_t * timer)
{
time_t sec = 0;
sec = (time_t) MYTIME_gettime();
if (timer != NULL)
*timer = sec;
return sec;
}
#endif /* TIRTOS */
static INLINE word32 btoi(byte b) static INLINE word32 btoi(byte b)
{ {

View File

@ -352,6 +352,41 @@ int UnLockMutex(CyaSSL_Mutex *m)
return BAD_MUTEX_E; return BAD_MUTEX_E;
} }
#elif defined (TIRTOS)
int InitMutex(CyaSSL_Mutex* m)
{
Semaphore_Params params;
Semaphore_Params_init(&params);
params.mode = Semaphore_Mode_BINARY;
*m = Semaphore_create(1, &params, NULL);
return 0;
}
int FreeMutex(CyaSSL_Mutex* m)
{
Semaphore_delete(m);
return 0;
}
int LockMutex(CyaSSL_Mutex* m)
{
Semaphore_pend(*m, BIOS_WAIT_FOREVER);
return 0;
}
int UnLockMutex(CyaSSL_Mutex* m)
{
Semaphore_post(*m);
return 0;
}
#elif defined(CYASSL_MDK_ARM)|| defined(CYASSL_CMSIS_RTOS) #elif defined(CYASSL_MDK_ARM)|| defined(CYASSL_CMSIS_RTOS)
#if defined(CYASSL_CMSIS_RTOS) #if defined(CYASSL_CMSIS_RTOS)

View File

@ -756,6 +756,25 @@ int GenerateSeed(OS_Seed* os, byte* output, word32 sz)
return 0; return 0;
} }
#elif defined(TIRTOS)
#include <xdc/runtime/Timestamp.h>
#include <stdlib.h>
int GenerateSeed(OS_Seed* os, byte* output, word32 sz)
{
int i;
srand(xdc_runtime_Timestamp_get32());
for (i = 0; i < sz; i++ ) {
output[i] = rand() % 256;
if ((i % 8) == 7) {
srand(xdc_runtime_Timestamp_get32());
}
}
return 0;
}
#elif defined(CUSTOM_RAND_GENERATE) #elif defined(CUSTOM_RAND_GENERATE)
/* Implement your own random generation function /* Implement your own random generation function

View File

@ -241,7 +241,7 @@ enum ExtKeyUsage_Sum { /* From RFC 5280 */
EKU_ANY_OID = 151, /* 2.5.29.37.0, anyExtendedKeyUsage */ EKU_ANY_OID = 151, /* 2.5.29.37.0, anyExtendedKeyUsage */
EKU_SERVER_AUTH_OID = 71, /* 1.3.6.1.5.5.7.3.1, id-kp-serverAuth */ EKU_SERVER_AUTH_OID = 71, /* 1.3.6.1.5.5.7.3.1, id-kp-serverAuth */
EKU_CLIENT_AUTH_OID = 72, /* 1.3.6.1.5.5.7.3.2, id-kp-clientAuth */ EKU_CLIENT_AUTH_OID = 72, /* 1.3.6.1.5.5.7.3.2, id-kp-clientAuth */
EKU_OCSP_SIGN_OID = 79, /* 1.3.6.1.5.5.7.3.9, OCSPSigning */ EKU_OCSP_SIGN_OID = 79 /* 1.3.6.1.5.5.7.3.9, OCSPSigning */
}; };

View File

@ -62,6 +62,9 @@
#endif #endif
#elif defined(CYASSL_CMSIS_RTOS) #elif defined(CYASSL_CMSIS_RTOS)
#include "cmsis_os.h" #include "cmsis_os.h"
#elif defined(TIRTOS)
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Semaphore.h>
#else #else
#ifndef SINGLE_THREADED #ifndef SINGLE_THREADED
#define CYASSL_PTHREADS #define CYASSL_PTHREADS
@ -104,6 +107,8 @@
#endif #endif
#elif defined(CYASSL_CMSIS_RTOS) #elif defined(CYASSL_CMSIS_RTOS)
typedef osMutexId CyaSSL_Mutex; typedef osMutexId CyaSSL_Mutex;
#elif defined(TIRTOS)
typedef ti_sysbios_knl_Semaphore_Handle CyaSSL_Mutex;
#else #else
#error Need a mutex type in multithreaded mode #error Need a mutex type in multithreaded mode
#endif /* USE_WINDOWS_API */ #endif /* USE_WINDOWS_API */

View File

@ -90,6 +90,9 @@
/* Uncomment next line if building for EROAD */ /* Uncomment next line if building for EROAD */
/* #define CYASSL_EROAD */ /* #define CYASSL_EROAD */
/* Uncomment next line if using TI-RTOS settings */
/* #define TIRTOS */
#include <cyassl/ctaocrypt/visibility.h> #include <cyassl/ctaocrypt/visibility.h>
#ifdef IPHONE #ifdef IPHONE
@ -267,6 +270,32 @@
#endif #endif
#endif #endif
#ifdef TIRTOS
#define SIZEOF_LONG_LONG 8
#define NO_WRITEV
#define NO_CYASSL_DIR
#define NO_SHA512
#define NO_DH
#define NO_HC128
#define NO_RABBIT
#define USE_FAST_MATH
#define TFM_TIMING_RESISTANT
#define NO_DEV_RANDOM
#define NO_FILESYSTEM
#define USE_CERT_BUFFERS_2048
#define NO_ERROR_STRINGS
#define USER_TIME
#ifdef __IAR_SYSTEMS_ICC__
#pragma diag_suppress=Pa089
#elif !defined(__GNUC__)
/* Suppress the sslpro warning */
#pragma diag_suppress=11
#endif
#include <ti/ndk/nettools/mytime/mytime.h>
#endif
#ifdef EBSNET #ifdef EBSNET
#include "rtip.h" #include "rtip.h"

View File

@ -96,7 +96,8 @@
#include <rtl.h> #include <rtl.h>
#endif #endif
#elif defined(MBED) #elif defined(MBED)
#elif defined(TIRTOS)
/* do nothing */
#else #else
#ifndef SINGLE_THREADED #ifndef SINGLE_THREADED
#define CYASSL_PTHREADS #define CYASSL_PTHREADS

View File

@ -34,6 +34,14 @@
#define SNPRINTF _snprintf #define SNPRINTF _snprintf
#elif defined(CYASSL_MDK_ARM) #elif defined(CYASSL_MDK_ARM)
#include <string.h> #include <string.h>
#elif defined(TIRTOS)
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <ti/sysbios/knl/Task.h>
#define SOCKET_T int
#else #else
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
@ -119,6 +127,10 @@
typedef unsigned int THREAD_RETURN; typedef unsigned int THREAD_RETURN;
typedef int THREAD_TYPE; typedef int THREAD_TYPE;
#define CYASSL_THREAD #define CYASSL_THREAD
#elif defined(TIRTOS)
typedef void THREAD_RETURN;
typedef Task_Handle THREAD_TYPE;
#define CYASSL_THREAD
#else #else
typedef unsigned int THREAD_RETURN; typedef unsigned int THREAD_RETURN;
typedef intptr_t THREAD_TYPE; typedef intptr_t THREAD_TYPE;
@ -467,6 +479,9 @@ static INLINE void tcp_socket(SOCKET_T* sockfd, int udp)
#ifdef USE_WINDOWS_API #ifdef USE_WINDOWS_API
if (*sockfd == INVALID_SOCKET) if (*sockfd == INVALID_SOCKET)
err_sys("socket failed\n"); err_sys("socket failed\n");
#elif defined(TIRTOS)
if (*sockfd == -1)
err_sys("socket failed\n");
#else #else
if (*sockfd < 0) if (*sockfd < 0)
err_sys("socket failed\n"); err_sys("socket failed\n");
@ -481,7 +496,7 @@ static INLINE void tcp_socket(SOCKET_T* sockfd, int udp)
if (res < 0) if (res < 0)
err_sys("setsockopt SO_NOSIGPIPE failed\n"); err_sys("setsockopt SO_NOSIGPIPE failed\n");
} }
#elif defined(CYASSL_MDK_ARM) #elif defined(CYASSL_MDK_ARM) || defined (TIRTOS)
/* nothing to define */ /* nothing to define */
#else /* no S_NOSIGPIPE */ #else /* no S_NOSIGPIPE */
signal(SIGPIPE, SIG_IGN); signal(SIGPIPE, SIG_IGN);
@ -529,7 +544,7 @@ enum {
}; };
#if !defined(CYASSL_MDK_ARM) #if !defined(CYASSL_MDK_ARM) && !defined(TIRTOS)
static INLINE int tcp_select(SOCKET_T socketfd, int to_sec) static INLINE int tcp_select(SOCKET_T socketfd, int to_sec)
{ {
fd_set recvfds, errfds; fd_set recvfds, errfds;
@ -555,6 +570,11 @@ static INLINE int tcp_select(SOCKET_T socketfd, int to_sec)
return TEST_SELECT_FAIL; return TEST_SELECT_FAIL;
} }
#elif defined(TIRTOS)
static INLINE int tcp_select(SOCKET_T socketfd, int to_sec)
{
return TEST_RECV_READY;
}
#endif /* !CYASSL_MDK_ARM */ #endif /* !CYASSL_MDK_ARM */
@ -665,6 +685,11 @@ static INLINE void udp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd,
pthread_cond_signal(&ready->cond); pthread_cond_signal(&ready->cond);
pthread_mutex_unlock(&ready->mutex); pthread_mutex_unlock(&ready->mutex);
} }
#elif defined (TIRTOS)
/* Need mutex? */
tcp_ready* ready = args->signal;
ready->ready = 1;
ready->port = port;
#endif #endif
*clientfd = udp_read_connect(*sockfd); *clientfd = udp_read_connect(*sockfd);
@ -694,6 +719,11 @@ static INLINE void tcp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd,
pthread_cond_signal(&ready->cond); pthread_cond_signal(&ready->cond);
pthread_mutex_unlock(&ready->mutex); pthread_mutex_unlock(&ready->mutex);
} }
#elif defined (TIRTOS)
/* Need mutex? */
tcp_ready* ready = args->signal;
ready->ready = 1;
ready->port = port;
#endif #endif
*clientfd = accept(*sockfd, (struct sockaddr*)&client, *clientfd = accept(*sockfd, (struct sockaddr*)&client,
@ -715,7 +745,7 @@ static INLINE void tcp_set_nonblocking(SOCKET_T* sockfd)
int ret = ioctlsocket(*sockfd, FIONBIO, &blocking); int ret = ioctlsocket(*sockfd, FIONBIO, &blocking);
if (ret == SOCKET_ERROR) if (ret == SOCKET_ERROR)
err_sys("ioctlsocket failed"); err_sys("ioctlsocket failed");
#elif defined(CYASSL_MDK_ARM) #elif defined(CYASSL_MDK_ARM) || defined (TIRTOS)
/* non blocking not suppported, for now */ /* non blocking not suppported, for now */
#else #else
int flags = fcntl(*sockfd, F_GETFL, 0); int flags = fcntl(*sockfd, F_GETFL, 0);
@ -798,6 +828,8 @@ static INLINE unsigned int my_psk_server_cb(CYASSL* ssl, const char* identity,
return (double)count.QuadPart / freq.QuadPart; return (double)count.QuadPart / freq.QuadPart;
} }
#elif defined(TIRTOS)
extern double current_time();
#else #else
#if !defined(CYASSL_MDK_ARM) #if !defined(CYASSL_MDK_ARM)
@ -1035,6 +1067,7 @@ static INLINE int CurrentDir(const char* str)
#elif defined(CYASSL_MDK_ARM) #elif defined(CYASSL_MDK_ARM)
/* KEIL-RL File System does not support relative directry */ /* KEIL-RL File System does not support relative directry */
#elif defined(TIRTOS)
#else #else
#ifndef MAX_PATH #ifndef MAX_PATH
@ -1702,7 +1735,7 @@ static INLINE void SetupPkCallbacks(CYASSL_CTX* ctx, CYASSL* ssl)
#if defined(__hpux__) || defined(__MINGW32__) #if defined(__hpux__) || defined(__MINGW32__) || defined (TIRTOS)
/* HP/UX doesn't have strsep, needed by test/suites.c */ /* HP/UX doesn't have strsep, needed by test/suites.c */
static INLINE char* strsep(char **stringp, const char *delim) static INLINE char* strsep(char **stringp, const char *delim)

View File

@ -712,6 +712,8 @@ THREAD_RETURN CYASSL_THREAD client_test(void* args)
SOCKADDR_IN_T addr; SOCKADDR_IN_T addr;
#ifdef USE_WINDOWS_API #ifdef USE_WINDOWS_API
Sleep(500); Sleep(500);
#elif defined(TIRTOS)
Task_sleep(1);
#else #else
sleep(1); sleep(1);
#endif #endif
@ -752,6 +754,8 @@ THREAD_RETURN CYASSL_THREAD client_test(void* args)
/* give server a chance to bounce a message back to client */ /* give server a chance to bounce a message back to client */
#ifdef USE_WINDOWS_API #ifdef USE_WINDOWS_API
Sleep(500); Sleep(500);
#elif defined(TIRTOS)
Task_sleep(1);
#else #else
sleep(1); sleep(1);
#endif #endif
@ -781,7 +785,9 @@ THREAD_RETURN CYASSL_THREAD client_test(void* args)
ShowMemoryTracker(); ShowMemoryTracker();
#endif /* USE_CYASSL_MEMORY */ #endif /* USE_CYASSL_MEMORY */
#if !defined(TIRTOS)
return 0; return 0;
#endif
} }

View File

@ -254,11 +254,12 @@ void echoclient_test(void* args)
#if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) #if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL)
CyaSSL_Debugging_ON(); CyaSSL_Debugging_ON();
#endif #endif
#ifndef TIRTOS
if (CurrentDir("echoclient")) if (CurrentDir("echoclient"))
ChangeDirBack(2); ChangeDirBack(2);
else if (CurrentDir("Debug") || CurrentDir("Release")) else if (CurrentDir("Debug") || CurrentDir("Release"))
ChangeDirBack(3); ChangeDirBack(3);
#endif
echoclient_test(&args); echoclient_test(&args);
CyaSSL_Cleanup(); CyaSSL_Cleanup();

View File

@ -107,12 +107,18 @@ THREAD_RETURN CYASSL_THREAD echoserver_test(void* args)
#endif #endif
#if defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API) && \ #if defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API) && \
!defined(CYASSL_SNIFFER) && !defined(CYASSL_MDK_SHELL) !defined(CYASSL_SNIFFER) && !defined(CYASSL_MDK_SHELL) && \
!defined(TIRTOS)
port = 0; port = 0;
#endif #endif
#if defined(USE_ANY_ADDR) #if defined(USE_ANY_ADDR)
useAnyAddr = 1; useAnyAddr = 1;
#endif #endif
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
tcp_listen(&sockfd, &port, useAnyAddr, doDTLS); tcp_listen(&sockfd, &port, useAnyAddr, doDTLS);
#if defined(CYASSL_DTLS) #if defined(CYASSL_DTLS)
@ -313,7 +319,14 @@ THREAD_RETURN CYASSL_THREAD echoserver_test(void* args)
#endif #endif
((func_args*)args)->return_code = 0; ((func_args*)args)->return_code = 0;
#ifdef TIRTOS
fdCloseSession(TaskSelf());
#endif
#ifndef TIRTOS
return 0; return 0;
#endif
} }

View File

@ -187,6 +187,10 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args)
(void)trackMemory; (void)trackMemory;
(void)pkCallbacks; (void)pkCallbacks;
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
while ((ch = mygetopt(argc, argv, "?dbstnNufPp:v:l:A:c:k:S:oO:")) != -1) { while ((ch = mygetopt(argc, argv, "?dbstnNufPp:v:l:A:c:k:S:oO:")) != -1) {
switch (ch) { switch (ch) {
case '?' : case '?' :
@ -519,6 +523,8 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args)
#if defined(CYASSL_MDK_SHELL) && defined(HAVE_MDK_RTX) #if defined(CYASSL_MDK_SHELL) && defined(HAVE_MDK_RTX)
os_dly_wait(500) ; os_dly_wait(500) ;
#elif defined (TIRTOS)
Task_yield();
#endif #endif
SSL_shutdown(ssl); SSL_shutdown(ssl);
@ -533,7 +539,13 @@ THREAD_RETURN CYASSL_THREAD server_test(void* args)
ShowMemoryTracker(); ShowMemoryTracker();
#endif /* USE_CYASSL_MEMORY */ #endif /* USE_CYASSL_MEMORY */
#ifdef TIRTOS
fdCloseSession(TaskSelf());
#endif
#ifndef TIRTOS
return 0; return 0;
#endif
} }

View File

@ -2352,6 +2352,12 @@ ProtocolVersion MakeDTLSv1_2(void)
return (word32) mqxTime.SECONDS; return (word32) mqxTime.SECONDS;
} }
#elif defined(TIRTOS)
word32 LowResTimer(void)
{
return (word32) MYTIME_gettime();
}
#elif defined(USER_TICKS) #elif defined(USER_TICKS)
#if 0 #if 0

View File

@ -69,6 +69,8 @@
#define RNG CyaSSL_RNG #define RNG CyaSSL_RNG
/* for avoiding name conflict in "stm32f2xx.h" */ /* for avoiding name conflict in "stm32f2xx.h" */
static int errno; static int errno;
#elif defined(TIRTOS)
#include <sys/socket.h>
#else #else
#include <sys/types.h> #include <sys/types.h>
#include <errno.h> #include <errno.h>

View File

@ -738,8 +738,10 @@ int test_CyaSSL_CTX_load_verify_locations(void)
"CyaSSL_CTX_load_verify_locations(ctx, NULL, NULL)"); "CyaSSL_CTX_load_verify_locations(ctx, NULL, NULL)");
test_lvl(NULL, caCert, NULL, SSL_FAILURE, test_lvl(NULL, caCert, NULL, SSL_FAILURE,
"CyaSSL_CTX_load_verify_locations(ctx, NULL, NULL)"); "CyaSSL_CTX_load_verify_locations(ctx, NULL, NULL)");
#ifndef TIRTOS
test_lvl(ctx, caCert, bogusFile, SSL_FAILURE, test_lvl(ctx, caCert, bogusFile, SSL_FAILURE,
"CyaSSL_CTX_load_verify_locations(ctx, caCert, bogusFile)"); "CyaSSL_CTX_load_verify_locations(ctx, caCert, bogusFile)");
#endif
/* Add a test for the certs directory path loading. */ /* Add a test for the certs directory path loading. */
/* There is a leak here. If you load a second cert, the first one /* There is a leak here. If you load a second cert, the first one
is lost. */ is lost. */
@ -925,6 +927,10 @@ static int test_CyaSSL_read_write(void)
func_args server_args; func_args server_args;
THREAD_TYPE serverThread; THREAD_TYPE serverThread;
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
StartTCP(); StartTCP();
InitTcpReady(&ready); InitTcpReady(&ready);
@ -948,6 +954,9 @@ static int test_CyaSSL_read_write(void)
FreeTcpReady(&ready); FreeTcpReady(&ready);
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
return test_result; return test_result;
} }
@ -967,12 +976,16 @@ THREAD_RETURN CYASSL_THREAD test_server_nofail(void* args)
char input[1024]; char input[1024];
int idx; int idx;
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
((func_args*)args)->return_code = TEST_FAIL; ((func_args*)args)->return_code = TEST_FAIL;
method = CyaSSLv23_server_method(); method = CyaSSLv23_server_method();
ctx = CyaSSL_CTX_new(method); ctx = CyaSSL_CTX_new(method);
#if defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API) && \ #if defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API) && \
!defined(CYASSL_SNIFFER) && !defined(CYASSL_MDK_SHELL) !defined(CYASSL_SNIFFER) && !defined(CYASSL_MDK_SHELL) && \
!defined(TIRTOS)
port = 0; port = 0;
#endif #endif
@ -1033,9 +1046,17 @@ THREAD_RETURN CYASSL_THREAD test_server_nofail(void* args)
if (CyaSSL_write(ssl, msg, sizeof(msg)) != sizeof(msg)) if (CyaSSL_write(ssl, msg, sizeof(msg)) != sizeof(msg))
{ {
/*err_sys("SSL_write failed");*/ /*err_sys("SSL_write failed");*/
#ifdef TIRTOS
return;
#else
return 0; return 0;
#endif
} }
#ifdef TIRTOS
Task_yield();
#endif
done: done:
CyaSSL_shutdown(ssl); CyaSSL_shutdown(ssl);
CyaSSL_free(ssl); CyaSSL_free(ssl);
@ -1043,7 +1064,13 @@ done:
CloseSocket(clientfd); CloseSocket(clientfd);
((func_args*)args)->return_code = TEST_SUCCESS; ((func_args*)args)->return_code = TEST_SUCCESS;
#ifdef TIRTOS
fdCloseSession(TaskSelf());
#endif
#ifndef TIRTOS
return 0; return 0;
#endif
} }
void test_client_nofail(void* args) void test_client_nofail(void* args)
@ -1059,6 +1086,10 @@ void test_client_nofail(void* args)
int input; int input;
int msgSz = (int)strlen(msg); int msgSz = (int)strlen(msg);
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
((func_args*)args)->return_code = TEST_FAIL; ((func_args*)args)->return_code = TEST_FAIL;
method = CyaSSLv23_client_method(); method = CyaSSLv23_client_method();
ctx = CyaSSL_CTX_new(method); ctx = CyaSSL_CTX_new(method);
@ -1119,6 +1150,10 @@ done2:
CloseSocket(sockfd); CloseSocket(sockfd);
((func_args*)args)->return_code = TEST_SUCCESS; ((func_args*)args)->return_code = TEST_SUCCESS;
#ifdef TIRTOS
fdCloseSession(TaskSelf());
#endif
return; return;
} }
@ -1135,6 +1170,10 @@ void run_cyassl_client(void* args)
char input[1024]; char input[1024];
int idx; int idx;
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
((func_args*)args)->return_code = TEST_FAIL; ((func_args*)args)->return_code = TEST_FAIL;
#ifdef OPENSSL_EXTRA #ifdef OPENSSL_EXTRA
@ -1181,6 +1220,10 @@ void run_cyassl_client(void* args)
CyaSSL_CTX_free(ctx); CyaSSL_CTX_free(ctx);
CloseSocket(sfd); CloseSocket(sfd);
((func_args*)args)->return_code = TEST_SUCCESS; ((func_args*)args)->return_code = TEST_SUCCESS;
#ifdef TIRTOS
fdCloseSession(TaskSelf());
#endif
} }
THREAD_RETURN CYASSL_THREAD run_cyassl_server(void* args) THREAD_RETURN CYASSL_THREAD run_cyassl_server(void* args)
@ -1198,10 +1241,14 @@ THREAD_RETURN CYASSL_THREAD run_cyassl_server(void* args)
char input[1024]; char input[1024];
int idx; int idx;
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
((func_args*)args)->return_code = TEST_FAIL; ((func_args*)args)->return_code = TEST_FAIL;
#if defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API) && \ #if defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API) && \
!defined(CYASSL_SNIFFER) && !defined(CYASSL_MDK_SHELL) !defined(CYASSL_SNIFFER) && !defined(CYASSL_MDK_SHELL) && \
!defined(TIRTOS)
port = 0; port = 0;
#endif #endif
@ -1255,7 +1302,9 @@ THREAD_RETURN CYASSL_THREAD run_cyassl_server(void* args)
} }
AssertIntEQ(len, CyaSSL_write(ssl, msg, len)); AssertIntEQ(len, CyaSSL_write(ssl, msg, len));
#ifdef TIRTOS
Task_yield();
#endif
CyaSSL_shutdown(ssl); CyaSSL_shutdown(ssl);
} }
@ -1268,7 +1317,12 @@ THREAD_RETURN CYASSL_THREAD run_cyassl_server(void* args)
((func_args*)args)->return_code = TEST_SUCCESS; ((func_args*)args)->return_code = TEST_SUCCESS;
#ifdef TIRTOS
fdCloseSession(TaskSelf());
#endif
#ifndef TIRTOS
return 0; return 0;
#endif
} }
void test_CyaSSL_client_server(callback_functions* client_callbacks, void test_CyaSSL_client_server(callback_functions* client_callbacks,
@ -1284,6 +1338,10 @@ void test_CyaSSL_client_server(callback_functions* client_callbacks,
client_args.callbacks = client_callbacks; client_args.callbacks = client_callbacks;
server_args.callbacks = server_callbacks; server_args.callbacks = server_callbacks;
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
/* RUN Server side */ /* RUN Server side */
InitTcpReady(&ready); InitTcpReady(&ready);
server_args.signal = &ready; server_args.signal = &ready;
@ -1296,6 +1354,9 @@ void test_CyaSSL_client_server(callback_functions* client_callbacks,
join_thread(serverThread); join_thread(serverThread);
FreeTcpReady(&ready); FreeTcpReady(&ready);
#ifdef TIRTOS
fdCloseSession(TaskSelf());
#endif
} }
#endif /* SINGLE_THREADED*/ #endif /* SINGLE_THREADED*/

View File

@ -121,8 +121,17 @@ static int execute_test_case(int svr_argc, char** svr_argv,
int cli_argc, char** cli_argv, int cli_argc, char** cli_argv,
int addNoVerify, int addNonBlocking) int addNoVerify, int addNonBlocking)
{ {
#ifdef TIRTOS
func_args cliArgs = {0};
func_args svrArgs = {0};
cliArgs.argc = cli_argc;
cliArgs.argv = cli_argv;
svrArgs.argc = svr_argc;
svrArgs.argv = svr_argv;
#else
func_args cliArgs = {cli_argc, cli_argv, 0, NULL, NULL}; func_args cliArgs = {cli_argc, cli_argv, 0, NULL, NULL};
func_args svrArgs = {svr_argc, svr_argv, 0, NULL, NULL}; func_args svrArgs = {svr_argc, svr_argv, 0, NULL, NULL};
#endif
tcp_ready ready; tcp_ready ready;
THREAD_TYPE serverThread; THREAD_TYPE serverThread;
@ -183,7 +192,7 @@ static int execute_test_case(int svr_argc, char** svr_argv,
strcat(commandLine, flagSep); strcat(commandLine, flagSep);
} }
} }
#ifndef USE_WINDOWS_API #if !defined(USE_WINDOWS_API) && !defined(TIRTOS)
/* add port 0 */ /* add port 0 */
if (svr_argc + 2 > MAX_ARGS) if (svr_argc + 2 > MAX_ARGS)
printf("cannot add the magic port number flag to server\n"); printf("cannot add the magic port number flag to server\n");
@ -222,11 +231,15 @@ static int execute_test_case(int svr_argc, char** svr_argv,
InitTcpReady(&ready); InitTcpReady(&ready);
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
/* start server */ /* start server */
svrArgs.signal = &ready; svrArgs.signal = &ready;
start_thread(server_test, &svrArgs, &serverThread); start_thread(server_test, &svrArgs, &serverThread);
wait_tcp_ready(&svrArgs); wait_tcp_ready(&svrArgs);
#ifndef USE_WINDOWS_API #if !defined(USE_WINDOWS_API) && !defined(TIRTOS)
if (ready.port != 0) if (ready.port != 0)
{ {
if (cli_argc + 2 > MAX_ARGS) if (cli_argc + 2 > MAX_ARGS)
@ -255,6 +268,9 @@ static int execute_test_case(int svr_argc, char** svr_argv,
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
#ifdef TIRTOS
fdCloseSession(TaskSelf());
#endif
FreeTcpReady(&ready); FreeTcpReady(&ready);
return 0; return 0;

View File

@ -11,9 +11,16 @@
int myoptind = 0; int myoptind = 0;
char* myoptarg = NULL; char* myoptarg = NULL;
int unit_test(int argc, char** argv);
#ifndef NO_TESTSUITE_MAIN_DRIVER
int main(int argc, char** argv) int main(int argc, char** argv)
{
return unit_test(argc, argv);
}
#endif
int unit_test(int argc, char** argv)
{ {
int ret; int ret;
@ -27,10 +34,12 @@ int main(int argc, char** argv)
err_sys("Cavium OpenNitroxDevice failed"); err_sys("Cavium OpenNitroxDevice failed");
#endif /* HAVE_CAVIUM */ #endif /* HAVE_CAVIUM */
#ifndef TIRTOS
if (CurrentDir("tests") || CurrentDir("_build")) if (CurrentDir("tests") || CurrentDir("_build"))
ChangeDirBack(1); ChangeDirBack(1);
else if (CurrentDir("Debug") || CurrentDir("Release")) else if (CurrentDir("Debug") || CurrentDir("Release"))
ChangeDirBack(3); ChangeDirBack(3);
#endif
if ( (ret = ApiTest()) != 0) { if ( (ret = ApiTest()) != 0) {
printf("api test failed with %d\n", ret); printf("api test failed with %d\n", ret);
@ -85,6 +94,17 @@ void start_thread(THREAD_FUNC fun, func_args* args, THREAD_TYPE* thread)
#elif defined(_POSIX_THREADS) && !defined(__MINGW32__) #elif defined(_POSIX_THREADS) && !defined(__MINGW32__)
pthread_create(thread, 0, fun, args); pthread_create(thread, 0, fun, args);
return; return;
#elif defined (TIRTOS)
/* Initialize the defaults and set the parameters. */
Task_Params taskParams;
Task_Params_init(&taskParams);
taskParams.arg0 = (UArg)args;
taskParams.stackSize = 65535;
*thread = Task_create((Task_FuncPtr)fun, &taskParams, NULL);
if (*thread == NULL) {
printf("Failed to create new Task\n");
}
Task_yield();
#else #else
*thread = (THREAD_TYPE)_beginthreadex(0, 0, fun, args, 0, 0); *thread = (THREAD_TYPE)_beginthreadex(0, 0, fun, args, 0, 0);
#endif #endif
@ -97,6 +117,14 @@ void join_thread(THREAD_TYPE thread)
(void)thread; (void)thread;
#elif defined(_POSIX_THREADS) && !defined(__MINGW32__) #elif defined(_POSIX_THREADS) && !defined(__MINGW32__)
pthread_join(thread, 0); pthread_join(thread, 0);
#elif defined (TIRTOS)
while(1) {
if (Task_getMode(thread) == Task_Mode_TERMINATED) {
Task_sleep(5);
break;
}
Task_yield();
}
#else #else
int res = WaitForSingleObject((HANDLE)thread, INFINITE); int res = WaitForSingleObject((HANDLE)thread, INFINITE);
assert(res == WAIT_OBJECT_0); assert(res == WAIT_OBJECT_0);

View File

@ -57,7 +57,14 @@ enum {
int myoptind = 0; int myoptind = 0;
char* myoptarg = NULL; char* myoptarg = NULL;
#ifndef NO_TESTSUITE_MAIN_DRIVER
int main(int argc, char** argv) int main(int argc, char** argv)
{
return testsuite_test(argc, argv);
}
#endif
int testsuite_test(int argc, char** argv)
{ {
func_args server_args; func_args server_args;
@ -80,6 +87,7 @@ int main(int argc, char** argv)
CyaSSL_Debugging_ON(); CyaSSL_Debugging_ON();
#endif #endif
#if !defined(TIRTOS)
if (CurrentDir("testsuite") || CurrentDir("_build")) if (CurrentDir("testsuite") || CurrentDir("_build"))
ChangeDirBack(1); ChangeDirBack(1);
else if (CurrentDir("Debug") || CurrentDir("Release")) else if (CurrentDir("Debug") || CurrentDir("Release"))
@ -87,6 +95,12 @@ int main(int argc, char** argv)
/* Derived Data Advanced -> Custom */ /* Derived Data Advanced -> Custom */
/* Relative to Workspace, Build/Products */ /* Relative to Workspace, Build/Products */
/* Debug or Release */ /* Debug or Release */
#endif
#ifdef TIRTOS
fdOpenSession(TaskSelf());
#endif
server_args.signal = &ready; server_args.signal = &ready;
InitTcpReady(&ready); InitTcpReady(&ready);
@ -155,6 +169,10 @@ int main(int argc, char** argv)
CyaSSL_Cleanup(); CyaSSL_Cleanup();
FreeTcpReady(&ready); FreeTcpReady(&ready);
#ifdef TIRTOS
fdCloseSession(TaskSelf());
#endif
#ifdef HAVE_CAVIUM #ifdef HAVE_CAVIUM
CspShutdown(CAVIUM_DEV_ID); CspShutdown(CAVIUM_DEV_ID);
#endif #endif
@ -205,7 +223,8 @@ void simple_test(func_args* args)
cliArgs.return_code = 0; cliArgs.return_code = 0;
strcpy(svrArgs.argv[0], "SimpleServer"); strcpy(svrArgs.argv[0], "SimpleServer");
#if !defined(USE_WINDOWS_API) && !defined(CYASSL_SNIFFER) #if !defined(USE_WINDOWS_API) && !defined(CYASSL_SNIFFER) && \
!defined(TIRTOS)
strcpy(svrArgs.argv[svrArgs.argc++], "-p"); strcpy(svrArgs.argv[svrArgs.argc++], "-p");
strcpy(svrArgs.argv[svrArgs.argc++], "0"); strcpy(svrArgs.argv[svrArgs.argc++], "0");
#endif #endif
@ -263,6 +282,17 @@ void start_thread(THREAD_FUNC fun, func_args* args, THREAD_TYPE* thread)
#if defined(_POSIX_THREADS) && !defined(__MINGW32__) #if defined(_POSIX_THREADS) && !defined(__MINGW32__)
pthread_create(thread, 0, fun, args); pthread_create(thread, 0, fun, args);
return; return;
#elif defined(TIRTOS)
/* Initialize the defaults and set the parameters. */
Task_Params taskParams;
Task_Params_init(&taskParams);
taskParams.arg0 = (UArg)args;
taskParams.stackSize = 65535;
*thread = Task_create((Task_FuncPtr)fun, &taskParams, NULL);
if (*thread == NULL) {
printf("Failed to create new Task\n");
}
Task_yield();
#else #else
*thread = (THREAD_TYPE)_beginthreadex(0, 0, fun, args, 0, 0); *thread = (THREAD_TYPE)_beginthreadex(0, 0, fun, args, 0, 0);
#endif #endif
@ -273,6 +303,14 @@ void join_thread(THREAD_TYPE thread)
{ {
#if defined(_POSIX_THREADS) && !defined(__MINGW32__) #if defined(_POSIX_THREADS) && !defined(__MINGW32__)
pthread_join(thread, 0); pthread_join(thread, 0);
#elif defined(TIRTOS)
while(1) {
if (Task_getMode(thread) == Task_Mode_TERMINATED) {
Task_sleep(5);
break;
}
Task_yield();
}
#else #else
int res = WaitForSingleObject((HANDLE)thread, INFINITE); int res = WaitForSingleObject((HANDLE)thread, INFINITE);
assert(res == WAIT_OBJECT_0); assert(res == WAIT_OBJECT_0);

36
tirtos/README Normal file
View File

@ -0,0 +1,36 @@
CyaSSL library for TI-RTOS
This directory contains the files that build CyaSSL library for TI-RTOS.
Please follow the instructions in TI-RTOS user guide (www.ti.com/tool/ti-rtos)
to build the CyaSSL library and the example applications.
Included Files
---------------
1. CyaSSL library build files (packages/ti/net/cyassl)
Build instructions provided in TI-RTOS user guide (www.ti.com/tool/ti-rtos)
2. CTaoCrypt test application (packages/ti/net/cyassl/tests/ctaocrypt/test)
This application is the standard CTaoCrypt test application provided with
CyaSSL.
It will be built along with the CyaSSL library. Load the built executable
on the target and make sure the CyaSSL library works as expected.
3. CTaoCrypt benchmark application
(packages/ti/net/cyassl/tests/ctaocrypt/benchmark)
This application is the standard CTaoCrypt benchmark application provided
with CyaSSL.
It will be built along with the CyaSSL library. Load the built executable
on the target and run to get the benchmark results for the configured
CyaSSL library.
Examples Application
--------------------
A simple 'TCP echo server with SSL' example application is provided with TI-RTOS
product. Look in the TI-RTOS user guide for instructions to build examples.

86
tirtos/cyassl.bld Normal file
View File

@ -0,0 +1,86 @@
/*
* Generally there is no need to edit this file!
*
* This file controls which libraries are built, as well as compiler options
* to use.
*
* The contents of this file usually don't change, but having it in your
* ownership allows you to tweak your compiler options. If you do change
* this file, however, on the next upgrade of the product we recommend
* that you take "cyassl.bld" file as supplied by the upgrade and then merge
* your changes with it.
*/
/*
* ======== cyassl.bld ========
* This script is run prior to all build scripts. It sets host-system-
* independent values for targets and platforms, then it attempts to
* find the host-system-specific user.bld script that sets rootDirs.
*
* These settings may be a function of the following global variables:
*
* environment a hash table of environment strings
*
* arguments an array of string arguments to the _config.bld script
* initialized as follows:
* arguments[0] - the file name of the _config.bld script
* arguments[1] - the first argument specified in XDCARGS
* :
* arguments[n] - the n'th argument in XDCARGS
*
* Build an alias for xdc.om.xdc.bld.BuildEnvironment
*/
var armOpts = " -ms ";
var gnuOpts = "";
var iarOpts = "";
/* Uncomment the following lines to build libraries for debug mode: */
// Pkg.attrs.profile = "debug";
// armOpts += " -g -o0 ";
// gnuOpts += " -g ";
// iarOpts += " --debug ";
var ccOpts = {
"ti.targets.arm.elf.M4F" : armOpts,
"gnu.targets.arm.M4F" : gnuOpts,
"iar.targets.arm.M4F" : iarOpts,
};
/* initialize local vars with those set in xdcpaths.mak (via XDCARGS) */
for (arg = 0; arg < arguments.length; arg++) {
/*
* Get the compiler's installation directory.
* For "ti.targets.arm.elf.M4F=/vendors/arm/6.1.0",
* we get "/vendors/arm/6.1.0"
*/
var targetName = arguments[arg].split("=")[0];
var rootDir = arguments[arg].split("=")[1];
/* only build for the specified compilers */
if (rootDir == "" || rootDir == undefined) {
continue;
}
if (targetName.match(/^TivaWareDir/) ) {
TivaWareDir = rootDir;
continue;
}
var target = xdc.useModule(targetName);
target.rootDir = rootDir;
target.ccOpts.suffix += ccOpts[targetName];
Build.targets.$add(target);
}
/* Include Path (needed to find NDK headers) */
var ndkPath = "$(NDK_INSTALL_DIR)/packages/ti/ndk/";
var cyasslPathInclude = " -I" + ndkPath + "/inc" + " -I" + ndkPath
+ "/inc/bsd -DTIRTOS ";
/* lib/ is a generated directory that 'xdc clean' should remove */
var Pkg = xdc.useModule('xdc.bld.PackageContents');
Pkg.generatedFiles.$add("lib/");

74
tirtos/cyassl.mak Normal file
View File

@ -0,0 +1,74 @@
#
# ======== cyassl.mak ========
#
# USER OPTIONAL STEP: These variables are set when building cyassl
# through the tirtos.mak
# Set up dependencies
XDC_INSTALL_DIR ?= C:/ti/xdctools_3_24_02_30
SYSBIOS_INSTALL_DIR ?= C:/ti/bios_6_34_01_14
NDK_INSTALL_DIR ?= C:/ti/ndk_2_24_00_02
TIRTOS_INSTALLATION_DIR ?= C:/ti/tirtos_tivac_2_00_00_22
TivaWareDir ?= C:/ti/tivaware
CYASSL_INSTALL_DIR ?= C:/cyassl/cyassl-2.9.4
#
# Set location of various cgtools
# These variables can be set here or on the command line. These
# variables are set when building cyassl through tirtos.mak
# USER OPTIONAL STEP: user can define below paths to compilers
ti.targets.arm.elf.M4F ?=
gnu.targets.arm.M4F ?=
iar.targets.arm.M4F ?=
#
# Set XDCARGS to some of the variables above. XDCARGS are passed
# to the XDC build engine... which will load cyassl.bld... which will
# extract these variables and use them to determine what to build and which
# toolchains to use.
#
# Note that not all of these variables need to be set to something valid.
# Unfortunately, since these vars are unconditionally assigned, your build line
# will be longer and more noisy than necessary.
#
# Some background is here:
# http://rtsc.eclipse.org/docs-tip/Command_-_xdc#Environment_Variables
#
XDCARGS= \
ti.targets.arm.elf.M4F=\"$(ti.targets.arm.elf.M4F)\" \
gnu.targets.arm.M4F=\"$(gnu.targets.arm.M4F)\" \
iar.targets.arm.M4F=\"$(iar.targets.arm.M4F)\" \
TivaWareDir=\"$(TivaWareDir)\"
#
# Set XDCPATH to contain necessary repositories.
#
XDCPATH = $(SYSBIOS_INSTALL_DIR)/packages;$(NDK_INSTALL_DIR)/packages;$(CYASSL_INSTALL_DIR);$(TIRTOS_INSTALLATION_DIR)/packages;$(TivaWareDir);
export XDCPATH
#
# Set XDCOPTIONS. Use -v for a verbose build.
#
#XDCOPTIONS=v
export XDCOPTIONS
#
# Set XDC executable command
# Note that XDCBUILDCFG points to the cyassl.bld file which uses
# the arguments specified by XDCARGS
#
XDC = $(XDC_INSTALL_DIR)/xdc XDCARGS="$(XDCARGS)" XDCBUILDCFG=./cyassl.bld
######################################################
## Shouldnt have to modify anything below this line ##
######################################################
all:
@ echo building cyassl packages ...
@ $(XDC) -Pr ./packages
clean:
@ echo cleaning cyassl packages ...
@ $(XDC) clean -Pr ./packages

View File

@ -0,0 +1,43 @@
/*
* ======== package.bld ========
* Build script for CyaSSL library
*/
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
var Pkg = xdc.useModule('xdc.bld.PackageContents');
/* make command to search for the srcs */
Pkg.makePrologue = "vpath %.c $(subst ;, ,$(XPKGPATH))";
/* CYASSL sources */
var cyaSSLObjList = [
"ctaocrypt/src/aes.c",
"ctaocrypt/src/arc4.c",
"ctaocrypt/src/asn.c",
"ctaocrypt/src/coding.c",
"ctaocrypt/src/des3.c",
"ctaocrypt/src/dsa.c",
"ctaocrypt/src/error.c",
"ctaocrypt/src/hmac.c",
"ctaocrypt/src/logging.c",
"ctaocrypt/src/md4.c",
"ctaocrypt/src/md5.c",
"ctaocrypt/src/memory.c",
"ctaocrypt/src/port.c",
"ctaocrypt/src/pwdbased.c",
"ctaocrypt/src/random.c",
"ctaocrypt/src/rsa.c",
"ctaocrypt/src/sha.c",
"ctaocrypt/src/sha256.c",
"ctaocrypt/src/tfm.c",
"src/internal.c",
"src/io.c",
"src/keys.c",
"src/ssl.c",
"src/tls.c",
];
for each (var targ in Build.targets) {
var libOptions = {incs: cyasslPathInclude};
var lib = Pkg.addLibrary("lib/" + Pkg.name, targ, libOptions);
lib.addObjects(cyaSSLObjList);
}

View File

@ -0,0 +1,7 @@
/*!
* ======== ti.net.cyassl ========
* CyaSSL library for TI-RTOS
*
*/
package ti.net.cyassl {
}

View File

@ -0,0 +1,12 @@
/*
* ======== package.xs ========
*/
/*
* ======== getLibs ========
* Contribute CyaSSL library.
*/
function getLibs(prog)
{
return ("lib/" + this.$name + ".a" + prog.build.target.suffix);
}

View File

@ -0,0 +1,29 @@
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x00000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x00000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x000FFFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x2003FFFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x8000;
define symbol __ICFEDIT_size_heap__ = 0x10000;
/**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
initialize by copy { readwrite };
do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
place in RAM_region { readwrite,
block CSTACK, block HEAP };

View File

@ -0,0 +1,75 @@
/*
* ======== benchmark.cfg ========
*/
/* ================ General configuration ================ */
var Defaults = xdc.useModule('xdc.runtime.Defaults');
var Diags = xdc.useModule('xdc.runtime.Diags');
var Error = xdc.useModule('xdc.runtime.Error');
var Log = xdc.useModule('xdc.runtime.Log');
var Main = xdc.useModule('xdc.runtime.Main');
var Memory = xdc.useModule('xdc.runtime.Memory');
var System = xdc.useModule('xdc.runtime.System');
var Text = xdc.useModule('xdc.runtime.Text');
var TimeStamp = xdc.useModule('xdc.runtime.Timestamp');
var BIOS = xdc.useModule('ti.sysbios.BIOS');
var Clock = xdc.useModule('ti.sysbios.knl.Clock');
var Task = xdc.useModule('ti.sysbios.knl.Task');
var Semaphore = xdc.useModule('ti.sysbios.knl.Semaphore');
var Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
var Timer = xdc.useModule('ti.sysbios.hal.Timer');
BIOS.heapSize = 100000;
Task.idleTaskStackSize = 768;
Program.stack = 2048;
/* ================ System configuration ================ */
var SysMin = xdc.useModule('xdc.runtime.SysMin');
SysMin.bufSize = 128;
System.SupportProxy = SysMin;
/* Enable Semihosting for GNU targets to print to CCS console */
if (Program.build.target.$name.match(/gnu/)) {
var SemiHost = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');
}
/* ================ NDK configuration ================ */
var Ndk = xdc.loadPackage('ti.ndk.config');
var Global = xdc.useModule('ti.ndk.config.Global');
var Ip = xdc.useModule('ti.ndk.config.Ip');
var Udp = xdc.useModule('ti.ndk.config.Udp');
var Tcp = xdc.useModule('ti.ndk.config.Tcp');
Global.IPv6 = false;
Global.stackLibType = Global.MIN;
Global.pktNumFrameBufs = 10;
Global.memRawPageCount = 6;
Global.ndkThreadStackSize = 1536;
Global.lowTaskStackSize = 1024;
Global.normTaskStackSize = 1024;
Global.highTaskStackSize = 1024;
Tcp.transmitBufSize = 1024;
Tcp.receiveBufSize = 1024;
/* ================ Driver configuration ================ */
var TIRTOS = xdc.useModule('ti.tirtos.TIRTOS');
var EMAC = xdc.useModule('ti.drivers.EMAC');
EMAC.libType = EMAC.LibType_NonInstrumented;
var GPIO = xdc.useModule('ti.drivers.GPIO');
GPIO.libType = GPIO.LibType_NonInstrumented;
/* ================ CyaSSL configuration ================ */
try {
var CyaSSL = xdc.loadPackage('ti.net.cyassl');
}
catch (e) {
print("Error: Could not find CyaSSL library! Make sure the CyaSSL library"
+ " is built and package path is updated for the build tool"
+ " to find the library. More detailed CyaSSL build instructions"
+ " can be found in the TI-RTOS user guide.");
}

View File

@ -0,0 +1,106 @@
/*
* ======== main.c ========
* Entry point for Benchmark application
*/
/* BIOS Header files */
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Swi.h>
#include <xdc/runtime/System.h>
#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/hal/Timer.h>
static int initialized = 0;
static double msTicks = 0;
static Timer_Handle hdl = NULL;
double current_time(int reset);
static void tick(unsigned int arg0);
void msTimer_init(void);
void runBenchmarks(UArg arg0, UArg arg1);
extern int benchmark_test(void* args);
/*
* ======== runBenchmarks ========
* Run the CyaSSL benchmark application
*/
void runBenchmarks(UArg arg0, UArg arg1)
{
void *args = NULL;
msTimer_init();
System_printf("Running benchmarks...\n");
System_flush();
benchmark_test(args);
System_printf("Benchmarks completed.\n");
BIOS_exit(0);
}
/*
* ======== ticks ========
* Keeps track of time in millisec
*/
static void tick(unsigned int arg0)
{
Swi_disable();
msTicks++;
Swi_enable();
}
/*
* ======== current_time ========
* Returns the time in sec (double precision)
*/
double current_time(int reset)
{
if (reset) {
msTicks = 0;
}
return (msTicks/1000);
}
/*
* ======== msTimer_init ========
* Sets up a BIOS timer with millisec period
*/
void msTimer_init(void)
{
Timer_Params params;
if (initialized) {
return;
}
Timer_Params_init(&params);
params.period = 1000;
params.periodType = Timer_PeriodType_MICROSECS;
params.runMode = Timer_RunMode_CONTINUOUS;
params.startMode = Timer_StartMode_AUTO;
hdl = Timer_create(-1, (ti_sysbios_hal_Timer_FuncPtr)tick,
&params, NULL);
if (!hdl) {
System_abort("msTimer_init: Timer creation failed.\n");
}
/* Set flag indicating that initialization has completed */
initialized = 1;
}
/*
* ======== main ========
*/
int main(int argc, char** argv)
{
/* Initialize the defaults and set the parameters. */
Task_Handle handle;
Task_Params taskParams;
Task_Params_init(&taskParams);
taskParams.stackSize = 65535;
handle = Task_create(runBenchmarks, &taskParams, NULL);
if (handle == NULL) {
System_printf("main: Failed to create new Task.\n");
}
BIOS_start();
}

View File

@ -0,0 +1,48 @@
/*
* ======== package.bld ========
* Build script for benchmark application
*/
if ((typeof(TivaWareDir) == undefined) || (TivaWareDir == "")) {
throw("ERROR: NO VALID TIVAWARE PATH DEFINED!!!");
}
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
var Pkg = xdc.useModule('xdc.bld.PackageContents');
/* make command to search for the srcs */
Pkg.makePrologue = "vpath %.c $(subst ;, ,$(XPKGPATH))";
var srcs = [
"main.c",
"ctaocrypt/benchmark/benchmark.c",
"examples/EK_TM4C1294XL/EK_TM4C1294XL.c",
];
for each (var targ in Build.targets) {
var lnkOpts = " -l" + TivaWareDir + "/driverlib/ccs/Debug/driverlib.lib";
var platform = "ti.platforms.tiva:TM4C1294NCPDT:1";
if (targ.$name.match(/^ti/)) {
lnkOpts += " -x ";
}
else if (targ.$name.match(/^iar/)) {
lnkOpts = TivaWareDir + "/driverlib/ccs/Debug/driverlib.lib"
+ " --config TM4C1294NC.icf";
platform = "ti.platforms.tiva:TM4C1294NCPDT";
/* Floating point print support */
var suffix = targ.$orig.lnkOpts.suffix;
targ.$orig.lnkOpts.suffix = suffix.replace(/PrintfSmall/, "PrintfFull");
}
var exeOptions = {incs: cyasslPathInclude
+ " -DNO_MAIN_DRIVER -D_INCLUDE_NIMU_CODE -DBENCH_EMBEDDED "
+ " -DTIVAWARE -DPART_TM4C1294NCPDT",
lopts: lnkOpts
};
var exe = Pkg.addExecutable("benchmark", targ,
platform, exeOptions);
exe.addObjects(srcs);
}

View File

@ -0,0 +1,6 @@
/*
* ======== ti.net.cyassl.tests.ctaocrypt.benchmark ========
* CTaoCrypt Benchmark Application
*/
package ti.net.cyassl.tests.ctaocrypt.benchmark {
}

View File

@ -0,0 +1,29 @@
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x00000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x00000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x000FFFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x2003FFFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x8000;
define symbol __ICFEDIT_size_heap__ = 0x10000;
/**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
initialize by copy { readwrite };
do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly };
place in RAM_region { readwrite,
block CSTACK, block HEAP };

View File

@ -0,0 +1,56 @@
/*
* ======== main.c ========
* Entry point to Ctaocrypt Test Application
*/
/* XDCtools Header files */
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Task.h>
#include <xdc/runtime/System.h>
/* func_args from test.h, so don't have to pull in other junk */
typedef struct func_args {
int argc;
char** argv;
int return_code;
} func_args;
extern int ctaocrypt_test(void* args);
/*
* ======== testCtaocrypt ========
* Run the Ctaocrypt test
*/
void testCtaocrypt(UArg arg0, UArg arg1)
{
System_printf("Running ctaocrypt tests...\n");
System_flush();
ctaocrypt_test((void *)arg0);
System_printf("Tests completed.\n");
BIOS_exit(0);
}
/*
* ======== main ========
*/
int main(int argc, char** argv)
{
func_args args;
args.argc = argc;
args.argv = argv;
/* Initialize the defaults and set the parameters. */
Task_Handle handle;
Task_Params taskParams;
Task_Params_init(&taskParams);
taskParams.arg0 = (UArg)&args;
taskParams.stackSize = 65535;
handle =Task_create(testCtaocrypt, &taskParams, NULL);
if (handle == NULL) {
System_printf("main: Failed to create new Task.\n");
return (-1);
}
BIOS_start();
}

View File

@ -0,0 +1,43 @@
/*
* ======== package.bld ========
* Build script for Ctaocrypt Test
*/
if ((typeof(TivaWareDir) == undefined) || (TivaWareDir == "")) {
throw("ERROR: NO VALID TIVAWARE PATH DEFINED!!!");
}
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
var Pkg = xdc.useModule('xdc.bld.PackageContents');
/* make command to search for the srcs */
Pkg.makePrologue = "vpath %.c $(subst ;, ,$(XPKGPATH))";
var srcs = [
"main.c",
"ctaocrypt/test/test.c",
"examples/EK_TM4C1294XL/EK_TM4C1294XL.c",
];
for each (var targ in Build.targets) {
var lnkOpts = " -l" + TivaWareDir + "/driverlib/ccs/Debug/driverlib.lib"
var platform = "ti.platforms.tiva:TM4C1294NCPDT:1";
if (targ.$name.match(/^ti/)) {
lnkOpts += " -x ";
}
else if (targ.$name.match(/^iar/)) {
lnkOpts = TivaWareDir + "/driverlib/ccs/Debug/driverlib.lib"
+ " --config TM4C1294NC.icf";
platform = "ti.platforms.tiva:TM4C1294NCPDT";
}
var exeOptions = {incs: cyasslPathInclude
+ " -DNO_MAIN_DRIVER -D_INCLUDE_NIMU_CODE -DBENCH_EMBEDDED "
+ " -DTIVAWARE -DPART_TM4C1294NCPDT",
lopts: lnkOpts,
};
var exe = Pkg.addExecutable("test", targ,
platform, exeOptions);
exe.addObjects(srcs);
}

View File

@ -0,0 +1,6 @@
/*
* ======== ti.net.cyassl.tests.ctaocrypt.test ========
* Ctaocrypt Test Application
*/
package ti.net.cyassl.tests.ctaocrypt.test {
}

View File

@ -0,0 +1,75 @@
/*
* ======== test.cfg ========
*/
/* ================ General configuration ================ */
var Defaults = xdc.useModule('xdc.runtime.Defaults');
var Diags = xdc.useModule('xdc.runtime.Diags');
var Error = xdc.useModule('xdc.runtime.Error');
var Log = xdc.useModule('xdc.runtime.Log');
var Main = xdc.useModule('xdc.runtime.Main');
var Memory = xdc.useModule('xdc.runtime.Memory');
var System = xdc.useModule('xdc.runtime.System');
var Text = xdc.useModule('xdc.runtime.Text');
var TimeStamp = xdc.useModule('xdc.runtime.Timestamp');
var BIOS = xdc.useModule('ti.sysbios.BIOS');
var Clock = xdc.useModule('ti.sysbios.knl.Clock');
var Task = xdc.useModule('ti.sysbios.knl.Task');
var Semaphore = xdc.useModule('ti.sysbios.knl.Semaphore');
var Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
var Timer = xdc.useModule('ti.sysbios.hal.Timer');
BIOS.heapSize = 100000;
Task.idleTaskStackSize = 768;
Program.stack = 2048;
/* ================ System configuration ================ */
var SysMin = xdc.useModule('xdc.runtime.SysMin');
SysMin.bufSize = 128;
System.SupportProxy = SysMin;
/* Enable Semihosting for GNU targets to print to CCS console */
if (Program.build.target.$name.match(/gnu/)) {
var SemiHost = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');
}
/* ================ NDK configuration ================ */
var Ndk = xdc.loadPackage('ti.ndk.config');
var Global = xdc.useModule('ti.ndk.config.Global');
var Ip = xdc.useModule('ti.ndk.config.Ip');
var Udp = xdc.useModule('ti.ndk.config.Udp');
var Tcp = xdc.useModule('ti.ndk.config.Tcp');
Global.IPv6 = false;
Global.stackLibType = Global.MIN;
Global.pktNumFrameBufs = 10;
Global.memRawPageCount = 6;
Global.ndkThreadStackSize = 1536;
Global.lowTaskStackSize = 1024;
Global.normTaskStackSize = 1024;
Global.highTaskStackSize = 1024;
Tcp.transmitBufSize = 1024;
Tcp.receiveBufSize = 1024;
/* ================ Driver configuration ================ */
var TIRTOS = xdc.useModule('ti.tirtos.TIRTOS');
var EMAC = xdc.useModule('ti.drivers.EMAC');
EMAC.libType = EMAC.LibType_NonInstrumented;
var GPIO = xdc.useModule('ti.drivers.GPIO');
GPIO.libType = GPIO.LibType_NonInstrumented;
/* ================ CyaSSL configuration ================ */
try {
var CyaSSL = xdc.loadPackage('ti.net.cyassl');
}
catch (e) {
print("Error: Could not find CyaSSL library! Make sure the CyaSSL library"
+ " is built and package path is updated for the build tool"
+ " to find the library. More detailed CyaSSL build instructions"
+ " can be found in the TI-RTOS user guide.");
}