authHeaderContent method
The Authentication
header content.
This builds the Authorization header content format used by AWS.
Implementation
@visibleForTesting
String authHeaderContent({
required DateTime now,
required String bucket,
required String path,
required String accessKeyId,
required String secretAccessKey,
}) {
// https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationExamples
String toSign = [
'GET',
'',
'',
now.toIso8601String(),
'/$bucket/$path',
].join('\n');
final utf8AKey = utf8.encode(secretAccessKey);
final utf8ToSign = utf8.encode(toSign);
final signature =
base64Encode(Hmac(sha1, utf8AKey).convert(utf8ToSign).bytes);
return 'AWS $accessKeyId:$signature';
}