PageRenderTime 1196ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/node_modules/node-cryptojs-aes/lib/enc-base64.js

https://github.com/dselmanovic/BearerJSDemo
JavaScript | 111 lines | 55 code | 13 blank | 43 comment | 10 complexity | 8f6e424438cb60c375829855e826f898 MD5 | raw file
Possible License(s): 0BSD, MIT, Apache-2.0
  1. var CryptoJS = require('./core').CryptoJS;
  2. /*
  3. CryptoJS v3.1.2
  4. code.google.com/p/crypto-js
  5. (c) 2009-2013 by Jeff Mott. All rights reserved.
  6. code.google.com/p/crypto-js/wiki/License
  7. */
  8. (function () {
  9. // Shortcuts
  10. var C = CryptoJS;
  11. var C_lib = C.lib;
  12. var WordArray = C_lib.WordArray;
  13. var C_enc = C.enc;
  14. /**
  15. * Base64 encoding strategy.
  16. */
  17. var Base64 = C_enc.Base64 = {
  18. /**
  19. * Converts a word array to a Base64 string.
  20. *
  21. * @param {WordArray} wordArray The word array.
  22. *
  23. * @return {string} The Base64 string.
  24. *
  25. * @static
  26. *
  27. * @example
  28. *
  29. * var base64String = CryptoJS.enc.Base64.stringify(wordArray);
  30. */
  31. stringify: function (wordArray) {
  32. // Shortcuts
  33. var words = wordArray.words;
  34. var sigBytes = wordArray.sigBytes;
  35. var map = this._map;
  36. // Clamp excess bits
  37. wordArray.clamp();
  38. // Convert
  39. var base64Chars = [];
  40. for (var i = 0; i < sigBytes; i += 3) {
  41. var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
  42. var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
  43. var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
  44. var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
  45. for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
  46. base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
  47. }
  48. }
  49. // Add padding
  50. var paddingChar = map.charAt(64);
  51. if (paddingChar) {
  52. while (base64Chars.length % 4) {
  53. base64Chars.push(paddingChar);
  54. }
  55. }
  56. return base64Chars.join('');
  57. },
  58. /**
  59. * Converts a Base64 string to a word array.
  60. *
  61. * @param {string} base64Str The Base64 string.
  62. *
  63. * @return {WordArray} The word array.
  64. *
  65. * @static
  66. *
  67. * @example
  68. *
  69. * var wordArray = CryptoJS.enc.Base64.parse(base64String);
  70. */
  71. parse: function (base64Str) {
  72. // Shortcuts
  73. var base64StrLength = base64Str.length;
  74. var map = this._map;
  75. // Ignore padding
  76. var paddingChar = map.charAt(64);
  77. if (paddingChar) {
  78. var paddingIndex = base64Str.indexOf(paddingChar);
  79. if (paddingIndex != -1) {
  80. base64StrLength = paddingIndex;
  81. }
  82. }
  83. // Convert
  84. var words = [];
  85. var nBytes = 0;
  86. for (var i = 0; i < base64StrLength; i++) {
  87. if (i % 4) {
  88. var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2);
  89. var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2);
  90. words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);
  91. nBytes++;
  92. }
  93. }
  94. return WordArray.create(words, nBytes);
  95. },
  96. _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
  97. };
  98. }());