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  }