7
"launchpad.net/goamz/aws"
12
// ----------------------------------------------------------------------------
13
// Version 2 signing (http://goo.gl/RSRp5)
15
var b64 = base64.StdEncoding
17
func sign(auth aws.Auth, method, path string, params map[string]string, host string) {
18
params["AWSAccessKeyId"] = auth.AccessKey
19
params["SignatureVersion"] = "2"
20
params["SignatureMethod"] = "HmacSHA256"
23
for k, v := range params {
24
sarray = append(sarray, aws.Encode(k)+"="+aws.Encode(v))
26
sort.StringSlice(sarray).Sort()
27
joined := strings.Join(sarray, "&")
28
payload := method + "\n" + host + "\n" + path + "\n" + joined
29
hash := hmac.New(sha256.New, []byte(auth.SecretKey))
30
hash.Write([]byte(payload))
31
signature := make([]byte, b64.EncodedLen(hash.Size()))
32
b64.Encode(signature, hash.Sum(nil))
34
params["Signature"] = string(signature)