X-Git-Url: https://git.p6c8.net/jirafeau.git/blobdiff_plain/76672f43452be5fb86ed140cc15b43c786cd75c2..be4715096f9a63d823da90c405f500d454247989:/f.php diff --git a/f.php b/f.php index 0368d97..854da83 100644 --- a/f.php +++ b/f.php @@ -250,6 +250,30 @@ if ($cfg['litespeed_workaround']) { } /* Read encrypted file. */ 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); +} +/* Read encrypted file (legacy mode using mcrypt). */ +elseif ($link['crypted_legacy']) { /* Init module */ $m = mcrypt_module_open('rijndael-256', '', 'ofb', ''); /* Extract key and iv. */