import Crypto from '@/utils/oss-upload/common/crypto/crypto.js.js';
(function() {
  // Shortcut
  var util = Crypto.util;
  Crypto.HMAC = function(hasher, message, key, options) {
    // Allow arbitrary length keys
    key = key.length > hasher._blocksize * 4 ?
      hasher(key, {
        asBytes: true
      }) :
      util.stringToBytes(key);
    // XOR keys with pad constants
    var okey = key,
      ikey = key.slice(0);
    for (var i = 0; i < hasher._blocksize * 4; i++) {
      okey[i] ^= 0x5C;
      ikey[i] ^= 0x36;
    }
    var hmacbytes = hasher(util.bytesToString(okey) +
      hasher(util.bytesToString(ikey) + message, {
        asString: true
      }), {
        asBytes: true
      });
    return options && options.asBytes ? hmacbytes :
      options && options.asString ? util.bytesToString(hmacbytes) :
      util.bytesToHex(hmacbytes);
  };
})();