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;