forked from wolfSSL/wolfssl
Merge pull request #1006 from cconlon/mqx
Update MQX Classic, mmCAU Ports
This commit is contained in:
@@ -32,7 +32,8 @@
|
|||||||
/* Macro to disable benchmark */
|
/* Macro to disable benchmark */
|
||||||
#ifndef NO_CRYPT_BENCHMARK
|
#ifndef NO_CRYPT_BENCHMARK
|
||||||
|
|
||||||
#ifdef XMALLOC_USER
|
#if defined(XMALLOC_USER) || defined(FREESCALE_MQX)
|
||||||
|
/* MQX classic needs for EXIT_FAILURE */
|
||||||
#include <stdlib.h> /* we're using malloc / free direct here */
|
#include <stdlib.h> /* we're using malloc / free direct here */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -470,13 +470,32 @@
|
|||||||
* through the CAU/mmCAU library. Documentation located in
|
* through the CAU/mmCAU library. Documentation located in
|
||||||
* ColdFire/ColdFire+ CAU and Kinetis mmCAU Software Library User
|
* ColdFire/ColdFire+ CAU and Kinetis mmCAU Software Library User
|
||||||
* Guide (See note in README). */
|
* Guide (See note in README). */
|
||||||
#include "fsl_mmcau.h"
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
/* MMCAU 1.4 library used with non-KSDK / classic MQX builds */
|
||||||
|
#include "cau_api.h"
|
||||||
|
#else
|
||||||
|
#include "fsl_mmcau.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
static int wc_AesEncrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
static int wc_AesEncrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
||||||
{
|
{
|
||||||
int ret = wolfSSL_CryptHwMutexLock();
|
int ret;
|
||||||
|
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
if ((wolfssl_word)outBlock % WOLFSSL_MMCAU_ALIGNMENT) {
|
||||||
|
WOLFSSL_MSG("Bad cau_aes_encrypt alignment");
|
||||||
|
return BAD_ALIGN_E;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ret = wolfSSL_CryptHwMutexLock();
|
||||||
if(ret == 0) {
|
if(ret == 0) {
|
||||||
MMCAU_AES_EncryptEcb(inBlock, (byte*)aes->key, aes->rounds, outBlock);
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
cau_aes_encrypt(inBlock, (byte*)aes->key, aes->rounds, outBlock);
|
||||||
|
#else
|
||||||
|
MMCAU_AES_EncryptEcb(inBlock, (byte*)aes->key, aes->rounds,
|
||||||
|
outBlock);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@@ -484,9 +503,23 @@
|
|||||||
#ifdef HAVE_AES_DECRYPT
|
#ifdef HAVE_AES_DECRYPT
|
||||||
static int wc_AesDecrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
static int wc_AesDecrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
||||||
{
|
{
|
||||||
int ret = wolfSSL_CryptHwMutexLock();
|
int ret;
|
||||||
|
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
if ((wolfssl_word)outBlock % WOLFSSL_MMCAU_ALIGNMENT) {
|
||||||
|
WOLFSSL_MSG("Bad cau_aes_decrypt alignment");
|
||||||
|
return BAD_ALIGN_E;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ret = wolfSSL_CryptHwMutexLock();
|
||||||
if(ret == 0) {
|
if(ret == 0) {
|
||||||
MMCAU_AES_DecryptEcb(inBlock, (byte*)aes->key, aes->rounds, outBlock);
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
cau_aes_decrypt(inBlock, (byte*)aes->key, aes->rounds, outBlock);
|
||||||
|
#else
|
||||||
|
MMCAU_AES_DecryptEcb(inBlock, (byte*)aes->key, aes->rounds,
|
||||||
|
outBlock);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@@ -1824,7 +1857,11 @@ static void wc_AesDecrypt(Aes* aes, const byte* inBlock, byte* outBlock)
|
|||||||
|
|
||||||
ret = wolfSSL_CryptHwMutexLock();
|
ret = wolfSSL_CryptHwMutexLock();
|
||||||
if(ret == 0) {
|
if(ret == 0) {
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
cau_aes_set_key(userKey, keylen*8, rk);
|
||||||
|
#else
|
||||||
MMCAU_AES_SetKey(userKey, keylen, rk);
|
MMCAU_AES_SetKey(userKey, keylen, rk);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
|
|
||||||
ret = wc_AesSetIV(aes, iv);
|
ret = wc_AesSetIV(aes, iv);
|
||||||
|
@@ -750,7 +750,11 @@
|
|||||||
* Documentation located in ColdFire/ColdFire+ CAU and Kinetis mmCAU
|
* Documentation located in ColdFire/ColdFire+ CAU and Kinetis mmCAU
|
||||||
* Software Library User Guide (See note in README).
|
* Software Library User Guide (See note in README).
|
||||||
*/
|
*/
|
||||||
#include "fsl_mmcau.h"
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
#include "cau_api.h"
|
||||||
|
#else
|
||||||
|
#include "fsl_mmcau.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
const unsigned char parityLookup[128] = {
|
const unsigned char parityLookup[128] = {
|
||||||
1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,
|
1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,
|
||||||
@@ -815,6 +819,13 @@
|
|||||||
|
|
||||||
iv = (byte*)des->reg;
|
iv = (byte*)des->reg;
|
||||||
|
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
if ((wolfssl_word)out % WOLFSSL_MMCAU_ALIGNMENT) {
|
||||||
|
WOLFSSL_MSG("Bad cau_des_encrypt alignment");
|
||||||
|
return BAD_ALIGN_E;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
while (len > 0)
|
while (len > 0)
|
||||||
{
|
{
|
||||||
XMEMCPY(temp_block, in + offset, DES_BLOCK_SIZE);
|
XMEMCPY(temp_block, in + offset, DES_BLOCK_SIZE);
|
||||||
@@ -827,7 +838,11 @@
|
|||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
cau_des_encrypt(temp_block, (byte*)des->key, out + offset);
|
||||||
|
#else
|
||||||
MMCAU_DES_EncryptEcb(temp_block, (byte*)des->key, out + offset);
|
MMCAU_DES_EncryptEcb(temp_block, (byte*)des->key, out + offset);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
|
|
||||||
len -= DES_BLOCK_SIZE;
|
len -= DES_BLOCK_SIZE;
|
||||||
@@ -851,6 +866,13 @@
|
|||||||
|
|
||||||
iv = (byte*)des->reg;
|
iv = (byte*)des->reg;
|
||||||
|
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
if ((wolfssl_word)out % WOLFSSL_MMCAU_ALIGNMENT) {
|
||||||
|
WOLFSSL_MSG("Bad cau_des_decrypt alignment");
|
||||||
|
return BAD_ALIGN_E;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
while (len > 0)
|
while (len > 0)
|
||||||
{
|
{
|
||||||
XMEMCPY(temp_block, in + offset, DES_BLOCK_SIZE);
|
XMEMCPY(temp_block, in + offset, DES_BLOCK_SIZE);
|
||||||
@@ -859,7 +881,12 @@
|
|||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
cau_des_decrypt(in + offset, (byte*)des->key, out + offset);
|
||||||
|
#else
|
||||||
MMCAU_DES_DecryptEcb(in + offset, (byte*)des->key, out + offset);
|
MMCAU_DES_DecryptEcb(in + offset, (byte*)des->key, out + offset);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
|
|
||||||
/* XOR block with IV for CBC */
|
/* XOR block with IV for CBC */
|
||||||
@@ -888,6 +915,13 @@
|
|||||||
|
|
||||||
iv = (byte*)des->reg;
|
iv = (byte*)des->reg;
|
||||||
|
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
if ((wolfssl_word)out % WOLFSSL_MMCAU_ALIGNMENT) {
|
||||||
|
WOLFSSL_MSG("Bad 3ede cau_des_encrypt alignment");
|
||||||
|
return BAD_ALIGN_E;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
while (len > 0)
|
while (len > 0)
|
||||||
{
|
{
|
||||||
XMEMCPY(temp_block, in + offset, DES_BLOCK_SIZE);
|
XMEMCPY(temp_block, in + offset, DES_BLOCK_SIZE);
|
||||||
@@ -900,9 +934,15 @@
|
|||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
cau_des_encrypt(temp_block, (byte*)des->key[0], out + offset);
|
||||||
|
cau_des_decrypt(out + offset, (byte*)des->key[1], out + offset);
|
||||||
|
cau_des_encrypt(out + offset, (byte*)des->key[2], out + offset);
|
||||||
|
#else
|
||||||
MMCAU_DES_EncryptEcb(temp_block , (byte*)des->key[0], out + offset);
|
MMCAU_DES_EncryptEcb(temp_block , (byte*)des->key[0], out + offset);
|
||||||
MMCAU_DES_DecryptEcb(out + offset, (byte*)des->key[1], out + offset);
|
MMCAU_DES_DecryptEcb(out + offset, (byte*)des->key[1], out + offset);
|
||||||
MMCAU_DES_EncryptEcb(out + offset, (byte*)des->key[2], out + offset);
|
MMCAU_DES_EncryptEcb(out + offset, (byte*)des->key[2], out + offset);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
|
|
||||||
len -= DES_BLOCK_SIZE;
|
len -= DES_BLOCK_SIZE;
|
||||||
@@ -927,6 +967,13 @@
|
|||||||
|
|
||||||
iv = (byte*)des->reg;
|
iv = (byte*)des->reg;
|
||||||
|
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
if ((wolfssl_word)out % WOLFSSL_MMCAU_ALIGNMENT) {
|
||||||
|
WOLFSSL_MSG("Bad 3ede cau_des_decrypt alignment");
|
||||||
|
return BAD_ALIGN_E;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
while (len > 0)
|
while (len > 0)
|
||||||
{
|
{
|
||||||
XMEMCPY(temp_block, in + offset, DES_BLOCK_SIZE);
|
XMEMCPY(temp_block, in + offset, DES_BLOCK_SIZE);
|
||||||
@@ -935,9 +982,15 @@
|
|||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
cau_des_decrypt(in + offset, (byte*)des->key[2], out + offset);
|
||||||
|
cau_des_encrypt(out + offset, (byte*)des->key[1], out + offset);
|
||||||
|
cau_des_decrypt(out + offset, (byte*)des->key[0], out + offset);
|
||||||
|
#else
|
||||||
MMCAU_DES_DecryptEcb(in + offset , (byte*)des->key[2], out + offset);
|
MMCAU_DES_DecryptEcb(in + offset , (byte*)des->key[2], out + offset);
|
||||||
MMCAU_DES_EncryptEcb(out + offset, (byte*)des->key[1], out + offset);
|
MMCAU_DES_EncryptEcb(out + offset, (byte*)des->key[1], out + offset);
|
||||||
MMCAU_DES_DecryptEcb(out + offset, (byte*)des->key[0], out + offset);
|
MMCAU_DES_DecryptEcb(out + offset, (byte*)des->key[0], out + offset);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
|
|
||||||
/* XOR block with IV for CBC */
|
/* XOR block with IV for CBC */
|
||||||
|
@@ -149,6 +149,8 @@ static void wolfssl_log(const int logLevel, const char *const logMessage)
|
|||||||
#elif defined(WOLFSSL_UTASKER)
|
#elif defined(WOLFSSL_UTASKER)
|
||||||
fnDebugMsg((char*)logMessage);
|
fnDebugMsg((char*)logMessage);
|
||||||
fnDebugMsg("\r\n");
|
fnDebugMsg("\r\n");
|
||||||
|
#elif defined(MQX_USE_IO_OLD)
|
||||||
|
fprintf(_mqxio_stderr, "%s\n", logMessage);
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, "%s\n", logMessage);
|
fprintf(stderr, "%s\n", logMessage);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -174,7 +174,11 @@
|
|||||||
{
|
{
|
||||||
int ret = wolfSSL_CryptHwMutexLock();
|
int ret = wolfSSL_CryptHwMutexLock();
|
||||||
if(ret == 0) {
|
if(ret == 0) {
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC_SHA
|
||||||
|
cau_md5_hash_n(data, 1, (unsigned char*)md5->digest);
|
||||||
|
#else
|
||||||
MMCAU_MD5_HashN(data, 1, (uint32_t*)md5->digest);
|
MMCAU_MD5_HashN(data, 1, (uint32_t*)md5->digest);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@@ -886,6 +886,9 @@ int wc_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
case WC_PKCS12_ShroudedKeyBag: /* 668 */
|
case WC_PKCS12_ShroudedKeyBag: /* 668 */
|
||||||
{
|
{
|
||||||
byte* k;
|
byte* k;
|
||||||
|
#ifdef FREESCALE_MQX
|
||||||
|
byte* tmp;
|
||||||
|
#endif
|
||||||
WOLFSSL_MSG("PKCS12 Shrouded Key Bag found");
|
WOLFSSL_MSG("PKCS12 Shrouded Key Bag found");
|
||||||
if (data[idx++] !=
|
if (data[idx++] !=
|
||||||
(ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC)) {
|
(ASN_CONSTRUCTED | ASN_CONTEXT_SPECIFIC)) {
|
||||||
@@ -911,11 +914,24 @@ int wc_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
|
|||||||
|
|
||||||
if (ret < size) {
|
if (ret < size) {
|
||||||
/* shrink key buffer */
|
/* shrink key buffer */
|
||||||
|
#ifdef FREESCALE_MQX
|
||||||
|
/* MQX classic has no realloc */
|
||||||
|
tmp = (byte*)XMALLOC(ret, pkcs12->heap,
|
||||||
|
DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
|
if (tmp == NULL) {
|
||||||
|
XFREE(k, pkcs12->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
|
ERROR_OUT(MEMORY_E, exit_pk12par);
|
||||||
|
}
|
||||||
|
XMEMCPY(tmp, k, ret);
|
||||||
|
XFREE(k, pkcs12->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
|
k = tmp;
|
||||||
|
#else
|
||||||
k = (byte*)XREALLOC(k, ret, pkcs12->heap,
|
k = (byte*)XREALLOC(k, ret, pkcs12->heap,
|
||||||
DYNAMIC_TYPE_PUBLIC_KEY);
|
DYNAMIC_TYPE_PUBLIC_KEY);
|
||||||
if (k == NULL) {
|
if (k == NULL) {
|
||||||
ERROR_OUT(MEMORY_E, exit_pk12par);
|
ERROR_OUT(MEMORY_E, exit_pk12par);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
size = ret;
|
size = ret;
|
||||||
|
|
||||||
|
@@ -237,7 +237,12 @@
|
|||||||
|
|
||||||
#elif defined(FREESCALE_MMCAU_SHA)
|
#elif defined(FREESCALE_MMCAU_SHA)
|
||||||
|
|
||||||
#include "fsl_mmcau.h"
|
#ifdef FREESCALE_MMCAU_CLASSIC_SHA
|
||||||
|
#include "cau_api.h"
|
||||||
|
#else
|
||||||
|
#include "fsl_mmcau.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define USE_SHA_SOFTWARE_IMPL /* Only for API's, actual transform is here */
|
#define USE_SHA_SOFTWARE_IMPL /* Only for API's, actual transform is here */
|
||||||
#define XSHATRANSFORM ShaTransform
|
#define XSHATRANSFORM ShaTransform
|
||||||
|
|
||||||
@@ -248,7 +253,11 @@
|
|||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC_SHA
|
||||||
|
cau_sha1_initialize_output(sha->digest);
|
||||||
|
#else
|
||||||
MMCAU_SHA1_InitializeOutput((uint32_t*)sha->digest);
|
MMCAU_SHA1_InitializeOutput((uint32_t*)sha->digest);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
|
|
||||||
sha->buffLen = 0;
|
sha->buffLen = 0;
|
||||||
@@ -262,7 +271,11 @@
|
|||||||
{
|
{
|
||||||
int ret = wolfSSL_CryptHwMutexLock();
|
int ret = wolfSSL_CryptHwMutexLock();
|
||||||
if(ret == 0) {
|
if(ret == 0) {
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC_SHA
|
||||||
|
cau_sha1_hash_n(data, 1, sha->digest);
|
||||||
|
#else
|
||||||
MMCAU_SHA1_HashN(data, 1, (uint32_t*)sha->digest);
|
MMCAU_SHA1_HashN(data, 1, (uint32_t*)sha->digest);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@@ -522,7 +535,7 @@ int wc_ShaFinal(Sha* sha, byte* hash)
|
|||||||
XMEMCPY(&local[SHA_PAD_SIZE], &sha->hiLen, sizeof(word32));
|
XMEMCPY(&local[SHA_PAD_SIZE], &sha->hiLen, sizeof(word32));
|
||||||
XMEMCPY(&local[SHA_PAD_SIZE + sizeof(word32)], &sha->loLen, sizeof(word32));
|
XMEMCPY(&local[SHA_PAD_SIZE + sizeof(word32)], &sha->loLen, sizeof(word32));
|
||||||
|
|
||||||
#ifdef FREESCALE_MMCAU_SHA
|
#if defined(FREESCALE_MMCAU_SHA)
|
||||||
/* Kinetis requires only these bytes reversed */
|
/* Kinetis requires only these bytes reversed */
|
||||||
ByteReverseWords(&sha->buffer[SHA_PAD_SIZE/sizeof(word32)],
|
ByteReverseWords(&sha->buffer[SHA_PAD_SIZE/sizeof(word32)],
|
||||||
&sha->buffer[SHA_PAD_SIZE/sizeof(word32)],
|
&sha->buffer[SHA_PAD_SIZE/sizeof(word32)],
|
||||||
|
@@ -323,7 +323,13 @@ static int InitSha256(Sha256* sha256)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(FREESCALE_MMCAU_SHA)
|
#elif defined(FREESCALE_MMCAU_SHA)
|
||||||
#include "fsl_mmcau.h"
|
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC_SHA
|
||||||
|
#include "cau_api.h"
|
||||||
|
#else
|
||||||
|
#include "fsl_mmcau.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define XTRANSFORM(sha256, B) Transform(sha256, B)
|
#define XTRANSFORM(sha256, B) Transform(sha256, B)
|
||||||
|
|
||||||
int wc_InitSha256_ex(Sha256* sha256, void* heap, int devId)
|
int wc_InitSha256_ex(Sha256* sha256, void* heap, int devId)
|
||||||
@@ -337,7 +343,11 @@ static int InitSha256(Sha256* sha256)
|
|||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC_SHA
|
||||||
|
cau_sha256_initialize_output(sha256->digest);
|
||||||
|
#else
|
||||||
MMCAU_SHA256_InitializeOutput((uint32_t*)sha256->digest);
|
MMCAU_SHA256_InitializeOutput((uint32_t*)sha256->digest);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
|
|
||||||
sha256->buffLen = 0;
|
sha256->buffLen = 0;
|
||||||
@@ -351,7 +361,11 @@ static int InitSha256(Sha256* sha256)
|
|||||||
{
|
{
|
||||||
int ret = wolfSSL_CryptHwMutexLock();
|
int ret = wolfSSL_CryptHwMutexLock();
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
|
#ifdef FREESCALE_MMCAU_CLASSIC_SHA
|
||||||
|
cau_sha256_hash_n(buf, 1, sha256->digest);
|
||||||
|
#else
|
||||||
MMCAU_SHA256_HashN(buf, 1, sha256->digest);
|
MMCAU_SHA256_HashN(buf, 1, sha256->digest);
|
||||||
|
#endif
|
||||||
wolfSSL_CryptHwMutexUnLock();
|
wolfSSL_CryptHwMutexUnLock();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@@ -623,7 +637,7 @@ static int InitSha256(Sha256* sha256)
|
|||||||
sizeof(word32));
|
sizeof(word32));
|
||||||
|
|
||||||
#if defined(FREESCALE_MMCAU_SHA) || defined(HAVE_INTEL_AVX1) || \
|
#if defined(FREESCALE_MMCAU_SHA) || defined(HAVE_INTEL_AVX1) || \
|
||||||
defined(HAVE_INTEL_AVX2)
|
defined(HAVE_INTEL_AVX2)
|
||||||
/* Kinetis requires only these bytes reversed */
|
/* Kinetis requires only these bytes reversed */
|
||||||
#if defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2)
|
#if defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2)
|
||||||
if (IS_INTEL_AVX1 || IS_INTEL_AVX2)
|
if (IS_INTEL_AVX1 || IS_INTEL_AVX2)
|
||||||
|
@@ -78,7 +78,7 @@ WOLFSSL_API int wolfSSL_BN_is_prime_ex(const WOLFSSL_BIGNUM*, int,
|
|||||||
WOLFSSL_BN_CTX*, WOLFSSL_BN_GENCB*);
|
WOLFSSL_BN_CTX*, WOLFSSL_BN_GENCB*);
|
||||||
WOLFSSL_API WOLFSSL_BN_ULONG wolfSSL_BN_mod_word(const WOLFSSL_BIGNUM*,
|
WOLFSSL_API WOLFSSL_BN_ULONG wolfSSL_BN_mod_word(const WOLFSSL_BIGNUM*,
|
||||||
WOLFSSL_BN_ULONG);
|
WOLFSSL_BN_ULONG);
|
||||||
#ifndef NO_FILESYSTEM
|
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
|
||||||
WOLFSSL_API int wolfSSL_BN_print_fp(FILE*, const WOLFSSL_BIGNUM*);
|
WOLFSSL_API int wolfSSL_BN_print_fp(FILE*, const WOLFSSL_BIGNUM*);
|
||||||
#endif
|
#endif
|
||||||
WOLFSSL_API int wolfSSL_BN_rshift(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*, int);
|
WOLFSSL_API int wolfSSL_BN_rshift(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*, int);
|
||||||
|
@@ -686,6 +686,7 @@ extern void uITRON4_free(void *p) ;
|
|||||||
#include "mfs.h"
|
#include "mfs.h"
|
||||||
#if MQX_USE_IO_OLD
|
#if MQX_USE_IO_OLD
|
||||||
#include "fio.h"
|
#include "fio.h"
|
||||||
|
#define NO_STDIO_FILESYSTEM
|
||||||
#else
|
#else
|
||||||
#include "nio.h"
|
#include "nio.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -694,6 +695,7 @@ extern void uITRON4_free(void *p) ;
|
|||||||
#include "mutex.h"
|
#include "mutex.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define XMALLOC_OVERRIDE
|
||||||
#define XMALLOC(s, h, t) (void *)_mem_alloc_system((s))
|
#define XMALLOC(s, h, t) (void *)_mem_alloc_system((s))
|
||||||
#define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));}
|
#define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));}
|
||||||
/* Note: MQX has no realloc, using fastmath above */
|
/* Note: MQX has no realloc, using fastmath above */
|
||||||
@@ -804,7 +806,8 @@ extern void uITRON4_free(void *p) ;
|
|||||||
|
|
||||||
#ifdef FREESCALE_KSDK_1_3
|
#ifdef FREESCALE_KSDK_1_3
|
||||||
#include "fsl_device_registers.h"
|
#include "fsl_device_registers.h"
|
||||||
#else
|
#elif !defined(FREESCALE_MQX)
|
||||||
|
/* Classic MQX does not have fsl_common.h */
|
||||||
#include "fsl_common.h"
|
#include "fsl_common.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -849,6 +852,14 @@ extern void uITRON4_free(void *p) ;
|
|||||||
#endif
|
#endif
|
||||||
#endif /* FREESCALE_COMMON */
|
#endif /* FREESCALE_COMMON */
|
||||||
|
|
||||||
|
/* Classic pre-KSDK mmCAU library */
|
||||||
|
#ifdef FREESCALE_USE_MMCAU_CLASSIC
|
||||||
|
#define FREESCALE_USE_MMCAU
|
||||||
|
#define FREESCALE_MMCAU_CLASSIC
|
||||||
|
#define FREESCALE_MMCAU_CLASSIC_SHA
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* KSDK mmCAU library */
|
||||||
#ifdef FREESCALE_USE_MMCAU
|
#ifdef FREESCALE_USE_MMCAU
|
||||||
/* AES and DES */
|
/* AES and DES */
|
||||||
#define FREESCALE_MMCAU
|
#define FREESCALE_MMCAU
|
||||||
@@ -1276,9 +1287,14 @@ extern void uITRON4_free(void *p) ;
|
|||||||
#endif /* WOLFSSL_SGX */
|
#endif /* WOLFSSL_SGX */
|
||||||
|
|
||||||
/* FreeScale MMCAU hardware crypto has 4 byte alignment.
|
/* FreeScale MMCAU hardware crypto has 4 byte alignment.
|
||||||
However, fsl_mmcau.h gives API with no alignment requirements (4 byte alignment is managed internally by fsl_mmcau.c) */
|
However, KSDK fsl_mmcau.h gives API with no alignment
|
||||||
|
requirements (4 byte alignment is managed internally by fsl_mmcau.c) */
|
||||||
#ifdef FREESCALE_MMCAU
|
#ifdef FREESCALE_MMCAU
|
||||||
#define WOLFSSL_MMCAU_ALIGNMENT 0
|
#ifdef FREESCALE_MMCAU_CLASSIC
|
||||||
|
#define WOLFSSL_MMCAU_ALIGNMENT 4
|
||||||
|
#else
|
||||||
|
#define WOLFSSL_MMCAU_ALIGNMENT 0
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* if using hardware crypto and have alignment requirements, specify the
|
/* if using hardware crypto and have alignment requirements, specify the
|
||||||
@@ -1289,7 +1305,7 @@ extern void uITRON4_free(void *p) ;
|
|||||||
#define WOLFSSL_GENERAL_ALIGNMENT 16
|
#define WOLFSSL_GENERAL_ALIGNMENT 16
|
||||||
#elif defined(XSTREAM_ALIGN)
|
#elif defined(XSTREAM_ALIGN)
|
||||||
#define WOLFSSL_GENERAL_ALIGNMENT 4
|
#define WOLFSSL_GENERAL_ALIGNMENT 4
|
||||||
#elif defined(FREESCALE_MMCAU)
|
#elif defined(FREESCALE_MMCAU) || defined(FREESCALE_MMCAU_CLASSIC)
|
||||||
#define WOLFSSL_GENERAL_ALIGNMENT WOLFSSL_MMCAU_ALIGNMENT
|
#define WOLFSSL_GENERAL_ALIGNMENT WOLFSSL_MMCAU_ALIGNMENT
|
||||||
#else
|
#else
|
||||||
#define WOLFSSL_GENERAL_ALIGNMENT 0
|
#define WOLFSSL_GENERAL_ALIGNMENT 0
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#ifndef WOLF_CRYPT_PORT_H
|
#ifndef WOLF_CRYPT_PORT_H
|
||||||
#define WOLF_CRYPT_PORT_H
|
#define WOLF_CRYPT_PORT_H
|
||||||
|
|
||||||
|
#include <wolfssl/wolfcrypt/settings.h>
|
||||||
#include <wolfssl/wolfcrypt/visibility.h>
|
#include <wolfssl/wolfcrypt/visibility.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
Reference in New Issue
Block a user