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 }