mirror of https://github.com/docker/docs.git
139 lines
3.7 KiB
Go
139 lines
3.7 KiB
Go
package trustmanager
|
|
|
|
import (
|
|
"crypto/x509"
|
|
"testing"
|
|
)
|
|
|
|
func TestVerifyLeafSuccessfully(t *testing.T) {
|
|
// Get root certificate
|
|
rootCA, err := LoadCertFromFile("../fixtures/root-ca.crt")
|
|
if err != nil {
|
|
t.Fatalf("couldn't load fixture: %v", err)
|
|
}
|
|
|
|
// Get intermediate certificate
|
|
intermediateCA, err := LoadCertFromFile("../fixtures/intermediate-ca.crt")
|
|
if err != nil {
|
|
t.Fatalf("couldn't load fixture: %v", err)
|
|
}
|
|
|
|
// Get leaf certificate
|
|
leafCert, err := LoadCertFromFile("../fixtures/secure.example.com.crt")
|
|
if err != nil {
|
|
t.Fatalf("couldn't load fixture: %v", err)
|
|
}
|
|
|
|
// Create a store and add the CA root
|
|
store := NewX509MemStore()
|
|
err = store.AddCert(rootCA)
|
|
if err != nil {
|
|
t.Fatalf("failed to load certificate from file: %v", err)
|
|
}
|
|
|
|
// Get our certList with Leaf Cert and Intermediate
|
|
certList := []*x509.Certificate{leafCert, intermediateCA}
|
|
|
|
// Try to find a valid chain for cert
|
|
err = Verify(store, "secure.example.com", certList)
|
|
if err != nil {
|
|
t.Fatalf("expected to find a valid chain for this certificate: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestVerifyLeafSuccessfullyWithMultipleIntermediates(t *testing.T) {
|
|
// Get root certificate
|
|
rootCA, err := LoadCertFromFile("../fixtures/root-ca.crt")
|
|
if err != nil {
|
|
t.Fatalf("couldn't load fixture: %v", err)
|
|
}
|
|
|
|
// Get intermediate certificate
|
|
intermediateCA, err := LoadCertFromFile("../fixtures/intermediate-ca.crt")
|
|
if err != nil {
|
|
t.Fatalf("couldn't load fixture: %v", err)
|
|
}
|
|
|
|
// Get leaf certificate
|
|
leafCert, err := LoadCertFromFile("../fixtures/secure.example.com.crt")
|
|
if err != nil {
|
|
t.Fatalf("couldn't load fixture: %v", err)
|
|
}
|
|
|
|
// Create a store and add the CA root
|
|
store := NewX509MemStore()
|
|
err = store.AddCert(rootCA)
|
|
if err != nil {
|
|
t.Fatalf("failed to load certificate from file: %v", err)
|
|
}
|
|
|
|
// Get our certList with Leaf Cert and Intermediate
|
|
certList := []*x509.Certificate{leafCert, intermediateCA, intermediateCA, rootCA}
|
|
|
|
// Try to find a valid chain for cert
|
|
err = Verify(store, "secure.example.com", certList)
|
|
if err != nil {
|
|
t.Fatalf("expected to find a valid chain for this certificate: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestVerifyLeafWithNoIntermediate(t *testing.T) {
|
|
// Get root certificate
|
|
rootCA, err := LoadCertFromFile("../fixtures/root-ca.crt")
|
|
if err != nil {
|
|
t.Fatalf("couldn't load fixture: %v", err)
|
|
}
|
|
|
|
// Get leaf certificate
|
|
leafCert, err := LoadCertFromFile("../fixtures/secure.example.com.crt")
|
|
if err != nil {
|
|
t.Fatalf("couldn't load fixture: %v", err)
|
|
}
|
|
|
|
// Create a store and add the CA root
|
|
store := NewX509MemStore()
|
|
err = store.AddCert(rootCA)
|
|
if err != nil {
|
|
t.Fatalf("failed to load certificate from file: %v", err)
|
|
}
|
|
|
|
// Get our certList with Leaf Cert and Intermediate
|
|
certList := []*x509.Certificate{leafCert, leafCert}
|
|
|
|
// Try to find a valid chain for cert
|
|
err = Verify(store, "secure.example.com", certList)
|
|
if err == nil {
|
|
t.Fatalf("expected error due to more than one leaf certificate")
|
|
}
|
|
}
|
|
|
|
func TestVerifyLeafWithNoLeaf(t *testing.T) {
|
|
// Get root certificate
|
|
rootCA, err := LoadCertFromFile("../fixtures/root-ca.crt")
|
|
if err != nil {
|
|
t.Fatalf("couldn't load fixture: %v", err)
|
|
}
|
|
|
|
// Get intermediate certificate
|
|
intermediateCA, err := LoadCertFromFile("../fixtures/intermediate-ca.crt")
|
|
if err != nil {
|
|
t.Fatalf("couldn't load fixture: %v", err)
|
|
}
|
|
|
|
// Create a store and add the CA root
|
|
store := NewX509MemStore()
|
|
err = store.AddCert(rootCA)
|
|
if err != nil {
|
|
t.Fatalf("failed to load certificate from file: %v", err)
|
|
}
|
|
|
|
// Get our certList with Leaf Cert and Intermediate
|
|
certList := []*x509.Certificate{intermediateCA, intermediateCA}
|
|
|
|
// Try to find a valid chain for cert
|
|
err = Verify(store, "secure.example.com", certList)
|
|
if err == nil {
|
|
t.Fatalf("expected error due to no leafs provided")
|
|
}
|
|
}
|