mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-31 19:24:42 +02:00
Write next IV in wolfSSL_DES_ede3_cbc_encrypt
This commit is contained in:
11
src/ssl.c
11
src/ssl.c
@@ -19840,6 +19840,9 @@ size_t wolfSSL_get_client_random(const WOLFSSL* ssl, unsigned char* out,
|
|||||||
|
|
||||||
WOLFSSL_ENTER("wolfSSL_DES_ede3_cbc_encrypt");
|
WOLFSSL_ENTER("wolfSSL_DES_ede3_cbc_encrypt");
|
||||||
|
|
||||||
|
if (sz <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
XMEMSET(key, 0, sizeof(key));
|
XMEMSET(key, 0, sizeof(key));
|
||||||
XMEMCPY(key, *ks1, DES_BLOCK_SIZE);
|
XMEMCPY(key, *ks1, DES_BLOCK_SIZE);
|
||||||
XMEMCPY(&key[DES_BLOCK_SIZE], *ks2, DES_BLOCK_SIZE);
|
XMEMCPY(&key[DES_BLOCK_SIZE], *ks2, DES_BLOCK_SIZE);
|
||||||
@@ -19867,6 +19870,10 @@ size_t wolfSSL_get_client_random(const WOLFSSL* ssl, unsigned char* out,
|
|||||||
ret = wc_AsyncWait(ret, &des.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &des.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
(void)ret; /* ignore return codes for processing */
|
(void)ret; /* ignore return codes for processing */
|
||||||
|
XMEMCPY(ivec, output+blk*DES_BLOCK_SIZE, DES_BLOCK_SIZE);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
XMEMCPY(ivec, output+(blk-1)*DES_BLOCK_SIZE, DES_BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -19885,6 +19892,10 @@ size_t wolfSSL_get_client_random(const WOLFSSL* ssl, unsigned char* out,
|
|||||||
#endif
|
#endif
|
||||||
(void)ret; /* ignore return codes for processing */
|
(void)ret; /* ignore return codes for processing */
|
||||||
XMEMCPY(output+sz-lb_sz, lastblock, lb_sz);
|
XMEMCPY(output+sz-lb_sz, lastblock, lb_sz);
|
||||||
|
XMEMCPY(ivec, input+sz-lb_sz, DES_BLOCK_SIZE);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
XMEMCPY(ivec, input+(blk-1)*DES_BLOCK_SIZE, DES_BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -7427,6 +7427,9 @@ WOLFSSL_TEST_SUBROUTINE int des3_test(void)
|
|||||||
};
|
};
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
|
#if defined(OPENSSL_EXTRA) && !defined(WOLFCRYPT_ONLY)
|
||||||
|
size_t i;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
ret = wc_Des3Init(&enc, HEAP_HINT, devId);
|
ret = wc_Des3Init(&enc, HEAP_HINT, devId);
|
||||||
@@ -7463,7 +7466,7 @@ WOLFSSL_TEST_SUBROUTINE int des3_test(void)
|
|||||||
|
|
||||||
#if defined(OPENSSL_EXTRA) && !defined(WOLFCRYPT_ONLY)
|
#if defined(OPENSSL_EXTRA) && !defined(WOLFCRYPT_ONLY)
|
||||||
/* test the same vectors with using compatibility layer */
|
/* test the same vectors with using compatibility layer */
|
||||||
{
|
for (i = 0; i < sizeof(vector); i += DES_BLOCK_SIZE){
|
||||||
DES_key_schedule ks1;
|
DES_key_schedule ks1;
|
||||||
DES_key_schedule ks2;
|
DES_key_schedule ks2;
|
||||||
DES_key_schedule ks3;
|
DES_key_schedule ks3;
|
||||||
@@ -7472,15 +7475,21 @@ WOLFSSL_TEST_SUBROUTINE int des3_test(void)
|
|||||||
XMEMCPY(ks1, key3, sizeof(DES_key_schedule));
|
XMEMCPY(ks1, key3, sizeof(DES_key_schedule));
|
||||||
XMEMCPY(ks2, key3 + 8, sizeof(DES_key_schedule));
|
XMEMCPY(ks2, key3 + 8, sizeof(DES_key_schedule));
|
||||||
XMEMCPY(ks3, key3 + 16, sizeof(DES_key_schedule));
|
XMEMCPY(ks3, key3 + 16, sizeof(DES_key_schedule));
|
||||||
XMEMCPY(iv4, iv3, sizeof(DES_cblock));
|
|
||||||
|
|
||||||
XMEMSET(plain, 0, sizeof(plain));
|
XMEMSET(plain, 0, sizeof(plain));
|
||||||
XMEMSET(cipher, 0, sizeof(cipher));
|
XMEMSET(cipher, 0, sizeof(cipher));
|
||||||
|
|
||||||
DES_ede3_cbc_encrypt(vector, cipher, sizeof(vector), &ks1, &ks2, &ks3,
|
/* Use i as the splitter */
|
||||||
|
XMEMCPY(iv4, iv3, sizeof(DES_cblock));
|
||||||
|
DES_ede3_cbc_encrypt(vector, cipher, i, &ks1, &ks2, &ks3,
|
||||||
&iv4, DES_ENCRYPT);
|
&iv4, DES_ENCRYPT);
|
||||||
DES_ede3_cbc_encrypt(cipher, plain, sizeof(cipher), &ks1, &ks2, &ks3,
|
DES_ede3_cbc_encrypt(vector + i, cipher + i, sizeof(vector) - i, &ks1,
|
||||||
|
&ks2, &ks3, &iv4, DES_ENCRYPT);
|
||||||
|
XMEMCPY(iv4, iv3, sizeof(DES_cblock));
|
||||||
|
DES_ede3_cbc_encrypt(cipher, plain, i, &ks1, &ks2, &ks3,
|
||||||
&iv4, DES_DECRYPT);
|
&iv4, DES_DECRYPT);
|
||||||
|
DES_ede3_cbc_encrypt(cipher + i, plain + i, sizeof(cipher) - i, &ks1,
|
||||||
|
&ks2, &ks3, &iv4, DES_DECRYPT);
|
||||||
|
|
||||||
if (XMEMCMP(plain, vector, sizeof(plain)))
|
if (XMEMCMP(plain, vector, sizeof(plain)))
|
||||||
return WC_TEST_RET_ENC_NC;
|
return WC_TEST_RET_ENC_NC;
|
||||||
|
Reference in New Issue
Block a user