[GB.OPENSSL]
* BUG: Cipher.DecryptSalted() doesn't return rubbish after the decrypted text anymore
This commit is contained in:
parent
0f072edcbf
commit
fe4f54a3be
1 changed files with 7 additions and 3 deletions
|
@ -327,6 +327,9 @@ BEGIN_METHOD(CipherMethod_EncryptSalted, GB_STRING plain; GB_STRING passwd;
|
||||||
memcpy(salt, STRING(salt), MIN(sizeof(salt), LENGTH(salt)));
|
memcpy(salt, STRING(salt), MIN(sizeof(salt), LENGTH(salt)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// "openssl enc" >= 1.1.0 uses SHA256 by default instead of MD5
|
||||||
|
// EVP_BytesToKey(_method, EVP_sha256(), salt, (uchar *) STRING(passwd),
|
||||||
|
// LENGTH(passwd), ITER, key, iv);
|
||||||
EVP_BytesToKey(_method, EVP_md5(), salt, (uchar *) STRING(passwd),
|
EVP_BytesToKey(_method, EVP_md5(), salt, (uchar *) STRING(passwd),
|
||||||
LENGTH(passwd), ITER, key, iv);
|
LENGTH(passwd), ITER, key, iv);
|
||||||
cipher = do_cipher((uchar *) STRING(plain), LENGTH(plain), key, iv,
|
cipher = do_cipher((uchar *) STRING(plain), LENGTH(plain), key, iv,
|
||||||
|
@ -364,6 +367,9 @@ BEGIN_METHOD(CipherMethod_DecryptSalted, GB_STRING cipher; GB_STRING passwd)
|
||||||
/* salt begins at STRING(cipher) + strlen("Salted__") */
|
/* salt begins at STRING(cipher) + strlen("Salted__") */
|
||||||
memcpy(salt, STRING(cipher) + 8, sizeof(salt));
|
memcpy(salt, STRING(cipher) + 8, sizeof(salt));
|
||||||
|
|
||||||
|
// "openssl enc" >= 1.1.0 uses SHA256 by default instead of MD5
|
||||||
|
// EVP_BytesToKey(_method, EVP_sha256(), salt, (uchar *) STRING(passwd),
|
||||||
|
// LENGTH(passwd), ITER, key, iv);
|
||||||
EVP_BytesToKey(_method, EVP_md5(), salt, (uchar *) STRING(passwd),
|
EVP_BytesToKey(_method, EVP_md5(), salt, (uchar *) STRING(passwd),
|
||||||
LENGTH(passwd), ITER, key, iv);
|
LENGTH(passwd), ITER, key, iv);
|
||||||
cipher = (uchar *) STRING(cipher) + 8 + sizeof(salt);
|
cipher = (uchar *) STRING(cipher) + 8 + sizeof(salt);
|
||||||
|
@ -373,10 +379,8 @@ BEGIN_METHOD(CipherMethod_DecryptSalted, GB_STRING cipher; GB_STRING passwd)
|
||||||
GB.Error(errmsg ? errmsg : "Decryption failed");
|
GB.Error(errmsg ? errmsg : "Decryption failed");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
GB.ReturnString(plain);
|
GB.ReturnNewString(plain, length);
|
||||||
GB.ReturnBorrow();
|
|
||||||
GB.FreeString(&plain);
|
GB.FreeString(&plain);
|
||||||
GB.ReturnRelease();
|
|
||||||
|
|
||||||
END_METHOD
|
END_METHOD
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue