title: Calculate HMAC-SHA1 Signature using JavaScript
body: <p>I am writing a JavaScript Client Application that needs to communicate with Server. I tried to implement the API, but i stuck on one method and I need help.</p>
  
  <p>Infect i don't know how to translate this from Java to JavaScript (I don't know where to find analog libraries written in javascript that are used in this method):</p>
  
  <pre><code>import java.security.SignatureException;
  import javax.crypto.Mac;
  import javax.crypto.spec.SecretKeySpec;
  
  /**
  * This class defines common routines for generating
  * authentication signatures for AWS requests.
  */
  public class Signature {
   private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
  
  
  /**
  * Computes RFC 2104-compliant HMAC signature.
  * * @param data
  * The data to be signed.
  * @param key
  * The signing key.
  * @return
  * The Base64-encoded RFC 2104-compliant HMAC signature.
  * @throws
  * java.security.SignatureException when signature generation fails
  */
  public static String calculateRFC2104HMAC(String data, String key)
  throws java.security.SignatureException
  {
     String result;
     try {
  
       // get an hmac_sha1 key from the raw key bytes
      SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
  
     // get an hmac_sha1 Mac instance and initialize with the signing key
     Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
     mac.init(signingKey);
  
     // compute the hmac on input data bytes
     byte[] rawHmac = mac.doFinal(data.getBytes());
  
     // base64-encode the hmac
     result = Encoding.EncodeBase64(rawHmac);
  
     } catch (Exception e) {
       throw new SignatureException("Failed to generate HMAC : " + e.getMessage());
     }
    return result;
   }
  }
  </code></pre>
  
  <p>This method is from AWS Documentations: 
  <a href="http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AuthJavaSampleHMACSignature.html" rel="nofollow">Java Sample Code for Calculating HMAC-SHA1 Signatures</a></p>
  
  <p>I am asking if someone can give me some references (websites) where I can find solution or analog libraries, written in javascript. </p>
  
  <p>I searched AWS Documentation and SDK for JavaScript and I couldn't find translation in JS.</p>
  
  <p>Thanks very much in advance.</p>