in sigv4/internal/crypt.go [59:70]
func formCanonicalRequest(accessKeyId string, scope string, t time.Time, nonce string) string {
nonceHash := sha256.Sum256([]byte(nonce))
headers := []string{
"X-Amz-Algorithm=AWS4-HMAC-SHA256",
fmt.Sprintf("X-Amz-Credential=%s%%2F%s", accessKeyId, url.QueryEscape(scope)),
fmt.Sprintf("X-Amz-Date=%s", url.QueryEscape(t.Format("2006-01-02T15:04:05.000Z"))),
"X-Amz-Expires=900"}
sort.Strings(headers)
queryString := strings.Join(headers, "&")
return fmt.Sprintf("PUT\n/authenticate\n%s\nhost:cassandra\n\nhost\n%s", queryString, hex.EncodeToString(nonceHash[:]))
}