diff --git a/Cargo.toml b/Cargo.toml index 7f2a8af..4e6cbfa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,26 +2,26 @@ resolver = "2" members = [ - "keyfork", - "keyfork-crossterm", - "keyfork-entropy", - "keyfork-derive-key", - "keyfork-derive-openpgp", - "keyfork-derive-path-data", - "keyfork-derive-util", - "keyfork-frame", - "keyfork-mnemonic-util", - "keyfork-prompt", - "keyfork-plumbing", - "keyfork-shard", - "keyfork-slip10-test-data", - "keyfork-qrcode", - "keyfork-zbar", - "keyfork-zbar-sys", - "keyforkd", - "keyforkd-client", - "keyforkd-models", - "smex", + "crates/keyfork", + "crates/daemon/keyforkd", + "crates/daemon/keyforkd-client", + "crates/daemon/keyforkd-models", + "crates/derive/keyfork-derive-key", + "crates/derive/keyfork-derive-openpgp", + "crates/derive/keyfork-derive-path-data", + "crates/derive/keyfork-derive-util", + "crates/keyfork-shard", + "crates/qrcode/keyfork-qrcode", + "crates/qrcode/keyfork-zbar", + "crates/qrcode/keyfork-zbar-sys", + "crates/util/keyfork-crossterm", + "crates/util/keyfork-entropy", + "crates/util/keyfork-frame", + "crates/util/keyfork-mnemonic-util", + "crates/util/keyfork-prompt", + "crates/util/keyfork-plumbing", + "crates/util/keyfork-slip10-test-data", + "crates/util/smex", ] [profile.dev.package.keyfork-qrcode] diff --git a/keyforkd-client/Cargo.toml b/crates/daemon/keyforkd-client/Cargo.toml similarity index 69% rename from keyforkd-client/Cargo.toml rename to crates/daemon/keyforkd-client/Cargo.toml index bd5bae4..e7a1748 100644 --- a/keyforkd-client/Cargo.toml +++ b/crates/daemon/keyforkd-client/Cargo.toml @@ -12,14 +12,14 @@ ed25519 = ["keyfork-derive-util/ed25519"] secp256k1 = ["keyfork-derive-util/secp256k1"] [dependencies] -keyfork-derive-util = { version = "0.1.0", path = "../keyfork-derive-util", default-features = false } -keyfork-frame = { version = "0.1.0", path = "../keyfork-frame" } +keyfork-derive-util = { version = "0.1.0", path = "../../derive/keyfork-derive-util", default-features = false } +keyfork-frame = { version = "0.1.0", path = "../../util/keyfork-frame" } keyforkd-models = { version = "0.1.0", path = "../keyforkd-models" } bincode = "1.3.3" thiserror = "1.0.49" [dev-dependencies] -keyfork-slip10-test-data = { path = "../keyfork-slip10-test-data" } +keyfork-slip10-test-data = { path = "../../util/keyfork-slip10-test-data" } keyforkd = { path = "../keyforkd" } tempfile = "3.9.0" tokio = { version = "1.32.0", features = ["rt", "sync", "rt-multi-thread"] } diff --git a/keyforkd-client/src/lib.rs b/crates/daemon/keyforkd-client/src/lib.rs similarity index 100% rename from keyforkd-client/src/lib.rs rename to crates/daemon/keyforkd-client/src/lib.rs diff --git a/keyforkd-client/src/tests.rs b/crates/daemon/keyforkd-client/src/tests.rs similarity index 100% rename from keyforkd-client/src/tests.rs rename to crates/daemon/keyforkd-client/src/tests.rs diff --git a/keyforkd-models/Cargo.toml b/crates/daemon/keyforkd-models/Cargo.toml similarity index 70% rename from keyforkd-models/Cargo.toml rename to crates/daemon/keyforkd-models/Cargo.toml index da0c2af..498737d 100644 --- a/keyforkd-models/Cargo.toml +++ b/crates/daemon/keyforkd-models/Cargo.toml @@ -7,6 +7,6 @@ license = "MIT" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -keyfork-derive-util = { version = "0.1.0", path = "../keyfork-derive-util", default-features = false } +keyfork-derive-util = { version = "0.1.0", path = "../../derive/keyfork-derive-util", default-features = false } serde = { version = "1.0.190", features = ["derive"] } thiserror = "1.0.50" diff --git a/keyforkd-models/src/lib.rs b/crates/daemon/keyforkd-models/src/lib.rs similarity index 100% rename from keyforkd-models/src/lib.rs rename to crates/daemon/keyforkd-models/src/lib.rs diff --git a/keyforkd/Cargo.toml b/crates/daemon/keyforkd/Cargo.toml similarity index 71% rename from keyforkd/Cargo.toml rename to crates/daemon/keyforkd/Cargo.toml index 8473a00..158f810 100644 --- a/keyforkd/Cargo.toml +++ b/crates/daemon/keyforkd/Cargo.toml @@ -12,10 +12,10 @@ tracing = ["tower/tracing", "tokio/tracing", "dep:tracing", "dep:tracing-subscri multithread = ["tokio/rt-multi-thread"] [dependencies] -keyfork-derive-util = { version = "0.1.0", path = "../keyfork-derive-util" } -keyfork-frame = { version = "0.1.0", path = "../keyfork-frame" } -keyfork-mnemonic-util = { version = "0.1.0", path = "../keyfork-mnemonic-util" } -keyfork-derive-path-data = { version = "0.1.0", path = "../keyfork-derive-path-data" } +keyfork-derive-util = { version = "0.1.0", path = "../../derive/keyfork-derive-util" } +keyfork-frame = { version = "0.1.0", path = "../../util/keyfork-frame" } +keyfork-mnemonic-util = { version = "0.1.0", path = "../../util/keyfork-mnemonic-util" } +keyfork-derive-path-data = { version = "0.1.0", path = "../../derive/keyfork-derive-path-data" } keyforkd-models = { version = "0.1.0", path = "../keyforkd-models" } # Not personally audited @@ -34,4 +34,4 @@ serde = { version = "1.0.186", features = ["derive"] } [dev-dependencies] hex-literal = "0.4.1" -keyfork-slip10-test-data = { path = "../keyfork-slip10-test-data" } +keyfork-slip10-test-data = { path = "../../util/keyfork-slip10-test-data" } diff --git a/keyforkd/src/error.rs b/crates/daemon/keyforkd/src/error.rs similarity index 100% rename from keyforkd/src/error.rs rename to crates/daemon/keyforkd/src/error.rs diff --git a/keyforkd/src/lib.rs b/crates/daemon/keyforkd/src/lib.rs similarity index 100% rename from keyforkd/src/lib.rs rename to crates/daemon/keyforkd/src/lib.rs diff --git a/keyforkd/src/main.rs b/crates/daemon/keyforkd/src/main.rs similarity index 100% rename from keyforkd/src/main.rs rename to crates/daemon/keyforkd/src/main.rs diff --git a/keyforkd/src/middleware.rs b/crates/daemon/keyforkd/src/middleware.rs similarity index 100% rename from keyforkd/src/middleware.rs rename to crates/daemon/keyforkd/src/middleware.rs diff --git a/keyforkd/src/server.rs b/crates/daemon/keyforkd/src/server.rs similarity index 100% rename from keyforkd/src/server.rs rename to crates/daemon/keyforkd/src/server.rs diff --git a/keyforkd/src/service.rs b/crates/daemon/keyforkd/src/service.rs similarity index 100% rename from keyforkd/src/service.rs rename to crates/daemon/keyforkd/src/service.rs diff --git a/keyfork-derive-key/Cargo.toml b/crates/derive/keyfork-derive-key/Cargo.toml similarity index 69% rename from keyfork-derive-key/Cargo.toml rename to crates/derive/keyfork-derive-key/Cargo.toml index 23a12ea..1c30a34 100644 --- a/keyfork-derive-key/Cargo.toml +++ b/crates/derive/keyfork-derive-key/Cargo.toml @@ -8,6 +8,6 @@ license = "AGPL-3.0-only" [dependencies] keyfork-derive-util = { version = "0.1.0", path = "../keyfork-derive-util" } -keyforkd-client = { version = "0.1.0", path = "../keyforkd-client" } -smex = { version = "0.1.0", path = "../smex" } +keyforkd-client = { version = "0.1.0", path = "../../daemon/keyforkd-client" } +smex = { version = "0.1.0", path = "../../util/smex" } thiserror = "1.0.48" diff --git a/keyfork-derive-key/src/main.rs b/crates/derive/keyfork-derive-key/src/main.rs similarity index 100% rename from keyfork-derive-key/src/main.rs rename to crates/derive/keyfork-derive-key/src/main.rs diff --git a/keyfork-derive-openpgp/Cargo.toml b/crates/derive/keyfork-derive-openpgp/Cargo.toml similarity index 78% rename from keyfork-derive-openpgp/Cargo.toml rename to crates/derive/keyfork-derive-openpgp/Cargo.toml index b59872e..b67737d 100644 --- a/keyfork-derive-openpgp/Cargo.toml +++ b/crates/derive/keyfork-derive-openpgp/Cargo.toml @@ -8,7 +8,7 @@ license = "AGPL-3.0-only" [dependencies] keyfork-derive-util = { version = "0.1.0", path = "../keyfork-derive-util", default-features = false, features = ["ed25519"] } -keyforkd-client = { version = "0.1.0", path = "../keyforkd-client", default-features = false, features = ["ed25519"] } +keyforkd-client = { version = "0.1.0", path = "../../daemon/keyforkd-client", default-features = false, features = ["ed25519"] } ed25519-dalek = "2.0.0" sequoia-openpgp = { version = "1.17.0", default-features = false } anyhow = "1.0.75" diff --git a/keyfork-derive-openpgp/src/lib.rs b/crates/derive/keyfork-derive-openpgp/src/lib.rs similarity index 100% rename from keyfork-derive-openpgp/src/lib.rs rename to crates/derive/keyfork-derive-openpgp/src/lib.rs diff --git a/keyfork-derive-openpgp/src/main.rs b/crates/derive/keyfork-derive-openpgp/src/main.rs similarity index 100% rename from keyfork-derive-openpgp/src/main.rs rename to crates/derive/keyfork-derive-openpgp/src/main.rs diff --git a/keyfork-derive-path-data/Cargo.toml b/crates/derive/keyfork-derive-path-data/Cargo.toml similarity index 100% rename from keyfork-derive-path-data/Cargo.toml rename to crates/derive/keyfork-derive-path-data/Cargo.toml diff --git a/keyfork-derive-path-data/src/lib.rs b/crates/derive/keyfork-derive-path-data/src/lib.rs similarity index 100% rename from keyfork-derive-path-data/src/lib.rs rename to crates/derive/keyfork-derive-path-data/src/lib.rs diff --git a/keyfork-derive-util/Cargo.toml b/crates/derive/keyfork-derive-util/Cargo.toml similarity index 81% rename from keyfork-derive-util/Cargo.toml rename to crates/derive/keyfork-derive-util/Cargo.toml index e2484ff..df5c950 100644 --- a/keyfork-derive-util/Cargo.toml +++ b/crates/derive/keyfork-derive-util/Cargo.toml @@ -12,7 +12,7 @@ secp256k1 = ["k256"] ed25519 = ["ed25519-dalek"] [dependencies] -keyfork-mnemonic-util = { version = "0.1.0", path = "../keyfork-mnemonic-util" } +keyfork-mnemonic-util = { version = "0.1.0", path = "../../util/keyfork-mnemonic-util" } # Included in Rust digest = "0.10.7" @@ -32,4 +32,4 @@ ed25519-dalek = { version = "2.0.0", optional = true } [dev-dependencies] hex-literal = "0.4.1" -keyfork-slip10-test-data = { version = "0.1.0", path = "../keyfork-slip10-test-data" } +keyfork-slip10-test-data = { version = "0.1.0", path = "../../util/keyfork-slip10-test-data" } diff --git a/keyfork-derive-util/src/extended_key/mod.rs b/crates/derive/keyfork-derive-util/src/extended_key/mod.rs similarity index 100% rename from keyfork-derive-util/src/extended_key/mod.rs rename to crates/derive/keyfork-derive-util/src/extended_key/mod.rs diff --git a/keyfork-derive-util/src/extended_key/private_key.rs b/crates/derive/keyfork-derive-util/src/extended_key/private_key.rs similarity index 100% rename from keyfork-derive-util/src/extended_key/private_key.rs rename to crates/derive/keyfork-derive-util/src/extended_key/private_key.rs diff --git a/keyfork-derive-util/src/extended_key/public_key.rs b/crates/derive/keyfork-derive-util/src/extended_key/public_key.rs similarity index 100% rename from keyfork-derive-util/src/extended_key/public_key.rs rename to crates/derive/keyfork-derive-util/src/extended_key/public_key.rs diff --git a/keyfork-derive-util/src/index.rs b/crates/derive/keyfork-derive-util/src/index.rs similarity index 100% rename from keyfork-derive-util/src/index.rs rename to crates/derive/keyfork-derive-util/src/index.rs diff --git a/keyfork-derive-util/src/lib.rs b/crates/derive/keyfork-derive-util/src/lib.rs similarity index 100% rename from keyfork-derive-util/src/lib.rs rename to crates/derive/keyfork-derive-util/src/lib.rs diff --git a/keyfork-derive-util/src/path.rs b/crates/derive/keyfork-derive-util/src/path.rs similarity index 100% rename from keyfork-derive-util/src/path.rs rename to crates/derive/keyfork-derive-util/src/path.rs diff --git a/keyfork-derive-util/src/private_key.rs b/crates/derive/keyfork-derive-util/src/private_key.rs similarity index 100% rename from keyfork-derive-util/src/private_key.rs rename to crates/derive/keyfork-derive-util/src/private_key.rs diff --git a/keyfork-derive-util/src/public_key.rs b/crates/derive/keyfork-derive-util/src/public_key.rs similarity index 100% rename from keyfork-derive-util/src/public_key.rs rename to crates/derive/keyfork-derive-util/src/public_key.rs diff --git a/keyfork-derive-util/src/request.rs b/crates/derive/keyfork-derive-util/src/request.rs similarity index 100% rename from keyfork-derive-util/src/request.rs rename to crates/derive/keyfork-derive-util/src/request.rs diff --git a/keyfork-derive-util/src/tests.rs b/crates/derive/keyfork-derive-util/src/tests.rs similarity index 100% rename from keyfork-derive-util/src/tests.rs rename to crates/derive/keyfork-derive-util/src/tests.rs diff --git a/keyfork-shard/Cargo.toml b/crates/keyfork-shard/Cargo.toml similarity index 70% rename from keyfork-shard/Cargo.toml rename to crates/keyfork-shard/Cargo.toml index da3af95..b7fda2c 100644 --- a/keyfork-shard/Cargo.toml +++ b/crates/keyfork-shard/Cargo.toml @@ -13,22 +13,22 @@ openpgp-card = ["openpgp-card-sequoia", "card-backend-pcsc", "card-backend", "de qrcode = ["keyfork-qrcode"] [dependencies] -keyfork-prompt = { version = "0.1.0", path = "../keyfork-prompt", default-features = false, features = ["mnemonic"] } -keyfork-qrcode = { version = "0.1.0", path = "../keyfork-qrcode", optional = true } -smex = { version = "0.1.0", path = "../smex" } +keyfork-prompt = { version = "0.1.0", path = "../util/keyfork-prompt", default-features = false, features = ["mnemonic"] } +keyfork-qrcode = { version = "0.1.0", path = "../qrcode/keyfork-qrcode", optional = true } +smex = { version = "0.1.0", path = "../util/smex" } sharks = "0.5.0" thiserror = "1.0.50" # Remote operator mode -keyfork-mnemonic-util = { version = "0.1.0", path = "../keyfork-mnemonic-util" } +keyfork-mnemonic-util = { version = "0.1.0", path = "../util/keyfork-mnemonic-util" } x25519-dalek = { version = "2.0.0", features = ["getrandom"] } aes-gcm = { version = "0.10.3", features = ["std"] } hkdf = { version = "0.12.4", features = ["std"] } sha2 = "0.10.8" # OpenPGP -keyfork-derive-openpgp = { version = "0.1.0", path = "../keyfork-derive-openpgp" } +keyfork-derive-openpgp = { version = "0.1.0", path = "../derive/keyfork-derive-openpgp" } anyhow = { version = "1.0.79", optional = true } card-backend = { version = "0.2.0", optional = true } card-backend-pcsc = { version = "0.5.0", optional = true } diff --git a/keyfork-shard/src/bin/keyfork-shard-combine-openpgp.rs b/crates/keyfork-shard/src/bin/keyfork-shard-combine-openpgp.rs similarity index 100% rename from keyfork-shard/src/bin/keyfork-shard-combine-openpgp.rs rename to crates/keyfork-shard/src/bin/keyfork-shard-combine-openpgp.rs diff --git a/keyfork-shard/src/bin/keyfork-shard-decrypt-openpgp.rs b/crates/keyfork-shard/src/bin/keyfork-shard-decrypt-openpgp.rs similarity index 100% rename from keyfork-shard/src/bin/keyfork-shard-decrypt-openpgp.rs rename to crates/keyfork-shard/src/bin/keyfork-shard-decrypt-openpgp.rs diff --git a/keyfork-shard/src/bin/keyfork-shard-remote.rs b/crates/keyfork-shard/src/bin/keyfork-shard-remote.rs similarity index 100% rename from keyfork-shard/src/bin/keyfork-shard-remote.rs rename to crates/keyfork-shard/src/bin/keyfork-shard-remote.rs diff --git a/keyfork-shard/src/bin/keyfork-shard-split-openpgp.rs b/crates/keyfork-shard/src/bin/keyfork-shard-split-openpgp.rs similarity index 100% rename from keyfork-shard/src/bin/keyfork-shard-split-openpgp.rs rename to crates/keyfork-shard/src/bin/keyfork-shard-split-openpgp.rs diff --git a/keyfork-shard/src/lib.rs b/crates/keyfork-shard/src/lib.rs similarity index 100% rename from keyfork-shard/src/lib.rs rename to crates/keyfork-shard/src/lib.rs diff --git a/keyfork-shard/src/openpgp.rs b/crates/keyfork-shard/src/openpgp.rs similarity index 100% rename from keyfork-shard/src/openpgp.rs rename to crates/keyfork-shard/src/openpgp.rs diff --git a/keyfork-shard/src/openpgp/keyring.rs b/crates/keyfork-shard/src/openpgp/keyring.rs similarity index 100% rename from keyfork-shard/src/openpgp/keyring.rs rename to crates/keyfork-shard/src/openpgp/keyring.rs diff --git a/keyfork-shard/src/openpgp/smartcard.rs b/crates/keyfork-shard/src/openpgp/smartcard.rs similarity index 100% rename from keyfork-shard/src/openpgp/smartcard.rs rename to crates/keyfork-shard/src/openpgp/smartcard.rs diff --git a/keyfork/Cargo.toml b/crates/keyfork/Cargo.toml similarity index 62% rename from keyfork/Cargo.toml rename to crates/keyfork/Cargo.toml index 30a8e35..58729fc 100644 --- a/keyfork/Cargo.toml +++ b/crates/keyfork/Cargo.toml @@ -23,22 +23,23 @@ sequoia-crypto-backend-openssl = ["sequoia-openpgp/crypto-openssl"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -keyfork-mnemonic-util = { version = "0.1.0", path = "../keyfork-mnemonic-util" } +keyforkd = { version = "0.1.0", path = "../daemon/keyforkd", features = ["tracing"] } +keyforkd-client = { version = "0.1.0", path = "../daemon/keyforkd-client", default-features = false, features = ["ed25519"] } +keyfork-derive-openpgp = { version = "0.1.0", path = "../derive/keyfork-derive-openpgp" } +keyfork-derive-util = { version = "0.1.0", path = "../derive/keyfork-derive-util", default-features = false, features = ["ed25519"] } +keyfork-entropy = { version = "0.1.0", path = "../util/keyfork-entropy" } +keyfork-mnemonic-util = { version = "0.1.0", path = "../util/keyfork-mnemonic-util" } +keyfork-prompt = { version = "0.1.0", path = "../util/keyfork-prompt" } +keyfork-qrcode = { version = "0.1.0", path = "../qrcode/keyfork-qrcode" } +keyfork-shard = { version = "0.1.0", path = "../keyfork-shard" } +smex = { version = "0.1.0", path = "../util/smex" } + clap = { version = "4.4.2", features = ["derive", "env", "wrap_help"] } thiserror = "1.0.48" -smex = { version = "0.1.0", path = "../smex" } -keyfork-shard = { version = "0.1.0", path = "../keyfork-shard" } serde = { version = "1.0.192", features = ["derive"] } -keyforkd = { version = "0.1.0", path = "../keyforkd", features = ["tracing"] } tokio = { version = "1.35.1", default-features = false, features = ["rt-multi-thread"] } -keyfork-derive-openpgp = { version = "0.1.0", path = "../keyfork-derive-openpgp" } -keyforkd-client = { version = "0.1.0", path = "../keyforkd-client", default-features = false, features = ["ed25519"] } -keyfork-derive-util = { version = "0.1.0", path = "../keyfork-derive-util", default-features = false, features = ["ed25519"] } card-backend-pcsc = "0.5.0" openpgp-card-sequoia = { version = "0.2.0", default-features = false } openpgp-card = "0.4.1" -keyfork-prompt = { version = "0.1.0", path = "../keyfork-prompt" } -keyfork-entropy = { version = "0.1.0", path = "../keyfork-entropy" } clap_complete = { version = "4.4.6", optional = true } -keyfork-qrcode = { version = "0.1.0", path = "../keyfork-qrcode" } sequoia-openpgp = { version = "1.17.0", default-features = false, features = ["compression"] } diff --git a/keyfork/src/cli/derive.rs b/crates/keyfork/src/cli/derive.rs similarity index 100% rename from keyfork/src/cli/derive.rs rename to crates/keyfork/src/cli/derive.rs diff --git a/keyfork/src/cli/mnemonic.rs b/crates/keyfork/src/cli/mnemonic.rs similarity index 100% rename from keyfork/src/cli/mnemonic.rs rename to crates/keyfork/src/cli/mnemonic.rs diff --git a/keyfork/src/cli/mod.rs b/crates/keyfork/src/cli/mod.rs similarity index 100% rename from keyfork/src/cli/mod.rs rename to crates/keyfork/src/cli/mod.rs diff --git a/keyfork/src/cli/provision/mod.rs b/crates/keyfork/src/cli/provision/mod.rs similarity index 100% rename from keyfork/src/cli/provision/mod.rs rename to crates/keyfork/src/cli/provision/mod.rs diff --git a/keyfork/src/cli/recover.rs b/crates/keyfork/src/cli/recover.rs similarity index 100% rename from keyfork/src/cli/recover.rs rename to crates/keyfork/src/cli/recover.rs diff --git a/keyfork/src/cli/shard.rs b/crates/keyfork/src/cli/shard.rs similarity index 100% rename from keyfork/src/cli/shard.rs rename to crates/keyfork/src/cli/shard.rs diff --git a/keyfork/src/cli/wizard.rs b/crates/keyfork/src/cli/wizard.rs similarity index 100% rename from keyfork/src/cli/wizard.rs rename to crates/keyfork/src/cli/wizard.rs diff --git a/keyfork/src/config.rs b/crates/keyfork/src/config.rs similarity index 100% rename from keyfork/src/config.rs rename to crates/keyfork/src/config.rs diff --git a/keyfork/src/main.rs b/crates/keyfork/src/main.rs similarity index 100% rename from keyfork/src/main.rs rename to crates/keyfork/src/main.rs diff --git a/keyfork-qrcode/Cargo.toml b/crates/qrcode/keyfork-qrcode/Cargo.toml similarity index 100% rename from keyfork-qrcode/Cargo.toml rename to crates/qrcode/keyfork-qrcode/Cargo.toml diff --git a/keyfork-qrcode/src/bin/keyfork-qrcode-scan.rs b/crates/qrcode/keyfork-qrcode/src/bin/keyfork-qrcode-scan.rs similarity index 100% rename from keyfork-qrcode/src/bin/keyfork-qrcode-scan.rs rename to crates/qrcode/keyfork-qrcode/src/bin/keyfork-qrcode-scan.rs diff --git a/keyfork-qrcode/src/lib.rs b/crates/qrcode/keyfork-qrcode/src/lib.rs similarity index 100% rename from keyfork-qrcode/src/lib.rs rename to crates/qrcode/keyfork-qrcode/src/lib.rs diff --git a/keyfork-zbar-sys/Cargo.toml b/crates/qrcode/keyfork-zbar-sys/Cargo.toml similarity index 100% rename from keyfork-zbar-sys/Cargo.toml rename to crates/qrcode/keyfork-zbar-sys/Cargo.toml diff --git a/keyfork-zbar-sys/build.rs b/crates/qrcode/keyfork-zbar-sys/build.rs similarity index 100% rename from keyfork-zbar-sys/build.rs rename to crates/qrcode/keyfork-zbar-sys/build.rs diff --git a/keyfork-zbar-sys/src/lib.rs b/crates/qrcode/keyfork-zbar-sys/src/lib.rs similarity index 100% rename from keyfork-zbar-sys/src/lib.rs rename to crates/qrcode/keyfork-zbar-sys/src/lib.rs diff --git a/keyfork-zbar-sys/zbar-wrapper.h b/crates/qrcode/keyfork-zbar-sys/zbar-wrapper.h similarity index 100% rename from keyfork-zbar-sys/zbar-wrapper.h rename to crates/qrcode/keyfork-zbar-sys/zbar-wrapper.h diff --git a/keyfork-zbar/Cargo.toml b/crates/qrcode/keyfork-zbar/Cargo.toml similarity index 100% rename from keyfork-zbar/Cargo.toml rename to crates/qrcode/keyfork-zbar/Cargo.toml diff --git a/keyfork-zbar/examples/v4l-scan.rs b/crates/qrcode/keyfork-zbar/examples/v4l-scan.rs similarity index 100% rename from keyfork-zbar/examples/v4l-scan.rs rename to crates/qrcode/keyfork-zbar/examples/v4l-scan.rs diff --git a/keyfork-zbar/src/image.rs b/crates/qrcode/keyfork-zbar/src/image.rs similarity index 100% rename from keyfork-zbar/src/image.rs rename to crates/qrcode/keyfork-zbar/src/image.rs diff --git a/keyfork-zbar/src/image_scanner.rs b/crates/qrcode/keyfork-zbar/src/image_scanner.rs similarity index 100% rename from keyfork-zbar/src/image_scanner.rs rename to crates/qrcode/keyfork-zbar/src/image_scanner.rs diff --git a/keyfork-zbar/src/lib.rs b/crates/qrcode/keyfork-zbar/src/lib.rs similarity index 100% rename from keyfork-zbar/src/lib.rs rename to crates/qrcode/keyfork-zbar/src/lib.rs diff --git a/keyfork-zbar/src/symbol.rs b/crates/qrcode/keyfork-zbar/src/symbol.rs similarity index 100% rename from keyfork-zbar/src/symbol.rs rename to crates/qrcode/keyfork-zbar/src/symbol.rs diff --git a/keyfork-crossterm/.travis.yml b/crates/util/keyfork-crossterm/.travis.yml similarity index 100% rename from keyfork-crossterm/.travis.yml rename to crates/util/keyfork-crossterm/.travis.yml diff --git a/keyfork-crossterm/CHANGELOG.md b/crates/util/keyfork-crossterm/CHANGELOG.md similarity index 100% rename from keyfork-crossterm/CHANGELOG.md rename to crates/util/keyfork-crossterm/CHANGELOG.md diff --git a/keyfork-crossterm/Cargo.toml b/crates/util/keyfork-crossterm/Cargo.toml similarity index 100% rename from keyfork-crossterm/Cargo.toml rename to crates/util/keyfork-crossterm/Cargo.toml diff --git a/keyfork-crossterm/LICENSE b/crates/util/keyfork-crossterm/LICENSE similarity index 100% rename from keyfork-crossterm/LICENSE rename to crates/util/keyfork-crossterm/LICENSE diff --git a/keyfork-crossterm/README.md b/crates/util/keyfork-crossterm/README.md similarity index 100% rename from keyfork-crossterm/README.md rename to crates/util/keyfork-crossterm/README.md diff --git a/keyfork-crossterm/README.md.old b/crates/util/keyfork-crossterm/README.md.old similarity index 100% rename from keyfork-crossterm/README.md.old rename to crates/util/keyfork-crossterm/README.md.old diff --git a/keyfork-crossterm/docs/.gitignore b/crates/util/keyfork-crossterm/docs/.gitignore similarity index 100% rename from keyfork-crossterm/docs/.gitignore rename to crates/util/keyfork-crossterm/docs/.gitignore diff --git a/keyfork-crossterm/docs/CONTRIBUTING.md b/crates/util/keyfork-crossterm/docs/CONTRIBUTING.md similarity index 100% rename from keyfork-crossterm/docs/CONTRIBUTING.md rename to crates/util/keyfork-crossterm/docs/CONTRIBUTING.md diff --git a/keyfork-crossterm/docs/crossterm_c.png b/crates/util/keyfork-crossterm/docs/crossterm_c.png similarity index 100% rename from keyfork-crossterm/docs/crossterm_c.png rename to crates/util/keyfork-crossterm/docs/crossterm_c.png diff --git a/keyfork-crossterm/docs/crossterm_full.png b/crates/util/keyfork-crossterm/docs/crossterm_full.png similarity index 100% rename from keyfork-crossterm/docs/crossterm_full.png rename to crates/util/keyfork-crossterm/docs/crossterm_full.png diff --git a/keyfork-crossterm/docs/crossterm_full.svg b/crates/util/keyfork-crossterm/docs/crossterm_full.svg similarity index 100% rename from keyfork-crossterm/docs/crossterm_full.svg rename to crates/util/keyfork-crossterm/docs/crossterm_full.svg diff --git a/keyfork-crossterm/docs/know-problems.md b/crates/util/keyfork-crossterm/docs/know-problems.md similarity index 100% rename from keyfork-crossterm/docs/know-problems.md rename to crates/util/keyfork-crossterm/docs/know-problems.md diff --git a/keyfork-crossterm/examples/README.md b/crates/util/keyfork-crossterm/examples/README.md similarity index 100% rename from keyfork-crossterm/examples/README.md rename to crates/util/keyfork-crossterm/examples/README.md diff --git a/keyfork-crossterm/examples/event-match-modifiers.rs b/crates/util/keyfork-crossterm/examples/event-match-modifiers.rs similarity index 100% rename from keyfork-crossterm/examples/event-match-modifiers.rs rename to crates/util/keyfork-crossterm/examples/event-match-modifiers.rs diff --git a/keyfork-crossterm/examples/event-poll-read.rs b/crates/util/keyfork-crossterm/examples/event-poll-read.rs similarity index 100% rename from keyfork-crossterm/examples/event-poll-read.rs rename to crates/util/keyfork-crossterm/examples/event-poll-read.rs diff --git a/keyfork-crossterm/examples/event-read-char-line.rs b/crates/util/keyfork-crossterm/examples/event-read-char-line.rs similarity index 100% rename from keyfork-crossterm/examples/event-read-char-line.rs rename to crates/util/keyfork-crossterm/examples/event-read-char-line.rs diff --git a/keyfork-crossterm/examples/event-read.rs b/crates/util/keyfork-crossterm/examples/event-read.rs similarity index 100% rename from keyfork-crossterm/examples/event-read.rs rename to crates/util/keyfork-crossterm/examples/event-read.rs diff --git a/keyfork-crossterm/examples/event-stream-async-std.rs b/crates/util/keyfork-crossterm/examples/event-stream-async-std.rs similarity index 100% rename from keyfork-crossterm/examples/event-stream-async-std.rs rename to crates/util/keyfork-crossterm/examples/event-stream-async-std.rs diff --git a/keyfork-crossterm/examples/event-stream-tokio.rs b/crates/util/keyfork-crossterm/examples/event-stream-tokio.rs similarity index 100% rename from keyfork-crossterm/examples/event-stream-tokio.rs rename to crates/util/keyfork-crossterm/examples/event-stream-tokio.rs diff --git a/keyfork-crossterm/examples/interactive-demo/Cargo.toml b/crates/util/keyfork-crossterm/examples/interactive-demo/Cargo.toml similarity index 100% rename from keyfork-crossterm/examples/interactive-demo/Cargo.toml rename to crates/util/keyfork-crossterm/examples/interactive-demo/Cargo.toml diff --git a/keyfork-crossterm/examples/interactive-demo/src/macros.rs b/crates/util/keyfork-crossterm/examples/interactive-demo/src/macros.rs similarity index 100% rename from keyfork-crossterm/examples/interactive-demo/src/macros.rs rename to crates/util/keyfork-crossterm/examples/interactive-demo/src/macros.rs diff --git a/keyfork-crossterm/examples/interactive-demo/src/main.rs b/crates/util/keyfork-crossterm/examples/interactive-demo/src/main.rs similarity index 100% rename from keyfork-crossterm/examples/interactive-demo/src/main.rs rename to crates/util/keyfork-crossterm/examples/interactive-demo/src/main.rs diff --git a/keyfork-crossterm/examples/interactive-demo/src/test.rs b/crates/util/keyfork-crossterm/examples/interactive-demo/src/test.rs similarity index 100% rename from keyfork-crossterm/examples/interactive-demo/src/test.rs rename to crates/util/keyfork-crossterm/examples/interactive-demo/src/test.rs diff --git a/keyfork-crossterm/examples/interactive-demo/src/test/attribute.rs b/crates/util/keyfork-crossterm/examples/interactive-demo/src/test/attribute.rs similarity index 100% rename from keyfork-crossterm/examples/interactive-demo/src/test/attribute.rs rename to crates/util/keyfork-crossterm/examples/interactive-demo/src/test/attribute.rs diff --git a/keyfork-crossterm/examples/interactive-demo/src/test/color.rs b/crates/util/keyfork-crossterm/examples/interactive-demo/src/test/color.rs similarity index 100% rename from keyfork-crossterm/examples/interactive-demo/src/test/color.rs rename to crates/util/keyfork-crossterm/examples/interactive-demo/src/test/color.rs diff --git a/keyfork-crossterm/examples/interactive-demo/src/test/cursor.rs b/crates/util/keyfork-crossterm/examples/interactive-demo/src/test/cursor.rs similarity index 100% rename from keyfork-crossterm/examples/interactive-demo/src/test/cursor.rs rename to crates/util/keyfork-crossterm/examples/interactive-demo/src/test/cursor.rs diff --git a/keyfork-crossterm/examples/interactive-demo/src/test/event.rs b/crates/util/keyfork-crossterm/examples/interactive-demo/src/test/event.rs similarity index 100% rename from keyfork-crossterm/examples/interactive-demo/src/test/event.rs rename to crates/util/keyfork-crossterm/examples/interactive-demo/src/test/event.rs diff --git a/keyfork-crossterm/examples/interactive-demo/src/test/synchronized_output.rs b/crates/util/keyfork-crossterm/examples/interactive-demo/src/test/synchronized_output.rs similarity index 100% rename from keyfork-crossterm/examples/interactive-demo/src/test/synchronized_output.rs rename to crates/util/keyfork-crossterm/examples/interactive-demo/src/test/synchronized_output.rs diff --git a/keyfork-crossterm/examples/is_tty.rs b/crates/util/keyfork-crossterm/examples/is_tty.rs similarity index 100% rename from keyfork-crossterm/examples/is_tty.rs rename to crates/util/keyfork-crossterm/examples/is_tty.rs diff --git a/keyfork-crossterm/examples/stderr.rs b/crates/util/keyfork-crossterm/examples/stderr.rs similarity index 100% rename from keyfork-crossterm/examples/stderr.rs rename to crates/util/keyfork-crossterm/examples/stderr.rs diff --git a/keyfork-crossterm/src/ansi_support.rs b/crates/util/keyfork-crossterm/src/ansi_support.rs similarity index 100% rename from keyfork-crossterm/src/ansi_support.rs rename to crates/util/keyfork-crossterm/src/ansi_support.rs diff --git a/keyfork-crossterm/src/command.rs b/crates/util/keyfork-crossterm/src/command.rs similarity index 100% rename from keyfork-crossterm/src/command.rs rename to crates/util/keyfork-crossterm/src/command.rs diff --git a/keyfork-crossterm/src/cursor.rs b/crates/util/keyfork-crossterm/src/cursor.rs similarity index 100% rename from keyfork-crossterm/src/cursor.rs rename to crates/util/keyfork-crossterm/src/cursor.rs diff --git a/keyfork-crossterm/src/cursor/sys.rs b/crates/util/keyfork-crossterm/src/cursor/sys.rs similarity index 100% rename from keyfork-crossterm/src/cursor/sys.rs rename to crates/util/keyfork-crossterm/src/cursor/sys.rs diff --git a/keyfork-crossterm/src/cursor/sys/unix.rs b/crates/util/keyfork-crossterm/src/cursor/sys/unix.rs similarity index 100% rename from keyfork-crossterm/src/cursor/sys/unix.rs rename to crates/util/keyfork-crossterm/src/cursor/sys/unix.rs diff --git a/keyfork-crossterm/src/cursor/sys/windows.rs b/crates/util/keyfork-crossterm/src/cursor/sys/windows.rs similarity index 100% rename from keyfork-crossterm/src/cursor/sys/windows.rs rename to crates/util/keyfork-crossterm/src/cursor/sys/windows.rs diff --git a/keyfork-crossterm/src/event.rs b/crates/util/keyfork-crossterm/src/event.rs similarity index 100% rename from keyfork-crossterm/src/event.rs rename to crates/util/keyfork-crossterm/src/event.rs diff --git a/keyfork-crossterm/src/event/filter.rs b/crates/util/keyfork-crossterm/src/event/filter.rs similarity index 100% rename from keyfork-crossterm/src/event/filter.rs rename to crates/util/keyfork-crossterm/src/event/filter.rs diff --git a/keyfork-crossterm/src/event/read.rs b/crates/util/keyfork-crossterm/src/event/read.rs similarity index 100% rename from keyfork-crossterm/src/event/read.rs rename to crates/util/keyfork-crossterm/src/event/read.rs diff --git a/keyfork-crossterm/src/event/source.rs b/crates/util/keyfork-crossterm/src/event/source.rs similarity index 100% rename from keyfork-crossterm/src/event/source.rs rename to crates/util/keyfork-crossterm/src/event/source.rs diff --git a/keyfork-crossterm/src/event/source/unix.rs b/crates/util/keyfork-crossterm/src/event/source/unix.rs similarity index 100% rename from keyfork-crossterm/src/event/source/unix.rs rename to crates/util/keyfork-crossterm/src/event/source/unix.rs diff --git a/keyfork-crossterm/src/event/source/unix/mio.rs b/crates/util/keyfork-crossterm/src/event/source/unix/mio.rs similarity index 100% rename from keyfork-crossterm/src/event/source/unix/mio.rs rename to crates/util/keyfork-crossterm/src/event/source/unix/mio.rs diff --git a/keyfork-crossterm/src/event/source/unix/tty.rs b/crates/util/keyfork-crossterm/src/event/source/unix/tty.rs similarity index 100% rename from keyfork-crossterm/src/event/source/unix/tty.rs rename to crates/util/keyfork-crossterm/src/event/source/unix/tty.rs diff --git a/keyfork-crossterm/src/event/source/windows.rs b/crates/util/keyfork-crossterm/src/event/source/windows.rs similarity index 100% rename from keyfork-crossterm/src/event/source/windows.rs rename to crates/util/keyfork-crossterm/src/event/source/windows.rs diff --git a/keyfork-crossterm/src/event/stream.rs b/crates/util/keyfork-crossterm/src/event/stream.rs similarity index 100% rename from keyfork-crossterm/src/event/stream.rs rename to crates/util/keyfork-crossterm/src/event/stream.rs diff --git a/keyfork-crossterm/src/event/sys.rs b/crates/util/keyfork-crossterm/src/event/sys.rs similarity index 100% rename from keyfork-crossterm/src/event/sys.rs rename to crates/util/keyfork-crossterm/src/event/sys.rs diff --git a/keyfork-crossterm/src/event/sys/unix.rs b/crates/util/keyfork-crossterm/src/event/sys/unix.rs similarity index 100% rename from keyfork-crossterm/src/event/sys/unix.rs rename to crates/util/keyfork-crossterm/src/event/sys/unix.rs diff --git a/keyfork-crossterm/src/event/sys/unix/parse.rs b/crates/util/keyfork-crossterm/src/event/sys/unix/parse.rs similarity index 100% rename from keyfork-crossterm/src/event/sys/unix/parse.rs rename to crates/util/keyfork-crossterm/src/event/sys/unix/parse.rs diff --git a/keyfork-crossterm/src/event/sys/unix/waker.rs b/crates/util/keyfork-crossterm/src/event/sys/unix/waker.rs similarity index 100% rename from keyfork-crossterm/src/event/sys/unix/waker.rs rename to crates/util/keyfork-crossterm/src/event/sys/unix/waker.rs diff --git a/keyfork-crossterm/src/event/sys/unix/waker/mio.rs b/crates/util/keyfork-crossterm/src/event/sys/unix/waker/mio.rs similarity index 100% rename from keyfork-crossterm/src/event/sys/unix/waker/mio.rs rename to crates/util/keyfork-crossterm/src/event/sys/unix/waker/mio.rs diff --git a/keyfork-crossterm/src/event/sys/unix/waker/tty.rs b/crates/util/keyfork-crossterm/src/event/sys/unix/waker/tty.rs similarity index 100% rename from keyfork-crossterm/src/event/sys/unix/waker/tty.rs rename to crates/util/keyfork-crossterm/src/event/sys/unix/waker/tty.rs diff --git a/keyfork-crossterm/src/event/sys/windows.rs b/crates/util/keyfork-crossterm/src/event/sys/windows.rs similarity index 100% rename from keyfork-crossterm/src/event/sys/windows.rs rename to crates/util/keyfork-crossterm/src/event/sys/windows.rs diff --git a/keyfork-crossterm/src/event/sys/windows/parse.rs b/crates/util/keyfork-crossterm/src/event/sys/windows/parse.rs similarity index 100% rename from keyfork-crossterm/src/event/sys/windows/parse.rs rename to crates/util/keyfork-crossterm/src/event/sys/windows/parse.rs diff --git a/keyfork-crossterm/src/event/sys/windows/poll.rs b/crates/util/keyfork-crossterm/src/event/sys/windows/poll.rs similarity index 100% rename from keyfork-crossterm/src/event/sys/windows/poll.rs rename to crates/util/keyfork-crossterm/src/event/sys/windows/poll.rs diff --git a/keyfork-crossterm/src/event/sys/windows/waker.rs b/crates/util/keyfork-crossterm/src/event/sys/windows/waker.rs similarity index 100% rename from keyfork-crossterm/src/event/sys/windows/waker.rs rename to crates/util/keyfork-crossterm/src/event/sys/windows/waker.rs diff --git a/keyfork-crossterm/src/event/timeout.rs b/crates/util/keyfork-crossterm/src/event/timeout.rs similarity index 100% rename from keyfork-crossterm/src/event/timeout.rs rename to crates/util/keyfork-crossterm/src/event/timeout.rs diff --git a/keyfork-crossterm/src/lib.rs b/crates/util/keyfork-crossterm/src/lib.rs similarity index 100% rename from keyfork-crossterm/src/lib.rs rename to crates/util/keyfork-crossterm/src/lib.rs diff --git a/keyfork-crossterm/src/macros.rs b/crates/util/keyfork-crossterm/src/macros.rs similarity index 100% rename from keyfork-crossterm/src/macros.rs rename to crates/util/keyfork-crossterm/src/macros.rs diff --git a/keyfork-crossterm/src/style.rs b/crates/util/keyfork-crossterm/src/style.rs similarity index 100% rename from keyfork-crossterm/src/style.rs rename to crates/util/keyfork-crossterm/src/style.rs diff --git a/keyfork-crossterm/src/style/attributes.rs b/crates/util/keyfork-crossterm/src/style/attributes.rs similarity index 100% rename from keyfork-crossterm/src/style/attributes.rs rename to crates/util/keyfork-crossterm/src/style/attributes.rs diff --git a/keyfork-crossterm/src/style/content_style.rs b/crates/util/keyfork-crossterm/src/style/content_style.rs similarity index 100% rename from keyfork-crossterm/src/style/content_style.rs rename to crates/util/keyfork-crossterm/src/style/content_style.rs diff --git a/keyfork-crossterm/src/style/styled_content.rs b/crates/util/keyfork-crossterm/src/style/styled_content.rs similarity index 100% rename from keyfork-crossterm/src/style/styled_content.rs rename to crates/util/keyfork-crossterm/src/style/styled_content.rs diff --git a/keyfork-crossterm/src/style/stylize.rs b/crates/util/keyfork-crossterm/src/style/stylize.rs similarity index 100% rename from keyfork-crossterm/src/style/stylize.rs rename to crates/util/keyfork-crossterm/src/style/stylize.rs diff --git a/keyfork-crossterm/src/style/sys.rs b/crates/util/keyfork-crossterm/src/style/sys.rs similarity index 100% rename from keyfork-crossterm/src/style/sys.rs rename to crates/util/keyfork-crossterm/src/style/sys.rs diff --git a/keyfork-crossterm/src/style/sys/windows.rs b/crates/util/keyfork-crossterm/src/style/sys/windows.rs similarity index 100% rename from keyfork-crossterm/src/style/sys/windows.rs rename to crates/util/keyfork-crossterm/src/style/sys/windows.rs diff --git a/keyfork-crossterm/src/style/types.rs b/crates/util/keyfork-crossterm/src/style/types.rs similarity index 100% rename from keyfork-crossterm/src/style/types.rs rename to crates/util/keyfork-crossterm/src/style/types.rs diff --git a/keyfork-crossterm/src/style/types/attribute.rs b/crates/util/keyfork-crossterm/src/style/types/attribute.rs similarity index 100% rename from keyfork-crossterm/src/style/types/attribute.rs rename to crates/util/keyfork-crossterm/src/style/types/attribute.rs diff --git a/keyfork-crossterm/src/style/types/color.rs b/crates/util/keyfork-crossterm/src/style/types/color.rs similarity index 100% rename from keyfork-crossterm/src/style/types/color.rs rename to crates/util/keyfork-crossterm/src/style/types/color.rs diff --git a/keyfork-crossterm/src/style/types/colored.rs b/crates/util/keyfork-crossterm/src/style/types/colored.rs similarity index 100% rename from keyfork-crossterm/src/style/types/colored.rs rename to crates/util/keyfork-crossterm/src/style/types/colored.rs diff --git a/keyfork-crossterm/src/style/types/colors.rs b/crates/util/keyfork-crossterm/src/style/types/colors.rs similarity index 100% rename from keyfork-crossterm/src/style/types/colors.rs rename to crates/util/keyfork-crossterm/src/style/types/colors.rs diff --git a/keyfork-crossterm/src/terminal.rs b/crates/util/keyfork-crossterm/src/terminal.rs similarity index 100% rename from keyfork-crossterm/src/terminal.rs rename to crates/util/keyfork-crossterm/src/terminal.rs diff --git a/keyfork-crossterm/src/terminal/sys.rs b/crates/util/keyfork-crossterm/src/terminal/sys.rs similarity index 100% rename from keyfork-crossterm/src/terminal/sys.rs rename to crates/util/keyfork-crossterm/src/terminal/sys.rs diff --git a/keyfork-crossterm/src/terminal/sys/file_descriptor.rs b/crates/util/keyfork-crossterm/src/terminal/sys/file_descriptor.rs similarity index 100% rename from keyfork-crossterm/src/terminal/sys/file_descriptor.rs rename to crates/util/keyfork-crossterm/src/terminal/sys/file_descriptor.rs diff --git a/keyfork-crossterm/src/terminal/sys/unix.rs b/crates/util/keyfork-crossterm/src/terminal/sys/unix.rs similarity index 100% rename from keyfork-crossterm/src/terminal/sys/unix.rs rename to crates/util/keyfork-crossterm/src/terminal/sys/unix.rs diff --git a/keyfork-crossterm/src/terminal/sys/windows.rs b/crates/util/keyfork-crossterm/src/terminal/sys/windows.rs similarity index 100% rename from keyfork-crossterm/src/terminal/sys/windows.rs rename to crates/util/keyfork-crossterm/src/terminal/sys/windows.rs diff --git a/keyfork-crossterm/src/tty.rs b/crates/util/keyfork-crossterm/src/tty.rs similarity index 100% rename from keyfork-crossterm/src/tty.rs rename to crates/util/keyfork-crossterm/src/tty.rs diff --git a/keyfork-entropy/Cargo.toml b/crates/util/keyfork-entropy/Cargo.toml similarity index 100% rename from keyfork-entropy/Cargo.toml rename to crates/util/keyfork-entropy/Cargo.toml diff --git a/keyfork-entropy/src/lib.rs b/crates/util/keyfork-entropy/src/lib.rs similarity index 100% rename from keyfork-entropy/src/lib.rs rename to crates/util/keyfork-entropy/src/lib.rs diff --git a/keyfork-frame/Cargo.toml b/crates/util/keyfork-frame/Cargo.toml similarity index 100% rename from keyfork-frame/Cargo.toml rename to crates/util/keyfork-frame/Cargo.toml diff --git a/keyfork-frame/src/asyncext.rs b/crates/util/keyfork-frame/src/asyncext.rs similarity index 100% rename from keyfork-frame/src/asyncext.rs rename to crates/util/keyfork-frame/src/asyncext.rs diff --git a/keyfork-frame/src/lib.rs b/crates/util/keyfork-frame/src/lib.rs similarity index 100% rename from keyfork-frame/src/lib.rs rename to crates/util/keyfork-frame/src/lib.rs diff --git a/keyfork-frame/src/snapshots/keyfork_frame__tests__stable_interface.snap b/crates/util/keyfork-frame/src/snapshots/keyfork_frame__tests__stable_interface.snap similarity index 100% rename from keyfork-frame/src/snapshots/keyfork_frame__tests__stable_interface.snap rename to crates/util/keyfork-frame/src/snapshots/keyfork_frame__tests__stable_interface.snap diff --git a/keyfork-mnemonic-util/Cargo.toml b/crates/util/keyfork-mnemonic-util/Cargo.toml similarity index 100% rename from keyfork-mnemonic-util/Cargo.toml rename to crates/util/keyfork-mnemonic-util/Cargo.toml diff --git a/keyfork-mnemonic-util/src/data/vectors.json b/crates/util/keyfork-mnemonic-util/src/data/vectors.json similarity index 100% rename from keyfork-mnemonic-util/src/data/vectors.json rename to crates/util/keyfork-mnemonic-util/src/data/vectors.json diff --git a/keyfork-mnemonic-util/src/data/wordlist.txt b/crates/util/keyfork-mnemonic-util/src/data/wordlist.txt similarity index 100% rename from keyfork-mnemonic-util/src/data/wordlist.txt rename to crates/util/keyfork-mnemonic-util/src/data/wordlist.txt diff --git a/keyfork-mnemonic-util/src/lib.rs b/crates/util/keyfork-mnemonic-util/src/lib.rs similarity index 100% rename from keyfork-mnemonic-util/src/lib.rs rename to crates/util/keyfork-mnemonic-util/src/lib.rs diff --git a/keyfork-plumbing/Cargo.toml b/crates/util/keyfork-plumbing/Cargo.toml similarity index 100% rename from keyfork-plumbing/Cargo.toml rename to crates/util/keyfork-plumbing/Cargo.toml diff --git a/keyfork-plumbing/src/bin/keyfork-entropy.rs b/crates/util/keyfork-plumbing/src/bin/keyfork-entropy.rs similarity index 100% rename from keyfork-plumbing/src/bin/keyfork-entropy.rs rename to crates/util/keyfork-plumbing/src/bin/keyfork-entropy.rs diff --git a/keyfork-plumbing/src/bin/keyfork-mnemonic-from-seed.rs b/crates/util/keyfork-plumbing/src/bin/keyfork-mnemonic-from-seed.rs similarity index 100% rename from keyfork-plumbing/src/bin/keyfork-mnemonic-from-seed.rs rename to crates/util/keyfork-plumbing/src/bin/keyfork-mnemonic-from-seed.rs diff --git a/keyfork-prompt/Cargo.toml b/crates/util/keyfork-prompt/Cargo.toml similarity index 100% rename from keyfork-prompt/Cargo.toml rename to crates/util/keyfork-prompt/Cargo.toml diff --git a/keyfork-prompt/src/bin/test-basic-prompt.rs b/crates/util/keyfork-prompt/src/bin/test-basic-prompt.rs similarity index 100% rename from keyfork-prompt/src/bin/test-basic-prompt.rs rename to crates/util/keyfork-prompt/src/bin/test-basic-prompt.rs diff --git a/keyfork-prompt/src/lib.rs b/crates/util/keyfork-prompt/src/lib.rs similarity index 100% rename from keyfork-prompt/src/lib.rs rename to crates/util/keyfork-prompt/src/lib.rs diff --git a/keyfork-prompt/src/terminal.rs b/crates/util/keyfork-prompt/src/terminal.rs similarity index 100% rename from keyfork-prompt/src/terminal.rs rename to crates/util/keyfork-prompt/src/terminal.rs diff --git a/keyfork-prompt/src/validators.rs b/crates/util/keyfork-prompt/src/validators.rs similarity index 100% rename from keyfork-prompt/src/validators.rs rename to crates/util/keyfork-prompt/src/validators.rs diff --git a/keyfork-slip10-test-data/Cargo.toml b/crates/util/keyfork-slip10-test-data/Cargo.toml similarity index 100% rename from keyfork-slip10-test-data/Cargo.toml rename to crates/util/keyfork-slip10-test-data/Cargo.toml diff --git a/keyfork-slip10-test-data/src/lib.rs b/crates/util/keyfork-slip10-test-data/src/lib.rs similarity index 100% rename from keyfork-slip10-test-data/src/lib.rs rename to crates/util/keyfork-slip10-test-data/src/lib.rs diff --git a/smex/Cargo.toml b/crates/util/smex/Cargo.toml similarity index 100% rename from smex/Cargo.toml rename to crates/util/smex/Cargo.toml diff --git a/smex/src/lib.rs b/crates/util/smex/src/lib.rs similarity index 100% rename from smex/src/lib.rs rename to crates/util/smex/src/lib.rs