github.com/jrperritt/terraform@v0.1.1-0.20170525065507-96f391dafc38/builtin/providers/aws/data_source_aws_kms_ciphertext.go (about) 1 package aws 2 3 import ( 4 "encoding/base64" 5 "log" 6 "time" 7 8 "github.com/aws/aws-sdk-go/aws" 9 "github.com/aws/aws-sdk-go/service/kms" 10 "github.com/hashicorp/terraform/helper/schema" 11 ) 12 13 func dataSourceAwsKmsCiphetext() *schema.Resource { 14 return &schema.Resource{ 15 Read: dataSourceAwsKmsCiphetextRead, 16 17 Schema: map[string]*schema.Schema{ 18 "plaintext": { 19 Type: schema.TypeString, 20 Required: true, 21 }, 22 23 "key_id": { 24 Type: schema.TypeString, 25 Required: true, 26 }, 27 28 "context": &schema.Schema{ 29 Type: schema.TypeMap, 30 Optional: true, 31 Elem: &schema.Schema{Type: schema.TypeString}, 32 }, 33 34 "ciphertext_blob": { 35 Type: schema.TypeString, 36 Computed: true, 37 }, 38 }, 39 } 40 } 41 42 func dataSourceAwsKmsCiphetextRead(d *schema.ResourceData, meta interface{}) error { 43 conn := meta.(*AWSClient).kmsconn 44 45 d.SetId(time.Now().UTC().String()) 46 47 req := &kms.EncryptInput{ 48 KeyId: aws.String(d.Get("key_id").(string)), 49 Plaintext: []byte(d.Get("plaintext").(string)), 50 } 51 52 if ec := d.Get("context"); ec != nil { 53 req.EncryptionContext = stringMapToPointers(ec.(map[string]interface{})) 54 } 55 56 log.Printf("[DEBUG] KMS encrypt for key: %s", d.Get("key_id").(string)) 57 58 resp, err := conn.Encrypt(req) 59 if err != nil { 60 return err 61 } 62 63 d.Set("ciphertext_blob", base64.StdEncoding.EncodeToString(resp.CiphertextBlob)) 64 65 return nil 66 }