go.crypto/ssh: introduce PublicKey interface type.
Public functions affected: -AgentKey.Key -AgentClient.SignRequest -ClientKeyring.Key -MarshalPublicKey -ParsePublicKey R=agl, jpsugar, jmpittman CC=golang-dev https://golang.org/cl/13642043
This commit is contained in:
committed by
Adam Langley
parent
6a743c56c7
commit
e62b2aead4
@@ -5,11 +5,6 @@
|
||||
package ssh
|
||||
|
||||
import (
|
||||
"crypto/dsa"
|
||||
"crypto/ecdsa"
|
||||
"crypto/elliptic"
|
||||
"crypto/rsa"
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -29,49 +24,3 @@ func TestSafeString(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user