int main() { SystemInit(); SER_Init() ; #if !defined(NO_FILESYSTEM) init_card () ; /* initializing SD card */ #endif init_time() ; #if defined(DEBUG_CYASSL) printf("Turning ON Debug message\n") ; CyaSSL_Debugging_ON() ; #endif #ifdef HAVE_KEIL_RTX os_sys_init (main_task) ; #else main_task() ; #endif return 0 ; /* There should be no return here */ }
int main(int argc, char** argv) { func_args args; #ifdef HAVE_CAVIUM int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); if (ret != 0) err_sys("Cavium OpenNitroxDevice failed"); #endif /* HAVE_CAVIUM */ StartTCP(); args.argc = argc; args.argv = argv; CyaSSL_Init(); #if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) CyaSSL_Debugging_ON(); #endif if (CurrentDir("client") || CurrentDir("build")) ChangeDirBack(2); #ifdef HAVE_STACK_SIZE StackSizeCheck(&args, client_test); #else client_test(&args); #endif CyaSSL_Cleanup(); #ifdef HAVE_CAVIUM CspShutdown(CAVIUM_DEV_ID); #endif return args.return_code; }
static void prvInitialiseCyaSSL( void ) { int32_t iReturn; #ifdef DEBUG_CYASSL { CyaSSL_Debugging_ON(); } #endif /* Initialise CyaSSL. This must be done before any other CyaSSL functions are called. */ CyaSSL_Init(); /* Attempt to create a context that uses the TLS V1 server protocol. */ xCyaSSL_ServerContext = CyaSSL_CTX_new( CyaTLSv1_server_method() ); if( xCyaSSL_ServerContext != NULL ) { /* Load the CA certificate. Real applications should ensure that CyaSSL_CTX_load_verify_locations() returns SSL_SUCCESS before proceeding. */ iReturn = CyaSSL_CTX_load_verify_locations( xCyaSSL_ServerContext, "ca-cert.pem", 0 ); configASSERT( iReturn == SSL_SUCCESS ); iReturn = CyaSSL_CTX_use_certificate_file( xCyaSSL_ServerContext, "server-cert.pem", SSL_FILETYPE_PEM ); configASSERT( iReturn == SSL_SUCCESS ); iReturn = CyaSSL_CTX_use_PrivateKey_file( xCyaSSL_ServerContext, "server-key.pem", SSL_FILETYPE_PEM ); configASSERT( iReturn == SSL_SUCCESS ); } }
int main(int argc, char** argv) { func_args args; #ifdef HAVE_CAVIUM int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); if (ret != 0) err_sys("Cavium OpenNitroxDevice failed"); #endif /* HAVE_CAVIUM */ StartTCP(); args.argc = argc; args.argv = argv; CyaSSL_Init(); #if defined(DEBUG_CYASSL) && !defined(WOLFSSL_MDK_SHELL) CyaSSL_Debugging_ON(); #endif #ifndef CYASSL_TIRTOS ChangeToWolfRoot(); #endif echoclient_test(&args); CyaSSL_Cleanup(); #ifdef HAVE_CAVIUM CspShutdown(CAVIUM_DEV_ID); #endif return args.return_code; }
int main(int argc, char** argv) { func_args args; #ifdef HAVE_CAVIUM int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); if (ret != 0) err_sys("Cavium OpenNitroxDevice failed"); #endif /* HAVE_CAVIUM */ StartTCP(); args.argc = argc; args.argv = argv; CyaSSL_Init(); #if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) CyaSSL_Debugging_ON(); #endif if (CurrentDir("echoserver")) ChangeDirBack(2); else if (CurrentDir("Debug") || CurrentDir("Release")) ChangeDirBack(3); echoserver_test(&args); CyaSSL_Cleanup(); #ifdef HAVE_CAVIUM CspShutdown(CAVIUM_DEV_ID); #endif return args.return_code; }
int main(int argc, char** argv) { func_args args; #ifdef HAVE_WNR if (wc_InitNetRandom(wnrConfig, NULL, 5000) != 0) err_sys("Whitewood netRandom global config failed"); #endif StartTCP(); args.argc = argc; args.argv = argv; CyaSSL_Init(); #if defined(DEBUG_CYASSL) && !defined(CYASSL_MDK_SHELL) CyaSSL_Debugging_ON(); #endif ChangeToWolfRoot(); echoserver_test(&args); CyaSSL_Cleanup(); #ifdef HAVE_WNR if (wc_FreeNetRandom() < 0) err_sys("Failed to free netRandom context"); #endif /* HAVE_WNR */ return args.return_code; }
int main(int argc, char** argv) { func_args args; #ifdef HAVE_CAVIUM int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); if (ret != 0) err_sys("Cavium OpenNitroxDevice failed"); #endif /* HAVE_CAVIUM */ StartTCP(); args.argc = argc; args.argv = argv; CyaSSL_Init(); #ifdef DEBUG_CYASSL CyaSSL_Debugging_ON(); #endif if (CurrentDir("echoclient") || CurrentDir("build")) ChangeDirBack(2); echoclient_test(&args); CyaSSL_Cleanup(); #ifdef HAVE_CAVIUM CspShutdown(CAVIUM_DEV_ID); #endif return args.return_code; }
int main() { static char *argv[] = { "client", "-h", CYASSL_CALLEE_IP, "-p", CYASSL_CALLEE_PORT, "-v", CYASSL_SSL_VER, CYASSL_HTTP_GET } ; static func_args args = { 7 + CYASSL_HTTP_GET_COUNT, argv } ; init_time() ; init_filesystem (); net_initialize() ; osThreadCreate (osThread (tcp_poll), NULL); osDelay(50000) ; /* wait for DHCP */ #if defined(DEBUG_CYASSL) printf("Turning ON Debug message\n") ; CyaSSL_Debugging_ON() ; #endif if(args.argc == 7) printf("Simple SSL/TLS, ") ; else printf("HTTP GET, ") ; printf("Callee IP: %s, Port: %s, Version:%s\n", argv[2], argv[4], argv[6]) ; while(1) { client_test(&args) ; printf("Enter any key to iterate.\n") ; getchar() ; } }
int main(int argc, char** argv) { func_args args; tcp_ready ready; StartTCP(); args.argc = argc; args.argv = argv; args.signal = &ready; InitTcpReady(&ready); #if defined(DEBUG_CYASSL) && !defined(WOLFSSL_MDK_SHELL) CyaSSL_Debugging_ON(); #endif CyaSSL_Init(); ChangeToWolfRoot(); #ifdef HAVE_STACK_SIZE StackSizeCheck(&args, server_test); #else server_test(&args); #endif CyaSSL_Cleanup(); FreeTcpReady(&ready); #ifdef HAVE_WNR if (wc_FreeNetRandom() < 0) err_sys("Failed to free netRandom context"); #endif /* HAVE_WNR */ return args.return_code; }
static void dbg_comm(void *args) { if(CyasslDebug == 1) { CyasslDebug = 0 ; printf("Turning OFF Debug message\n") ; CyaSSL_Debugging_OFF() ; } else { CyasslDebug = 1 ; printf("Turning ON Debug message\n") ; CyaSSL_Debugging_ON() ; } }
TLSEncryption::TLSEncryption() : m_ctx(0), m_ssl(0) { SSL_load_error_strings(); SSL_library_init(); #ifdef SSL_LIB_CYASSL #ifdef SSL_LIB_DEBUG CyaSSL_Debugging_ON(); #endif #endif }
int tls_lib_init() { static bool inited; if (!inited) { ctaocrypt_lib_init(); CyaSSL_Init(); /* InitCyaSSL(); */ #ifdef CONFIG_TLS_DEBUG CyaSSL_Debugging_ON(); #endif inited = 1; } return WM_SUCCESS; }
int main() { void *args = NULL ; init_time() ; init_filesystem (); net_initialize() ; osThreadCreate (osThread (tcp_poll), NULL); osDelay(30000) ; /* wait for DHCP */ #if defined(DEBUG_CYASSL) printf("Turning ON Debug message\n") ; CyaSSL_Debugging_ON() ; #endif echoclient_test(args) ; }
int main() { func_args args = { 0 } ; init_filesystem (); net_initialize() ; osThreadCreate (osThread (tcp_poll), NULL); osDelay(10000) ; /* wait for DHCP */ #if defined(DEBUG_CYASSL) printf("Turning ON Debug message\n") ; CyaSSL_Debugging_ON() ; #endif printf("echoserver: Started\n") ; echoserver_test(&args) ; printf("echoserver: Terminated\n") ; }
void BSP_Init(void) { useconds_t usecs; #ifdef PTHREAD pthread_t tick; pthread_create(&tick, NULL, task_SysTimer, NULL); #else sigset(SIGALRM, tick_handler); usecs = 1000; ualarm(usecs, usecs); #endif #ifdef DEBUG_CYASSL CyaSSL_Debugging_ON(); #endif }
int main(int argc, char** argv) { func_args args; StartTCP(); args.argc = argc; args.argv = argv; InitCyaSSL(); #ifdef DEBUG_CYASSL CyaSSL_Debugging_ON(); #endif echoserver_test(&args); FreeCyaSSL(); return args.return_code; }
int main(int argc, char** argv) { func_args args; tcp_ready ready; #ifdef HAVE_CAVIUM int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); if (ret != 0) err_sys("Cavium OpenNitroxDevice failed"); #endif /* HAVE_CAVIUM */ StartTCP(); args.argc = argc; args.argv = argv; args.signal = &ready; InitTcpReady(&ready); #if defined(DEBUG_CYASSL) && !defined(WOLFSSL_MDK_SHELL) CyaSSL_Debugging_ON(); #endif CyaSSL_Init(); ChangeToWolfRoot(); #ifdef HAVE_STACK_SIZE StackSizeCheck(&args, server_test); #else server_test(&args); #endif CyaSSL_Cleanup(); FreeTcpReady(&ready); #ifdef HAVE_CAVIUM CspShutdown(CAVIUM_DEV_ID); #endif #ifdef HAVE_WNR if (wc_FreeNetRandom() < 0) err_sys("Failed to free netRandom context"); #endif /* HAVE_WNR */ return args.return_code; }
int main(int argc, char** argv) { func_args args; #ifdef HAVE_CAVIUM int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); if (ret != 0) err_sys("Cavium OpenNitroxDevice failed"); #endif /* HAVE_CAVIUM */ #ifdef HAVE_WNR if (wc_InitNetRandom(wnrConfig, NULL, 5000) != 0) err_sys("Whitewood netRandom global config failed"); #endif StartTCP(); args.argc = argc; args.argv = argv; CyaSSL_Init(); #if defined(DEBUG_CYASSL) && !defined(WOLFSSL_MDK_SHELL) CyaSSL_Debugging_ON(); #endif #ifndef CYASSL_TIRTOS ChangeToWolfRoot(); #endif echoclient_test(&args); CyaSSL_Cleanup(); #ifdef HAVE_CAVIUM CspShutdown(CAVIUM_DEV_ID); #endif #ifdef HAVE_WNR if (wc_FreeNetRandom() < 0) err_sys("Failed to free netRandom context"); #endif /* HAVE_WNR */ return args.return_code; }
int main(int argc, char** argv) { func_args args; StartTCP(); args.argc = argc; args.argv = argv; CyaSSL_Init(); #ifdef DEBUG_CYASSL CyaSSL_Debugging_ON(); #endif if (CurrentDir("echoclient") || CurrentDir("build")) ChangeDirBack(2); echoclient_test(&args); CyaSSL_Cleanup(); return args.return_code; }
int main() { static char *argv[] = { "server", "-p", CYASSL_LISTEN_PORT, "-d"} ; static func_args args = { 4, argv } ; init_filesystem (); net_initialize() ; osThreadCreate (osThread (tcp_poll), NULL); osDelay(10000) ; /* wait for DHCP */ #if defined(DEBUG_CYASSL) printf("Turning ON Debug message\n") ; CyaSSL_Debugging_ON() ; #endif printf("Simple Server: Started\n") ; while(1) { server_test(&args) ; printf("Enter any key to iterate.\n") ; getchar() ; } }
void client_test(void) { char msg[64]; char reply[1024]; int sockfd, input; int ret = 0, msgSz = 0; struct sockaddr_in servaddr; CYASSL_CTX* ctx; CYASSL* ssl; long yasslIP = IPADDR(192,168,1,125); long yasslPort = 11111; /* for debug, compile CyaSSL with DEBUG_CYASSL defined */ CyaSSL_Debugging_ON(); CyaSSL_Init(); ctx = CyaSSL_CTX_new(CyaTLSv1_2_client_method()); if (ctx == 0) err_sys("setting up ctx"); CyaSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, myVerify); ret = CyaSSL_CTX_use_certificate_file(ctx, clientCert, SSL_FILETYPE_PEM); if (ret != SSL_SUCCESS) err_sys("can't load client cert file, check file"); ret = CyaSSL_CTX_use_PrivateKey_file(ctx, clientKey, SSL_FILETYPE_PEM); if (ret != SSL_SUCCESS) err_sys("can't load client key file, check file"); ret = CyaSSL_CTX_load_verify_locations(ctx, caCert, 0); if (ret != SSL_SUCCESS) err_sys("can't load CA cert file, check file"); /* create socket descriptor */ sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd == RTCS_SOCKET_ERROR) { err_sys("socket creation failed"); } else { printf("socket created successfully\n"); } /* * Unlike most TCP/IP stacks, RTCS requires that sin_port and * sin_addr needs to be in Host Byte Order, not Network Byte Order. * This means we shouldn't use htons() when setting these values. */ memset((char*)&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = yasslPort; servaddr.sin_addr.s_addr = yasslIP; ret = connect(sockfd, &servaddr, sizeof(servaddr)); if (ret != RTCS_OK) { err_sys("connect() failed"); } else { printf("Connected to %lx, port %d.\n", servaddr.sin_addr.s_addr, servaddr.sin_port); } if ( (ssl = CyaSSL_new(ctx)) == NULL) err_sys("CyaSSL_new failed"); CyaSSL_set_fd(ssl, sockfd); ret = CyaSSL_connect(ssl); if (ret != SSL_SUCCESS) err_sys("CyaSSL_connect failed"); printf("CyaSSL_connect() ok, sending GET...\n"); msgSz = 28; strncpy(msg, "GET /index.html HTTP/1.0\r\n\r\n", msgSz); if (CyaSSL_write(ssl, msg, msgSz) != msgSz) err_sys("CyaSSL_write() failed"); input = CyaSSL_read(ssl, reply, sizeof(reply)-1); if (input > 0) { reply[input] = 0; printf("Server response: %s\n", reply); while (1) { input = CyaSSL_read(ssl, reply, sizeof(reply)-1); if (input > 0) { reply[input] = 0; printf("%s\n", reply); } else { break; } } } CyaSSL_shutdown(ssl); CyaSSL_free(ssl); CyaSSL_CTX_free(ctx); CyaSSL_Cleanup(); }
int YellHttp_ExecRequest(YellHttp_Ctx *ctx, char *url) { int retval; int i=0; int endi; int hostnamei; int porti = 0; int recvlen; int stop = 0; int headerspos = 0; int linenum = 0; int pos=0, pos2 = 0; char *hdrfield, *hdrval; struct hostent *host; struct sockaddr_in client_addr; FILE *fhttpdump; struct stat filestatus; char modifiedsincedate[512]; char hdrstr[512]; int send_modifiedsince_hdr = 0; int valid_domain_name; unsigned long serverip; char request_type[8]; unsigned int content_len; int err; char errbuffer[80]; if(url==NULL)return YELLHTTP_EINVAL; memset(ctx->url, 0, 512); strncpy(ctx->url, url, 511); ctx->server_flags &= YELLHTTP_SRVFLAG_USRFLAGS; if(strncmp(ctx->url, "https", 5)==0) { #ifdef ENABLESSL ctx->SSL = 1; #else return YELLHTTP_ESSLDISABLED; #endif i+= 8; } else if(strncmp(ctx->url, "http", 4)==0) { ctx->SSL = 0; i+= 7; } else { return YELLHTTP_EINVAL; } hostnamei = i; memset(ctx->hostname, 0, 512); while(ctx->url[i]!='/' && ctx->url[i]!=':' && i<strlen(ctx->url))i++; if(i>255)return YELLHTTP_EINVAL; strncpy(ctx->hostname, &ctx->url[hostnamei], i - hostnamei); memset(ctx->uri, 0, 512); memset(ctx->portstr, 0, 8); ctx->port = 80; if(ctx->SSL)ctx->port = 443; if(ctx->url[i]==':') { i++; memset(ctx->portstr, 0, 8); while((ctx->url[i]>('0'-1) && ctx->url[i]<('9'+1)) && porti<8 && i<strlen(ctx->url)) { ctx->portstr[porti] = ctx->url[i]; i++; porti++; } sscanf(ctx->portstr, "%hd", &ctx->port); } strcpy(ctx->uri, &ctx->url[i]); i = strlen(ctx->uri) - 1; if(i==-1) { ctx->uri[0] = '/'; i = 0; } endi = i; memset(ctx->filename, 0, 512); while(ctx->uri[i]!='/' && i>0) { if(ctx->uri[i]=='?')endi = i - 1; i--; } if(strcmp(&ctx->uri[i], "/")==0) { strncpy(ctx->filename, "index.html", 512); } else { i++; strncpy(ctx->filename, &ctx->uri[i], (endi + 1) - i); } printf("Looking up %s...\n", ctx->hostname); valid_domain_name = 0; for(hostnamei=0; hostnamei<strlen(ctx->hostname); hostnamei++) { if(ctx->hostname[hostnamei]>='A' && ctx->hostname[hostnamei]<='z') { valid_domain_name = 1; break; } } if(valid_domain_name) { if((host = gethostbyname(ctx->hostname)) == NULL) { return YELLHTTP_EDNSRESOLV; } serverip = *((unsigned long *) host->h_addr_list[0]); } else { serverip = inet_addr(ctx->hostname); } client_addr.sin_family = AF_INET; client_addr.sin_port = htons(ctx->port); client_addr.sin_addr.s_addr = serverip; ctx->sock_client = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); if(ctx->sock_client<0) { if(ctx->sock_client == -1) { printf("Failed to create socket: %d\n", ctx->sock_client); return YELLHTTP_ESOCK; } else { printf("socket() returned %d, ignoring...\n", ctx->sock_client); } } printf("Connecting to %s...\n", ctx->hostname); if((retval = connect(ctx->sock_client, (struct sockaddr *)&client_addr, sizeof(client_addr)))<0) { printf("Failed: %d\n", retval); return YELLHTTP_ECONN; } #ifdef ENABLESSL SSL_METHOD* method; SSL_CTX* sslctx; SSL* ssl; if(ctx->SSL) { InitCyaSSL(); CyaSSL_Debugging_ON(); method = SSLv3_client_method(); if(method)sslctx = SSL_CTX_new(method); if(sslctx)SSL_CTX_set_verify(sslctx, SSL_VERIFY_NONE, 0); if(sslctx)ssl = SSL_new(sslctx); if(ssl)SSL_set_fd(ssl, ctx->sock_client); if(method==NULL || sslctx==NULL || ssl==NULL) { if(method==NULL)printf("Method init failure "); if(method==NULL)printf("SSL ctx init failure "); if(method==NULL)printf("SSL init failure "); err = SSL_get_error(ssl, 0); printf("sslerr = %d, %s\n", err, ERR_error_string(err, errbuffer)); shutdown(ctx->sock_client,0); close(ctx->sock_client); if(sslctx)SSL_CTX_free(sslctx); if(ssl)SSL_free(ssl); FreeCyaSSL(); return err; } printf("Connecting to %s with SSL...\n", ctx->hostname); if(SSL_connect(ssl)!=SSL_SUCCESS) { err = SSL_get_error(ssl, 0); printf("sslerr = %d, %s\n", err, ERR_error_string(err, errbuffer)); shutdown(ctx->sock_client,0); close(ctx->sock_client); SSL_CTX_free(sslctx); SSL_free(ssl); FreeCyaSSL(); return err; } } #endif if(stat(ctx->filename, &filestatus)==0 && !(ctx->server_flags & YELLHTTP_SRVFLAG_NOCACHE)) { memset(modifiedsincedate, 0, 512); memset(hdrstr, 0, 512); YellHttp_GenDate(modifiedsincedate, filestatus.st_mtime, ctx); sprintf(hdrstr, "If-Modified-Since: %s\r\n", modifiedsincedate); send_modifiedsince_hdr = 1; } memset(request_type, 0, 8); if(strlen(ctx->request_type)>0) { strncpy(request_type, ctx->request_type, 8); if(strncmp(request_type, "HEAD", 4)==0)stop = 1; } else { strncpy(request_type, "GET", 8); } snprintf((char*)ctx->sendbuf, SENDBUFSZ, "%s %s HTTP/%s\r\nHost: %s\r\nUser-Agent: %s\r\nConnection: close\r\n", request_type, ctx->uri, ctx->httpversion, ctx->hostname, ctx->useragent); if(send_modifiedsince_hdr)strncat((char*)ctx->sendbuf, hdrstr, SENDBUFSZ); if(ctx->range_end!=0) { memset(hdrstr, 0, 512); snprintf(hdrstr, 512, "Range: bytes=%d-%d\r\n", ctx->range_start, ctx->range_end); strncat((char*)ctx->sendbuf, hdrstr, SENDBUFSZ); } if(ctx->authenticated) { #ifdef ENABLESSL if(ctx->auth_type==1)YellHttp_GenDigestAuthHdr(ctx); #endif strncat((char*)ctx->sendbuf, ctx->authorization_header, SENDBUFSZ); } if(strncmp(ctx->request_type, "POST", 4)==0) { if(ctx->postdata && ctx->postdata>0) { snprintf(hdrstr, 512, "Content-Type: %s\r\nContent-Length: %d\r\n", ctx->content_type, ctx->postdata_length); strncat((char*)ctx->sendbuf, hdrstr, SENDBUFSZ); } } if(strlen(ctx->headers)>0)strncat((char*)ctx->sendbuf, ctx->headers, SENDBUFSZ); strncat((char*)ctx->sendbuf, "\r\n", SENDBUFSZ); printf("Sending request...\n"); if(!ctx->SSL) { YellHttp_SendData(ctx->sock_client, ctx->sendbuf, strlen((char*)ctx->sendbuf)); } else { #ifdef ENABLESSL SSL_write(ssl, ctx->sendbuf, strlen((char*)ctx->sendbuf)); #endif } if(strncmp(ctx->request_type, "POST", 4)==0) { printf("Sending POST data...\n"); if(ctx->postdata==NULL || ctx->postdata_length==0) { printf("Ctx->postdata is NULL, or postdata_length is zero.\n"); shutdown(ctx->sock_client,0); close(ctx->sock_client); SSL_CTX_free(sslctx); SSL_free(ssl); FreeCyaSSL(); return YELLHTTP_EINVAL; } if(!ctx->SSL) { YellHttp_SendData(ctx->sock_client, ctx->postdata, ctx->postdata_length); } else { #ifdef ENABLESSL SSL_write(ssl, ctx->postdata, ctx->postdata_length); #endif } } hdrfield = (char*)malloc(512); hdrval = (char*)malloc(512); printf("Waiting for response...(Headers)\n"); fhttpdump = fopen("httpheaders", "wb"); if(fhttpdump==NULL) { #ifdef ENABLESSL if(ctx->SSL) { SSL_CTX_free(sslctx); SSL_free(ssl); FreeCyaSSL(); } #endif shutdown(ctx->sock_client,0); close(ctx->sock_client); free(hdrfield); free(hdrval); return YELLHTTP_EFILE; } while(1) { if(!ctx->SSL) { recvlen = YellHttp_RecvData(ctx->sock_client, &ctx->recvbuf[headerspos], 1); } else { #ifdef ENABLESSL recvlen = SSL_read(ssl, &ctx->recvbuf[headerspos], 1); #endif } if(recvlen<=0) { stop = 1; break; } fwrite(&ctx->recvbuf[headerspos], 1, 1, fhttpdump); if(ctx->recvbuf[headerspos]==0x0a) { ctx->recvbuf[headerspos+1]=0; if(strlen((char*)ctx->recvbuf)<3) { headerspos = 0; break; } if(headerspos>4) { if(linenum==0) { sscanf((char*)&ctx->recvbuf[9], "%d", &ctx->http_status); memcpy(ctx->httpversion, &ctx->recvbuf[5], 3); printf("HTTP status: %d\n", ctx->http_status); if(ctx->http_status==304)stop = 1; if(ctx->http_status==401) { ctx->auth_requirederrors++; } else { ctx->auth_requirederrors = 0; } } else { memset(hdrfield, 0, 512); memset(hdrval, 0, 512); pos = 0; pos2 = 0; while(ctx->recvbuf[pos]!=':' && ctx->recvbuf[pos]!=0x0d && pos2<255) { hdrfield[pos2] = ctx->recvbuf[pos]; pos++; pos2++; } if(ctx->recvbuf[pos]==':') { pos+=2; pos2 = 0; while(ctx->recvbuf[pos]!=0x0d && pos2<255) { hdrval[pos2] = ctx->recvbuf[pos]; pos++; pos2++; } } for(i=0; i<32; i++) { if(headercb_array[i].cb==NULL)continue; if(strcmp(headercb_array[i].hdrfield, hdrfield)==0) { headercb_array[i].cb((char*)ctx->recvbuf, hdrfield, hdrval, ctx, headercb_array[i].usrarg); } } } linenum++; headerspos = 0; continue; } } headerspos++; } fclose(fhttpdump); free(hdrfield); free(hdrval); if(!stop) { printf("Receiving content, filename %s ...\n", ctx->filename); fhttpdump = fopen(ctx->filename, "wb"); content_len = ctx->content_length; if(fhttpdump==NULL) { #ifdef ENABLESSL if(ctx->SSL) { SSL_CTX_free(sslctx); SSL_free(ssl); FreeCyaSSL(); } #endif shutdown(ctx->sock_client,0); close(ctx->sock_client); return YELLHTTP_EFILE; } if(!ctx->SSL) { if(content_len) { while(content_len) { recvlen = YellHttp_RecvData(ctx->sock_client, ctx->recvbuf, RECVBUFSZ); fwrite(ctx->recvbuf, 1, recvlen, fhttpdump); content_len-= recvlen; } } else { while((recvlen = YellHttp_RecvData(ctx->sock_client, ctx->recvbuf, RECVBUFSZ))!=0) { fwrite(ctx->recvbuf, 1, recvlen, fhttpdump); } } } else { #ifdef ENABLESSL if(content_len) { while(content_len) { recvlen = SSL_read(ssl, ctx->recvbuf, RECVBUFSZ); fwrite(ctx->recvbuf, 1, recvlen, fhttpdump); content_len-= recvlen; } } else { while((recvlen = SSL_read(ssl, ctx->recvbuf, RECVBUFSZ))!=0) { fwrite(ctx->recvbuf, 1, recvlen, fhttpdump); } } #endif } fclose(fhttpdump); } #ifdef ENABLESSL if(ctx->SSL) { SSL_CTX_free(sslctx); SSL_free(ssl); FreeCyaSSL(); } #endif shutdown(ctx->sock_client,0); close(ctx->sock_client); if((ctx->http_status>=301 && ctx->http_status<=303) && !(ctx->server_flags & YELLHTTP_SRVFLAG_DISABLEREDIR)) { printf("Redirected: %s\n", ctx->redirecturl); return YellHttp_ExecRequest(ctx, ctx->redirecturl); } if(ctx->http_status==401 && ctx->authenticated) { if(ctx->authenticated==1) { return YellHttp_ExecRequest(ctx, url); } } if(ctx->http_status>=400)return -ctx->http_status; if(ctx->authenticated) { ctx->auth_nc++; } return 0; }
int main(int argc, char** argv) { (void)argc; (void)argv; #else int benchmark_test(void *args) { #endif #if defined(DEBUG_CYASSL) && !defined(HAVE_VALGRIND) CyaSSL_Debugging_ON(); #endif #ifdef HAVE_CAVIUM int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); if (ret != 0) { printf("Cavium OpenNitroxDevice failed\n"); exit(-1); } #endif /* HAVE_CAVIUM */ #ifndef NO_AES bench_aes(0); bench_aes(1); #endif #ifdef HAVE_AESGCM bench_aesgcm(); #endif #ifdef CYASSL_AES_COUNTER bench_aesctr(); #endif #ifdef HAVE_AESCCM bench_aesccm(); #endif #ifdef HAVE_CAMELLIA bench_camellia(); #endif #ifndef NO_RC4 bench_arc4(); #endif #ifdef HAVE_HC128 bench_hc128(); #endif #ifndef NO_RABBIT bench_rabbit(); #endif #ifdef HAVE_CHACHA bench_chacha(); #endif #ifndef NO_DES3 bench_des(); #endif printf("\n"); #ifndef NO_MD5 bench_md5(); #endif #ifdef HAVE_POLY1305 bench_poly1305(); #endif #ifndef NO_SHA bench_sha(); #endif #ifndef NO_SHA256 bench_sha256(); #endif #ifdef CYASSL_SHA384 bench_sha384(); #endif #ifdef CYASSL_SHA512 bench_sha512(); #endif #ifdef CYASSL_RIPEMD bench_ripemd(); #endif #ifdef HAVE_BLAKE2 bench_blake2(); #endif printf("\n"); #ifndef NO_RSA bench_rsa(); #endif #ifdef HAVE_NTRU bench_ntru(); #endif #ifndef NO_DH bench_dh(); #endif #if defined(CYASSL_KEY_GEN) && !defined(NO_RSA) bench_rsaKeyGen(); #endif #ifdef HAVE_NTRU bench_ntruKeyGen(); #endif #ifdef HAVE_ECC bench_eccKeyGen(); bench_eccKeyAgree(); #if defined(FP_ECC) ecc_fp_free(); #endif #endif #ifdef HAVE_ECC25519 bench_ecc25519KeyGen(); bench_ecc25519KeyAgree(); #endif return 0; }
int main(int argc, char** argv) { func_args server_args; tcp_ready ready; THREAD_TYPE serverThread; #ifdef HAVE_CAVIUM int ret = OpenNitroxDevice(CAVIUM_DIRECT, CAVIUM_DEV_ID); if (ret != 0) err_sys("Cavium OpenNitroxDevice failed"); #endif /* HAVE_CAVIUM */ StartTCP(); server_args.argc = argc; server_args.argv = argv; CyaSSL_Init(); #if defined(DEBUG_CYASSL) && !defined(HAVE_VALGRIND) CyaSSL_Debugging_ON(); #endif if (CurrentDir("testsuite") || CurrentDir("_build")) ChangeDirBack(1); else if (CurrentDir("Debug") || CurrentDir("Release")) ChangeDirBack(3); /* Xcode->Preferences->Locations->Locations*/ /* Derived Data Advanced -> Custom */ /* Relative to Workspace, Build/Products */ /* Debug or Release */ server_args.signal = &ready; InitTcpReady(&ready); /* CTaoCrypt test */ ctaocrypt_test(&server_args); if (server_args.return_code != 0) return server_args.return_code; /* Simple CyaSSL client server test */ simple_test(&server_args); if (server_args.return_code != 0) return server_args.return_code; /* Echo input yaSSL client server test */ start_thread(echoserver_test, &server_args, &serverThread); wait_tcp_ready(&server_args); { func_args echo_args; char* myArgv[NUMARGS]; char argc0[32]; char argc1[32]; char argc2[32]; myArgv[0] = argc0; myArgv[1] = argc1; myArgv[2] = argc2; echo_args.argc = NUMARGS; echo_args.argv = myArgv; strcpy(echo_args.argv[0], "echoclient"); strcpy(echo_args.argv[1], "input"); strcpy(echo_args.argv[2], outputName); remove(outputName); /* Share the signal, it has the new port number in it. */ echo_args.signal = server_args.signal; /* make sure OK */ echoclient_test(&echo_args); if (echo_args.return_code != 0) return echo_args.return_code; #ifdef CYASSL_DTLS wait_tcp_ready(&server_args); #endif /* send quit to echoserver */ echo_args.argc = 2; strcpy(echo_args.argv[1], "quit"); echoclient_test(&echo_args); if (echo_args.return_code != 0) return echo_args.return_code; join_thread(serverThread); if (server_args.return_code != 0) return server_args.return_code; } /* validate output equals input */ { byte input[SHA256_DIGEST_SIZE]; byte output[SHA256_DIGEST_SIZE]; file_test("input", input); file_test(outputName, output); if (memcmp(input, output, sizeof(input)) != 0) return EXIT_FAILURE; } CyaSSL_Cleanup(); FreeTcpReady(&ready); #ifdef HAVE_CAVIUM CspShutdown(CAVIUM_DEV_ID); #endif printf("\nAll tests passed!\n"); return EXIT_SUCCESS; }