Re-implemented the block-preserving encryption restore. In the process, fixed all known bugs in handling non-sparse file restoration. Changes include:
- Removed the "chunk_size" implementation
- Renamed crypto_count to crypto_buf_len, and crypto_size to crypto_packet_len.
- Removed unnecessary looping in extract_data()
- Broke out sparse block handling into its own function
- Laid some groundwork for adding sparse + encryption support
Testing:
- Encryption regression tests now pass.
- Tested sparse file handling changes without encryption enabled.
Known encryption-related bugs remaining:
- Restoring resource forks is broken; need to set up a seperate decryption context.
- The latest changes to digest handling with sparse files breaks file signatures.
- Sparse files are not currently supported when encrypting.