Compare commits
No commits in common. "4e2c4487e9fa608e04ec7f890a02b21f875ec53c" and "086e56bef0c94cd0d594168e86f149398316b148" have entirely different histories.
4e2c4487e9
...
086e56bef0
14
Makefile
14
Makefile
|
@ -10,20 +10,6 @@ define clone-repo
|
||||||
test `git -C $(1) rev-parse HEAD` = $(3)
|
test `git -C $(1) rev-parse HEAD` = $(3)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
docs/book: docs/src/links.md $(shell find docs/src -type f -name '*.md')
|
|
||||||
mdbook build docs
|
|
||||||
mkdir -p docs/book/rustdoc
|
|
||||||
cargo doc --no-deps
|
|
||||||
cp -r ${CARGO_TARGET_DIR}/doc/* docs/book/rustdoc/
|
|
||||||
|
|
||||||
docs/src/links.md: docs/src/links.md.template
|
|
||||||
echo "<!-- DO NOT EDIT THIS FILE MANUALLY, edit links.md.template -->" > $@
|
|
||||||
envsubst < $< >> $@
|
|
||||||
|
|
||||||
.PHONY: touch
|
|
||||||
touch:
|
|
||||||
touch docs/src/links.md.template
|
|
||||||
|
|
||||||
.PHONY: review
|
.PHONY: review
|
||||||
review:
|
review:
|
||||||
$(eval BASE_REF_PARSED := $(shell git rev-parse $(BASE_REF)))
|
$(eval BASE_REF_PARSED := $(shell git rev-parse $(BASE_REF)))
|
||||||
|
|
|
@ -9,7 +9,7 @@ license = "MIT"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = []
|
||||||
bin = ["decode-backend-rqrr"]
|
bin = ["decode-backend-zbar"]
|
||||||
decode-backend-rqrr = ["dep:rqrr"]
|
decode-backend-rqrr = ["dep:rqrr"]
|
||||||
decode-backend-zbar = ["dep:keyfork-zbar"]
|
decode-backend-zbar = ["dep:keyfork-zbar"]
|
||||||
|
|
||||||
|
|
|
@ -22,9 +22,9 @@ impl Image {
|
||||||
///
|
///
|
||||||
/// A FourCC code can be given in the format:
|
/// A FourCC code can be given in the format:
|
||||||
///
|
///
|
||||||
/// ```rust,ignore
|
/// ```no_run
|
||||||
/// self.set_format(b"Y800")
|
/// self.set_format(b"Y800")
|
||||||
/// ```
|
/// ````
|
||||||
pub(crate) fn set_format(&mut self, fourcc: &[u8; 4]) {
|
pub(crate) fn set_format(&mut self, fourcc: &[u8; 4]) {
|
||||||
let fourcc: u64 = fourcc[0] as u64
|
let fourcc: u64 = fourcc[0] as u64
|
||||||
| ((fourcc[1] as u64) << 8)
|
| ((fourcc[1] as u64) << 8)
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include links.md}}
|
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
Keyfork has different dependencies depending on the feature set used for
|
Keyfork has different dependencies depending on the feature set used for
|
||||||
|
@ -68,3 +66,5 @@ cargo install --index https://git.distrust.co/public/_cargo-index keyfork-entrop
|
||||||
# Confirmed to work as of 2024-01-17.
|
# Confirmed to work as of 2024-01-17.
|
||||||
cargo install --locked --path crates/util/keyfork-entropy --bin keyfork-entropy --features bin
|
cargo install --locked --path crates/util/keyfork-entropy --bin keyfork-entropy --features bin
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[SBOM]: https://en.wikipedia.org/wiki/SBOM
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
<!-- vim:set et sts=0 sw=2 ts=2: -->
|
<!-- vim:set et sts=0 sw=2 ts=2: -->
|
||||||
{{ #include links.md }}
|
|
||||||
# Summary
|
# Summary
|
||||||
|
|
||||||
# User Guide
|
# User Guide
|
||||||
|
|
||||||
- [Introduction to Keyfork](./introduction.md)
|
|
||||||
- [Installing Keyfork](./INSTALL.md)
|
- [Installing Keyfork](./INSTALL.md)
|
||||||
- [Security Considerations](./security.md)
|
- [Security Considerations](./security.md)
|
||||||
- [Shard Commands](./shard.md)
|
- [Shard Commands](./shard.md)
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../links.md}}
|
|
||||||
|
|
||||||
# keyfork-derive-key
|
# keyfork-derive-key
|
||||||
|
|
||||||
Derive a key from a given derivation path.
|
Derive a key from a given derivation path.
|
||||||
|
@ -20,3 +18,5 @@ the shell silently ignoring the single quotes in the derivation path.
|
||||||
|
|
||||||
Hex-encoded private key. Note that this is not the _extended_ private key, and
|
Hex-encoded private key. Note that this is not the _extended_ private key, and
|
||||||
can't be used to derive further data.
|
can't be used to derive further data.
|
||||||
|
|
||||||
|
[`keyforkd`]: ./bin/keyforkd.md
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../links.md}}
|
|
||||||
|
|
||||||
# keyfork-derive-openpgp
|
# keyfork-derive-openpgp
|
||||||
|
|
||||||
Derive a key from a given derivation path.
|
Derive a key from a given derivation path.
|
||||||
|
@ -30,3 +28,5 @@ the shell silently ignoring the single quotes in the derivation path.
|
||||||
## Output
|
## Output
|
||||||
|
|
||||||
OpenPGP ASCII armored key, signed to be valid for 24 hours.
|
OpenPGP ASCII armored key, signed to be valid for 24 hours.
|
||||||
|
|
||||||
|
[`keyforkd`]: ./bin/keyforkd.md
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../../links.md}}
|
|
||||||
|
|
||||||
# keyfork-entropy
|
# keyfork-entropy
|
||||||
|
|
||||||
Retrieve system entropy, output in hex format. The machine must be running a
|
Retrieve system entropy, output in hex format. The machine must be running a
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../../links.md}}
|
|
||||||
|
|
||||||
# keyfork-mnemonic-from-seed
|
# keyfork-mnemonic-from-seed
|
||||||
|
|
||||||
Generate a mnemonic from a seed passed by input.
|
Generate a mnemonic from a seed passed by input.
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../../links.md}}
|
|
||||||
|
|
||||||
# keyfork-shard
|
# keyfork-shard
|
||||||
|
|
||||||
<!-- Linked to: keyfork-user-guide/src/bin/keyfork/shard/index.md -->
|
<!-- Linked to: keyfork-user-guide/src/bin/keyfork/shard/index.md -->
|
||||||
|
@ -9,9 +7,13 @@ data. All binaries use Shamir's Secret Sharing through the [`sharks`] crate.
|
||||||
|
|
||||||
## OpenPGP
|
## OpenPGP
|
||||||
|
|
||||||
Keyfork provides OpenPGP compatible [`split`][kshard-opgp-split] and
|
Keyfork provides OpenPGP compatible [`split`][openpgp-split] and
|
||||||
[`combine`][kshard-opgp-combine] versions of Shard binaries. These binaries use
|
[`combine`][openpgp-combine] versions of Shard binaries. These binaries use
|
||||||
Sequoia OpenPGP and while they require all the necessary certificates for the
|
Sequoia OpenPGP and while they require all the necessary certificates for the
|
||||||
splitting stage, the certificates are included in the payload, and once Keyfork
|
splitting stage, the certificates are included in the payload, and once Keyfork
|
||||||
supports decrypting using OpenPGP smartcards, certificates will not be required
|
supports decrypting using OpenPGP smartcards, certificates will not be required
|
||||||
to decrypt the shares.
|
to decrypt the shares.
|
||||||
|
|
||||||
|
[`sharks`]: https://docs.rs/sharks/latest/sharks/
|
||||||
|
[openpgp-split]: ./openpgp/split.md
|
||||||
|
[openpgp-combine]: ./openpgp/combine.md
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
{{#include ../../../links.md}}
|
|
||||||
|
|
||||||
# keyfork-shard-combine-openpgp
|
# keyfork-shard-combine-openpgp
|
||||||
|
|
||||||
Combine shares into a previously [`split`][kshard-opgp-split] secret.
|
Combine `threshold` shares into a previously [`split`] secret.
|
||||||
|
|
||||||
## Arguments
|
## Arguments
|
||||||
|
|
||||||
|
@ -33,3 +31,5 @@ keyfork-shard-combine-openpgp shard.pgp
|
||||||
# Decrypt using on-disk private keys
|
# Decrypt using on-disk private keys
|
||||||
keyfork-shard-combine-openpgp key_discovery.pgp shard.pgp
|
keyfork-shard-combine-openpgp key_discovery.pgp shard.pgp
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[`split`]: ./split.md
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../../../links.md}}
|
|
||||||
|
|
||||||
# keyfork-shard-split-openpgp
|
# keyfork-shard-split-openpgp
|
||||||
|
|
||||||
<!-- Linked to: keyfork-user-guide/src/bin/keyfork-shard/index.md -->
|
<!-- Linked to: keyfork-user-guide/src/bin/keyfork-shard/index.md -->
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../../../links.md}}
|
|
||||||
|
|
||||||
# `keyfork derive`
|
# `keyfork derive`
|
||||||
|
|
||||||
Derive keys of various formats.
|
Derive keys of various formats.
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../../links.md}}
|
|
||||||
|
|
||||||
# keyfork
|
# keyfork
|
||||||
|
|
||||||
The primary interface for interacting with Keyfork utilities.
|
The primary interface for interacting with Keyfork utilities.
|
||||||
|
@ -35,3 +33,5 @@ been recovered, the Keyfork server starts, and derivation requests can begin.
|
||||||
Utilities to automatically manage the setup of Keyfork. This includes
|
Utilities to automatically manage the setup of Keyfork. This includes
|
||||||
generating a seed, splitting it into a Shard file, and provisioning smart cards
|
generating a seed, splitting it into a Shard file, and provisioning smart cards
|
||||||
with the capability to decrypt the shards.
|
with the capability to decrypt the shards.
|
||||||
|
|
||||||
|
[BIP-0044]: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../../../links.md}}
|
|
||||||
|
|
||||||
# `keyfork mnemonic`
|
# `keyfork mnemonic`
|
||||||
|
|
||||||
Utilities for managing mnemonics.
|
Utilities for managing mnemonics.
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../../../links.md}}
|
|
||||||
|
|
||||||
# `keyfork recover`
|
# `keyfork recover`
|
||||||
|
|
||||||
Recover a seed to memory from a mnemonic, shard, or other format, then launch
|
Recover a seed to memory from a mnemonic, shard, or other format, then launch
|
||||||
|
@ -40,3 +38,5 @@ shardholders.
|
||||||
For every shardholder, the recovery command will prompt 33 words to be sent to
|
For every shardholder, the recovery command will prompt 33 words to be sent to
|
||||||
the shardholder, followed by an input prompt of 72 words to be received from
|
the shardholder, followed by an input prompt of 72 words to be received from
|
||||||
the shardholder.
|
the shardholder.
|
||||||
|
|
||||||
|
[`keyfork shard transport`]: ../shard/index.md#keyfork-shard-transport
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../../../links.md}}
|
|
||||||
|
|
||||||
# `keyfork shard`
|
# `keyfork shard`
|
||||||
|
|
||||||
<!-- Linked to: keyfork-user-guide/src/bin/keyfork-shard/index.md -->
|
<!-- Linked to: keyfork-user-guide/src/bin/keyfork-shard/index.md -->
|
||||||
|
@ -130,3 +128,5 @@ keyfork shard transport shard.pgp
|
||||||
# Transport using on-disk private keys
|
# Transport using on-disk private keys
|
||||||
keyfork shard transport key_discovery.pgp shard.pgp
|
keyfork shard transport key_discovery.pgp shard.pgp
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[`keyfork recover remote-shard`]: ../recover/index.md#keyfork-recover-remote-shard
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../../../links.md}}
|
|
||||||
|
|
||||||
# `keyfork wizard`
|
# `keyfork wizard`
|
||||||
|
|
||||||
Set up Keyfork using a guided setup process.
|
Set up Keyfork using a guided setup process.
|
||||||
|
@ -65,3 +63,5 @@ shardholder.
|
||||||
|
|
||||||
An OpenPGP-encrypted Shard file, if not previously configured to be written to
|
An OpenPGP-encrypted Shard file, if not previously configured to be written to
|
||||||
a file using `--output`.
|
a file using `--output`.
|
||||||
|
|
||||||
|
[BIP-0032]: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../links.md}}
|
|
||||||
|
|
||||||
# keyforkd
|
# keyforkd
|
||||||
|
|
||||||
Keyforkd is the backend for deriving data using Keyfork. A mnemonic is loaded
|
Keyforkd is the backend for deriving data using Keyfork. A mnemonic is loaded
|
||||||
|
@ -15,7 +13,7 @@ are not leaked. In the future, `keyforkd` could implement GUI or TTY approval
|
||||||
for users to approve the path requested by the client, such as `m/44'/0'` being
|
for users to approve the path requested by the client, such as `m/44'/0'` being
|
||||||
"Bitcoin", or `m/7366512'` being "OpenPGP".
|
"Bitcoin", or `m/7366512'` being "OpenPGP".
|
||||||
|
|
||||||
The protocol for the UNIX socket is a framed, [`bincode`] format. While it is
|
The protocol for the UNIX socket is a framed, [bincode] format. While it is
|
||||||
custom to Keyfork, it is easy to implement. The crate `keyfork-frame` provides
|
custom to Keyfork, it is easy to implement. The crate `keyfork-frame` provides
|
||||||
a sync (`Read`, `Write`) and Tokio-compatible async (`AsyncRead`, `AsyncWrite`)
|
a sync (`Read`, `Write`) and Tokio-compatible async (`AsyncRead`, `AsyncWrite`)
|
||||||
pair of methods for encoding and decoding frames.
|
pair of methods for encoding and decoding frames.
|
||||||
|
@ -29,3 +27,6 @@ For encoding the data, the process is reversed. A SHA-256 hash is created, and
|
||||||
the length of the hash and the data is encoded to big-endian and written to the
|
the length of the hash and the data is encoded to big-endian and written to the
|
||||||
stream. Then, the hash is written to the stream. Lastly, the data itself is
|
stream. Then, the hash is written to the stream. Lastly, the data itself is
|
||||||
written as-is to the stream.
|
written as-is to the stream.
|
||||||
|
|
||||||
|
[bincode]: https://docs.rs/bincode/latest/bincode/
|
||||||
|
[BIP-0044]: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include links.md}}
|
|
||||||
|
|
||||||
# Configuration File
|
# Configuration File
|
||||||
|
|
||||||
The Keyfork configuration file is used to store the integrity of the mnemonic
|
The Keyfork configuration file is used to store the integrity of the mnemonic
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../links.md}}
|
|
||||||
|
|
||||||
# Auditing Dependencies
|
# Auditing Dependencies
|
||||||
|
|
||||||
Dependencies must be reviewed before being added to the repository, and must
|
Dependencies must be reviewed before being added to the repository, and must
|
||||||
|
@ -37,7 +35,7 @@ These dependencies will show up often:
|
||||||
A command line interface for generating, deriving from, and managing secrets.
|
A command line interface for generating, deriving from, and managing secrets.
|
||||||
|
|
||||||
* [`card-backend-pcsc`]: Interacting with smartcards using PCSC. Used as a card
|
* [`card-backend-pcsc`]: Interacting with smartcards using PCSC. Used as a card
|
||||||
backend for [`openpgp-card`].
|
backend for `openpgp-card`.
|
||||||
* [`clap`]: Command line argument parsing, helps building an intuitive command
|
* [`clap`]: Command line argument parsing, helps building an intuitive command
|
||||||
line interface.
|
line interface.
|
||||||
* [`clap_complete`]: Shell autocompletion file generator. Helps the user
|
* [`clap_complete`]: Shell autocompletion file generator. Helps the user
|
||||||
|
@ -223,6 +221,40 @@ Test data for SLIP10/BIP-0032 derivation.
|
||||||
|
|
||||||
Zero-dependency hex encoding and decoding.
|
Zero-dependency hex encoding and decoding.
|
||||||
|
|
||||||
|
[`aes-gcm`]: https://github.com/RustCrypto/AEADs/tree/master/aes-gcm
|
||||||
|
[`anyhow`]: https://github.com/dtolnay/anyhow
|
||||||
|
[`bincode`]: https://github.com/bincode-org/bincode
|
||||||
|
[`card-backend`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/card-backend
|
||||||
|
[`card-backend-pcsc`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/pcsc
|
||||||
|
[`clap`]: https://github.com/clap-rs/clap/
|
||||||
|
[`clap_complete`]: https://github.com/clap-rs/clap/tree/master/clap_complete
|
||||||
|
[`digest`]: https://github.com/RustCrypto/traits/tree/master/digest
|
||||||
|
[`ed25519-dalek`]: https://github.com/dalek-cryptography/curve25519-dalek/tree/main/ed25519-dalek
|
||||||
|
[`hakari`]: https://docs.rs/cargo-hakari/latest/cargo_hakari/index.html
|
||||||
|
[`hkdf`]: https://github.com/RustCrypto/KDFs/tree/master/hkdf
|
||||||
|
[`hmac`]: https://github.com/RustCrypto/MACs/tree/master/hmac
|
||||||
|
[`image`]: https://github.com/image-rs/image
|
||||||
|
[`k256`]: https://github.com/RustCrypto/elliptic-curves/tree/master/k256
|
||||||
|
[`openpgp-card`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main
|
||||||
|
[`openpgp-card-sequoia`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/openpgp-card-sequoia
|
||||||
|
[`pbkdf2`]: https://github.com/RustCrypto/password-hashes/tree/master/pbkdf2
|
||||||
|
[`ripemd`]: https://github.com/RustCrypto/hashes/tree/master/ripemd
|
||||||
|
[`rqrr`]: https://github.com/WanzenBug/rqrr/
|
||||||
|
[`sequoia-openpgp`]: https://gitlab.com/sequoia-pgp/sequoia
|
||||||
|
[`serde`]: https://github.com/dtolnay/serde
|
||||||
|
[`sha2`]: https://github.com/RustCrypto/hashes/tree/master/sha2
|
||||||
|
[`thiserror`]: https://github.com/dtolnay/thiserror
|
||||||
|
[`tokio`]: https://github.com/tokio-rs/tokio
|
||||||
|
[`tower`]: https://github.com/tower-rs/tower
|
||||||
|
[`tracing`]: https://github.com/tokio-rs/tracing
|
||||||
|
[`tracing-error`]: https://github.com/tokio-rs/tracing/tree/master/tracing-error
|
||||||
|
[`tracing-subscriber`]: https://github.com/tokio-rs/tracing/tree/master/tracing-subscriber
|
||||||
|
[`v4l`]: https://github.com/raymanfx/libv4l-rs/
|
||||||
|
[`zbar`]: https://github.com/mchehab/zbar
|
||||||
|
|
||||||
|
[`bindgen`]: https://github.com/rust-lang/rust-bindgen
|
||||||
|
[`pkg-config`]: https://github.com/rust-lang/pkg-config-rs
|
||||||
|
|
||||||
[`keyfork-crossterm`]: #keyfork-crossterm
|
[`keyfork-crossterm`]: #keyfork-crossterm
|
||||||
[`keyfork-derive-openpgp`]: #keyfork-derive-openpgp
|
[`keyfork-derive-openpgp`]: #keyfork-derive-openpgp
|
||||||
[`keyfork-derive-path-data`]: #keyfork-derive-path-data
|
[`keyfork-derive-path-data`]: #keyfork-derive-path-data
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../links.md}}
|
|
||||||
|
|
||||||
# Entropy Guide
|
# Entropy Guide
|
||||||
|
|
||||||
Keyfork provides a `keyfork-entropy` crate for generating entropy. The crate
|
Keyfork provides a `keyfork-entropy` crate for generating entropy. The crate
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../links.md}}
|
|
||||||
|
|
||||||
# Handling Data
|
# Handling Data
|
||||||
|
|
||||||
In Rust, it is common to name things `as_*`, `to_*`, and `into_*`. These three
|
In Rust, it is common to name things `as_*`, `to_*`, and `into_*`. These three
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../links.md}}
|
|
||||||
|
|
||||||
# Writing Binaries
|
# Writing Binaries
|
||||||
|
|
||||||
### Binaries - Porcelain and Plumbing
|
### Binaries - Porcelain and Plumbing
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include ../links.md}}
|
|
||||||
|
|
||||||
# Developing Provisioners
|
# Developing Provisioners
|
||||||
|
|
||||||
**Note:** This document makes heavy use of references to OpenPGP and assumes
|
**Note:** This document makes heavy use of references to OpenPGP and assumes
|
||||||
|
@ -77,3 +75,6 @@ device. The porcelain provisioner code should make a best-effort attempt to
|
||||||
derive unique keys for each use, such as OpenPGP capabilities or PIV slots.
|
derive unique keys for each use, such as OpenPGP capabilities or PIV slots.
|
||||||
Additionally, when provisioning to a key, the configuration for that
|
Additionally, when provisioning to a key, the configuration for that
|
||||||
provisioner should be stored to the configuration file.
|
provisioner should be stored to the configuration file.
|
||||||
|
|
||||||
|
[application identifier]: https://docs.rs/openpgp-card-sequoia/latest/openpgp_card_sequoia/struct.Card.html#method.application_identifier
|
||||||
|
[cardholder name]: https://docs.rs/openpgp-card-sequoia/latest/openpgp_card_sequoia/struct.Card.html#method.cardholder_name
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
{{#include links.md}}
|
|
||||||
|
|
||||||
# Introduction
|
|
||||||
|
|
||||||
Keyfork is a tool to help manage the creation and derivation of binary data
|
|
||||||
using [BIP-0039] mnemonics. A mnemonic is, in simple terms, a way of encoding a
|
|
||||||
large number between 128 and 256 bits, as a list of 12 to 24 words that can be
|
|
||||||
easily stored or memorized. Once a user has a mnemonic, Keyfork utilizes
|
|
||||||
[BIP-0032] to derive cryptographic keys, which can be utilized by a variety of
|
|
||||||
applications.
|
|
||||||
|
|
||||||
## Rust documentation
|
|
||||||
|
|
||||||
Documentation is [automatically built][keyfork-rustdoc].
|
|
|
@ -1,71 +0,0 @@
|
||||||
<!-- DO NOT EDIT THIS FILE MANUALLY, edit links.md.template -->
|
|
||||||
<!-- vim:set et sw=4 ts=4 tw=79 ft=markdown: -->
|
|
||||||
|
|
||||||
[comments]: <> (
|
|
||||||
Please keep all links contained in this file, so they can be reused if
|
|
||||||
necessary across multiple pages.
|
|
||||||
)
|
|
||||||
|
|
||||||
[comments]: <> (
|
|
||||||
External links
|
|
||||||
)
|
|
||||||
|
|
||||||
[application identifier]: https://docs.rs/openpgp-card-sequoia/latest/openpgp_card_sequoia/struct.Card.html#method.application_identifier
|
|
||||||
[cardholder name]: https://docs.rs/openpgp-card-sequoia/latest/openpgp_card_sequoia/struct.Card.html#method.cardholder_name
|
|
||||||
|
|
||||||
[BIP-0032]: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
|
|
||||||
[BIP-0039]: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
|
|
||||||
[BIP-0044]: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
|
|
||||||
|
|
||||||
[SBOM]: https://en.wikipedia.org/wiki/SBOM
|
|
||||||
[Sequoia]: https://sequoia-pgp.org
|
|
||||||
|
|
||||||
[comments]: <> (
|
|
||||||
Crate source links
|
|
||||||
)
|
|
||||||
|
|
||||||
[`aes-gcm`]: https://github.com/RustCrypto/AEADs/tree/master/aes-gcm
|
|
||||||
[`anyhow`]: https://github.com/dtolnay/anyhow
|
|
||||||
[`bincode`]: https://github.com/bincode-org/bincode
|
|
||||||
[`card-backend`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/card-backend
|
|
||||||
[`card-backend-pcsc`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/pcsc
|
|
||||||
[`clap`]: https://github.com/clap-rs/clap/
|
|
||||||
[`clap_complete`]: https://github.com/clap-rs/clap/tree/master/clap_complete
|
|
||||||
[`digest`]: https://github.com/RustCrypto/traits/tree/master/digest
|
|
||||||
[`ed25519-dalek`]: https://github.com/dalek-cryptography/curve25519-dalek/tree/main/ed25519-dalek
|
|
||||||
[`hakari`]: https://docs.rs/cargo-hakari/latest/cargo_hakari/index.html
|
|
||||||
[`hkdf`]: https://github.com/RustCrypto/KDFs/tree/master/hkdf
|
|
||||||
[`hmac`]: https://github.com/RustCrypto/MACs/tree/master/hmac
|
|
||||||
[`image`]: https://github.com/image-rs/image
|
|
||||||
[`k256`]: https://github.com/RustCrypto/elliptic-curves/tree/master/k256
|
|
||||||
[`openpgp-card`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main
|
|
||||||
[`openpgp-card-sequoia`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/openpgp-card-sequoia
|
|
||||||
[`pbkdf2`]: https://github.com/RustCrypto/password-hashes/tree/master/pbkdf2
|
|
||||||
[`ripemd`]: https://github.com/RustCrypto/hashes/tree/master/ripemd
|
|
||||||
[`rqrr`]: https://github.com/WanzenBug/rqrr/
|
|
||||||
[`sequoia-openpgp`]: https://gitlab.com/sequoia-pgp/sequoia
|
|
||||||
[`serde`]: https://github.com/dtolnay/serde
|
|
||||||
[`sha2`]: https://github.com/RustCrypto/hashes/tree/master/sha2
|
|
||||||
[`sharks`]: https://github.com/c0dearm/sharks
|
|
||||||
[`thiserror`]: https://github.com/dtolnay/thiserror
|
|
||||||
[`tokio`]: https://github.com/tokio-rs/tokio
|
|
||||||
[`tower`]: https://github.com/tower-rs/tower
|
|
||||||
[`tracing`]: https://github.com/tokio-rs/tracing
|
|
||||||
[`tracing-error`]: https://github.com/tokio-rs/tracing/tree/master/tracing-error
|
|
||||||
[`tracing-subscriber`]: https://github.com/tokio-rs/tracing/tree/master/tracing-subscriber
|
|
||||||
[`v4l`]: https://github.com/raymanfx/libv4l-rs/
|
|
||||||
[`zbar`]: https://github.com/mchehab/zbar
|
|
||||||
|
|
||||||
[`bindgen`]: https://github.com/rust-lang/rust-bindgen
|
|
||||||
[`pkg-config`]: https://github.com/rust-lang/pkg-config-rs
|
|
||||||
|
|
||||||
[comments]: <> (
|
|
||||||
Internal links, based on root path
|
|
||||||
)
|
|
||||||
|
|
||||||
[`keyforkd`]: /bin/keyforkd.md
|
|
||||||
[`keyfork shard transport`]: /bin/keyfork/shard/index.md#keyfork-shard-transport
|
|
||||||
[`keyfork recover remote-shard`]: /bin/keyfork/recover/index.md#keyfork-recover-remote-shard
|
|
||||||
[kshard-opgp-split]: /bin/keyfork-shard/openpgp/split.md
|
|
||||||
[kshard-opgp-combine]: /bin/keyfork-shard/openpgp/combine.md
|
|
||||||
[keyfork-rustdoc]: ./rustdoc/keyfork/index.html
|
|
|
@ -1,70 +0,0 @@
|
||||||
<!-- vim:set et sw=4 ts=4 tw=79 ft=markdown: -->
|
|
||||||
|
|
||||||
[comments]: <> (
|
|
||||||
Please keep all links contained in this file, so they can be reused if
|
|
||||||
necessary across multiple pages.
|
|
||||||
)
|
|
||||||
|
|
||||||
[comments]: <> (
|
|
||||||
External links
|
|
||||||
)
|
|
||||||
|
|
||||||
[application identifier]: https://docs.rs/openpgp-card-sequoia/latest/openpgp_card_sequoia/struct.Card.html#method.application_identifier
|
|
||||||
[cardholder name]: https://docs.rs/openpgp-card-sequoia/latest/openpgp_card_sequoia/struct.Card.html#method.cardholder_name
|
|
||||||
|
|
||||||
[BIP-0032]: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
|
|
||||||
[BIP-0039]: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
|
|
||||||
[BIP-0044]: https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
|
|
||||||
|
|
||||||
[SBOM]: https://en.wikipedia.org/wiki/SBOM
|
|
||||||
[Sequoia]: https://sequoia-pgp.org
|
|
||||||
|
|
||||||
[comments]: <> (
|
|
||||||
Crate source links
|
|
||||||
)
|
|
||||||
|
|
||||||
[`aes-gcm`]: https://github.com/RustCrypto/AEADs/tree/master/aes-gcm
|
|
||||||
[`anyhow`]: https://github.com/dtolnay/anyhow
|
|
||||||
[`bincode`]: https://github.com/bincode-org/bincode
|
|
||||||
[`card-backend`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/card-backend
|
|
||||||
[`card-backend-pcsc`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/pcsc
|
|
||||||
[`clap`]: https://github.com/clap-rs/clap/
|
|
||||||
[`clap_complete`]: https://github.com/clap-rs/clap/tree/master/clap_complete
|
|
||||||
[`digest`]: https://github.com/RustCrypto/traits/tree/master/digest
|
|
||||||
[`ed25519-dalek`]: https://github.com/dalek-cryptography/curve25519-dalek/tree/main/ed25519-dalek
|
|
||||||
[`hakari`]: https://docs.rs/cargo-hakari/latest/cargo_hakari/index.html
|
|
||||||
[`hkdf`]: https://github.com/RustCrypto/KDFs/tree/master/hkdf
|
|
||||||
[`hmac`]: https://github.com/RustCrypto/MACs/tree/master/hmac
|
|
||||||
[`image`]: https://github.com/image-rs/image
|
|
||||||
[`k256`]: https://github.com/RustCrypto/elliptic-curves/tree/master/k256
|
|
||||||
[`openpgp-card`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main
|
|
||||||
[`openpgp-card-sequoia`]: https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/openpgp-card-sequoia
|
|
||||||
[`pbkdf2`]: https://github.com/RustCrypto/password-hashes/tree/master/pbkdf2
|
|
||||||
[`ripemd`]: https://github.com/RustCrypto/hashes/tree/master/ripemd
|
|
||||||
[`rqrr`]: https://github.com/WanzenBug/rqrr/
|
|
||||||
[`sequoia-openpgp`]: https://gitlab.com/sequoia-pgp/sequoia
|
|
||||||
[`serde`]: https://github.com/dtolnay/serde
|
|
||||||
[`sha2`]: https://github.com/RustCrypto/hashes/tree/master/sha2
|
|
||||||
[`sharks`]: https://github.com/c0dearm/sharks
|
|
||||||
[`thiserror`]: https://github.com/dtolnay/thiserror
|
|
||||||
[`tokio`]: https://github.com/tokio-rs/tokio
|
|
||||||
[`tower`]: https://github.com/tower-rs/tower
|
|
||||||
[`tracing`]: https://github.com/tokio-rs/tracing
|
|
||||||
[`tracing-error`]: https://github.com/tokio-rs/tracing/tree/master/tracing-error
|
|
||||||
[`tracing-subscriber`]: https://github.com/tokio-rs/tracing/tree/master/tracing-subscriber
|
|
||||||
[`v4l`]: https://github.com/raymanfx/libv4l-rs/
|
|
||||||
[`zbar`]: https://github.com/mchehab/zbar
|
|
||||||
|
|
||||||
[`bindgen`]: https://github.com/rust-lang/rust-bindgen
|
|
||||||
[`pkg-config`]: https://github.com/rust-lang/pkg-config-rs
|
|
||||||
|
|
||||||
[comments]: <> (
|
|
||||||
Internal links, based on root path
|
|
||||||
)
|
|
||||||
|
|
||||||
[`keyforkd`]: ${ROOT_PATH}/bin/keyforkd.md
|
|
||||||
[`keyfork shard transport`]: ${ROOT_PATH}/bin/keyfork/shard/index.md#keyfork-shard-transport
|
|
||||||
[`keyfork recover remote-shard`]: ${ROOT_PATH}/bin/keyfork/recover/index.md#keyfork-recover-remote-shard
|
|
||||||
[kshard-opgp-split]: ${ROOT_PATH}/bin/keyfork-shard/openpgp/split.md
|
|
||||||
[kshard-opgp-combine]: ${ROOT_PATH}/bin/keyfork-shard/openpgp/combine.md
|
|
||||||
[keyfork-rustdoc]: ./rustdoc/keyfork/index.html
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include links.md}}
|
|
||||||
|
|
||||||
# Keyfork Shard Commands
|
# Keyfork Shard Commands
|
||||||
|
|
||||||
Sharding a seed allows "M-of-N" recovery of the seed, which is useful for
|
Sharding a seed allows "M-of-N" recovery of the seed, which is useful for
|
||||||
|
@ -79,3 +77,5 @@ The key, including the secret portions, can be retrieved by running the command
|
||||||
without the `sq` portion, but should not be run on a system with a persistent
|
without the `sq` portion, but should not be run on a system with a persistent
|
||||||
filesystem, to avoid keeping the key on written memory for longer than
|
filesystem, to avoid keeping the key on written memory for longer than
|
||||||
necessary.
|
necessary.
|
||||||
|
|
||||||
|
[Sequoia]: https://sequoia-pgp.org
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
{{#include links.md}}
|
|
||||||
|
|
||||||
# Common Usage
|
# Common Usage
|
||||||
|
|
||||||
Keyfork is a tool to help manage the creation and derivation of binary data
|
Keyfork is a tool to help manage the creation and derivation of binary data
|
||||||
|
@ -76,3 +74,6 @@ the following command for an OpenPGP certificate with one of each subkey:
|
||||||
```sh
|
```sh
|
||||||
keyfork derive openpgp "John Doe <jdoe@example.com>"
|
keyfork derive openpgp "John Doe <jdoe@example.com>"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[BIP-0039]: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
|
||||||
|
[BIP-0032]: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
|
||||||
|
|
Loading…
Reference in New Issue