Skip to content

Instantly share code, notes, and snippets.

@p1mo
Last active January 22, 2026 21:44
Show Gist options
  • Select an option

  • Save p1mo/ec03a9104c00dae6c7b68c02b24bee1e to your computer and use it in GitHub Desktop.

Select an option

Save p1mo/ec03a9104c00dae6c7b68c02b24bee1e to your computer and use it in GitHub Desktop.
Example for Tauri's stronghold plugin

example for tauri's stronghold-plugin

First go to plugin docs and add it to your project

Aragon create used: https://crates.io/crates/rust-argon2

src-tauri/main.rs

use argon2::{ Config, ThreadMode, Variant, Version, hash_raw };

fn main (){
    tauri::Builder::default()
        .plugin(tauri_plugin_stronghold::Builder::new(move |password| {
            
            // Aragon config
            let config = Config {
                lanes       : 4,
                mem_cost    : 10_000,
                time_cost   : 10,
                thread_mode : ThreadMode::from_threads(4),
                variant     : Variant::Argon2id,
                version     : Version::Version13,
                ..Default::default()
            };
            
            // hash password
            let key = hash_raw(password.as_ref(), "my-salt".as_bytes(), &config).expect("failed to hash password");
    
            // return the hash
            key.to_vec()
    
        }).build())
    .run(tauri::generate_context!())
    .expect("error while running tauri application");
}

client/main.js

import { Stronghold } from "tauri-plugin-stronghold-api";

// Load Stronghold
const password = "my_pass"; // your Stronghold (to open it)
const fullPath = "my/path/to/stronghold"; // should be your app_data dir
const stronghold = await Stronghold.load(fullPath, password)

// Create or Load a client
const client_name = "my_client";

const client = await stronghold.createClient(client_name).getStore()
// or
const client = await stronghold.loadClient(client_name).getStore()

// EXAMPLE DATA
const DATA = {
    key : "my-key",
    value : "my-super-secret",
}

// Read data
const value     = await client.get(DATA.key);
const decoded   = new TextDecoder().decode(new Uint8Array(value ?? []));

// Write data
await client.insert(DATA.key, Array.from(new TextEncoder().encode(DATA.value)));

// Save written data
await stronghold.save();

// Close Database
await stronghold.unload();
@sekomer
Copy link

sekomer commented Nov 17, 2024

Aragon package made my day :D 🧝‍♀️

@mohammed-r9
Copy link

is it really a good idea to expose the password on the client code?

@p1mo
Copy link
Author

p1mo commented Jun 12, 2025

is it really a good idea to expose the password on the client code?

No (also yes). But this is an example so it is a const.

Anyway this password should not be something you set.

@FabioPlunser
Copy link

How can i insert and read data on the rust site?

@premier213
Copy link

Can I have example uses for Rust? (No JavaScript)

@leonardbiofi
Copy link

Same would be nice to have an example on the Rust side

@p1mo
Copy link
Author

p1mo commented Jan 22, 2026

Look in the lib.rs .... and reuse the commands like in the lib.rs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment