crypto-es
Version:
A cryptography algorithms library compatible with ES6 and TypeScript
1 lines • 4.26 kB
Source Map (JSON)
{"version":3,"file":"enc-utf16.mjs","names":["Utf16BE: Encoder","utf16Chars: string[]","words: number[]","Utf16: Encoder","Utf16LE: Encoder"],"sources":["../src/enc-utf16.ts"],"sourcesContent":["import {\n WordArray,\n Encoder,\n} from './core';\n\n/**\n * Swaps endian of a word\n * @param word - The word to swap\n * @returns The word with swapped endian\n */\nconst swapEndian = (word: number): number => ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\n/**\n * UTF-16 BE encoding strategy.\n */\nexport const Utf16BE: Encoder = {\n /**\n * Converts a word array to a UTF-16 BE string.\n *\n * @param wordArray - The word array.\n * @returns The UTF-16 BE string.\n *\n * @example\n * ```js\n * const utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n * ```\n */\n stringify(wordArray: WordArray): string {\n // Shortcuts\n const { words, sigBytes } = wordArray;\n\n // Convert\n const utf16Chars: string[] = [];\n for (let i = 0; i < sigBytes; i += 2) {\n const codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n utf16Chars.push(String.fromCharCode(codePoint));\n }\n\n return utf16Chars.join('');\n },\n\n /**\n * Converts a UTF-16 BE string to a word array.\n *\n * @param utf16Str - The UTF-16 BE string.\n * @returns The word array.\n *\n * @example\n * ```js\n * const wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n * ```\n */\n parse(utf16Str: string): WordArray {\n // Shortcut\n const utf16StrLength = utf16Str.length;\n\n // Convert\n const words: number[] = [];\n for (let i = 0; i < utf16StrLength; i += 1) {\n words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n }\n\n return WordArray.create(words, utf16StrLength * 2);\n },\n};\n\n/**\n * UTF-16 encoding strategy (defaults to UTF-16 BE).\n */\nexport const Utf16: Encoder = Utf16BE;\n\n/**\n * UTF-16 LE encoding strategy.\n */\nexport const Utf16LE: Encoder = {\n /**\n * Converts a word array to a UTF-16 LE string.\n *\n * @param wordArray - The word array.\n * @returns The UTF-16 LE string.\n *\n * @example\n * ```js\n * const utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n * ```\n */\n stringify(wordArray: WordArray): string {\n // Shortcuts\n const { words, sigBytes } = wordArray;\n\n // Convert\n const utf16Chars: string[] = [];\n for (let i = 0; i < sigBytes; i += 2) {\n const codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n utf16Chars.push(String.fromCharCode(codePoint));\n }\n\n return utf16Chars.join('');\n },\n\n /**\n * Converts a UTF-16 LE string to a word array.\n *\n * @param utf16Str - The UTF-16 LE string.\n * @returns The word array.\n *\n * @example\n * ```js\n * const wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n * ```\n */\n parse(utf16Str: string): WordArray {\n // Shortcut\n const utf16StrLength = utf16Str.length;\n\n // Convert\n const words: number[] = [];\n for (let i = 0; i < utf16StrLength; i += 1) {\n words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n }\n\n return WordArray.create(words, utf16StrLength * 2);\n },\n};"],"mappings":";;;;;;;;AAUA,MAAM,cAAc,SAA2B,QAAQ,IAAK,aAAgB,SAAS,IAAK;;;;AAK1F,MAAaA,UAAmB;CAY9B,UAAU,WAA8B;EAEtC,MAAM,EAAE,OAAO,UAAU,GAAG;EAG5B,MAAMC,aAAuB,EAAE;AAC/B,OAAK,IAAI,IAAI,GAAG,IAAI,UAAU,KAAK,GAAG;GACpC,MAAM,YAAa,MAAM,MAAM,OAAQ,KAAM,IAAI,IAAK,IAAM;AAC5D,cAAW,KAAK,OAAO,aAAa;EACrC;AAED,SAAO,WAAW,KAAK;CACxB;CAaD,MAAM,UAA6B;EAEjC,MAAM,iBAAiB,SAAS;EAGhC,MAAMC,QAAkB,EAAE;AAC1B,OAAK,IAAI,IAAI,GAAG,IAAI,gBAAgB,KAAK,EACvC,OAAM,MAAM,MAAM,SAAS,WAAW,MAAO,KAAM,IAAI,IAAK;AAG9D,SAAO,UAAU,OAAO,OAAO,iBAAiB;CACjD;CACF;;;;AAKD,MAAaC,QAAiB;;;;AAK9B,MAAaC,UAAmB;CAY9B,UAAU,WAA8B;EAEtC,MAAM,EAAE,OAAO,UAAU,GAAG;EAG5B,MAAMH,aAAuB,EAAE;AAC/B,OAAK,IAAI,IAAI,GAAG,IAAI,UAAU,KAAK,GAAG;GACpC,MAAM,YAAY,WAAY,MAAM,MAAM,OAAQ,KAAM,IAAI,IAAK,IAAM;AACvE,cAAW,KAAK,OAAO,aAAa;EACrC;AAED,SAAO,WAAW,KAAK;CACxB;CAaD,MAAM,UAA6B;EAEjC,MAAM,iBAAiB,SAAS;EAGhC,MAAMC,QAAkB,EAAE;AAC1B,OAAK,IAAI,IAAI,GAAG,IAAI,gBAAgB,KAAK,EACvC,OAAM,MAAM,MAAM,WAAW,SAAS,WAAW,MAAO,KAAM,IAAI,IAAK;AAGzE,SAAO,UAAU,OAAO,OAAO,iBAAiB;CACjD;CACF"}