github.com/Venafi/vcert/v5@v5.10.2/examples/firefly/main.go (about)

     1  package main
     2  
     3  import (
     4  	"crypto/x509/pkix"
     5  	"encoding/json"
     6  	"fmt"
     7  	"log"
     8  	"os"
     9  
    10  	"github.com/Venafi/vcert/v5"
    11  	"github.com/Venafi/vcert/v5/pkg/certificate"
    12  	"github.com/Venafi/vcert/v5/pkg/endpoint"
    13  	"github.com/Venafi/vcert/v5/pkg/util"
    14  )
    15  
    16  const (
    17  	name    = "example-firefly-certificate-client"
    18  	version = "v0.0.1"
    19  )
    20  
    21  func main() {
    22  	userAgent := fmt.Sprintf("%s/%s %s", name, version, util.DefaultUserAgent)
    23  	fireflyConfig := vcert.Config{
    24  		ConnectorType: endpoint.ConnectorTypeFirefly,
    25  		BaseUrl:       os.Getenv("FIREFLY_URL"),
    26  		Credentials: &endpoint.Authentication{
    27  			ClientId:     os.Getenv("FIREFLY_CLIENT_ID"),
    28  			ClientSecret: os.Getenv("FIREFLY_CLIENT_SECRET"),
    29  			IdentityProvider: &endpoint.OAuthProvider{
    30  				TokenURL: os.Getenv("FIREFLY_TOKEN_URL"),
    31  			},
    32  		},
    33  		Zone:      os.Getenv("FIREFLY_ZONE"),
    34  		UserAgent: &userAgent,
    35  	}
    36  
    37  	trustBundleFilePath := os.Getenv("FIREFLY_TRUST_BUNDLE_PATH")
    38  	if trustBundleFilePath != "" {
    39  		buf, err := os.ReadFile(trustBundleFilePath)
    40  		if err != nil {
    41  			panic(err)
    42  		}
    43  		fireflyConfig.ConnectionTrust = string(buf)
    44  	}
    45  
    46  	connector, err := vcert.NewClient(&fireflyConfig)
    47  	if err != nil {
    48  		log.Fatalf("error creating client: %s", err.Error())
    49  	}
    50  	request := &certificate.Request{
    51  		Subject: pkix.Name{
    52  			CommonName:         "common.name.venafi.example.com",
    53  			Organization:       []string{"Venafi.com"},
    54  			OrganizationalUnit: []string{"Integration Team"},
    55  			Locality:           []string{"Salt Lake"},
    56  			Province:           []string{"Salt Lake"},
    57  			Country:            []string{"US"},
    58  		},
    59  		DNSNames:  []string{"www.client.venafi.example.com", "ww1.client.venafi.example.com"},
    60  		CsrOrigin: certificate.ServiceGeneratedCSR,
    61  		KeyType:   certificate.KeyTypeECDSA,
    62  		KeyCurve:  certificate.EllipticCurveP256,
    63  	}
    64  
    65  	pcc, err := connector.SynchronousRequestCertificate(request)
    66  	if err != nil {
    67  		log.Fatalf("error requesting certificate: %s", err.Error())
    68  	}
    69  	pp(pcc)
    70  }
    71  
    72  var pp = func(a interface{}) {
    73  	b, err := json.MarshalIndent(a, "", "    ")
    74  	if err != nil {
    75  		fmt.Println("error: ", err)
    76  	}
    77  	log.Println(string(b))
    78  }