46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
package certlib
|
|
|
|
import "testing"
|
|
|
|
var (
|
|
testCert1 = "testdata/cert1.pem"
|
|
testCert2 = "testdata/cert2.pem"
|
|
testPriv1 = "testdata/priv1.pem"
|
|
testPriv2 = "testdata/priv2.pem"
|
|
)
|
|
|
|
type testCase struct {
|
|
cert string
|
|
key string
|
|
match bool
|
|
}
|
|
|
|
var testCases = []testCase{
|
|
{"testdata/cert1.pem", "testdata/priv1.pem", true},
|
|
{"testdata/cert2.pem", "testdata/priv2.pem", true},
|
|
{"testdata/cert1.pem", "testdata/priv2.pem", false},
|
|
{"testdata/cert2.pem", "testdata/priv1.pem", false},
|
|
}
|
|
|
|
func TestMatchKeys(t *testing.T) {
|
|
for i, tc := range testCases {
|
|
cert, err := LoadCertificate(tc.cert)
|
|
if err != nil {
|
|
t.Fatalf("failed to load cert %d: %v", i, err)
|
|
}
|
|
|
|
priv, err := LoadPrivateKey(tc.key)
|
|
if err != nil {
|
|
t.Fatalf("failed to load key %d: %v", i, err)
|
|
}
|
|
|
|
ok, _ := MatchKeys(cert, priv)
|
|
switch {
|
|
case ok && !tc.match:
|
|
t.Fatalf("case %d: cert %s/key %s should not match", i, tc.cert, tc.key)
|
|
case !ok && tc.match:
|
|
t.Fatalf("case %d: cert %s/key %s should match", i, tc.cert, tc.key)
|
|
}
|
|
}
|
|
}
|