aboutsummaryrefslogtreecommitdiff
path: root/ssh/keys_test.go
diff options
context:
space:
mode:
authorYasuhiro Matsumoto <mattn.jp@gmail.com>2017-02-02 15:10:04 +0900
committerHan-Wen Nienhuys <hanwen@google.com>2017-06-13 13:45:37 +0000
commitfea6c2c83557701d46ea1cc0ea4c8272632fa3bd (patch)
tree376658d13e6c76c0bc69b8a5dfa8e4c0a73d3c6f /ssh/keys_test.go
parente7ba82683099cae71475961448ab8f903ea77c26 (diff)
downloadgo-x-crypto-fea6c2c83557701d46ea1cc0ea4c8272632fa3bd.tar.xz
ssh: add ParsePrivateKeysWithPassphrase
ssh package doesn't provide way to parse private keys with passphrase. Fixes golang/go#18692 Change-Id: Ic139f11b6dfe7ef61690d6125e0673d50a48db16 Reviewed-on: https://go-review.googlesource.com/36079 Run-TryBot: Han-Wen Nienhuys <hanwen@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Han-Wen Nienhuys <hanwen@google.com>
Diffstat (limited to 'ssh/keys_test.go')
-rw-r--r--ssh/keys_test.go19
1 files changed, 19 insertions, 0 deletions
diff --git a/ssh/keys_test.go b/ssh/keys_test.go
index a65e87e..2bacc52 100644
--- a/ssh/keys_test.go
+++ b/ssh/keys_test.go
@@ -148,6 +148,25 @@ func TestParseEncryptedPrivateKeysFails(t *testing.T) {
}
}
+// Parse encrypted private keys with passphrase
+func TestParseEncryptedPrivateKeysWithPassphrase(t *testing.T) {
+ data := []byte("sign me")
+ for _, tt := range testdata.PEMEncryptedKeys {
+ s, err := ParsePrivateKeyWithPassphrase(tt.PEMBytes, []byte(tt.EncryptionKey))
+ if err != nil {
+ t.Fatalf("ParsePrivateKeyWithPassphrase returned error: %s", err)
+ continue
+ }
+ sig, err := s.Sign(rand.Reader, data)
+ if err != nil {
+ t.Fatalf("dsa.Sign: %v", err)
+ }
+ if err := s.PublicKey().Verify(data, sig); err != nil {
+ t.Errorf("Verify failed: %v", err)
+ }
+ }
+}
+
func TestParseDSA(t *testing.T) {
// We actually exercise the ParsePrivateKey codepath here, as opposed to
// using the ParseRawPrivateKey+NewSignerFromKey path that testdata_test.go