mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-06 21:50:52 +02:00
Fix -Wcast-qual errors by replacing void* with typed id/label params in _common helpers and add input validation.
This commit is contained in:
+26
-12
@@ -13567,8 +13567,8 @@ int wc_AesCcmEncrypt_ex(Aes* aes, byte* out, const byte* in, word32 sz,
|
||||
#endif
|
||||
|
||||
static Aes* _AesNew_common(void* heap, int devId, int *result_code,
|
||||
int aesInitType, const void* aesInitData,
|
||||
int aesInitDataLen)
|
||||
int aesInitType, unsigned char* id,
|
||||
int idLen, const char* label)
|
||||
{
|
||||
int ret;
|
||||
Aes* aes = (Aes*)XMALLOC(sizeof(Aes), heap, DYNAMIC_TYPE_AES);
|
||||
@@ -13579,16 +13579,29 @@ static Aes* _AesNew_common(void* heap, int devId, int *result_code,
|
||||
switch (aesInitType) {
|
||||
#ifdef WOLF_PRIVATE_KEY_ID
|
||||
case AES_NEW_INIT_ID:
|
||||
ret = wc_AesInit_Id(aes, (unsigned char*)(uintptr_t)aesInitData,
|
||||
aesInitDataLen, heap, devId);
|
||||
if (id == NULL || idLen == 0 || label != NULL) {
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
else {
|
||||
ret = wc_AesInit_Id(aes, id, idLen, heap, devId);
|
||||
}
|
||||
break;
|
||||
case AES_NEW_INIT_LABEL:
|
||||
ret = wc_AesInit_Label(aes, (const char*)aesInitData,
|
||||
heap, devId);
|
||||
if (label == NULL || id != NULL || idLen != 0) {
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
else {
|
||||
ret = wc_AesInit_Label(aes, label, heap, devId);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
ret = wc_AesInit(aes, heap, devId);
|
||||
if (id != NULL || idLen != 0 || label != NULL) {
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
else {
|
||||
ret = wc_AesInit(aes, heap, devId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (ret != 0) {
|
||||
@@ -13597,8 +13610,9 @@ static Aes* _AesNew_common(void* heap, int devId, int *result_code,
|
||||
}
|
||||
}
|
||||
(void)aesInitType;
|
||||
(void)aesInitData;
|
||||
(void)aesInitDataLen;
|
||||
(void)id;
|
||||
(void)idLen;
|
||||
(void)label;
|
||||
|
||||
if (result_code != NULL) {
|
||||
*result_code = ret;
|
||||
@@ -13610,7 +13624,7 @@ static Aes* _AesNew_common(void* heap, int devId, int *result_code,
|
||||
Aes* wc_AesNew(void* heap, int devId, int *result_code)
|
||||
{
|
||||
return _AesNew_common(heap, devId, result_code,
|
||||
AES_NEW_INIT_PLAIN, NULL, 0);
|
||||
AES_NEW_INIT_PLAIN, NULL, 0, NULL);
|
||||
}
|
||||
|
||||
#ifdef WOLF_PRIVATE_KEY_ID
|
||||
@@ -13618,14 +13632,14 @@ Aes* wc_AesNew_Id(unsigned char* id, int len, void* heap, int devId,
|
||||
int *result_code)
|
||||
{
|
||||
return _AesNew_common(heap, devId, result_code,
|
||||
AES_NEW_INIT_ID, id, len);
|
||||
AES_NEW_INIT_ID, id, len, NULL);
|
||||
}
|
||||
|
||||
Aes* wc_AesNew_Label(const char* label, void* heap, int devId,
|
||||
int *result_code)
|
||||
{
|
||||
return _AesNew_common(heap, devId, result_code,
|
||||
AES_NEW_INIT_LABEL, label, 0);
|
||||
AES_NEW_INIT_LABEL, NULL, 0, label);
|
||||
}
|
||||
#endif /* WOLF_PRIVATE_KEY_ID */
|
||||
|
||||
|
||||
+34
-20
@@ -106,8 +106,8 @@ void ShiftAndXorRb(byte* out, byte* in)
|
||||
|
||||
static int _InitCmac_common(Cmac* cmac, const byte* key, word32 keySz,
|
||||
int type, void* unused, void* heap, int devId,
|
||||
int aesInitType, const void* aesInitData,
|
||||
int aesInitDataLen)
|
||||
int aesInitType, unsigned char* id, int idLen,
|
||||
const char* label)
|
||||
{
|
||||
int ret = 0;
|
||||
#if defined(WOLFSSL_SE050) && defined(WOLFSSL_SE050_CRYPT)
|
||||
@@ -128,23 +128,24 @@ static int _InitCmac_common(Cmac* cmac, const byte* key, word32 keySz,
|
||||
* inspect them to determine the hardware key slot. */
|
||||
#ifdef WOLF_PRIVATE_KEY_ID
|
||||
cmac->aesInitType = aesInitType;
|
||||
if (aesInitType == CMAC_AES_INIT_ID && aesInitData != NULL &&
|
||||
aesInitDataLen > 0 &&
|
||||
aesInitDataLen <= (int)sizeof(cmac->id)) {
|
||||
XMEMCPY(cmac->id, aesInitData, (word32)aesInitDataLen);
|
||||
cmac->idLen = aesInitDataLen;
|
||||
if (aesInitType == CMAC_AES_INIT_ID && id != NULL &&
|
||||
idLen > 0 &&
|
||||
idLen <= (int)sizeof(cmac->id)) {
|
||||
XMEMCPY(cmac->id, id, (word32)idLen);
|
||||
cmac->idLen = idLen;
|
||||
}
|
||||
else if (aesInitType == CMAC_AES_INIT_LABEL && aesInitData != NULL) {
|
||||
int labelLen = (int)XSTRLEN((const char*)aesInitData);
|
||||
else if (aesInitType == CMAC_AES_INIT_LABEL && label != NULL) {
|
||||
int labelLen = (int)XSTRLEN(label);
|
||||
if (labelLen > 0 && labelLen < (int)sizeof(cmac->label)) {
|
||||
XMEMCPY(cmac->label, aesInitData, (word32)labelLen);
|
||||
XMEMCPY(cmac->label, label, (word32)labelLen);
|
||||
cmac->labelLen = labelLen;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
(void)aesInitType;
|
||||
(void)aesInitData;
|
||||
(void)aesInitDataLen;
|
||||
(void)id;
|
||||
(void)idLen;
|
||||
(void)label;
|
||||
|
||||
#ifdef WOLF_CRYPTO_CB
|
||||
/* Set devId regardless of value (invalid or not) */
|
||||
@@ -178,16 +179,29 @@ static int _InitCmac_common(Cmac* cmac, const byte* key, word32 keySz,
|
||||
switch (aesInitType) {
|
||||
#ifdef WOLF_PRIVATE_KEY_ID
|
||||
case CMAC_AES_INIT_ID:
|
||||
ret = wc_AesInit_Id(&cmac->aes, (unsigned char*)(uintptr_t)aesInitData,
|
||||
aesInitDataLen, heap, devId);
|
||||
if (id == NULL || idLen == 0 || label != NULL) {
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
else {
|
||||
ret = wc_AesInit_Id(&cmac->aes, id, idLen, heap, devId);
|
||||
}
|
||||
break;
|
||||
case CMAC_AES_INIT_LABEL:
|
||||
ret = wc_AesInit_Label(&cmac->aes, (const char*)aesInitData,
|
||||
heap, devId);
|
||||
if (label == NULL || id != NULL || idLen != 0) {
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
else {
|
||||
ret = wc_AesInit_Label(&cmac->aes, label, heap, devId);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
ret = wc_AesInit(&cmac->aes, heap, devId);
|
||||
if (id != NULL || idLen != 0 || label != NULL) {
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
else {
|
||||
ret = wc_AesInit(&cmac->aes, heap, devId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (ret != 0) {
|
||||
@@ -238,7 +252,7 @@ int wc_InitCmac_ex(Cmac* cmac, const byte* key, word32 keySz,
|
||||
int type, void* unused, void* heap, int devId)
|
||||
{
|
||||
return _InitCmac_common(cmac, key, keySz, type, unused, heap, devId,
|
||||
CMAC_AES_INIT_PLAIN, NULL, 0);
|
||||
CMAC_AES_INIT_PLAIN, NULL, 0, NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -261,7 +275,7 @@ int wc_InitCmac_Id(Cmac* cmac, const byte* key, word32 keySz,
|
||||
void* heap, int devId)
|
||||
{
|
||||
return _InitCmac_common(cmac, key, keySz, type, unused, heap, devId,
|
||||
CMAC_AES_INIT_ID, id, len);
|
||||
CMAC_AES_INIT_ID, id, len, NULL);
|
||||
}
|
||||
|
||||
|
||||
@@ -271,7 +285,7 @@ int wc_InitCmac_Label(Cmac* cmac, const byte* key, word32 keySz,
|
||||
void* heap, int devId)
|
||||
{
|
||||
return _InitCmac_common(cmac, key, keySz, type, unused, heap, devId,
|
||||
CMAC_AES_INIT_LABEL, label, 0);
|
||||
CMAC_AES_INIT_LABEL, NULL, 0, label);
|
||||
}
|
||||
#endif /* WOLF_PRIVATE_KEY_ID */
|
||||
|
||||
|
||||
+26
-12
@@ -192,8 +192,8 @@ static void wc_RsaCleanup(RsaKey* key)
|
||||
#endif
|
||||
|
||||
static RsaKey* _NewRsaKey_common(void* heap, int devId, int *result_code,
|
||||
int rsaInitType, const void* rsaInitData,
|
||||
int rsaInitDataLen)
|
||||
int rsaInitType, unsigned char* id,
|
||||
int idLen, const char* label)
|
||||
{
|
||||
int ret;
|
||||
RsaKey* key = (RsaKey*)XMALLOC(sizeof(RsaKey), heap, DYNAMIC_TYPE_RSA);
|
||||
@@ -204,16 +204,29 @@ static RsaKey* _NewRsaKey_common(void* heap, int devId, int *result_code,
|
||||
switch (rsaInitType) {
|
||||
#ifdef WOLF_PRIVATE_KEY_ID
|
||||
case RSA_NEW_INIT_ID:
|
||||
ret = wc_InitRsaKey_Id(key, (unsigned char*)(uintptr_t)rsaInitData,
|
||||
rsaInitDataLen, heap, devId);
|
||||
if (id == NULL || idLen == 0 || label != NULL) {
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
else {
|
||||
ret = wc_InitRsaKey_Id(key, id, idLen, heap, devId);
|
||||
}
|
||||
break;
|
||||
case RSA_NEW_INIT_LABEL:
|
||||
ret = wc_InitRsaKey_Label(key, (const char*)rsaInitData,
|
||||
heap, devId);
|
||||
if (label == NULL || id != NULL || idLen != 0) {
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
else {
|
||||
ret = wc_InitRsaKey_Label(key, label, heap, devId);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
ret = wc_InitRsaKey_ex(key, heap, devId);
|
||||
if (id != NULL || idLen != 0 || label != NULL) {
|
||||
ret = BAD_FUNC_ARG;
|
||||
}
|
||||
else {
|
||||
ret = wc_InitRsaKey_ex(key, heap, devId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (ret != 0) {
|
||||
@@ -222,8 +235,9 @@ static RsaKey* _NewRsaKey_common(void* heap, int devId, int *result_code,
|
||||
}
|
||||
}
|
||||
(void)rsaInitType;
|
||||
(void)rsaInitData;
|
||||
(void)rsaInitDataLen;
|
||||
(void)id;
|
||||
(void)idLen;
|
||||
(void)label;
|
||||
|
||||
if (result_code != NULL) {
|
||||
*result_code = ret;
|
||||
@@ -235,7 +249,7 @@ static RsaKey* _NewRsaKey_common(void* heap, int devId, int *result_code,
|
||||
RsaKey* wc_NewRsaKey(void* heap, int devId, int *result_code)
|
||||
{
|
||||
return _NewRsaKey_common(heap, devId, result_code,
|
||||
RSA_NEW_INIT_PLAIN, NULL, 0);
|
||||
RSA_NEW_INIT_PLAIN, NULL, 0, NULL);
|
||||
}
|
||||
|
||||
#ifdef WOLF_PRIVATE_KEY_ID
|
||||
@@ -243,14 +257,14 @@ RsaKey* wc_NewRsaKey_Id(unsigned char* id, int len, void* heap, int devId,
|
||||
int *result_code)
|
||||
{
|
||||
return _NewRsaKey_common(heap, devId, result_code,
|
||||
RSA_NEW_INIT_ID, id, len);
|
||||
RSA_NEW_INIT_ID, id, len, NULL);
|
||||
}
|
||||
|
||||
RsaKey* wc_NewRsaKey_Label(const char* label, void* heap, int devId,
|
||||
int *result_code)
|
||||
{
|
||||
return _NewRsaKey_common(heap, devId, result_code,
|
||||
RSA_NEW_INIT_LABEL, label, 0);
|
||||
RSA_NEW_INIT_LABEL, NULL, 0, label);
|
||||
}
|
||||
#endif /* WOLF_PRIVATE_KEY_ID */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user