[{"data":1,"prerenderedAt":783},["ShallowReactive",2],{"navigation":3,"\u002Fgetting-started\u002Finstallation":116,"\u002Fgetting-started\u002Finstallation-surround":778},[4,27,61,82,112],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Development","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F4.development",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Guides","i-lucide-book-open","\u002Fguides","2.guides",[33,37,41,45,49,53,57],{"title":34,"path":35,"stem":36},"Sessions and store","\u002Fguides\u002Fsessions","2.guides\u002F1.sessions",{"title":38,"path":39,"stem":40},"Vault and procedures","\u002Fguides\u002Fvault","2.guides\u002F2.vault",{"title":42,"path":43,"stem":44},"Password accounts","\u002Fguides\u002Fpasswords","2.guides\u002F3.passwords",{"title":46,"path":47,"stem":48},"Rust backend","\u002Fguides\u002Frust","2.guides\u002F4.rust",{"title":50,"path":51,"stem":52},"Security notes","\u002Fguides\u002Fsecurity","2.guides\u002F5.security",{"title":54,"path":55,"stem":56},"Permissions","\u002Fguides\u002Fpermissions","2.guides\u002F6.permissions",{"title":58,"path":59,"stem":60},"Coming from Stronghold","\u002Fguides\u002Fstronghold","2.guides\u002F7.stronghold",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":26},"API reference","i-lucide-file-code","\u002Freference","3.reference",[67,71,75,79],{"title":68,"path":69,"stem":70},"JavaScript API","\u002Freference\u002Fjavascript-api","3.reference\u002F1.javascript-api",{"title":72,"path":73,"stem":74},"Types","\u002Freference\u002Ftypes","3.reference\u002F2.types",{"title":76,"path":77,"stem":78},"Tauri commands","\u002Freference\u002Fcommands","3.reference\u002F3.commands",{"title":54,"path":80,"stem":81},"\u002Freference\u002Fpermissions","3.reference\u002F4.permissions",{"title":83,"icon":84,"path":85,"stem":86,"children":87,"page":26},"Platforms","i-lucide-monitor-smartphone","\u002Fplatforms","4.platforms",[88,92,96,100,104,108],{"title":89,"path":90,"stem":91},"Overview","\u002Fplatforms\u002Foverview","4.platforms\u002F1.overview",{"title":93,"path":94,"stem":95},"macOS","\u002Fplatforms\u002Fmacos","4.platforms\u002F2.macos",{"title":97,"path":98,"stem":99},"Windows","\u002Fplatforms\u002Fwindows","4.platforms\u002F3.windows",{"title":101,"path":102,"stem":103},"Linux","\u002Fplatforms\u002Flinux","4.platforms\u002F4.linux",{"title":105,"path":106,"stem":107},"Android","\u002Fplatforms\u002Fandroid","4.platforms\u002F5.android",{"title":109,"path":110,"stem":111},"iOS","\u002Fplatforms\u002Fios","4.platforms\u002F6.ios",{"title":113,"path":114,"stem":115},"Changelog","\u002Fchangelog","9.changelog",{"id":117,"title":15,"body":118,"description":771,"extension":772,"generated":26,"links":773,"meta":774,"navigation":775,"path":16,"seo":776,"stem":17,"__hash__":777},"docs\u002F1.getting-started\u002F2.installation.md",{"type":119,"value":120,"toc":761},"minimark",[121,130,135,147,182,202,206,211,235,273,276,417,435,483,486,490,504,507,511,561,564,603,614,617,620,711,724,728,757],[122,123,124,125,129],"p",{},"Requires Rust ",[126,127,128],"strong",{},"1.88"," or newer (the platform keyring crates need it) and Tauri 2.",[131,132,134],"h2",{"id":133},"automatic","Automatic",[122,136,137,138,142,143,146],{},"From your Tauri app root (where ",[139,140,141],"code",{},"package.json"," and the ",[139,144,145],{},"tauri"," script are):",[148,149,154],"pre",{"className":150,"code":151,"language":152,"meta":153,"style":153},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm tauri add keyring-store\n# or: npm run tauri add keyring-store · yarn tauri add keyring-store · cargo tauri add keyring-store\n","bash","",[139,155,156,175],{"__ignoreMap":153},[157,158,161,165,169,172],"span",{"class":159,"line":160},"line",1,[157,162,164],{"class":163},"sBMFI","pnpm",[157,166,168],{"class":167},"sfazB"," tauri",[157,170,171],{"class":167}," add",[157,173,174],{"class":167}," keyring-store\n",[157,176,178],{"class":159,"line":177},2,[157,179,181],{"class":180},"sHwdD","# or: npm run tauri add keyring-store · yarn tauri add keyring-store · cargo tauri add keyring-store\n",[122,183,184,185,188,189,192,193,196,197,201],{},"The CLI adds the crate to ",[139,186,187],{},"src-tauri",", the ",[139,190,191],{},"tauri-plugin-keyring-store-api"," npm package, and registers\nthe plugin. Then check that your capability has ",[139,194,195],{},"keyring-store:default"," (see ",[198,199,54],"a",{"href":200},"#permissions",").",[131,203,205],{"id":204},"manual","Manual",[207,208,210],"h3",{"id":209},"rust","Rust",[148,212,214],{"className":150,"code":213,"language":152,"meta":153,"style":153},"cd src-tauri\ncargo add tauri-plugin-keyring-store\n",[139,215,216,225],{"__ignoreMap":153},[157,217,218,222],{"class":159,"line":160},[157,219,221],{"class":220},"s2Zo4","cd",[157,223,224],{"class":167}," src-tauri\n",[157,226,227,230,232],{"class":159,"line":177},[157,228,229],{"class":163},"cargo",[157,231,171],{"class":167},[157,233,234],{"class":167}," tauri-plugin-keyring-store\n",[148,236,241],{"className":237,"code":238,"filename":239,"language":240,"meta":153,"style":153},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\ntauri-plugin-keyring-store = \"0.3\"\n","Cargo.toml","toml",[139,242,243,255],{"__ignoreMap":153},[157,244,245,249,252],{"class":159,"line":160},[157,246,248],{"class":247},"sMK4o","[",[157,250,251],{"class":163},"dependencies",[157,253,254],{"class":247},"]\n",[157,256,257,261,264,267,270],{"class":159,"line":177},[157,258,260],{"class":259},"sTEyZ","tauri-plugin-keyring-store ",[157,262,263],{"class":247},"=",[157,265,266],{"class":247}," \"",[157,268,269],{"class":167},"0.3",[157,271,272],{"class":247},"\"\n",[122,274,275],{},"Register the plugin:",[148,277,281],{"className":278,"code":279,"filename":280,"language":209,"meta":153,"style":153},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","#[cfg_attr(mobile, tauri::mobile_entry_point)]\npub fn run() {\n    tauri::Builder::default()\n        .plugin(tauri_plugin_keyring_store::init())\n        .run(tauri::generate_context!())\n        .expect(\"error while running tauri application\");\n}\n","src-tauri\u002Fsrc\u002Flib.rs",[139,282,283,311,330,349,371,390,411],{"__ignoreMap":153},[157,284,285,288,291,294,297,300,302,305,308],{"class":159,"line":160},[157,286,287],{"class":247},"#[",[157,289,290],{"class":259},"cfg_attr",[157,292,293],{"class":247},"(",[157,295,296],{"class":259},"mobile",[157,298,299],{"class":247},",",[157,301,168],{"class":259},[157,303,304],{"class":247},"::",[157,306,307],{"class":259},"mobile_entry_point",[157,309,310],{"class":247},")]\n",[157,312,313,317,321,324,327],{"class":159,"line":177},[157,314,316],{"class":315},"spNyl","pub",[157,318,320],{"class":319},"sbssI"," fn",[157,322,323],{"class":220}," run",[157,325,326],{"class":247},"()",[157,328,329],{"class":247}," {\n",[157,331,333,336,338,341,343,346],{"class":159,"line":332},3,[157,334,335],{"class":163},"    tauri",[157,337,304],{"class":247},[157,339,340],{"class":163},"Builder",[157,342,304],{"class":247},[157,344,345],{"class":220},"default",[157,347,348],{"class":247},"()\n",[157,350,352,355,358,360,363,365,368],{"class":159,"line":351},4,[157,353,354],{"class":247},"        .",[157,356,357],{"class":220},"plugin",[157,359,293],{"class":247},[157,361,362],{"class":163},"tauri_plugin_keyring_store",[157,364,304],{"class":247},[157,366,367],{"class":220},"init",[157,369,370],{"class":247},"())\n",[157,372,374,376,379,381,383,385,388],{"class":159,"line":373},5,[157,375,354],{"class":247},[157,377,378],{"class":220},"run",[157,380,293],{"class":247},[157,382,145],{"class":163},[157,384,304],{"class":247},[157,386,387],{"class":220},"generate_context!",[157,389,370],{"class":247},[157,391,393,395,398,400,403,406,408],{"class":159,"line":392},6,[157,394,354],{"class":247},[157,396,397],{"class":220},"expect",[157,399,293],{"class":247},[157,401,402],{"class":247},"\"",[157,404,405],{"class":167},"error while running tauri application",[157,407,402],{"class":247},[157,409,410],{"class":247},");\n",[157,412,414],{"class":159,"line":413},7,[157,415,416],{"class":247},"}\n",[122,418,419,422,423,426,427,430,431,434],{},[139,420,421],{},"init()"," uses the app ",[139,424,425],{},"identifier"," from ",[139,428,429],{},"tauri.conf.json"," as the keyring ",[126,432,433],{},"service"," name. To choose\nanother one, use the builder:",[148,436,438],{"className":278,"code":437,"language":209,"meta":153,"style":153},"tauri_plugin_keyring_store::Builder::new()\n    .service(\"com.mycompany.myapp.credentials\")\n    .build()\n",[139,439,440,455,474],{"__ignoreMap":153},[157,441,442,444,446,448,450,453],{"class":159,"line":160},[157,443,362],{"class":163},[157,445,304],{"class":247},[157,447,340],{"class":163},[157,449,304],{"class":247},[157,451,452],{"class":220},"new",[157,454,348],{"class":247},[157,456,457,460,462,464,466,469,471],{"class":159,"line":177},[157,458,459],{"class":247},"    .",[157,461,433],{"class":220},[157,463,293],{"class":247},[157,465,402],{"class":247},[157,467,468],{"class":167},"com.mycompany.myapp.credentials",[157,470,402],{"class":247},[157,472,473],{"class":247},")\n",[157,475,476,478,481],{"class":159,"line":332},[157,477,459],{"class":247},[157,479,480],{"class":220},"build",[157,482,348],{"class":247},[122,484,485],{},"All entries of the plugin live under this service. Changing it later hides the old entries (they\nstay in the OS store under the old name).",[207,487,489],{"id":488},"javascript","JavaScript",[148,491,493],{"className":150,"code":492,"language":152,"meta":153,"style":153},"pnpm add tauri-plugin-keyring-store-api\n",[139,494,495],{"__ignoreMap":153},[157,496,497,499,501],{"class":159,"line":160},[157,498,164],{"class":163},[157,500,171],{"class":167},[157,502,503],{"class":167}," tauri-plugin-keyring-store-api\n",[122,505,506],{},"The package works only together with the Rust plugin above.",[131,508,510],{"id":509},"cargo-features","Cargo features",[512,513,514,530],"table",{},[515,516,517],"thead",{},[518,519,520,524,527],"tr",{},[521,522,523],"th",{},"Feature",[521,525,526],{},"Default",[521,528,529],{},"What",[531,532,533],"tbody",{},[518,534,535,541,544],{},[536,537,538],"td",{},[139,539,540],{},"crypto",[536,542,543],{},"yes",[536,545,546,547,551,552,560],{},"SLIP10 \u002F BIP39 \u002F Ed25519 ",[198,548,550],{"href":549},"\u002Fguides\u002Fvault#procedures","procedures"," through ",[198,553,557],{"href":554,"rel":555},"https:\u002F\u002Fcrates.io\u002Fcrates\u002Fiota-crypto",[556],"nofollow",[139,558,559],{},"iota-crypto",".",[122,562,563],{},"Without the procedures (store, vault records, passwords and backups only):",[148,565,567],{"className":237,"code":566,"filename":239,"language":240,"meta":153,"style":153},"tauri-plugin-keyring-store = { version = \"0.3\", default-features = false }\n",[139,568,569],{"__ignoreMap":153},[157,570,571,573,575,578,581,583,585,587,589,591,594,596,600],{"class":159,"line":160},[157,572,260],{"class":259},[157,574,263],{"class":247},[157,576,577],{"class":247}," {",[157,579,580],{"class":259}," version ",[157,582,263],{"class":247},[157,584,266],{"class":247},[157,586,269],{"class":167},[157,588,402],{"class":247},[157,590,299],{"class":247},[157,592,593],{"class":259}," default-features ",[157,595,263],{"class":247},[157,597,599],{"class":598},"sfNiH"," false",[157,601,602],{"class":247}," }\n",[122,604,605,606,609,610,613],{},"The ",[139,607,608],{},"execute_procedure"," command then rejects with ",[139,611,612],{},"crypto procedure error: tauri-plugin-keyring-store was built without the `crypto` feature",".\nEncrypted backups (Argon2id + ChaCha20-Poly1305) do not depend on this feature.",[131,615,54],{"id":616},"permissions",[122,618,619],{},"Add the plugin to a capability of the windows that use it:",[148,621,626],{"className":622,"code":623,"filename":624,"language":625,"meta":153,"style":153},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"identifier\": \"default\",\n  \"windows\": [\"main\"],\n  \"permissions\": [\"core:default\", \"keyring-store:default\"]\n}\n","src-tauri\u002Fcapabilities\u002Fdefault.json","json",[139,627,628,633,654,678,707],{"__ignoreMap":153},[157,629,630],{"class":159,"line":160},[157,631,632],{"class":247},"{\n",[157,634,635,638,640,642,645,647,649,651],{"class":159,"line":177},[157,636,637],{"class":247},"  \"",[157,639,425],{"class":315},[157,641,402],{"class":247},[157,643,644],{"class":247},":",[157,646,266],{"class":247},[157,648,345],{"class":167},[157,650,402],{"class":247},[157,652,653],{"class":247},",\n",[157,655,656,658,661,663,665,668,670,673,675],{"class":159,"line":332},[157,657,637],{"class":247},[157,659,660],{"class":315},"windows",[157,662,402],{"class":247},[157,664,644],{"class":247},[157,666,667],{"class":247}," [",[157,669,402],{"class":247},[157,671,672],{"class":167},"main",[157,674,402],{"class":247},[157,676,677],{"class":247},"],\n",[157,679,680,682,684,686,688,690,692,695,697,699,701,703,705],{"class":159,"line":351},[157,681,637],{"class":247},[157,683,616],{"class":315},[157,685,402],{"class":247},[157,687,644],{"class":247},[157,689,667],{"class":247},[157,691,402],{"class":247},[157,693,694],{"class":167},"core:default",[157,696,402],{"class":247},[157,698,299],{"class":247},[157,700,266],{"class":247},[157,702,195],{"class":167},[157,704,402],{"class":247},[157,706,254],{"class":247},[157,708,709],{"class":159,"line":373},[157,710,416],{"class":247},[122,712,713,715,716,719,720,723],{},[139,714,195],{}," allows ",[126,717,718],{},"every"," command. Read the ",[198,721,722],{"href":55},"Permissions guide","\nbefore you give it to a window that loads remote content.",[131,725,727],{"id":726},"platform-setup","Platform setup",[729,730,731,747,754],"ul",{},[732,733,734,736,737,740,741,744,745,560],"li",{},[126,735,101],{},": build needs ",[139,738,739],{},"libdbus-1-dev"," and ",[139,742,743],{},"pkg-config","; at run time a Secret Service must be running. See ",[198,746,101],{"href":102},[732,748,749,751,752,560],{},[126,750,109],{},": the app must be signed. See ",[198,753,109],{"href":110},[732,755,756],{},"macOS, Windows and Android need nothing extra.",[758,759,760],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":153,"searchDepth":177,"depth":332,"links":762},[763,764,768,769,770],{"id":133,"depth":177,"text":134},{"id":204,"depth":177,"text":205,"children":765},[766,767],{"id":209,"depth":332,"text":210},{"id":488,"depth":332,"text":489},{"id":509,"depth":177,"text":510},{"id":616,"depth":177,"text":54},{"id":726,"depth":177,"text":727},"Add the Rust crate and the npm package, register the plugin and allow its commands.","md",null,{},true,{"title":15,"description":771},"E667ha0ZRPA4bPpgqYM000rNt-S63RACu0JOuwyeuAE",[779,781],{"title":11,"path":12,"stem":13,"description":780,"children":-1},"What tauri-plugin-keyring-store does, how it stores data, and how it relates to tauri-plugin-stronghold.",{"title":19,"path":20,"stem":21,"description":782,"children":-1},"Store a token, use a session store and keep a wallet key in the vault, from JavaScript and from Rust.",1794215489436]