Merge pull request #7018 from dgarske/ti_aes

Fixes for TI AES and SHA
This commit is contained in:
Sean Parkinson
2023-12-22 07:55:00 +10:00
committed by GitHub
7 changed files with 796 additions and 351 deletions

View File

@ -99,6 +99,7 @@ ASN Options:
* WOLFSSL_ALLOW_ENCODING_CA_FALSE: Allow encoding BasicConstraints CA:FALSE
* which is discouraged by X.690 specification - default values shall not
* be encoded.
* NO_TIME_SIGNEDNESS_CHECK: Disabled the time_t signedness check.
*/
#include <wolfssl/wolfcrypt/error-crypt.h>
@ -14717,12 +14718,14 @@ int wc_ValidateDate(const byte* date, byte format, int dateType)
(void)tmpTime;
ltime = wc_Time(0);
#ifndef NO_TIME_SIGNEDNESS_CHECK
if (sizeof(ltime) == sizeof(word32) && (int)ltime < 0){
/* A negative response here could be due to a 32-bit time_t
* where the year is 2038 or later. */
WOLFSSL_MSG("wc_Time failed to return a valid value");
return 0;
}
#endif
#ifdef WOLFSSL_BEFORE_DATE_CLOCK_SKEW
if (dateType == BEFORE) {

File diff suppressed because it is too large Load Diff

View File

@ -62,8 +62,10 @@
#define SHAMD5_ALGO_SHA224 4
#endif
static int hashInit(wolfssl_TI_Hash *hash) {
if (!wolfSSL_TI_CCMInit())return 1;
static int hashInit(wolfssl_TI_Hash *hash)
{
if (!wolfSSL_TI_CCMInit())
return 1;
hash->used = 0;
hash->msg = 0;
hash->len = 0;
@ -115,8 +117,13 @@ static int hashGetHash(wolfssl_TI_Hash *hash, byte* result, word32 algo, word32
return 0;
}
static int hashCopy(wolfssl_TI_Hash *src, wolfssl_TI_Hash *dst) {
XMEMCPY(dst, src, sizeof(wolfssl_TI_Hash));
static int hashCopy(wolfssl_TI_Hash *src, wolfssl_TI_Hash *dst)
{
/* only copy hash, zero the rest of the struct to avoid double-free */
dst->msg = NULL;
dst->used = 0;
dst->len = 0;
XMEMCPY(dst->hash, src->hash, sizeof(dst->hash));
return 0;
}
@ -194,11 +201,12 @@ WOLFSSL_API int wc_Md5GetHash(Md5* md5, byte* hash)
return hashGetHash((wolfssl_TI_Hash *)md5, hash, SHAMD5_ALGO_MD5, MD5_DIGEST_SIZE);
}
WOLFSSL_API int wc_Md5Copy(Md5* src, Md5* dst) {
WOLFSSL_API int wc_Md5Copy(Md5* src, Md5* dst)
{
return hashCopy((wolfssl_TI_Hash *)src, (wolfssl_TI_Hash *)dst);
}
WOLFSSL_API int wc_Md5Hash(const byte*data, word32 len, byte*hash)
WOLFSSL_API int wc_Md5Hash(const byte*data, word32 len, byte* hash)
{
return hashHash(data, len, hash, SHAMD5_ALGO_MD5, MD5_DIGEST_SIZE);
}
@ -239,11 +247,12 @@ WOLFSSL_API int wc_ShaGetHash(Sha* sha, byte* hash)
return hashGetHash(sha, hash, SHAMD5_ALGO_SHA1, SHA_DIGEST_SIZE);
}
WOLFSSL_API int wc_ShaCopy(Sha* src, Sha* dst) {
WOLFSSL_API int wc_ShaCopy(Sha* src, Sha* dst)
{
return hashCopy((wolfssl_TI_Hash *)src, (wolfssl_TI_Hash *)dst);
}
WOLFSSL_API int wc_ShaHash(const byte*data, word32 len, byte*hash)
WOLFSSL_API int wc_ShaHash(const byte*data, word32 len, byte* hash)
{
return hashHash(data, len, hash, SHAMD5_ALGO_SHA1, SHA_DIGEST_SIZE);
}
@ -284,7 +293,12 @@ WOLFSSL_API int wc_Sha224GetHash(Sha224* sha224, byte* hash)
return hashGetHash(sha224, hash, SHAMD5_ALGO_SHA224, SHA224_DIGEST_SIZE);
}
WOLFSSL_API int wc_Sha224Hash(const byte* data, word32 len, byte*hash)
WOLFSSL_API int wc_Sha224Copy(Sha224* src, Sha224* dst)
{
return hashCopy((wolfssl_TI_Hash *)src, (wolfssl_TI_Hash *)dst);
}
WOLFSSL_API int wc_Sha224Hash(const byte* data, word32 len, byte* hash)
{
return hashHash(data, len, hash, SHAMD5_ALGO_SHA224, SHA224_DIGEST_SIZE);
}
@ -326,7 +340,12 @@ WOLFSSL_API int wc_Sha256GetHash(Sha256* sha256, byte* hash)
return hashGetHash(sha256, hash, SHAMD5_ALGO_SHA256, SHA256_DIGEST_SIZE);
}
WOLFSSL_API int wc_Sha256Hash(const byte* data, word32 len, byte*hash)
WOLFSSL_API int wc_Sha256Copy(Sha256* src, Sha256* dst)
{
return hashCopy((wolfssl_TI_Hash *)src, (wolfssl_TI_Hash *)dst);
}
WOLFSSL_API int wc_Sha256Hash(const byte* data, word32 len, byte* hash)
{
return hashHash(data, len, hash, SHAMD5_ALGO_SHA256, SHA256_DIGEST_SIZE);
}

View File

@ -15413,7 +15413,7 @@ static int simple_mem_test(int sz)
static wc_test_ret_t const_byte_ptr_test(const byte* in, word32 *outJ)
{
wc_test_ret_t ret = 0;
volatile word32 j = -1; /* must be volatile to properly detect error */
volatile word32 j = (word32)-1; /* must be volatile to properly detect error */
ret = (wc_test_ret_t)*in; /* accessed *in value. */
(void)ret;

View File

@ -110,7 +110,9 @@
#elif defined(WOLFSSL_TIRTOS)
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#if !defined(__ti__) /* conflicts with sys/socket.h */
#include <sys/types.h>
#endif
#include <arpa/inet.h>
#include <sys/socket.h>
#include <ti/sysbios/knl/Task.h>
@ -1284,7 +1286,7 @@ static WC_INLINE void build_addr(SOCKADDR_IN_T* addr, const char* peer,
int err;
struct hostent* entry = gethostbyname(peer, &err);
#elif defined(WOLFSSL_TIRTOS)
struct hostent* entry = DNSGetHostByName(peer);
struct hostent* entry = (struct hostent*)DNSGetHostByName(peer);
#elif defined(WOLFSSL_VXWORKS)
struct hostent* entry = (struct hostent*)hostGetByName((char*)peer);
#else

View File

@ -972,12 +972,6 @@ extern void uITRON4_free(void *p) ;
#define NO_MAIN_DRIVER
#endif
#ifdef WOLFSSL_TI_CRYPT
#define NO_GCM_ENCRYPT_EXTRA
#define NO_PUBLIC_GCM_SET_IV
#define NO_PUBLIC_CCM_SET_NONCE
#endif
#ifdef WOLFSSL_TIRTOS
#define SIZEOF_LONG_LONG 8
#define NO_WRITEV
@ -987,35 +981,57 @@ extern void uITRON4_free(void *p) ;
* specified in user_settings.
*/
#ifndef USE_FAST_MATH
#define WOLFSSL_HAVE_SP_ECC
#define SP_WORD_SIZE 32
#define WOLFSSL_HAVE_SP_RSA
#define WOLFSSL_SP_4096
#define WOLFSSL_HAVE_SP_ECC
#ifndef NO_RSA
#define WOLFSSL_HAVE_SP_RSA
#endif
#ifndef NO_DH
#define WOLFSSL_HAVE_SP_DH
#endif
#if !defined(NO_RSA) || !defined(NO_DH)
/* DH/RSA 2048, 3072 and 4096 */
#if defined(SP_INT_MAX_BITS) && SP_INT_MAX_BITS >= 4096
#define WOLFSSL_SP_4096
#endif
#endif
#endif
#define TFM_TIMING_RESISTANT
#define ECC_TIMING_RESISTANT
#define WC_RSA_BLINDING
#define NO_DEV_RANDOM
#define NO_FILESYSTEM
#define NO_SIG_WRAPPER
#define NO_MAIN_DRIVER
#define USE_CERT_BUFFERS_2048
#define NO_ERROR_STRINGS
/* Uncomment this setting if your toolchain does not offer time.h header */
/* #define USER_TIME */
#ifndef NO_CRYPT_TEST
#define USE_CERT_BUFFERS_2048
#endif
#ifndef DEBUG_WOLFSSL
#define NO_ERROR_STRINGS
#endif
#define HAVE_ECC
#define HAVE_ALPN
#define USE_WOLF_STRTOK /* use with HAVE_ALPN */
#define HAVE_TLS_EXTENSIONS
#define HAVE_AESGCM
#define HAVE_SUPPORTED_CURVES
#define HAVE_AESGCM
#ifdef __IAR_SYSTEMS_ICC__
#pragma diag_suppress=Pa089
#elif !defined(__GNUC__)
/* Suppress the sslpro warning */
#pragma diag_suppress=11
#endif
/* Uncomment this setting if your toolchain does not offer time.h header */
/* #define USER_TIME */
#include <ti/sysbios/hal/Seconds.h>
#if defined(__ti__) && !defined(USER_TIME)
/* TI internal time() offsets by 2208988800 (1990 -> 1970),
* which overflows signed 32-bit */
#define NO_TIME_SIGNEDNESS_CHECK
#endif
#endif
#ifdef EBSNET

View File

@ -130,6 +130,7 @@
#include "cmsis_os.h"
#elif defined(WOLFSSL_TIRTOS)
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/knl/Semaphore.h>
#elif defined(WOLFSSL_FROSTED)
#include <semaphore.h>