summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/goamz/goamz/cloudfront
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/goamz/goamz/cloudfront')
-rw-r--r--vendor/github.com/goamz/goamz/cloudfront/cloudfront.go135
-rw-r--r--vendor/github.com/goamz/goamz/cloudfront/cloudfront_test.go52
-rw-r--r--vendor/github.com/goamz/goamz/cloudfront/testdata/key.pem15
-rw-r--r--vendor/github.com/goamz/goamz/cloudfront/testdata/key.pub6
4 files changed, 0 insertions, 208 deletions
diff --git a/vendor/github.com/goamz/goamz/cloudfront/cloudfront.go b/vendor/github.com/goamz/goamz/cloudfront/cloudfront.go
deleted file mode 100644
index 745060f1c..000000000
--- a/vendor/github.com/goamz/goamz/cloudfront/cloudfront.go
+++ /dev/null
@@ -1,135 +0,0 @@
-package cloudfront
-
-import (
- "crypto"
- "crypto/rand"
- "crypto/rsa"
- "crypto/sha1"
- "encoding/base64"
- "encoding/json"
- "fmt"
- "net/url"
- "strconv"
- "strings"
- "time"
-)
-
-type CloudFront struct {
- BaseURL string
- keyPairId string
- key *rsa.PrivateKey
-}
-
-var base64Replacer = strings.NewReplacer("=", "_", "+", "-", "/", "~")
-
-func New(baseurl string, key *rsa.PrivateKey, keyPairId string) *CloudFront {
- return &CloudFront{
- BaseURL: baseurl,
- keyPairId: keyPairId,
- key: key,
- }
-}
-
-type epochTime struct {
- EpochTime int64 `json:"AWS:EpochTime"`
-}
-
-type condition struct {
- DateLessThan epochTime
-}
-
-type statement struct {
- Resource string
- Condition condition
-}
-
-type policy struct {
- Statement []statement
-}
-
-func buildPolicy(resource string, expireTime time.Time) ([]byte, error) {
- p := &policy{
- Statement: []statement{
- statement{
- Resource: resource,
- Condition: condition{
- DateLessThan: epochTime{
- EpochTime: expireTime.Truncate(time.Millisecond).Unix(),
- },
- },
- },
- },
- }
-
- return json.Marshal(p)
-}
-
-func (cf *CloudFront) generateSignature(policy []byte) (string, error) {
- hash := sha1.New()
- if _, err := hash.Write(policy); err != nil {
- return "", err
- }
-
- hashed := hash.Sum(nil)
-
- signed, err := rsa.SignPKCS1v15(rand.Reader, cf.key, crypto.SHA1, hashed)
- if err != nil {
- return "", err
- }
-
- encoded := base64Replacer.Replace(base64.StdEncoding.EncodeToString(signed))
-
- return encoded, nil
-}
-
-// Creates a signed url using RSAwithSHA1 as specified by
-// http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-canned-policy.html#private-content-canned-policy-creating-signature
-func (cf *CloudFront) CannedSignedURL(path, queryString string, expires time.Time) (string, error) {
- resource := cf.BaseURL + path
- if queryString != "" {
- resource = path + "?" + queryString
- }
-
- policy, err := buildPolicy(resource, expires)
- if err != nil {
- return "", err
- }
-
- signature, err := cf.generateSignature(policy)
- if err != nil {
- return "", err
- }
-
- // TOOD: Do this once
- uri, err := url.Parse(cf.BaseURL)
- if err != nil {
- return "", err
- }
-
- uri.RawQuery = queryString
- if queryString != "" {
- uri.RawQuery += "&"
- }
-
- expireTime := expires.Truncate(time.Millisecond).Unix()
-
- uri.Path = path
- uri.RawQuery += fmt.Sprintf("Expires=%d&Signature=%s&Key-Pair-Id=%s", expireTime, signature, cf.keyPairId)
-
- return uri.String(), nil
-}
-
-func (cloudfront *CloudFront) SignedURL(path, querystrings string, expires time.Time) string {
- policy := `{"Statement":[{"Resource":"` + path + "?" + querystrings + `,"Condition":{"DateLessThan":{"AWS:EpochTime":` + strconv.FormatInt(expires.Truncate(time.Millisecond).Unix(), 10) + `}}}]}`
-
- hash := sha1.New()
- hash.Write([]byte(policy))
- b := hash.Sum(nil)
- he := base64.StdEncoding.EncodeToString(b)
-
- policySha1 := he
-
- url := cloudfront.BaseURL + path + "?" + querystrings + "&Expires=" + strconv.FormatInt(expires.Unix(), 10) + "&Signature=" + policySha1 + "&Key-Pair-Id=" + cloudfront.keyPairId
-
- return url
-}
diff --git a/vendor/github.com/goamz/goamz/cloudfront/cloudfront_test.go b/vendor/github.com/goamz/goamz/cloudfront/cloudfront_test.go
deleted file mode 100644
index 63744d1cb..000000000
--- a/vendor/github.com/goamz/goamz/cloudfront/cloudfront_test.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package cloudfront
-
-import (
- "crypto/x509"
- "encoding/pem"
- "io/ioutil"
- "net/url"
- "testing"
- "time"
-)
-
-func TestSignedCannedURL(t *testing.T) {
- rawKey, err := ioutil.ReadFile("testdata/key.pem")
- if err != nil {
- t.Fatal(err)
- }
-
- pemKey, _ := pem.Decode(rawKey)
- privateKey, err := x509.ParsePKCS1PrivateKey(pemKey.Bytes)
- if err != nil {
- t.Fatal(err)
- }
-
- cf := &CloudFront{
- key: privateKey,
- keyPairId: "test-key-pair-1231245",
- BaseURL: "https://cloudfront.com",
- }
-
- expireTime, err := time.Parse(time.RFC3339, "2014-03-28T14:00:21Z")
- if err != nil {
- t.Fatal(err)
- }
-
- query := make(url.Values)
- query.Add("test", "value")
-
- uri, err := cf.CannedSignedURL("test", "test=value", expireTime)
- if err != nil {
- t.Fatal(err)
- }
-
- parsed, err := url.Parse(uri)
- if err != nil {
- t.Fatal(err)
- }
-
- signature := parsed.Query().Get("Signature")
- if signature == "" {
- t.Fatal("Encoded signature is empty")
- }
-}
diff --git a/vendor/github.com/goamz/goamz/cloudfront/testdata/key.pem b/vendor/github.com/goamz/goamz/cloudfront/testdata/key.pem
deleted file mode 100644
index 96e820a2c..000000000
--- a/vendor/github.com/goamz/goamz/cloudfront/testdata/key.pem
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQC0yMzp9DkPAE99DhsEaGkqougLvtmDKri4bZj0fFjmGmjyyjz9
-hlrsr87LHVWzH/7igK7040HG1UqypX3ijtJa9+6BKHwBBctboU3y4GfwFwVAOumY
-9UytFpyPlgUFrffZLQAywKkT24OgcfEj0G5kiQn760wFnmSUtOuITo708QIDAQAB
-AoGAJUA6+PoZx72Io3wElSPuh5qJteHdb+mdpmLu4XG936wRc/W4G4VTtvGC6tdg
-kUhGfOWHJ26sXwwUGDuBdO146m0DkBTuIooy97afpL6hXgL5v4ELHbbuFJcf4Geg
-/UAuexvRT1HenYFQ/iXM0LlqI33i8cFRc1A+j0Gseo07gAECQQDYFCn7OUokX+Q8
-M2Cwhu7JT1obmP2HwsBtXl0CDDxtOQkuYJP/UqvtdYPz/kRn3yQjoynaCTHYrFz/
-H8oN1nNhAkEA1i9TEpo7RbanIyT4vbc1/5xfjE7Pj0lnGku0QXFp/S+8YxbqhjrQ
-4Qp7TTXIPPqvQhhEpAGGspM460K3F6h7kQJBANJCbMeFa9wRY2ohJIkiA+HoUWph
-aPNeUxkZpa+EcJhn08NJPzpIG/ypSYl3duEMhYIYF3WPVO3ea2/mYxsr/oECQFj5
-td/fdEoEk7AU1sQxDNyPwF2QC8dxbcRNuKcLD0Wfg/oB9hEm88jYytoLQpCabx3c
-6P7cp3EdmaKZx2erlRECQDYTSK2tS0+VoXSV9JbU08Pbu53j3Zhmp4l0csP+l7EU
-U+rRQzKho4X9vpR/VpRGXbw8tTIhojNpHh5ofryVfgk=
------END RSA PRIVATE KEY-----
diff --git a/vendor/github.com/goamz/goamz/cloudfront/testdata/key.pub b/vendor/github.com/goamz/goamz/cloudfront/testdata/key.pub
deleted file mode 100644
index 7d0b5b4d6..000000000
--- a/vendor/github.com/goamz/goamz/cloudfront/testdata/key.pub
+++ /dev/null
@@ -1,6 +0,0 @@
------BEGIN PUBLIC KEY-----
-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0yMzp9DkPAE99DhsEaGkqougL
-vtmDKri4bZj0fFjmGmjyyjz9hlrsr87LHVWzH/7igK7040HG1UqypX3ijtJa9+6B
-KHwBBctboU3y4GfwFwVAOumY9UytFpyPlgUFrffZLQAywKkT24OgcfEj0G5kiQn7
-60wFnmSUtOuITo708QIDAQAB
------END PUBLIC KEY-----