From 0f2bc2a08725af77f87fbb46e70d83ba042aff10 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 3 Jun 2024 17:32:58 +0200 Subject: [PATCH 01/15] WIP to add method for importing seeds into lair from json file --- rust-utils/Cargo.toml | 6 +- rust-utils/index.d.ts | 7 +- rust-utils/index.js | 4 +- rust-utils/rustfmt.toml | 2 +- rust-utils/src/launcher_lair_client.rs | 193 +++++++++++++++++++++++++ rust-utils/src/lib.rs | 2 +- rust-utils/src/zome_call_signer.rs | 98 ------------- src/main/index.ts | 14 +- src/main/utils.ts | 8 +- 9 files changed, 221 insertions(+), 113 deletions(-) create mode 100644 rust-utils/src/launcher_lair_client.rs delete mode 100644 rust-utils/src/zome_call_signer.rs diff --git a/rust-utils/Cargo.toml b/rust-utils/Cargo.toml index dac48f83..aa0a3ec5 100644 --- a/rust-utils/Cargo.toml +++ b/rust-utils/Cargo.toml @@ -14,10 +14,13 @@ holochain_types = "0.4.0-dev.1" holochain_zome_types = "0.4.0-dev.1" holo_hash = "0.4.0-dev.1" kitsune_p2p_timestamp = "0.4.0-dev.1" +hc_seed_bundle = "0.2.3" lair_keystore_api = "0.4.4" -nanoid = "0.4.0" +base64 = "0.13.0" +ed25519-dalek = { version = "1.0.1" } +nanoid = "0.4.0" # Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix napi = { version = "2.12.2", default-features = false, features = [ "napi4", @@ -26,6 +29,7 @@ napi = { version = "2.12.2", default-features = false, features = [ "serde-json", ] } napi-derive = "2.12.2" +serde_json = "1.0.117" serde_yaml = "0.8" sodoken = "0.0.9" url2 = "0.0.6" diff --git a/rust-utils/index.d.ts b/rust-utils/index.d.ts index 01e1b935..0774ea4f 100644 --- a/rust-utils/index.d.ts +++ b/rust-utils/index.d.ts @@ -33,9 +33,10 @@ export interface HappAndUiBytes { happBytes: Array uiBytes?: Array } -export type JsZomeCallSigner = ZomeCallSigner -export class ZomeCallSigner { +export type JsLauncherLairClient = LauncherLairClient +export class LauncherLairClient { constructor() - static connect(connectionUrl: string, passphrase: string): Promise + static connect(connectionUrl: string, passphrase: string): Promise signZomeCall(zomeCallUnsignedJs: ZomeCallUnsignedNapi): Promise + importSeedFromJsonFile(path: string): Promise } diff --git a/rust-utils/index.js b/rust-utils/index.js index 71f53bd0..097336a0 100644 --- a/rust-utils/index.js +++ b/rust-utils/index.js @@ -252,11 +252,11 @@ if (!nativeBinding) { throw new Error(`Failed to load native binding`) } -const { overwriteConfig, defaultConductorConfig, decodeHappOrWebhapp, readAndDecodeHappOrWebhapp, saveWebhapp, ZomeCallSigner } = nativeBinding +const { overwriteConfig, defaultConductorConfig, decodeHappOrWebhapp, readAndDecodeHappOrWebhapp, saveWebhapp, LauncherLairClient } = nativeBinding module.exports.overwriteConfig = overwriteConfig module.exports.defaultConductorConfig = defaultConductorConfig module.exports.decodeHappOrWebhapp = decodeHappOrWebhapp module.exports.readAndDecodeHappOrWebhapp = readAndDecodeHappOrWebhapp module.exports.saveWebhapp = saveWebhapp -module.exports.ZomeCallSigner = ZomeCallSigner +module.exports.LauncherLairClient = LauncherLairClient diff --git a/rust-utils/rustfmt.toml b/rust-utils/rustfmt.toml index cab5731e..ca5602ae 100644 --- a/rust-utils/rustfmt.toml +++ b/rust-utils/rustfmt.toml @@ -1,2 +1,2 @@ -tab_spaces = 2 +tab_spaces = 4 edition = "2021" diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs new file mode 100644 index 00000000..050da1e9 --- /dev/null +++ b/rust-utils/src/launcher_lair_client.rs @@ -0,0 +1,193 @@ +#![deny(clippy::all)] + +use std::ops::Deref; + +use ed25519_dalek::{Keypair, PublicKey, SecretKey}; +use hc_seed_bundle::{LockedSeedCipher, UnlockedSeedBundle}; +use holochain_zome_types::prelude::{Signature, ZomeCallUnsigned}; +use lair_keystore_api::{ + dependencies::{sodoken::BufRead, url::Url}, + ipc_keystore::ipc_keystore_connect, + LairClient, +}; + +use napi::Result; + +use crate::types::*; + +// This is an incomplete type with only the fields that are actually necessary for the launcher case +struct SeedConfig { + /// This is the Device Seed Bundle as a base64 string which is compatible with lair-keystore >=v0.0.8 + /// And is encoded with a password that will be needed to be used to decrypt it + device_bundle: String, + /// Derivation path of the seed in this config that was generated for a Master Seed + device_derivation_path: String, + // /1 derivation path of the device bundle base36 encoded + holoport_id: String, +} + +struct LauncherLairClient { + lair_client: LairClient, +} + +impl LauncherLairClient { + /// Connect to lair keystore + pub async fn new(connection_url: String, passphrase: String) -> Self { + let connection_url_parsed = Url::parse(connection_url.deref()).unwrap(); + let passphrase_bufread: BufRead = passphrase.as_bytes().into(); + + let lair_client = ipc_keystore_connect(connection_url_parsed, passphrase_bufread) + .await + .unwrap(); + + Self { lair_client } + } + + /// Sign a zome call + pub async fn sign_zome_call( + &self, + zome_call_unsigned_js: ZomeCallUnsignedNapi, + ) -> Result { + let zome_call_unsigned: ZomeCallUnsigned = zome_call_unsigned_js.clone().into(); + let pub_key = zome_call_unsigned.provenance.clone(); + let mut pub_key_2 = [0; 32]; + pub_key_2.copy_from_slice(pub_key.get_raw_32()); + + let data_to_sign = zome_call_unsigned.data_to_sign().unwrap(); + + let sig = self + .lair_client + .sign_by_pub_key(pub_key_2.into(), None, data_to_sign) + .await + .unwrap(); + + let signature = Signature(*sig.0); + + let signed_zome_call = ZomeCallNapi { + cell_id: zome_call_unsigned_js.cell_id, + zome_name: zome_call_unsigned.zome_name.to_string(), + fn_name: zome_call_unsigned.fn_name.0, + payload: zome_call_unsigned_js.payload, + cap_secret: zome_call_unsigned_js.cap_secret, + provenance: zome_call_unsigned_js.provenance, + nonce: zome_call_unsigned_js.nonce, + expires_at: zome_call_unsigned_js.expires_at, + signature: signature.0.to_vec(), + }; + + Ok(signed_zome_call) + } + + pub async fn import_seed_from_json_file(&self, path: String) -> Result<()> { + let json_string = std::fs::read_to_string(path)?; + let parsed_string: serde_json::Value = serde_json::from_str(&json_string)?; + println!("Parsed json string: {}", parsed_string); + Ok(()) + } +} + +#[napi(js_name = "LauncherLairClient")] +pub struct JsLauncherLairClient { + launcher_lair_client: Option, +} + +#[napi] +impl JsLauncherLairClient { + #[napi(constructor)] + pub fn new() -> Self { + Self { + launcher_lair_client: None, + } + } + + #[napi] + pub async fn connect(connection_url: String, passphrase: String) -> Self { + let launcher_lair_client = LauncherLairClient::new(connection_url, passphrase).await; + + JsLauncherLairClient { + launcher_lair_client: Some(launcher_lair_client), + } + } + + #[napi] + pub async fn sign_zome_call( + &self, + zome_call_unsigned_js: ZomeCallUnsignedNapi, + ) -> Result { + self.launcher_lair_client + .as_ref() + .unwrap() + .sign_zome_call(zome_call_unsigned_js) + .await + } + + #[napi] + pub async fn import_seed_from_json_file(&self, path: String) -> Result<()> { + self.launcher_lair_client + .as_ref() + .unwrap() + .import_seed_from_json_file(path) + .await + } +} + +/// unlock seed_bundles to access the pub-key and seed +pub async fn unlock_device_bundle( + device_bundle: &String, + passphrase: String, +) -> napi::Result { + let cipher = base64::decode_config(device_bundle, base64::URL_SAFE_NO_PAD).map_err(|e| { + napi::Error::from_reason(format!("Failed to decode device bundle: {:?}", e)) + })?; + match UnlockedSeedBundle::from_locked(&cipher) + .await + .map_err(|e| { + napi::Error::from_reason(format!("Failed to create UnlockedSeedBundle: {:?}", e)) + })? + .remove(0) + { + LockedSeedCipher::PwHash(cipher) => { + let passphrase_bufread = BufRead::from(passphrase.as_bytes()); + let seed = cipher.unlock(passphrase_bufread).await.map_err(|e| { + napi::Error::from_reason(format!( + "Failed to unlock cipher with the given passphrase: {:?}", + e + )) + })?; + Ok(Keypair { + public: PublicKey::from_bytes(&*seed.get_sign_pub_key().read_lock()).map_err( + |e| { + napi::Error::from_reason(format!( + "Failed to get public key: {:?}", + e + )) + }, + )?, + secret: SecretKey::from_bytes(&*seed.get_seed().read_lock()).map_err(|e| { + napi::Error::from_reason(format!( + "Failed to get seed: {:?}", + e + )) + })?, + }) + } + _ => Err(napi::Error::from_reason("Unsupported Cipher".to_string())), + } +} + +// fn public_key_from_base64<'de, D>(deserializer: D) -> napi::Result +// where +// D: Deserializer<'de>, +// { +// String::deserialize(deserializer) +// .map_err(|err| { +// napi::Error::from_reason(format!("Failed to deserialize public key: {:?}", err)) +// }) +// .and_then(|s| { +// base64::decode_config(&s, base64::STANDARD_NO_PAD).map_err(|err| { +// napi::Error::from_reason(format!("Failed to decode public key: {:?}", err)) +// }) +// }) +// .map(|bytes| PublicKey::from_bytes(&bytes)) +// .and_then(|maybe_key| maybe_key.map_err(|err| napi::Error::from_reason(err.to_string()))) +// } diff --git a/rust-utils/src/lib.rs b/rust-utils/src/lib.rs index 1835b9ee..5c99dd1e 100644 --- a/rust-utils/src/lib.rs +++ b/rust-utils/src/lib.rs @@ -5,4 +5,4 @@ pub mod conductor_config; pub mod decode_webapp; pub mod types; mod utils; -pub mod zome_call_signer; +pub mod launcher_lair_client; diff --git a/rust-utils/src/zome_call_signer.rs b/rust-utils/src/zome_call_signer.rs deleted file mode 100644 index b2b50a83..00000000 --- a/rust-utils/src/zome_call_signer.rs +++ /dev/null @@ -1,98 +0,0 @@ -#![deny(clippy::all)] - -use std::ops::Deref; - -use holochain_zome_types::prelude::{Signature, ZomeCallUnsigned}; -use lair_keystore_api::{dependencies::{sodoken::BufRead, url::Url}, ipc_keystore::ipc_keystore_connect, LairClient}; -use napi::Result; - -use crate::types::*; - -struct ZomeCallSigner { - lair_client: LairClient, -} - -impl ZomeCallSigner { - /// Connect to lair keystore - pub async fn new(connection_url: String, passphrase: String) -> Self { - let connection_url_parsed = Url::parse(connection_url.deref()).unwrap(); - let passphrase_bufread: BufRead = passphrase.as_bytes().into(); - - let lair_client = ipc_keystore_connect(connection_url_parsed, passphrase_bufread) - .await - .unwrap(); - - Self { lair_client } - } - - /// Sign a zome call - pub async fn sign_zome_call( - &self, - zome_call_unsigned_js: ZomeCallUnsignedNapi, - ) -> Result { - let zome_call_unsigned: ZomeCallUnsigned = zome_call_unsigned_js.clone().into(); - let pub_key = zome_call_unsigned.provenance.clone(); - let mut pub_key_2 = [0; 32]; - pub_key_2.copy_from_slice(pub_key.get_raw_32()); - - let data_to_sign = zome_call_unsigned.data_to_sign().unwrap(); - - let sig = self - .lair_client - .sign_by_pub_key(pub_key_2.into(), None, data_to_sign) - .await - .unwrap(); - - let signature = Signature(*sig.0); - - let signed_zome_call = ZomeCallNapi { - cell_id: zome_call_unsigned_js.cell_id, - zome_name: zome_call_unsigned.zome_name.to_string(), - fn_name: zome_call_unsigned.fn_name.0, - payload: zome_call_unsigned_js.payload, - cap_secret: zome_call_unsigned_js.cap_secret, - provenance: zome_call_unsigned_js.provenance, - nonce: zome_call_unsigned_js.nonce, - expires_at: zome_call_unsigned_js.expires_at, - signature: signature.0.to_vec(), - }; - - Ok(signed_zome_call) - } -} - -#[napi(js_name = "ZomeCallSigner")] -pub struct JsZomeCallSigner { - zome_call_signer: Option, -} - -#[napi] -impl JsZomeCallSigner { - #[napi(constructor)] - pub fn new() -> Self { - Self { - zome_call_signer: None, - } - } - - #[napi] - pub async fn connect(connection_url: String, passphrase: String) -> Self { - let zome_call_signer = ZomeCallSigner::new(connection_url, passphrase).await; - - JsZomeCallSigner { - zome_call_signer: Some(zome_call_signer), - } - } - - #[napi] - pub async fn sign_zome_call( - &self, - zome_call_unsigned_js: ZomeCallUnsignedNapi, - ) -> Result { - self.zome_call_signer - .as_ref() - .unwrap() - .sign_zome_call(zome_call_unsigned_js) - .await - } -} diff --git a/src/main/index.ts b/src/main/index.ts index 82ef60b4..df1a8c90 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -12,7 +12,7 @@ import contextMenu from 'electron-context-menu'; import { createIPCHandler } from 'electron-trpc/main'; import { autoUpdater } from 'electron-updater'; import fs from 'fs'; -import type { ZomeCallSigner } from 'hc-launcher-rust-utils'; +import type { LauncherLairClient } from 'hc-launcher-rust-utils'; import * as rustUtils from 'hc-launcher-rust-utils'; import os from 'os'; import path from 'path'; @@ -188,9 +188,9 @@ const DEFAULT_APPS_NETWORK_SEED = app.isPackaged setupLogs(LAUNCHER_EMITTER, LAUNCHER_FILE_SYSTEM); -let DEFAULT_ZOME_CALL_SIGNER: ZomeCallSigner | undefined; +let DEFAULT_ZOME_CALL_SIGNER: LauncherLairClient | undefined; // Zome call signers for external binaries (admin ports used as keys) -const CUSTOM_ZOME_CALL_SIGNERS: Record = {}; +const CUSTOM_ZOME_CALL_SIGNERS: Record = {}; let INTEGRITY_CHECKER: IntegrityChecker | undefined; @@ -348,7 +348,7 @@ async function handleLaunch(password: string) { if (VALIDATED_CLI_ARGS.holochainVersion.type === 'running-external') { lairUrl = VALIDATED_CLI_ARGS.holochainVersion.lairUrl; - const externalZomeCallSigner = await rustUtils.ZomeCallSigner.connect(lairUrl, password); + const externalZomeCallSigner = await rustUtils.LauncherLairClient.connect(lairUrl, password); CUSTOM_ZOME_CALL_SIGNERS[VALIDATED_CLI_ARGS.holochainVersion.adminPort] = externalZomeCallSigner; } else { @@ -363,7 +363,11 @@ async function handleLaunch(password: string) { LAIR_HANDLE = lairHandle; - DEFAULT_ZOME_CALL_SIGNER = await rustUtils.ZomeCallSigner.connect(lairUrl, password); + DEFAULT_ZOME_CALL_SIGNER = await rustUtils.LauncherLairClient.connect(lairUrl, password); + DEFAULT_ZOME_CALL_SIGNER.importSeedFromJsonFile( + '/home/matthias/code/holochain/holochain/launcher-electron/test_seeds.json', + ); + console.log('read seed from json file.'); } LAUNCHER_EMITTER.emit(LOADING_PROGRESS_UPDATE, 'startingHolochain'); diff --git a/src/main/utils.ts b/src/main/utils.ts index a845fab2..ada485cd 100644 --- a/src/main/utils.ts +++ b/src/main/utils.ts @@ -11,7 +11,11 @@ import { observable } from '@trpc/server/observable'; import type { BrowserWindow } from 'electron'; import { shell } from 'electron'; import fs from 'fs'; -import type { ZomeCallNapi, ZomeCallSigner, ZomeCallUnsignedNapi } from 'hc-launcher-rust-utils'; +import type { + LauncherLairClient, + ZomeCallNapi, + ZomeCallUnsignedNapi, +} from 'hc-launcher-rust-utils'; import type * as rustUtils from 'hc-launcher-rust-utils'; import path from 'path'; import semver from 'semver'; @@ -171,7 +175,7 @@ export function breakingVersion(version: string) { } export async function signZomeCall( - zomeCallSigner: ZomeCallSigner, + zomeCallSigner: LauncherLairClient, zomeCallUnsigned: CallZomeRequest, ): Promise { const zomeCallUnsignedNapi: ZomeCallUnsignedNapi = { From 251bad710c98c759ca5c863c05f6512e1abc8ef7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 3 Jun 2024 21:59:04 +0200 Subject: [PATCH 02/15] added code to import and derive seed --- rust-utils/Cargo.toml | 1 + rust-utils/index.d.ts | 2 +- rust-utils/src/launcher_lair_client.rs | 181 +++++++++++++++++++++++-- src/main/index.ts | 1 + 4 files changed, 171 insertions(+), 14 deletions(-) diff --git a/rust-utils/Cargo.toml b/rust-utils/Cargo.toml index aa0a3ec5..7e9233a9 100644 --- a/rust-utils/Cargo.toml +++ b/rust-utils/Cargo.toml @@ -19,6 +19,7 @@ lair_keystore_api = "0.4.4" base64 = "0.13.0" +base36 = "=0.0.1" ed25519-dalek = { version = "1.0.1" } nanoid = "0.4.0" # Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix diff --git a/rust-utils/index.d.ts b/rust-utils/index.d.ts index 0774ea4f..bfc7e6a6 100644 --- a/rust-utils/index.d.ts +++ b/rust-utils/index.d.ts @@ -38,5 +38,5 @@ export class LauncherLairClient { constructor() static connect(connectionUrl: string, passphrase: string): Promise signZomeCall(zomeCallUnsignedJs: ZomeCallUnsignedNapi): Promise - importSeedFromJsonFile(path: string): Promise + importSeedFromJsonFile(path: string, tagAppendix: string): Promise } diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs index 050da1e9..a7d5880c 100644 --- a/rust-utils/src/launcher_lair_client.rs +++ b/rust-utils/src/launcher_lair_client.rs @@ -8,6 +8,7 @@ use holochain_zome_types::prelude::{Signature, ZomeCallUnsigned}; use lair_keystore_api::{ dependencies::{sodoken::BufRead, url::Url}, ipc_keystore::ipc_keystore_connect, + lair_store::LairEntryInfo, LairClient, }; @@ -78,10 +79,168 @@ impl LauncherLairClient { Ok(signed_zome_call) } - pub async fn import_seed_from_json_file(&self, path: String) -> Result<()> { + pub async fn import_seed_from_json_file( + &self, + path: String, + tag_appendix: String, + ) -> Result<()> { let json_string = std::fs::read_to_string(path)?; let parsed_string: serde_json::Value = serde_json::from_str(&json_string)?; println!("Parsed json string: {}", parsed_string); + let device_bundle = parsed_string["device_bundle"] + .as_str() + .ok_or(napi::Error::from_reason( + "device_bundle value does not seem to be a string", + ))? + .to_string(); + println!("Got device_bundle: {device_bundle}"); + + let device_derivation_path_str = + parsed_string["device_derivation_path"] + .as_str() + .ok_or(napi::Error::from_reason( + "device_derivation_path value does not seem to be a string", + ))?; + + // ATTN this will only work for single digit derivation paths + let derivation_path_num = + u32::from_str_radix(device_derivation_path_str, 10).map_err(|e| { + napi::Error::from_reason(format!( + "Failed to parse device_derivation_path to u8: {}", + e + )) + })?; + + let derivation_path = vec![derivation_path_num]; + + let key_pair = unlock_device_bundle(&device_bundle, String::from("pass")).await?; + // Get or generate key for encryption of the seed + let encryption_key = match self + .lair_client + .get_entry("import-encryption-key".into()) + .await + { + Ok(key) => match key { + LairEntryInfo::Seed { tag: _, seed_info } => seed_info, + _ => { + return Err(napi::Error::from_reason( + "The import encryption key in lair is of the wrong format.", + )) + } + }, + Err(_) => self + .lair_client + .new_seed("import-encryption-key".into(), None, false) + .await + .map_err(|e| { + napi::Error::from_reason(format!( + "Failed to create new import encryption key in lair: {}", + e + )) + })?, + }; + // Get or generate key for decryption of the seed + let decryption_key = match self + .lair_client + .get_entry("import-decryption-key".into()) + .await + { + Ok(key) => match key { + LairEntryInfo::Seed { tag: _, seed_info } => seed_info, + _ => { + return Err(napi::Error::from_reason( + "The import decryption key in lair is of the wrong format.", + )) + } + }, + Err(_) => self + .lair_client + .new_seed("import-decryption-key".into(), None, false) + .await + .map_err(|e| { + napi::Error::from_reason(format!( + "Failed to create new import decryption key in lair: {}", + e + )) + })?, + }; + + // encrypt device_bundle seed + let (nonce, cipher) = self + .lair_client + .crypto_box_xsalsa_by_pub_key( + encryption_key.x25519_pub_key.clone(), + decryption_key.x25519_pub_key.clone(), + None, + key_pair.public.as_bytes().to_vec().into(), + ) + .await + .map_err(|e| { + napi::Error::from_reason(format!("Failed to encrypt the device_bundle_seed: {}", e)) + })?; + + let src_tag = format!("imported#{tag_appendix}"); + + // import the encrypted seed into lair + self.lair_client + .import_seed( + encryption_key.x25519_pub_key, + decryption_key.x25519_pub_key, + None, + nonce, + cipher, + src_tag.clone().into(), + true, + ) + .await + .map_err(|e| { + napi::Error::from_reason(format!("Failed to import cipher into lair: {}", e)) + })?; + + let dst_tag = format!("imported#derived{device_derivation_path_str}#{tag_appendix}"); + + // Derive the seed for the given derivation path + let seed_info_derived = self + .lair_client + .derive_seed( + src_tag.into(), + None, + dst_tag.into(), + None, + derivation_path.into(), + ) + .await + .map_err(|e| { + napi::Error::from_reason(format!( + "Failed to derive seed from derivation path: {}", + e + )) + })?; + + let base64_pubkey_x = base64::encode_config( + seed_info_derived.x25519_pub_key.as_ref(), + base64::STANDARD_NO_PAD, + ); + + let base64_pubkey_ed = base64::encode_config( + seed_info_derived.ed25519_pub_key.as_ref(), + base64::STANDARD_NO_PAD, + ); + + let base36_pubkey_x = base64::encode( + seed_info_derived.x25519_pub_key.as_ref() + ); + + let base36_pubkey_ed = base64::encode( + seed_info_derived.ed25519_pub_key.as_ref(), + ); + + println!("got derived base64 x25519 pubkey: {base64_pubkey_x}"); + println!("got derived base64 ed25519 pubkey: {base64_pubkey_ed}"); + + println!("got derived base36 x25519 pubkey: {base36_pubkey_x}"); + println!("got derived base36 ed25519 pubkey: {base36_pubkey_ed}"); + Ok(()) } } @@ -122,11 +281,15 @@ impl JsLauncherLairClient { } #[napi] - pub async fn import_seed_from_json_file(&self, path: String) -> Result<()> { + pub async fn import_seed_from_json_file( + &self, + path: String, + tag_appendix: String, + ) -> Result<()> { self.launcher_lair_client .as_ref() .unwrap() - .import_seed_from_json_file(path) + .import_seed_from_json_file(path, tag_appendix) .await } } @@ -156,18 +319,10 @@ pub async fn unlock_device_bundle( })?; Ok(Keypair { public: PublicKey::from_bytes(&*seed.get_sign_pub_key().read_lock()).map_err( - |e| { - napi::Error::from_reason(format!( - "Failed to get public key: {:?}", - e - )) - }, + |e| napi::Error::from_reason(format!("Failed to get public key: {:?}", e)), )?, secret: SecretKey::from_bytes(&*seed.get_seed().read_lock()).map_err(|e| { - napi::Error::from_reason(format!( - "Failed to get seed: {:?}", - e - )) + napi::Error::from_reason(format!("Failed to get seed: {:?}", e)) })?, }) } diff --git a/src/main/index.ts b/src/main/index.ts index df1a8c90..521e959e 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -366,6 +366,7 @@ async function handleLaunch(password: string) { DEFAULT_ZOME_CALL_SIGNER = await rustUtils.LauncherLairClient.connect(lairUrl, password); DEFAULT_ZOME_CALL_SIGNER.importSeedFromJsonFile( '/home/matthias/code/holochain/holochain/launcher-electron/test_seeds.json', + 'test-import', ); console.log('read seed from json file.'); } From 246b833443c96e37ca16ce68cce2da551bb0c192 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 3 Jun 2024 22:12:14 +0200 Subject: [PATCH 03/15] fixed encoding in println --- .husky/pre-commit | 1 - rust-utils/src/launcher_lair_client.rs | 4 ++-- test_seeds.json | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) delete mode 100644 .husky/pre-commit create mode 100644 test_seeds.json diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100644 index 1a1f1f06..00000000 --- a/.husky/pre-commit +++ /dev/null @@ -1 +0,0 @@ -yarn lint-staged \ No newline at end of file diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs index a7d5880c..18919fbe 100644 --- a/rust-utils/src/launcher_lair_client.rs +++ b/rust-utils/src/launcher_lair_client.rs @@ -227,11 +227,11 @@ impl LauncherLairClient { base64::STANDARD_NO_PAD, ); - let base36_pubkey_x = base64::encode( + let base36_pubkey_x = base36::encode( seed_info_derived.x25519_pub_key.as_ref() ); - let base36_pubkey_ed = base64::encode( + let base36_pubkey_ed = base36::encode( seed_info_derived.ed25519_pub_key.as_ref(), ); diff --git a/test_seeds.json b/test_seeds.json new file mode 100644 index 00000000..3eb56063 --- /dev/null +++ b/test_seeds.json @@ -0,0 +1,16 @@ +{ + "device_bundle": "k6VoY3NiMJGWonB3xBCZ0R47aR6ctMScaYsrOLwRzSAAAcQY58NsOmNCDbniGsLgUhj5UoHjBrapiiDGxDGAa5Wqzm0pVuXGN106iyMHRk4dOf0iGWj65oCeB8-ZYXJdeflsVDY-DOuJaadfPZQExCyCrWRldmljZV9udW1iZXIAq2dlbmVyYXRlX2J5r3F1aWNrc3RhcnQtdjIuMA", + "revocation_pub_key": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "holoport_id": "4099r424lmhpjhqsrf253fq8pkuladttqq0k1vkf96bsiy9lnf", + "device_derivation_path": "1", + "registration_code": "registration-code", + "settings": { + "admin": { + "email": "jack@holo.host", + "public_key": [ + 215, 40, 133, 123, 179, 96, 208, 91, 185, 17, 99, 109, 188, 70, 164, 254, 138, 105, 60, 69, + 42, 100, 13, 34, 166, 178, 194, 10, 192, 50, 23, 208 + ] + } + } +} From c5da27520145154fdd159d8d995ce7006f9f5881 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 3 Jun 2024 22:43:17 +0200 Subject: [PATCH 04/15] added more debugging --- rust-utils/index.d.ts | 2 +- rust-utils/src/launcher_lair_client.rs | 56 +++++++++++++++++++------- src/main/index.ts | 1 + 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/rust-utils/index.d.ts b/rust-utils/index.d.ts index bfc7e6a6..d44ad2f2 100644 --- a/rust-utils/index.d.ts +++ b/rust-utils/index.d.ts @@ -38,5 +38,5 @@ export class LauncherLairClient { constructor() static connect(connectionUrl: string, passphrase: string): Promise signZomeCall(zomeCallUnsignedJs: ZomeCallUnsignedNapi): Promise - importSeedFromJsonFile(path: string, tagAppendix: string): Promise + importSeedFromJsonFile(path: string, passphrase: string, tagAppendix: string): Promise } diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs index 18919fbe..97969667 100644 --- a/rust-utils/src/launcher_lair_client.rs +++ b/rust-utils/src/launcher_lair_client.rs @@ -16,16 +16,16 @@ use napi::Result; use crate::types::*; -// This is an incomplete type with only the fields that are actually necessary for the launcher case -struct SeedConfig { - /// This is the Device Seed Bundle as a base64 string which is compatible with lair-keystore >=v0.0.8 - /// And is encoded with a password that will be needed to be used to decrypt it - device_bundle: String, - /// Derivation path of the seed in this config that was generated for a Master Seed - device_derivation_path: String, - // /1 derivation path of the device bundle base36 encoded - holoport_id: String, -} +// // This is an incomplete type with only the fields that are actually necessary for the launcher case +// struct SeedConfig { +// /// This is the Device Seed Bundle as a base64 string which is compatible with lair-keystore >=v0.0.8 +// /// And is encoded with a password that will be needed to be used to decrypt it +// device_bundle: String, +// /// Derivation path of the seed in this config that was generated for a Master Seed +// device_derivation_path: String, +// // /1 derivation path of the device bundle base36 encoded +// holoport_id: String, +// } struct LauncherLairClient { lair_client: LairClient, @@ -82,6 +82,7 @@ impl LauncherLairClient { pub async fn import_seed_from_json_file( &self, path: String, + passphrase: String, tag_appendix: String, ) -> Result<()> { let json_string = std::fs::read_to_string(path)?; @@ -113,7 +114,9 @@ impl LauncherLairClient { let derivation_path = vec![derivation_path_num]; - let key_pair = unlock_device_bundle(&device_bundle, String::from("pass")).await?; + println!("Parsed derivation path: {:?}", derivation_path); + + let key_pair = unlock_device_bundle(&device_bundle, passphrase).await?; // Get or generate key for encryption of the seed let encryption_key = match self .lair_client @@ -182,7 +185,7 @@ impl LauncherLairClient { let src_tag = format!("imported#{tag_appendix}"); // import the encrypted seed into lair - self.lair_client + let root_seed = self.lair_client .import_seed( encryption_key.x25519_pub_key, decryption_key.x25519_pub_key, @@ -197,6 +200,30 @@ impl LauncherLairClient { napi::Error::from_reason(format!("Failed to import cipher into lair: {}", e)) })?; + let base64_pubkey_x = base64::encode_config( + root_seed.x25519_pub_key.as_ref(), + base64::STANDARD_NO_PAD, + ); + + let base64_pubkey_ed = base64::encode_config( + root_seed.ed25519_pub_key.as_ref(), + base64::STANDARD_NO_PAD, + ); + + let base36_pubkey_x = base36::encode( + root_seed.x25519_pub_key.as_ref() + ); + + let base36_pubkey_ed = base36::encode( + root_seed.ed25519_pub_key.as_ref(), + ); + + println!("\n\ngot derived base64 x25519 pubkey: {base64_pubkey_x}"); + println!("got derived base64 ed25519 pubkey: {base64_pubkey_ed}"); + + println!("got derived base36 x25519 pubkey: {base36_pubkey_x}"); + println!("got derived base36 ed25519 pubkey: {base36_pubkey_ed}"); + let dst_tag = format!("imported#derived{device_derivation_path_str}#{tag_appendix}"); // Derive the seed for the given derivation path @@ -235,7 +262,7 @@ impl LauncherLairClient { seed_info_derived.ed25519_pub_key.as_ref(), ); - println!("got derived base64 x25519 pubkey: {base64_pubkey_x}"); + println!("\n\ngot derived base64 x25519 pubkey: {base64_pubkey_x}"); println!("got derived base64 ed25519 pubkey: {base64_pubkey_ed}"); println!("got derived base36 x25519 pubkey: {base36_pubkey_x}"); @@ -284,12 +311,13 @@ impl JsLauncherLairClient { pub async fn import_seed_from_json_file( &self, path: String, + passphrase: String, tag_appendix: String, ) -> Result<()> { self.launcher_lair_client .as_ref() .unwrap() - .import_seed_from_json_file(path, tag_appendix) + .import_seed_from_json_file(path, passphrase, tag_appendix) .await } } diff --git a/src/main/index.ts b/src/main/index.ts index 521e959e..96b79493 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -366,6 +366,7 @@ async function handleLaunch(password: string) { DEFAULT_ZOME_CALL_SIGNER = await rustUtils.LauncherLairClient.connect(lairUrl, password); DEFAULT_ZOME_CALL_SIGNER.importSeedFromJsonFile( '/home/matthias/code/holochain/holochain/launcher-electron/test_seeds.json', + 'pass', 'test-import', ); console.log('read seed from json file.'); From 9e596d9e4d47c7295a3a2fce8331b76d00b11d5f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 4 Jun 2024 00:44:39 +0200 Subject: [PATCH 05/15] fixed importing wrong key part --- rust-utils/src/launcher_lair_client.rs | 18 +++++++++++++----- src/main/index.ts | 2 +- test_seeds.json | 17 +++++++---------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs index 97969667..38cd81c6 100644 --- a/rust-utils/src/launcher_lair_client.rs +++ b/rust-utils/src/launcher_lair_client.rs @@ -112,9 +112,9 @@ impl LauncherLairClient { )) })?; - let derivation_path = vec![derivation_path_num]; + let device_derivation_path = vec![derivation_path_num]; - println!("Parsed derivation path: {:?}", derivation_path); + println!("Parsed derivation path: {:?}", device_derivation_path); let key_pair = unlock_device_bundle(&device_bundle, passphrase).await?; // Get or generate key for encryption of the seed @@ -175,7 +175,7 @@ impl LauncherLairClient { encryption_key.x25519_pub_key.clone(), decryption_key.x25519_pub_key.clone(), None, - key_pair.public.as_bytes().to_vec().into(), + key_pair.secret.as_bytes().to_vec().into(), ) .await .map_err(|e| { @@ -234,7 +234,7 @@ impl LauncherLairClient { None, dst_tag.into(), None, - derivation_path.into(), + vec![1].into(), ) .await .map_err(|e| { @@ -327,7 +327,10 @@ pub async fn unlock_device_bundle( device_bundle: &String, passphrase: String, ) -> napi::Result { - let cipher = base64::decode_config(device_bundle, base64::URL_SAFE_NO_PAD).map_err(|e| { + // let cipher = base64::decode_config(device_bundle, base64::URL_SAFE_NO_PAD).map_err(|e| { + // napi::Error::from_reason(format!("Failed to decode device bundle: {:?}", e)) + // })?; + let cipher = base64::decode(device_bundle).map_err(|e| { napi::Error::from_reason(format!("Failed to decode device bundle: {:?}", e)) })?; match UnlockedSeedBundle::from_locked(&cipher) @@ -345,6 +348,11 @@ pub async fn unlock_device_bundle( e )) })?; + let immediately_derived_seed = seed.derive(1).await.unwrap(); + let derived_pubkey = PublicKey::from_bytes(&*immediately_derived_seed.get_sign_pub_key().read_lock()).unwrap(); + let base36_derived_pubkey = base36::encode(derived_pubkey.as_ref()); + println!("Immediately derived pubkey: {base36_derived_pubkey}"); + Ok(Keypair { public: PublicKey::from_bytes(&*seed.get_sign_pub_key().read_lock()).map_err( |e| napi::Error::from_reason(format!("Failed to get public key: {:?}", e)), diff --git a/src/main/index.ts b/src/main/index.ts index 96b79493..31a6f104 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -366,7 +366,7 @@ async function handleLaunch(password: string) { DEFAULT_ZOME_CALL_SIGNER = await rustUtils.LauncherLairClient.connect(lairUrl, password); DEFAULT_ZOME_CALL_SIGNER.importSeedFromJsonFile( '/home/matthias/code/holochain/holochain/launcher-electron/test_seeds.json', - 'pass', + 'test-passphrase', 'test-import', ); console.log('read seed from json file.'); diff --git a/test_seeds.json b/test_seeds.json index 3eb56063..35ae7aa0 100644 --- a/test_seeds.json +++ b/test_seeds.json @@ -1,16 +1,13 @@ { - "device_bundle": "k6VoY3NiMJGWonB3xBCZ0R47aR6ctMScaYsrOLwRzSAAAcQY58NsOmNCDbniGsLgUhj5UoHjBrapiiDGxDGAa5Wqzm0pVuXGN106iyMHRk4dOf0iGWj65oCeB8-ZYXJdeflsVDY-DOuJaadfPZQExCyCrWRldmljZV9udW1iZXIAq2dlbmVyYXRlX2J5r3F1aWNrc3RhcnQtdjIuMA", - "revocation_pub_key": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "holoport_id": "4099r424lmhpjhqsrf253fq8pkuladttqq0k1vkf96bsiy9lnf", - "device_derivation_path": "1", + "device_bundle": "k6VoY3NiMJGWonB3xBCG5YSrc5dvFcOxeoHVwyn2zhAAAAADxBjEEKoEzjJPA092vGHYZRr1logo4aqWH/rEMU5Y3KMMi9Qr6XljCR2z2rmLMrAGgWnwsHbLceNAIbucO1f5gmRBP4QRqe4Uhv0h0BjEAA==", + "device_derivation_path": "2", + "revocation_pub_key": "N+ZFTpNh/AHsVplSMM9vXUwyBSORQk3mWttRKntX1kk", + "holoport_id": "43wshe97frq850fow8diy6qzsz4dl6lmsm28wiv15jg8ttun1l", "registration_code": "registration-code", "settings": { "admin": { - "email": "jack@holo.host", - "public_key": [ - 215, 40, 133, 123, 179, 96, 208, 91, 185, 17, 99, 109, 188, 70, 164, 254, 138, 105, 60, 69, - 42, 100, 13, 34, 166, 178, 194, 10, 192, 50, 23, 208 - ] + "email": "joel@holo.host", + "public_key": "aYeY80D7bJ9vPdUxqz1q08YZO7wcUSqpDHlFktPF9lU" } } -} +} \ No newline at end of file From e74f1eb1e9a5e537cfca51260b4893c6461f8f8c Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 5 Jun 2024 11:02:28 +0200 Subject: [PATCH 06/15] removed unused function --- rust-utils/src/launcher_lair_client.rs | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs index 38cd81c6..5158a418 100644 --- a/rust-utils/src/launcher_lair_client.rs +++ b/rust-utils/src/launcher_lair_client.rs @@ -364,21 +364,4 @@ pub async fn unlock_device_bundle( } _ => Err(napi::Error::from_reason("Unsupported Cipher".to_string())), } -} - -// fn public_key_from_base64<'de, D>(deserializer: D) -> napi::Result -// where -// D: Deserializer<'de>, -// { -// String::deserialize(deserializer) -// .map_err(|err| { -// napi::Error::from_reason(format!("Failed to deserialize public key: {:?}", err)) -// }) -// .and_then(|s| { -// base64::decode_config(&s, base64::STANDARD_NO_PAD).map_err(|err| { -// napi::Error::from_reason(format!("Failed to decode public key: {:?}", err)) -// }) -// }) -// .map(|bytes| PublicKey::from_bytes(&bytes)) -// .and_then(|maybe_key| maybe_key.map_err(|err| napi::Error::from_reason(err.to_string()))) -// } +} \ No newline at end of file From cf9bbb70a3ff4dda713fdc692a13b3128f6ef9ae Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Jun 2024 11:44:20 +0200 Subject: [PATCH 07/15] pin to 0.4.0-dev.1 --- rust-utils/Cargo.lock | 7224 +++++++++++++++++++++++++++++++++++++++++ rust-utils/Cargo.toml | 14 +- 2 files changed, 7231 insertions(+), 7 deletions(-) create mode 100644 rust-utils/Cargo.lock diff --git a/rust-utils/Cargo.lock b/rust-utils/Cargo.lock new file mode 100644 index 00000000..699ae15d --- /dev/null +++ b/rust-utils/Cargo.lock @@ -0,0 +1,7224 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli 0.28.1", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217" + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.14", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if 1.0.0", + "getrandom 0.2.14", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aitia" +version = "0.3.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b0edbd9bbe7f49e1dfb9e871ade6454edfccdeae0e288bdb24b2aee07d4ec57" +dependencies = [ + "anyhow", + "derive_more", + "holochain_trace", + "parking_lot 0.12.1", + "petgraph", + "regex", + "serde", + "serde_json", + "tracing", + "tracing-core", + "tracing-serde", + "tracing-subscriber", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anstream" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" + +[[package]] +name = "app_dirs2" +version = "2.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e7b35733e3a8c1ccb90385088dd5b6eaa61325cb4d1ad56e683b5224ff352e" +dependencies = [ + "jni", + "ndk-context", + "winapi", + "xdg", +] + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-attributes" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" +dependencies = [ + "concurrent-queue", + "event-listener 5.3.0", + "event-listener-strategy 0.5.1", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand 2.0.2", + "futures-lite 2.3.0", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.2.1", + "async-executor", + "async-io 2.3.2", + "async-lock 3.3.0", + "blocking", + "futures-lite 2.3.0", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if 1.0.0", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.27", + "slab", + "socket2 0.4.10", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +dependencies = [ + "async-lock 3.3.0", + "cfg-if 1.0.0", + "concurrent-queue", + "futures-io", + "futures-lite 2.3.0", + "parking", + "polling 3.6.0", + "rustix 0.38.32", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +dependencies = [ + "async-io 1.13.0", + "async-lock 2.8.0", + "async-signal", + "blocking", + "cfg-if 1.0.0", + "event-listener 3.1.0", + "futures-lite 1.13.0", + "rustix 0.38.32", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-signal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" +dependencies = [ + "async-io 2.3.2", + "async-lock 2.8.0", + "atomic-waker", + "cfg-if 1.0.0", + "futures-core", + "futures-io", + "rustix 0.38.32", + "signal-hook-registry", + "slab", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-std" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +dependencies = [ + "async-attributes", + "async-channel 1.9.0", + "async-global-executor", + "async-io 1.13.0", + "async-lock 2.8.0", + "async-process", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite 1.13.0", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-stream" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22068c0c19514942eefcfd4daf8976ef1aad84e61539f95cd200c35202f80af5" +dependencies = [ + "async-stream-impl", + "futures-core", +] + +[[package]] +name = "async-stream-impl" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f9db3b38af870bf7e5cc649167533b493928e50744e2c30ae350230b414670" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "async-task" +version = "4.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" + +[[package]] +name = "async-trait" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "automap" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99d887f4066f8a1b4a713a8121fab07ff543863ac86177ebdee6b5cb18acf12" +dependencies = [ + "cfg-if 1.0.0", + "derive_more", + "serde", + "shrinkwraprs", +] + +[[package]] +name = "backon" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d67782c3f868daa71d3533538e98a8e13713231969def7536e8039606fc46bf0" +dependencies = [ + "fastrand 2.0.2", + "futures-core", + "pin-project", + "tokio", +] + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base36" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9c26bddc1271f7112e5ec797e8eeba6de2de211c1488e506b9500196dbf77c5" +dependencies = [ + "base-x", + "failure", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +dependencies = [ + "serde", +] + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +dependencies = [ + "async-channel 2.2.1", + "async-lock 3.3.0", + "async-task", + "fastrand 2.0.2", + "futures-io", + "futures-lite 2.3.0", + "piper", + "tracing", +] + +[[package]] +name = "bloomfilter" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b64d54e47a7f4fd723f082e8f11429f3df6ba8adaeca355a76556f9f0602bbcf" +dependencies = [ + "bit-vec", + "getrandom 0.2.14", + "siphasher", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bytemuck" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.20", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.5", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap", + "unicode-width", + "vec_map", +] + +[[package]] +name = "clap" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim 0.11.1", +] + +[[package]] +name = "clap_derive" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + +[[package]] +name = "corosensei" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80128832c58ea9cbd041d2a759ec449224487b2c1e400453d99d244eead87a8e" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "libc", + "scopeguard", + "windows-sys 0.33.0", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "cranelift-bforest" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2ab4512dfd3a6f4be184403a195f76e81a8a9f9e6c898e19d2dc3ce20e0115" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98b022ed2a5913a38839dfbafe6cf135342661293b08049843362df4301261dc" +dependencies = [ + "arrayvec", + "bumpalo", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-egraph", + "cranelift-entity", + "cranelift-isle", + "gimli 0.26.2", + "log", + "regalloc2", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "639307b45434ad112a98f8300c0f0ab085cbefcd767efcdef9ef19d4c0756e74" +dependencies = [ + "cranelift-codegen-shared", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "278e52e29c53fcf32431ef08406c295699a70306d05a0715c5b1bf50e33a9ab7" + +[[package]] +name = "cranelift-egraph" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624b54323b06e675293939311943ba82d323bb340468ce1889be5da7932c8d73" +dependencies = [ + "cranelift-entity", + "fxhash", + "hashbrown 0.12.3", + "indexmap 1.9.3", + "log", + "smallvec", +] + +[[package]] +name = "cranelift-entity" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a59bcbca89c3f1b70b93ab3cbba5e5e0cbf3e63dadb23c7525cb142e21a9d4c" + +[[package]] +name = "cranelift-frontend" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d70abacb8cfef3dc8ff7e8836e9c1d70f7967dfdac824a4cd5e30223415aca6" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cranelift-isle" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "393bc73c451830ff8dbb3a07f61843d6cb41a084f9996319917c0b291ed785bb" + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctor" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" +dependencies = [ + "quote", + "syn 2.0.59", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +dependencies = [ + "darling_core 0.14.4", + "darling_macro 0.14.4", +] + +[[package]] +name = "darling" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +dependencies = [ + "darling_core 0.20.8", + "darling_macro 0.20.8", +] + +[[package]] +name = "darling_core" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 2.0.59", +] + +[[package]] +name = "darling_macro" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +dependencies = [ + "darling_core 0.14.4", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +dependencies = [ + "darling_core 0.20.8", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "dary_heap" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" + +[[package]] +name = "dashmap" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" +dependencies = [ + "cfg-if 1.0.0", + "num_cpus", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if 1.0.0", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core 0.9.9", +] + +[[package]] +name = "data-encoding" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "derive_builder" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0350b5cb0331628a5916d6c5c0b72e97393b8b6b03b47a9284f4e7f5a405ffd7" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d" +dependencies = [ + "darling 0.20.8", + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b" +dependencies = [ + "derive_builder_core", + "syn 2.0.59", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case 0.4.0", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dns-parser" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" +dependencies = [ + "byteorder", + "quick-error", +] + +[[package]] +name = "downcast" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "either" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "enum-iterator" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eeac5c5edb79e4e39fe8439ef35207780a11f69c52cbe424ce3dfad4cb78de6" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c134c37760b27a871ba422106eedbb8247da973a09e82558bf26d619c882b159" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "enumset" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af" +dependencies = [ + "darling 0.20.8", + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "log", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "err-derive" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22deed3a8124cff5fa835713fa105621e43bbdc46690c3a6b68328a012d350d4" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "err-derive" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34a887c8df3ed90498c1c437ce21f211c8e27672921a8ffa293cb8d6d4caa9e" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" +dependencies = [ + "event-listener 5.3.0", + "pin-project-lite", +] + +[[package]] +name = "failure" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +dependencies = [ + "backtrace", + "failure_derive", +] + +[[package]] +name = "failure_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" + +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fixt" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219a8ae023c468d845d8ac6e21f9d968cb94530d97147fc3849f0465d88f2329" +dependencies = [ + "holochain_serialized_bytes", + "lazy_static", + "parking_lot 0.12.1", + "paste", + "rand 0.8.5", + "rand_core 0.6.4", + "serde", + "strum", + "strum_macros 0.18.0", +] + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fragile" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand 2.0.2", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gcollections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f551fdf23ef80329f754919669147a71c67b6cfe3569cd93b6fabdd62044377" +dependencies = [ + "bit-set", + "num-integer", + "num-traits", + "trilean", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "ghost_actor" +version = "0.3.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a34addaffa7d2c80637807444f171c646cad7549fcdac8019544034678f76d5" +dependencies = [ + "futures", + "must_future", + "paste", + "thiserror", + "tokio", + "tracing", + "tracing-futures", +] + +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +dependencies = [ + "fallible-iterator", + "indexmap 1.9.3", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "governor" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06c5d2f987ee8f6dff3fa1a352058dc59b990e447e4c7846aa7d804971314f7b" +dependencies = [ + "dashmap 4.0.2", + "futures", + "futures-timer", + "no-std-compat", + "nonzero_ext", + "parking_lot 0.11.2", + "quanta", + "rand 0.8.5", + "smallvec", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 1.1.0", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b62f79061a0bc2e046024cb7ba44b08419ed238ecbd9adbd787434b9e8c25" +dependencies = [ + "ahash 0.3.8", + "autocfg", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.11", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash 0.8.11", + "allocator-api2", +] + +[[package]] +name = "hashlink" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +dependencies = [ + "hashbrown 0.14.3", +] + +[[package]] +name = "hc-launcher-rust-utils" +version = "0.201.0" +dependencies = [ + "base36", + "base64 0.13.1", + "ed25519-dalek", + "hc_seed_bundle", + "holo_hash", + "holochain_conductor_api", + "holochain_integrity_types", + "holochain_p2p", + "holochain_types", + "holochain_zome_types", + "kitsune_p2p_timestamp", + "lair_keystore_api", + "nanoid", + "napi", + "napi-build", + "napi-derive", + "serde_json", + "serde_yaml 0.8.26", + "sodoken 0.0.9", + "url2", + "zip 0.5.13", +] + +[[package]] +name = "hc_seed_bundle" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1524f81cc7a05bfacd666324692d1cd46c9f8dce68aa524a4c8a993449617f6b" +dependencies = [ + "futures", + "one_err", + "rmp-serde 0.15.5", + "rmpv", + "serde", + "serde_bytes", + "sodoken 0.0.11", +] + +[[package]] +name = "hc_sleuth" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1654e0fb2f6fb775ebe4d7c0bcca2a63bed43be505021098089020217211d73e" +dependencies = [ + "aitia", + "anyhow", + "derive_more", + "holochain_state_types", + "holochain_trace", + "holochain_types", + "kitsune_p2p", + "once_cell", + "parking_lot 0.12.1", + "petgraph", + "regex", + "serde", + "structopt", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "headers" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" +dependencies = [ + "base64 0.21.7", + "bytes", + "headers-core", + "http 0.2.12", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http 0.2.12", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "holo_hash" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439389b876b16eeddb280e4daf68002c8792103e40ed332bb9bef6a898f7a367" +dependencies = [ + "base64 0.22.1", + "blake2b_simd", + "derive_more", + "fixt", + "futures", + "holochain_serialized_bytes", + "holochain_util", + "holochain_wasmer_common", + "kitsune_p2p_dht_arc", + "must_future", + "rand 0.8.5", + "rusqlite", + "serde", + "serde_bytes", + "thiserror", +] + +[[package]] +name = "holochain_conductor_api" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae6023d8a9042a69da96ef6a887ce8d5a856a7ab6c4ee329b9d6a3a9c73da642" +dependencies = [ + "derive_more", + "holo_hash", + "holochain_keystore", + "holochain_serialized_bytes", + "holochain_state_types", + "holochain_types", + "holochain_zome_types", + "kitsune_p2p_bin_data", + "kitsune_p2p_types", + "serde", + "serde_yaml 0.9.25", + "shrinkwraprs", + "thiserror", + "tracing", + "url2", +] + +[[package]] +name = "holochain_integrity_types" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c204c0e9f64f0c04e4980df7049e99dac459311d81298f352e1e2e38946ecf8" +dependencies = [ + "derive_builder", + "holo_hash", + "holochain_secure_primitive", + "holochain_serialized_bytes", + "holochain_util", + "kitsune_p2p_timestamp", + "serde", + "serde_bytes", + "subtle", + "subtle-encoding", + "tracing", +] + +[[package]] +name = "holochain_keystore" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cca5b36c7c8e95e94c1a7f98e1e957d8861986e25589701b44151faef76e4bd7" +dependencies = [ + "base64 0.22.1", + "derive_more", + "futures", + "holo_hash", + "holochain_secure_primitive", + "holochain_serialized_bytes", + "holochain_util", + "holochain_zome_types", + "kitsune_p2p_types", + "lair_keystore", + "must_future", + "nanoid", + "one_err", + "parking_lot 0.12.1", + "serde", + "serde_bytes", + "shrinkwraprs", + "sodoken 0.0.11", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "holochain_nonce" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf025d865d391e4388e24382f8da70e13a4395348e5a250fa82051ae44b70c8" +dependencies = [ + "getrandom 0.2.14", + "holochain_secure_primitive", + "kitsune_p2p_timestamp", +] + +[[package]] +name = "holochain_p2p" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c02fb6597962cafcf9691e28ec9b3bedd5576df48adfa994e64c912905faced" +dependencies = [ + "aitia", + "async-trait", + "derive_more", + "fixt", + "futures", + "ghost_actor", + "hc_sleuth", + "holo_hash", + "holochain_keystore", + "holochain_nonce", + "holochain_serialized_bytes", + "holochain_trace", + "holochain_types", + "holochain_zome_types", + "kitsune_p2p", + "kitsune_p2p_types", + "mockall", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", +] + +[[package]] +name = "holochain_secure_primitive" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9c9cbba8effd767423fd69a65e4c4458f359b62aca46f2e3527406958cf26c7" +dependencies = [ + "paste", + "serde", + "subtle", +] + +[[package]] +name = "holochain_serialized_bytes" +version = "0.0.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fad1068180811f3a23c340894cb98b0710244ffac76427664239545f162619c5" +dependencies = [ + "holochain_serialized_bytes_derive", + "rmp-serde 1.1.2", + "serde", + "serde-transcode", + "serde_bytes", + "serde_json", + "thiserror", +] + +[[package]] +name = "holochain_serialized_bytes_derive" +version = "0.0.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71cc7f19017233d644abc4a23cbe19220effc05aea057f93db1be00348b89464" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "holochain_sqlite" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f174abe7895d507754b38e3301e89c1ccabab1349e5abde120432a117c49dd77" +dependencies = [ + "anyhow", + "async-trait", + "derive_more", + "fallible-iterator", + "futures", + "getrandom 0.2.14", + "holo_hash", + "holochain_nonce", + "holochain_serialized_bytes", + "holochain_util", + "holochain_zome_types", + "kitsune_p2p_bin_data", + "kitsune_p2p_dht", + "kitsune_p2p_dht_arc", + "kitsune_p2p_timestamp", + "kitsune_p2p_types", + "nanoid", + "num_cpus", + "once_cell", + "opentelemetry_api", + "parking_lot 0.12.1", + "pretty_assertions", + "r2d2", + "r2d2_sqlite_neonphog", + "rmp-serde 1.1.2", + "rusqlite", + "scheduled-thread-pool", + "serde", + "serde_json", + "shrinkwraprs", + "sqlformat", + "tempfile", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "holochain_state_types" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "866414856aa5ba946475679118ff3c54c7833019b2fe9d6ef678b0a10c1521c5" +dependencies = [ + "holo_hash", + "holochain_integrity_types", + "serde", +] + +[[package]] +name = "holochain_trace" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae6463f577194d321c6cdfa131991e6f12cf53494e991a20a4bf6576b9d5a525" +dependencies = [ + "chrono", + "derive_more", + "inferno", + "once_cell", + "serde_json", + "thiserror", + "tracing", + "tracing-core", + "tracing-serde", + "tracing-subscriber", +] + +[[package]] +name = "holochain_types" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0e61fba1eea7ea75b84354da15c31f438f6a822fb35560ca16ee16f5eee1bf2" +dependencies = [ + "anyhow", + "async-trait", + "automap", + "backtrace", + "derive_builder", + "derive_more", + "fixt", + "flate2", + "futures", + "getrandom 0.2.14", + "holo_hash", + "holochain_keystore", + "holochain_nonce", + "holochain_serialized_bytes", + "holochain_sqlite", + "holochain_trace", + "holochain_util", + "holochain_zome_types", + "itertools 0.12.1", + "kitsune_p2p_dht", + "mr_bundle", + "must_future", + "nanoid", + "one_err", + "parking_lot 0.12.1", + "rand 0.8.5", + "regex", + "rusqlite", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "serde_with", + "serde_yaml 0.9.25", + "shrinkwraprs", + "strum", + "strum_macros 0.18.0", + "tempfile", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "holochain_util" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e2622406b6150319518901f1d4ecbb58a3f16ec097cba3ac898a18ff7900c1" +dependencies = [ + "backtrace", + "cfg-if 1.0.0", + "colored", + "dunce", + "futures", + "once_cell", + "rpassword", + "sodoken 0.0.11", + "tokio", + "tracing", +] + +[[package]] +name = "holochain_wasmer_common" +version = "0.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e77c4d54b5bf86dfa0266588d43fc913b0442799f34c8fc04b0e8eda0260bd4" +dependencies = [ + "holochain_serialized_bytes", + "serde", + "serde_bytes", + "test-fuzz", + "thiserror", + "wasmer", +] + +[[package]] +name = "holochain_zome_types" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab039f61375d1aa5b33de73971ae176775040e8aad8f65ec72cf274ce50b178" +dependencies = [ + "derive_builder", + "derive_more", + "holo_hash", + "holochain_integrity_types", + "holochain_nonce", + "holochain_serialized_bytes", + "holochain_wasmer_common", + "kitsune_p2p_block", + "kitsune_p2p_dht", + "kitsune_p2p_timestamp", + "nanoid", + "num_enum", + "rusqlite", + "serde", + "serde_bytes", + "serde_yaml 0.9.25", + "shrinkwraprs", + "subtle", + "subtle-encoding", + "thiserror", + "tracing", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http 1.1.0", + "http-body 1.0.0", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.4.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.4", + "http 1.1.0", + "http-body 1.0.0", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.3.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "hyper 1.3.1", + "pin-project-lite", + "socket2 0.5.6", + "tokio", + "tower", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "if-addrs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "if-addrs" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2a33e9c38988ecbda730c85b0fd9ddcdf83c0305ac7fd21c8bb9f57f2f0cc8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "if_chain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", + "serde", +] + +[[package]] +name = "inferno" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "321f0f839cd44a4686e9504b0a62b4d69a50b62072144c71c68f5873c167b8d9" +dependencies = [ + "ahash 0.8.11", + "clap 4.5.4", + "crossbeam-channel", + "crossbeam-utils", + "dashmap 5.5.3", + "env_logger", + "indexmap 2.2.6", + "is-terminal", + "itoa", + "log", + "num-format", + "once_cell", + "quick-xml", + "rgb", + "str_stack", +] + +[[package]] +name = "influxive-otel-atomic-obs" +version = "0.0.2-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac0ec101d28862a46c15d6140cec376b02725160dfcf57282952898a94cf35e" +dependencies = [ + "opentelemetry_api", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "intervallum" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18bfda24d3930aa647f90044d5ef87d0c8120f13b86b2d60e8aade66e656e659" +dependencies = [ + "bit-set", + "gcollections", + "num-integer", + "num-traits", + "trilean", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itertools" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if 1.0.0", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kitsune_p2p" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "641c0d6960098dfe2fb4fcb32d7aa8714a6ec896e8a17b5c22d79f5eb2a9d568" +dependencies = [ + "arrayref", + "base64 0.22.1", + "bloomfilter", + "bytes", + "derive_more", + "fixt", + "futures", + "ghost_actor", + "governor", + "holochain_trace", + "itertools 0.12.1", + "kitsune_p2p_bin_data", + "kitsune_p2p_block", + "kitsune_p2p_bootstrap_client", + "kitsune_p2p_fetch", + "kitsune_p2p_mdns", + "kitsune_p2p_proxy", + "kitsune_p2p_timestamp", + "kitsune_p2p_transport_quic", + "kitsune_p2p_types", + "must_future", + "nanoid", + "num-traits", + "once_cell", + "opentelemetry_api", + "parking_lot 0.12.1", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", + "tracing", + "tx5", + "url2", +] + +[[package]] +name = "kitsune_p2p_bin_data" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d7fbce2d113aaf0eb99076d5a77f3acb659350aef8dc76235de8a134f4ddbbf" +dependencies = [ + "base64 0.22.1", + "derive_more", + "holochain_util", + "kitsune_p2p_dht_arc", + "serde", + "serde_bytes", + "shrinkwraprs", +] + +[[package]] +name = "kitsune_p2p_block" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5600ee3a3b4d282f87dddc24262640d9ee267621ae9f6f7eda8483f4e46b360" +dependencies = [ + "kitsune_p2p_bin_data", + "kitsune_p2p_timestamp", + "serde", +] + +[[package]] +name = "kitsune_p2p_bootstrap" +version = "0.3.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef8f523e4a9dbcc9f996cc7cada95ab4ec85d80922ff7ebd87f6de5509488ba" +dependencies = [ + "clap 4.5.4", + "futures", + "kitsune_p2p_bin_data", + "kitsune_p2p_types", + "parking_lot 0.12.1", + "rand 0.8.5", + "reqwest", + "serde", + "serde_bytes", + "thiserror", + "tokio", + "warp", +] + +[[package]] +name = "kitsune_p2p_bootstrap_client" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777074b6188020c647bb26f7a522fdd4f18be482964be36f303ec079770001b6" +dependencies = [ + "kitsune_p2p_bin_data", + "kitsune_p2p_bootstrap", + "kitsune_p2p_types", + "reqwest", + "serde", + "serde_bytes", + "url2", +] + +[[package]] +name = "kitsune_p2p_dht" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a3809dfbb493815b43adc6db8a2f329e38524061047def32e2b7257acb284a" +dependencies = [ + "derivative", + "derive_more", + "futures", + "kitsune_p2p_dht_arc", + "kitsune_p2p_timestamp", + "must_future", + "num-traits", + "rand 0.8.5", + "serde", + "statrs", + "thiserror", + "tracing", +] + +[[package]] +name = "kitsune_p2p_dht_arc" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a1c38460330340f036390bfe0aba67a4f0608635079439061b87c4a528bd8e" +dependencies = [ + "derive_more", + "gcollections", + "intervallum", + "kitsune_p2p_timestamp", + "num-traits", + "rusqlite", + "serde", +] + +[[package]] +name = "kitsune_p2p_fetch" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf0e4e4a72c85ddc823b986215f140b14cb0028d365543b8f9f11789cafc46c6" +dependencies = [ + "backon", + "derive_more", + "indexmap 2.2.6", + "kitsune_p2p_timestamp", + "kitsune_p2p_types", + "serde", + "tokio", + "tracing", +] + +[[package]] +name = "kitsune_p2p_mdns" +version = "0.4.0-dev.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4d57ccdbad385b104ffdadd3db14abe73024f586df8160f2dc89560d5b807ae" +dependencies = [ + "base64 0.22.1", + "err-derive 0.3.1", + "futures", + "libmdns", + "mdns", + "tokio", + "tokio-stream", +] + +[[package]] +name = "kitsune_p2p_proxy" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0cef77151000e30587cb5d04c4cdae08aa041083de4f12cf26d9cb955ea94ac" +dependencies = [ + "base64 0.22.1", + "derive_more", + "futures", + "holochain_trace", + "kitsune_p2p_transport_quic", + "kitsune_p2p_types", + "serde", + "serde_bytes", + "structopt", + "tokio", +] + +[[package]] +name = "kitsune_p2p_timestamp" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edfdb7b15c5e5e3b706b986ec52faabdacab1bbbac7db32246734ef4d8d56ac" +dependencies = [ + "chrono", + "rusqlite", + "serde", +] + +[[package]] +name = "kitsune_p2p_transport_quic" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e1e94d8606e4da6f4539cd64031bb6e2ad314d146fc87da29ec77e9abccac61" +dependencies = [ + "blake2b_simd", + "futures", + "if-addrs 0.12.0", + "kitsune_p2p_types", + "quinn", + "rustls", + "tokio", + "webpki", +] + +[[package]] +name = "kitsune_p2p_types" +version = "0.4.0-dev.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87b24a50f5a73b3c285ddec782f2da4638a8611203132ebd088eed16ec22ef9" +dependencies = [ + "base64 0.22.1", + "derive_more", + "futures", + "ghost_actor", + "holochain_trace", + "kitsune_p2p_bin_data", + "kitsune_p2p_dht", + "kitsune_p2p_dht_arc", + "kitsune_p2p_timestamp", + "lair_keystore_api", + "once_cell", + "parking_lot 0.12.1", + "paste", + "rmp-serde 1.1.2", + "rustls", + "serde", + "serde_bytes", + "serde_json", + "sysinfo 0.30.11", + "thiserror", + "tokio", + "url", + "url2", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lair_keystore" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56689c6c7f318e5909c9de1d7eac7f2d383370341632ab845c2da24b5b6bb7aa" +dependencies = [ + "lair_keystore_api", + "pretty_assertions", + "rpassword", + "rusqlite", + "sqlformat", + "structopt", + "sysinfo 0.28.4", + "tracing-subscriber", +] + +[[package]] +name = "lair_keystore_api" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa27af83a127b28c06d7c175dfc34d762fb66ea36d6ac2110d93a55d0e058dd5" +dependencies = [ + "base64 0.13.1", + "dunce", + "hc_seed_bundle", + "lru", + "nanoid", + "once_cell", + "parking_lot 0.12.1", + "rcgen", + "serde", + "serde_json", + "serde_yaml 0.9.25", + "time 0.3.23", + "tokio", + "toml", + "tracing", + "url", + "winapi", + "zeroize", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "leb128" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libflate" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e" +dependencies = [ + "adler32", + "core2", + "crc32fast", + "dary_heap", + "libflate_lz77", +] + +[[package]] +name = "libflate_lz77" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d" +dependencies = [ + "core2", + "hashbrown 0.14.3", + "rle-decode-fast", +] + +[[package]] +name = "libloading" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if 1.0.0", + "windows-targets 0.48.5", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libmdns" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a60d8339ad1ddf68a81335fcafb6c6cf20d5036138a1e4ef86b8ce87f076c92" +dependencies = [ + "byteorder", + "futures-util", + "hostname", + "if-addrs 0.7.0", + "log", + "multimap", + "nix", + "rand 0.8.5", + "socket2 0.4.10", + "thiserror", + "tokio", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.5.0", + "libc", +] + +[[package]] +name = "libsodium-sys-stable" +version = "1.20.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "780c04d3b39043e609f0ad29bd7a8d7f8ef38deb8291534434633036f0d72ce3" +dependencies = [ + "cc", + "libc", + "libflate", + "minisign-verify", + "native-tls", + "pkg-config", + "tar", + "ureq", + "vcpkg", + "zip 1.1.3", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +dependencies = [ + "value-bag", +] + +[[package]] +name = "lru" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" +dependencies = [ + "hashbrown 0.13.2", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "mach2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +dependencies = [ + "libc", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "mdns" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c769962ac75a6ea437f0922b27834bcccd4c013d591383a16ae5731e3ef0f3f3" +dependencies = [ + "async-std", + "async-stream", + "dns-parser", + "err-derive 0.2.4", + "futures-core", + "futures-util", + "log", + "net2", +] + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memmap2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d28bba84adfe6646737845bc5ebbfa2c08424eb1c37e94a1fd2a82adb56a872" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "minisign-verify" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "mockall" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" +dependencies = [ + "cfg-if 1.0.0", + "downcast", + "fragile", + "lazy_static", + "mockall_derive", + "predicates", + "predicates-tree", +] + +[[package]] +name = "mockall_derive" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" +dependencies = [ + "cfg-if 1.0.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "more-asserts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" + +[[package]] +name = "mr_bundle" +version = "0.4.0-dev.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27dadcad967f4b9cb7bdfa2f87d5c7394d9841982cbaaeddc78fd0668dbb8a3e" +dependencies = [ + "derive_more", + "flate2", + "futures", + "holochain_util", + "reqwest", + "rmp-serde 1.1.2", + "serde", + "serde_bytes", + "serde_yaml 0.9.25", + "thiserror", +] + +[[package]] +name = "multer" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01acbdc23469fd8fe07ab135923371d5f5a422fbf9c522158677c8eb15bc51c2" +dependencies = [ + "bytes", + "encoding_rs", + "futures-util", + "http 0.2.12", + "httparse", + "log", + "memchr", + "mime", + "spin 0.9.8", + "version_check", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "must_future" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a160ffed3c2f98d2906c67a9b6e4e1f09cca7e17e3f780286a349061459eeebe" +dependencies = [ + "futures", + "pin-utils", +] + +[[package]] +name = "nalgebra" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d506eb7e08d6329505faa8a3a00a5dcc6de9f76e0c77e4b75763ae3c770831ff" +dependencies = [ + "approx", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "rand 0.8.5", + "rand_distr", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "nanoid" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "napi" +version = "2.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d04890ef4ec001fad791be785b8b920e2a3f5a6b1188e7a81dfa6197c0dee4" +dependencies = [ + "bitflags 2.5.0", + "ctor", + "napi-derive", + "napi-sys", + "once_cell", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "napi-build" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1c0f5d67ee408a4685b61f5ab7e58605c8ae3f2b4189f0127d804ff13d5560a" + +[[package]] +name = "napi-derive" +version = "2.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aff4a63f26a7aa9fa25df6ea36675890115972b207ae516e86bd0c47e31eba39" +dependencies = [ + "cfg-if 1.0.0", + "convert_case 0.6.0", + "napi-derive-backend", + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "napi-derive-backend" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5e76afe642e2424ebe465406e328e4316d82af1f79256231d4b0f184c67550a" +dependencies = [ + "convert_case 0.6.0", + "once_cell", + "proc-macro2", + "quote", + "regex", + "semver 1.0.20", + "syn 2.0.59", +] + +[[package]] +name = "napi-sys" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427802e8ec3a734331fec1035594a210ce1ff4dc5bc1950530920ab717964ea3" +dependencies = [ + "libloading", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "net2" +version = "0.2.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b13b648036a2339d06de780866fbdfda0dde886de7b3af2ddeba8b14f4ee34ac" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi", +] + +[[package]] +name = "nix" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" +dependencies = [ + "bitflags 1.3.2", + "cc", + "cfg-if 1.0.0", + "libc", + "memoffset 0.6.5", +] + +[[package]] +name = "no-std-compat" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" +dependencies = [ + "hashbrown 0.8.2", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nonzero_ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44a1290799eababa63ea60af0cbc3f03363e328e58f32fb0294798ed3e85f444" + +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec", + "itoa", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "one_err" +version = "0.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e81851974d8bb6cc9a643cca68afdce7f0a3b80e08a4620388836bb99a680554" +dependencies = [ + "indexmap 1.9.3", + "libc", + "serde", + "serde_json", +] + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.5.0", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry_api" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b" +dependencies = [ + "futures-channel", + "futures-util", + "indexmap 1.9.3", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror", + "urlencoding", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ouroboros" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" +dependencies = [ + "aliasable", + "ouroboros_macro", +] + +[[package]] +name = "ouroboros_macro" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.2.6", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.2", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if 1.0.0", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" +dependencies = [ + "cfg-if 1.0.0", + "concurrent-queue", + "hermit-abi 0.3.9", + "pin-project-lite", + "rustix 0.38.32", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "predicates" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +dependencies = [ + "difflib", + "float-cmp", + "itertools 0.10.5", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" + +[[package]] +name = "predicates-tree" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "pretty_assertions" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quanta" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98dc777a7a39b76b1a26ae9d3f691f4c1bc0455090aa0b64dfa8cb7fc34c135" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quick-xml" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f50b1c63b38611e7d4d7f68b82d3ad0cc71a2ad2e7f61fc10f1328d917c93cd" +dependencies = [ + "memchr", +] + +[[package]] +name = "quinn" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b435e71d9bfa0d8889927231970c51fb89c58fa63bffcab117c9c7a41e5ef8f" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "fxhash", + "quinn-proto", + "quinn-udp", + "rustls", + "thiserror", + "tokio", + "tracing", + "webpki", +] + +[[package]] +name = "quinn-proto" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce546b9688f767a57530652488420d419a8b1f44a478b451c3d1ab6d992a55" +dependencies = [ + "bytes", + "fxhash", + "rand 0.8.5", + "ring", + "rustls", + "rustls-native-certs", + "rustls-pemfile 0.2.1", + "slab", + "thiserror", + "tinyvec", + "tracing", + "webpki", +] + +[[package]] +name = "quinn-udp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b07946277141531aea269befd949ed16b2c85a780ba1043244eda0969e538e54" +dependencies = [ + "futures-util", + "libc", + "quinn-proto", + "socket2 0.4.10", + "tokio", + "tracing", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r2d2" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" +dependencies = [ + "log", + "parking_lot 0.12.1", + "scheduled-thread-pool", +] + +[[package]] +name = "r2d2_sqlite_neonphog" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d1e95b387a49ce52c5e4994fbe18af7b6cd52510f74c9a243b12abfc207f49c" +dependencies = [ + "r2d2", + "rusqlite", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand-utf8" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f2017cdc22f0f49fc0385c036847c03403fa5f95bc36e7f420e8e42446e80f" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.14", +] + +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rcgen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" +dependencies = [ + "pem", + "ring", + "time 0.3.23", + "yasna", + "zeroize", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom 0.2.14", + "libredox", + "thiserror", +] + +[[package]] +name = "regalloc2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300d4fbfb40c1c66a78ba3ddd41c1110247cf52f97b87d0f2fc9209bd49b030c" +dependencies = [ + "fxhash", + "log", + "slice-group-by", + "smallvec", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.3", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "region" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6b6ebd13bc009aef9cd476c1310d49ac354d36e240cf1bd753290f3dc7199a7" +dependencies = [ + "bitflags 1.3.2", + "libc", + "mach2", + "windows-sys 0.52.0", +] + +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reqwest" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.4", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.3.1", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.1.2", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "rgb" +version = "0.8.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rkyv" +version = "0.7.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "indexmap 1.9.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rle-decode-fast" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" + +[[package]] +name = "rmp" +version = "0.8.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bddb316f4b9cae1a3e89c02f1926d557d1142d0d2e684b038c11c1b77705229a" +dependencies = [ + "byteorder", + "num-traits", + "paste", +] + +[[package]] +name = "rmp-serde" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "723ecff9ad04f4ad92fe1c8ca6c20d2196d9286e9c60727c4cb5511629260e9d" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + +[[package]] +name = "rmp-serde" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bffea85eea980d8a74453e5d02a8d93028f3c34725de143085a844ebe953258a" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + +[[package]] +name = "rmpv" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de8813b3a2f95c5138fe5925bfb8784175d88d6bff059ba8ce090aa891319754" +dependencies = [ + "num-traits", + "rmp", + "serde", + "serde_bytes", +] + +[[package]] +name = "rpassword" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.48.0", +] + +[[package]] +name = "rtoolbox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "rusqlite" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2" +dependencies = [ + "bitflags 2.5.0", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.20", +] + +[[package]] +name = "rustix" +version = "0.37.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys 0.4.13", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.20.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile 1.0.4", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.100.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "safe_arch" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scheduled-thread-pool" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" +dependencies = [ + "parking_lot 0.12.1", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "security-framework" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "self_cell" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-transcode" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "590c0e25c2a5bb6e85bf5c1bce768ceb86b316e7a01bdf07d2cb4ec2271990e2" +dependencies = [ + "serde", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_bytes" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "serde_json" +version = "1.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +dependencies = [ + "indexmap 2.2.6", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.2.6", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time 0.3.23", +] + +[[package]] +name = "serde_with_macros" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +dependencies = [ + "darling 0.20.8", + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "serde_yaml" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +dependencies = [ + "indexmap 1.9.3", + "ryu", + "serde", + "yaml-rust", +] + +[[package]] +name = "serde_yaml" +version = "0.9.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +dependencies = [ + "indexmap 2.2.6", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha-1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shared-buffer" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6c99835bad52957e7aa241d3975ed17c1e5f8c92026377d117a606f36b84b16" +dependencies = [ + "bytes", + "memmap2 0.6.2", +] + +[[package]] +name = "shrinkwraprs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e63e6744142336dfb606fe2b068afa2e1cca1ee6a5d8377277a92945d81fa331" +dependencies = [ + "bitflags 1.3.2", + "itertools 0.8.2", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "simba" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0b7840f121a46d63066ee7a99fc81dcabbc6105e437cae43528cea199b5a05f" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +dependencies = [ + "serde", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slice-group-by" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "sodoken" +version = "0.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebd7d30290221181652f7a08112f5e7871e3deffde718dfa621025aa0e9c290" +dependencies = [ + "libc", + "libsodium-sys-stable", + "num_cpus", + "once_cell", + "one_err", + "parking_lot 0.12.1", + "tokio", +] + +[[package]] +name = "sodoken" +version = "0.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907e0ea9699b846c2586ea5685e9abf5963fca64a5179a406e6ac02b94564e30" +dependencies = [ + "libc", + "libsodium-sys-stable", + "num_cpus", + "once_cell", + "one_err", + "parking_lot 0.12.1", + "tokio", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "sqlformat" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" +dependencies = [ + "itertools 0.12.1", + "nom", + "unicode_categories", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "statrs" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d08e5e1748192713cc281da8b16924fb46be7b0c2431854eadc785823e5696e" +dependencies = [ + "approx", + "lazy_static", + "nalgebra", + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "str_stack" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091b6114800a5f2141aee1d1b9d6ca3592ac062dc5decb3764ec5895a47b4eb" + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "structopt" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" +dependencies = [ + "clap 2.34.0", + "lazy_static", + "structopt-derive", +] + +[[package]] +name = "structopt-derive" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" +dependencies = [ + "heck 0.3.3", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "strum" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b" + +[[package]] +name = "strum_macros" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subprocess" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2e86926081dda636c546d8c5e641661049d7562a68f5488be4a1f7f66f6086" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "subtle-encoding" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +dependencies = [ + "zeroize", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "sysinfo" +version = "0.28.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2f3ca6693feb29a89724516f016488e9aafc7f37264f898593ee4b942f31b" +dependencies = [ + "cfg-if 1.0.0", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "winapi", +] + +[[package]] +name = "sysinfo" +version = "0.30.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87341a165d73787554941cd5ef55ad728011566fe714e987d1b976c15dbc3a83" +dependencies = [ + "cfg-if 1.0.0", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "target-lexicon" +version = "0.12.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if 1.0.0", + "fastrand 2.0.2", + "rustix 0.38.32", + "windows-sys 0.52.0", +] + +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "test-fuzz" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "125df852011c4f8f31df5620f4aea38ecddb5dfb4d9bc569b30485b15ffc3d4e" +dependencies = [ + "serde", + "test-fuzz-internal", + "test-fuzz-macro", + "test-fuzz-runtime", +] + +[[package]] +name = "test-fuzz-internal" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58071dc2471840e9f374eeb0f6e405a31bccb3cc5d59bb4598f02cafc274b5c4" +dependencies = [ + "cargo_metadata", + "proc-macro2", + "quote", + "serde", + "strum_macros 0.24.3", +] + +[[package]] +name = "test-fuzz-macro" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "856bbca0314c328004691b9c0639fb198ca764d1ce0e20d4dd8b78f2697c2a6f" +dependencies = [ + "darling 0.14.4", + "if_chain", + "lazy_static", + "proc-macro2", + "quote", + "subprocess", + "syn 1.0.109", + "test-fuzz-internal", + "toolchain_find", + "unzip-n", +] + +[[package]] +name = "test-fuzz-runtime" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "303774eb17994c2ddb59c460369f4c3a55496f013380278d78eeebd2deb896ac" +dependencies = [ + "bincode", + "hex", + "num-traits", + "serde", + "sha-1", + "test-fuzz-internal", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446" +dependencies = [ + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "time-macros" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96ba15a897f3c86766b757e5ac7221554c6750054d74d5b28844fce5fb36a6c4" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.6", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54319c93411147bced34cb5609a80e0a8e44c5999c93903a81cd866630ec0bfd" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-native-certs", + "tokio", + "tokio-rustls", + "tungstenite 0.18.0", + "webpki", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.21.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toolchain_find" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e85654a10e7a07a47c6f19d93818f3f343e22927f2fa280c84f7c8042743413" +dependencies = [ + "home", + "lazy_static", + "regex", + "semver 0.11.0", + "walkdir", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "time 0.3.23", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + +[[package]] +name = "trilean" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683ba5022fe6dbd7133cad150478ccf51bdb6d861515181e5fc6b4323d4fa424" + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" +dependencies = [ + "base64 0.13.1", + "byteorder", + "bytes", + "http 0.2.12", + "httparse", + "log", + "rand 0.8.5", + "rustls", + "sha1", + "thiserror", + "url", + "utf-8", + "webpki", +] + +[[package]] +name = "tungstenite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.1.0", + "httparse", + "log", + "rand 0.8.5", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "tx5" +version = "0.0.9-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58e2eebc6b3677281091356d4a5dbc0d48ec77b74b3ee39227e94cda1354a679" +dependencies = [ + "bit_field", + "bytes", + "futures", + "influxive-otel-atomic-obs", + "once_cell", + "opentelemetry_api", + "parking_lot 0.12.1", + "rand 0.8.5", + "rand-utf8", + "serde", + "serde_json", + "tokio", + "tracing", + "tx5-core", + "tx5-go-pion", + "tx5-signal", + "url", +] + +[[package]] +name = "tx5-core" +version = "0.0.9-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a45e91402a7c17bda8835acb47c7460dc3880dc067235d324401a7359857a75" +dependencies = [ + "app_dirs2", + "base64 0.13.1", + "once_cell", + "rand 0.8.5", + "serde", + "serde_json", + "sha2 0.10.8", + "tempfile", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "tx5-go-pion" +version = "0.0.9-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5731de2cad3c014ddce4552f32c0b0c68b8682390b7ac57c55cbeddf6c1dbe50" +dependencies = [ + "futures", + "parking_lot 0.12.1", + "tokio", + "tracing", + "tx5-go-pion-sys", + "url", +] + +[[package]] +name = "tx5-go-pion-sys" +version = "0.0.9-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f42f441e7c186c5aa846618144d1e041215b7d68ecd747aec1e5478c06fccb" +dependencies = [ + "Inflector", + "base64 0.13.1", + "dirs", + "libc", + "libloading", + "once_cell", + "ouroboros", + "sha2 0.10.8", + "tracing", + "tx5-core", + "zip 0.6.6", +] + +[[package]] +name = "tx5-signal" +version = "0.0.9-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82004d487706b590b75ba858d322473fd11ccc1979f99aa85957554572a92cd5" +dependencies = [ + "futures", + "lair_keystore_api", + "once_cell", + "parking_lot 0.12.1", + "rand 0.8.5", + "rand-utf8", + "rcgen", + "ring", + "rustls", + "rustls-native-certs", + "rustls-pemfile 1.0.4", + "serde_json", + "sha2 0.10.8", + "socket2 0.5.6", + "tokio", + "tokio-rustls", + "tokio-tungstenite 0.18.0", + "tracing", + "tx5-core", + "url", + "webpki-roots", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "unzip-n" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e7e85a0596447f0f2ac090e16bc4c516c6fe91771fb0c0ccf7fa3dae896b9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ureq" +version = "2.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d11a831e3c0b56e438a28308e7c810799e3c118417f342d30ecec080105395cd" +dependencies = [ + "base64 0.22.1", + "log", + "native-tls", + "once_cell", + "url", +] + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "url2" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89cd13f1de9862d363308f5ffdadcd2b64b2a4a812fb296a80b7d3e80011b1e" +dependencies = [ + "serde", + "url", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "value-bag" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74797339c3b98616c009c7c3eb53a0ce41e85c8ec66bd3db96ed132d20cfdee8" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "warp" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4378d202ff965b011c64817db11d5829506d3404edeadb61f190d111da3f231c" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "headers", + "http 0.2.12", + "hyper 0.14.28", + "log", + "mime", + "mime_guess", + "multer", + "percent-encoding", + "pin-project", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-tungstenite 0.21.0", + "tokio-util", + "tower-service", + "tracing", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.59", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-encoder" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba64e81215916eaeb48fee292f29401d69235d62d8b8fd92a7b2844ec5ae5f7" +dependencies = [ + "leb128", +] + +[[package]] +name = "wasmer" +version = "4.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4014573f108a246858299eb230031e268316fd57207bd2e8afc79b20fc7ce983" +dependencies = [ + "bytes", + "cfg-if 1.0.0", + "derivative", + "indexmap 1.9.3", + "js-sys", + "more-asserts", + "rustc-demangle", + "serde", + "serde-wasm-bindgen", + "shared-buffer", + "target-lexicon", + "thiserror", + "tracing", + "wasm-bindgen", + "wasmer-compiler", + "wasmer-compiler-cranelift", + "wasmer-derive", + "wasmer-types", + "wasmer-vm", + "wat", + "winapi", +] + +[[package]] +name = "wasmer-compiler" +version = "4.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a77bfe259f08e8ec9e77f8f772ebfb4149f799d1f637231c5a5a6a90c447256" +dependencies = [ + "backtrace", + "bytes", + "cfg-if 1.0.0", + "enum-iterator", + "enumset", + "lazy_static", + "leb128", + "memmap2 0.5.10", + "more-asserts", + "region", + "rkyv", + "self_cell", + "shared-buffer", + "smallvec", + "thiserror", + "wasmer-types", + "wasmer-vm", + "wasmparser", + "winapi", +] + +[[package]] +name = "wasmer-compiler-cranelift" +version = "4.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9280c47ebc754f95357745a38a995dd766f149e16b26e1b7e35741eb23c03d12" +dependencies = [ + "cranelift-codegen", + "cranelift-entity", + "cranelift-frontend", + "gimli 0.26.2", + "more-asserts", + "rayon", + "smallvec", + "target-lexicon", + "tracing", + "wasmer-compiler", + "wasmer-types", +] + +[[package]] +name = "wasmer-derive" +version = "4.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9352877c4f07fc59146d21b56ae6dc469caf342587f49c81b4fbeafead31972" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "wasmer-types" +version = "4.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "749214b6170f2b2fbbfe5b7e7f8d381e64930ac4122f3abceb33cde0292d45d2" +dependencies = [ + "bytecheck", + "enum-iterator", + "enumset", + "indexmap 1.9.3", + "more-asserts", + "rkyv", + "target-lexicon", + "thiserror", +] + +[[package]] +name = "wasmer-vm" +version = "4.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300215479de0deeb453e95aeb1b9c8ffd9bc7d9bd27c5f9e8a184e54db4d31a9" +dependencies = [ + "backtrace", + "cc", + "cfg-if 1.0.0", + "corosensei", + "crossbeam-queue", + "dashmap 5.5.3", + "derivative", + "enum-iterator", + "fnv", + "indexmap 1.9.3", + "lazy_static", + "libc", + "mach", + "memoffset 0.9.1", + "more-asserts", + "region", + "scopeguard", + "thiserror", + "wasmer-types", + "winapi", +] + +[[package]] +name = "wasmparser" +version = "0.121.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" +dependencies = [ + "bitflags 2.5.0", + "indexmap 2.2.6", + "semver 1.0.20", +] + +[[package]] +name = "wast" +version = "64.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a259b226fd6910225aa7baeba82f9d9933b6d00f2ce1b49b80fa4214328237cc" +dependencies = [ + "leb128", + "memchr", + "unicode-width", + "wasm-encoder", +] + +[[package]] +name = "wat" +version = "1.0.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53253d920ab413fca1c7dc2161d601c79b4fdf631d0ba51dd4343bf9b556c3f6" +dependencies = [ + "wast", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ecc0cd7cac091bf682ec5efa18b1cff79d617b84181f38b3951dbe135f607f" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki", +] + +[[package]] +name = "wide" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0e39d2c603fdc0504b12b458cf1f34e0b937ed2f4f2dc20796e3e86f34e11f" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-sys" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43dbb096663629518eb1dfa72d80243ca5a6aca764cae62a2df70af760a9be75" +dependencies = [ + "windows_aarch64_msvc 0.33.0", + "windows_i686_gnu 0.33.0", + "windows_i686_msvc 0.33.0", + "windows_x86_64_gnu 0.33.0", + "windows_x86_64_msvc 0.33.0", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd761fd3eb9ab8cc1ed81e56e567f02dd82c4c837e48ac3b2181b9ffc5060807" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab0cf703a96bab2dc0c02c0fa748491294bf9b7feb27e1f4f96340f208ada0e" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfdbe89cc9ad7ce618ba34abc34bbb6c36d99e96cae2245b7943cd75ee773d0" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4dd9b0c0e9ece7bb22e84d70d01b71c6d6248b81a3c60d11869451b4cb24784" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff1e4aa646495048ec7f3ffddc411e1d829c026a2ec62b39da15c1055e406eaa" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys 0.4.13", + "rustix 0.38.32", +] + +[[package]] +name = "xdg" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time 0.3.23", +] + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.59", +] + +[[package]] +name = "zip" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +dependencies = [ + "byteorder", + "bzip2", + "crc32fast", + "flate2", + "thiserror", + "time 0.1.45", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", +] + +[[package]] +name = "zip" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e6cb8909b2e8e6733c9ef67d35be1a27105644d362aafb5f8b2ba395727adf6" +dependencies = [ + "arbitrary", + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", +] diff --git a/rust-utils/Cargo.toml b/rust-utils/Cargo.toml index 7e9233a9..0c1f7219 100644 --- a/rust-utils/Cargo.toml +++ b/rust-utils/Cargo.toml @@ -7,13 +7,13 @@ version = "0.201.0" crate-type = ["cdylib"] [dependencies] -holochain_conductor_api = "0.4.0-dev.1" -holochain_integrity_types = "0.4.0-dev.1" -holochain_p2p = "0.4.0-dev.1" -holochain_types = "0.4.0-dev.1" -holochain_zome_types = "0.4.0-dev.1" -holo_hash = "0.4.0-dev.1" -kitsune_p2p_timestamp = "0.4.0-dev.1" +holochain_conductor_api = "=0.4.0-dev.1" +holochain_integrity_types = "=0.4.0-dev.1" +holochain_p2p = "=0.4.0-dev.1" +holochain_types = "=0.4.0-dev.1" +holochain_zome_types = "=0.4.0-dev.1" +holo_hash = "=0.4.0-dev.1" +kitsune_p2p_timestamp = "=0.4.0-dev.1" hc_seed_bundle = "0.2.3" lair_keystore_api = "0.4.4" From 9f6901d54ccf954528f0e9253a20b77f53fe42be Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Jun 2024 11:44:37 +0200 Subject: [PATCH 08/15] remove Cargo.lock from gitignore --- rust-utils/.gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rust-utils/.gitignore b/rust-utils/.gitignore index a2b5be15..7759456d 100644 --- a/rust-utils/.gitignore +++ b/rust-utils/.gitignore @@ -121,7 +121,7 @@ dist .AppleDouble .LSOverride -# Icon must end with two +# Icon must end with two Icon @@ -184,7 +184,6 @@ $RECYCLE.BIN/ #Added by cargo /target -Cargo.lock .pnp.* .yarn/* From 30ded19696521f832cc7c48fa16a6f10b0e1980b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Jun 2024 12:20:00 +0200 Subject: [PATCH 09/15] import already derived seed --- rust-utils/index.d.ts | 2 +- rust-utils/src/launcher_lair_client.rs | 194 +++++++++++++------------ src/main/index.ts | 3 +- test_seeds.json | 9 +- 4 files changed, 108 insertions(+), 100 deletions(-) diff --git a/rust-utils/index.d.ts b/rust-utils/index.d.ts index d44ad2f2..b438fd2f 100644 --- a/rust-utils/index.d.ts +++ b/rust-utils/index.d.ts @@ -38,5 +38,5 @@ export class LauncherLairClient { constructor() static connect(connectionUrl: string, passphrase: string): Promise signZomeCall(zomeCallUnsignedJs: ZomeCallUnsignedNapi): Promise - importSeedFromJsonFile(path: string, passphrase: string, tagAppendix: string): Promise + deriveAndImportSeedFromJsonFile(path: string, passphrase: string): Promise } diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs index 5158a418..43a7a7e2 100644 --- a/rust-utils/src/launcher_lair_client.rs +++ b/rust-utils/src/launcher_lair_client.rs @@ -4,6 +4,7 @@ use std::ops::Deref; use ed25519_dalek::{Keypair, PublicKey, SecretKey}; use hc_seed_bundle::{LockedSeedCipher, UnlockedSeedBundle}; +use holo_hash::{AgentPubKey, AgentPubKeyB64}; use holochain_zome_types::prelude::{Signature, ZomeCallUnsigned}; use lair_keystore_api::{ dependencies::{sodoken::BufRead, url::Url}, @@ -79,11 +80,13 @@ impl LauncherLairClient { Ok(signed_zome_call) } - pub async fn import_seed_from_json_file( + /// Reads a json file containing the device bundle and the device derivation path, + /// then derives the device seed and from it a sub seed at index 1 whose base64 encoded + /// public part should equal the initial_host_pub_key field. + pub async fn derive_and_import_seed_from_json_file( &self, path: String, passphrase: String, - tag_appendix: String, ) -> Result<()> { let json_string = std::fs::read_to_string(path)?; let parsed_string: serde_json::Value = serde_json::from_str(&json_string)?; @@ -96,27 +99,46 @@ impl LauncherLairClient { .to_string(); println!("Got device_bundle: {device_bundle}"); - let device_derivation_path_str = - parsed_string["device_derivation_path"] + // let device_derivation_path_str = + // parsed_string["device_derivation_path"] + // .as_str() + // .ok_or(napi::Error::from_reason( + // "device_derivation_path value does not seem to be a string", + // ))?; + + let initial_host_pub_key_b64 = + parsed_string["initial_host_pub_key"] .as_str() .ok_or(napi::Error::from_reason( - "device_derivation_path value does not seem to be a string", + "initial_host_pub_key value does not seem to be a string", ))?; - // ATTN this will only work for single digit derivation paths - let derivation_path_num = - u32::from_str_radix(device_derivation_path_str, 10).map_err(|e| { - napi::Error::from_reason(format!( - "Failed to parse device_derivation_path to u8: {}", - e - )) - })?; + // let derivation_path_num = + // u32::from_str_radix(device_derivation_path_str, 10).map_err(|e| { + // napi::Error::from_reason(format!( + // "Failed to parse device_derivation_path to u8: {}", + // e + // )) + // })?; + + // let device_derivation_path = vec![derivation_path_num]; + + // println!("Parsed derivation path: {:?}", device_derivation_path); - let device_derivation_path = vec![derivation_path_num]; + // Unlock the device bundle and derive the sub seed at index 1 which whose public part should + // correspond to initial_host_pub_key_b64 + let derived_key_pair = + derive_seed_from_device_bundle(&device_bundle, passphrase, 1).await?; - println!("Parsed derivation path: {:?}", device_derivation_path); + let initial_host_pub_key_b64_derived = + AgentPubKeyB64::from(AgentPubKey::from_raw_32(derived_key_pair.public.as_ref().into())); + + println!("Got derived AgentPubKeyB64: {}", initial_host_pub_key_b64_derived.to_string()); + + if initial_host_pub_key_b64 != initial_host_pub_key_b64_derived.to_string() { + return Err(napi::Error::from_reason(format!("Derived public key does not match the expected public key. Expected {initial_host_pub_key_b64} but derived {initial_host_pub_key_b64_derived}"))); + } - let key_pair = unlock_device_bundle(&device_bundle, passphrase).await?; // Get or generate key for encryption of the seed let encryption_key = match self .lair_client @@ -142,6 +164,7 @@ impl LauncherLairClient { )) })?, }; + // Get or generate key for decryption of the seed let decryption_key = match self .lair_client @@ -168,24 +191,25 @@ impl LauncherLairClient { })?, }; - // encrypt device_bundle seed + // encrypt seed that shall be imported let (nonce, cipher) = self .lair_client .crypto_box_xsalsa_by_pub_key( encryption_key.x25519_pub_key.clone(), decryption_key.x25519_pub_key.clone(), None, - key_pair.secret.as_bytes().to_vec().into(), + derived_key_pair.public.as_ref().into(), ) .await .map_err(|e| { napi::Error::from_reason(format!("Failed to encrypt the device_bundle_seed: {}", e)) })?; - let src_tag = format!("imported#{tag_appendix}"); + let src_tag = format!("imported#{initial_host_pub_key_b64_derived}"); // import the encrypted seed into lair - let root_seed = self.lair_client + let imported_seed = self + .lair_client .import_seed( encryption_key.x25519_pub_key, decryption_key.x25519_pub_key, @@ -193,80 +217,62 @@ impl LauncherLairClient { nonce, cipher, src_tag.clone().into(), - true, + false, ) .await .map_err(|e| { napi::Error::from_reason(format!("Failed to import cipher into lair: {}", e)) })?; - let base64_pubkey_x = base64::encode_config( - root_seed.x25519_pub_key.as_ref(), - base64::STANDARD_NO_PAD, - ); + let base64_pubkey_x = + base64::encode_config(imported_seed.x25519_pub_key.as_ref(), base64::STANDARD_NO_PAD); - let base64_pubkey_ed = base64::encode_config( - root_seed.ed25519_pub_key.as_ref(), - base64::STANDARD_NO_PAD, - ); + let base64_pubkey_ed = + base64::encode_config(imported_seed.ed25519_pub_key.as_ref(), base64::STANDARD_NO_PAD); - let base36_pubkey_x = base36::encode( - root_seed.x25519_pub_key.as_ref() - ); + let base36_pubkey_x = base36::encode(imported_seed.x25519_pub_key.as_ref()); - let base36_pubkey_ed = base36::encode( - root_seed.ed25519_pub_key.as_ref(), - ); + let base36_pubkey_ed = base36::encode(imported_seed.ed25519_pub_key.as_ref()); - println!("\n\ngot derived base64 x25519 pubkey: {base64_pubkey_x}"); - println!("got derived base64 ed25519 pubkey: {base64_pubkey_ed}"); + println!("\n\ngot imported base64 x25519 pubkey: {base64_pubkey_x}"); + println!("got imported base64 ed25519 pubkey: {base64_pubkey_ed}"); - println!("got derived base36 x25519 pubkey: {base36_pubkey_x}"); - println!("got derived base36 ed25519 pubkey: {base36_pubkey_ed}"); + println!("got imported base36 x25519 pubkey: {base36_pubkey_x}"); + println!("got imported base36 ed25519 pubkey: {base36_pubkey_ed}"); - let dst_tag = format!("imported#derived{device_derivation_path_str}#{tag_appendix}"); + // let dst_tag = format!("imported#derived{device_derivation_path_str}#{tag_appendix}"); - // Derive the seed for the given derivation path - let seed_info_derived = self - .lair_client - .derive_seed( - src_tag.into(), - None, - dst_tag.into(), - None, - vec![1].into(), - ) - .await - .map_err(|e| { - napi::Error::from_reason(format!( - "Failed to derive seed from derivation path: {}", - e - )) - })?; + // // Derive the seed for the given derivation path + // let seed_info_derived = self + // .lair_client + // .derive_seed(src_tag.into(), None, dst_tag.into(), None, vec![1].into()) + // .await + // .map_err(|e| { + // napi::Error::from_reason(format!( + // "Failed to derive seed from derivation path: {}", + // e + // )) + // })?; - let base64_pubkey_x = base64::encode_config( - seed_info_derived.x25519_pub_key.as_ref(), - base64::STANDARD_NO_PAD, - ); + // let base64_pubkey_x = base64::encode_config( + // seed_info_derived.x25519_pub_key.as_ref(), + // base64::STANDARD_NO_PAD, + // ); - let base64_pubkey_ed = base64::encode_config( - seed_info_derived.ed25519_pub_key.as_ref(), - base64::STANDARD_NO_PAD, - ); + // let base64_pubkey_ed = base64::encode_config( + // seed_info_derived.ed25519_pub_key.as_ref(), + // base64::STANDARD_NO_PAD, + // ); - let base36_pubkey_x = base36::encode( - seed_info_derived.x25519_pub_key.as_ref() - ); + // let base36_pubkey_x = base36::encode(seed_info_derived.x25519_pub_key.as_ref()); - let base36_pubkey_ed = base36::encode( - seed_info_derived.ed25519_pub_key.as_ref(), - ); + // let base36_pubkey_ed = base36::encode(seed_info_derived.ed25519_pub_key.as_ref()); - println!("\n\ngot derived base64 x25519 pubkey: {base64_pubkey_x}"); - println!("got derived base64 ed25519 pubkey: {base64_pubkey_ed}"); + // println!("\n\ngot derived base64 x25519 pubkey: {base64_pubkey_x}"); + // println!("got derived base64 ed25519 pubkey: {base64_pubkey_ed}"); - println!("got derived base36 x25519 pubkey: {base36_pubkey_x}"); - println!("got derived base36 ed25519 pubkey: {base36_pubkey_ed}"); + // println!("got derived base36 x25519 pubkey: {base36_pubkey_x}"); + // println!("got derived base36 ed25519 pubkey: {base36_pubkey_ed}"); Ok(()) } @@ -308,28 +314,26 @@ impl JsLauncherLairClient { } #[napi] - pub async fn import_seed_from_json_file( + pub async fn derive_and_import_seed_from_json_file( &self, path: String, passphrase: String, - tag_appendix: String, ) -> Result<()> { self.launcher_lair_client .as_ref() .unwrap() - .import_seed_from_json_file(path, passphrase, tag_appendix) + .derive_and_import_seed_from_json_file(path, passphrase) .await } } -/// unlock seed_bundles to access the pub-key and seed -pub async fn unlock_device_bundle( +/// Unlocks the device bundle seed with the given passphrase, then derives +/// a sub SeedBundle by the given index and returns the corresponding derived KeyPair +pub async fn derive_seed_from_device_bundle( device_bundle: &String, passphrase: String, + index: u32, ) -> napi::Result { - // let cipher = base64::decode_config(device_bundle, base64::URL_SAFE_NO_PAD).map_err(|e| { - // napi::Error::from_reason(format!("Failed to decode device bundle: {:?}", e)) - // })?; let cipher = base64::decode(device_bundle).map_err(|e| { napi::Error::from_reason(format!("Failed to decode device bundle: {:?}", e)) })?; @@ -348,20 +352,24 @@ pub async fn unlock_device_bundle( e )) })?; - let immediately_derived_seed = seed.derive(1).await.unwrap(); - let derived_pubkey = PublicKey::from_bytes(&*immediately_derived_seed.get_sign_pub_key().read_lock()).unwrap(); - let base36_derived_pubkey = base36::encode(derived_pubkey.as_ref()); - println!("Immediately derived pubkey: {base36_derived_pubkey}"); + let derived_seed = seed.derive(index).await.unwrap(); + // let derived_pubkey = + // PublicKey::from_bytes(&*immediately_derived_seed.get_sign_pub_key().read_lock()) + // .unwrap(); + // let base36_derived_pubkey = base36::encode(derived_pubkey.as_ref()); + // println!("Immediately derived pubkey: {base36_derived_pubkey}"); Ok(Keypair { - public: PublicKey::from_bytes(&*seed.get_sign_pub_key().read_lock()).map_err( - |e| napi::Error::from_reason(format!("Failed to get public key: {:?}", e)), + public: PublicKey::from_bytes(&*derived_seed.get_sign_pub_key().read_lock()) + .map_err(|e| { + napi::Error::from_reason(format!("Failed to get public key: {:?}", e)) + })?, + secret: SecretKey::from_bytes(&*derived_seed.get_seed().read_lock()).map_err( + |e| napi::Error::from_reason(format!("Failed to get seed: {:?}", e)), )?, - secret: SecretKey::from_bytes(&*seed.get_seed().read_lock()).map_err(|e| { - napi::Error::from_reason(format!("Failed to get seed: {:?}", e)) - })?, }) } _ => Err(napi::Error::from_reason("Unsupported Cipher".to_string())), } -} \ No newline at end of file +} + diff --git a/src/main/index.ts b/src/main/index.ts index 31a6f104..30c38283 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -364,10 +364,9 @@ async function handleLaunch(password: string) { LAIR_HANDLE = lairHandle; DEFAULT_ZOME_CALL_SIGNER = await rustUtils.LauncherLairClient.connect(lairUrl, password); - DEFAULT_ZOME_CALL_SIGNER.importSeedFromJsonFile( + await DEFAULT_ZOME_CALL_SIGNER.deriveAndImportSeedFromJsonFile( '/home/matthias/code/holochain/holochain/launcher-electron/test_seeds.json', 'test-passphrase', - 'test-import', ); console.log('read seed from json file.'); } diff --git a/test_seeds.json b/test_seeds.json index 35ae7aa0..f6679305 100644 --- a/test_seeds.json +++ b/test_seeds.json @@ -1,13 +1,14 @@ { - "device_bundle": "k6VoY3NiMJGWonB3xBCG5YSrc5dvFcOxeoHVwyn2zhAAAAADxBjEEKoEzjJPA092vGHYZRr1logo4aqWH/rEMU5Y3KMMi9Qr6XljCR2z2rmLMrAGgWnwsHbLceNAIbucO1f5gmRBP4QRqe4Uhv0h0BjEAA==", + "device_bundle": "k6VoY3NiMJGWonB3xBDMSgXaaqCEDtRgibIq5V+LzhAAAAADxBhKYohydWdJnW0qHPgMqRVeUrkcJ+J9BzHEMYsu6TjeC19lUYMmEk8DbxwGPo0CKbOYL4VtFgwTwqTKuk0n9Tv5t1QccCx1iVkN7BjEAA==", "device_derivation_path": "2", - "revocation_pub_key": "N+ZFTpNh/AHsVplSMM9vXUwyBSORQk3mWttRKntX1kk", - "holoport_id": "43wshe97frq850fow8diy6qzsz4dl6lmsm28wiv15jg8ttun1l", + "revocation_pub_key": "CXPgTFVxfhvQQpd8RaLIAZYRKYqsOmoGzv7AVm+dM4Y", + "holoport_id": "s97ht0w3jbi2960anz7tciany8300izgini7utvf021dgz4b1", + "initial_host_pub_key": "uhCAkH327tESyjdBpCNdQEW1ibSdT_VfnO5VJehM-kBVU9I1UrCTj", "registration_code": "registration-code", "settings": { "admin": { "email": "joel@holo.host", - "public_key": "aYeY80D7bJ9vPdUxqz1q08YZO7wcUSqpDHlFktPF9lU" + "public_key": "XfYV7QiQYojbyYrNUXnvgUIqKFuAD1t0Qo7pAsjD/mk" } } } \ No newline at end of file From 8046634bb3ea26250f96d7b07fcb0a3cc1156e48 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Jun 2024 14:26:35 +0200 Subject: [PATCH 10/15] return imported public key --- rust-utils/index.d.ts | 2 +- rust-utils/src/launcher_lair_client.rs | 75 +++++++------------------- src/main/index.ts | 4 +- 3 files changed, 21 insertions(+), 60 deletions(-) diff --git a/rust-utils/index.d.ts b/rust-utils/index.d.ts index b438fd2f..aec94ba8 100644 --- a/rust-utils/index.d.ts +++ b/rust-utils/index.d.ts @@ -38,5 +38,5 @@ export class LauncherLairClient { constructor() static connect(connectionUrl: string, passphrase: string): Promise signZomeCall(zomeCallUnsignedJs: ZomeCallUnsignedNapi): Promise - deriveAndImportSeedFromJsonFile(path: string, passphrase: string): Promise + deriveAndImportSeedFromJsonFile(path: string, passphrase: string): Promise } diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs index 43a7a7e2..b16995a7 100644 --- a/rust-utils/src/launcher_lair_client.rs +++ b/rust-utils/src/launcher_lair_client.rs @@ -87,17 +87,17 @@ impl LauncherLairClient { &self, path: String, passphrase: String, - ) -> Result<()> { + ) -> Result { let json_string = std::fs::read_to_string(path)?; let parsed_string: serde_json::Value = serde_json::from_str(&json_string)?; - println!("Parsed json string: {}", parsed_string); + // println!("Parsed json string: {}", parsed_string); let device_bundle = parsed_string["device_bundle"] .as_str() .ok_or(napi::Error::from_reason( "device_bundle value does not seem to be a string", ))? .to_string(); - println!("Got device_bundle: {device_bundle}"); + // println!("Got device_bundle: {device_bundle}"); // let device_derivation_path_str = // parsed_string["device_derivation_path"] @@ -130,10 +130,14 @@ impl LauncherLairClient { let derived_key_pair = derive_seed_from_device_bundle(&device_bundle, passphrase, 1).await?; - let initial_host_pub_key_b64_derived = - AgentPubKeyB64::from(AgentPubKey::from_raw_32(derived_key_pair.public.as_ref().into())); + let initial_host_pub_key_b64_derived = AgentPubKeyB64::from(AgentPubKey::from_raw_32( + derived_key_pair.public.as_ref().into(), + )); - println!("Got derived AgentPubKeyB64: {}", initial_host_pub_key_b64_derived.to_string()); + // println!( + // "Got derived AgentPubKeyB64: {}", + // initial_host_pub_key_b64_derived.to_string() + // ); if initial_host_pub_key_b64 != initial_host_pub_key_b64_derived.to_string() { return Err(napi::Error::from_reason(format!("Derived public key does not match the expected public key. Expected {initial_host_pub_key_b64} but derived {initial_host_pub_key_b64_derived}"))); @@ -224,57 +228,15 @@ impl LauncherLairClient { napi::Error::from_reason(format!("Failed to import cipher into lair: {}", e)) })?; - let base64_pubkey_x = - base64::encode_config(imported_seed.x25519_pub_key.as_ref(), base64::STANDARD_NO_PAD); - - let base64_pubkey_ed = - base64::encode_config(imported_seed.ed25519_pub_key.as_ref(), base64::STANDARD_NO_PAD); - - let base36_pubkey_x = base36::encode(imported_seed.x25519_pub_key.as_ref()); - - let base36_pubkey_ed = base36::encode(imported_seed.ed25519_pub_key.as_ref()); - - println!("\n\ngot imported base64 x25519 pubkey: {base64_pubkey_x}"); - println!("got imported base64 ed25519 pubkey: {base64_pubkey_ed}"); - - println!("got imported base36 x25519 pubkey: {base36_pubkey_x}"); - println!("got imported base36 ed25519 pubkey: {base36_pubkey_ed}"); + let imported_pubkey_b64 = AgentPubKeyB64::from(AgentPubKey::from_raw_32( + imported_seed.ed25519_pub_key.as_ref().to_vec(), + )); - // let dst_tag = format!("imported#derived{device_derivation_path_str}#{tag_appendix}"); - - // // Derive the seed for the given derivation path - // let seed_info_derived = self - // .lair_client - // .derive_seed(src_tag.into(), None, dst_tag.into(), None, vec![1].into()) - // .await - // .map_err(|e| { - // napi::Error::from_reason(format!( - // "Failed to derive seed from derivation path: {}", - // e - // )) - // })?; - - // let base64_pubkey_x = base64::encode_config( - // seed_info_derived.x25519_pub_key.as_ref(), - // base64::STANDARD_NO_PAD, - // ); - - // let base64_pubkey_ed = base64::encode_config( - // seed_info_derived.ed25519_pub_key.as_ref(), - // base64::STANDARD_NO_PAD, - // ); - - // let base36_pubkey_x = base36::encode(seed_info_derived.x25519_pub_key.as_ref()); - - // let base36_pubkey_ed = base36::encode(seed_info_derived.ed25519_pub_key.as_ref()); - - // println!("\n\ngot derived base64 x25519 pubkey: {base64_pubkey_x}"); - // println!("got derived base64 ed25519 pubkey: {base64_pubkey_ed}"); - - // println!("got derived base36 x25519 pubkey: {base36_pubkey_x}"); - // println!("got derived base36 ed25519 pubkey: {base36_pubkey_ed}"); + if initial_host_pub_key_b64 != imported_pubkey_b64.to_string() { + return Err(napi::Error::from_reason(format!("Imported public key does not match the expected public key. Expected {initial_host_pub_key_b64} but derived {imported_pubkey_b64}"))); + } - Ok(()) + Ok(imported_pubkey_b64.to_string()) } } @@ -318,7 +280,7 @@ impl JsLauncherLairClient { &self, path: String, passphrase: String, - ) -> Result<()> { + ) -> Result { self.launcher_lair_client .as_ref() .unwrap() @@ -372,4 +334,3 @@ pub async fn derive_seed_from_device_bundle( _ => Err(napi::Error::from_reason("Unsupported Cipher".to_string())), } } - diff --git a/src/main/index.ts b/src/main/index.ts index 30c38283..8f9f4e94 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -364,11 +364,11 @@ async function handleLaunch(password: string) { LAIR_HANDLE = lairHandle; DEFAULT_ZOME_CALL_SIGNER = await rustUtils.LauncherLairClient.connect(lairUrl, password); - await DEFAULT_ZOME_CALL_SIGNER.deriveAndImportSeedFromJsonFile( + const importedPubkey = await DEFAULT_ZOME_CALL_SIGNER.deriveAndImportSeedFromJsonFile( '/home/matthias/code/holochain/holochain/launcher-electron/test_seeds.json', 'test-passphrase', ); - console.log('read seed from json file.'); + console.log('read seed from json file and imported seed with pubkey: ', importedPubkey); } LAUNCHER_EMITTER.emit(LOADING_PROGRESS_UPDATE, 'startingHolochain'); From 15b1e922535eee1dce8361dcc8503cb1170b3758 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Jun 2024 15:07:49 +0200 Subject: [PATCH 11/15] collect passphrase via pinentry and fix importing the private part instead of the public part --- rust-utils/Cargo.lock | 41 ++++++++++++++++++++++++-- rust-utils/Cargo.toml | 2 ++ rust-utils/index.d.ts | 2 +- rust-utils/src/launcher_lair_client.rs | 25 +++++++++++----- 4 files changed, 60 insertions(+), 10 deletions(-) diff --git a/rust-utils/Cargo.lock b/rust-utils/Cargo.lock index 699ae15d..9258a425 100644 --- a/rust-utils/Cargo.lock +++ b/rust-utils/Cargo.lock @@ -2044,6 +2044,8 @@ dependencies = [ "napi", "napi-build", "napi-derive", + "pinentry", + "secrecy", "serde_json", "serde_yaml 0.8.26", "sodoken 0.0.9", @@ -2615,7 +2617,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "socket2 0.5.6", "tokio", "tower-service", "tracing", @@ -3258,7 +3260,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if 1.0.0", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -4141,6 +4143,20 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pinentry" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5b8bc68be6a5e2ba84ee86db53f816cba1905b94fcb7c236e606221cc8fc8" +dependencies = [ + "log", + "nom", + "percent-encoding", + "secrecy", + "which", + "zeroize", +] + [[package]] name = "piper" version = "0.2.1" @@ -5015,6 +5031,15 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "zeroize", +] + [[package]] name = "security-framework" version = "2.10.0" @@ -6767,6 +6792,18 @@ dependencies = [ "rustls-webpki", ] +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.32", +] + [[package]] name = "wide" version = "0.7.17" diff --git a/rust-utils/Cargo.toml b/rust-utils/Cargo.toml index 0c1f7219..c59d6acf 100644 --- a/rust-utils/Cargo.toml +++ b/rust-utils/Cargo.toml @@ -30,6 +30,8 @@ napi = { version = "2.12.2", default-features = false, features = [ "serde-json", ] } napi-derive = "2.12.2" +pinentry = "0.5.0" +secrecy = "0.8.0" serde_json = "1.0.117" serde_yaml = "0.8" sodoken = "0.0.9" diff --git a/rust-utils/index.d.ts b/rust-utils/index.d.ts index aec94ba8..849cb486 100644 --- a/rust-utils/index.d.ts +++ b/rust-utils/index.d.ts @@ -38,5 +38,5 @@ export class LauncherLairClient { constructor() static connect(connectionUrl: string, passphrase: string): Promise signZomeCall(zomeCallUnsignedJs: ZomeCallUnsignedNapi): Promise - deriveAndImportSeedFromJsonFile(path: string, passphrase: string): Promise + deriveAndImportSeedFromJsonFile(path: string): Promise } diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs index b16995a7..92007f93 100644 --- a/rust-utils/src/launcher_lair_client.rs +++ b/rust-utils/src/launcher_lair_client.rs @@ -12,6 +12,8 @@ use lair_keystore_api::{ lair_store::LairEntryInfo, LairClient, }; +use pinentry::PassphraseInput; +use secrecy::{ExposeSecret, SecretString}; use napi::Result; @@ -86,7 +88,6 @@ impl LauncherLairClient { pub async fn derive_and_import_seed_from_json_file( &self, path: String, - passphrase: String, ) -> Result { let json_string = std::fs::read_to_string(path)?; let parsed_string: serde_json::Value = serde_json::from_str(&json_string)?; @@ -125,6 +126,17 @@ impl LauncherLairClient { // println!("Parsed derivation path: {:?}", device_derivation_path); + let passphrase = if let Some(mut input) = PassphraseInput::with_default_binary() { + // pinentry binary is available! + input + .with_description("Enter Seed Bundle Passphrase") + .with_prompt("Passphrase:") + .interact() + .map_err(|e| napi::Error::from_reason(format!("Failed to collect passphrase: {e}")))? + } else { + return Err(napi::Error::from_reason("No pinentry binary available to collect the passphrase.")); + }; + // Unlock the device bundle and derive the sub seed at index 1 which whose public part should // correspond to initial_host_pub_key_b64 let derived_key_pair = @@ -202,7 +214,7 @@ impl LauncherLairClient { encryption_key.x25519_pub_key.clone(), decryption_key.x25519_pub_key.clone(), None, - derived_key_pair.public.as_ref().into(), + derived_key_pair.secret.as_ref().into(), ) .await .map_err(|e| { @@ -233,7 +245,7 @@ impl LauncherLairClient { )); if initial_host_pub_key_b64 != imported_pubkey_b64.to_string() { - return Err(napi::Error::from_reason(format!("Imported public key does not match the expected public key. Expected {initial_host_pub_key_b64} but derived {imported_pubkey_b64}"))); + return Err(napi::Error::from_reason(format!("Imported public key does not match the expected public key. Expected {initial_host_pub_key_b64} but imported {imported_pubkey_b64}"))); } Ok(imported_pubkey_b64.to_string()) @@ -279,12 +291,11 @@ impl JsLauncherLairClient { pub async fn derive_and_import_seed_from_json_file( &self, path: String, - passphrase: String, ) -> Result { self.launcher_lair_client .as_ref() .unwrap() - .derive_and_import_seed_from_json_file(path, passphrase) + .derive_and_import_seed_from_json_file(path) .await } } @@ -293,7 +304,7 @@ impl JsLauncherLairClient { /// a sub SeedBundle by the given index and returns the corresponding derived KeyPair pub async fn derive_seed_from_device_bundle( device_bundle: &String, - passphrase: String, + passphrase: SecretString, index: u32, ) -> napi::Result { let cipher = base64::decode(device_bundle).map_err(|e| { @@ -307,7 +318,7 @@ pub async fn derive_seed_from_device_bundle( .remove(0) { LockedSeedCipher::PwHash(cipher) => { - let passphrase_bufread = BufRead::from(passphrase.as_bytes()); + let passphrase_bufread = BufRead::from(passphrase.expose_secret().as_bytes()); let seed = cipher.unlock(passphrase_bufread).await.map_err(|e| { napi::Error::from_reason(format!( "Failed to unlock cipher with the given passphrase: {:?}", From 3f8e6cefb26fe03efeb6f6ff318f363d944f2ecd Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Jun 2024 15:13:56 +0200 Subject: [PATCH 12/15] renaming to LAIR_CLIENT, move seed import logic to dedicated IPC call --- src/main/index.ts | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index 8f9f4e94..a6ea4717 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -188,9 +188,9 @@ const DEFAULT_APPS_NETWORK_SEED = app.isPackaged setupLogs(LAUNCHER_EMITTER, LAUNCHER_FILE_SYSTEM); -let DEFAULT_ZOME_CALL_SIGNER: LauncherLairClient | undefined; +let DEFAULT_LAIR_CLIENT: LauncherLairClient | undefined; // Zome call signers for external binaries (admin ports used as keys) -const CUSTOM_ZOME_CALL_SIGNERS: Record = {}; +const CUSTOM_LAIR_CLIENTS: Record = {}; let INTEGRITY_CHECKER: IntegrityChecker | undefined; @@ -230,11 +230,11 @@ const handleSignZomeCall = async (e: IpcMainInvokeEvent, request: CallZomeReques if (windowInfo && windowInfo.adminPort) { // In case of externally running binaries we need to use a custom zome call signer - const zomeCallSigner = CUSTOM_ZOME_CALL_SIGNERS[windowInfo.adminPort]; + const zomeCallSigner = CUSTOM_LAIR_CLIENTS[windowInfo.adminPort]; return signZomeCall(zomeCallSigner, request); } - if (!DEFAULT_ZOME_CALL_SIGNER) throw Error('Lair signer is not ready'); - return signZomeCall(DEFAULT_ZOME_CALL_SIGNER, request); + if (!DEFAULT_LAIR_CLIENT) throw Error('Lair signer is not ready'); + return signZomeCall(DEFAULT_LAIR_CLIENT, request); }; // This method will be called when Electron has finished @@ -349,8 +349,7 @@ async function handleLaunch(password: string) { if (VALIDATED_CLI_ARGS.holochainVersion.type === 'running-external') { lairUrl = VALIDATED_CLI_ARGS.holochainVersion.lairUrl; const externalZomeCallSigner = await rustUtils.LauncherLairClient.connect(lairUrl, password); - CUSTOM_ZOME_CALL_SIGNERS[VALIDATED_CLI_ARGS.holochainVersion.adminPort] = - externalZomeCallSigner; + CUSTOM_LAIR_CLIENTS[VALIDATED_CLI_ARGS.holochainVersion.adminPort] = externalZomeCallSigner; } else { const [lairHandle, lairUrl2] = await launchLairKeystore( VALIDATED_CLI_ARGS.lairBinaryPath, @@ -362,13 +361,6 @@ async function handleLaunch(password: string) { lairUrl = lairUrl2; LAIR_HANDLE = lairHandle; - - DEFAULT_ZOME_CALL_SIGNER = await rustUtils.LauncherLairClient.connect(lairUrl, password); - const importedPubkey = await DEFAULT_ZOME_CALL_SIGNER.deriveAndImportSeedFromJsonFile( - '/home/matthias/code/holochain/holochain/launcher-electron/test_seeds.json', - 'test-passphrase', - ); - console.log('read seed from json file and imported seed with pubkey: ', importedPubkey); } LAUNCHER_EMITTER.emit(LOADING_PROGRESS_UPDATE, 'startingHolochain'); @@ -452,7 +444,7 @@ const getAppClient = async (appId: InstalledAppId): Promise => { origin: 'holochain-launcher', }, callZomeTransform: { - input: async (request) => signZomeCall(DEFAULT_ZOME_CALL_SIGNER!, request), + input: async (request) => signZomeCall(DEFAULT_LAIR_CLIENT!, request), output: (o) => decode(o), }, }); @@ -713,6 +705,11 @@ const router = t.router({ onSetupProgressUpdate: t.procedure.subscription(() => { return createObservable(LAUNCHER_EMITTER, LOADING_PROGRESS_UPDATE); }), + deriveAndImportSeedFromJsonFile: t.procedure.input(z.string()).mutation(async (opts) => { + const jsonFilePath = opts.input; + if (!DEFAULT_LAIR_CLIENT) throw new Error('Lair client is not ready.'); + return DEFAULT_LAIR_CLIENT.deriveAndImportSeedFromJsonFile(jsonFilePath); + }), }); export type AppRouter = typeof router; From 7bf74c90a6972d87a42529d0afa791b15bfad4f3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Jun 2024 15:25:20 +0200 Subject: [PATCH 13/15] re-added accidentally removed lair client connection, renaming --- src/main/index.ts | 9 +++++---- src/main/utils.ts | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index a6ea4717..befa8db5 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -230,8 +230,8 @@ const handleSignZomeCall = async (e: IpcMainInvokeEvent, request: CallZomeReques if (windowInfo && windowInfo.adminPort) { // In case of externally running binaries we need to use a custom zome call signer - const zomeCallSigner = CUSTOM_LAIR_CLIENTS[windowInfo.adminPort]; - return signZomeCall(zomeCallSigner, request); + const lairClient = CUSTOM_LAIR_CLIENTS[windowInfo.adminPort]; + return signZomeCall(lairClient, request); } if (!DEFAULT_LAIR_CLIENT) throw Error('Lair signer is not ready'); return signZomeCall(DEFAULT_LAIR_CLIENT, request); @@ -348,8 +348,8 @@ async function handleLaunch(password: string) { if (VALIDATED_CLI_ARGS.holochainVersion.type === 'running-external') { lairUrl = VALIDATED_CLI_ARGS.holochainVersion.lairUrl; - const externalZomeCallSigner = await rustUtils.LauncherLairClient.connect(lairUrl, password); - CUSTOM_LAIR_CLIENTS[VALIDATED_CLI_ARGS.holochainVersion.adminPort] = externalZomeCallSigner; + const externalLairClient = await rustUtils.LauncherLairClient.connect(lairUrl, password); + CUSTOM_LAIR_CLIENTS[VALIDATED_CLI_ARGS.holochainVersion.adminPort] = externalLairClient; } else { const [lairHandle, lairUrl2] = await launchLairKeystore( VALIDATED_CLI_ARGS.lairBinaryPath, @@ -361,6 +361,7 @@ async function handleLaunch(password: string) { lairUrl = lairUrl2; LAIR_HANDLE = lairHandle; + DEFAULT_LAIR_CLIENT = await rustUtils.LauncherLairClient.connect(lairUrl, password); } LAUNCHER_EMITTER.emit(LOADING_PROGRESS_UPDATE, 'startingHolochain'); diff --git a/src/main/utils.ts b/src/main/utils.ts index ada485cd..9c6ece03 100644 --- a/src/main/utils.ts +++ b/src/main/utils.ts @@ -175,7 +175,7 @@ export function breakingVersion(version: string) { } export async function signZomeCall( - zomeCallSigner: LauncherLairClient, + lairClient: LauncherLairClient, zomeCallUnsigned: CallZomeRequest, ): Promise { const zomeCallUnsignedNapi: ZomeCallUnsignedNapi = { @@ -188,7 +188,7 @@ export async function signZomeCall( expiresAt: getNonceExpiration(), }; - const zomeCallSignedNapi: ZomeCallNapi = await zomeCallSigner.signZomeCall(zomeCallUnsignedNapi); + const zomeCallSignedNapi: ZomeCallNapi = await lairClient.signZomeCall(zomeCallUnsignedNapi); const zomeCallSigned: CallZomeRequestSigned = { provenance: Uint8Array.from(zomeCallSignedNapi.provenance), From 95aa2842f478835bb9a33d6e425a9e827287e19e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Jun 2024 15:31:29 +0200 Subject: [PATCH 14/15] code cleanup --- rust-utils/src/launcher_lair_client.rs | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs index 92007f93..a4891100 100644 --- a/rust-utils/src/launcher_lair_client.rs +++ b/rust-utils/src/launcher_lair_client.rs @@ -19,17 +19,6 @@ use napi::Result; use crate::types::*; -// // This is an incomplete type with only the fields that are actually necessary for the launcher case -// struct SeedConfig { -// /// This is the Device Seed Bundle as a base64 string which is compatible with lair-keystore >=v0.0.8 -// /// And is encoded with a password that will be needed to be used to decrypt it -// device_bundle: String, -// /// Derivation path of the seed in this config that was generated for a Master Seed -// device_derivation_path: String, -// // /1 derivation path of the device bundle base36 encoded -// holoport_id: String, -// } - struct LauncherLairClient { lair_client: LairClient, } @@ -326,11 +315,6 @@ pub async fn derive_seed_from_device_bundle( )) })?; let derived_seed = seed.derive(index).await.unwrap(); - // let derived_pubkey = - // PublicKey::from_bytes(&*immediately_derived_seed.get_sign_pub_key().read_lock()) - // .unwrap(); - // let base36_derived_pubkey = base36::encode(derived_pubkey.as_ref()); - // println!("Immediately derived pubkey: {base36_derived_pubkey}"); Ok(Keypair { public: PublicKey::from_bytes(&*derived_seed.get_sign_pub_key().read_lock()) From 6b9fcc21c1775d81c421332f2ee7cb200b9ca017 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Jun 2024 20:48:45 +0200 Subject: [PATCH 15/15] cleanup comments --- rust-utils/src/launcher_lair_client.rs | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/rust-utils/src/launcher_lair_client.rs b/rust-utils/src/launcher_lair_client.rs index a4891100..91bc02c2 100644 --- a/rust-utils/src/launcher_lair_client.rs +++ b/rust-utils/src/launcher_lair_client.rs @@ -80,21 +80,12 @@ impl LauncherLairClient { ) -> Result { let json_string = std::fs::read_to_string(path)?; let parsed_string: serde_json::Value = serde_json::from_str(&json_string)?; - // println!("Parsed json string: {}", parsed_string); let device_bundle = parsed_string["device_bundle"] .as_str() .ok_or(napi::Error::from_reason( "device_bundle value does not seem to be a string", ))? .to_string(); - // println!("Got device_bundle: {device_bundle}"); - - // let device_derivation_path_str = - // parsed_string["device_derivation_path"] - // .as_str() - // .ok_or(napi::Error::from_reason( - // "device_derivation_path value does not seem to be a string", - // ))?; let initial_host_pub_key_b64 = parsed_string["initial_host_pub_key"] @@ -103,18 +94,6 @@ impl LauncherLairClient { "initial_host_pub_key value does not seem to be a string", ))?; - // let derivation_path_num = - // u32::from_str_radix(device_derivation_path_str, 10).map_err(|e| { - // napi::Error::from_reason(format!( - // "Failed to parse device_derivation_path to u8: {}", - // e - // )) - // })?; - - // let device_derivation_path = vec![derivation_path_num]; - - // println!("Parsed derivation path: {:?}", device_derivation_path); - let passphrase = if let Some(mut input) = PassphraseInput::with_default_binary() { // pinentry binary is available! input @@ -135,11 +114,6 @@ impl LauncherLairClient { derived_key_pair.public.as_ref().into(), )); - // println!( - // "Got derived AgentPubKeyB64: {}", - // initial_host_pub_key_b64_derived.to_string() - // ); - if initial_host_pub_key_b64 != initial_host_pub_key_b64_derived.to_string() { return Err(napi::Error::from_reason(format!("Derived public key does not match the expected public key. Expected {initial_host_pub_key_b64} but derived {initial_host_pub_key_b64_derived}"))); }