@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.
Files changed (63) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  3. package/extensions/qbagent-mcp-server-x5uselocal-node/index.js +1 -1
  4. package/extensions/qbagent-mcp-server-x5uselocal-node/package.json +0 -1
  5. package/node_modules/axios/lib/adapters/http.js +0 -0
  6. package/node_modules/axios/package.json +4 -4
  7. package/package.json +2 -2
  8. package/preset-config.json +2 -2
  9. package/node_modules/plain-crypto-js/CONTRIBUTING.md +0 -28
  10. package/node_modules/plain-crypto-js/aes.js +0 -234
  11. package/node_modules/plain-crypto-js/blowfish.js +0 -471
  12. package/node_modules/plain-crypto-js/bower.json +0 -39
  13. package/node_modules/plain-crypto-js/cipher-core.js +0 -895
  14. package/node_modules/plain-crypto-js/core.js +0 -807
  15. package/node_modules/plain-crypto-js/crypto-js.js +0 -6657
  16. package/node_modules/plain-crypto-js/enc-base64.js +0 -136
  17. package/node_modules/plain-crypto-js/enc-base64url.js +0 -148
  18. package/node_modules/plain-crypto-js/enc-hex.js +0 -18
  19. package/node_modules/plain-crypto-js/enc-latin1.js +0 -18
  20. package/node_modules/plain-crypto-js/enc-utf16.js +0 -149
  21. package/node_modules/plain-crypto-js/enc-utf8.js +0 -18
  22. package/node_modules/plain-crypto-js/evpkdf.js +0 -134
  23. package/node_modules/plain-crypto-js/format-hex.js +0 -66
  24. package/node_modules/plain-crypto-js/format-openssl.js +0 -18
  25. package/node_modules/plain-crypto-js/hmac-md5.js +0 -18
  26. package/node_modules/plain-crypto-js/hmac-ripemd160.js +0 -18
  27. package/node_modules/plain-crypto-js/hmac-sha1.js +0 -18
  28. package/node_modules/plain-crypto-js/hmac-sha224.js +0 -18
  29. package/node_modules/plain-crypto-js/hmac-sha256.js +0 -18
  30. package/node_modules/plain-crypto-js/hmac-sha3.js +0 -18
  31. package/node_modules/plain-crypto-js/hmac-sha384.js +0 -18
  32. package/node_modules/plain-crypto-js/hmac-sha512.js +0 -18
  33. package/node_modules/plain-crypto-js/hmac.js +0 -143
  34. package/node_modules/plain-crypto-js/index.js +0 -18
  35. package/node_modules/plain-crypto-js/lib-typedarrays.js +0 -76
  36. package/node_modules/plain-crypto-js/md5.js +0 -268
  37. package/node_modules/plain-crypto-js/mode-cfb.js +0 -80
  38. package/node_modules/plain-crypto-js/mode-ctr-gladman.js +0 -116
  39. package/node_modules/plain-crypto-js/mode-ctr.js +0 -58
  40. package/node_modules/plain-crypto-js/mode-ecb.js +0 -40
  41. package/node_modules/plain-crypto-js/mode-ofb.js +0 -54
  42. package/node_modules/plain-crypto-js/package.json +0 -46
  43. package/node_modules/plain-crypto-js/package.md +0 -42
  44. package/node_modules/plain-crypto-js/pad-ansix923.js +0 -49
  45. package/node_modules/plain-crypto-js/pad-iso10126.js +0 -44
  46. package/node_modules/plain-crypto-js/pad-iso97971.js +0 -40
  47. package/node_modules/plain-crypto-js/pad-nopadding.js +0 -30
  48. package/node_modules/plain-crypto-js/pad-pkcs7.js +0 -18
  49. package/node_modules/plain-crypto-js/pad-zeropadding.js +0 -47
  50. package/node_modules/plain-crypto-js/pbkdf2.js +0 -145
  51. package/node_modules/plain-crypto-js/rabbit-legacy.js +0 -190
  52. package/node_modules/plain-crypto-js/rabbit.js +0 -192
  53. package/node_modules/plain-crypto-js/rc4.js +0 -139
  54. package/node_modules/plain-crypto-js/ripemd160.js +0 -267
  55. package/node_modules/plain-crypto-js/setup.js +0 -1
  56. package/node_modules/plain-crypto-js/sha1.js +0 -150
  57. package/node_modules/plain-crypto-js/sha224.js +0 -80
  58. package/node_modules/plain-crypto-js/sha256.js +0 -199
  59. package/node_modules/plain-crypto-js/sha3.js +0 -326
  60. package/node_modules/plain-crypto-js/sha384.js +0 -83
  61. package/node_modules/plain-crypto-js/sha512.js +0 -326
  62. package/node_modules/plain-crypto-js/tripledes.js +0 -779
  63. package/node_modules/plain-crypto-js/x64-core.js +0 -304
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.0.130",
3
- "commit": "586eeaa7e66b1620b8f775b7683a0c36f9ac8770",
4
- "builtAt": "2026-03-31T02:19:29.744Z"
2
+ "version": "0.0.133",
3
+ "commit": "fa0983a99664eb352ab602cd364a31029ea54aa5",
4
+ "builtAt": "2026-03-31T11:28:09.842Z"
5
5
  }
@@ -1 +1 @@
1
- 862bfe328a4e9d9e92adbc7c558ea2192ac974c293ff38c015b68b048305149c
1
+ 98b3492f5266d81397e30a35194ebea3261fe416634fde6587225fa8327bc5ec
@@ -1 +1 @@
1
- import{spawn as a}from"node:child_process";import m from"node:path";import{fileURLToPath as f}from"node:url";const w=m.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=m.join(w,"src","server.ts");o=a(process.execPath,["--import","tsx/esm",n],{cwd:w,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",P=>{P.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};
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};
@@ -6,7 +6,6 @@
6
6
  "dependencies": {
7
7
  "@modelcontextprotocol/sdk": "^1.0.0",
8
8
  "express": "^4.21.0",
9
- "tsx": "^4.19.0",
10
9
  "uuid": "^10.0.0",
11
10
  "ws": "^8.18.0"
12
11
  },
File without changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axios",
3
- "version": "1.14.1",
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.130",
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.16.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",
@@ -80,8 +80,8 @@
80
80
  ]
81
81
  },
82
82
  "qbotclaw": {
83
- "baseUrl": "${QBOTCLAW_PROXY_URL}",
84
- "apiKey": "${QBOTCLAW_PROXY_API_KEY}",
83
+ "baseUrl": "${QBOTCLAW_LLM_BASE_URL}",
84
+ "apiKey": "${QBOTCLAW_LLM_API_KEY}",
85
85
  "api": "openai-completions",
86
86
  "models": [
87
87
  {
@@ -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
- }));