Merge pull request #8864 from kojiws/improve_pkcs12_export_params

Apply 16 bytes salt length for PBES2 key encryption on wc_PKCS12_create()
master
David Garske 2025-06-13 14:12:37 -07:00 committed by GitHub
commit 05ff12969e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 7 additions and 1 deletions

View File

@ -1830,6 +1830,8 @@ static int wc_PKCS12_shroud_key(WC_PKCS12* pkcs12, WC_RNG* rng,
word32 totalSz = 0; word32 totalSz = 0;
int ret; int ret;
byte* pkcs8Key = NULL; byte* pkcs8Key = NULL;
byte salt[PKCS5V2_SALT_SZ]; /* PKCS5V2_SALT_SZ > PKCS5_SALT_SZ */
word32 saltSz = 0;
int vPKCS = -1; int vPKCS = -1;
int outAlgo = -1; int outAlgo = -1;
@ -1875,9 +1877,13 @@ static int wc_PKCS12_shroud_key(WC_PKCS12* pkcs12, WC_RNG* rng,
&hmacOid)) < 0) { &hmacOid)) < 0) {
return ret; return ret;
} }
saltSz = (outAlgo != PBES2) ? PKCS5_SALT_SZ : PKCS5V2_SALT_SZ;
if ((ret = wc_RNG_GenerateBlock(rng, salt, saltSz)) < 0) {
return ret;
}
ret = TraditionalEnc_ex(key, keySz, pkcs8Key, &sz, pass, passSz, ret = TraditionalEnc_ex(key, keySz, pkcs8Key, &sz, pass, passSz,
vPKCS, outAlgo, blkOid, NULL, 0, itt, hmacOid, rng, heap); vPKCS, outAlgo, blkOid, salt, saltSz, itt, hmacOid, rng, heap);
} }
if (ret == WC_NO_ERR_TRACE(LENGTH_ONLY_E)) { if (ret == WC_NO_ERR_TRACE(LENGTH_ONLY_E)) {
*outSz = sz + MAX_LENGTH_SZ + 1; *outSz = sz + MAX_LENGTH_SZ + 1;