mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-06 22:18:28 +00:00
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package awsauth
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
func prepareRequestV2(request *http.Request, keys Credentials) *http.Request {
|
|
|
|
keyID := keys.AccessKeyID
|
|
|
|
values := url.Values{}
|
|
values.Set("AWSAccessKeyId", keyID)
|
|
values.Set("SignatureVersion", "2")
|
|
values.Set("SignatureMethod", "HmacSHA256")
|
|
values.Set("Timestamp", timestampV2())
|
|
|
|
augmentRequestQuery(request, values)
|
|
|
|
if request.URL.Path == "" {
|
|
request.URL.Path += "/"
|
|
}
|
|
|
|
return request
|
|
}
|
|
|
|
func stringToSignV2(request *http.Request) string {
|
|
str := request.Method + "\n"
|
|
str += strings.ToLower(request.URL.Host) + "\n"
|
|
str += request.URL.Path + "\n"
|
|
str += canonicalQueryStringV2(request)
|
|
return str
|
|
}
|
|
|
|
func signatureV2(strToSign string, keys Credentials) string {
|
|
hashed := hmacSHA256([]byte(keys.SecretAccessKey), strToSign)
|
|
return base64.StdEncoding.EncodeToString(hashed)
|
|
}
|
|
|
|
func canonicalQueryStringV2(request *http.Request) string {
|
|
return request.URL.RawQuery
|
|
}
|
|
|
|
func timestampV2() string {
|
|
return now().Format(timeFormatV2)
|
|
}
|
|
|
|
const timeFormatV2 = "2006-01-02T15:04:05"
|