in legacy/java/UrlInfo.java [134:187]
public static void main(String[] args) throws Exception {
if (args.length < 3) {
System.err.println("Usage: UrlInfo ACCESS_KEY_ID " +
"SECRET_ACCESS_KEY site");
System.exit(-1);
}
// Read command line parameters
String accessKey = args[0];
String secretKey = args[1];
String site = args[2];
UrlInfo urlInfo = new UrlInfo(accessKey, secretKey, site);
String canonicalQuery = "Action=" + "urlInfo" + "&ResponseGroup=" + URLEncoder.encode(RESPONSE_GROUP_NAME, "UTF-8") + "&Url=" + URLEncoder.encode(site, "UTF-8");
String canonicalHeaders = "host:" + SERVICE_ENDPOINT + "\n" + "x-amz-date:" + urlInfo.amzDate + "\n";
String signedHeaders = "host;x-amz-date";
String payloadHash = urlInfo.sha256("");
String canonicalRequest = "GET" + "\n" + SERVICE_URI + "\n" + canonicalQuery + "\n" + canonicalHeaders + "\n" + signedHeaders + "\n" + payloadHash;
// ************* TASK 2: CREATE THE STRING TO SIGN*************
// Match the algorithm to the hashing algorithm you use, either SHA-1 or
// SHA-256 (recommended)
String algorithm = "AWS4-HMAC-SHA256";
String credentialScope = urlInfo.dateStamp + "/" + SERVICE_REGION + "/" + SERVICE_NAME + "/" + "aws4_request";
String stringToSign = algorithm + '\n' + urlInfo.amzDate + '\n' + credentialScope + '\n' + urlInfo.sha256(canonicalRequest);
// ************* TASK 3: CALCULATE THE SIGNATURE *************
// Create the signing key
byte[] signingKey = urlInfo.getSignatureKey(secretKey, urlInfo.dateStamp, SERVICE_REGION, SERVICE_NAME);
// Sign the string_to_sign using the signing_key
String signature = bytesToHex(HmacSHA256(stringToSign, signingKey));
String uri = AWS_BASE_URL + "?" + canonicalQuery;
System.out.println("Making request to:\n");
System.out.println(uri + "\n");
// Make the Request
String authorization = algorithm + " " + "Credential=" + accessKey + "/" + credentialScope + ", " + "SignedHeaders=" + signedHeaders + ", " + "Signature=" + signature;
String xmlResponse = makeRequest(uri, authorization, urlInfo.amzDate);
// Print out the XML Response
System.out.println("Response:\n");
System.out.println(xmlResponse);
}