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")
 | 
						|
	}
 | 
						|
}
 |