diff --git a/fingerprint_test.go b/fingerprint_test.go index 13ef4e9..edd63f9 100644 --- a/fingerprint_test.go +++ b/fingerprint_test.go @@ -209,6 +209,73 @@ func TestVaultFunctionsSTDOUTFingerprint(t *testing.T) { } } +func TestVaultFunctionsSTDOUTFingerprintCRprivate(t *testing.T) { + dir, err := ioutil.TempDir("", "vault") + if err != nil { + t.Error(err) + } + defer os.RemoveAll(dir) // clean up + + vault, err := New("55:cd:f2:7e:4c:0b:e5:a7:6e:6c:fc:6b:8e:58:9d:15", "test_data/id_rsa_extra_linebreak", "", "create", "") + if err != nil { + t.Error(err) + } + + PKCS8, err := vault.PKCS8() + if err != nil { + t.Error(err) + } + + vault.PublicKey, err = vault.GetRSAPublicKey(PKCS8) + if err != nil { + t.Error(err) + } + + vault.Fingerprint, err = vault.GenFingerprint(PKCS8) + if err != nil { + t.Error(err) + } + + if vault.Password, err = crypto.GenerateNonce(32); err != nil { + t.Error(err) + } + + // Skip vault.Create because we don't need/want to interact with an editor + in := []byte("The quick brown fox jumps over the lazy dog") + + out, err := aead.Encrypt(vault.Password, in, []byte(vault.Fingerprint)) + if err != nil { + t.Error(err) + } + + rescueStdout := os.Stdout // keep backup of the real stdout + r, w, _ := os.Pipe() + os.Stdout = w + + if err = vault.Close(out); err != nil { + t.Error(err) + } + + w.Close() + outStdout, _ := ioutil.ReadAll(r) + os.Stdout = rescueStdout + tmpfile, err := ioutil.TempFile("", "stdout") + if err != nil { + t.Error(err) + } + tmpfile.Write([]byte(outStdout)) + vault.vault = tmpfile.Name() + + plaintext, err := vault.View() + if err != nil { + t.Error(err) + } + + if !bytes.Equal(in, plaintext) { + t.Error("in != out") + } +} + func TestVaultNewFingerprint(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { expect(t, "ssh-vault", r.Header.Get("User-agent")) diff --git a/test_data/id_rsa.pub b/test_data/id_rsa.pub index 7a6ba76..c3618f2 100644 --- a/test_data/id_rsa.pub +++ b/test_data/id_rsa.pub @@ -1 +1,3 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDjjM4JEyg1T8j5YICtqslLNp2UGg80CppTM3ZYu73pEmDhMwbLfdhuI56AQZgWViFsF/7QHDJPcRY2Piu38b4kizTSM0QHEOC7CTo+vnzxptlKLGT1y2mcY1P9VXzCBMSWQN9/vGasgl/sUp1zcTvVT0CjjA6k1dJM6/+aDVtCsFa851VkwbeIsWl5BAHLyL+ur5BX93/BxYnRcYl7ooheuEWWokyWJ0IwEFToPMHAthTbDn1P17wYF43oscTORsFBfkP1JLBKHPDPJCGcBgQButL/srLJf6o44fScAYL99s1dQ/Qqv31aygDmwLdKEDldNnWEaJZ+iidEiIlPtAnLYGnVVA4u+NA2p3egrUrLWmpPjMX6XSb2VRHllzCcY4vZ4F2ud2TFaYG6N+9+vRCdxB+LFcHhm7ottI4vnC5P1bbMagjmFne0+TSKrAfMCw59eiQd8yZVMoE2yPXjFOQt6EOBvB4OHv1AaVt2q0PGqSkv5vIhgsKJWx/6IUj0Kz24hDiMipFb0jL3xstvizAllpC6yF26Ju/nwF03eJJGGxJjrxYd4P5/rY6SWY3yakiUN7pUBgUK2Ok3K3/+BTy5Aag8OXcvOZJumr2X2Wn9DweQeCRjC8UqFDKALqA/3vopZ2S59V4WOg3sV94hEig/KHLISNge1Uatn+qosK2sPw== test + + diff --git a/test_data/id_rsa.pub_extra_linebreak b/test_data/id_rsa.pub_extra_linebreak deleted file mode 100644 index 12781fb..0000000 --- a/test_data/id_rsa.pub_extra_linebreak +++ /dev/null @@ -1,4 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDjjM4JEyg1T8j5YICtqslLNp2UGg80CppTM3ZYu73pEmDhMwbLfdhuI56AQZgWViFsF/7QHDJPcRY2Piu38b4kizTSM0QHEOC7CTo+vnzxptlKLGT1y2mcY1P9VXzCBMSWQN9/vGasgl/sUp1zcTvVT0CjjA6k1dJM6/+aDVtCsFa851VkwbeIsWl5BAHLyL+ur5BX93/BxYnRcYl7ooheuEWWokyWJ0IwEFToPMHAthTbDn1P17wYF43oscTORsFBfkP1JLBKHPDPJCGcBgQButL/srLJf6o44fScAYL99s1dQ/Qqv31aygDmwLdKEDldNnWEaJZ+iidEiIlPtAnLYGnVVA4u+NA2p3egrUrLWmpPjMX6XSb2VRHllzCcY4vZ4F2ud2TFaYG6N+9+vRCdxB+LFcHhm7ottI4vnC5P1bbMagjmFne0+TSKrAfMCw59eiQd8yZVMoE2yPXjFOQt6EOBvB4OHv1AaVt2q0PGqSkv5vIhgsKJWx/6IUj0Kz24hDiMipFb0jL3xstvizAllpC6yF26Ju/nwF03eJJGGxJjrxYd4P5/rY6SWY3yakiUN7pUBgUK2Ok3K3/+BTy5Aag8OXcvOZJumr2X2Wn9DweQeCRjC8UqFDKALqA/3vopZ2S59V4WOg3sV94hEig/KHLISNge1Uatn+qosK2sPw== test - - -