From 0c43123a018519489072d27025f7d62ef5f56051 Mon Sep 17 00:00:00 2001 From: Ludovic FLAMENT Date: Fri, 24 Jun 2016 10:54:58 +0200 Subject: [PATCH] Fix BIO based on review --- src/internal.c | 5 +- src/ssl.c | 25 ++- src/tls.c | 10 +- wolfcrypt/src/bio.c | 156 +++++++++--------- wolfcrypt/test/test.c | 255 +++++++++++++++-------------- wolfssl/openssl/evp.h | 6 +- wolfssl/openssl/hmac.h | 4 +- wolfssl/wolfcrypt/bio.h | 3 + wolfssl/wolfcrypt/compat-wolfssl.h | 2 +- 9 files changed, 254 insertions(+), 212 deletions(-) diff --git a/src/internal.c b/src/internal.c index 516447ce1..b91dd2a7a 100755 --- a/src/internal.c +++ b/src/internal.c @@ -3760,7 +3760,7 @@ static int DupBufferStatic(bufferStatic *buf, bufferStatic *obuf, XMEMCPY(buf->staticBuffer, obuf->staticBuffer, sizeof(obuf->staticBuffer)); if (buf->dynamicFlag) { - buf->buffer = XMALLOC(buf->bufferSize, heap, type); + buf->buffer = (byte *)XMALLOC(buf->bufferSize, heap, type); if (buf->buffer == NULL) return MEMORY_E; @@ -3782,7 +3782,8 @@ static int DupBuffer(buffer *buf, buffer *obuf, void *heap) buf->length = obuf->length; if (obuf->buffer != NULL && obuf->length) { - buf->buffer = XMALLOC(buf->length, heap, DYNAMIC_TYPE_TMP_BUFFER); + buf->buffer = (byte *)XMALLOC(buf->length, + heap, DYNAMIC_TYPE_TMP_BUFFER); if (buf->buffer == NULL) return MEMORY_E; diff --git a/src/ssl.c b/src/ssl.c index 98a2a623e..d5269e99e 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -7786,9 +7786,30 @@ int DupSession(WOLFSSL* ssl, WOLFSSL* ossl) sizeof(ossl->session.serverID)); #endif #ifdef HAVE_SESSION_TICKET + ssl->session.isDynamic = ossl->session.isDynamic; ssl->session.ticketLen = ossl->session.ticketLen; - XMEMCPY(ssl->session.ticket, ossl->session.ticket, - sizeof(ossl->session.ticket)); + + if (ossl->session.isDynamic) { + if (ssl->session.ticket != NULL) + XFREE(ssl->session.ticket, ssl->heap, DYNAMIC_TYPE_SESSION_TICK); + ssl->session.ticket = (byte*)XMALLOC(ossl->session.ticketLen, ssl->heap, + DYNAMIC_TYPE_SESSION_TICK); + if (ssl->session.ticket == NULL) + return SSL_FAILURE; + + XMEMCPY(ssl->session.ticket, ossl->session.ticket, + ossl->session.ticketLen); + } + else { + if (ossl->session.ticketLen > SESSION_TICKET_LEN) { + /* size of static ticket is not large enough, should be dynamic!!! + * do not try copy */ + return SSL_FAILURE; + } + XMEMCPY(ssl->session.staticTicket, ossl->session.staticTicket, + sizeof(ossl->session.staticTicket)); + ssl->session.ticket = ssl->session.staticTicket; + } #endif #ifdef HAVE_STUNNEL { diff --git a/src/tls.c b/src/tls.c index 2ffb4af58..bfb58832f 100644 --- a/src/tls.c +++ b/src/tls.c @@ -3077,14 +3077,14 @@ int TLSX_UseSecureRenegotiation(TLSX** extensions, void* heap) } -#define SCR_FREE_ALL(data) XFREE(data, NULL, DYNAMIC_TYPE_TLSX) -#define SCR_GET_SIZE TLSX_SecureRenegotiation_GetSize -#define SCR_WRITE TLSX_SecureRenegotiation_Write -#define SCR_PARSE TLSX_SecureRenegotiation_Parse +#define SCR_FREE_ALL(data, heap) XFREE((data), (heap), DYNAMIC_TYPE_TLSX) +#define SCR_GET_SIZE TLSX_SecureRenegotiation_GetSize +#define SCR_WRITE TLSX_SecureRenegotiation_Write +#define SCR_PARSE TLSX_SecureRenegotiation_Parse #else -#define SCR_FREE_ALL(a, heap) +#define SCR_FREE_ALL(a, heap) 0 #define SCR_GET_SIZE(a, b) 0 #define SCR_WRITE(a, b, c) 0 #define SCR_PARSE(a, b, c, d) 0 diff --git a/wolfcrypt/src/bio.c b/wolfcrypt/src/bio.c index 7fe75452b..79458aab2 100644 --- a/wolfcrypt/src/bio.c +++ b/wolfcrypt/src/bio.c @@ -79,7 +79,7 @@ #include static int wc_BioIntToStr(int i, char *str, int strSz){ - char const digit[] = "0123456789"; + const char digit[] = "0123456789"; int shift, count = 0; if (i < 0) @@ -292,7 +292,7 @@ int wc_BioRead(WOLFCRYPT_BIO *bio, void *data, int size) /* callback if set */ if (bio->callback != NULL) { - ret = bio->callback(bio, BIO_CB_READ, data, size, 0, 1); + ret = bio->callback(bio, BIO_CB_READ, (const char *)data, size, 0, 1); if (ret <= 0) { WOLFSSL_ERROR(BIO_CALLBACK_E); WOLFSSL_LEAVE("wc_BioRead", (int)ret); @@ -306,19 +306,19 @@ int wc_BioRead(WOLFCRYPT_BIO *bio, void *data, int size) return -2; } - ret = bio->method->bread(bio, data, size); + ret = bio->method->bread(bio, (char *)data, size); if (ret > 0) bio->num_read += (unsigned long)ret; /* callback if set */ if (bio->callback != NULL) { ret = bio->callback(bio, BIO_CB_READ | BIO_CB_RETURN, - data, size, 0, ret); + (const char *)data, size, 0, ret); if (ret <= 0) { WOLFSSL_ERROR(BIO_CALLBACK_E); } } - + WOLFSSL_LEAVE("wc_BioRead", (int)ret); return (int)ret; @@ -345,7 +345,7 @@ int wc_BioWrite(WOLFCRYPT_BIO *bio, const void *data, int size) /* callback if set */ if (bio->callback != NULL) { - ret = bio->callback(bio, BIO_CB_WRITE, data, size, 0, 1); + ret = bio->callback(bio, BIO_CB_WRITE, (const char *)data, size, 0, 1); if (ret <= 0) { WOLFSSL_ERROR(BIO_CALLBACK_E); WOLFSSL_LEAVE("wc_BioWrite", (int)ret); @@ -359,14 +359,14 @@ int wc_BioWrite(WOLFCRYPT_BIO *bio, const void *data, int size) return -2; } - ret = bio->method->bwrite(bio, data, size); + ret = bio->method->bwrite(bio, (const char *)data, size); if (ret > 0) bio->num_write += (unsigned long)ret; /* callback if set */ if (bio->callback != NULL) { ret = bio->callback(bio, BIO_CB_WRITE | BIO_CB_RETURN, - data, size, 0, ret); + (const char *)data, size, 0, ret); if (ret <= 0) { WOLFSSL_ERROR(BIO_CALLBACK_E); } @@ -490,7 +490,7 @@ long wc_BioCtrl(WOLFCRYPT_BIO *bio, int cmd, long larg, void *parg) /* callback if set */ if (bio->callback != NULL) { - ret = bio->callback(bio, BIO_CB_CTRL, parg, cmd, larg, 1); + ret = bio->callback(bio, BIO_CB_CTRL, (const char *)parg, cmd, larg, 1); if (ret <= 0) { WOLFSSL_ERROR(BIO_CALLBACK_E); WOLFSSL_LEAVE("wc_BioCtrl callback", (int)ret); @@ -503,7 +503,7 @@ long wc_BioCtrl(WOLFCRYPT_BIO *bio, int cmd, long larg, void *parg) /* callback if set */ if (bio->callback != NULL) { ret = bio->callback(bio, BIO_CB_CTRL | BIO_CB_RETURN, - parg, cmd, larg, ret); + (const char *)parg, cmd, larg, ret); if (ret <= 0) { WOLFSSL_ERROR(BIO_CALLBACK_E); } @@ -535,7 +535,7 @@ long wc_BioCallbackCtrl(WOLFCRYPT_BIO *bio, int cmd, /* callback if set */ if (bio->callback != NULL) { - ret = bio->callback(bio, BIO_CB_CTRL, (void *)&fp, cmd, 0, 1); + ret = bio->callback(bio, BIO_CB_CTRL, (const char *)&fp, cmd, 0, 1); if (ret <= 0) { WOLFSSL_ERROR(BIO_CALLBACK_E); WOLFSSL_LEAVE("wc_BioCallbackCtrl", (int)ret); @@ -548,7 +548,7 @@ long wc_BioCallbackCtrl(WOLFCRYPT_BIO *bio, int cmd, /* callback if set */ if (bio->callback != NULL) { ret = bio->callback(bio, BIO_CB_CTRL | BIO_CB_RETURN, - (void *)&fp, cmd, 0, ret); + (const char *)&fp, cmd, 0, ret); if (ret <= 0) { WOLFSSL_ERROR(BIO_CALLBACK_E); } @@ -1137,7 +1137,7 @@ static int wc_BioB64_read(WOLFCRYPT_BIO *bio, char *data, int size) else ctx->start = 0; - /* +1 => skeep \n */ + /* +1 => skip \n */ idx = (ctx->workNl + 1); ctx->dataLen += num; @@ -1491,12 +1491,12 @@ static long wc_BioB64_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) case BIO_CTRL_SET: ret = wc_BioCtrl(bio->next_bio, cmd, num, ptr); break; - + default: ret = wc_BioCtrl(bio->next_bio, cmd, num, ptr); break; } - + WOLFSSL_LEAVE("wc_BioB64_ctrl", (int)ret); return ret; } @@ -1508,21 +1508,21 @@ static long wc_BioB64_callback_ctrl(WOLFCRYPT_BIO *bio, WOLFSSL_ERROR(BAD_FUNC_ARG); return 0; } - + WOLFSSL_ENTER("wc_BioB64_callback_ctrl"); - + return wc_BioCallbackCtrl(bio->next_bio, cmd, fp); } static int wc_BioB64_puts(WOLFCRYPT_BIO *bio, const char *str) { WOLFSSL_ENTER("wc_BioB64_puts"); - + if (bio == NULL || str == NULL) { WOLFSSL_ERROR(BAD_FUNC_ARG); return 0; } - + return wc_BioB64_write(bio, str, (int)XSTRLEN(str)); } @@ -1885,7 +1885,8 @@ static long wc_BioBuffer_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) case BIO_C_SET_BUFF_READ_DATA: if (num > ctx->inSz) { - ctx->in = XREALLOC(ctx->in, num, 0, DYNAMIC_TYPE_OPENSSL); + ctx->in = (char *)XREALLOC(ctx->in, num, + 0, DYNAMIC_TYPE_OPENSSL); if (ctx->in == NULL) { WOLFSSL_ERROR(MEMORY_E); return 0; @@ -1914,7 +1915,8 @@ static long wc_BioBuffer_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) } if ((ibs > WOLFSSL_F_BUFFER_SIZE_DEFAULT) && (ibs != ctx->inSz)) { - ctx->in = XREALLOC(ctx->in, num, 0, DYNAMIC_TYPE_OPENSSL); + ctx->in = (char *)XREALLOC(ctx->in, num, + 0, DYNAMIC_TYPE_OPENSSL); if (ctx->in == NULL) { WOLFSSL_ERROR(MEMORY_E); return 0; @@ -1926,7 +1928,8 @@ static long wc_BioBuffer_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) } if ((obs > WOLFSSL_F_BUFFER_SIZE_DEFAULT) && (obs != ctx->outSz)) { - ctx->out = XREALLOC(ctx->out, num, 0, DYNAMIC_TYPE_OPENSSL); + ctx->out = (char *)XREALLOC(ctx->out, num, + 0, DYNAMIC_TYPE_OPENSSL); if (ctx->out == NULL) { WOLFSSL_ERROR(MEMORY_E); return 0; @@ -2066,7 +2069,7 @@ static int wc_BioBuffer_puts(WOLFCRYPT_BIO *bio, const char *str) WOLFSSL_ERROR(BAD_FUNC_ARG); return 0; } - + return wc_BioBuffer_write(bio, str, (int)XSTRLEN(str)); } @@ -2473,12 +2476,12 @@ static long wc_BioCipher_ctrl(WOLFCRYPT_BIO *bio, int cmd, dbio->init = 1; } break; - + default: ret = wc_BioCtrl(bio->next_bio, cmd, num, ptr); break; } - + WOLFSSL_LEAVE("wc_BioCipher_ctrl", (int)ret); return ret; } @@ -2744,12 +2747,12 @@ static int wc_BioDigest_gets(WOLFCRYPT_BIO *bio, char *buf, int size) WOLFSSL_ERROR(BAD_FUNC_ARG); return 0; } - + if (wc_EVP_DigestFinal(ctx, (byte *)buf, &dgstLen) != 1) { WOLFSSL_ERROR(BIO_DGST_FINAL_E); return -1; } - + return dgstLen; } @@ -2898,7 +2901,7 @@ int wc_BioSockError(int sock) * choke the compiler: if you do have a cast then you can either go for * (char *) or (void *). */ - i = getsockopt(sock, SOL_SOCKET, SO_ERROR, (void *)&j, (void *)&size); + i = getsockopt(sock, SOL_SOCKET, SO_ERROR, (void *)&j, (socklen_t *)&size); if (i < 0) return 1; @@ -2961,7 +2964,7 @@ int wc_BioGetAcceptSocket(char *host, int bind_mode) if (wc_BioSockInit() != 1) return WOLFSSL_SOCKET_INVALID; - str = XMALLOC(strlen(host)+1, 0, DYNAMIC_TYPE_TMP_BUFFER); + str = (char *)XMALLOC(strlen(host)+1, 0, DYNAMIC_TYPE_TMP_BUFFER); if (str == NULL) return WOLFSSL_SOCKET_INVALID; @@ -3120,7 +3123,7 @@ int wc_BioAccept(int sock, char **addr) sa.len.i = sizeof(sa.from); XMEMSET(&sa.from, 0, sizeof(sa.from)); - dsock = (int)accept(sock, &sa.from.sa, (void *)&sa.len); + dsock = (int)accept(sock, &sa.from.sa, (socklen_t *)&sa.len); if (sizeof(sa.len.i) != sizeof(sa.len.s) && !sa.len.i) { if (sa.len.s > sizeof(sa.from)) { WOLFSSL_ERROR(MEMORY_E); @@ -3142,7 +3145,7 @@ int wc_BioAccept(int sock, char **addr) goto end; if (*addr == NULL) { - *addr = XMALLOC(24, 0, DYNAMIC_TYPE_OPENSSL); + *addr = (char *)XMALLOC(24, 0, DYNAMIC_TYPE_OPENSSL); if (*addr == NULL) { WOLFSSL_ERROR(MEMORY_E); goto end; @@ -3624,7 +3627,7 @@ static long wc_BioAccept_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) bio->init = 1; if (baccept->param_addr != NULL) XFREE(baccept->param_addr, 0, DYNAMIC_TYPE_OPENSSL); - baccept->param_addr = strdup(ptr); + baccept->param_addr = strdup((const char *)ptr); } else if (num == 1) { baccept->accept_nbio = (ptr != NULL); @@ -3717,26 +3720,26 @@ static int wc_BioAccept_puts(WOLFCRYPT_BIO *bio, const char *str) WOLFSSL_ERROR(BAD_FUNC_ARG); return 0; } - + return wc_BioAccept_write(bio, str, (int)XSTRLEN(str)); } WOLFCRYPT_BIO *wc_BioNewAccept(const char *str) { WOLFCRYPT_BIO *bio; - + if (str == NULL) { WOLFSSL_ERROR(BAD_FUNC_ARG); return 0; } - + bio = wc_BioNew(wc_Bio_s_accept()); if (bio == NULL) return NULL; - + if (wc_BioSetAcceptPort(bio, str)) return bio; - + wc_BioFree(bio); return NULL; } @@ -3829,8 +3832,8 @@ static int wc_BioConn_state(WOLFCRYPT_BIO *bio, WOLFCRYPT_BIO_CONNECT *conn) if (conn->pPort != NULL) XFREE(conn->pPort, 0, DYNAMIC_TYPE_OPENSSL); - conn->pPort = XMALLOC(XSTRLEN(p)+1, - 0, DYNAMIC_TYPE_OPENSSL); + conn->pPort = (char *)XMALLOC(XSTRLEN(p)+1, + 0, DYNAMIC_TYPE_OPENSSL); if (conn->pPort == NULL) { WOLFSSL_ERROR(MEMORY_E); goto exit_loop; @@ -4185,8 +4188,8 @@ static long wc_BioConn_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) if (num == 0) { if (conn->pHostname != NULL) XFREE(conn->pHostname, 0, DYNAMIC_TYPE_OPENSSL); - conn->pHostname = XMALLOC(XSTRLEN((char *)ptr)+1, - 0, DYNAMIC_TYPE_OPENSSL); + conn->pHostname = (char *)XMALLOC(XSTRLEN((char *)ptr)+1, + 0, DYNAMIC_TYPE_OPENSSL); if (conn->pHostname == NULL) { WOLFSSL_ERROR(MEMORY_E); ret = -1; @@ -4198,8 +4201,8 @@ static long wc_BioConn_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) if (conn->pPort != NULL) XFREE(conn->pPort, 0, DYNAMIC_TYPE_OPENSSL); - conn->pPort = XMALLOC(XSTRLEN((char *)ptr)+1, - 0, DYNAMIC_TYPE_OPENSSL); + conn->pPort = (char *)XMALLOC(XSTRLEN((char *)ptr)+1, + 0, DYNAMIC_TYPE_OPENSSL); if (conn->pPort == NULL) { WOLFSSL_ERROR(MEMORY_E); ret = -1; @@ -4209,7 +4212,7 @@ static long wc_BioConn_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) } else if (num == 2) { char buf[16]; - unsigned char *p = ptr; + unsigned char *p = (unsigned char *)ptr; int idx, res; res = wc_BioIntToStr(p[0], buf, sizeof(buf)); @@ -4246,8 +4249,8 @@ static long wc_BioConn_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) if (conn->pHostname != NULL) XFREE(conn->pHostname, 0, DYNAMIC_TYPE_OPENSSL); - conn->pHostname = XMALLOC(XSTRLEN(buf)+1, - 0, DYNAMIC_TYPE_OPENSSL); + conn->pHostname = (char *)XMALLOC(XSTRLEN(buf)+1, + 0, DYNAMIC_TYPE_OPENSSL); if (conn->pHostname == NULL) { WOLFSSL_ERROR(MEMORY_E); ret = -1; @@ -4270,8 +4273,8 @@ static long wc_BioConn_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) if (conn->pPort != NULL) XFREE(conn->pPort, 0, DYNAMIC_TYPE_OPENSSL); - conn->pPort = XMALLOC(XSTRLEN(buf)+1, - 0, DYNAMIC_TYPE_OPENSSL); + conn->pPort = (char *)XMALLOC(XSTRLEN(buf)+1, + 0, DYNAMIC_TYPE_OPENSSL); if (conn->pPort == NULL) { WOLFSSL_ERROR(MEMORY_E); ret = -1; @@ -4370,45 +4373,45 @@ static long wc_BioConn_callback_ctrl(WOLFCRYPT_BIO *bio, case BIO_CTRL_SET_CALLBACK: conn->info_callback = (int (*)(const WOLFCRYPT_BIO *, int, int))fp; break; - + default: ret = 0; break; } - + return ret; } static int wc_BioConn_puts(WOLFCRYPT_BIO *bio, const char *str) { WOLFSSL_ENTER("wc_BioConn_puts"); - + if (bio == NULL || str == NULL) { WOLFSSL_ERROR(BAD_FUNC_ARG); return -1; } - + return wc_BioConn_write(bio, str, (int)XSTRLEN(str)); } WOLFCRYPT_BIO *wc_BioNewConnect(const char *str) { WOLFCRYPT_BIO *bio; - + WOLFSSL_ENTER("wc_BioNewConnect"); - + if (str == NULL) { WOLFSSL_ERROR(BAD_FUNC_ARG); return NULL; } - + bio = wc_BioNew(wc_Bio_s_connect()); if (bio == NULL) return NULL; - + if (wc_BioSetConnHostname(bio, str)) return bio; - + wc_BioFree(bio); return NULL; } @@ -4612,7 +4615,7 @@ static void wc_BioDgram_adjust_rcv_timeout(WOLFCRYPT_BIO *bio) #else sz.i = sizeof(dgram->socket_timeout); if (getsockopt(bio->num, SOL_SOCKET, SO_RCVTIMEO, - &(dgram->socket_timeout), (void *)&sz) >= 0) { + &(dgram->socket_timeout), (socklen_t *)&sz) >= 0) { if (sizeof(sz.s) != sizeof(sz.i) && sz.i == 0) if (sz.s > sizeof(dgram->socket_timeout)) return ; @@ -4725,7 +4728,8 @@ static int wc_BioDgram_read(WOLFCRYPT_BIO *bio, char *data, int size) wc_BioDgram_adjust_rcv_timeout(bio); - ret = (int)recvfrom(bio->num, data, size, 0, &sa.peer.sa, (void *)&sa.len); + ret = (int)recvfrom(bio->num, data, size, 0, + &sa.peer.sa, (socklen_t *)&sa.len); if (sizeof(sa.len.i) != sizeof(sa.len.s) && sa.len.i == 0) { if (sa.len.s > sizeof(sa.peer)) return 0; @@ -5038,7 +5042,7 @@ static long wc_BioDgram_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) sz.i = sizeof(timeout); if (getsockopt(bio->num, SOL_SOCKET, SO_RCVTIMEO, - (void *)&timeout, &sz.i) < 0) + (void *)&timeout, (socklen_t *)&sz.i) < 0) ret = -1; else { tv->tv_sec = timeout / 1000; @@ -5048,7 +5052,7 @@ static long wc_BioDgram_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) #else sz.i = sizeof(struct timeval); if (getsockopt(bio->num, SOL_SOCKET, SO_RCVTIMEO, - ptr, (void *)&sz) < 0) + ptr, (socklen_t *)&sz) < 0) ret = -1; else if (sizeof(sz.s) != sizeof(sz.i) && sz.i == 0) { if (sz.s > sizeof(struct timeval)) @@ -5102,7 +5106,7 @@ static long wc_BioDgram_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) #else sz.i = sizeof(struct timeval); if (getsockopt(bio->num, SOL_SOCKET, SO_SNDTIMEO, - ptr, (void *)&sz) < 0) + ptr, (socklen_t *)&sz) < 0) ret = -1; else if (sizeof(sz.s) != sizeof(sz.i) && sz.i == 0) { if (sz.s > sizeof(struct timeval)) @@ -5144,7 +5148,7 @@ static long wc_BioDgram_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) ret = 0; break; } - + return ret; } @@ -5154,7 +5158,7 @@ static int wc_BioDgram_puts(WOLFCRYPT_BIO *bio, const char *str) WOLFSSL_ERROR(BAD_FUNC_ARG); return -1; } - + return wc_BioDgram_write(bio, str, (int)XSTRLEN(str)); } @@ -5381,7 +5385,7 @@ static int wc_BioFile_free(WOLFCRYPT_BIO *bio) return 1; if (bio->ptr != NULL) { - XFCLOSE(bio->ptr); + XFCLOSE((FILE *)bio->ptr); bio->ptr = NULL; } bio->init = 0; @@ -5499,7 +5503,7 @@ static long wc_BioFile_ctrl(WOLFCRYPT_BIO *bio, int cmd, long num, void *ptr) else XSTRNCAT(buf, "b", sizeof(buf) - strlen(buf) - 1); - bio->ptr = XFOPEN(ptr, buf); + bio->ptr = XFOPEN((const char *)ptr, buf); if (bio->ptr == NULL) { WOLFSSL_ERROR(BIO_FILE_OPEN_E); ret = 0; @@ -5571,7 +5575,7 @@ static int wc_BioFile_puts(WOLFCRYPT_BIO *bio, const char *str) WOLFSSL_ERROR(BAD_FUNC_ARG); return -1; } - + return wc_BioFile_write(bio, str, (int)XSTRLEN(str)); } @@ -5636,10 +5640,10 @@ static int wolfCrypt_BufMem_grow(WOLFCRYPT_BUF_MEM *buf, size_t len) } if (buf->data == NULL) - buf->data = XMALLOC(len, 0, DYNAMIC_TYPE_OPENSSL); + buf->data = (byte *)XMALLOC(len, 0, DYNAMIC_TYPE_OPENSSL); else - buf->data = XREALLOC(buf->data, buf->length+len, - 0, DYNAMIC_TYPE_OPENSSL); + buf->data = (byte *)XREALLOC(buf->data, buf->length+len, + 0, DYNAMIC_TYPE_OPENSSL); if (buf->data == NULL) { WOLFSSL_ERROR(MEMORY_E); return -1; @@ -5756,7 +5760,7 @@ static int wc_BioMem_free(WOLFCRYPT_BIO *bio) if (bio->flags & BIO_FLAGS_MEM_RDONLY) ((WOLFCRYPT_BUF_MEM *)bio->ptr)->data = NULL; - wolfCrypt_BufMem_free(bio->ptr); + wolfCrypt_BufMem_free((WOLFCRYPT_BUF_MEM *)bio->ptr); bio->ptr = NULL; } @@ -5944,11 +5948,11 @@ static int wc_BioMem_gets(WOLFCRYPT_BIO *bio, char *buf, int size) break; } } - + i = wc_BioMem_read(bio, buf, i); if (i > 0) buf[i] = '\0'; - + return i; } @@ -5958,7 +5962,7 @@ static int wc_BioMem_puts(WOLFCRYPT_BIO *bio, const char *str) WOLFSSL_ERROR(BAD_FUNC_ARG); return -1; } - + return wc_BioMem_write(bio, str, (int)XSTRLEN(str)); } @@ -6071,7 +6075,7 @@ static int wc_BioNull_puts(WOLFCRYPT_BIO *bio, const char *str) if (str == NULL) return 0; - + return (int)XSTRLEN(str); } @@ -6339,7 +6343,7 @@ int wc_BioSockShouldRetry(int i) #endif return wc_BioSockNonFatalError(ret); } - + return 0; } diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index 9b5850011..2be45c833 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -817,7 +817,7 @@ int md2_test() wc_Md2Update(&md2, (byte*)test_md2[i].input, (word32)test_md2[i].inLen); wc_Md2Final(&md2, hash); - if (memcmp(hash, test_md2[i].output, MD2_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_md2[i].output, MD2_DIGEST_SIZE) != 0) return -155 - i; } @@ -879,7 +879,7 @@ int md5_test(void) wc_Md5Update(&md5, (byte*)test_md5[i].input, (word32)test_md5[i].inLen); wc_Md5Final(&md5, hash); - if (memcmp(hash, test_md5[i].output, MD5_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_md5[i].output, MD5_DIGEST_SIZE) != 0) return -5 - i; } @@ -957,7 +957,7 @@ int md4_test(void) wc_Md4Update(&md4, (byte*)test_md4[i].input, (word32)test_md4[i].inLen); wc_Md4Final(&md4, hash); - if (memcmp(hash, test_md4[i].output, MD4_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_md4[i].output, MD4_DIGEST_SIZE) != 0) return -205 - i; } @@ -1018,7 +1018,7 @@ int sha_test(void) wc_ShaUpdate(&sha, (byte*)test_sha[i].input, (word32)test_sha[i].inLen); wc_ShaFinal(&sha, hash); - if (memcmp(hash, test_sha[i].output, SHA_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_sha[i].output, SHA_DIGEST_SIZE) != 0) return -10 - i; } @@ -1074,7 +1074,7 @@ int ripemd_test(void) (word32)test_ripemd[i].inLen); wc_RipeMdFinal(&ripemd, hash); - if (memcmp(hash, test_ripemd[i].output, RIPEMD_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_ripemd[i].output, RIPEMD_DIGEST_SIZE) != 0) return -10 - i; } @@ -1147,7 +1147,7 @@ int blake2b_test(void) if (ret != 0) return -4004; - if (memcmp(digest, blake2b_vec[i], 64) != 0) { + if (XMEMCMP(digest, blake2b_vec[i], 64) != 0) { return -300 - i; } } @@ -1197,7 +1197,7 @@ int sha256_test(void) if (ret != 0) return -4007; - if (memcmp(hash, test_sha[i].output, SHA256_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_sha[i].output, SHA256_DIGEST_SIZE) != 0) return -10 - i; } @@ -1252,7 +1252,7 @@ int sha512_test(void) if (ret != 0) return -4011; - if (memcmp(hash, test_sha[i].output, SHA512_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_sha[i].output, SHA512_DIGEST_SIZE) != 0) return -10 - i; } @@ -1305,7 +1305,7 @@ int sha384_test(void) if (ret != 0) return -4014; - if (memcmp(hash, test_sha[i].output, SHA384_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_sha[i].output, SHA384_DIGEST_SIZE) != 0) return -10 - i; } @@ -1378,7 +1378,7 @@ int hmac_md5_test(void) if (ret != 0) return -4017; - if (memcmp(hash, test_hmac[i].output, MD5_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_hmac[i].output, MD5_DIGEST_SIZE) != 0) return -20 - i; #ifdef HAVE_CAVIUM wc_HmacFreeCavium(&hmac); @@ -1455,7 +1455,7 @@ int hmac_sha_test(void) if (ret != 0) return -4020; - if (memcmp(hash, test_hmac[i].output, SHA_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_hmac[i].output, SHA_DIGEST_SIZE) != 0) return -20 - i; #ifdef HAVE_CAVIUM wc_HmacFreeCavium(&hmac); @@ -1536,7 +1536,7 @@ int hmac_sha256_test(void) if (ret != 0) return -4023; - if (memcmp(hash, test_hmac[i].output, SHA256_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_hmac[i].output, SHA256_DIGEST_SIZE) != 0) return -20 - i; #ifdef HAVE_CAVIUM wc_HmacFreeCavium(&hmac); @@ -1618,7 +1618,7 @@ int hmac_blake2b_test(void) if (ret != 0) return -4026; - if (memcmp(hash, test_hmac[i].output, BLAKE2B_256) != 0) + if (XMEMCMP(hash, test_hmac[i].output, BLAKE2B_256) != 0) return -20 - i; #ifdef HAVE_CAVIUM wc_HmacFreeCavium(&hmac); @@ -1698,7 +1698,7 @@ int hmac_sha384_test(void) if (ret != 0) return -4029; - if (memcmp(hash, test_hmac[i].output, SHA384_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_hmac[i].output, SHA384_DIGEST_SIZE) != 0) return -20 - i; } @@ -1778,7 +1778,7 @@ int hmac_sha512_test(void) if (ret != 0) return -4032; - if (memcmp(hash, test_hmac[i].output, SHA512_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, test_hmac[i].output, SHA512_DIGEST_SIZE) != 0) return -20 - i; } @@ -1852,10 +1852,10 @@ int arc4_test(void) (word32)test_arc4[i].outLen); wc_Arc4Process(&dec, plain, cipher, (word32)test_arc4[i].outLen); - if (memcmp(plain, test_arc4[i].input, test_arc4[i].outLen)) + if (XMEMCMP(plain, test_arc4[i].input, test_arc4[i].outLen)) return -20 - i; - if (memcmp(cipher, test_arc4[i].output, test_arc4[i].outLen)) + if (XMEMCMP(cipher, test_arc4[i].output, test_arc4[i].outLen)) return -20 - 5 - i; #ifdef HAVE_CAVIUM @@ -1927,14 +1927,14 @@ int hc128_test(void) HC128 dec; /* align keys/ivs in plain/cipher buffers */ - memcpy(plain, keys[i], 16); - memcpy(cipher, ivs[i], 16); + XMEMCPY(plain, keys[i], 16); + XMEMCPY(cipher, ivs[i], 16); wc_Hc128_SetKey(&enc, plain, cipher); wc_Hc128_SetKey(&dec, plain, cipher); /* align input */ - memcpy(plain, test_hc128[i].input, test_hc128[i].outLen); + XMEMCPY(plain, test_hc128[i].input, test_hc128[i].outLen); if (wc_Hc128_Process(&enc, cipher, plain, (word32)test_hc128[i].outLen) != 0) { return -110; @@ -1944,10 +1944,10 @@ int hc128_test(void) return -115; } - if (memcmp(plain, test_hc128[i].input, test_hc128[i].outLen)) + if (XMEMCMP(plain, test_hc128[i].input, test_hc128[i].outLen)) return -120 - i; - if (memcmp(cipher, test_hc128[i].output, test_hc128[i].outLen)) + if (XMEMCMP(cipher, test_hc128[i].output, test_hc128[i].outLen)) return -120 - 5 - i; } @@ -2006,9 +2006,9 @@ int rabbit_test(void) byte* iv; /* align keys/ivs in plain/cipher buffers */ - memcpy(plain, keys[i], 16); + XMEMCPY(plain, keys[i], 16); if (ivs[i]) { - memcpy(cipher, ivs[i], 8); + XMEMCPY(cipher, ivs[i], 8); iv = cipher; } else iv = NULL; @@ -2016,14 +2016,14 @@ int rabbit_test(void) wc_RabbitSetKey(&dec, plain, iv); /* align input */ - memcpy(plain, test_rabbit[i].input, test_rabbit[i].outLen); + XMEMCPY(plain, test_rabbit[i].input, test_rabbit[i].outLen); wc_RabbitProcess(&enc, cipher, plain, (word32)test_rabbit[i].outLen); wc_RabbitProcess(&dec, plain, cipher, (word32)test_rabbit[i].outLen); - if (memcmp(plain, test_rabbit[i].input, test_rabbit[i].outLen)) + if (XMEMCMP(plain, test_rabbit[i].input, test_rabbit[i].outLen)) return -130 - i; - if (memcmp(cipher, test_rabbit[i].output, test_rabbit[i].outLen)) + if (XMEMCMP(cipher, test_rabbit[i].output, test_rabbit[i].outLen)) return -130 - 5 - i; } @@ -2286,7 +2286,7 @@ int poly1305_test(void) if (ret != 0) return -60; - if (memcmp(tag, tests[i], sizeof(tag))) + if (XMEMCMP(tag, tests[i], sizeof(tag))) return -61; } @@ -2301,7 +2301,7 @@ int poly1305_test(void) if (ret != 0) return -63; - if (memcmp(tag, correct4, sizeof(tag))) + if (XMEMCMP(tag, correct4, sizeof(tag))) return -64; /* Check fail of TLS MAC function if altering additional data */ @@ -2312,7 +2312,7 @@ int poly1305_test(void) if (ret != 0) return -65; - if (memcmp(tag, correct4, sizeof(tag)) == 0) + if (XMEMCMP(tag, correct4, sizeof(tag)) == 0) return -66; @@ -2624,10 +2624,10 @@ int des_test(void) return -32; wc_Des_CbcDecrypt(&dec, plain, cipher, sizeof(cipher)); - if (memcmp(plain, vector, sizeof(plain))) + if (XMEMCMP(plain, vector, sizeof(plain))) return -33; - if (memcmp(cipher, verify, sizeof(cipher))) + if (XMEMCMP(cipher, verify, sizeof(cipher))) return -34; return 0; @@ -2693,10 +2693,10 @@ int des3_test(void) if (ret != 0) return -34; - if (memcmp(plain, vector, sizeof(plain))) + if (XMEMCMP(plain, vector, sizeof(plain))) return -35; - if (memcmp(cipher, verify3, sizeof(cipher))) + if (XMEMCMP(cipher, verify3, sizeof(cipher))) return -36; #ifdef HAVE_CAVIUM @@ -2757,10 +2757,10 @@ int aes_test(void) if (ret != 0) return -1006; - if (memcmp(plain, msg, AES_BLOCK_SIZE)) + if (XMEMCMP(plain, msg, AES_BLOCK_SIZE)) return -60; #endif /* HAVE_AES_DECRYPT */ - if (memcmp(cipher, verify, AES_BLOCK_SIZE)) + if (XMEMCMP(cipher, verify, AES_BLOCK_SIZE)) return -61; #if defined(WOLFSSL_AESNI) && defined(HAVE_AES_DECRYPT) @@ -2828,8 +2828,8 @@ int aes_test(void) msgSz <= sizeof(bigMsg); msgSz += AES_BLOCK_SIZE) { - memset(bigCipher, 0, sizeof(bigCipher)); - memset(bigPlain, 0, sizeof(bigPlain)); + XMEMSET(bigCipher, 0, sizeof(bigCipher)); + XMEMSET(bigPlain, 0, sizeof(bigPlain)); ret = wc_AesSetKey(&enc, bigKey, keySz, iv, AES_ENCRYPTION); if (ret != 0) return -1030; @@ -2844,7 +2844,7 @@ int aes_test(void) if (ret != 0) return -1033; - if (memcmp(bigPlain, bigMsg, msgSz)) + if (XMEMCMP(bigPlain, bigMsg, msgSz)) return -1034; } } @@ -2909,10 +2909,10 @@ int aes_test(void) wc_AesCtrEncrypt(&enc, cipher, ctrPlain, AES_BLOCK_SIZE*4); wc_AesCtrEncrypt(&dec, plain, cipher, AES_BLOCK_SIZE*4); - if (memcmp(plain, ctrPlain, AES_BLOCK_SIZE*4)) + if (XMEMCMP(plain, ctrPlain, AES_BLOCK_SIZE*4)) return -66; - if (memcmp(cipher, ctrCipher, AES_BLOCK_SIZE*4)) + if (XMEMCMP(cipher, ctrCipher, AES_BLOCK_SIZE*4)) return -67; /* let's try with just 9 bytes, non block size test */ @@ -2923,20 +2923,20 @@ int aes_test(void) wc_AesCtrEncrypt(&enc, cipher, ctrPlain, 9); wc_AesCtrEncrypt(&dec, plain, cipher, 9); - if (memcmp(plain, ctrPlain, 9)) + if (XMEMCMP(plain, ctrPlain, 9)) return -68; - if (memcmp(cipher, ctrCipher, 9)) + if (XMEMCMP(cipher, ctrCipher, 9)) return -69; /* and an additional 9 bytes to reuse tmp left buffer */ wc_AesCtrEncrypt(&enc, cipher, ctrPlain, 9); wc_AesCtrEncrypt(&dec, plain, cipher, 9); - if (memcmp(plain, ctrPlain, 9)) + if (XMEMCMP(plain, ctrPlain, 9)) return -70; - if (memcmp(cipher, oddCipher, 9)) + if (XMEMCMP(cipher, oddCipher, 9)) return -71; } #endif /* WOLFSSL_AES_COUNTER */ @@ -3091,45 +3091,45 @@ int aesgcm_test(void) byte resultC[sizeof(p)]; int result; - memset(resultT, 0, sizeof(resultT)); - memset(resultC, 0, sizeof(resultC)); - memset(resultP, 0, sizeof(resultP)); + XMEMSET(resultT, 0, sizeof(resultT)); + XMEMSET(resultC, 0, sizeof(resultC)); + XMEMSET(resultP, 0, sizeof(resultP)); wc_AesGcmSetKey(&enc, k1, sizeof(k1)); /* AES-GCM encrypt and decrypt both use AES encrypt internally */ wc_AesGcmEncrypt(&enc, resultC, p, sizeof(p), iv1, sizeof(iv1), resultT, sizeof(resultT), a, sizeof(a)); - if (memcmp(c1, resultC, sizeof(resultC))) + if (XMEMCMP(c1, resultC, sizeof(resultC))) return -68; - if (memcmp(t1, resultT, sizeof(resultT))) + if (XMEMCMP(t1, resultT, sizeof(resultT))) return -69; result = wc_AesGcmDecrypt(&enc, resultP, resultC, sizeof(resultC), iv1, sizeof(iv1), resultT, sizeof(resultT), a, sizeof(a)); if (result != 0) return -70; - if (memcmp(p, resultP, sizeof(resultP))) + if (XMEMCMP(p, resultP, sizeof(resultP))) return -71; #ifndef HAVE_FIPS - memset(resultT, 0, sizeof(resultT)); - memset(resultC, 0, sizeof(resultC)); - memset(resultP, 0, sizeof(resultP)); + XMEMSET(resultT, 0, sizeof(resultT)); + XMEMSET(resultC, 0, sizeof(resultC)); + XMEMSET(resultP, 0, sizeof(resultP)); wc_AesGcmSetKey(&enc, k2, sizeof(k2)); /* AES-GCM encrypt and decrypt both use AES encrypt internally */ wc_AesGcmEncrypt(&enc, resultC, p, sizeof(p), iv2, sizeof(iv2), resultT, sizeof(resultT), a, sizeof(a)); - if (memcmp(c2, resultC, sizeof(resultC))) + if (XMEMCMP(c2, resultC, sizeof(resultC))) return -230; - if (memcmp(t2, resultT, sizeof(resultT))) + if (XMEMCMP(t2, resultT, sizeof(resultT))) return -231; result = wc_AesGcmDecrypt(&enc, resultP, resultC, sizeof(resultC), iv2, sizeof(iv2), resultT, sizeof(resultT), a, sizeof(a)); if (result != 0) return -232; - if (memcmp(p, resultP, sizeof(resultP))) + if (XMEMCMP(p, resultP, sizeof(resultP))) return -233; #endif /* HAVE_FIPS */ @@ -3204,22 +3204,22 @@ int gmac_test(void) byte tag[16]; - memset(tag, 0, sizeof(tag)); + XMEMSET(tag, 0, sizeof(tag)); wc_GmacSetKey(&gmac, k1, sizeof(k1)); wc_GmacUpdate(&gmac, iv1, sizeof(iv1), a1, sizeof(a1), tag, sizeof(t1)); - if (memcmp(t1, tag, sizeof(t1)) != 0) + if (XMEMCMP(t1, tag, sizeof(t1)) != 0) return -126; - memset(tag, 0, sizeof(tag)); + XMEMSET(tag, 0, sizeof(tag)); wc_GmacSetKey(&gmac, k2, sizeof(k2)); wc_GmacUpdate(&gmac, iv2, sizeof(iv2), a2, sizeof(a2), tag, sizeof(t2)); - if (memcmp(t2, tag, sizeof(t2)) != 0) + if (XMEMCMP(t2, tag, sizeof(t2)) != 0) return -127; - memset(tag, 0, sizeof(tag)); + XMEMSET(tag, 0, sizeof(tag)); wc_GmacSetKey(&gmac, k3, sizeof(k3)); wc_GmacUpdate(&gmac, iv3, sizeof(iv3), a3, sizeof(a3), tag, sizeof(t3)); - if (memcmp(t3, tag, sizeof(t3)) != 0) + if (XMEMCMP(t3, tag, sizeof(t3)) != 0) return -128; return 0; @@ -3276,9 +3276,9 @@ int aesccm_test(void) int result; - memset(t2, 0, sizeof(t2)); - memset(c2, 0, sizeof(c2)); - memset(p2, 0, sizeof(p2)); + XMEMSET(t2, 0, sizeof(t2)); + XMEMSET(c2, 0, sizeof(c2)); + XMEMSET(p2, 0, sizeof(p2)); wc_AesCcmSetKey(&enc, k, sizeof(k)); /* AES-CCM encrypt and decrypt both use AES encrypt internally */ @@ -3286,16 +3286,16 @@ int aesccm_test(void) t2, sizeof(t2), a, sizeof(a)); if (result != 0) return -106; - if (memcmp(c, c2, sizeof(c2))) + if (XMEMCMP(c, c2, sizeof(c2))) return -107; - if (memcmp(t, t2, sizeof(t2))) + if (XMEMCMP(t, t2, sizeof(t2))) return -108; result = wc_AesCcmDecrypt(&enc, p2, c2, sizeof(p2), iv, sizeof(iv), t2, sizeof(t2), a, sizeof(a)); if (result != 0) return -109; - if (memcmp(p, p2, sizeof(p2))) + if (XMEMCMP(p, p2, sizeof(p2))) return -110; /* Test the authentication failure */ @@ -3307,8 +3307,8 @@ int aesccm_test(void) /* Clear c2 to compare against p2. p2 should be set to zero in case of * authentication fail. */ - memset(c2, 0, sizeof(c2)); - if (memcmp(p2, c2, sizeof(p2))) + XMEMSET(c2, 0, sizeof(c2)); + if (XMEMCMP(p2, c2, sizeof(p2))) return -112; return 0; @@ -3467,24 +3467,24 @@ int camellia_test(void) switch (testVectors[i].type) { case CAM_ECB_ENC: wc_CamelliaEncryptDirect(&cam, out, testVectors[i].plaintext); - if (memcmp(out, testVectors[i].ciphertext, CAMELLIA_BLOCK_SIZE)) + if (XMEMCMP(out, testVectors[i].ciphertext, CAMELLIA_BLOCK_SIZE)) return testVectors[i].errorCode; break; case CAM_ECB_DEC: wc_CamelliaDecryptDirect(&cam, out, testVectors[i].ciphertext); - if (memcmp(out, testVectors[i].plaintext, CAMELLIA_BLOCK_SIZE)) + if (XMEMCMP(out, testVectors[i].plaintext, CAMELLIA_BLOCK_SIZE)) return testVectors[i].errorCode; break; case CAM_CBC_ENC: wc_CamelliaCbcEncrypt(&cam, out, testVectors[i].plaintext, CAMELLIA_BLOCK_SIZE); - if (memcmp(out, testVectors[i].ciphertext, CAMELLIA_BLOCK_SIZE)) + if (XMEMCMP(out, testVectors[i].ciphertext, CAMELLIA_BLOCK_SIZE)) return testVectors[i].errorCode; break; case CAM_CBC_DEC: wc_CamelliaCbcDecrypt(&cam, out, testVectors[i].ciphertext, CAMELLIA_BLOCK_SIZE); - if (memcmp(out, testVectors[i].plaintext, CAMELLIA_BLOCK_SIZE)) + if (XMEMCMP(out, testVectors[i].plaintext, CAMELLIA_BLOCK_SIZE)) return testVectors[i].errorCode; break; default: @@ -3584,7 +3584,7 @@ int idea_test(void) for (i = 0; i < IDEA_NB_TESTS; i++) { /* Set encryption key */ - memset(&idea, 0, sizeof(Idea)); + XMEMSET(&idea, 0, sizeof(Idea)); ret = wc_IdeaSetKey(&idea, v_key[i], IDEA_KEY_SIZE, NULL, IDEA_ENCRYPTION); if (ret != 0) { @@ -3600,7 +3600,7 @@ int idea_test(void) } /* Set decryption key */ - memset(&idea, 0, sizeof(Idea)); + XMEMSET(&idea, 0, sizeof(Idea)); ret = wc_IdeaSetKey(&idea, v_key[i], IDEA_KEY_SIZE, NULL, IDEA_DECRYPTION); if (ret != 0) { @@ -3616,7 +3616,7 @@ int idea_test(void) } /* Set encryption key */ - memset(&idea, 0, sizeof(Idea)); + XMEMSET(&idea, 0, sizeof(Idea)); ret = wc_IdeaSetKey(&idea, v_key[i], IDEA_KEY_SIZE, v_key[i], IDEA_ENCRYPTION); if (ret != 0) { @@ -3624,7 +3624,7 @@ int idea_test(void) return -1; } - memset(msg_enc, 0, sizeof(msg_enc)); + XMEMSET(msg_enc, 0, sizeof(msg_enc)); ret = wc_IdeaCbcEncrypt(&idea, msg_enc, (byte *)message, (word32)strlen(message)+1); if (ret != 0) { @@ -3633,7 +3633,7 @@ int idea_test(void) } /* Set decryption key */ - memset(&idea, 0, sizeof(Idea)); + XMEMSET(&idea, 0, sizeof(Idea)); ret = wc_IdeaSetKey(&idea, v_key[i], IDEA_KEY_SIZE, v_key[i], IDEA_DECRYPTION); if (ret != 0) { @@ -3641,7 +3641,7 @@ int idea_test(void) return -1; } - memset(msg_dec, 0, sizeof(msg_dec)); + XMEMSET(msg_dec, 0, sizeof(msg_dec)); ret = wc_IdeaCbcDecrypt(&idea, msg_dec, msg_enc, (word32)strlen(message)+1); if (ret != 0) { @@ -3657,7 +3657,7 @@ int idea_test(void) for (i = 0; i < IDEA_NB_TESTS_EXTRA; i++) { /* Set encryption key */ - memset(&idea, 0, sizeof(Idea)); + XMEMSET(&idea, 0, sizeof(Idea)); ret = wc_IdeaSetKey(&idea, v_key[i], IDEA_KEY_SIZE, NULL, IDEA_ENCRYPTION); if (ret != 0) { @@ -3716,7 +3716,7 @@ int idea_test(void) return -41; /* Set encryption key */ - memset(&idea, 0, sizeof(Idea)); + XMEMSET(&idea, 0, sizeof(Idea)); ret = wc_IdeaSetKey(&idea, key, IDEA_KEY_SIZE, iv, IDEA_ENCRYPTION); if (ret != 0) { printf("wc_IdeaSetKey (enc) failed\n"); @@ -3724,7 +3724,7 @@ int idea_test(void) } /* Data encryption */ - memset(enc, 0, sizeof(enc)); + XMEMSET(enc, 0, sizeof(enc)); ret = wc_IdeaCbcEncrypt(&idea, enc, rnd, sizeof(rnd)); if (ret != 0) { printf("wc_IdeaCbcEncrypt failed\n"); @@ -3732,7 +3732,7 @@ int idea_test(void) } /* Set decryption key */ - memset(&idea, 0, sizeof(Idea)); + XMEMSET(&idea, 0, sizeof(Idea)); ret = wc_IdeaSetKey(&idea, key, IDEA_KEY_SIZE, iv, IDEA_DECRYPTION); if (ret != 0) { printf("wc_IdeaSetKey (enc) failed\n"); @@ -3740,7 +3740,7 @@ int idea_test(void) } /* Data decryption */ - memset(dec, 0, sizeof(dec)); + XMEMSET(dec, 0, sizeof(dec)); ret = wc_IdeaCbcDecrypt(&idea, dec, enc, sizeof(enc)); if (ret != 0) { printf("wc_IdeaCbcDecrypt failed\n"); @@ -4264,7 +4264,7 @@ int rsa_test(void) TEST_XFREE(tmp, HEAP_HINT ,DYNAMIC_TYPE_TMP_BUFFER); return -44; } - if (memcmp(plain, in, inLen)) { + if (XMEMCMP(plain, in, inLen)) { TEST_XFREE(tmp, HEAP_HINT ,DYNAMIC_TYPE_TMP_BUFFER); return -45; } @@ -4273,13 +4273,13 @@ int rsa_test(void) TEST_XFREE(tmp, HEAP_HINT ,DYNAMIC_TYPE_TMP_BUFFER); return -46; } - memset(plain, 0, sizeof(plain)); + XMEMSET(plain, 0, sizeof(plain)); ret = wc_RsaSSL_Verify(out, ret, plain, sizeof(plain), &key); if (ret < 0) { TEST_XFREE(tmp, HEAP_HINT ,DYNAMIC_TYPE_TMP_BUFFER); return -47; } - if (memcmp(plain, in, ret)) { + if (XMEMCMP(plain, in, ret)) { TEST_XFREE(tmp, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); return -48; } @@ -5663,7 +5663,7 @@ int dh_test(void) if (ret != 0) return -55; - if (memcmp(agree, agree2, agreeSz)) + if (XMEMCMP(agree, agree2, agreeSz)) return -56; wc_FreeDhKey(&key); @@ -5992,7 +5992,7 @@ int openssl_test(void) EVP_DigestUpdate(&md_ctx, a.input, (unsigned long)a.inLen); EVP_DigestFinal(&md_ctx, hash, 0); - if (memcmp(hash, a.output, MD5_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, a.output, MD5_DIGEST_SIZE) != 0) return -71; #endif /* NO_MD5 */ @@ -6013,7 +6013,7 @@ int openssl_test(void) EVP_DigestUpdate(&md_ctx, b.input, (unsigned long)b.inLen); EVP_DigestFinal(&md_ctx, hash, 0); - if (memcmp(hash, b.output, SHA_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, b.output, SHA_DIGEST_SIZE) != 0) return -72; #endif /* NO_SHA */ @@ -6032,7 +6032,7 @@ int openssl_test(void) EVP_DigestUpdate(&md_ctx, d.input, (unsigned long)d.inLen); EVP_DigestFinal(&md_ctx, hash, 0); - if (memcmp(hash, d.output, SHA256_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, d.output, SHA256_DIGEST_SIZE) != 0) return -78; #ifdef WOLFSSL_SHA384 @@ -6052,7 +6052,7 @@ int openssl_test(void) EVP_DigestUpdate(&md_ctx, e.input, (unsigned long)e.inLen); EVP_DigestFinal(&md_ctx, hash, 0); - if (memcmp(hash, e.output, SHA384_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, e.output, SHA384_DIGEST_SIZE) != 0) return -79; #endif /* WOLFSSL_SHA384 */ @@ -6076,7 +6076,7 @@ int openssl_test(void) EVP_DigestUpdate(&md_ctx, f.input, (unsigned long)f.inLen); EVP_DigestFinal(&md_ctx, hash, 0); - if (memcmp(hash, f.output, SHA512_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, f.output, SHA512_DIGEST_SIZE) != 0) return -80; #endif /* WOLFSSL_SHA512 */ @@ -6095,7 +6095,7 @@ int openssl_test(void) HMAC(EVP_md5(), "JefeJefeJefeJefe", 16, (byte*)c.input, (int)c.inLen, hash, 0); - if (memcmp(hash, c.output, MD5_DIGEST_SIZE) != 0) + if (XMEMCMP(hash, c.output, MD5_DIGEST_SIZE) != 0) return -74; #endif /* NO_MD5 */ @@ -6135,17 +6135,17 @@ int openssl_test(void) DES_cbc_encrypt(vector, cipher, sizeof(vector), &sched, &iv, DES_ENCRYPT); DES_cbc_encrypt(cipher, plain, sizeof(vector), &sched, &iv, DES_DECRYPT); - if (memcmp(plain, vector, sizeof(vector)) != 0) + if (XMEMCMP(plain, vector, sizeof(vector)) != 0) return -75; - if (memcmp(cipher, verify, sizeof(verify)) != 0) + if (XMEMCMP(cipher, verify, sizeof(verify)) != 0) return -76; /* test changing iv */ DES_ncbc_encrypt(vector, cipher, 8, &sched, &iv, DES_ENCRYPT); DES_ncbc_encrypt(vector + 8, cipher + 8, 16, &sched, &iv, DES_ENCRYPT); - if (memcmp(cipher, verify, sizeof(verify)) != 0) + if (XMEMCMP(cipher, verify, sizeof(verify)) != 0) return -77; } /* end des test */ @@ -6183,7 +6183,7 @@ int openssl_test(void) if (EVP_Cipher(&ctx, cipher, (byte*)msg, 16) == 0) return -82; - if (memcmp(cipher, verify, AES_BLOCK_SIZE)) + if (XMEMCMP(cipher, verify, AES_BLOCK_SIZE)) return -83; EVP_CIPHER_CTX_init(&ctx); @@ -6193,7 +6193,7 @@ int openssl_test(void) if (EVP_Cipher(&ctx, plain, cipher, 16) == 0) return -85; - if (memcmp(plain, msg, AES_BLOCK_SIZE)) + if (XMEMCMP(plain, msg, AES_BLOCK_SIZE)) return -86; @@ -6207,9 +6207,13 @@ int openssl_test(void) static int evp_enc_test(const WOLFCRYPT_EVP_CIPHER* type) { WOLFCRYPT_EVP_CIPHER_CTX ctx; - int i, ret, len = 0, loop, outLen, rand_size, witLen; + int i, ret, len = 0, loop, loop_max, outLen, rand_size, witLen; - byte brandom[4500], wit[5000], out[5000]; +#ifdef BENCH_EMBEDDED + byte brandom[100], wit[112], out[112]; +#else + byte brandom[1025], wit[1040], out[1040]; +#endif byte key[] = {0x9d, 0xbf, 0xe2, 0x11, 0xf9, 0xea, 0x19, 0xf3, 0x44, 0x2e, 0xae, 0x19, 0x54, 0x80, 0x87, 0x4c, @@ -6230,9 +6234,14 @@ static int evp_enc_test(const WOLFCRYPT_EVP_CIPHER* type) wc_FreeRng(&rng); +#ifdef BENCH_EMBEDDED + loop_max = 25; +#else + loop_max = 1000; +#endif /* Encrypt/Decrypt with round bytes block Update */ - for (loop = 1; loop < 1000; loop++) { + for (loop = 0; loop < loop_max; loop++) { rand_size = sizeof(brandom) - loop; /* Encrypt */ @@ -7016,7 +7025,7 @@ int pkcs12_test(void) if (ret < 0) return -103; - if ( (ret = memcmp(derived, verify, kLen)) != 0) + if ( (ret = XMEMCMP(derived, verify, kLen)) != 0) return -104; iterations = 1000; @@ -7030,7 +7039,7 @@ int pkcs12_test(void) if (ret < 0) return -106; - if ( (ret = memcmp(derived, verify2, 24)) != 0) + if ( (ret = XMEMCMP(derived, verify2, 24)) != 0) return -107; return 0; @@ -7055,7 +7064,7 @@ int pbkdf2_test(void) if (ret != 0) return ret; - if (memcmp(derived, verify, sizeof(verify)) != 0) + if (XMEMCMP(derived, verify, sizeof(verify)) != 0) return -102; return 0; @@ -7079,7 +7088,7 @@ int pbkdf1_test(void) wc_PBKDF1(derived, (byte*)passwd, (int)strlen(passwd), salt, 8, iterations, kLen, SHA); - if (memcmp(derived, verify, sizeof(verify)) != 0) + if (XMEMCMP(derived, verify, sizeof(verify)) != 0) return -101; return 0; @@ -7151,7 +7160,7 @@ int hkdf_test(void) if (ret != 0) return -2001; - if (memcmp(okm1, res1, L) != 0) + if (XMEMCMP(okm1, res1, L) != 0) return -2002; #ifndef HAVE_FIPS @@ -7160,7 +7169,7 @@ int hkdf_test(void) if (ret != 0) return -2003; - if (memcmp(okm1, res2, L) != 0) + if (XMEMCMP(okm1, res2, L) != 0) return -2004; #endif /* HAVE_FIPS */ #endif /* NO_SHA */ @@ -7170,7 +7179,7 @@ int hkdf_test(void) if (ret != 0) return -2005; - if (memcmp(okm1, res3, L) != 0) + if (XMEMCMP(okm1, res3, L) != 0) return -2006; #ifndef HAVE_FIPS @@ -7179,7 +7188,7 @@ int hkdf_test(void) if (ret != 0) return -2007; - if (memcmp(okm1, res4, L) != 0) + if (XMEMCMP(okm1, res4, L) != 0) return -2007; #endif /* HAVE_FIPS */ #endif /* NO_SHA256 */ @@ -7222,7 +7231,7 @@ static int ecc_test_vector_item(const eccVector* vector) wc_ecc_init(&userA); - memset(sig, 0, sizeof(sig)); + XMEMSET(sig, 0, sizeof(sig)); x = sizeof(sig); ret = wc_ecc_import_raw(&userA, vector->Qx, vector->Qy, @@ -7539,7 +7548,7 @@ static int ecc_test_curve_size(WC_RNG* rng, int keySize, int testVerifyCount, if (y != x) ERROR_OUT(-1004, done); - if (memcmp(sharedA, sharedB, x)) + if (XMEMCMP(sharedA, sharedB, x)) ERROR_OUT(-1005, done); #endif /* HAVE_ECC_DHE */ @@ -7561,7 +7570,7 @@ static int ecc_test_curve_size(WC_RNG* rng, int keySize, int testVerifyCount, if (ret != 0) ERROR_OUT(-1008, done); - if (memcmp(sharedA, sharedB, y)) + if (XMEMCMP(sharedA, sharedB, y)) ERROR_OUT(-1009, done); #endif /* HAVE_ECC_DHE */ @@ -7586,7 +7595,7 @@ static int ecc_test_curve_size(WC_RNG* rng, int keySize, int testVerifyCount, if (ret != 0) ERROR_OUT(-1012, done); - if (memcmp(sharedA, sharedB, y)) + if (XMEMCMP(sharedA, sharedB, y)) ERROR_OUT(-1013, done); #endif /* HAVE_ECC_DHE */ #endif /* HAVE_COMP_KEY */ @@ -7799,7 +7808,7 @@ int ecc_encrypt_test(void) if (ret != 0) return -3004; - if (memcmp(plain, msg, sizeof(msg)) != 0) + if (XMEMCMP(plain, msg, sizeof(msg)) != 0) return -3005; @@ -7818,12 +7827,12 @@ int ecc_encrypt_test(void) tmpSalt = wc_ecc_ctx_get_own_salt(cliCtx); if (tmpSalt == NULL) return -3007; - memcpy(cliSalt, tmpSalt, EXCHANGE_SALT_SZ); + XMEMCPY(cliSalt, tmpSalt, EXCHANGE_SALT_SZ); tmpSalt = wc_ecc_ctx_get_own_salt(srvCtx); if (tmpSalt == NULL) return -3007; - memcpy(srvSalt, tmpSalt, EXCHANGE_SALT_SZ); + XMEMCPY(srvSalt, tmpSalt, EXCHANGE_SALT_SZ); /* in actual use, we'd get the peer's salt over the transport */ ret = wc_ecc_ctx_set_peer_salt(cliCtx, srvSalt); @@ -7847,7 +7856,7 @@ int ecc_encrypt_test(void) if (ret != 0) return -3010; - if (memcmp(plain, msg, sizeof(msg)) != 0) + if (XMEMCMP(plain, msg, sizeof(msg)) != 0) return -3011; { @@ -7873,7 +7882,7 @@ int ecc_encrypt_test(void) if (ret != 0) return -3013; - if (memcmp(plain2, msg2, sizeof(msg2)) != 0) + if (XMEMCMP(plain2, msg2, sizeof(msg2)) != 0) return -3014; } @@ -8797,7 +8806,7 @@ int compress_test(void) if (ret == 0 && wc_DeCompress(d, dSz, c, cSz) != (int)dSz) ret = -302; - if (ret == 0 && memcmp(d, sample_text, dSz)) + if (ret == 0 && XMEMCMP(d, sample_text, dSz)) ret = -303; if (c) TEST_XFREE(c, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); @@ -8896,7 +8905,7 @@ int pkcs7enveloped_test(void) } /* test decode result */ - if (memcmp(decoded, data, sizeof(data)) != 0) { + if (XMEMCMP(decoded, data, sizeof(data)) != 0) { TEST_XFREE(cert, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); TEST_XFREE(privKey, HEAP_HINT, DYNAMIC_TYPE_TMP_BUFFER); return -205; diff --git a/wolfssl/openssl/evp.h b/wolfssl/openssl/evp.h index bd4da583c..743745d02 100644 --- a/wolfssl/openssl/evp.h +++ b/wolfssl/openssl/evp.h @@ -21,7 +21,7 @@ -/* evp.h defines mini evp openssl compatibility layer +/* evp.h defines mini evp openssl compatibility layer * */ @@ -31,6 +31,10 @@ #include +#ifdef __cplusplus + extern "C" { +#endif + #ifdef WOLFSSL_PREFIX #include "prefix_evp.h" #endif diff --git a/wolfssl/openssl/hmac.h b/wolfssl/openssl/hmac.h index b0d54592a..e597acdb8 100644 --- a/wolfssl/openssl/hmac.h +++ b/wolfssl/openssl/hmac.h @@ -21,7 +21,7 @@ -/* hmac.h defines mini hamc openssl compatibility layer +/* hmac.h defines mini hamc openssl compatibility layer * */ @@ -41,7 +41,7 @@ extern "C" { #endif -typedef struct WOLFCRYPT_HMAC_CTX HMAC_CTX; + //typedef struct WOLFCRYPT_HMAC_CTX HMAC_CTX; #define HMAC(a,b,c,d,e,f,g) wc_HMAC((a),(b),(c),(d),(e),(f),(g)) diff --git a/wolfssl/wolfcrypt/bio.h b/wolfssl/wolfcrypt/bio.h index 6f543742a..a9cb8c0e9 100644 --- a/wolfssl/wolfcrypt/bio.h +++ b/wolfssl/wolfcrypt/bio.h @@ -164,6 +164,9 @@ typedef struct WOLFCRYPT_BIO_METHOD WOLFCRYPT_BIO_METHOD; typedef void WOLFCRYPT_BIO_info_cb (WOLFCRYPT_BIO *, int, const char *, int, long, long); +/* Compatibility with previous name */ +#define WOLFSSL_BIO WOLFCRYPT_BIO + /* wolfSSL BIO_METHOD type */ struct WOLFCRYPT_BIO_METHOD { int type; /* method type */ diff --git a/wolfssl/wolfcrypt/compat-wolfssl.h b/wolfssl/wolfcrypt/compat-wolfssl.h index 801518d8a..ed0e8e21b 100644 --- a/wolfssl/wolfcrypt/compat-wolfssl.h +++ b/wolfssl/wolfcrypt/compat-wolfssl.h @@ -240,7 +240,7 @@ enum { NULL_CIPHER_TYPE = 10, EVP_PKEY_RSA = 11, EVP_PKEY_DSA = 12, - EVP_PKEY_EC = 13, + EVP_PKEY_EC = 13, IDEA_CBC_TYPE = 14, NID_sha1 = 64, NID_md2 = 3,