hmac: function hmac()

in lib/util-browser.js [490:539]


        hmac: function hmac(key, string, digest, fn) {
            if (!digest) digest = 'binary';

            if (digest === 'buffer') {
                digest = undefined;
                // todo: 不支持 buffer 类型的 hash
                return "";
            }

            if (!fn) fn = 'sha256';

            if (typeof string != 'string') {
                //string = new Buffer(string);
                // todo: 目前只支持 string
                return "";
            }

            var shaObj;
            switch (fn) {
                case "md5":
                    // todo: 不支持 md5
                    return "";
                case "sha1":
                    shaObj = new jsSHA("SHA-1", "TEXT");
                    break;
                case "sha256":
                    shaObj = new jsSHA("SHA-256", "TEXT");
                    break;
                case "sha512":
                    shaObj = new jsSHA("SHA-512", "TEXT");
                    break;
                default:
                    return "";
            }

            shaObj.setHMACKey(key, "TEXT");

            shaObj.update(string);

            switch (digest) {
                case "binary":
                    return shaObj.getHMAC("BYTES");
                case "hex":
                    return shaObj.getHMAC("HEX");
                case "base64":
                    return shaObj.getHMAC("B64");
                default:
                    return "";
            }
        },