| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // Copyright 2011 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package ssh
- import (
- "crypto/dsa"
- "crypto/ecdsa"
- "crypto/elliptic"
- "crypto/rsa"
- "errors"
- "testing"
- )
- func TestSafeString(t *testing.T) {
- strings := map[string]string{
- "\x20\x0d\x0a": "\x20\x0d\x0a",
- "flibble": "flibble",
- "new\x20line": "new\x20line",
- "123456\x07789": "123456 789",
- "\t\t\x10\r\n": "\t\t \r\n",
- }
- for s, expected := range strings {
- actual := safeString(s)
- if expected != actual {
- t.Errorf("expected: %v, actual: %v", []byte(expected), []byte(actual))
- }
- }
- }
- func TestAlgoNameSupported(t *testing.T) {
- supported := map[string]interface{}{
- KeyAlgoRSA: new(rsa.PublicKey),
- KeyAlgoDSA: new(dsa.PublicKey),
- KeyAlgoECDSA256: &ecdsa.PublicKey{Curve: elliptic.P256()},
- KeyAlgoECDSA384: &ecdsa.PublicKey{Curve: elliptic.P384()},
- KeyAlgoECDSA521: &ecdsa.PublicKey{Curve: elliptic.P521()},
- CertAlgoRSAv01: &OpenSSHCertV01{Key: new(rsa.PublicKey)},
- CertAlgoDSAv01: &OpenSSHCertV01{Key: new(dsa.PublicKey)},
- CertAlgoECDSA256v01: &OpenSSHCertV01{Key: &ecdsa.PublicKey{Curve: elliptic.P256()}},
- CertAlgoECDSA384v01: &OpenSSHCertV01{Key: &ecdsa.PublicKey{Curve: elliptic.P384()}},
- CertAlgoECDSA521v01: &OpenSSHCertV01{Key: &ecdsa.PublicKey{Curve: elliptic.P521()}},
- }
- for expected, key := range supported {
- actual := algoName(key)
- if expected != actual {
- t.Errorf("expected: %s, actual: %s", expected, actual)
- }
- }
- }
- func TestAlgoNameNotSupported(t *testing.T) {
- notSupported := []interface{}{
- &ecdsa.PublicKey{Curve: elliptic.P224()},
- &OpenSSHCertV01{Key: &ecdsa.PublicKey{Curve: elliptic.P224()}},
- }
- panicTest := func(key interface{}) (algo string, err error) {
- defer func() {
- if r := recover(); r != nil {
- err = errors.New(r.(string))
- }
- }()
- algo = algoName(key)
- return
- }
- for _, unsupportedKey := range notSupported {
- if algo, err := panicTest(unsupportedKey); err == nil {
- t.Errorf("Expected a panic, Got: %s (for type %T)", algo, unsupportedKey)
- }
- }
- }
|