mirror of
https://gitlab.com/mojo42/Jirafeau.git
synced 2025-04-22 12:36:17 +02:00
Centralize decryption in jirafeau_decrypt_file()
Previously the decryption code in f.php was a copy of `jirafeau_decrypt_file()`. Now, we let the funtion write to `php://output`. `jirafeau_decrypt_file()` was previously broken because of me doing copy-paste...
This commit is contained in:
parent
b1c96930b3
commit
f2e7a2cb00
24
f.php
24
f.php
@ -248,29 +248,9 @@ if ($cfg['litespeed_workaround']) {
|
||||
$_SERVER['QUERY_STRING'] . '&litespeed_workaround=phase2');
|
||||
}
|
||||
}
|
||||
/* Read encrypted file. */
|
||||
/* Read encrypted file (Sodium mode). */
|
||||
elseif ($link['crypted']) {
|
||||
/* Decrypt file. */
|
||||
$r = fopen(VAR_FILES . $p . $link['hash'], 'rb');
|
||||
$fs = fstat($r)['size'];
|
||||
|
||||
$crypt_header = fread($r, SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES);
|
||||
|
||||
/* Init module. */
|
||||
$crypt_state = sodium_crypto_secretstream_xchacha20poly1305_init_pull($crypt_header, $crypt_key);
|
||||
|
||||
/* Decrypt file. */
|
||||
|
||||
for ($i = SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES; $i < $fs; $i += JIRAFEAU_SODIUM_CHUNKSIZE + SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES) {
|
||||
$to_dec = fread($r, JIRAFEAU_SODIUM_CHUNKSIZE + SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES);
|
||||
[$dec, $crypt_tag] = sodium_crypto_secretstream_xchacha20poly1305_pull($crypt_state, $to_dec);
|
||||
echo $dec;
|
||||
}
|
||||
|
||||
fclose($r);
|
||||
|
||||
/* Cleanup. */
|
||||
sodium_memzero($crypt_state);
|
||||
jirafeau_decrypt_file(VAR_FILES . $p . $link['hash'], 'php://output', $crypt_key);
|
||||
}
|
||||
/* Read encrypted file (legacy mode using mcrypt). */
|
||||
elseif ($link['crypted_legacy']) {
|
||||
|
@ -1267,22 +1267,27 @@ function jirafeau_decrypt_file($fp_src, $fp_dst, $k)
|
||||
}
|
||||
|
||||
/* Decrypt file. */
|
||||
$r = fopen(VAR_FILES . $p . $link['hash'], 'rb');
|
||||
$r = fopen($fp_src, 'rb');
|
||||
$w = fopen($fp_dst, 'wb');
|
||||
|
||||
$crypt_header = fread($r, SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES);
|
||||
|
||||
/* Init module. */
|
||||
$crypt_state = sodium_crypto_secretstream_xchacha20poly1305_init_pull($crypt_header, $crypt_key);
|
||||
$crypt_state = sodium_crypto_secretstream_xchacha20poly1305_init_pull($crypt_header, $k);
|
||||
|
||||
/* Decrypt file. */
|
||||
|
||||
for ($i = SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES; $i < $fs; $i += JIRAFEAU_SODIUM_CHUNKSIZE + SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES) {
|
||||
$to_dec = fread($r, JIRAFEAU_SODIUM_CHUNKSIZE + SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES);
|
||||
[$dec, $crypt_tag] = sodium_crypto_secretstream_xchacha20poly1305_pull($crypt_state, $to_dec);
|
||||
echo $dec;
|
||||
|
||||
if (fwrite($w, $dec) === false) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
fclose($r);
|
||||
fclose($w);
|
||||
|
||||
/* Cleanup. */
|
||||
sodium_memzero($crypt_state);
|
||||
|
Loading…
x
Reference in New Issue
Block a user