~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/gopkg.in/amz.v3/exp/sns/sign.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package sns
 
2
 
 
3
import (
 
4
        "crypto/hmac"
 
5
        "crypto/sha256"
 
6
        "encoding/base64"
 
7
        "sort"
 
8
        "strings"
 
9
 
 
10
        "gopkg.in/amz.v3/aws"
 
11
)
 
12
 
 
13
var b64 = base64.StdEncoding
 
14
 
 
15
/*
 
16
func sign(auth aws.Auth, method, path string, params url.Values, headers http.Header) {
 
17
    var host string
 
18
    for k, v := range headers {
 
19
        k = strings.ToLower(k)
 
20
        switch k {
 
21
        case "host":
 
22
            host = v[0]
 
23
        }
 
24
    }
 
25
 
 
26
    params["AWSAccessKeyId"] = []string{auth.AccessKey}
 
27
    params["SignatureVersion"] = []string{"2"}
 
28
    params["SignatureMethod"] = []string{"HmacSHA256"}
 
29
 
 
30
    var sarry []string
 
31
    for k, v := range params {
 
32
        sarry = append(sarry, aws.Encode(k) + "=" + aws.Encode(v[0]))
 
33
    }
 
34
 
 
35
    sort.StringSlice(sarry).Sort()
 
36
    joined := strings.Join(sarry, "&")
 
37
 
 
38
    payload := strings.Join([]string{method, host, "/", joined}, "\n")
 
39
    hash := hmac.NewSHA256([]byte(auth.SecretKey))
 
40
    hash.Write([]byte(payload))
 
41
    signature := make([]byte, b64.EncodedLen(hash.Size()))
 
42
    b64.Encode(signature, hash.Sum())
 
43
 
 
44
    params["Signature"] = []string{"AWS " + string(signature)}
 
45
    println("Payload:", payload)
 
46
    println("Signature:", strings.Join(params["Signature"], "|"))
 
47
}*/
 
48
 
 
49
func sign(auth aws.Auth, method, path string, params map[string]string, host string) {
 
50
        params["AWSAccessKeyId"] = auth.AccessKey
 
51
        params["SignatureVersion"] = "2"
 
52
        params["SignatureMethod"] = "HmacSHA256"
 
53
 
 
54
        var sarray []string
 
55
        for k, v := range params {
 
56
                sarray = append(sarray, aws.Encode(k)+"="+aws.Encode(v))
 
57
        }
 
58
        sort.StringSlice(sarray).Sort()
 
59
        joined := strings.Join(sarray, "&")
 
60
        payload := method + "\n" + host + "\n" + path + "\n" + joined
 
61
        hash := hmac.New(sha256.New, []byte(auth.SecretKey))
 
62
        hash.Write([]byte(payload))
 
63
        signature := make([]byte, b64.EncodedLen(hash.Size()))
 
64
        b64.Encode(signature, hash.Sum(nil))
 
65
 
 
66
        params["Signature"] = string(signature)
 
67
}