65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
package logic
|
|
|
|
import (
|
|
//"crypto/x509"
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
//"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"sigs.k8s.io/yaml"
|
|
)
|
|
|
|
func TestCertChainChecker(t *testing.T) {
|
|
var err error
|
|
|
|
serviceCertBytes, err := os.ReadFile("testchain_a01.crt")
|
|
require.NoError(t, err)
|
|
require.NotZero(t, len(serviceCertBytes))
|
|
serviceCert, err := ParseEncodedCerificate(string(serviceCertBytes))
|
|
require.NoError(t, err)
|
|
require.NotNil(t, serviceCert)
|
|
|
|
certChain := make([]*CertificateCortege, 0)
|
|
for i := 1; i < 4; i++ {
|
|
certBytes, err := os.ReadFile(fmt.Sprintf("testchain_a%02d.crt", i))
|
|
require.NoError(t, err)
|
|
require.NotZero(t, len(certBytes))
|
|
|
|
cert, err := ParseEncodedCerificate(string(certBytes))
|
|
require.NoError(t, err)
|
|
require.NotNil(t, cert)
|
|
|
|
certCortege := &CertificateCortege{
|
|
CertString: string(certBytes),
|
|
CertObj: cert,
|
|
}
|
|
|
|
fmt.Printf("Subject: %s\n", cert.Subject.String())
|
|
fmt.Printf("Issuer: %s\n\n\n", cert.Issuer.String())
|
|
|
|
//expired := cert.NotAfter.Before(time.Now())
|
|
//require.False(t, expired)
|
|
|
|
certChain = append(certChain, certCortege)
|
|
}
|
|
|
|
topIssuerCN := serviceCert.Issuer.String()
|
|
|
|
resChain, err := CheckCertificateChain(topIssuerCN, certChain)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, resChain)
|
|
}
|
|
|
|
func printObj(label string, obj any) {
|
|
objBytes, _ := yaml.Marshal(obj)
|
|
objString := string(objBytes)
|
|
if strings.Count(objString, "\n") < 2 {
|
|
fmt.Printf("==== %s: %s\n", label, objString)
|
|
} else {
|
|
fmt.Printf("==== %s ::\n%s\n", label, objString)
|
|
}
|
|
}
|