/base/000_base/bower_components/cryptojslib/components/enc-utf16.js |
@@ -0,0 +1,135 @@ |
/* |
CryptoJS v3.1.2 |
code.google.com/p/crypto-js |
(c) 2009-2013 by Jeff Mott. All rights reserved. |
code.google.com/p/crypto-js/wiki/License |
*/ |
(function () { |
// Shortcuts |
var C = CryptoJS; |
var C_lib = C.lib; |
var WordArray = C_lib.WordArray; |
var C_enc = C.enc; |
|
/** |
* UTF-16 BE encoding strategy. |
*/ |
var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = { |
/** |
* Converts a word array to a UTF-16 BE string. |
* |
* @param {WordArray} wordArray The word array. |
* |
* @return {string} The UTF-16 BE string. |
* |
* @static |
* |
* @example |
* |
* var utf16String = CryptoJS.enc.Utf16.stringify(wordArray); |
*/ |
stringify: function (wordArray) { |
// Shortcuts |
var words = wordArray.words; |
var sigBytes = wordArray.sigBytes; |
|
// Convert |
var utf16Chars = []; |
for (var i = 0; i < sigBytes; i += 2) { |
var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff; |
utf16Chars.push(String.fromCharCode(codePoint)); |
} |
|
return utf16Chars.join(''); |
}, |
|
/** |
* Converts a UTF-16 BE string to a word array. |
* |
* @param {string} utf16Str The UTF-16 BE string. |
* |
* @return {WordArray} The word array. |
* |
* @static |
* |
* @example |
* |
* var wordArray = CryptoJS.enc.Utf16.parse(utf16String); |
*/ |
parse: function (utf16Str) { |
// Shortcut |
var utf16StrLength = utf16Str.length; |
|
// Convert |
var words = []; |
for (var i = 0; i < utf16StrLength; i++) { |
words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16); |
} |
|
return WordArray.create(words, utf16StrLength * 2); |
} |
}; |
|
/** |
* UTF-16 LE encoding strategy. |
*/ |
C_enc.Utf16LE = { |
/** |
* Converts a word array to a UTF-16 LE string. |
* |
* @param {WordArray} wordArray The word array. |
* |
* @return {string} The UTF-16 LE string. |
* |
* @static |
* |
* @example |
* |
* var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray); |
*/ |
stringify: function (wordArray) { |
// Shortcuts |
var words = wordArray.words; |
var sigBytes = wordArray.sigBytes; |
|
// Convert |
var utf16Chars = []; |
for (var i = 0; i < sigBytes; i += 2) { |
var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff); |
utf16Chars.push(String.fromCharCode(codePoint)); |
} |
|
return utf16Chars.join(''); |
}, |
|
/** |
* Converts a UTF-16 LE string to a word array. |
* |
* @param {string} utf16Str The UTF-16 LE string. |
* |
* @return {WordArray} The word array. |
* |
* @static |
* |
* @example |
* |
* var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str); |
*/ |
parse: function (utf16Str) { |
// Shortcut |
var utf16StrLength = utf16Str.length; |
|
// Convert |
var words = []; |
for (var i = 0; i < utf16StrLength; i++) { |
words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16)); |
} |
|
return WordArray.create(words, utf16StrLength * 2); |
} |
}; |
|
function swapEndian(word) { |
return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff); |
} |
}()); |