// Per-test set up that returns a cleanup function. This set up: // - changes the passphrase retriever to always produce a constant passphrase // - disables touch on yubikeys // - deletes all keys on the yubikey func setUp(t *testing.T) func() { oldRetriever := retriever var fake = func(k, a string, c bool, n int) (string, bool, error) { if k == "Yubikey" { return oldRetriever(k, a, c, n) } return testPassphrase, false, nil } retriever = fake getRetriever = func() passphrase.Retriever { return fake } yubikey.SetYubikeyKeyMode(yubikey.KeymodeNone) // //we're just removing keys here, so nil is fine s, err := yubikey.NewYubiKeyStore(nil, retriever) assert.NoError(t, err) for k := range s.ListKeys() { err := s.RemoveKey(k) assert.NoError(t, err) } return func() { retriever = oldRetriever getRetriever = getPassphraseRetriever yubikey.SetYubikeyKeyMode(yubikey.KeymodeTouch | yubikey.KeymodePinOnce) } }
func init() { yubikey.SetYubikeyKeyMode(yubikey.KeymodeNone) regRetriver := passphrase.PromptRetriever() _retriever := func(k, a string, c bool, n int) (string, bool, error) { if k == "Yubikey" { return regRetriver(k, a, c, n) } return testPassphrase, false, nil } // best effort at removing keys here, so nil is fine s, err := yubikey.NewYubiKeyStore(nil, _retriever) if err != nil { for k := range s.ListKeys() { s.RemoveKey(k) } } NewNotaryCommand = func() *cobra.Command { commander := ¬aryCommander{ getRetriever: func() passphrase.Retriever { return _retriever }, } return commander.GetCommand() } }
// clear out all keys func init() { yubikey.SetYubikeyKeyMode(0) if !yubikey.YubikeyAccessible() { return } store, err := yubikey.NewYubiKeyStore(nil, nil) if err == nil { for k := range store.ListKeys() { store.RemoveKey(k) } } }