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 }