Add RC4 CryptoAPI / Standard AES decryption and DateTimeExtended support#4
Merged
Merged
Conversation
In addition to the existing Agile Encryption, add decryption support for RC4 CryptoAPI and Standard/NonStandard AES. This enables reading password-protected .accdb files in Access 2007 encryption format. - Rename agile.rs to crypto.rs, consolidating all three schemes - RC4 CryptoAPI: implement password verification and page decryption - Standard/NonStandard AES: implement AES-ECB password verification and page decryption - Add ecb crate dependency - Harden encryption parameter validation (header_size overflow prevention, key_size and verifier_hash_size range checks, rejection of malformed EncryptionInfo) - Add encryption specification documentation (English and Japanese) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add crypto-level parse and verify tests using real .accdb files for RC4 CryptoAPI and NonStandard AES (matching existing Agile test) - Add validation tests with synthetic data: EncryptionInfo too short, header_size overflow, invalid RC4/AES key sizes, invalid verifier_hash_size (zero and >20) - Strengthen nonstandard_aes_read_table to verify actual row values (ID=1, Field1="test") Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add DateTimeExtended variant to ColumnType enum (0x14, 42 bytes fixed) - Add format_ext_datetime() to timestamp.rs for ISO 8601 formatting - Add Value::DateTimeExtended variant and parsing logic in data.rs - Add DDL type mappings for all 4 dialects (Access/PostgreSQL/MySQL/SQLite) - Add DateTimeExtended handling to CLI export and prop commands - Add unit tests and integration tests with extDateTestV2019.accdb Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Create testdata/SOURCES.md recording the origin of all test files (Jackcess / jackcessencrypt / independently created) - Add jackcessencrypt to acknowledgments in README.md / README.ja.md with link to SOURCES.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ntegration - Add Agile encryption data read tests (db2007-enc.accdb, db2013-enc.accdb, enc_vbaV2007.accdb) - Add Jet RC4 (.mdb) data read tests (v2000, v2003, overflow) - Add CLI integration tests for RC4 CryptoAPI / NonStandard AES / Agile (tables, export, schema) - Add test data db2007-enc.accdb and db2013-enc.accdb from jackcessencrypt - Fix SOURCES.md source URL and upstream path for jackcessencrypt Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add AES-192 CBC decryption support (aes_cbc_decrypt, decrypt_page_agile) - Wrap intermediate secret values with Zeroizing<Vec<u8>> in 6 crypto functions (derive_key, verify_password, verify_password_rc4_cryptoapi, verify_password_standard_aes, iterate_hash_sha1, derive_standard_aes_key) - Update README (EN/JA) Features/Limitations to list all supported encryption schemes (Agile, RC4 CryptoAPI, Standard/NonStandard AES) - Fix jackcessencrypt URL to jahlborn/jackcessencrypt; generalize MS-OFFCRYPTO description - Add comment explaining absence of Standard AES test (no test data available) - Document why DateTimeExtended uses String representation - Add 4 boundary-value tests for parse_ext_datetime (short buffer, all zeros, non-UTF-8, non-digit) - Extract shared CLI test helpers (test_data_path, skip_if_missing!, jetdb_bin) into common/mod.rs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Results were not published anywhere; both checks remain available locally via scripts/quality-check.sh. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Verify the declared MSRV with `cargo check` on Rust 1.85. Runs in parallel with clippy and audit, as a prerequisite for test. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Verification
scripts/quality-check.shall passed (test, clippy, audit, doc, coverage 94.96%, complexity)🤖 Generated with Claude Code