ssh: add MultiAlgorithmSigner
MultiAlgorithmSigner allows to restrict client-side, server-side and certificate signing algorithms. Fixes golang/go#52132 Fixes golang/go#36261 Change-Id: I295092f1bba647327aaaf294f110e9157d294159 Reviewed-on: https://go-review.googlesource.com/c/crypto/+/508398 Reviewed-by: Filippo Valsorda <filippo@golang.org> Run-TryBot: Filippo Valsorda <filippo@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> Auto-Submit: Filippo Valsorda <filippo@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
committed by
Gopher Robot
parent
3f0842a464
commit
28c53ff63c
+34
-3
@@ -111,9 +111,9 @@ func TestKeySignVerify(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestKeySignWithAlgorithmVerify(t *testing.T) {
|
||||
for _, priv := range testSigners {
|
||||
if algorithmSigner, ok := priv.(AlgorithmSigner); !ok {
|
||||
t.Errorf("Signers constructed by ssh package should always implement the AlgorithmSigner interface: %T", priv)
|
||||
for k, priv := range testSigners {
|
||||
if algorithmSigner, ok := priv.(MultiAlgorithmSigner); !ok {
|
||||
t.Errorf("Signers %q constructed by ssh package should always implement the MultiAlgorithmSigner interface: %T", k, priv)
|
||||
} else {
|
||||
pub := priv.PublicKey()
|
||||
data := []byte("sign me")
|
||||
@@ -684,3 +684,34 @@ func TestSKKeys(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewSignerWithAlgos(t *testing.T) {
|
||||
algorithSigner, ok := testSigners["rsa"].(AlgorithmSigner)
|
||||
if !ok {
|
||||
t.Fatal("rsa test signer does not implement the AlgorithmSigner interface")
|
||||
}
|
||||
_, err := NewSignerWithAlgorithms(algorithSigner, nil)
|
||||
if err == nil {
|
||||
t.Error("signer with algos created with no algorithms")
|
||||
}
|
||||
|
||||
_, err = NewSignerWithAlgorithms(algorithSigner, []string{KeyAlgoED25519})
|
||||
if err == nil {
|
||||
t.Error("signer with algos created with invalid algorithms")
|
||||
}
|
||||
|
||||
_, err = NewSignerWithAlgorithms(algorithSigner, []string{CertAlgoRSASHA256v01})
|
||||
if err == nil {
|
||||
t.Error("signer with algos created with certificate algorithms")
|
||||
}
|
||||
|
||||
mas, err := NewSignerWithAlgorithms(algorithSigner, []string{KeyAlgoRSASHA256, KeyAlgoRSASHA512})
|
||||
if err != nil {
|
||||
t.Errorf("unable to create signer with valid algorithms: %v", err)
|
||||
}
|
||||
|
||||
_, err = NewSignerWithAlgorithms(mas, []string{KeyAlgoRSA})
|
||||
if err == nil {
|
||||
t.Error("signer with algos created with restricted algorithms")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user