feat: implement PII encryption with AES-256-GCM and key rotation#447
Merged
Conversation
- Added field-level AES-256-GCM encryption for PII fields (email, name, phoneNumber, address, etc.) - Key management with automatic 90-day rotation via HKDF key derivation - Blind indexing for searchable encrypted fields using HMAC-SHA256 with trigram tokenization - PII access audit logging integrated with existing tamper-evident audit chain - Data masking for non-production environments (email, phone, general PII) - Compliance reporting with encryption status, key management, and access summaries - Upgraded SecretsVault from base64 obfuscation to AES-256-GCM encryption at rest
|
@Junman140 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Add batch create from CSV/JSON, batch update with filtering, batch cancel with reason collection, and batch charge for manual billing runs. - contracts/batch: Added CancelReason enum, BatchFilter struct, enhanced result types with skipped_operations tracking - app/services/batchTransactionService.ts: Full rewrite with 4 operation types, CSV parsers, chunked processing, idempotent retry with backoff, result export (CSV/JSON), history persistence, per-item status tracking - app/stores/batchStore.ts: Zustand store with draft management, CSV loading per operation type, execute/retry, export helpers - app/screens/BatchOperationsScreen.tsx: Full UI with operation selector, CSV input, update params/filter modals, cancel reason picker, progress bar, per-item results with status coloring, export buttons, retry failed, history modal - src/screens/ImportScreen.tsx: Added batch operations shortcut banner - src/navigation: Added BatchOperations route to SettingsStack - Updated useBatchTransactions hook and batchStore tests for new API Edge cases handled: partial batch failure, idempotent retry of failed items, large batch memory management via chunked processing (default 50, max 200)
…tance - Add tax types to contracts/types (TaxJurisdiction, TaxExemption, TaxRemittanceReport, NexusRegion, TaxRateChangeEvent) - Add 12 new StorageKey variants for tax state persistence - Enhance invoice contract with full tax system: - Multi-jurisdiction tax lookup (set_tax_jurisdiction/get_tax_jurisdiction_by_location) - Tax exemption lifecycle (register/validate/revoke) with certificate validation - Digital goods classification and taxability rules - Mid-cycle tax rate change proration (calculate_prorated_tax) - Nexus determination with economic thresholds per jurisdiction - Tax remittance report generation and submission - Add 10 contract test cases covering invoice generation, tax exemption, proration, nexus, and remittance - Update frontend types with DigitalGoodsCategory, TaxRemittanceReport, NexusRegion, MidCycleTaxChange
- Add TaxType, TaxJurisdiction, TaxRateEntry, CustomerTaxStatus, DigitalGoodsClass, TaxRemittanceLineItem types - Add new StorageKey variants: TaxRateEntry, CustomerTaxStatus, TaxRemittanceLine, DigitalGoodsClass, TaxRateChangeLogByJdx - Fix StorageKey variant name length limits (ProxyPrevImplCount, TaxRemittanceReportByJdx) - Enhance invoice contract with multi-jurisdiction tax lookup with fallback chain - Add tax-exempt customer handling with certificate validation and expiry checks - Implement mid-cycle tax rate change proration for existing subscriptions - Add reverse-charge flagging and nexus threshold determination - Add per-invoice/per-jurisdiction remittance line tracking - Add 11 new contract functions and 10 comprehensive test cases - Update subscription contract with new generate_invoice signature - Create TaxService backend with built-in jurisdiction rates, caching, exemption validation, nexus checks, digital goods rules, and remittance report generation - Create taxTypes.ts with full TypeScript type definitions - Extend invoiceStore with tax state management (rates, exemptions, remittance lines, reports, mid-cycle changes) - Add backend TaxService tests covering lookup, exemption, calculation, nexus, and reporting - Update Invoice TypeScript types with TaxJurisdiction, CustomerTaxStatus, TaxRemittanceReport, MidCycleTaxChange and helper utilities - Extend Invoice interface with taxJurisdiction, isTaxExempt, and reverseCharge fields
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.
Closes #373
Summary
Files Changed
New files
backend/services/encryption.ts- Core AES-256-GCM encryption, blind indexing, data maskingbackend/services/keyManager.ts- Key hierarchy with 90-day auto rotation and re-encryption supportbackend/services/piiAudit.ts- PII access audit logging integrated with AuditService chainbackend/services/complianceReport.ts- Compliance reporting with scoring and recommendationsbackend/services/__tests__/encryption.test.ts- Tests for encryption/decryption, blind indexing, maskingbackend/services/__tests__/keyManager.test.ts- Tests for key initialization, rotation, lookupModified files
backend/services/auditTypes.ts- Added PII-specific audit actions (viewed, exported, encrypted, etc.)backend/services/gdpr.ts- Integrated encryption into data export/anonymization with audit loggingbackend/services/index.ts- Exported all new services, types, and utilitiesbackend/secrets/SecretsVault.ts- Upgraded from base64 to AES-256-GCM authenticated encryptionsrc/services/gdpr.ts- Updated frontend GDPR service with encryption-aware response typesTechnical Details