1
1
package managed
2
2
3
3
import (
4
- "crypto/x509"
5
4
"encoding/base64"
6
- "encoding/pem"
7
- "errors"
8
5
"fmt"
9
6
"testing"
10
7
@@ -14,7 +11,10 @@ import (
14
11
15
12
// knownHostsFixture is known_hosts fixture in the expected
16
13
// format.
17
- var knownHostsFixture = `github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==`
14
+ var knownHostsFixture = `github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
15
+ github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
16
+ github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
17
+ `
18
18
19
19
func TestKnownHostsCallback (t * testing.T ) {
20
20
tests := []struct {
@@ -41,6 +41,17 @@ func TestKnownHostsCallback(t *testing.T) {
41
41
expectedHost : "github.com:22" ,
42
42
want : nil ,
43
43
},
44
+ {
45
+ // Test case to specifically detect a regression introduced in v0.25.0
46
+ // Ref: https://github.com/fluxcd/image-automation-controller/issues/378
47
+ name : "Match regardless of order of known_hosts" ,
48
+ host : "github.com" ,
49
+ knownHosts : []byte (knownHostsFixture ),
50
+ // Use ecdsa-sha2-nistp256 instead of ssh-rsa
51
+ hostkey : git2go.HostkeyCertificate {Kind : git2go .HostkeySHA256 , HashSHA256 : sha256Fingerprint ("p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM" )},
52
+ expectedHost : "github.com:22" ,
53
+ want : nil ,
54
+ },
44
55
{
45
56
name : "Hostname mismatch" ,
46
57
host : "github.com" ,
@@ -83,11 +94,3 @@ func sha256Fingerprint(in string) [32]byte {
83
94
copy (out [:], d )
84
95
return out
85
96
}
86
-
87
- func certificateFromPEM (pemBytes string ) (* x509.Certificate , error ) {
88
- block , _ := pem .Decode ([]byte (pemBytes ))
89
- if block == nil {
90
- return nil , errors .New ("failed to decode PEM" )
91
- }
92
- return x509 .ParseCertificate (block .Bytes )
93
- }
0 commit comments