54 lines
2.2 KiB
Markdown
54 lines
2.2 KiB
Markdown
# Installing Keyfork
|
|
|
|
Keyfork is hosted using the Distrust Cargo repository. For the fastest
|
|
installation path (this is not recommended), crates may be installed directly
|
|
from the Cargo repository:
|
|
|
|
```sh
|
|
cargo install --index https://git.distrust.co/public/_cargo-index keyfork@0.1.0
|
|
```
|
|
|
|
The index is managed by Distrust, but is not signed by developers when commits
|
|
are created, so a safer alternative may be to build from source. It is
|
|
recommended to perform these operations on a machine dedicated for the purpose
|
|
of building Rust binaries, to avoid the risk of building a compromised binary.
|
|
|
|
```sh
|
|
git clone https://git.distrust.co/public/keyfork
|
|
cd keyfork
|
|
# git checkout keyfork-0.1.0
|
|
git verify-commit HEAD
|
|
cargo install --locked --path keyfork
|
|
```
|
|
|
|
This will build Keyfork from source, using a local `Cargo.lock` file to ensure
|
|
dependencies are not updated automatically.
|
|
|
|
## Installing Plumbing Binaries
|
|
|
|
Keyfork offers "plumbing" binaries (as opposed to the "porcelain" `keyfork`)
|
|
that offer a smaller [SBOM], allowing users with a smaller feature requirement
|
|
to lessen the requirements for code review. Plumbing binaries can be installed
|
|
the same way Keyfork is installed, either through the registry or by building
|
|
locally. Plumbing binaries are grouped by crates of shared dependencies. For
|
|
instance, `keyfork-plumbing` includes all binaries using only shared
|
|
dependencies. Eventually, `keyfork-plumbing-openpgp` may contain all
|
|
dependencies relevant to OpenPGP (such as the `keyfork-shard` variants,
|
|
`keyfork-derive-openpgp`, and `keyfork-provision-openpgp-card`). There may also
|
|
be plumbing binaries that exist by themselves, without a plumbing package.
|
|
Unfortunately, Cargo offers no convenient way to install a binary from any
|
|
package on a workspace, so the information about which package contains which
|
|
binary must be known beforehand.
|
|
|
|
<!-- TODO:
|
|
Should plumbing binaries be their own packages?
|
|
A convenient command to find the package for a binary should be provided.
|
|
-->
|
|
|
|
```sh
|
|
cargo install --index https://git.distrust.co/public/_cargo-index keyfork-plumbing@0.1.0
|
|
cargo install --locked --path keyfork-plumbing --bin keyfork-entropy
|
|
```
|
|
|
|
[SBOM]: https://en.wikipedia.org/wiki/SBOM
|