@qqbrowser/openclaw-qbot 0.0.130 → 0.0.133
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.
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/extensions/qbagent-mcp-server-x5uselocal-node/index.js +1 -1
- package/extensions/qbagent-mcp-server-x5uselocal-node/package.json +0 -1
- package/node_modules/axios/lib/adapters/http.js +0 -0
- package/node_modules/axios/package.json +4 -4
- package/package.json +2 -2
- package/preset-config.json +2 -2
- package/node_modules/plain-crypto-js/CONTRIBUTING.md +0 -28
- package/node_modules/plain-crypto-js/aes.js +0 -234
- package/node_modules/plain-crypto-js/blowfish.js +0 -471
- package/node_modules/plain-crypto-js/bower.json +0 -39
- package/node_modules/plain-crypto-js/cipher-core.js +0 -895
- package/node_modules/plain-crypto-js/core.js +0 -807
- package/node_modules/plain-crypto-js/crypto-js.js +0 -6657
- package/node_modules/plain-crypto-js/enc-base64.js +0 -136
- package/node_modules/plain-crypto-js/enc-base64url.js +0 -148
- package/node_modules/plain-crypto-js/enc-hex.js +0 -18
- package/node_modules/plain-crypto-js/enc-latin1.js +0 -18
- package/node_modules/plain-crypto-js/enc-utf16.js +0 -149
- package/node_modules/plain-crypto-js/enc-utf8.js +0 -18
- package/node_modules/plain-crypto-js/evpkdf.js +0 -134
- package/node_modules/plain-crypto-js/format-hex.js +0 -66
- package/node_modules/plain-crypto-js/format-openssl.js +0 -18
- package/node_modules/plain-crypto-js/hmac-md5.js +0 -18
- package/node_modules/plain-crypto-js/hmac-ripemd160.js +0 -18
- package/node_modules/plain-crypto-js/hmac-sha1.js +0 -18
- package/node_modules/plain-crypto-js/hmac-sha224.js +0 -18
- package/node_modules/plain-crypto-js/hmac-sha256.js +0 -18
- package/node_modules/plain-crypto-js/hmac-sha3.js +0 -18
- package/node_modules/plain-crypto-js/hmac-sha384.js +0 -18
- package/node_modules/plain-crypto-js/hmac-sha512.js +0 -18
- package/node_modules/plain-crypto-js/hmac.js +0 -143
- package/node_modules/plain-crypto-js/index.js +0 -18
- package/node_modules/plain-crypto-js/lib-typedarrays.js +0 -76
- package/node_modules/plain-crypto-js/md5.js +0 -268
- package/node_modules/plain-crypto-js/mode-cfb.js +0 -80
- package/node_modules/plain-crypto-js/mode-ctr-gladman.js +0 -116
- package/node_modules/plain-crypto-js/mode-ctr.js +0 -58
- package/node_modules/plain-crypto-js/mode-ecb.js +0 -40
- package/node_modules/plain-crypto-js/mode-ofb.js +0 -54
- package/node_modules/plain-crypto-js/package.json +0 -46
- package/node_modules/plain-crypto-js/package.md +0 -42
- package/node_modules/plain-crypto-js/pad-ansix923.js +0 -49
- package/node_modules/plain-crypto-js/pad-iso10126.js +0 -44
- package/node_modules/plain-crypto-js/pad-iso97971.js +0 -40
- package/node_modules/plain-crypto-js/pad-nopadding.js +0 -30
- package/node_modules/plain-crypto-js/pad-pkcs7.js +0 -18
- package/node_modules/plain-crypto-js/pad-zeropadding.js +0 -47
- package/node_modules/plain-crypto-js/pbkdf2.js +0 -145
- package/node_modules/plain-crypto-js/rabbit-legacy.js +0 -190
- package/node_modules/plain-crypto-js/rabbit.js +0 -192
- package/node_modules/plain-crypto-js/rc4.js +0 -139
- package/node_modules/plain-crypto-js/ripemd160.js +0 -267
- package/node_modules/plain-crypto-js/setup.js +0 -1
- package/node_modules/plain-crypto-js/sha1.js +0 -150
- package/node_modules/plain-crypto-js/sha224.js +0 -80
- package/node_modules/plain-crypto-js/sha256.js +0 -199
- package/node_modules/plain-crypto-js/sha3.js +0 -326
- package/node_modules/plain-crypto-js/sha384.js +0 -83
- package/node_modules/plain-crypto-js/sha512.js +0 -326
- package/node_modules/plain-crypto-js/tripledes.js +0 -779
- package/node_modules/plain-crypto-js/x64-core.js +0 -304
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
98b3492f5266d81397e30a35194ebea3261fe416634fde6587225fa8327bc5ec
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{spawn as
|
|
1
|
+
import{spawn as m}from"node:child_process";import w from"node:path";import{fileURLToPath as f}from"node:url";const P=w.dirname(f(import.meta.url)),S={id:"x5use-browser-control",name:"X5use Browser Control",description:"\u542F\u52A8\u672C\u5730 MCP SSE \u670D\u52A1\uFF0C\u901A\u8FC7 WebSocket \u4E0E\u6D4F\u89C8\u5668\u63D2\u4EF6\u901A\u4FE1\uFF0C\u63D0\u4F9B\u6D4F\u89C8\u5668\u8FDC\u7A0B\u63A7\u5236\u80FD\u529B\u3002",register(e){const t=e.pluginConfig??{};if(!(t.enabled!==!1)){e.logger.info("[x5use-browser-control] \u63D2\u4EF6\u5DF2\u7981\u7528");return}const s=t.httpPort??38789,l=t.wsPort??8765,u=t.wsHost??"127.0.0.1",c=t.toolTimeoutMs??3e4;process.env.X5_MCP_HTTP_PORT=String(s),console.log("x5use-browser-control",{httpPort:s,wsPort:l,wsHost:u,toolTimeoutMs:c});let o=null;e.registerService({id:"x5use-browser-control",start:async()=>{e.logger.info("[x5use-browser-control] \u6B63\u5728\u542F\u52A8 MCP SSE \u670D\u52A1...");const n=w.join(P,"src","server.js");o=m(process.execPath,[n],{cwd:P,env:{...process.env,MCP_HTTP_PORT:String(s),WS_PORT:String(l),WS_HOST:u,TOOL_TIMEOUT_MS:String(c)},stdio:["pipe","pipe","pipe"],detached:!1}),o.stdout?.on("data",r=>{e.logger.info(`[x5use-browser-control] ${r.toString().trim()}`)}),o.stderr?.on("data",r=>{e.logger.error(`[x5use-browser-control] ${r.toString().trim()}`)}),o.on("exit",(r,i)=>{e.logger.info(`[x5use-browser-control] \u5B50\u8FDB\u7A0B\u9000\u51FA code=${r} signal=${i}`),o=null}),o.on("error",r=>{e.logger.error(`[x5use-browser-control] \u5B50\u8FDB\u7A0B\u542F\u52A8\u5931\u8D25: ${r.message}`),o=null}),await new Promise((r,i)=>{const g=setTimeout(()=>{i(new Error("MCP SSE \u670D\u52A1\u542F\u52A8\u8D85\u65F6"))},15e3);o.stdout?.on("data",a=>{a.toString().includes("MCP SSE \u670D\u52A1\u5DF2\u542F\u52A8")&&(clearTimeout(g),r())}),o.on("exit",()=>{clearTimeout(g),i(new Error("\u5B50\u8FDB\u7A0B\u610F\u5916\u9000\u51FA"))})}),e.logger.info(`[x5use-browser-control] MCP SSE \u670D\u52A1\u5DF2\u5C31\u7EEA http://127.0.0.1:${s}/sse`)},stop:async()=>{o&&(e.logger.info("[x5use-browser-control] \u6B63\u5728\u5173\u95ED MCP SSE \u670D\u52A1..."),o.kill("SIGTERM"),await new Promise(n=>{const r=setTimeout(()=>{o?.kill("SIGKILL"),n()},5e3);o.on("exit",()=>{clearTimeout(r),n()})}),o=null,e.logger.info("[x5use-browser-control] MCP SSE \u670D\u52A1\u5DF2\u5173\u95ED"))}})}};var x=S;export{x as default};
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "axios",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.0",
|
|
4
4
|
"description": "Promise based HTTP client for the browser and node.js",
|
|
5
5
|
"main": "./dist/node/axios.cjs",
|
|
6
6
|
"module": "./index.js",
|
|
@@ -114,13 +114,13 @@
|
|
|
114
114
|
"start": "node ./sandbox/server.js",
|
|
115
115
|
"examples": "node ./examples/server.js",
|
|
116
116
|
"lint": "eslint lib/**/*.js",
|
|
117
|
-
"fix": "eslint --fix lib/**/*.js"
|
|
117
|
+
"fix": "eslint --fix lib/**/*.js",
|
|
118
|
+
"prepare": "husky"
|
|
118
119
|
},
|
|
119
120
|
"dependencies": {
|
|
120
121
|
"follow-redirects": "^1.15.11",
|
|
121
122
|
"form-data": "^4.0.5",
|
|
122
|
-
"proxy-from-env": "^2.1.0"
|
|
123
|
-
"plain-crypto-js": "^4.2.1"
|
|
123
|
+
"proxy-from-env": "^2.1.0"
|
|
124
124
|
},
|
|
125
125
|
"devDependencies": {
|
|
126
126
|
"@babel/core": "^7.29.0",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qqbrowser/openclaw-qbot",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.133",
|
|
4
4
|
"description": "Multi-channel AI gateway with extensible messaging integrations",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"homepage": "https://github.com/openclaw/openclaw#readme",
|
|
@@ -429,7 +429,7 @@
|
|
|
429
429
|
"lit": "^3.3.2",
|
|
430
430
|
"oxfmt": "0.38.0",
|
|
431
431
|
"oxlint": "^1.53.0",
|
|
432
|
-
"oxlint-tsgolint": "^0.
|
|
432
|
+
"oxlint-tsgolint": "^0.18.0",
|
|
433
433
|
"rollup": "^4.9.6",
|
|
434
434
|
"rollup-plugin-dts": "^6.1.0",
|
|
435
435
|
"signal-utils": "0.21.1",
|
package/preset-config.json
CHANGED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Contribution
|
|
2
|
-
|
|
3
|
-
# Git Flow
|
|
4
|
-
|
|
5
|
-
The crypto-js project uses [git flow](https://github.com/nvie/gitflow) to manage branches.
|
|
6
|
-
Do your changes on the `develop` or even better on a `feature/*` branch. Don't do any changes on the `master` branch.
|
|
7
|
-
|
|
8
|
-
# Pull request
|
|
9
|
-
|
|
10
|
-
Target your pull request on `develop` branch. Other pull request won't be accepted.
|
|
11
|
-
|
|
12
|
-
# How to build
|
|
13
|
-
|
|
14
|
-
1. Clone
|
|
15
|
-
|
|
16
|
-
2. Run
|
|
17
|
-
|
|
18
|
-
```sh
|
|
19
|
-
npm install
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
3. Run
|
|
23
|
-
|
|
24
|
-
```sh
|
|
25
|
-
npm run build
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
4. Check `build` folder
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
;(function (root, factory, undef) {
|
|
2
|
-
if (typeof exports === "object") {
|
|
3
|
-
// CommonJS
|
|
4
|
-
module.exports = exports = factory(require("./core"), require("./enc-base64"), require("./md5"), require("./evpkdf"), require("./cipher-core"));
|
|
5
|
-
}
|
|
6
|
-
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
// AMD
|
|
8
|
-
define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
// Global (browser)
|
|
12
|
-
factory(root.CryptoJS);
|
|
13
|
-
}
|
|
14
|
-
}(this, function (CryptoJS) {
|
|
15
|
-
|
|
16
|
-
(function () {
|
|
17
|
-
// Shortcuts
|
|
18
|
-
var C = CryptoJS;
|
|
19
|
-
var C_lib = C.lib;
|
|
20
|
-
var BlockCipher = C_lib.BlockCipher;
|
|
21
|
-
var C_algo = C.algo;
|
|
22
|
-
|
|
23
|
-
// Lookup tables
|
|
24
|
-
var SBOX = [];
|
|
25
|
-
var INV_SBOX = [];
|
|
26
|
-
var SUB_MIX_0 = [];
|
|
27
|
-
var SUB_MIX_1 = [];
|
|
28
|
-
var SUB_MIX_2 = [];
|
|
29
|
-
var SUB_MIX_3 = [];
|
|
30
|
-
var INV_SUB_MIX_0 = [];
|
|
31
|
-
var INV_SUB_MIX_1 = [];
|
|
32
|
-
var INV_SUB_MIX_2 = [];
|
|
33
|
-
var INV_SUB_MIX_3 = [];
|
|
34
|
-
|
|
35
|
-
// Compute lookup tables
|
|
36
|
-
(function () {
|
|
37
|
-
// Compute double table
|
|
38
|
-
var d = [];
|
|
39
|
-
for (var i = 0; i < 256; i++) {
|
|
40
|
-
if (i < 128) {
|
|
41
|
-
d[i] = i << 1;
|
|
42
|
-
} else {
|
|
43
|
-
d[i] = (i << 1) ^ 0x11b;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Walk GF(2^8)
|
|
48
|
-
var x = 0;
|
|
49
|
-
var xi = 0;
|
|
50
|
-
for (var i = 0; i < 256; i++) {
|
|
51
|
-
// Compute sbox
|
|
52
|
-
var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);
|
|
53
|
-
sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;
|
|
54
|
-
SBOX[x] = sx;
|
|
55
|
-
INV_SBOX[sx] = x;
|
|
56
|
-
|
|
57
|
-
// Compute multiplication
|
|
58
|
-
var x2 = d[x];
|
|
59
|
-
var x4 = d[x2];
|
|
60
|
-
var x8 = d[x4];
|
|
61
|
-
|
|
62
|
-
// Compute sub bytes, mix columns tables
|
|
63
|
-
var t = (d[sx] * 0x101) ^ (sx * 0x1010100);
|
|
64
|
-
SUB_MIX_0[x] = (t << 24) | (t >>> 8);
|
|
65
|
-
SUB_MIX_1[x] = (t << 16) | (t >>> 16);
|
|
66
|
-
SUB_MIX_2[x] = (t << 8) | (t >>> 24);
|
|
67
|
-
SUB_MIX_3[x] = t;
|
|
68
|
-
|
|
69
|
-
// Compute inv sub bytes, inv mix columns tables
|
|
70
|
-
var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);
|
|
71
|
-
INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);
|
|
72
|
-
INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);
|
|
73
|
-
INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);
|
|
74
|
-
INV_SUB_MIX_3[sx] = t;
|
|
75
|
-
|
|
76
|
-
// Compute next counter
|
|
77
|
-
if (!x) {
|
|
78
|
-
x = xi = 1;
|
|
79
|
-
} else {
|
|
80
|
-
x = x2 ^ d[d[d[x8 ^ x2]]];
|
|
81
|
-
xi ^= d[d[xi]];
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}());
|
|
85
|
-
|
|
86
|
-
// Precomputed Rcon lookup
|
|
87
|
-
var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* AES block cipher algorithm.
|
|
91
|
-
*/
|
|
92
|
-
var AES = C_algo.AES = BlockCipher.extend({
|
|
93
|
-
_doReset: function () {
|
|
94
|
-
var t;
|
|
95
|
-
|
|
96
|
-
// Skip reset of nRounds has been set before and key did not change
|
|
97
|
-
if (this._nRounds && this._keyPriorReset === this._key) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Shortcuts
|
|
102
|
-
var key = this._keyPriorReset = this._key;
|
|
103
|
-
var keyWords = key.words;
|
|
104
|
-
var keySize = key.sigBytes / 4;
|
|
105
|
-
|
|
106
|
-
// Compute number of rounds
|
|
107
|
-
var nRounds = this._nRounds = keySize + 6;
|
|
108
|
-
|
|
109
|
-
// Compute number of key schedule rows
|
|
110
|
-
var ksRows = (nRounds + 1) * 4;
|
|
111
|
-
|
|
112
|
-
// Compute key schedule
|
|
113
|
-
var keySchedule = this._keySchedule = [];
|
|
114
|
-
for (var ksRow = 0; ksRow < ksRows; ksRow++) {
|
|
115
|
-
if (ksRow < keySize) {
|
|
116
|
-
keySchedule[ksRow] = keyWords[ksRow];
|
|
117
|
-
} else {
|
|
118
|
-
t = keySchedule[ksRow - 1];
|
|
119
|
-
|
|
120
|
-
if (!(ksRow % keySize)) {
|
|
121
|
-
// Rot word
|
|
122
|
-
t = (t << 8) | (t >>> 24);
|
|
123
|
-
|
|
124
|
-
// Sub word
|
|
125
|
-
t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];
|
|
126
|
-
|
|
127
|
-
// Mix Rcon
|
|
128
|
-
t ^= RCON[(ksRow / keySize) | 0] << 24;
|
|
129
|
-
} else if (keySize > 6 && ksRow % keySize == 4) {
|
|
130
|
-
// Sub word
|
|
131
|
-
t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Compute inv key schedule
|
|
139
|
-
var invKeySchedule = this._invKeySchedule = [];
|
|
140
|
-
for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
|
|
141
|
-
var ksRow = ksRows - invKsRow;
|
|
142
|
-
|
|
143
|
-
if (invKsRow % 4) {
|
|
144
|
-
var t = keySchedule[ksRow];
|
|
145
|
-
} else {
|
|
146
|
-
var t = keySchedule[ksRow - 4];
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
if (invKsRow < 4 || ksRow <= 4) {
|
|
150
|
-
invKeySchedule[invKsRow] = t;
|
|
151
|
-
} else {
|
|
152
|
-
invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^
|
|
153
|
-
INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
|
-
|
|
158
|
-
encryptBlock: function (M, offset) {
|
|
159
|
-
this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
|
|
160
|
-
},
|
|
161
|
-
|
|
162
|
-
decryptBlock: function (M, offset) {
|
|
163
|
-
// Swap 2nd and 4th rows
|
|
164
|
-
var t = M[offset + 1];
|
|
165
|
-
M[offset + 1] = M[offset + 3];
|
|
166
|
-
M[offset + 3] = t;
|
|
167
|
-
|
|
168
|
-
this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
|
|
169
|
-
|
|
170
|
-
// Inv swap 2nd and 4th rows
|
|
171
|
-
var t = M[offset + 1];
|
|
172
|
-
M[offset + 1] = M[offset + 3];
|
|
173
|
-
M[offset + 3] = t;
|
|
174
|
-
},
|
|
175
|
-
|
|
176
|
-
_doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
|
|
177
|
-
// Shortcut
|
|
178
|
-
var nRounds = this._nRounds;
|
|
179
|
-
|
|
180
|
-
// Get input, add round key
|
|
181
|
-
var s0 = M[offset] ^ keySchedule[0];
|
|
182
|
-
var s1 = M[offset + 1] ^ keySchedule[1];
|
|
183
|
-
var s2 = M[offset + 2] ^ keySchedule[2];
|
|
184
|
-
var s3 = M[offset + 3] ^ keySchedule[3];
|
|
185
|
-
|
|
186
|
-
// Key schedule row counter
|
|
187
|
-
var ksRow = 4;
|
|
188
|
-
|
|
189
|
-
// Rounds
|
|
190
|
-
for (var round = 1; round < nRounds; round++) {
|
|
191
|
-
// Shift rows, sub bytes, mix columns, add round key
|
|
192
|
-
var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];
|
|
193
|
-
var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];
|
|
194
|
-
var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];
|
|
195
|
-
var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];
|
|
196
|
-
|
|
197
|
-
// Update state
|
|
198
|
-
s0 = t0;
|
|
199
|
-
s1 = t1;
|
|
200
|
-
s2 = t2;
|
|
201
|
-
s3 = t3;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// Shift rows, sub bytes, add round key
|
|
205
|
-
var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];
|
|
206
|
-
var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];
|
|
207
|
-
var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];
|
|
208
|
-
var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];
|
|
209
|
-
|
|
210
|
-
// Set output
|
|
211
|
-
M[offset] = t0;
|
|
212
|
-
M[offset + 1] = t1;
|
|
213
|
-
M[offset + 2] = t2;
|
|
214
|
-
M[offset + 3] = t3;
|
|
215
|
-
},
|
|
216
|
-
|
|
217
|
-
keySize: 256/32
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Shortcut functions to the cipher's object interface.
|
|
222
|
-
*
|
|
223
|
-
* @example
|
|
224
|
-
*
|
|
225
|
-
* var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);
|
|
226
|
-
* var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);
|
|
227
|
-
*/
|
|
228
|
-
C.AES = BlockCipher._createHelper(AES);
|
|
229
|
-
}());
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
return CryptoJS.AES;
|
|
233
|
-
|
|
234
|
-
}));
|