diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/crypt/hmac.js')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/crypt/hmac.js | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/crypt/hmac.js b/contexts/data/lib/closure-library/closure/goog/crypt/hmac.js deleted file mode 100644 index 7d4cfb7..0000000 --- a/contexts/data/lib/closure-library/closure/goog/crypt/hmac.js +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2011 The Closure Library Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS-IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/** - * @fileoverview Implementation of HMAC in JavaScript. - * - * Usage: - * var hmac = new goog.crypt.Hmac(new goog.crypt.sha1(), key, 64); - * var digest = hmac.getHmac(bytes); - * - */ - - -goog.provide('goog.crypt.Hmac'); - -goog.require('goog.asserts'); -goog.require('goog.crypt.Hash'); - - - -/** - * @constructor - * @param {!goog.crypt.Hash} hasher An object to serve as a hash function. - * @param {Array.<number>} key The secret key to use to calculate the hmac. - * Should be an array of not more than {@code blockSize} integers in - {0, 255}. - * @param {number=} opt_blockSize Optional. The block size {@code hasher} uses. - * If not specified, 16. - * @extends {goog.crypt.Hash} - */ -goog.crypt.Hmac = function(hasher, key, opt_blockSize) { - goog.base(this); - - /** - * The underlying hasher to calculate hash. - * - * @type {!goog.crypt.Hash} - * @private - */ - this.hasher_ = hasher; - - /** - * The block size. - * - * @type {number} - * @private - */ - this.blockSize_ = opt_blockSize || 16; - - /** - * The outer padding array of hmac - * - * @type {!Array.<number>} - * @private - */ - this.keyO_ = new Array(this.blockSize_); - - /** - * The inner padding array of hmac - * - * @type {!Array.<number>} - * @private - */ - this.keyI_ = new Array(this.blockSize_); - - this.initialize_(key); -}; -goog.inherits(goog.crypt.Hmac, goog.crypt.Hash); - - -/** - * Outer padding byte of HMAC algorith, per http://en.wikipedia.org/wiki/HMAC - * - * @type {number} - * @private - */ -goog.crypt.Hmac.OPAD_ = 0x5c; - - -/** - * Inner padding byte of HMAC algorith, per http://en.wikipedia.org/wiki/HMAC - * - * @type {number} - * @private - */ -goog.crypt.Hmac.IPAD_ = 0x36; - - -/** - * Initializes Hmac by precalculating the inner and outer paddings. - * - * @param {Array.<number>} key The secret key to use to calculate the hmac. - * Should be an array of not more than {@code blockSize} integers in - {0, 255}. - * @private - */ -goog.crypt.Hmac.prototype.initialize_ = function(key) { - if (key.length > this.blockSize_) { - this.hasher_.update(key); - key = this.hasher_.digest(); - } - // Precalculate padded and xor'd keys. - var keyByte; - for (var i = 0; i < this.blockSize_; i++) { - if (i < key.length) { - keyByte = key[i]; - } else { - keyByte = 0; - } - this.keyO_[i] = keyByte ^ goog.crypt.Hmac.OPAD_; - this.keyI_[i] = keyByte ^ goog.crypt.Hmac.IPAD_; - } - // Be ready for an immediate update. - this.hasher_.update(this.keyI_); -}; - - -/** @override */ -goog.crypt.Hmac.prototype.reset = function() { - this.hasher_.reset(); - this.hasher_.update(this.keyI_); -}; - - -/** @override */ -goog.crypt.Hmac.prototype.update = function(bytes, opt_length) { - this.hasher_.update(bytes, opt_length); -}; - - -/** @override */ -goog.crypt.Hmac.prototype.digest = function() { - var temp = this.hasher_.digest(); - this.hasher_.reset(); - this.hasher_.update(this.keyO_); - this.hasher_.update(temp); - return this.hasher_.digest(); -}; - - -/** - * Calculates an HMAC for a given message. - * - * @param {Array.<number>} message An array of integers in {0, 255}. - * @return {Array} the digest of the given message. - */ -goog.crypt.Hmac.prototype.getHmac = function(message) { - this.reset(); - this.update(message); - return this.digest(); -}; - |