feat(backup): sealed backups + printable recovery sheet
'Save a backup' now writes a sealed .tanemaki file (AES-256-GCM under a key HKDF-derived from the root seed; format TANEBK v1, open and stable). Restoring on the same identity is silent; a copy sealed by another identity asks for the printed recovery code (TANE1 base32, typo-tolerant) and adopts that seed — recovering your bank recovers you. Legacy plain exports still restore. Settings gains a recovery sheet (QR + code PDF). BackupBox/RecoveryCode live in commons_core, pure Dart, TDD.
This commit is contained in:
parent
ba87bf2719
commit
d6781870d9
19 changed files with 1016 additions and 81 deletions
|
|
@ -63,7 +63,16 @@
|
|||
"importDone": "Imported: {added} new, {updated} updated",
|
||||
"importCsvDone": "Added {count} entries",
|
||||
"importFailed": "This file could not be read as a Tanemaki copy",
|
||||
"failed": "Something went wrong"
|
||||
"failed": "Something went wrong",
|
||||
"recoveryTitle": "Your recovery code",
|
||||
"recoverySubtitle": "Print it and keep it safe — it opens your copies on a new device",
|
||||
"recoveryIntro": "This code opens your saved copies and brings your bank back on any device. Keep two paper copies in safe places, like your best seed. Anyone holding it can read your copies, so share it with no one.",
|
||||
"recoveryCopy": "Copy",
|
||||
"recoverySave": "Save the sheet",
|
||||
"recoverySheetTitle": "Tanemaki — your recovery sheet",
|
||||
"recoveryPromptTitle": "Enter your recovery code",
|
||||
"recoveryPromptBody": "This copy was saved with another code. Type the code from your recovery sheet to open it.",
|
||||
"recoveryWrongCode": "That code doesn't open this copy"
|
||||
},
|
||||
"about": {
|
||||
"title": "About",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue