|
|
|
|
@ -1,6 +1,9 @@
|
|
|
|
|
package aws
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"crypto/hmac"
|
|
|
|
|
"crypto/sha256"
|
|
|
|
|
"encoding/base64"
|
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
"github.com/aws/aws-sdk-go/aws"
|
|
|
|
|
@ -32,6 +35,10 @@ func resourceAwsIamAccessKey() *schema.Resource {
|
|
|
|
|
Type: schema.TypeString,
|
|
|
|
|
Computed: true,
|
|
|
|
|
},
|
|
|
|
|
"ses_smtp_password": &schema.Schema{
|
|
|
|
|
Type: schema.TypeString,
|
|
|
|
|
Computed: true,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -55,6 +62,10 @@ func resourceAwsIamAccessKeyCreate(d *schema.ResourceData, meta interface{}) err
|
|
|
|
|
if err := d.Set("secret", createResp.AccessKey.SecretAccessKey); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
d.Set("ses_smtp_password",
|
|
|
|
|
sesSmtpPasswordFromSecretKey(createResp.AccessKey.SecretAccessKey))
|
|
|
|
|
|
|
|
|
|
return resourceAwsIamAccessKeyReadResult(d, &iam.AccessKeyMetadata{
|
|
|
|
|
AccessKeyId: createResp.AccessKey.AccessKeyId,
|
|
|
|
|
CreateDate: createResp.AccessKey.CreateDate,
|
|
|
|
|
@ -115,3 +126,19 @@ func resourceAwsIamAccessKeyDelete(d *schema.ResourceData, meta interface{}) err
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func sesSmtpPasswordFromSecretKey(key *string) string {
|
|
|
|
|
if key == nil {
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
version := byte(0x02)
|
|
|
|
|
message := []byte("SendRawEmail")
|
|
|
|
|
hmacKey := []byte(*key)
|
|
|
|
|
h := hmac.New(sha256.New, hmacKey)
|
|
|
|
|
h.Write(message)
|
|
|
|
|
rawSig := h.Sum(nil)
|
|
|
|
|
versionedSig := make([]byte, 0, len(rawSig)+1)
|
|
|
|
|
versionedSig = append(versionedSig, version)
|
|
|
|
|
versionedSig = append(versionedSig, rawSig...)
|
|
|
|
|
return base64.StdEncoding.EncodeToString(versionedSig)
|
|
|
|
|
}
|
|
|
|
|
|