kv-import: 1Password .1pux and CSV import, encrypted export (M5)

New crate kv-import (pure parsing, no store) and kv-ffi/src/import.rs:
- .1pux: accounts -> vaults -> items; Login/Password/Card/Note/Identity mapped, other categories
  as secure notes; unmapped fields appended to notes; attachments and password history reported.
- CSV: 1Password 8 export and generic headers (aliases, BOM, quotes, embedded newlines,
  extra columns into notes).
- Duplicates on (title, username, URL host): skip or add " (imported)".
- Encrypted export KVEX v1: Argon2id (>= account KDF minimum) + XChaCha20-Poly1305,
  authenticated header, padded JSON; restorable through import.
- Caps: 100 MB input, 64 MB decompressed export.data, 10k zip entries, 100k items.
- FFI: VaultCore.import_preview / import_commit / export_encrypted (unlocked only); items are
  sealed, seq-stamped and queued for sync like save_item.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-17 00:36:21 +09:00
co-authored by Claude Opus 5.5
parent 5eb2b622dd
commit 26664e141b
15 changed files with 2052 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
Title,Url,Username,Password,OTPAuth,Favorite,Archived,Tags,Notes
Example Git,https://git.example.com/login,[email protected],correct-horse-battery-staple,otpauth://totp/Example:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Example,true,false,"dev,work","Main code hosting account.
Second line, with a comma and ""quotes""."
Old Forum,https://forum.example.org,alex," leading-space-pw",,false,true,,
Router,,,router-synthetic-pw,,false,false,,Router admin
1 Title Url Username Password OTPAuth Favorite Archived Tags Notes
2 Example Git https://git.example.com/login [email protected] correct-horse-battery-staple otpauth://totp/Example:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Example true false dev,work Main code hosting account. Second line, with a comma and "quotes".
3 Old Forum https://forum.example.org alex leading-space-pw false true
4 Router router-synthetic-pw false false Router admin
+253
View File
@@ -0,0 +1,253 @@
{
"accounts": [
{
"attrs": {
"accountName": "Synthetic Test",
"name": "Alex Example",
"avatar": "",
"email": "[email protected]",
"uuid": "AAAAAAAAAAAAAAAAAAAAAAAAAA",
"domain": "https://example.1password.com/"
},
"vaults": [
{
"attrs": { "uuid": "vaultpersonal00000000000000", "desc": "", "avatar": "", "name": "Personal", "type": "P" },
"items": [
{
"uuid": "item0login0totp000000000000",
"favIndex": 1,
"createdAt": 1614298956,
"updatedAt": 1700000000,
"state": "active",
"categoryUuid": "001",
"details": {
"loginFields": [
{ "value": "[email protected]", "id": "", "name": "email", "fieldType": "E", "designation": "username" },
{ "value": "correct-horse-battery-staple", "id": "", "name": "password", "fieldType": "P", "designation": "password" },
{ "value": "", "id": "", "name": "remember", "fieldType": "C", "designation": "" }
],
"notesPlain": "Main code hosting account.",
"sections": [
{
"title": "",
"name": "add more",
"fields": [
{
"title": "one-time password",
"id": "TOTP_0001",
"value": { "totp": "otpauth://totp/Example:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Example" },
"indexAtSource": 0, "guarded": false, "multiline": false, "dontGenerate": false,
"inputTraits": { "keyboard": "default", "correction": "default", "capitalization": "default" }
}
]
},
{
"title": "Security questions",
"name": "linked items",
"fields": [
{ "title": "First pet", "id": "q1", "value": { "concealed": "Synthetic Fluffy" }, "indexAtSource": 0, "guarded": false, "multiline": false, "dontGenerate": true, "inputTraits": {} },
{ "title": "Recovery codes", "id": "rc", "value": { "string": "1111-2222\n3333-4444" }, "indexAtSource": 1, "guarded": false, "multiline": true, "dontGenerate": false, "inputTraits": {} }
]
}
],
"passwordHistory": [ { "value": "old-synthetic-password", "time": 1600000000 } ]
},
"overview": {
"subtitle": "[email protected]",
"urls": [
{ "label": "", "url": "https://git.example.com/login" },
{ "label": "website", "url": "https://www.example.com" }
],
"title": "Example Git",
"url": "https://git.example.com/login",
"ps": 100, "pbe": 86.2, "pgrng": true,
"tags": ["dev", "work"]
}
},
{
"uuid": "item1login0bare000000000000",
"favIndex": 0,
"createdAt": 1620000000,
"updatedAt": 1620000000,
"state": "archived",
"categoryUuid": "001",
"details": {
"loginFields": [
{ "value": "alex", "id": "", "name": "user", "fieldType": "T", "designation": "username" },
{ "value": " leading-space-pw", "id": "", "name": "pass", "fieldType": "P", "designation": "password" }
],
"notesPlain": "",
"sections": [
{ "title": "", "name": "", "fields": [ { "title": "2FA", "id": "otp2", "value": { "totp": "GEZDGNBVGY3TQOJQ" }, "indexAtSource": 0, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} } ] }
],
"passwordHistory": []
},
"overview": { "subtitle": "alex", "urls": [ { "label": "", "url": "https://forum.example.org" } ], "title": "Old Forum", "url": "https://forum.example.org", "ps": 40, "pbe": 30.0, "pgrng": false }
},
{
"uuid": "item2card000000000000000000",
"favIndex": 0,
"createdAt": 1630000000,
"updatedAt": 1630000000,
"state": "active",
"categoryUuid": "002",
"details": {
"loginFields": [],
"notesPlain": "Travel card.",
"sections": [
{
"title": "",
"name": "",
"fields": [
{ "title": "cardholder name", "id": "cardholder", "value": { "string": "ALEX EXAMPLE" }, "indexAtSource": 0, "guarded": true, "multiline": false, "dontGenerate": false, "inputTraits": {} },
{ "title": "type", "id": "type", "value": { "creditCardType": "visa" }, "indexAtSource": 1, "guarded": true, "multiline": false, "dontGenerate": false, "inputTraits": {} },
{ "title": "number", "id": "ccnum", "value": { "creditCardNumber": "4111111111111111" }, "indexAtSource": 2, "guarded": true, "multiline": false, "dontGenerate": false, "inputTraits": {} },
{ "title": "verification number", "id": "cvv", "value": { "concealed": "123" }, "indexAtSource": 3, "guarded": true, "multiline": false, "dontGenerate": true, "inputTraits": {} },
{ "title": "expiry date", "id": "expiry", "value": { "monthYear": 202712 }, "indexAtSource": 4, "guarded": true, "multiline": false, "dontGenerate": false, "inputTraits": {} }
]
},
{
"title": "Contact Information",
"name": "contactInfo",
"fields": [
{ "title": "issuing bank", "id": "bank", "value": { "string": "Example Bank" }, "indexAtSource": 0, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} },
{ "title": "phone (intl)", "id": "phoneIntl", "value": { "phone": "+1 555 0100" }, "indexAtSource": 1, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} }
]
}
],
"passwordHistory": []
},
"overview": { "subtitle": "4111 **** 1111", "title": "Example Visa", "url": "", "ps": 0, "pbe": 0.0, "pgrng": false }
},
{
"uuid": "item3note000000000000000000",
"favIndex": 0,
"createdAt": 1640000000,
"updatedAt": 1640000000,
"state": "active",
"categoryUuid": "003",
"details": { "loginFields": [], "notesPlain": "Wi-Fi: SyntheticNet\nKey: not-a-real-key", "sections": [], "passwordHistory": [] },
"overview": { "subtitle": "", "title": "Home Wi-Fi", "url": "", "ps": 0, "pbe": 0.0, "pgrng": false, "tags": ["home"] }
},
{
"uuid": "item4identity00000000000000",
"favIndex": 0,
"createdAt": 1650000000,
"updatedAt": 1650000000,
"state": "active",
"categoryUuid": "004",
"details": {
"loginFields": [],
"notesPlain": "",
"sections": [
{
"title": "Identification",
"name": "name",
"fields": [
{ "title": "first name", "id": "firstname", "value": { "string": "Alex" }, "indexAtSource": 0, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} },
{ "title": "last name", "id": "lastname", "value": { "string": "Example" }, "indexAtSource": 1, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} },
{ "title": "birth date", "id": "birthdate", "value": { "date": 951782400 }, "indexAtSource": 2, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} }
]
},
{
"title": "Address",
"name": "address",
"fields": [
{ "title": "address", "id": "address", "value": { "address": { "street": "1 Example Way", "city": "Sampletown", "country": "us", "zip": "00000", "state": "CA" } }, "indexAtSource": 0, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} },
{ "title": "phone", "id": "defphone", "value": { "phone": "+1 555 0101" }, "indexAtSource": 1, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} }
]
},
{
"title": "Internet Details",
"name": "internet",
"fields": [
{ "title": "email", "id": "email", "value": { "email": { "email_address": "[email protected]", "provider": null } }, "indexAtSource": 0, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} }
]
}
],
"passwordHistory": []
},
"overview": { "subtitle": "Alex Example", "title": "Alex Example", "url": "", "ps": 0, "pbe": 0.0, "pgrng": false }
},
{
"uuid": "item5attachment000000000000",
"favIndex": 0,
"createdAt": 1660000000,
"updatedAt": 1660000000,
"state": "active",
"categoryUuid": "001",
"details": {
"loginFields": [
{ "value": "alex", "id": "", "name": "username", "fieldType": "T", "designation": "username" },
{ "value": "insurance-synthetic-pw", "id": "", "name": "password", "fieldType": "P", "designation": "password" }
],
"notesPlain": "Policy scan attached.",
"sections": [
{
"title": "",
"name": "",
"fields": [
{ "title": "policy.pdf", "id": "file1", "value": { "file": { "fileName": "policy.pdf", "documentId": "doc0000000000000000000000a", "decryptedSize": 1234 } }, "indexAtSource": 0, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} }
]
}
],
"passwordHistory": []
},
"overview": { "subtitle": "alex", "urls": [ { "label": "", "url": "https://insurance.example.net" } ], "title": "Example Insurance", "url": "https://insurance.example.net", "ps": 60, "pbe": 50.0, "pgrng": false }
},
{
"uuid": "item6password000000000000000",
"favIndex": 0,
"createdAt": 1670000000,
"updatedAt": 1670000000,
"state": "active",
"categoryUuid": "005",
"details": { "loginFields": [], "notesPlain": "Router admin", "sections": [], "passwordHistory": [], "password": "router-synthetic-pw" },
"overview": { "subtitle": "", "title": "Router", "url": "", "ps": 50, "pbe": 40.0, "pgrng": true }
},
{
"uuid": "item7trashed000000000000000",
"favIndex": 0,
"createdAt": 1670000000,
"updatedAt": 1670000000,
"state": "deleted",
"categoryUuid": "001",
"details": { "loginFields": [], "notesPlain": "", "sections": [], "passwordHistory": [] },
"overview": { "subtitle": "", "title": "Trashed", "url": "", "ps": 0, "pbe": 0.0, "pgrng": false }
}
]
},
{
"attrs": { "uuid": "vaultshared0000000000000000", "desc": "", "avatar": "", "name": "Shared", "type": "E" },
"items": [
{
"uuid": "item8server0000000000000000",
"favIndex": 0,
"createdAt": 1680000000,
"updatedAt": 1680000000,
"state": "active",
"categoryUuid": "110",
"details": {
"loginFields": [],
"notesPlain": "",
"sections": [
{
"title": "",
"name": "",
"fields": [
{ "title": "URL", "id": "url", "value": { "string": "ssh://build.example.com" }, "indexAtSource": 0, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} },
{ "title": "username", "id": "username", "value": { "string": "deploy" }, "indexAtSource": 1, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} },
{ "title": "password", "id": "password", "value": { "concealed": "server-synthetic-pw" }, "indexAtSource": 2, "guarded": false, "multiline": false, "dontGenerate": false, "inputTraits": {} }
]
}
],
"passwordHistory": []
},
"overview": { "subtitle": "", "title": "Build Server", "url": "", "ps": 0, "pbe": 0.0, "pgrng": false }
}
]
}
]
}
]
}
+4
View File
@@ -0,0 +1,4 @@
NAME,Website,Login,PASSWORD,TOTP,Note,Security Question
Mail,mail.example.com,alex,mail-synthetic-pw,JBSWY3DPEHPK3PXP,"multi
line",Synthetic Fluffy
,https://bank.example.com/login,alex,bank-synthetic-pw,,,
1 NAME Website Login PASSWORD TOTP Note Security Question
2 Mail mail.example.com alex mail-synthetic-pw JBSWY3DPEHPK3PXP multi line Synthetic Fluffy
3 https://bank.example.com/login alex bank-synthetic-pw