X-Git-Url: https://git.p6c8.net/jirafeau.git/blobdiff_plain/b1c96930b34b47dd1c8f6321d62beeceb87afb00..f2e7a2cb00bebc22671aa02035242596dbce46de:/lib/functions.php diff --git a/lib/functions.php b/lib/functions.php index fff8c44..a92509b 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -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);