Key derivation for encrypted PEM uses salt length of 8 in OpenSSL

This commit is contained in:
Sean Parkinson 2018-04-18 12:37:06 +10:00
parent a116b5ba83
commit 6689ee965a
2 changed files with 7 additions and 3 deletions

View File

@ -262,6 +262,8 @@ int wc_BufferKeyDecrypt(EncryptedInfo* info, byte* der, word32 derSz,
if (Base16_Decode(info->iv, info->ivSz, info->iv, &info->ivSz) != 0) {
return BUFFER_E;
}
if (info->ivSz < PKCS5_SALT_SZ)
return BUFFER_E;
#ifdef WOLFSSL_SMALL_STACK
key = (byte*)XMALLOC(WC_MAX_SYM_KEY_SIZE, NULL, DYNAMIC_TYPE_SYMETRIC_KEY);
@ -271,7 +273,7 @@ int wc_BufferKeyDecrypt(EncryptedInfo* info, byte* der, word32 derSz,
#endif
#ifndef NO_PWDBASED
if ((ret = wc_PBKDF1(key, password, passwordSz, info->iv, info->ivSz, 1,
if ((ret = wc_PBKDF1(key, password, passwordSz, info->iv, PKCS5_SALT_SZ, 1,
info->keySz, hashType)) != 0) {
#ifdef WOLFSSL_SMALL_STACK
XFREE(key, NULL, DYNAMIC_TYPE_SYMETRIC_KEY);
@ -314,7 +316,7 @@ int wc_BufferKeyEncrypt(EncryptedInfo* info, byte* der, word32 derSz,
(void)hashType;
if (der == NULL || password == NULL || info == NULL || info->keySz == 0 ||
info->ivSz == 0) {
info->ivSz < PKCS5_SALT_SZ) {
return BAD_FUNC_ARG;
}
@ -326,7 +328,7 @@ int wc_BufferKeyEncrypt(EncryptedInfo* info, byte* der, word32 derSz,
#endif /* WOLFSSL_SMALL_STACK */
#ifndef NO_PWDBASED
if ((ret = wc_PBKDF1(key, password, passwordSz, info->iv, info->ivSz, 1,
if ((ret = wc_PBKDF1(key, password, passwordSz, info->iv, PKCS5_SALT_SZ, 1,
info->keySz, hashType)) != 0) {
#ifdef WOLFSSL_SMALL_STACK
XFREE(key, NULL, DYNAMIC_TYPE_SYMETRIC_KEY);

View File

@ -215,6 +215,8 @@ enum Misc_ASN {
MAX_TIME_STRING_SZ = 25, /* Max length of formatted time string */
#endif
PKCS5_SALT_SZ = 8,
PEM_LINE_LEN = 80, /* PEM line max + fudge */
};