package com.appdynamics.monitors.azure.authenticator; import java.net.URL; import java.security.InvalidKeyException; import java.util.Map; import org.apache.log4j.Logger; public class BlobQueueSharedKeyAuth extends SharedKeyAuth { private static final Logger LOG = Logger.getLogger(BlobQueueSharedKeyAuth.class); public BlobQueueSharedKeyAuth(String accountName, String accountKey) { super(accountName, accountKey); } public String sign(String reqMethod, Map<String, String> headers, URL path) { String stringToSign = reqMethod + "\n" + "" + "\n" + "" + "\n" + "" + "\n" + "" + "\n" + "application/atom+xml" + "\n" + "" + "\n" + "" + "\n" + "" + "\n" + "" + "\n" + "" + "\n" + "" + "\n" + buildHeaders(headers); stringToSign += CanonicalizedResource.getCanonicalizedResource(path, getAccountName()); if (LOG.isDebugEnabled()) { LOG.debug(String.format("String to sign: \"%s\"", stringToSign)); } String signature = null; try { signature = this.getSigner().computeMacSha256(stringToSign); } catch (InvalidKeyException e) { LOG.error(e.getMessage(), e); throw new RuntimeException(e.getMessage(), e); } return "SharedKey " + this.getAccountName() + ":" + signature; } private String buildHeaders(Map<String, String> headers) { StringBuilder builder = new StringBuilder(); for(Map.Entry<String, String> entry : headers.entrySet()) { builder.append(entry.getKey()).append(":").append(entry.getValue()).append("\n"); } return builder.toString(); } }