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.
- package/CODE_OF_CONDUCT.md +15 -0
- package/bower.json +1 -1
- package/build/pdf.js +18515 -11402
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +1 -1
- package/build/pdf.worker.js +48266 -37137
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +1 -1
- package/external/url/url-lib.js +627 -0
- package/image_decoders/pdf.image_decoders.js +11350 -0
- package/image_decoders/pdf.image_decoders.js.map +1 -0
- package/image_decoders/pdf.image_decoders.min.js +1 -0
- package/lib/core/annotation.js +587 -242
- package/lib/core/arithmetic_decoder.js +275 -245
- package/lib/core/bidi.js +65 -6
- package/lib/core/ccitt.js +173 -18
- package/lib/core/ccitt_stream.js +15 -6
- package/lib/core/cff_parser.js +433 -61
- package/lib/core/charsets.js +5 -4
- package/lib/core/chunked_stream.js +400 -152
- package/lib/core/cmap.js +326 -87
- package/lib/core/colorspace.js +874 -594
- package/lib/core/core_utils.js +147 -0
- package/lib/core/crypto.js +290 -45
- package/lib/core/document.js +560 -268
- package/lib/core/encodings.js +19 -10
- package/lib/core/evaluator.js +1005 -360
- package/lib/core/font_renderer.js +331 -97
- package/lib/core/fonts.js +812 -195
- package/lib/core/function.js +284 -71
- package/lib/core/glyphlist.js +4 -3
- package/lib/core/image.js +169 -62
- package/lib/core/image_utils.js +111 -0
- package/lib/core/jbig2.js +479 -66
- package/lib/core/jbig2_stream.js +19 -8
- package/lib/core/jpeg_stream.js +38 -13
- package/lib/core/jpg.js +253 -29
- package/lib/core/jpx.js +396 -6
- package/lib/core/jpx_stream.js +18 -6
- package/lib/core/metrics.js +15 -15
- package/lib/core/murmurhash3.js +56 -34
- package/lib/core/obj.js +1354 -488
- package/lib/core/operator_list.js +144 -31
- package/lib/core/parser.js +539 -191
- package/lib/core/pattern.js +148 -14
- package/lib/core/pdf_manager.js +323 -133
- package/lib/core/primitives.js +111 -24
- package/lib/core/ps_parser.js +134 -45
- package/lib/core/standard_fonts.js +17 -17
- package/lib/core/stream.js +313 -34
- package/lib/core/type1_parser.js +143 -13
- package/lib/core/unicode.js +32 -5
- package/lib/core/worker.js +217 -190
- package/lib/core/worker_stream.js +277 -0
- package/lib/display/annotation_layer.js +450 -133
- package/lib/display/api.js +1597 -784
- package/lib/display/api_compatibility.js +11 -13
- package/lib/display/canvas.js +360 -44
- package/lib/display/content_disposition.js +83 -32
- package/lib/display/display_utils.js +747 -0
- package/lib/display/fetch_stream.js +221 -90
- package/lib/display/font_loader.js +468 -236
- package/lib/display/metadata.js +38 -16
- package/lib/display/network.js +635 -428
- package/lib/display/network_utils.js +32 -19
- package/lib/display/node_stream.js +367 -175
- package/lib/display/pattern_helper.js +81 -31
- package/lib/display/svg.js +1235 -519
- package/lib/display/text_layer.js +153 -29
- package/lib/display/transport_stream.js +345 -94
- package/lib/display/webgl.js +64 -18
- package/lib/display/worker_options.js +5 -4
- package/lib/display/xml_parser.js +166 -53
- package/lib/examples/node/domstubs.js +60 -4
- package/lib/pdf.js +36 -14
- package/lib/pdf.worker.js +5 -3
- package/lib/shared/compatibility.js +158 -564
- package/lib/shared/global_scope.js +2 -2
- package/lib/shared/is_node.js +4 -4
- package/lib/shared/message_handler.js +521 -0
- package/lib/shared/streams_polyfill.js +21 -17
- package/lib/shared/url_polyfill.js +56 -0
- package/lib/shared/util.js +243 -710
- package/lib/test/unit/annotation_spec.js +870 -401
- package/lib/test/unit/api_spec.js +657 -345
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +54 -11
- package/lib/test/unit/clitests_helper.js +10 -8
- package/lib/test/unit/cmap_spec.js +95 -41
- package/lib/test/unit/colorspace_spec.js +115 -63
- package/lib/test/unit/core_utils_spec.js +191 -0
- package/lib/test/unit/crypto_spec.js +17 -5
- package/lib/test/unit/custom_spec.js +43 -55
- package/lib/test/unit/display_svg_spec.js +34 -18
- package/lib/test/unit/display_utils_spec.js +273 -0
- package/lib/test/unit/document_spec.js +8 -13
- package/lib/test/unit/encodings_spec.js +25 -45
- package/lib/test/unit/evaluator_spec.js +38 -15
- package/lib/test/unit/fetch_stream_spec.js +109 -0
- package/lib/test/unit/function_spec.js +17 -5
- package/lib/test/unit/jasmine-boot.js +33 -20
- package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
- package/lib/test/unit/metadata_spec.js +71 -11
- package/lib/test/unit/murmurhash3_spec.js +3 -3
- package/lib/test/unit/network_spec.js +19 -54
- package/lib/test/unit/network_utils_spec.js +91 -14
- package/lib/test/unit/node_stream_spec.js +56 -32
- package/lib/test/unit/parser_spec.js +162 -71
- package/lib/test/unit/pdf_find_controller_spec.js +230 -0
- package/lib/test/unit/pdf_find_utils_spec.js +63 -0
- package/lib/test/unit/pdf_history_spec.js +21 -9
- package/lib/test/unit/primitives_spec.js +53 -20
- package/lib/test/unit/stream_spec.js +12 -4
- package/lib/test/unit/test_utils.js +273 -56
- package/lib/test/unit/testreporter.js +21 -3
- package/lib/test/unit/type1_parser_spec.js +8 -6
- package/lib/test/unit/ui_utils_spec.js +454 -16
- package/lib/test/unit/unicode_spec.js +18 -15
- package/lib/test/unit/util_spec.js +87 -128
- package/lib/web/annotation_layer_builder.js +39 -22
- package/lib/web/app.js +1290 -588
- package/lib/web/app_options.js +100 -62
- package/lib/web/base_viewer.js +511 -182
- package/lib/web/chromecom.js +261 -117
- package/lib/web/debugger.js +166 -22
- package/lib/web/download_manager.js +32 -13
- package/lib/web/firefox_print_service.js +20 -10
- package/lib/web/firefoxcom.js +315 -80
- package/lib/web/genericcom.js +89 -30
- package/lib/web/genericl10n.js +142 -30
- package/lib/web/grab_to_pan.js +28 -4
- package/lib/web/interfaces.js +170 -47
- package/lib/web/overlay_manager.js +235 -85
- package/lib/web/password_prompt.js +22 -14
- package/lib/web/pdf_attachment_viewer.js +38 -18
- package/lib/web/pdf_cursor_tools.js +39 -16
- package/lib/web/pdf_document_properties.js +255 -136
- package/lib/web/pdf_find_bar.js +84 -40
- package/lib/web/pdf_find_controller.js +495 -184
- package/lib/web/pdf_find_utils.js +111 -0
- package/lib/web/pdf_history.js +190 -53
- package/lib/web/pdf_link_service.js +138 -77
- package/lib/web/pdf_outline_viewer.js +122 -46
- package/lib/web/pdf_page_view.js +191 -67
- package/lib/web/pdf_presentation_mode.js +99 -34
- package/lib/web/pdf_print_service.js +61 -13
- package/lib/web/pdf_rendering_queue.js +28 -9
- package/lib/web/pdf_sidebar.js +141 -81
- package/lib/web/pdf_sidebar_resizer.js +42 -16
- package/lib/web/pdf_single_page_viewer.js +74 -66
- package/lib/web/pdf_thumbnail_view.js +104 -33
- package/lib/web/pdf_thumbnail_viewer.js +66 -26
- package/lib/web/pdf_viewer.component.js +112 -32
- package/lib/web/pdf_viewer.js +91 -52
- package/lib/web/preferences.js +284 -89
- package/lib/web/secondary_toolbar.js +165 -40
- package/lib/web/text_layer_builder.js +134 -59
- package/lib/web/toolbar.js +78 -43
- package/lib/web/ui_utils.js +462 -136
- package/lib/web/view_history.js +215 -67
- package/lib/web/viewer_compatibility.js +4 -13
- package/package.json +5 -4
- package/web/pdf_viewer.css +79 -11
- package/web/pdf_viewer.js +6107 -3748
- package/web/pdf_viewer.js.map +1 -1
- package/lib/display/dom_utils.js +0 -309
- package/lib/test/unit/dom_utils_spec.js +0 -89
- package/lib/test/unit/fonts_spec.js +0 -81
- package/lib/web/dom_events.js +0 -137
package/lib/core/crypto.js
CHANGED
@@ -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
|
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
|
-
|
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 =
|
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
|
29
|
+
var _util = require("../shared/util");
|
30
30
|
|
31
|
-
var
|
31
|
+
var _primitives = require("./primitives");
|
32
32
|
|
33
|
-
var
|
33
|
+
var _stream = require("./stream");
|
34
34
|
|
35
|
-
|
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 (
|
37
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
38
38
|
|
39
|
-
function
|
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 =
|
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:
|
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:
|
681
|
+
key: "_decrypt",
|
583
682
|
value: function _decrypt(input, key) {
|
584
|
-
var t
|
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:
|
759
|
+
key: "_encrypt",
|
655
760
|
value: function _encrypt(input, key) {
|
656
761
|
var s = this._s;
|
657
|
-
var t
|
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:
|
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:
|
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:
|
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 =
|
987
|
+
var AES128Cipher =
|
988
|
+
/*#__PURE__*/
|
989
|
+
function (_AESBaseCipher) {
|
848
990
|
_inherits(AES128Cipher, _AESBaseCipher);
|
849
991
|
|
850
992
|
function AES128Cipher(key) {
|
851
|
-
|
993
|
+
var _this;
|
852
994
|
|
853
|
-
|
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:
|
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
|
-
|
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
|
-
|
1052
|
+
var _this2;
|
903
1053
|
|
904
|
-
|
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:
|
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
|
921
|
-
|
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
|
-
|
1410
|
-
exports.
|
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;
|