OSDN Git Service

- add crypto-js library(for new hash access method).
[feedblog/feedblog.git] / js / crypto-js / components / enc-utf16.js
diff --git a/js/crypto-js/components/enc-utf16.js b/js/crypto-js/components/enc-utf16.js
new file mode 100644 (file)
index 0000000..295d24e
--- /dev/null
@@ -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);
+    }
+}());