pdfjs-dist 2.0.489 → 2.2.228

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pdfjs-dist might be problematic. Click here for more details.

Files changed (169) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +18515 -11402
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +1 -1
  6. package/build/pdf.worker.js +48266 -37137
  7. package/build/pdf.worker.js.map +1 -1
  8. package/build/pdf.worker.min.js +1 -1
  9. package/external/url/url-lib.js +627 -0
  10. package/image_decoders/pdf.image_decoders.js +11350 -0
  11. package/image_decoders/pdf.image_decoders.js.map +1 -0
  12. package/image_decoders/pdf.image_decoders.min.js +1 -0
  13. package/lib/core/annotation.js +587 -242
  14. package/lib/core/arithmetic_decoder.js +275 -245
  15. package/lib/core/bidi.js +65 -6
  16. package/lib/core/ccitt.js +173 -18
  17. package/lib/core/ccitt_stream.js +15 -6
  18. package/lib/core/cff_parser.js +433 -61
  19. package/lib/core/charsets.js +5 -4
  20. package/lib/core/chunked_stream.js +400 -152
  21. package/lib/core/cmap.js +326 -87
  22. package/lib/core/colorspace.js +874 -594
  23. package/lib/core/core_utils.js +147 -0
  24. package/lib/core/crypto.js +290 -45
  25. package/lib/core/document.js +560 -268
  26. package/lib/core/encodings.js +19 -10
  27. package/lib/core/evaluator.js +1005 -360
  28. package/lib/core/font_renderer.js +331 -97
  29. package/lib/core/fonts.js +812 -195
  30. package/lib/core/function.js +284 -71
  31. package/lib/core/glyphlist.js +4 -3
  32. package/lib/core/image.js +169 -62
  33. package/lib/core/image_utils.js +111 -0
  34. package/lib/core/jbig2.js +479 -66
  35. package/lib/core/jbig2_stream.js +19 -8
  36. package/lib/core/jpeg_stream.js +38 -13
  37. package/lib/core/jpg.js +253 -29
  38. package/lib/core/jpx.js +396 -6
  39. package/lib/core/jpx_stream.js +18 -6
  40. package/lib/core/metrics.js +15 -15
  41. package/lib/core/murmurhash3.js +56 -34
  42. package/lib/core/obj.js +1354 -488
  43. package/lib/core/operator_list.js +144 -31
  44. package/lib/core/parser.js +539 -191
  45. package/lib/core/pattern.js +148 -14
  46. package/lib/core/pdf_manager.js +323 -133
  47. package/lib/core/primitives.js +111 -24
  48. package/lib/core/ps_parser.js +134 -45
  49. package/lib/core/standard_fonts.js +17 -17
  50. package/lib/core/stream.js +313 -34
  51. package/lib/core/type1_parser.js +143 -13
  52. package/lib/core/unicode.js +32 -5
  53. package/lib/core/worker.js +217 -190
  54. package/lib/core/worker_stream.js +277 -0
  55. package/lib/display/annotation_layer.js +450 -133
  56. package/lib/display/api.js +1597 -784
  57. package/lib/display/api_compatibility.js +11 -13
  58. package/lib/display/canvas.js +360 -44
  59. package/lib/display/content_disposition.js +83 -32
  60. package/lib/display/display_utils.js +747 -0
  61. package/lib/display/fetch_stream.js +221 -90
  62. package/lib/display/font_loader.js +468 -236
  63. package/lib/display/metadata.js +38 -16
  64. package/lib/display/network.js +635 -428
  65. package/lib/display/network_utils.js +32 -19
  66. package/lib/display/node_stream.js +367 -175
  67. package/lib/display/pattern_helper.js +81 -31
  68. package/lib/display/svg.js +1235 -519
  69. package/lib/display/text_layer.js +153 -29
  70. package/lib/display/transport_stream.js +345 -94
  71. package/lib/display/webgl.js +64 -18
  72. package/lib/display/worker_options.js +5 -4
  73. package/lib/display/xml_parser.js +166 -53
  74. package/lib/examples/node/domstubs.js +60 -4
  75. package/lib/pdf.js +36 -14
  76. package/lib/pdf.worker.js +5 -3
  77. package/lib/shared/compatibility.js +158 -564
  78. package/lib/shared/global_scope.js +2 -2
  79. package/lib/shared/is_node.js +4 -4
  80. package/lib/shared/message_handler.js +521 -0
  81. package/lib/shared/streams_polyfill.js +21 -17
  82. package/lib/shared/url_polyfill.js +56 -0
  83. package/lib/shared/util.js +243 -710
  84. package/lib/test/unit/annotation_spec.js +870 -401
  85. package/lib/test/unit/api_spec.js +657 -345
  86. package/lib/test/unit/bidi_spec.js +7 -7
  87. package/lib/test/unit/cff_parser_spec.js +54 -11
  88. package/lib/test/unit/clitests_helper.js +10 -8
  89. package/lib/test/unit/cmap_spec.js +95 -41
  90. package/lib/test/unit/colorspace_spec.js +115 -63
  91. package/lib/test/unit/core_utils_spec.js +191 -0
  92. package/lib/test/unit/crypto_spec.js +17 -5
  93. package/lib/test/unit/custom_spec.js +43 -55
  94. package/lib/test/unit/display_svg_spec.js +34 -18
  95. package/lib/test/unit/display_utils_spec.js +273 -0
  96. package/lib/test/unit/document_spec.js +8 -13
  97. package/lib/test/unit/encodings_spec.js +25 -45
  98. package/lib/test/unit/evaluator_spec.js +38 -15
  99. package/lib/test/unit/fetch_stream_spec.js +109 -0
  100. package/lib/test/unit/function_spec.js +17 -5
  101. package/lib/test/unit/jasmine-boot.js +33 -20
  102. package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
  103. package/lib/test/unit/metadata_spec.js +71 -11
  104. package/lib/test/unit/murmurhash3_spec.js +3 -3
  105. package/lib/test/unit/network_spec.js +19 -54
  106. package/lib/test/unit/network_utils_spec.js +91 -14
  107. package/lib/test/unit/node_stream_spec.js +56 -32
  108. package/lib/test/unit/parser_spec.js +162 -71
  109. package/lib/test/unit/pdf_find_controller_spec.js +230 -0
  110. package/lib/test/unit/pdf_find_utils_spec.js +63 -0
  111. package/lib/test/unit/pdf_history_spec.js +21 -9
  112. package/lib/test/unit/primitives_spec.js +53 -20
  113. package/lib/test/unit/stream_spec.js +12 -4
  114. package/lib/test/unit/test_utils.js +273 -56
  115. package/lib/test/unit/testreporter.js +21 -3
  116. package/lib/test/unit/type1_parser_spec.js +8 -6
  117. package/lib/test/unit/ui_utils_spec.js +454 -16
  118. package/lib/test/unit/unicode_spec.js +18 -15
  119. package/lib/test/unit/util_spec.js +87 -128
  120. package/lib/web/annotation_layer_builder.js +39 -22
  121. package/lib/web/app.js +1290 -588
  122. package/lib/web/app_options.js +100 -62
  123. package/lib/web/base_viewer.js +511 -182
  124. package/lib/web/chromecom.js +261 -117
  125. package/lib/web/debugger.js +166 -22
  126. package/lib/web/download_manager.js +32 -13
  127. package/lib/web/firefox_print_service.js +20 -10
  128. package/lib/web/firefoxcom.js +315 -80
  129. package/lib/web/genericcom.js +89 -30
  130. package/lib/web/genericl10n.js +142 -30
  131. package/lib/web/grab_to_pan.js +28 -4
  132. package/lib/web/interfaces.js +170 -47
  133. package/lib/web/overlay_manager.js +235 -85
  134. package/lib/web/password_prompt.js +22 -14
  135. package/lib/web/pdf_attachment_viewer.js +38 -18
  136. package/lib/web/pdf_cursor_tools.js +39 -16
  137. package/lib/web/pdf_document_properties.js +255 -136
  138. package/lib/web/pdf_find_bar.js +84 -40
  139. package/lib/web/pdf_find_controller.js +495 -184
  140. package/lib/web/pdf_find_utils.js +111 -0
  141. package/lib/web/pdf_history.js +190 -53
  142. package/lib/web/pdf_link_service.js +138 -77
  143. package/lib/web/pdf_outline_viewer.js +122 -46
  144. package/lib/web/pdf_page_view.js +191 -67
  145. package/lib/web/pdf_presentation_mode.js +99 -34
  146. package/lib/web/pdf_print_service.js +61 -13
  147. package/lib/web/pdf_rendering_queue.js +28 -9
  148. package/lib/web/pdf_sidebar.js +141 -81
  149. package/lib/web/pdf_sidebar_resizer.js +42 -16
  150. package/lib/web/pdf_single_page_viewer.js +74 -66
  151. package/lib/web/pdf_thumbnail_view.js +104 -33
  152. package/lib/web/pdf_thumbnail_viewer.js +66 -26
  153. package/lib/web/pdf_viewer.component.js +112 -32
  154. package/lib/web/pdf_viewer.js +91 -52
  155. package/lib/web/preferences.js +284 -89
  156. package/lib/web/secondary_toolbar.js +165 -40
  157. package/lib/web/text_layer_builder.js +134 -59
  158. package/lib/web/toolbar.js +78 -43
  159. package/lib/web/ui_utils.js +462 -136
  160. package/lib/web/view_history.js +215 -67
  161. package/lib/web/viewer_compatibility.js +4 -13
  162. package/package.json +5 -4
  163. package/web/pdf_viewer.css +79 -11
  164. package/web/pdf_viewer.js +6107 -3748
  165. package/web/pdf_viewer.js.map +1 -1
  166. package/lib/display/dom_utils.js +0 -309
  167. package/lib/test/unit/dom_utils_spec.js +0 -89
  168. package/lib/test/unit/fonts_spec.js +0 -81
  169. package/lib/web/dom_events.js +0 -137
@@ -2,7 +2,7 @@
2
2
  * @licstart The following is the entire license notice for the
3
3
  * Javascript code in this page
4
4
  *
5
- * Copyright 2017 Mozilla Foundation
5
+ * Copyright 2019 Mozilla Foundation
6
6
  *
7
7
  * Licensed under the Apache License, Version 2.0 (the "License");
8
8
  * you may not use this file except in compliance with the License.
@@ -19,27 +19,37 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = undefined;
27
+ exports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0;
28
28
 
29
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
29
+ var _util = require("../shared/util");
30
30
 
31
- var _util = require('../shared/util');
31
+ var _primitives = require("./primitives");
32
32
 
33
- var _primitives = require('./primitives');
33
+ var _stream = require("./stream");
34
34
 
35
- var _stream = require('./stream');
35
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
36
36
 
37
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
37
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
38
38
 
39
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
39
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
40
+
41
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
42
+
43
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
44
+
45
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
40
46
 
41
47
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
42
48
 
49
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
50
+
51
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
52
+
43
53
  var ARCFourCipher = function ARCFourCipherClosure() {
44
54
  function ARCFourCipher(key) {
45
55
  this.a = 0;
@@ -49,17 +59,21 @@ var ARCFourCipher = function ARCFourCipherClosure() {
49
59
  j = 0,
50
60
  tmp,
51
61
  keyLength = key.length;
62
+
52
63
  for (i = 0; i < 256; ++i) {
53
64
  s[i] = i;
54
65
  }
66
+
55
67
  for (i = 0; i < 256; ++i) {
56
68
  tmp = s[i];
57
69
  j = j + tmp + key[i % keyLength] & 0xFF;
58
70
  s[i] = s[j];
59
71
  s[j] = tmp;
60
72
  }
73
+
61
74
  this.s = s;
62
75
  }
76
+
63
77
  ARCFourCipher.prototype = {
64
78
  encryptBlock: function ARCFourCipher_encryptBlock(data) {
65
79
  var i,
@@ -70,6 +84,7 @@ var ARCFourCipher = function ARCFourCipherClosure() {
70
84
  b = this.b,
71
85
  s = this.s;
72
86
  var output = new Uint8Array(n);
87
+
73
88
  for (i = 0; i < n; ++i) {
74
89
  a = a + 1 & 0xFF;
75
90
  tmp = s[a];
@@ -79,6 +94,7 @@ var ARCFourCipher = function ARCFourCipherClosure() {
79
94
  s[b] = tmp;
80
95
  output[i] = data[i] ^ s[tmp + tmp2 & 0xFF];
81
96
  }
97
+
82
98
  this.a = a;
83
99
  this.b = b;
84
100
  return output;
@@ -87,9 +103,13 @@ var ARCFourCipher = function ARCFourCipherClosure() {
87
103
  ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;
88
104
  return ARCFourCipher;
89
105
  }();
106
+
107
+ exports.ARCFourCipher = ARCFourCipher;
108
+
90
109
  var calculateMD5 = function calculateMD5Closure() {
91
110
  var r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);
92
111
  var k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);
112
+
93
113
  function hash(data, offset, length) {
94
114
  var h0 = 1732584193,
95
115
  h1 = -271733879,
@@ -98,14 +118,18 @@ var calculateMD5 = function calculateMD5Closure() {
98
118
  var paddedLength = length + 72 & ~63;
99
119
  var padded = new Uint8Array(paddedLength);
100
120
  var i, j, n;
121
+
101
122
  for (i = 0; i < length; ++i) {
102
123
  padded[i] = data[offset++];
103
124
  }
125
+
104
126
  padded[i++] = 0x80;
105
127
  n = paddedLength - 8;
128
+
106
129
  while (i < n) {
107
130
  padded[i++] = 0;
108
131
  }
132
+
109
133
  padded[i++] = length << 3 & 0xFF;
110
134
  padded[i++] = length >> 5 & 0xFF;
111
135
  padded[i++] = length >> 13 & 0xFF;
@@ -115,16 +139,19 @@ var calculateMD5 = function calculateMD5Closure() {
115
139
  padded[i++] = 0;
116
140
  padded[i++] = 0;
117
141
  var w = new Int32Array(16);
142
+
118
143
  for (i = 0; i < paddedLength;) {
119
144
  for (j = 0; j < 16; ++j, i += 4) {
120
145
  w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24;
121
146
  }
147
+
122
148
  var a = h0,
123
149
  b = h1,
124
150
  c = h2,
125
151
  d = h3,
126
152
  f,
127
153
  g;
154
+
128
155
  for (j = 0; j < 64; ++j) {
129
156
  if (j < 16) {
130
157
  f = b & c | ~b & d;
@@ -139,6 +166,7 @@ var calculateMD5 = function calculateMD5Closure() {
139
166
  f = c ^ (b | ~d);
140
167
  g = 7 * j & 15;
141
168
  }
169
+
142
170
  var tmp = d,
143
171
  rotateArg = a + f + k[j] + w[g] | 0,
144
172
  rotate = r[j];
@@ -147,20 +175,27 @@ var calculateMD5 = function calculateMD5Closure() {
147
175
  b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0;
148
176
  a = tmp;
149
177
  }
178
+
150
179
  h0 = h0 + a | 0;
151
180
  h1 = h1 + b | 0;
152
181
  h2 = h2 + c | 0;
153
182
  h3 = h3 + d | 0;
154
183
  }
184
+
155
185
  return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);
156
186
  }
187
+
157
188
  return hash;
158
189
  }();
190
+
191
+ exports.calculateMD5 = calculateMD5;
192
+
159
193
  var Word64 = function Word64Closure() {
160
194
  function Word64(highInteger, lowInteger) {
161
195
  this.high = highInteger | 0;
162
196
  this.low = lowInteger | 0;
163
197
  }
198
+
164
199
  Word64.prototype = {
165
200
  and: function Word64_and(word) {
166
201
  this.high &= word.high;
@@ -194,6 +229,7 @@ var Word64 = function Word64Closure() {
194
229
  },
195
230
  rotateRight: function Word64_rotateRight(places) {
196
231
  var low, high;
232
+
197
233
  if (places & 32) {
198
234
  high = this.low;
199
235
  low = this.high;
@@ -201,6 +237,7 @@ var Word64 = function Word64Closure() {
201
237
  low = this.low;
202
238
  high = this.high;
203
239
  }
240
+
204
241
  places &= 31;
205
242
  this.low = low >>> places | high << 32 - places;
206
243
  this.high = high >>> places | low << 32 - places;
@@ -212,9 +249,11 @@ var Word64 = function Word64Closure() {
212
249
  add: function Word64_add(word) {
213
250
  var lowAdd = (this.low >>> 0) + (word.low >>> 0);
214
251
  var highAdd = (this.high >>> 0) + (word.high >>> 0);
252
+
215
253
  if (lowAdd > 0xFFFFFFFF) {
216
254
  highAdd += 1;
217
255
  }
256
+
218
257
  this.low = lowAdd | 0;
219
258
  this.high = highAdd | 0;
220
259
  },
@@ -235,29 +274,38 @@ var Word64 = function Word64Closure() {
235
274
  };
236
275
  return Word64;
237
276
  }();
277
+
238
278
  var calculateSHA256 = function calculateSHA256Closure() {
239
279
  function rotr(x, n) {
240
280
  return x >>> n | x << 32 - n;
241
281
  }
282
+
242
283
  function ch(x, y, z) {
243
284
  return x & y ^ ~x & z;
244
285
  }
286
+
245
287
  function maj(x, y, z) {
246
288
  return x & y ^ x & z ^ y & z;
247
289
  }
290
+
248
291
  function sigma(x) {
249
292
  return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);
250
293
  }
294
+
251
295
  function sigmaPrime(x) {
252
296
  return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);
253
297
  }
298
+
254
299
  function littleSigma(x) {
255
300
  return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;
256
301
  }
302
+
257
303
  function littleSigmaPrime(x) {
258
304
  return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;
259
305
  }
306
+
260
307
  var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];
308
+
261
309
  function hash(data, offset, length) {
262
310
  var h0 = 0x6a09e667,
263
311
  h1 = 0xbb67ae85,
@@ -270,14 +318,18 @@ var calculateSHA256 = function calculateSHA256Closure() {
270
318
  var paddedLength = Math.ceil((length + 9) / 64) * 64;
271
319
  var padded = new Uint8Array(paddedLength);
272
320
  var i, j, n;
321
+
273
322
  for (i = 0; i < length; ++i) {
274
323
  padded[i] = data[offset++];
275
324
  }
325
+
276
326
  padded[i++] = 0x80;
277
327
  n = paddedLength - 8;
328
+
278
329
  while (i < n) {
279
330
  padded[i++] = 0;
280
331
  }
332
+
281
333
  padded[i++] = 0;
282
334
  padded[i++] = 0;
283
335
  padded[i++] = 0;
@@ -287,14 +339,17 @@ var calculateSHA256 = function calculateSHA256Closure() {
287
339
  padded[i++] = length >> 5 & 0xFF;
288
340
  padded[i++] = length << 3 & 0xFF;
289
341
  var w = new Uint32Array(64);
342
+
290
343
  for (i = 0; i < paddedLength;) {
291
344
  for (j = 0; j < 16; ++j) {
292
345
  w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];
293
346
  i += 4;
294
347
  }
348
+
295
349
  for (j = 16; j < 64; ++j) {
296
350
  w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0;
297
351
  }
352
+
298
353
  var a = h0,
299
354
  b = h1,
300
355
  c = h2,
@@ -305,6 +360,7 @@ var calculateSHA256 = function calculateSHA256Closure() {
305
360
  h = h7,
306
361
  t1,
307
362
  t2;
363
+
308
364
  for (j = 0; j < 64; ++j) {
309
365
  t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];
310
366
  t2 = sigma(a) + maj(a, b, c);
@@ -317,6 +373,7 @@ var calculateSHA256 = function calculateSHA256Closure() {
317
373
  b = a;
318
374
  a = t1 + t2 | 0;
319
375
  }
376
+
320
377
  h0 = h0 + a | 0;
321
378
  h1 = h1 + b | 0;
322
379
  h2 = h2 + c | 0;
@@ -326,10 +383,15 @@ var calculateSHA256 = function calculateSHA256Closure() {
326
383
  h6 = h6 + g | 0;
327
384
  h7 = h7 + h | 0;
328
385
  }
386
+
329
387
  return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);
330
388
  }
389
+
331
390
  return hash;
332
391
  }();
392
+
393
+ exports.calculateSHA256 = calculateSHA256;
394
+
333
395
  var calculateSHA512 = function calculateSHA512Closure() {
334
396
  function ch(result, x, y, z, tmp) {
335
397
  result.assign(x);
@@ -339,6 +401,7 @@ var calculateSHA512 = function calculateSHA512Closure() {
339
401
  tmp.and(z);
340
402
  result.xor(tmp);
341
403
  }
404
+
342
405
  function maj(result, x, y, z, tmp) {
343
406
  result.assign(x);
344
407
  result.and(y);
@@ -349,6 +412,7 @@ var calculateSHA512 = function calculateSHA512Closure() {
349
412
  tmp.and(z);
350
413
  result.xor(tmp);
351
414
  }
415
+
352
416
  function sigma(result, x, tmp) {
353
417
  result.assign(x);
354
418
  result.rotateRight(28);
@@ -359,6 +423,7 @@ var calculateSHA512 = function calculateSHA512Closure() {
359
423
  tmp.rotateRight(39);
360
424
  result.xor(tmp);
361
425
  }
426
+
362
427
  function sigmaPrime(result, x, tmp) {
363
428
  result.assign(x);
364
429
  result.rotateRight(14);
@@ -369,6 +434,7 @@ var calculateSHA512 = function calculateSHA512Closure() {
369
434
  tmp.rotateRight(41);
370
435
  result.xor(tmp);
371
436
  }
437
+
372
438
  function littleSigma(result, x, tmp) {
373
439
  result.assign(x);
374
440
  result.rotateRight(1);
@@ -379,6 +445,7 @@ var calculateSHA512 = function calculateSHA512Closure() {
379
445
  tmp.shiftRight(7);
380
446
  result.xor(tmp);
381
447
  }
448
+
382
449
  function littleSigmaPrime(result, x, tmp) {
383
450
  result.assign(x);
384
451
  result.rotateRight(19);
@@ -389,10 +456,13 @@ var calculateSHA512 = function calculateSHA512Closure() {
389
456
  tmp.shiftRight(6);
390
457
  result.xor(tmp);
391
458
  }
459
+
392
460
  var k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];
461
+
393
462
  function hash(data, offset, length, mode384) {
394
463
  mode384 = !!mode384;
395
464
  var h0, h1, h2, h3, h4, h5, h6, h7;
465
+
396
466
  if (!mode384) {
397
467
  h0 = new Word64(0x6a09e667, 0xf3bcc908);
398
468
  h1 = new Word64(0xbb67ae85, 0x84caa73b);
@@ -412,17 +482,22 @@ var calculateSHA512 = function calculateSHA512Closure() {
412
482
  h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);
413
483
  h7 = new Word64(0x47b5481d, 0xbefa4fa4);
414
484
  }
485
+
415
486
  var paddedLength = Math.ceil((length + 17) / 128) * 128;
416
487
  var padded = new Uint8Array(paddedLength);
417
488
  var i, j, n;
489
+
418
490
  for (i = 0; i < length; ++i) {
419
491
  padded[i] = data[offset++];
420
492
  }
493
+
421
494
  padded[i++] = 0x80;
422
495
  n = paddedLength - 16;
496
+
423
497
  while (i < n) {
424
498
  padded[i++] = 0;
425
499
  }
500
+
426
501
  padded[i++] = 0;
427
502
  padded[i++] = 0;
428
503
  padded[i++] = 0;
@@ -440,9 +515,11 @@ var calculateSHA512 = function calculateSHA512Closure() {
440
515
  padded[i++] = length >> 5 & 0xFF;
441
516
  padded[i++] = length << 3 & 0xFF;
442
517
  var w = new Array(80);
518
+
443
519
  for (i = 0; i < 80; i++) {
444
520
  w[i] = new Word64(0, 0);
445
521
  }
522
+
446
523
  var a = new Word64(0, 0),
447
524
  b = new Word64(0, 0),
448
525
  c = new Word64(0, 0);
@@ -456,12 +533,14 @@ var calculateSHA512 = function calculateSHA512Closure() {
456
533
  var tmp1 = new Word64(0, 0),
457
534
  tmp2 = new Word64(0, 0),
458
535
  tmp3;
536
+
459
537
  for (i = 0; i < paddedLength;) {
460
538
  for (j = 0; j < 16; ++j) {
461
539
  w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];
462
540
  w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7];
463
541
  i += 8;
464
542
  }
543
+
465
544
  for (j = 16; j < 80; ++j) {
466
545
  tmp3 = w[j];
467
546
  littleSigmaPrime(tmp3, w[j - 2], tmp2);
@@ -470,6 +549,7 @@ var calculateSHA512 = function calculateSHA512Closure() {
470
549
  tmp3.add(tmp1);
471
550
  tmp3.add(w[j - 16]);
472
551
  }
552
+
473
553
  a.assign(h0);
474
554
  b.assign(h1);
475
555
  c.assign(h2);
@@ -478,6 +558,7 @@ var calculateSHA512 = function calculateSHA512Closure() {
478
558
  f.assign(h5);
479
559
  g.assign(h6);
480
560
  h.assign(h7);
561
+
481
562
  for (j = 0; j < 80; ++j) {
482
563
  t1.assign(h);
483
564
  sigmaPrime(tmp1, e, tmp2);
@@ -502,6 +583,7 @@ var calculateSHA512 = function calculateSHA512Closure() {
502
583
  tmp3.add(t2);
503
584
  a = tmp3;
504
585
  }
586
+
505
587
  h0.add(a);
506
588
  h1.add(b);
507
589
  h2.add(c);
@@ -511,7 +593,9 @@ var calculateSHA512 = function calculateSHA512Closure() {
511
593
  h6.add(g);
512
594
  h7.add(h);
513
595
  }
596
+
514
597
  var result;
598
+
515
599
  if (!mode384) {
516
600
  result = new Uint8Array(64);
517
601
  h0.copyTo(result, 0);
@@ -531,18 +615,28 @@ var calculateSHA512 = function calculateSHA512Closure() {
531
615
  h4.copyTo(result, 32);
532
616
  h5.copyTo(result, 40);
533
617
  }
618
+
534
619
  return result;
535
620
  }
621
+
536
622
  return hash;
537
623
  }();
624
+
625
+ exports.calculateSHA512 = calculateSHA512;
626
+
538
627
  var calculateSHA384 = function calculateSHA384Closure() {
539
628
  function hash(data, offset, length) {
540
629
  return calculateSHA512(data, offset, length, true);
541
630
  }
631
+
542
632
  return hash;
543
633
  }();
634
+
635
+ exports.calculateSHA384 = calculateSHA384;
636
+
544
637
  var NullCipher = function NullCipherClosure() {
545
638
  function NullCipher() {}
639
+
546
640
  NullCipher.prototype = {
547
641
  decryptBlock: function NullCipher_decryptBlock(data) {
548
642
  return data;
@@ -551,17 +645,21 @@ var NullCipher = function NullCipherClosure() {
551
645
  return NullCipher;
552
646
  }();
553
647
 
554
- var AESBaseCipher = function () {
648
+ var AESBaseCipher =
649
+ /*#__PURE__*/
650
+ function () {
555
651
  function AESBaseCipher() {
556
652
  _classCallCheck(this, AESBaseCipher);
557
653
 
558
654
  if (this.constructor === AESBaseCipher) {
559
655
  (0, _util.unreachable)('Cannot initialize AESBaseCipher.');
560
656
  }
657
+
561
658
  this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);
562
659
  this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);
563
660
  this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);
564
661
  this._mixCol = new Uint8Array(256);
662
+
565
663
  for (var i = 0; i < 256; i++) {
566
664
  if (i < 128) {
567
665
  this._mixCol[i] = i << 1;
@@ -569,26 +667,27 @@ var AESBaseCipher = function () {
569
667
  this._mixCol[i] = i << 1 ^ 0x1b;
570
668
  }
571
669
  }
670
+
572
671
  this.buffer = new Uint8Array(16);
573
672
  this.bufferPosition = 0;
574
673
  }
575
674
 
576
675
  _createClass(AESBaseCipher, [{
577
- key: '_expandKey',
676
+ key: "_expandKey",
578
677
  value: function _expandKey(cipherKey) {
579
678
  (0, _util.unreachable)('Cannot call `_expandKey` on the base class');
580
679
  }
581
680
  }, {
582
- key: '_decrypt',
681
+ key: "_decrypt",
583
682
  value: function _decrypt(input, key) {
584
- var t = void 0,
585
- u = void 0,
586
- v = void 0;
683
+ var t, u, v;
587
684
  var state = new Uint8Array(16);
588
685
  state.set(input);
686
+
589
687
  for (var j = 0, k = this._keySize; j < 16; ++j, ++k) {
590
688
  state[j] ^= key[k];
591
689
  }
690
+
592
691
  for (var i = this._cyclesOfRepetition - 1; i >= 1; --i) {
593
692
  t = state[13];
594
693
  state[13] = state[9];
@@ -608,12 +707,15 @@ var AESBaseCipher = function () {
608
707
  state[11] = t;
609
708
  state[7] = u;
610
709
  state[3] = v;
710
+
611
711
  for (var _j = 0; _j < 16; ++_j) {
612
712
  state[_j] = this._inv_s[state[_j]];
613
713
  }
714
+
614
715
  for (var _j2 = 0, _k = i * 16; _j2 < 16; ++_j2, ++_k) {
615
716
  state[_j2] ^= key[_k];
616
717
  }
718
+
617
719
  for (var _j3 = 0; _j3 < 16; _j3 += 4) {
618
720
  var s0 = this._mix[state[_j3]];
619
721
  var s1 = this._mix[state[_j3 + 1]];
@@ -626,6 +728,7 @@ var AESBaseCipher = function () {
626
728
  state[_j3 + 3] = t & 0xFF;
627
729
  }
628
730
  }
731
+
629
732
  t = state[13];
630
733
  state[13] = state[9];
631
734
  state[9] = state[5];
@@ -644,28 +747,31 @@ var AESBaseCipher = function () {
644
747
  state[11] = t;
645
748
  state[7] = u;
646
749
  state[3] = v;
750
+
647
751
  for (var _j4 = 0; _j4 < 16; ++_j4) {
648
752
  state[_j4] = this._inv_s[state[_j4]];
649
753
  state[_j4] ^= key[_j4];
650
754
  }
755
+
651
756
  return state;
652
757
  }
653
758
  }, {
654
- key: '_encrypt',
759
+ key: "_encrypt",
655
760
  value: function _encrypt(input, key) {
656
761
  var s = this._s;
657
- var t = void 0,
658
- u = void 0,
659
- v = void 0;
762
+ var t, u, v;
660
763
  var state = new Uint8Array(16);
661
764
  state.set(input);
765
+
662
766
  for (var j = 0; j < 16; ++j) {
663
767
  state[j] ^= key[j];
664
768
  }
769
+
665
770
  for (var i = 1; i < this._cyclesOfRepetition; i++) {
666
771
  for (var _j5 = 0; _j5 < 16; ++_j5) {
667
772
  state[_j5] = s[state[_j5]];
668
773
  }
774
+
669
775
  v = state[1];
670
776
  state[1] = state[5];
671
777
  state[5] = state[9];
@@ -684,6 +790,7 @@ var AESBaseCipher = function () {
684
790
  state[7] = v;
685
791
  state[11] = u;
686
792
  state[15] = t;
793
+
687
794
  for (var _j6 = 0; _j6 < 16; _j6 += 4) {
688
795
  var s0 = state[_j6 + 0];
689
796
  var s1 = state[_j6 + 1];
@@ -695,13 +802,16 @@ var AESBaseCipher = function () {
695
802
  state[_j6 + 2] ^= t ^ this._mixCol[s2 ^ s3];
696
803
  state[_j6 + 3] ^= t ^ this._mixCol[s3 ^ s0];
697
804
  }
805
+
698
806
  for (var _j7 = 0, k = i * 16; _j7 < 16; ++_j7, ++k) {
699
807
  state[_j7] ^= key[k];
700
808
  }
701
809
  }
810
+
702
811
  for (var _j8 = 0; _j8 < 16; ++_j8) {
703
812
  state[_j8] = s[state[_j8]];
704
813
  }
814
+
705
815
  v = state[1];
706
816
  state[1] = state[5];
707
817
  state[5] = state[9];
@@ -720,44 +830,56 @@ var AESBaseCipher = function () {
720
830
  state[7] = v;
721
831
  state[11] = u;
722
832
  state[15] = t;
833
+
723
834
  for (var _j9 = 0, _k2 = this._keySize; _j9 < 16; ++_j9, ++_k2) {
724
835
  state[_j9] ^= key[_k2];
725
836
  }
837
+
726
838
  return state;
727
839
  }
728
840
  }, {
729
- key: '_decryptBlock2',
841
+ key: "_decryptBlock2",
730
842
  value: function _decryptBlock2(data, finalize) {
731
843
  var sourceLength = data.length;
732
844
  var buffer = this.buffer,
733
845
  bufferLength = this.bufferPosition;
734
846
  var result = [],
735
847
  iv = this.iv;
848
+
736
849
  for (var i = 0; i < sourceLength; ++i) {
737
850
  buffer[bufferLength] = data[i];
738
851
  ++bufferLength;
852
+
739
853
  if (bufferLength < 16) {
740
854
  continue;
741
855
  }
856
+
742
857
  var plain = this._decrypt(buffer, this._key);
858
+
743
859
  for (var j = 0; j < 16; ++j) {
744
860
  plain[j] ^= iv[j];
745
861
  }
862
+
746
863
  iv = buffer;
747
864
  result.push(plain);
748
865
  buffer = new Uint8Array(16);
749
866
  bufferLength = 0;
750
867
  }
868
+
751
869
  this.buffer = buffer;
752
870
  this.bufferLength = bufferLength;
753
871
  this.iv = iv;
872
+
754
873
  if (result.length === 0) {
755
874
  return new Uint8Array(0);
756
875
  }
876
+
757
877
  var outputLength = 16 * result.length;
878
+
758
879
  if (finalize) {
759
880
  var lastBlock = result[result.length - 1];
760
881
  var psLen = lastBlock[15];
882
+
761
883
  if (psLen <= 16) {
762
884
  for (var _i = 15, ii = 16 - psLen; _i >= ii; --_i) {
763
885
  if (lastBlock[_i] !== psLen) {
@@ -765,78 +887,96 @@ var AESBaseCipher = function () {
765
887
  break;
766
888
  }
767
889
  }
890
+
768
891
  outputLength -= psLen;
769
892
  result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);
770
893
  }
771
894
  }
895
+
772
896
  var output = new Uint8Array(outputLength);
897
+
773
898
  for (var _i2 = 0, _j10 = 0, _ii = result.length; _i2 < _ii; ++_i2, _j10 += 16) {
774
899
  output.set(result[_i2], _j10);
775
900
  }
901
+
776
902
  return output;
777
903
  }
778
904
  }, {
779
- key: 'decryptBlock',
905
+ key: "decryptBlock",
780
906
  value: function decryptBlock(data, finalize) {
781
907
  var iv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
782
-
783
908
  var sourceLength = data.length;
784
909
  var buffer = this.buffer,
785
910
  bufferLength = this.bufferPosition;
911
+
786
912
  if (iv) {
787
913
  this.iv = iv;
788
914
  } else {
789
915
  for (var i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {
790
916
  buffer[bufferLength] = data[i];
791
917
  }
918
+
792
919
  if (bufferLength < 16) {
793
920
  this.bufferLength = bufferLength;
794
921
  return new Uint8Array(0);
795
922
  }
923
+
796
924
  this.iv = buffer;
797
925
  data = data.subarray(16);
798
926
  }
927
+
799
928
  this.buffer = new Uint8Array(16);
800
929
  this.bufferLength = 0;
801
930
  this.decryptBlock = this._decryptBlock2;
802
931
  return this.decryptBlock(data, finalize);
803
932
  }
804
933
  }, {
805
- key: 'encrypt',
934
+ key: "encrypt",
806
935
  value: function encrypt(data, iv) {
807
936
  var sourceLength = data.length;
808
937
  var buffer = this.buffer,
809
938
  bufferLength = this.bufferPosition;
810
939
  var result = [];
940
+
811
941
  if (!iv) {
812
942
  iv = new Uint8Array(16);
813
943
  }
944
+
814
945
  for (var i = 0; i < sourceLength; ++i) {
815
946
  buffer[bufferLength] = data[i];
816
947
  ++bufferLength;
948
+
817
949
  if (bufferLength < 16) {
818
950
  continue;
819
951
  }
952
+
820
953
  for (var j = 0; j < 16; ++j) {
821
954
  buffer[j] ^= iv[j];
822
955
  }
956
+
823
957
  var cipher = this._encrypt(buffer, this._key);
958
+
824
959
  iv = cipher;
825
960
  result.push(cipher);
826
961
  buffer = new Uint8Array(16);
827
962
  bufferLength = 0;
828
963
  }
964
+
829
965
  this.buffer = buffer;
830
966
  this.bufferLength = bufferLength;
831
967
  this.iv = iv;
968
+
832
969
  if (result.length === 0) {
833
970
  return new Uint8Array(0);
834
971
  }
972
+
835
973
  var outputLength = 16 * result.length;
836
974
  var output = new Uint8Array(outputLength);
975
+
837
976
  for (var _i3 = 0, _j11 = 0, ii = result.length; _i3 < ii; ++_i3, _j11 += 16) {
838
977
  output.set(result[_i3], _j11);
839
978
  }
979
+
840
980
  return output;
841
981
  }
842
982
  }]);
@@ -844,14 +984,17 @@ var AESBaseCipher = function () {
844
984
  return AESBaseCipher;
845
985
  }();
846
986
 
847
- var AES128Cipher = function (_AESBaseCipher) {
987
+ var AES128Cipher =
988
+ /*#__PURE__*/
989
+ function (_AESBaseCipher) {
848
990
  _inherits(AES128Cipher, _AESBaseCipher);
849
991
 
850
992
  function AES128Cipher(key) {
851
- _classCallCheck(this, AES128Cipher);
993
+ var _this;
852
994
 
853
- var _this = _possibleConstructorReturn(this, (AES128Cipher.__proto__ || Object.getPrototypeOf(AES128Cipher)).call(this));
995
+ _classCallCheck(this, AES128Cipher);
854
996
 
997
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(AES128Cipher).call(this));
855
998
  _this._cyclesOfRepetition = 10;
856
999
  _this._keySize = 160;
857
1000
  _this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);
@@ -860,13 +1003,14 @@ var AES128Cipher = function (_AESBaseCipher) {
860
1003
  }
861
1004
 
862
1005
  _createClass(AES128Cipher, [{
863
- key: '_expandKey',
1006
+ key: "_expandKey",
864
1007
  value: function _expandKey(cipherKey) {
865
1008
  var b = 176;
866
1009
  var s = this._s;
867
1010
  var rcon = this._rcon;
868
1011
  var result = new Uint8Array(b);
869
1012
  result.set(cipherKey);
1013
+
870
1014
  for (var j = 16, i = 1; j < b; ++i) {
871
1015
  var t1 = result[j - 3];
872
1016
  var t2 = result[j - 2];
@@ -877,6 +1021,7 @@ var AES128Cipher = function (_AESBaseCipher) {
877
1021
  t3 = s[t3];
878
1022
  t4 = s[t4];
879
1023
  t1 = t1 ^ rcon[i];
1024
+
880
1025
  for (var n = 0; n < 4; ++n) {
881
1026
  result[j] = t1 ^= result[j - 16];
882
1027
  j++;
@@ -888,6 +1033,7 @@ var AES128Cipher = function (_AESBaseCipher) {
888
1033
  j++;
889
1034
  }
890
1035
  }
1036
+
891
1037
  return result;
892
1038
  }
893
1039
  }]);
@@ -895,14 +1041,19 @@ var AES128Cipher = function (_AESBaseCipher) {
895
1041
  return AES128Cipher;
896
1042
  }(AESBaseCipher);
897
1043
 
898
- var AES256Cipher = function (_AESBaseCipher2) {
1044
+ exports.AES128Cipher = AES128Cipher;
1045
+
1046
+ var AES256Cipher =
1047
+ /*#__PURE__*/
1048
+ function (_AESBaseCipher2) {
899
1049
  _inherits(AES256Cipher, _AESBaseCipher2);
900
1050
 
901
1051
  function AES256Cipher(key) {
902
- _classCallCheck(this, AES256Cipher);
1052
+ var _this2;
903
1053
 
904
- var _this2 = _possibleConstructorReturn(this, (AES256Cipher.__proto__ || Object.getPrototypeOf(AES256Cipher)).call(this));
1054
+ _classCallCheck(this, AES256Cipher);
905
1055
 
1056
+ _this2 = _possibleConstructorReturn(this, _getPrototypeOf(AES256Cipher).call(this));
906
1057
  _this2._cyclesOfRepetition = 14;
907
1058
  _this2._keySize = 224;
908
1059
  _this2._key = _this2._expandKey(key);
@@ -910,17 +1061,15 @@ var AES256Cipher = function (_AESBaseCipher2) {
910
1061
  }
911
1062
 
912
1063
  _createClass(AES256Cipher, [{
913
- key: '_expandKey',
1064
+ key: "_expandKey",
914
1065
  value: function _expandKey(cipherKey) {
915
1066
  var b = 240;
916
1067
  var s = this._s;
917
1068
  var result = new Uint8Array(b);
918
1069
  result.set(cipherKey);
919
1070
  var r = 1;
920
- var t1 = void 0,
921
- t2 = void 0,
922
- t3 = void 0,
923
- t4 = void 0;
1071
+ var t1, t2, t3, t4;
1072
+
924
1073
  for (var j = 32, i = 1; j < b; ++i) {
925
1074
  if (j % 32 === 16) {
926
1075
  t1 = s[t1];
@@ -937,10 +1086,12 @@ var AES256Cipher = function (_AESBaseCipher2) {
937
1086
  t3 = s[t3];
938
1087
  t4 = s[t4];
939
1088
  t1 = t1 ^ r;
1089
+
940
1090
  if ((r <<= 1) >= 256) {
941
1091
  r = (r ^ 0x1b) & 0xFF;
942
1092
  }
943
1093
  }
1094
+
944
1095
  for (var n = 0; n < 4; ++n) {
945
1096
  result[j] = t1 ^= result[j - 32];
946
1097
  j++;
@@ -952,6 +1103,7 @@ var AES256Cipher = function (_AESBaseCipher2) {
952
1103
  j++;
953
1104
  }
954
1105
  }
1106
+
955
1107
  return result;
956
1108
  }
957
1109
  }]);
@@ -959,19 +1111,25 @@ var AES256Cipher = function (_AESBaseCipher2) {
959
1111
  return AES256Cipher;
960
1112
  }(AESBaseCipher);
961
1113
 
1114
+ exports.AES256Cipher = AES256Cipher;
1115
+
962
1116
  var PDF17 = function PDF17Closure() {
963
1117
  function compareByteArrays(array1, array2) {
964
1118
  if (array1.length !== array2.length) {
965
1119
  return false;
966
1120
  }
1121
+
967
1122
  for (var i = 0; i < array1.length; i++) {
968
1123
  if (array1[i] !== array2[i]) {
969
1124
  return false;
970
1125
  }
971
1126
  }
1127
+
972
1128
  return true;
973
1129
  }
1130
+
974
1131
  function PDF17() {}
1132
+
975
1133
  PDF17.prototype = {
976
1134
  checkOwnerPassword: function PDF17_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {
977
1135
  var hashData = new Uint8Array(password.length + 56);
@@ -1008,6 +1166,9 @@ var PDF17 = function PDF17Closure() {
1008
1166
  };
1009
1167
  return PDF17;
1010
1168
  }();
1169
+
1170
+ exports.PDF17 = PDF17;
1171
+
1011
1172
  var PDF20 = function PDF20Closure() {
1012
1173
  function concatArrays(array1, array2) {
1013
1174
  var t = new Uint8Array(array1.length + array2.length);
@@ -1015,27 +1176,33 @@ var PDF20 = function PDF20Closure() {
1015
1176
  t.set(array2, array1.length);
1016
1177
  return t;
1017
1178
  }
1179
+
1018
1180
  function calculatePDF20Hash(password, input, userBytes) {
1019
1181
  var k = calculateSHA256(input, 0, input.length).subarray(0, 32);
1020
1182
  var e = [0];
1021
1183
  var i = 0;
1184
+
1022
1185
  while (i < 64 || e[e.length - 1] > i - 32) {
1023
1186
  var arrayLength = password.length + k.length + userBytes.length;
1024
1187
  var k1 = new Uint8Array(arrayLength * 64);
1025
1188
  var array = concatArrays(password, k);
1026
1189
  array = concatArrays(array, userBytes);
1190
+
1027
1191
  for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {
1028
1192
  k1.set(array, pos);
1029
1193
  }
1194
+
1030
1195
  var cipher = new AES128Cipher(k.subarray(0, 16));
1031
1196
  e = cipher.encrypt(k1, k.subarray(16, 32));
1032
1197
  var remainder = 0;
1198
+
1033
1199
  for (var z = 0; z < 16; z++) {
1034
1200
  remainder *= 256 % 3;
1035
1201
  remainder %= 3;
1036
1202
  remainder += (e[z] >>> 0) % 3;
1037
1203
  remainder %= 3;
1038
1204
  }
1205
+
1039
1206
  if (remainder === 0) {
1040
1207
  k = calculateSHA256(e, 0, e.length);
1041
1208
  } else if (remainder === 1) {
@@ -1043,22 +1210,29 @@ var PDF20 = function PDF20Closure() {
1043
1210
  } else if (remainder === 2) {
1044
1211
  k = calculateSHA512(e, 0, e.length);
1045
1212
  }
1213
+
1046
1214
  i++;
1047
1215
  }
1216
+
1048
1217
  return k.subarray(0, 32);
1049
1218
  }
1219
+
1050
1220
  function PDF20() {}
1221
+
1051
1222
  function compareByteArrays(array1, array2) {
1052
1223
  if (array1.length !== array2.length) {
1053
1224
  return false;
1054
1225
  }
1226
+
1055
1227
  for (var i = 0; i < array1.length; i++) {
1056
1228
  if (array1[i] !== array2[i]) {
1057
1229
  return false;
1058
1230
  }
1059
1231
  }
1232
+
1060
1233
  return true;
1061
1234
  }
1235
+
1062
1236
  PDF20.prototype = {
1063
1237
  hash: function PDF20_hash(password, concatBytes, userBytes) {
1064
1238
  return calculatePDF20Hash(password, concatBytes, userBytes);
@@ -1098,11 +1272,15 @@ var PDF20 = function PDF20Closure() {
1098
1272
  };
1099
1273
  return PDF20;
1100
1274
  }();
1275
+
1276
+ exports.PDF20 = PDF20;
1277
+
1101
1278
  var CipherTransform = function CipherTransformClosure() {
1102
1279
  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {
1103
1280
  this.StringCipherConstructor = stringCipherConstructor;
1104
1281
  this.StreamCipherConstructor = streamCipherConstructor;
1105
1282
  }
1283
+
1106
1284
  CipherTransform.prototype = {
1107
1285
  createStream: function CipherTransform_createStream(stream, length) {
1108
1286
  var cipher = new this.StreamCipherConstructor();
@@ -1119,8 +1297,10 @@ var CipherTransform = function CipherTransformClosure() {
1119
1297
  };
1120
1298
  return CipherTransform;
1121
1299
  }();
1300
+
1122
1301
  var CipherTransformFactory = function CipherTransformFactoryClosure() {
1123
1302
  var defaultPasswordBytes = new Uint8Array([0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08, 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);
1303
+
1124
1304
  function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {
1125
1305
  if (password) {
1126
1306
  var passwordLength = Math.min(127, password.length);
@@ -1128,79 +1308,101 @@ var CipherTransformFactory = function CipherTransformFactoryClosure() {
1128
1308
  } else {
1129
1309
  password = [];
1130
1310
  }
1311
+
1131
1312
  var pdfAlgorithm;
1313
+
1132
1314
  if (revision === 6) {
1133
1315
  pdfAlgorithm = new PDF20();
1134
1316
  } else {
1135
1317
  pdfAlgorithm = new PDF17();
1136
1318
  }
1319
+
1137
1320
  if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {
1138
1321
  return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);
1139
1322
  } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {
1140
1323
  return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);
1141
1324
  }
1325
+
1142
1326
  return null;
1143
1327
  }
1328
+
1144
1329
  function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {
1145
1330
  var hashDataSize = 40 + ownerPassword.length + fileId.length;
1146
1331
  var hashData = new Uint8Array(hashDataSize),
1147
1332
  i = 0,
1148
1333
  j,
1149
1334
  n;
1335
+
1150
1336
  if (password) {
1151
1337
  n = Math.min(32, password.length);
1338
+
1152
1339
  for (; i < n; ++i) {
1153
1340
  hashData[i] = password[i];
1154
1341
  }
1155
1342
  }
1343
+
1156
1344
  j = 0;
1345
+
1157
1346
  while (i < 32) {
1158
1347
  hashData[i++] = defaultPasswordBytes[j++];
1159
1348
  }
1349
+
1160
1350
  for (j = 0, n = ownerPassword.length; j < n; ++j) {
1161
1351
  hashData[i++] = ownerPassword[j];
1162
1352
  }
1353
+
1163
1354
  hashData[i++] = flags & 0xFF;
1164
1355
  hashData[i++] = flags >> 8 & 0xFF;
1165
1356
  hashData[i++] = flags >> 16 & 0xFF;
1166
1357
  hashData[i++] = flags >>> 24 & 0xFF;
1358
+
1167
1359
  for (j = 0, n = fileId.length; j < n; ++j) {
1168
1360
  hashData[i++] = fileId[j];
1169
1361
  }
1362
+
1170
1363
  if (revision >= 4 && !encryptMetadata) {
1171
1364
  hashData[i++] = 0xFF;
1172
1365
  hashData[i++] = 0xFF;
1173
1366
  hashData[i++] = 0xFF;
1174
1367
  hashData[i++] = 0xFF;
1175
1368
  }
1369
+
1176
1370
  var hash = calculateMD5(hashData, 0, i);
1177
1371
  var keyLengthInBytes = keyLength >> 3;
1372
+
1178
1373
  if (revision >= 3) {
1179
1374
  for (j = 0; j < 50; ++j) {
1180
1375
  hash = calculateMD5(hash, 0, keyLengthInBytes);
1181
1376
  }
1182
1377
  }
1378
+
1183
1379
  var encryptionKey = hash.subarray(0, keyLengthInBytes);
1184
1380
  var cipher, checkData;
1381
+
1185
1382
  if (revision >= 3) {
1186
1383
  for (i = 0; i < 32; ++i) {
1187
1384
  hashData[i] = defaultPasswordBytes[i];
1188
1385
  }
1386
+
1189
1387
  for (j = 0, n = fileId.length; j < n; ++j) {
1190
1388
  hashData[i++] = fileId[j];
1191
1389
  }
1390
+
1192
1391
  cipher = new ARCFourCipher(encryptionKey);
1193
1392
  checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));
1194
1393
  n = encryptionKey.length;
1195
1394
  var derivedKey = new Uint8Array(n),
1196
1395
  k;
1396
+
1197
1397
  for (j = 1; j <= 19; ++j) {
1198
1398
  for (k = 0; k < n; ++k) {
1199
1399
  derivedKey[k] = encryptionKey[k] ^ j;
1200
1400
  }
1401
+
1201
1402
  cipher = new ARCFourCipher(derivedKey);
1202
1403
  checkData = cipher.encryptBlock(checkData);
1203
1404
  }
1405
+
1204
1406
  for (j = 0, n = checkData.length; j < n; ++j) {
1205
1407
  if (userPassword[j] !== checkData[j]) {
1206
1408
  return null;
@@ -1209,43 +1411,55 @@ var CipherTransformFactory = function CipherTransformFactoryClosure() {
1209
1411
  } else {
1210
1412
  cipher = new ARCFourCipher(encryptionKey);
1211
1413
  checkData = cipher.encryptBlock(defaultPasswordBytes);
1414
+
1212
1415
  for (j = 0, n = checkData.length; j < n; ++j) {
1213
1416
  if (userPassword[j] !== checkData[j]) {
1214
1417
  return null;
1215
1418
  }
1216
1419
  }
1217
1420
  }
1421
+
1218
1422
  return encryptionKey;
1219
1423
  }
1424
+
1220
1425
  function decodeUserPassword(password, ownerPassword, revision, keyLength) {
1221
1426
  var hashData = new Uint8Array(32),
1222
1427
  i = 0,
1223
1428
  j,
1224
1429
  n;
1225
1430
  n = Math.min(32, password.length);
1431
+
1226
1432
  for (; i < n; ++i) {
1227
1433
  hashData[i] = password[i];
1228
1434
  }
1435
+
1229
1436
  j = 0;
1437
+
1230
1438
  while (i < 32) {
1231
1439
  hashData[i++] = defaultPasswordBytes[j++];
1232
1440
  }
1441
+
1233
1442
  var hash = calculateMD5(hashData, 0, i);
1234
1443
  var keyLengthInBytes = keyLength >> 3;
1444
+
1235
1445
  if (revision >= 3) {
1236
1446
  for (j = 0; j < 50; ++j) {
1237
1447
  hash = calculateMD5(hash, 0, hash.length);
1238
1448
  }
1239
1449
  }
1450
+
1240
1451
  var cipher, userPassword;
1452
+
1241
1453
  if (revision >= 3) {
1242
1454
  userPassword = ownerPassword;
1243
1455
  var derivedKey = new Uint8Array(keyLengthInBytes),
1244
1456
  k;
1457
+
1245
1458
  for (j = 19; j >= 0; j--) {
1246
1459
  for (k = 0; k < keyLengthInBytes; ++k) {
1247
1460
  derivedKey[k] = hash[k] ^ j;
1248
1461
  }
1462
+
1249
1463
  cipher = new ARCFourCipher(derivedKey);
1250
1464
  userPassword = cipher.encryptBlock(userPassword);
1251
1465
  }
@@ -1253,40 +1467,52 @@ var CipherTransformFactory = function CipherTransformFactoryClosure() {
1253
1467
  cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));
1254
1468
  userPassword = cipher.encryptBlock(ownerPassword);
1255
1469
  }
1470
+
1256
1471
  return userPassword;
1257
1472
  }
1473
+
1258
1474
  var identityName = _primitives.Name.get('Identity');
1475
+
1259
1476
  function CipherTransformFactory(dict, fileId, password) {
1260
1477
  var filter = dict.get('Filter');
1478
+
1261
1479
  if (!(0, _primitives.isName)(filter, 'Standard')) {
1262
1480
  throw new _util.FormatError('unknown encryption method');
1263
1481
  }
1482
+
1264
1483
  this.dict = dict;
1265
1484
  var algorithm = dict.get('V');
1485
+
1266
1486
  if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {
1267
1487
  throw new _util.FormatError('unsupported encryption algorithm');
1268
1488
  }
1489
+
1269
1490
  this.algorithm = algorithm;
1270
1491
  var keyLength = dict.get('Length');
1492
+
1271
1493
  if (!keyLength) {
1272
1494
  if (algorithm <= 3) {
1273
1495
  keyLength = 40;
1274
1496
  } else {
1275
1497
  var cfDict = dict.get('CF');
1276
1498
  var streamCryptoName = dict.get('StmF');
1499
+
1277
1500
  if ((0, _primitives.isDict)(cfDict) && (0, _primitives.isName)(streamCryptoName)) {
1278
1501
  cfDict.suppressEncryption = true;
1279
1502
  var handlerDict = cfDict.get(streamCryptoName.name);
1280
1503
  keyLength = handlerDict && handlerDict.get('Length') || 128;
1504
+
1281
1505
  if (keyLength < 40) {
1282
1506
  keyLength <<= 3;
1283
1507
  }
1284
1508
  }
1285
1509
  }
1286
1510
  }
1511
+
1287
1512
  if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {
1288
1513
  throw new _util.FormatError('invalid key length');
1289
1514
  }
1515
+
1290
1516
  var ownerPassword = (0, _util.stringToBytes)(dict.get('O')).subarray(0, 32);
1291
1517
  var userPassword = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 32);
1292
1518
  var flags = dict.get('P');
@@ -1295,6 +1521,7 @@ var CipherTransformFactory = function CipherTransformFactoryClosure() {
1295
1521
  this.encryptMetadata = encryptMetadata;
1296
1522
  var fileIdBytes = (0, _util.stringToBytes)(fileId);
1297
1523
  var passwordBytes;
1524
+
1298
1525
  if (password) {
1299
1526
  if (revision === 6) {
1300
1527
  try {
@@ -1303,9 +1530,12 @@ var CipherTransformFactory = function CipherTransformFactoryClosure() {
1303
1530
  (0, _util.warn)('CipherTransformFactory: ' + 'Unable to convert UTF8 encoded password.');
1304
1531
  }
1305
1532
  }
1533
+
1306
1534
  passwordBytes = (0, _util.stringToBytes)(password);
1307
1535
  }
1536
+
1308
1537
  var encryptionKey;
1538
+
1309
1539
  if (algorithm !== 5) {
1310
1540
  encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);
1311
1541
  } else {
@@ -1319,100 +1549,115 @@ var CipherTransformFactory = function CipherTransformFactoryClosure() {
1319
1549
  var perms = (0, _util.stringToBytes)(dict.get('Perms'));
1320
1550
  encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);
1321
1551
  }
1552
+
1322
1553
  if (!encryptionKey && !password) {
1323
1554
  throw new _util.PasswordException('No password given', _util.PasswordResponses.NEED_PASSWORD);
1324
1555
  } else if (!encryptionKey && password) {
1325
1556
  var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);
1326
1557
  encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);
1327
1558
  }
1559
+
1328
1560
  if (!encryptionKey) {
1329
1561
  throw new _util.PasswordException('Incorrect Password', _util.PasswordResponses.INCORRECT_PASSWORD);
1330
1562
  }
1563
+
1331
1564
  this.encryptionKey = encryptionKey;
1565
+
1332
1566
  if (algorithm >= 4) {
1333
1567
  var cf = dict.get('CF');
1568
+
1334
1569
  if ((0, _primitives.isDict)(cf)) {
1335
1570
  cf.suppressEncryption = true;
1336
1571
  }
1572
+
1337
1573
  this.cf = cf;
1338
1574
  this.stmf = dict.get('StmF') || identityName;
1339
1575
  this.strf = dict.get('StrF') || identityName;
1340
1576
  this.eff = dict.get('EFF') || this.stmf;
1341
1577
  }
1342
1578
  }
1579
+
1343
1580
  function buildObjectKey(num, gen, encryptionKey, isAes) {
1344
1581
  var key = new Uint8Array(encryptionKey.length + 9),
1345
1582
  i,
1346
1583
  n;
1584
+
1347
1585
  for (i = 0, n = encryptionKey.length; i < n; ++i) {
1348
1586
  key[i] = encryptionKey[i];
1349
1587
  }
1588
+
1350
1589
  key[i++] = num & 0xFF;
1351
1590
  key[i++] = num >> 8 & 0xFF;
1352
1591
  key[i++] = num >> 16 & 0xFF;
1353
1592
  key[i++] = gen & 0xFF;
1354
1593
  key[i++] = gen >> 8 & 0xFF;
1594
+
1355
1595
  if (isAes) {
1356
1596
  key[i++] = 0x73;
1357
1597
  key[i++] = 0x41;
1358
1598
  key[i++] = 0x6C;
1359
1599
  key[i++] = 0x54;
1360
1600
  }
1601
+
1361
1602
  var hash = calculateMD5(key, 0, i);
1362
1603
  return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));
1363
1604
  }
1605
+
1364
1606
  function buildCipherConstructor(cf, name, num, gen, key) {
1365
1607
  if (!(0, _primitives.isName)(name)) {
1366
1608
  throw new _util.FormatError('Invalid crypt filter name.');
1367
1609
  }
1610
+
1368
1611
  var cryptFilter = cf.get(name.name);
1369
1612
  var cfm;
1613
+
1370
1614
  if (cryptFilter !== null && cryptFilter !== undefined) {
1371
1615
  cfm = cryptFilter.get('CFM');
1372
1616
  }
1617
+
1373
1618
  if (!cfm || cfm.name === 'None') {
1374
1619
  return function cipherTransformFactoryBuildCipherConstructorNone() {
1375
1620
  return new NullCipher();
1376
1621
  };
1377
1622
  }
1623
+
1378
1624
  if (cfm.name === 'V2') {
1379
1625
  return function cipherTransformFactoryBuildCipherConstructorV2() {
1380
1626
  return new ARCFourCipher(buildObjectKey(num, gen, key, false));
1381
1627
  };
1382
1628
  }
1629
+
1383
1630
  if (cfm.name === 'AESV2') {
1384
1631
  return function cipherTransformFactoryBuildCipherConstructorAESV2() {
1385
1632
  return new AES128Cipher(buildObjectKey(num, gen, key, true));
1386
1633
  };
1387
1634
  }
1635
+
1388
1636
  if (cfm.name === 'AESV3') {
1389
1637
  return function cipherTransformFactoryBuildCipherConstructorAESV3() {
1390
1638
  return new AES256Cipher(key);
1391
1639
  };
1392
1640
  }
1641
+
1393
1642
  throw new _util.FormatError('Unknown crypto method');
1394
1643
  }
1644
+
1395
1645
  CipherTransformFactory.prototype = {
1396
1646
  createCipherTransform: function CipherTransformFactory_createCipherTransform(num, gen) {
1397
1647
  if (this.algorithm === 4 || this.algorithm === 5) {
1398
1648
  return new CipherTransform(buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey));
1399
1649
  }
1650
+
1400
1651
  var key = buildObjectKey(num, gen, this.encryptionKey, false);
1652
+
1401
1653
  var cipherConstructor = function buildCipherCipherConstructor() {
1402
1654
  return new ARCFourCipher(key);
1403
1655
  };
1656
+
1404
1657
  return new CipherTransform(cipherConstructor, cipherConstructor);
1405
1658
  }
1406
1659
  };
1407
1660
  return CipherTransformFactory;
1408
1661
  }();
1409
- exports.AES128Cipher = AES128Cipher;
1410
- exports.AES256Cipher = AES256Cipher;
1411
- exports.ARCFourCipher = ARCFourCipher;
1412
- exports.CipherTransformFactory = CipherTransformFactory;
1413
- exports.PDF17 = PDF17;
1414
- exports.PDF20 = PDF20;
1415
- exports.calculateMD5 = calculateMD5;
1416
- exports.calculateSHA256 = calculateSHA256;
1417
- exports.calculateSHA384 = calculateSHA384;
1418
- exports.calculateSHA512 = calculateSHA512;
1662
+
1663
+ exports.CipherTransformFactory = CipherTransformFactory;