#secret-key #tauri-plugin #stronghold #iota #tauri-app #secure #store

sys tauri-plugin-stronghold

使用 IOTA Stronghold 加密数据库存储密钥和秘密

18 个版本

2.0.0-rc.02024 年 8 月 2 日
2.0.0-beta.92024 年 7 月 31 日
2.0.0-beta.62024 年 5 月 30 日
2.0.0-beta.32024 年 3 月 21 日
2.0.0-alpha.02023 年 5 月 24 日

#339 in 数据库接口

Download history 120/week @ 2024-04-29 2/week @ 2024-05-06 4/week @ 2024-05-13 2/week @ 2024-05-20 298/week @ 2024-05-27 49/week @ 2024-06-03 14/week @ 2024-06-10 24/week @ 2024-06-17 30/week @ 2024-06-24 179/week @ 2024-07-01 85/week @ 2024-07-08 13/week @ 2024-07-15 20/week @ 2024-07-22 299/week @ 2024-07-29 53/week @ 2024-08-05 40/week @ 2024-08-12

每月 413 次下载

Apache-2.0 OR MIT

66KB
842

plugin-stronghold

使用 IOTA Stronghold 加密数据库和安全的运行时存储密钥和秘密。

安装

此插件需要至少 Rust 版本 1.75

我们推荐以下三种安装方法。

  1. 使用 crates.io 和 npm(最简单,需要您信任我们的发布流程)
  2. 直接从 Github 使用 git 标签/修订哈希拉取源代码(最安全)
  3. 使用 Git 子模块在您的 tauri 项目中安装此仓库,然后使用文件协议导入源代码(最安全,但使用不便)

通过在您的 Cargo.toml 文件中添加以下内容来安装核心插件

src-tauri/Cargo.toml

[dependencies]
tauri-plugin-stronghold = "2.0.0-rc"
# alternatively with Git:
tauri-plugin-stronghold = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }

您可以使用您首选的 JavaScript 包管理器安装 JavaScript 客户端绑定

注意:如果您的 JavaScript 包管理器无法从 git monorepos 安装包,您仍然可以通过手动将 客户端绑定 复制到您的源文件中,来使用代码。

pnpm add @tauri-apps/plugin-stronghold
# or
npm add @tauri-apps/plugin-stronghold
# or
yarn add @tauri-apps/plugin-stronghold

# alternatively with Git:
pnpm add https://github.com/tauri-apps/tauri-plugin-stronghold#v2
# or
npm add https://github.com/tauri-apps/tauri-plugin-stronghold#v2
# or
yarn add https://github.com/tauri-apps/tauri-plugin-stronghold#v2

用法

首先,您需要将核心插件与 Tauri 注册

src-tauri/src/main.rs

fn main() {
    tauri::Builder::default()
        .plugin(tauri_plugin_stronghold::Builder::new(|password| {
            // Hash the password here with e.g. argon2, blake2b or any other secure algorithm
            // Here is an example implementation using the `rust-argon2` crate for hashing the password

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

            let config = Config {
                lanes: 4,
                mem_cost: 10_000,
                time_cost: 10,
                variant: Variant::Argon2id,
                version: Version::Version13,
                ..Default::default()
            };

            let salt = "your-salt".as_bytes();

            let key = hash_raw(password.as_ref(), salt, &config).expect("failed to hash password");

            key.to_vec()
        })
        .build())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

之后,所有插件的API都可通过JavaScript客户端绑定访问。

import { Stronghold, Location, Client } from "tauri-plugin-stronghold-api";
import { appDataDir } from "@tauri-apps/api/path";

const initStronghold = async () => {
  const vaultPath = `${await appDataDir()}/vault.hold`;

  const vaultKey = "The key to the vault";

  const stronghold = await Stronghold.load(vaultPath, vaultKey);

  let client: Client;

  const clientName = "name your client";

  try {
    client = await hold.loadClient(clientName);
  } catch {
    client = await hold.createClient(clientName);
  }

  return {
    stronghold,
    client,
  };
};

const { stronghold, client } = await initStronghold();

const store = client.getStore();

const key = "my_key";

// Insert a record to the store

const data = Array.from(new TextEncoder().encode("Hello, World!"));

await store.insert(key, data);

// Read a record from store

const data = await store.get(key);

const value = new TextDecoder().decode(new Uint8Array(data));

// Save your updates

await stronghold.save();

// Remove a record from store

await store.remove(key);

贡献

接受PR。请在提交拉取请求之前确保阅读贡献指南。

合作伙伴

CrabNebula

关于赞助商的完整列表,请访问我们的网站Open Collective

许可证

代码:© 2015 - 现在 - Commons Conservancy内的Tauri项目。

适用时为MIT或MIT/Apache 2.0。

依赖

~25–67MB
~1M SLoC