github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/tls/provider.go (about) 1 package tls 2 3 import ( 4 "crypto/sha1" 5 "crypto/x509/pkix" 6 "encoding/hex" 7 "strings" 8 9 "github.com/hashicorp/terraform/helper/schema" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func Provider() terraform.ResourceProvider { 14 return &schema.Provider{ 15 ResourcesMap: map[string]*schema.Resource{ 16 "tls_private_key": resourcePrivateKey(), 17 "tls_locally_signed_cert": resourceLocallySignedCert(), 18 "tls_self_signed_cert": resourceSelfSignedCert(), 19 "tls_cert_request": resourceCertRequest(), 20 }, 21 } 22 } 23 24 func hashForState(value string) string { 25 if value == "" { 26 return "" 27 } 28 hash := sha1.Sum([]byte(strings.TrimSpace(value))) 29 return hex.EncodeToString(hash[:]) 30 } 31 32 func nameFromResourceData(nameMap map[string]interface{}) (*pkix.Name, error) { 33 result := &pkix.Name{} 34 35 if value := nameMap["common_name"]; value != nil { 36 result.CommonName = value.(string) 37 } 38 if value := nameMap["organization"]; value != nil { 39 result.Organization = []string{value.(string)} 40 } 41 if value := nameMap["organizational_unit"]; value != nil { 42 result.OrganizationalUnit = []string{value.(string)} 43 } 44 if value := nameMap["street_address"]; value != nil { 45 valueI := value.([]interface{}) 46 result.StreetAddress = make([]string, len(valueI)) 47 for i, vi := range valueI { 48 result.StreetAddress[i] = vi.(string) 49 } 50 } 51 if value := nameMap["locality"]; value != nil { 52 result.Locality = []string{value.(string)} 53 } 54 if value := nameMap["province"]; value != nil { 55 result.Province = []string{value.(string)} 56 } 57 if value := nameMap["country"]; value != nil { 58 result.Country = []string{value.(string)} 59 } 60 if value := nameMap["postal_code"]; value != nil { 61 result.PostalCode = []string{value.(string)} 62 } 63 if value := nameMap["serial_number"]; value != nil { 64 result.SerialNumber = value.(string) 65 } 66 67 return result, nil 68 } 69 70 var nameSchema *schema.Resource = &schema.Resource{ 71 Schema: map[string]*schema.Schema{ 72 "organization": &schema.Schema{ 73 Type: schema.TypeString, 74 Optional: true, 75 }, 76 "common_name": &schema.Schema{ 77 Type: schema.TypeString, 78 Optional: true, 79 }, 80 "organizational_unit": &schema.Schema{ 81 Type: schema.TypeString, 82 Optional: true, 83 }, 84 "street_address": &schema.Schema{ 85 Type: schema.TypeList, 86 Optional: true, 87 Elem: &schema.Schema{ 88 Type: schema.TypeString, 89 }, 90 }, 91 "locality": &schema.Schema{ 92 Type: schema.TypeString, 93 Optional: true, 94 }, 95 "province": &schema.Schema{ 96 Type: schema.TypeString, 97 Optional: true, 98 }, 99 "country": &schema.Schema{ 100 Type: schema.TypeString, 101 Optional: true, 102 }, 103 "postal_code": &schema.Schema{ 104 Type: schema.TypeString, 105 Optional: true, 106 }, 107 "serial_number": &schema.Schema{ 108 Type: schema.TypeString, 109 Optional: true, 110 }, 111 }, 112 }