From fbfcdc53208dad2029cb1da55c1f5e14ef60bec7 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Fri, 9 May 2025 19:14:08 +0000 Subject: [PATCH] Update wiki for migration off of GPG --- README.md | 2 +- wiki/breaking.md | 4 +--- wiki/developers.md | 2 +- wiki/migration.md | 9 ++++++--- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 1417fb8..9ea09d9 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ See the [developer guide](https://github.com/rwinkhart/libmutton/blob/main/wiki/ # Roadmap #### Release v0.4.0 -- [ ] Swap to native (cascade) encryption (custom) +- [x] Swap to native (cascade) encryption - [ ] Add refresh/re-encrypt functionality #### Release v0.5.0 - [ ] Implement "netpin" (quick-unlock) with new encryption diff --git a/wiki/breaking.md b/wiki/breaking.md index c183551..b9503a5 100644 --- a/wiki/breaking.md +++ b/wiki/breaking.md @@ -3,8 +3,6 @@ Leading up to the v1.0.0 release, breaking changes are both expected and planned These changes include, but may expand beyond the following: -- Migration to Go-native encryption (no reliance on GnuPG) - - Will be based on symmetrical encryption - - Will eventually allow combining multiple common encryption algorithms (cascading encryption) +- Migration to [RCW](https://github.com/rwinkhart/rcw) (no reliance on GnuPG) (libmutton v0.4.0) - Password aging data will be stored for each entry (to remind the user when it is time to change passwords) - Will be included in entry names or in external file (to prevent needing to decrypt entries to access this information) \ No newline at end of file diff --git a/wiki/developers.md b/wiki/developers.md index bbe6c5c..91f66eb 100644 --- a/wiki/developers.md +++ b/wiki/developers.md @@ -16,7 +16,7 @@ These are as follows: - `termux`: Allows creating an Android binary that can interact with the Termux clipboard (for Android) ## Required Global Variable Manipulation -libmutton provides a `PassphraseInputFunction` global variable that all clients must set to support passphrase-protected SSH identity files. This approach allows for different types of clients (CLI, GUI, TUI) to prompt for the passphrase in the most appropriate way. +libmutton provides a `GetPassphrase` global variable that all clients must set. This approach allows for different types of clients (CLI, GUI, TUI) to prompt for the passphrase in the most appropriate way. ## Required Arguments - `clipclear`: Should be accepted by all non-interactive CLI libmutton implementations (not required for interactive GUI/TUI implementations). In order to clear the clipboard on a timer, non-interactive libmutton-based password managers call another instance of their executable with the `clipclear` argument (e.g. `mutn clipclear`) with the intended clipboard contents provided via STDIN. If after 30 seconds the clipboard contents have not changed, they are cleared. Please accept a `clipclear` argument that calls `core.ClipClearArgument()`. diff --git a/wiki/migration.md b/wiki/migration.md index 9e6d3a7..1edcf9c 100644 --- a/wiki/migration.md +++ b/wiki/migration.md @@ -1,8 +1,11 @@ ## Migrating From Other Password Managers **Important Notice**: The libmutton entry format is not final and has two [breaking changes planned prior to release v1.0.0](https://github.com/rwinkhart/libmutton/blob/main/wiki/breaking.md). This guide will be updated accordingly. ### pass -libmutton-based password managers *currently* use GnuPG encryption and an entry format similar to that of [pass](https://www.passwordstore.org/). Because of this, any entries in `pass` format can simply be dropped into `~/.local/share/libmutton`. +#### libmutton < v0.4.0 +libmutton-based password managers (prior to v0.4.0) use GnuPG encryption and an entry format similar to that of [pass](https://www.passwordstore.org/). Because of this, any entries in `pass` format can simply be dropped into `~/.local/share/libmutton`. +#### libmutton >= v0.4.0 +Current libmutton-based password managers use a custom, embedded cryptography agent ([RCW](https://github.com/rwinkhart/rcw)). The layout of the entries themselves has not changed, so gpg-encrypted entries (from `pass` or older libmutton releases) can simply be decrypted and re-encrypted with RCW. A conversion script will be published prior to the release of libmutton v0.4.0. ### sshyp -sshyp, though also `pass`-compatible, makes some changes to the entry format that take effect once the entry has been imported. The changes made by sshyp are not compatible with libmutton, and as such sshyp entries must be converted before they can be used. A script for doing that has been created and is available in the sshyp extension store. Simply run `sshyp tweak`, go to the "extension management" menu, and download the "export-to-libmutton" extension. After doing this, the `sshyp export` command can be used to export entries in libmutton format. +`sshyp`, though also `pass`-compatible, makes some changes to the entry format that take effect once the entry has been imported. The changes made by `sshyp` are not compatible with libmutton, and as such `sshyp` entries must be converted before they can be used. A script for exporting to libmutton (prior to v0.4.0) has been published to the `sshyp` extension store. Simply run `sshyp tweak`, go to the "extension management" menu, and download the "export-to-libmutton" extension. After doing this, the `sshyp export` command can be used to export entries in libmutton format. If migrating into libmutton v0.4.0 or later, a second conversion script will be needed to re-encrypt the exported `sshyp` entries; this script will be published prior to the release of libmutton v0.4.0. ### Other -The formats for many other password managers can be converted to the `pass` format with community scripts. Some of these scripts are listed [here](https://www.passwordstore.org/#migration). Once converted, entries can be dropped into `~/.local/share/libmutton`. +The formats for many other password managers can be converted to the `pass` format with community scripts. Some of these scripts are listed [here](https://www.passwordstore.org/#migration). Once converted, entries can be dropped into `~/.local/share/libmutton`. If migrating into libmutton v0.4.0 or later, a second conversion script will be needed to re-encrypt the converted entries; this script will be published prior to the release of libmutton v0.4.0.