Fix SMS4-XTS bug

This commit is contained in:
Zhi Guan
2019-08-01 09:15:08 +08:00
parent fa68930083
commit 1811f1b51d
2 changed files with 16 additions and 23 deletions

View File

@@ -107,29 +107,22 @@ static int sms4_xts_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr)
static int sms4_xts_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
const unsigned char *iv, int enc)
{
EVP_SMS4_XTS_CTX *xctx = EVP_C_DATA(EVP_SMS4_XTS_CTX,ctx);
EVP_SMS4_XTS_CTX *xctx = EVP_C_DATA(EVP_SMS4_XTS_CTX, ctx);
if (!iv && !key)
return 1;
if (key)
do {
xctx->stream = NULL;
/* key_len is two SMS4 keys */
(void)0; /* terminate potentially open 'else' */
if (enc) {
sms4_set_encrypt_key(&xctx->ks1.ks, key);
xctx->xts.block1 = (block128_f)sms4_encrypt;
} else {
sms4_set_decrypt_key(&xctx->ks1.ks, key);
xctx->xts.block1 = (block128_f)sms4_encrypt;
}
sms4_set_encrypt_key(&xctx->ks2.ks, key + EVP_CIPHER_CTX_key_length(ctx)/2);
xctx->xts.block2 = (block128_f)sms4_encrypt;
xctx->xts.key1 = &xctx->ks1;
} while (0);
if (key) {
xctx->stream = NULL;
if (enc) {
sms4_set_encrypt_key(&xctx->ks1.ks, key);
} else {
sms4_set_decrypt_key(&xctx->ks1.ks, key);
}
sms4_set_encrypt_key(&xctx->ks2.ks, key + SMS4_KEY_LENGTH);
xctx->xts.block1 = (block128_f)sms4_encrypt;
xctx->xts.block2 = (block128_f)sms4_encrypt;
xctx->xts.key1 = &xctx->ks1;
}
if (iv) {
xctx->xts.key2 = &xctx->ks2;
@@ -167,7 +160,7 @@ static int sms4_xts_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
static const EVP_CIPHER sms4_xts = {
NID_sms4_xts,
SMS4_XTS_BLOCK_SIZE,
SMS4_KEY_LENGTH,
SMS4_KEY_LENGTH * 2,
SMS4_IV_LENGTH,
SMS4_XTS_FLAGS,
sms4_xts_init_key,

View File

@@ -41,9 +41,9 @@ extern "C" {
*/
# define OPENSSL_VERSION_NUMBER 0x1010004fL
# ifdef OPENSSL_FIPS
# define OPENSSL_VERSION_TEXT "GmSSL 2.5.2 - OpenSSL 1.1.0d-fips 18 July 2019"
# define OPENSSL_VERSION_TEXT "GmSSL 2.5.2 - OpenSSL 1.1.0d-fips 1 Aug 2019"
# else
# define OPENSSL_VERSION_TEXT "GmSSL 2.5.2 - OpenSSL 1.1.0d 18 July 2019"
# define OPENSSL_VERSION_TEXT "GmSSL 2.5.2 - OpenSSL 1.1.0d 1 Aug 2019"
# endif
/*-