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.  * ANSI X.923 padding strategy.
  9.  */
  10. CryptoJS.pad.AnsiX923 = {
  11.     pad: function (data, blockSize) {
  12.         // Shortcuts
  13.         var dataSigBytes = data.sigBytes;
  14.         var blockSizeBytes = blockSize * 4;
  15.  
  16.         // Count padding bytes
  17.         var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
  18.  
  19.         // Compute last byte position
  20.         var lastBytePos = dataSigBytes + nPaddingBytes - 1;
  21.  
  22.         // Pad
  23.         data.clamp();
  24.         data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);
  25.         data.sigBytes += nPaddingBytes;
  26.     },
  27.  
  28.     unpad: function (data) {
  29.         // Get number of padding bytes from last byte
  30.         var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;
  31.  
  32.         // Remove padding
  33.         data.sigBytes -= nPaddingBytes;
  34.     }
  35. };
  36.