var expires = "";
var signature = "";
var destUrl = "";
expires = int(getTickCount() / 1000) + timeout;
signature = getRequestSignature(
uCase(verb),
bucket,
objectKey,
expires
);
if (requestType EQ "ssl" OR requestType EQ "regular") {
destUrl = "http" & iif(requestType EQ "ssl", de("s"), de("")) & "://s3.amazonaws.com/#bucket#/#objectKey#?AWSAccessKeyId=#variables.awsKey#&Signature=#urlEncodedFormat(signature)#&Expires=#expires#";
} else if (requestType EQ "cname") {
destUrl = "http://#bucket#/#objectKey#?AWSAccessKeyId=#variables.awsKey#&Signature=#urlEncodedFormat(signature)#&Expires=#expires#";
} else { // vhost
destUrl = "http://#bucket#.s3.amazonaws.com/#objectKey#?AWSAccessKeyId=#variables.awsKey#&Signature=#urlEncodedFormat(signature)#&Expires=#expires#";
}
return destUrl;
var stringToSign = "";
var algo = "HmacSHA1";
var signingKey = "";
var mac = "";
var signature = "";
stringToSign = uCase(verb) & chr(10)
& contentMd5 & chr(10)
& contentType & chr(10)
& dateOrExpiration & chr(10)
& "/#bucket#/#objectKey#";
signingKey = createObject("java", "javax.crypto.spec.SecretKeySpec").init(variables.awsSecret.getBytes(), algo);
mac = createObject("java", "javax.crypto.Mac").getInstance(algo);
mac.init(signingKey);
signature = toBase64(mac.doFinal(stringToSign.getBytes()));
return signature;