code: func (s *S3Uploader) buildAuthHeader(md5, headerTime, fileName string) (string, error) {
  	access, err := getAuthCredentials()
  	if err != nil {
  		return "", err
  	}
  
  	// Docs: http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
  	verStr := fmt.Sprintf("PUT\n%s\napplication/x-gzip\n%s\nx-amz-acl:%s\n/%s", md5, headerTime, s.permission,
  		path.Join(s.bucketName, fileName))
  	encodedStr := hmac.ComputeHmacSha1(verStr, access.SecretKey)
  	return fmt.Sprintf("AWS %s:%s", access.AccessKey, encodedStr), nil
  }
docs: // buildAuthHeader builds an authorization header for S3.