Subversion Repositories cryptochat

Rev

View as "text/javascript" | Blame | Last modification | View Log | RSS feed

  1. /*
  2. CryptoJS v3.1.2
  3. code.google.com/p/crypto-js
  4. (c) 2009-2013 by Jeff Mott. All rights reserved.
  5. code.google.com/p/crypto-js/wiki/License
  6. */
  7. /**
  8.  * Output Feedback block mode.
  9.  */
  10. CryptoJS.mode.OFB = (function () {
  11.     var OFB = CryptoJS.lib.BlockCipherMode.extend();
  12.  
  13.     var Encryptor = OFB.Encryptor = OFB.extend({
  14.         processBlock: function (words, offset) {
  15.             // Shortcuts
  16.             var cipher = this._cipher
  17.             var blockSize = cipher.blockSize;
  18.             var iv = this._iv;
  19.             var keystream = this._keystream;
  20.  
  21.             // Generate keystream
  22.             if (iv) {
  23.                 keystream = this._keystream = iv.slice(0);
  24.  
  25.                 // Remove IV for subsequent blocks
  26.                 this._iv = undefined;
  27.             }
  28.             cipher.encryptBlock(keystream, 0);
  29.  
  30.             // Encrypt
  31.             for (var i = 0; i < blockSize; i++) {
  32.                 words[offset + i] ^= keystream[i];
  33.             }
  34.         }
  35.     });
  36.  
  37.     OFB.Decryptor = Encryptor;
  38.  
  39.     return OFB;
  40. }());
  41.