diff options
| author | Yasuhiro Matsumoto <mattn.jp@gmail.com> | 2017-02-02 15:10:04 +0900 |
|---|---|---|
| committer | Han-Wen Nienhuys <hanwen@google.com> | 2017-06-13 13:45:37 +0000 |
| commit | fea6c2c83557701d46ea1cc0ea4c8272632fa3bd (patch) | |
| tree | 376658d13e6c76c0bc69b8a5dfa8e4c0a73d3c6f /ssh/keys_test.go | |
| parent | e7ba82683099cae71475961448ab8f903ea77c26 (diff) | |
| download | go-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.go | 19 |
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 |
