Compare commits
2 Commits
35e0eb57a0
...
e1c3e38fc7
Author | SHA1 | Date |
---|---|---|
|
e1c3e38fc7 | |
|
4e342ac7a9 |
47
CHANGELOG.md
47
CHANGELOG.md
|
@ -1,3 +1,50 @@
|
||||||
|
# Keyfork v0.2.6
|
||||||
|
|
||||||
|
* The `--daemon` flag has been added for `keyfork recover` subcommands.
|
||||||
|
* `keyfork mnemonic generate` now has a bunch more options, to improve the out-of-the-box experience.
|
||||||
|
* `keyfork shard metadata` can be used to get the threshold and OpenPGP certificates.
|
||||||
|
* `keyfork derive openpgp` now correctly provides private keys, instead of public keys.
|
||||||
|
|
||||||
|
### Changes in keyfork:
|
||||||
|
|
||||||
|
```
|
||||||
|
4e342ac keyfork: add `--daemon`
|
||||||
|
c232828 superpower `keyfork mnemonic generate`
|
||||||
|
8756c3d keyfork wizard generate-shard-secret: allow exporting certificates and cross-sign generated keys
|
||||||
|
c95ed0b keyfork shard metadata: initial commit
|
||||||
|
adb5293 keyfork derive openpgp: export secret keys instead of public certs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Changes in keyfork-derive-openpgp:
|
||||||
|
|
||||||
|
```
|
||||||
|
adb5293 keyfork derive openpgp: export secret keys instead of public certs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Changes in keyfork-prompt:
|
||||||
|
|
||||||
|
```
|
||||||
|
35e0eb5 keyfork-prompt: use raw mode for input
|
||||||
|
```
|
||||||
|
|
||||||
|
### Changes in keyfork-shard:
|
||||||
|
|
||||||
|
```
|
||||||
|
c95ed0b keyfork shard metadata: initial commit
|
||||||
|
```
|
||||||
|
|
||||||
|
### Changes in keyfork-tests:
|
||||||
|
|
||||||
|
```
|
||||||
|
19fbb51 keyfork-tests: initial commit. also, fixup test_util's Panicable to not be generic. it's always unit type
|
||||||
|
```
|
||||||
|
|
||||||
|
### Changes in keyforkd:
|
||||||
|
|
||||||
|
```
|
||||||
|
19fbb51 keyfork-tests: initial commit. also, fixup test_util's Panicable to not be generic. it's always unit type
|
||||||
|
```
|
||||||
|
|
||||||
# Keyfork v0.2.5
|
# Keyfork v0.2.5
|
||||||
|
|
||||||
### Changes in keyfork:
|
### Changes in keyfork:
|
||||||
|
|
|
@ -629,6 +629,12 @@ version = "1.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg_aliases"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chrono"
|
name = "chrono"
|
||||||
version = "0.4.38"
|
version = "0.4.38"
|
||||||
|
@ -1779,7 +1785,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "keyfork"
|
name = "keyfork"
|
||||||
version = "0.2.5"
|
version = "0.2.6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64",
|
"base64",
|
||||||
"card-backend-pcsc",
|
"card-backend-pcsc",
|
||||||
|
@ -1797,6 +1803,7 @@ dependencies = [
|
||||||
"keyforkd",
|
"keyforkd",
|
||||||
"keyforkd-client",
|
"keyforkd-client",
|
||||||
"keyforkd-models",
|
"keyforkd-models",
|
||||||
|
"nix",
|
||||||
"openpgp-card",
|
"openpgp-card",
|
||||||
"openpgp-card-sequoia",
|
"openpgp-card-sequoia",
|
||||||
"sequoia-openpgp",
|
"sequoia-openpgp",
|
||||||
|
@ -1852,7 +1859,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "keyfork-derive-openpgp"
|
name = "keyfork-derive-openpgp"
|
||||||
version = "0.1.4"
|
version = "0.1.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"ed25519-dalek",
|
"ed25519-dalek",
|
||||||
|
@ -1923,7 +1930,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "keyfork-prompt"
|
name = "keyfork-prompt"
|
||||||
version = "0.2.0"
|
version = "0.2.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"keyfork-bug",
|
"keyfork-bug",
|
||||||
"keyfork-crossterm",
|
"keyfork-crossterm",
|
||||||
|
@ -2004,7 +2011,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "keyforkd"
|
name = "keyforkd"
|
||||||
version = "0.1.3"
|
version = "0.1.4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode",
|
"bincode",
|
||||||
"hex-literal",
|
"hex-literal",
|
||||||
|
@ -2273,6 +2280,18 @@ version = "1.0.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
|
checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nix"
|
||||||
|
version = "0.29.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.6.0",
|
||||||
|
"cfg-if",
|
||||||
|
"cfg_aliases",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nom"
|
name = "nom"
|
||||||
version = "7.1.3"
|
version = "7.1.3"
|
||||||
|
|
|
@ -77,6 +77,9 @@ tokio = "1.35.1"
|
||||||
v4l = "0.14.0"
|
v4l = "0.14.0"
|
||||||
base64 = "0.22.1"
|
base64 = "0.22.1"
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
debug = true
|
||||||
|
|
||||||
[profile.dev.package.keyfork-qrcode]
|
[profile.dev.package.keyfork-qrcode]
|
||||||
opt-level = 3
|
opt-level = 3
|
||||||
debug = true
|
debug = true
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
* Add and review a new blurb to the changelog by running the
|
* Add and review a new blurb to the changelog by running the
|
||||||
`make-changelog-blurb.sh` script and appending the result to the top of
|
`make-changelog-blurb.sh` script and appending the result to the top of
|
||||||
the file.
|
the file.
|
||||||
|
* Make sure to add some human-readable snippets at the top!
|
||||||
* Update all versions of crates listed in the changelog.
|
* Update all versions of crates listed in the changelog.
|
||||||
* Commit changes.
|
* Commit changes.
|
||||||
* Run the `sign-new-versions.sh` script to tag the new versions.
|
* Run the `sign-new-versions.sh` script to tag the new versions.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "keyforkd"
|
name = "keyforkd"
|
||||||
version = "0.1.3"
|
version = "0.1.4"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "AGPL-3.0-only"
|
license = "AGPL-3.0-only"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "keyfork-derive-openpgp"
|
name = "keyfork-derive-openpgp"
|
||||||
version = "0.1.4"
|
version = "0.1.5"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "AGPL-3.0-only"
|
license = "AGPL-3.0-only"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "keyfork"
|
name = "keyfork"
|
||||||
version = "0.2.5"
|
version = "0.2.6"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "AGPL-3.0-only"
|
license = "AGPL-3.0-only"
|
||||||
|
|
||||||
|
@ -47,3 +47,4 @@ clap_complete = { version = "4.4.6", optional = true }
|
||||||
sequoia-openpgp = { workspace = true }
|
sequoia-openpgp = { workspace = true }
|
||||||
keyforkd-models.workspace = true
|
keyforkd-models.workspace = true
|
||||||
base64.workspace = true
|
base64.workspace = true
|
||||||
|
nix = { version = "0.29.0", default-features = false, features = ["process"] }
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
use super::Keyfork;
|
use super::Keyfork;
|
||||||
use clap::{Parser, Subcommand};
|
use clap::{Parser, Subcommand};
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
use nix::{
|
||||||
|
sys::wait::waitpid,
|
||||||
|
unistd::{fork, ForkResult},
|
||||||
|
};
|
||||||
|
|
||||||
use keyfork_mnemonic::{English, Mnemonic};
|
use keyfork_mnemonic::{English, Mnemonic};
|
||||||
use keyfork_prompt::{
|
use keyfork_prompt::{
|
||||||
|
@ -80,12 +84,32 @@ impl RecoverSubcommands {
|
||||||
pub struct Recover {
|
pub struct Recover {
|
||||||
#[command(subcommand)]
|
#[command(subcommand)]
|
||||||
command: RecoverSubcommands,
|
command: RecoverSubcommands,
|
||||||
|
|
||||||
|
/// Daemonize the server once started, restoring control back to the shell.
|
||||||
|
#[arg(long, global=true)]
|
||||||
|
daemon: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Recover {
|
impl Recover {
|
||||||
pub fn handle(&self, _k: &Keyfork) -> Result<()> {
|
pub fn handle(&self, _k: &Keyfork) -> Result<()> {
|
||||||
let seed = self.command.handle()?;
|
let seed = self.command.handle()?;
|
||||||
let mnemonic = Mnemonic::try_from_slice(&seed)?;
|
let mnemonic = Mnemonic::try_from_slice(&seed)?;
|
||||||
|
if self.daemon {
|
||||||
|
// SAFETY: Forking threaded programs is unsafe. We know we don't have multiple
|
||||||
|
// threads at this point.
|
||||||
|
match unsafe { fork() }? {
|
||||||
|
ForkResult::Parent { child } => {
|
||||||
|
// wait for the child to die, so we don't exit prematurely
|
||||||
|
waitpid(Some(child), None)?;
|
||||||
|
return Ok(());
|
||||||
|
},
|
||||||
|
ForkResult::Child => {
|
||||||
|
if let ForkResult::Parent { .. } = unsafe { fork() }? {
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
tokio::runtime::Builder::new_multi_thread()
|
tokio::runtime::Builder::new_multi_thread()
|
||||||
.enable_all()
|
.enable_all()
|
||||||
.build()
|
.build()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "keyfork-prompt"
|
name = "keyfork-prompt"
|
||||||
version = "0.2.0"
|
version = "0.2.1"
|
||||||
description = "Prompt management utilities for Keyfork"
|
description = "Prompt management utilities for Keyfork"
|
||||||
repository = "https://git.distrust.co/public/keyfork"
|
repository = "https://git.distrust.co/public/keyfork"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
Loading…
Reference in New Issue