Defuse\Crypto\File::decryptFileInternal PHP Method

decryptFileInternal() private static method

Decrypts a file with either a key or a password.
private static decryptFileInternal ( string $inputFilename, string $outputFilename, KeyOrPassword $secret )
$inputFilename string
$outputFilename string
$secret KeyOrPassword
    private static function decryptFileInternal($inputFilename, $outputFilename, KeyOrPassword $secret)
    {
        /* Open the input file. */
        $if = @\fopen($inputFilename, 'rb');
        if ($if === false) {
            throw new Ex\IOException('Cannot open input file for decrypting: ' . self::getLastErrorMessage());
        }
        if (\is_callable('\\stream_set_read_buffer')) {
            /* This call can fail, but the only consequence is performance. */
            \stream_set_read_buffer($if, 0);
        }
        /* Open the output file. */
        $of = @\fopen($outputFilename, 'wb');
        if ($of === false) {
            \fclose($if);
            throw new Ex\IOException('Cannot open output file for decrypting: ' . self::getLastErrorMessage());
        }
        if (\is_callable('\\stream_set_write_buffer')) {
            /* This call can fail, but the only consequence is performance. */
            \stream_set_write_buffer($of, 0);
        }
        /* Perform the decryption. */
        try {
            self::decryptResourceInternal($if, $of, $secret);
        } catch (Ex\CryptoException $ex) {
            \fclose($if);
            \fclose($of);
            throw $ex;
        }
        /* Close the input file. */
        if (\fclose($if) === false) {
            \fclose($of);
            throw new Ex\IOException('Cannot close input file after decrypting');
        }
        /* Close the output file. */
        if (\fclose($of) === false) {
            throw new Ex\IOException('Cannot close output file after decrypting');
        }
    }