github.com/ztalab/ZACA@v0.0.1/pkg/caclient/examples/util/cert_parser.go (about)

     1  package util
     2  
     3  import (
     4  	"crypto/x509"
     5  	"encoding/pem"
     6  	"fmt"
     7  	"github.com/ztalab/ZACA/pkg/caclient"
     8  	"github.com/ztalab/ZACA/pkg/logger"
     9  	"github.com/ztalab/cfssl/helpers"
    10  )
    11  
    12  func ExtractCertFromExchanger(ex *caclient.Exchanger) {
    13  	logger := logger.Named("keypair-exporter")
    14  	tlsCert, err := ex.Transport.GetCertificate()
    15  	if err != nil {
    16  		logger.Errorf("TLS Certificate acquisition failed: %v", err)
    17  		return
    18  	}
    19  	cert := helpers.EncodeCertificatePEM(tlsCert.Leaf)
    20  	keyBytes, err := x509.MarshalPKCS8PrivateKey(tlsCert.PrivateKey)
    21  	if err != nil {
    22  		logger.Errorf("TLS certificate private key acquisition failed: %v", err)
    23  		return
    24  	}
    25  
    26  	key := pem.EncodeToMemory(&pem.Block{
    27  		Type:  "PRIVATE KEY",
    28  		Bytes: keyBytes,
    29  	})
    30  
    31  	trustCerts := ex.Transport.TrustStore.Certificates()
    32  	caCerts := make([][]byte, 0, len(trustCerts))
    33  
    34  	fmt.Println("--- CA Certificate Stared ---")
    35  	for _, caCert := range trustCerts {
    36  		caCertBytes := helpers.EncodeCertificatePEM(caCert)
    37  		caCerts = append(caCerts, caCertBytes)
    38  		fmt.Println("---\n", string(caCertBytes), "\n---")
    39  	}
    40  	fmt.Println("--- CA Certificate End ---")
    41  	fmt.Println()
    42  	fmt.Println()
    43  	fmt.Println()
    44  	fmt.Println()
    45  	fmt.Println()
    46  
    47  	fmt.Println("--- Private key Stared ---\n", string(key), "\n--- Private key End ---")
    48  	fmt.Println("--- Certificate Stared ---\n", string(cert), "\n--- Certificate End ---")
    49  }