support age plugin identities for hardware-backed keys#158
Closed
iicky wants to merge 1 commit into
Closed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
pluginandcli-commonfeatures to theagedep so murk can dispatch to externalage-plugin-<name>binariesMurkRecipientwith aPluginvariant andMurkIdentitywith aPlugin { identity, pubkey }variant that stores the recipient pubkey alongside the opaque plugin pointerparse_identitynow accepts three shapes: a bare age key, an SSH PEM key, or an age identity file with a# public key: age1...header above anAGE-PLUGIN-<NAME>-1...pointerparse_recipientaccepts plugin recipients likeage1yubikey1...encryptgroups plugin recipients by plugin name and wraps each group inRecipientPluginV1so encryption to mixed native + plugin recipients just worksdecryptconstructsIdentityPluginV1on the fly for plugin identities; dispatches to the plugin viaUiCallbacksfor touch / PIN promptsenv::resolve_key_with_sourceno longer trims file contents so multi-line plugin identity files round-trip throughparse_identityrecovery::phrase_from_keyandcmd_recovererror clearly on plugin identities with an explanation: BIP39 encodes raw key bytes, hardware-backed keys have none to encode, backup strategy is a second enrolled device as recipientMurkIdentity::Debugredacts key material so accidental logs do not leak secretsenv::tests::resolve_key_does_not_read_dotenv: it was acquiringCWD_LOCKbeforeENV_LOCKwhile every other test uses the opposite order, causing intermittent hangs under parallel test schedulingHardware identitiessection with plugin table (YubiKey, Secure Enclave, FIDO2, OpenPGP Card) and full YubiKey setup exampleHardware-backed identitiessubsection documenting the file format and MURK_KEY vs MURK_KEY_FILE trade-off