in src/main/java/com/amazonaws/kinesisvideo/utils/AwsV4Signer.java [57:84]
public static URI sign(final URI uri, final String accessKey, final String secretKey,
final String sessionToken, final URI wssUri, final String region) {
final long dateMilli = new Date().getTime();
final String amzDate = getTimeStamp(dateMilli);
final String datestamp = getDateStamp(dateMilli);
final Map<String, String> queryParamsMap = buildQueryParamsMap(uri, accessKey, sessionToken, region, amzDate, datestamp);
final String canonicalQuerystring = getCanonicalizedQueryString(queryParamsMap);
final String canonicalRequest = getCanonicalRequest(uri, canonicalQuerystring);
final String stringToSign = signString(amzDate, createCredentialScope(region, datestamp), canonicalRequest);
final byte[] signatureKey = getSignatureKey(secretKey, datestamp, region, SERVICE);
final String signature = BinaryUtils.toHex(hmacSha256(stringToSign, signatureKey));
final String signedCanonicalQueryString = canonicalQuerystring + "&" + X_AMZ_SIGNATURE + "=" + signature;
URI uriResult = null;
try {
uriResult = new URI(wssUri.getScheme(),
wssUri.getRawAuthority(),
getCanonicalUri(uri),
signedCanonicalQueryString,
null);
} catch (URISyntaxException e) {
logger.error(e.getMessage());
}
return uriResult;
}