qsh-webview-sdk 2.0.4 → 2.0.5
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/README.md +18 -8
- package/dist/{uni-webview.es.js → qsh-webview-sdk.es.js} +1 -1
- package/dist/qsh-webview-sdk.es.js.map +1 -0
- package/dist/{uni-webview.umd.js → qsh-webview-sdk.umd.js} +1 -1
- package/dist/qsh-webview-sdk.umd.js.map +1 -0
- package/package.json +6 -6
- package/dist/uni-webview.es.js.map +0 -1
- package/dist/uni-webview.umd.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# QSH WebView SDK
|
|
2
2
|
|
|
3
|
-
一个重构后的
|
|
3
|
+
一个重构后的 QSH WebView SDK,支持微信小程序和 APP 端的 WebView 与原生端通信。
|
|
4
4
|
|
|
5
5
|
## 特性
|
|
6
6
|
|
|
@@ -22,7 +22,7 @@ npm install qsh-webview-sdk
|
|
|
22
22
|
### CDN 引入
|
|
23
23
|
|
|
24
24
|
```html
|
|
25
|
-
<script src="path/to/
|
|
25
|
+
<script src="path/to/qsh-webview-sdk.umd.js"></script>
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
## 使用方法
|
|
@@ -37,10 +37,15 @@ npm install qsh-webview-sdk
|
|
|
37
37
|
}
|
|
38
38
|
</script>
|
|
39
39
|
|
|
40
|
-
<!-- 引入
|
|
41
|
-
<script type="text/javascript" src="path/to/
|
|
40
|
+
<!-- 引入 QSH WebView SDK -->
|
|
41
|
+
<script type="text/javascript" src="path/to/qsh-webview-sdk.umd.js"></script>
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
+
### 初始化
|
|
45
|
+
|
|
46
|
+
- SDK 会在 DOM 就绪后自动初始化,并触发 `UniAppJSBridgeReady` 事件。
|
|
47
|
+
- 可使用 `qsh.ready()` 等待准备完成;如需控制时机,可手动调用 `qsh.init()`。
|
|
48
|
+
|
|
44
49
|
### 基础使用
|
|
45
50
|
|
|
46
51
|
```javascript
|
|
@@ -142,7 +147,7 @@ const plain = qsh.crypto.sm4Decrypt(cipher, key);
|
|
|
142
147
|
#### UMD 使用
|
|
143
148
|
|
|
144
149
|
```html
|
|
145
|
-
<script src="path/to/
|
|
150
|
+
<script src="path/to/qsh-webview-sdk.umd.js"></script>
|
|
146
151
|
<script>
|
|
147
152
|
// 直接通过全局 qsh 访问
|
|
148
153
|
const hash = window.qsh.crypto.sm3Hash('abc');
|
|
@@ -173,6 +178,10 @@ const plain = qsh.crypto.sm4Decrypt(cipher, key);
|
|
|
173
178
|
| `postMessage` | 向原生端发送消息 | `{ data?: any }` |
|
|
174
179
|
| `getEnv` | 获取当前环境信息 | `callback: Function` |
|
|
175
180
|
|
|
181
|
+
### 加密 API
|
|
182
|
+
|
|
183
|
+
- 通过 `qsh.crypto` 使用加密能力,详情与示例参见上文“加密能力(SM2/SM3/SM4)”。
|
|
184
|
+
|
|
176
185
|
### 环境属性
|
|
177
186
|
|
|
178
187
|
| 属性 | 类型 | 说明 |
|
|
@@ -208,6 +217,7 @@ npm run build
|
|
|
208
217
|
|
|
209
218
|
项目包含以下示例文件:
|
|
210
219
|
|
|
220
|
+
- `example/index.html` - 入口示例
|
|
211
221
|
- `example/test.html` - 完整的测试页面,包含所有功能演示
|
|
212
222
|
- `example/simple.html` - 简单示例,展示基础用法
|
|
213
223
|
- `example/npm-usage.html` - 以 ESModule 方式演示,包括加密能力示例
|
|
@@ -226,8 +236,8 @@ src/
|
|
|
226
236
|
│ └── app.js # APP 端
|
|
227
237
|
├── api/ # API 接口
|
|
228
238
|
│ ├── navigation.js # 导航 API
|
|
229
|
-
│
|
|
230
|
-
|
|
239
|
+
│ ├── message.js # 消息 API
|
|
240
|
+
│ └── crypto.js # 加密 API(SM2/SM3/SM4)
|
|
231
241
|
├── index.js # 主入口
|
|
232
242
|
└── index.d.ts # 类型定义
|
|
233
243
|
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qsh-webview-sdk.es.js","sources":["../src/core/environment.js","../src/core/bridge.js","../src/core/messenger.js","../src/platforms/weixin.js","../src/platforms/app.js","../src/api/navigation.js","../src/api/message.js","../node_modules/jsbn/index.js","../node_modules/miniprogram-sm-crypto/miniprogram_dist/index.js","../src/api/crypto.js","../src/index.js"],"sourcesContent":["/**\r\n * 环境检测模块\r\n * 检测当前运行环境(微信小程序、APP等)\r\n */\r\n\r\n// 检测是否在微信小程序环境\r\nexport function isWeixinMiniProgram() {\r\n // 1) 官方标识:小程序 web-view 中会注入该变量\r\n if (typeof window !== 'undefined' && window.__wxjs_environment === 'miniprogram') {\r\n return true;\r\n }\r\n // 2) jweixin >= 1.6.0 提供 wx.miniProgram\r\n if (typeof window !== 'undefined' && window.wx && window.wx.miniProgram) {\r\n return true;\r\n }\r\n // 3) 兜底:在微信内且 UA 带 miniProgram 关键词\r\n if (/micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n// 检测是否在 APP 环境 (Plus)\r\nexport function isAppPlus() {\r\n return typeof window.plus !== 'undefined';\r\n}\r\n\r\n// 检测是否在 NVUE 环境\r\nexport function isNvue() {\r\n return window.__dcloud_weex_postMessage || window.__dcloud_weex_;\r\n}\r\n\r\n// 检测是否在 UVUE 环境 (UniApp X)\r\nexport function isUvue() {\r\n return window.__uniapp_x_postMessage || window.__uniapp_x_;\r\n}\r\n\r\n// 检测是否是 UniApp 环境\r\nexport function isUniApp() {\r\n return /uni-app/i.test(navigator.userAgent);\r\n}\r\n\r\n// 检测是否是 Html5Plus 环境\r\nexport function isHtml5Plus() {\r\n return /Html5Plus/i.test(navigator.userAgent);\r\n}\r\n\r\n// 获取当前环境类型\r\nexport function getEnvironment() {\r\n if (isUvue()) {\r\n return 'uvue';\r\n }\r\n if (isNvue()) {\r\n return 'nvue';\r\n }\r\n if (isWeixinMiniProgram()) {\r\n return 'weixin';\r\n }\r\n if (isAppPlus()) {\r\n return 'plus';\r\n }\r\n return 'h5';\r\n}\r\n\r\n// 环境信息对象\r\nexport const environment = {\r\n isWeixinMiniProgram: isWeixinMiniProgram(),\r\n isAppPlus: isAppPlus(),\r\n isNvue: isNvue(),\r\n isUvue: isUvue(),\r\n isUniApp: isUniApp(),\r\n isHtml5Plus: isHtml5Plus(),\r\n type: getEnvironment()\r\n};","/**\r\n * JSBridge 初始化模块\r\n * 负责初始化与原生端的桥接\r\n */\r\n\r\nimport { isUniApp, isHtml5Plus, isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 文档准备状态正则\r\nconst READY_STATE_REGEX = /complete|loaded|interactive/;\r\n\r\n/**\r\n * 触发 JSBridge 准备就绪事件\r\n */\r\nfunction fireJSBridgeReadyEvent() {\r\n window.UniAppJSBridge = true;\r\n document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n}\r\n\r\n/**\r\n * 在 APP 环境初始化\r\n */\r\nfunction initializeInApp(callback) {\r\n if (isUniApp() || isHtml5Plus()) {\r\n if (window.__uniapp_x_postMessage || window.__uniapp_x_ || \r\n window.__dcloud_weex_postMessage || window.__dcloud_weex_) {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n } else if (window.plus && READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('plusready', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 在微信小程序环境初始化\r\n */\r\nfunction initializeInWeixin(callback) {\r\n if (window.wx && window.wx.miniProgram) {\r\n if (window.WeixinJSBridge && window.WeixinJSBridge.invoke) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('WeixinJSBridgeReady', callback);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 初始化 JSBridge\r\n * @param {Function} callback - 初始化完成回调\r\n * @returns {boolean} - 是否成功初始化\r\n */\r\nexport function initializeBridge(callback) {\r\n // 尝试 APP 环境初始化\r\n if (initializeInApp(callback)) {\r\n return true;\r\n }\r\n \r\n // 尝试微信小程序环境初始化\r\n if (initializeInWeixin(callback)) {\r\n return true;\r\n }\r\n \r\n // 默认情况下,在 DOM 加载完成后初始化;若已完成则立即回调\r\n if (READY_STATE_REGEX.test(document.readyState)) {\r\n setTimeout(callback, 0);\r\n } else {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * 等待 JSBridge 准备就绪\r\n * @returns {Promise}\r\n */\r\nexport function waitForBridge() {\r\n return new Promise((resolve) => {\r\n if (window.UniAppJSBridge) {\r\n resolve();\r\n } else {\r\n document.addEventListener('UniAppJSBridgeReady', resolve, { once: true });\r\n }\r\n });\r\n}\r\n\r\n// 移除最后一行的自动初始化\r\n// initializeBridge(fireJSBridgeReadyEvent);\r\n\r\n// 添加导出 fireJSBridgeReadyEvent\r\nexport { fireJSBridgeReadyEvent };\r\n\r\n// 添加一个标志来避免重复初始化\r\nlet isInitialized = false;\r\n\r\n/**\r\n * 手动初始化 Bridge\r\n */\r\nexport function initBridge() {\r\n if (!isInitialized) {\r\n isInitialized = true;\r\n initializeBridge(fireJSBridgeReadyEvent);\r\n }\r\n}","/**\r\n * 消息通信核心模块\r\n * 负责与原生端进行消息通信\r\n */\r\n\r\nimport { isUvue, isNvue, isAppPlus } from './environment.js';\r\n\r\n// 存储 webview ID 列表\r\nlet webviewIds = [];\r\n\r\n/**\r\n * 设置 webview ID\r\n * @param {string[]} ids - webview ID 列表\r\n */\r\nexport function setWebviewIds(ids) {\r\n webviewIds = ids;\r\n}\r\n\r\n/**\r\n * 获取当前 webview ID\r\n */\r\nfunction getCurrentWebviewId() {\r\n if (webviewIds.length === 0 && window.plus) {\r\n const currentWebview = plus.webview.currentWebview();\r\n if (!currentWebview) {\r\n throw new Error('plus.webview.currentWebview() is undefined');\r\n }\r\n const parent = currentWebview.parent();\r\n const webviewId = parent ? parent.id : currentWebview.id;\r\n webviewIds.push(webviewId);\r\n }\r\n return webviewIds;\r\n}\r\n\r\n/**\r\n * 发送消息到 UniApp X\r\n */\r\nfunction sendToUniAppX(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: data };\r\n if (window.__uniapp_x_postMessage) {\r\n return window.__uniapp_x_postMessage(postData);\r\n }\r\n return window.__uniapp_x_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__uniapp_x_postMessage) {\r\n window.__uniapp_x_postMessageToService(serviceMessage);\r\n } else {\r\n window.__uniapp_x_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 NVUE\r\n */\r\nfunction sendToNvue(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n if (name === 'postMessage') {\r\n const postData = { data: [data] };\r\n if (window.__dcloud_weex_postMessage) {\r\n return window.__dcloud_weex_postMessage(postData);\r\n }\r\n return window.__dcloud_weex_.postMessage(JSON.stringify(postData));\r\n }\r\n\r\n const serviceMessage = {\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: webviewIds\r\n }\r\n };\r\n\r\n if (window.__dcloud_weex_postMessage) {\r\n window.__dcloud_weex_postMessageToService(serviceMessage);\r\n } else {\r\n window.__dcloud_weex_.postMessageToService(JSON.stringify(serviceMessage));\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到 Plus 环境\r\n */\r\nfunction sendToPlus(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n const currentWebviewIds = getCurrentWebviewId();\r\n\r\n if (plus.webview.getWebviewById('__uniapp__service')) {\r\n plus.webview.postMessageToUniNView({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n args: {\r\n data: message,\r\n webviewIds: currentWebviewIds\r\n }\r\n }, '__uniapp__service');\r\n } else {\r\n const jsonMessage = JSON.stringify(message);\r\n const jsonWebviewIds = JSON.stringify(currentWebviewIds);\r\n plus.webview.getLaunchWebview().evalJS(\r\n `UniPlusBridge.subscribeHandler(\"WEB_INVOKE_APPSERVICE\",${jsonMessage},${jsonWebviewIds});`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * 发送消息到父窗口(H5环境)\r\n */\r\nfunction sendToParent(name, data) {\r\n const message = {\r\n options: {\r\n timestamp: +new Date()\r\n },\r\n name: name,\r\n arg: data\r\n };\r\n\r\n window.parent.postMessage({\r\n type: 'WEB_INVOKE_APPSERVICE',\r\n data: message,\r\n pageId: ''\r\n }, '*');\r\n}\r\n\r\n/**\r\n * 统一消息发送接口\r\n * @param {string} name - 消息名称\r\n * @param {object} data - 消息数据\r\n */\r\nexport function sendMessage(name, data) {\r\n if (isUvue()) {\r\n sendToUniAppX(name, data);\r\n } else if (isNvue()) {\r\n sendToNvue(name, data);\r\n } else if (isAppPlus()) {\r\n sendToPlus(name, data);\r\n } else {\r\n // H5 环境或其他\r\n sendToParent(name, data);\r\n }\r\n}","/**\r\n * 微信小程序平台适配层\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\n\r\n/**\r\n * 微信小程序导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n \r\n // 如果有原生 wx.miniProgram API,优先使用\r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateTo({\r\n url: url\r\n });\r\n }\r\n \r\n // 否则使用消息通信\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.navigateBack({\r\n delta: parseInt(delta)\r\n });\r\n }\r\n \r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.switchTab({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.reLaunch({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 微信小程序重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.redirectTo({\r\n url: url\r\n });\r\n }\r\n \r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到微信小程序\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n \r\n if (window.wx && window.wx.miniProgram) {\r\n return window.wx.miniProgram.postMessage({\r\n data: data\r\n });\r\n }\r\n \r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取微信小程序环境信息\r\n */\r\nexport function getEnv(callback) {\r\n if (window.wx && window.wx.miniProgram && window.wx.miniProgram.getEnv) {\r\n return window.wx.miniProgram.getEnv(callback);\r\n }\r\n \r\n // 回调微信环境信息\r\n callback({\r\n miniprogram: true,\r\n weixin: true\r\n });\r\n}","/**\r\n * APP 平台适配层(Plus/Weex/UniX)\r\n */\r\n\r\nimport { sendMessage } from '../core/messenger.js';\r\nimport { isUvue, isNvue, isAppPlus } from '../core/environment.js';\r\n\r\n/**\r\n * APP 导航到新页面\r\n */\r\nexport function navigateTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('navigateTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 返回上一页\r\n */\r\nexport function navigateBack(options = {}) {\r\n const { delta = 1 } = options;\r\n sendMessage('navigateBack', {\r\n delta: parseInt(delta)\r\n });\r\n}\r\n\r\n/**\r\n * APP 切换 Tab\r\n */\r\nexport function switchTab(options = {}) {\r\n const { url } = options;\r\n sendMessage('switchTab', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重新启动\r\n */\r\nexport function reLaunch(options = {}) {\r\n const { url } = options;\r\n sendMessage('reLaunch', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * APP 重定向\r\n */\r\nexport function redirectTo(options = {}) {\r\n const { url } = options;\r\n sendMessage('redirectTo', {\r\n url: encodeURI(url)\r\n });\r\n}\r\n\r\n/**\r\n * 发送消息到 APP\r\n */\r\nexport function postMessage(options = {}) {\r\n const { data = {} } = options;\r\n sendMessage('postMessage', data);\r\n}\r\n\r\n/**\r\n * 获取 APP 环境信息\r\n */\r\nexport function getEnv(callback) {\r\n const envInfo = {};\r\n let isAppEnv = false;\r\n\r\n if (isUvue()) {\r\n envInfo.uvue = true;\r\n isAppEnv = true;\r\n } else if (isNvue()) {\r\n envInfo.nvue = true;\r\n isAppEnv = true;\r\n } else if (isAppPlus()) {\r\n envInfo.plus = true;\r\n isAppEnv = true;\r\n }\r\n\r\n if (isAppEnv) {\r\n envInfo.app = true;\r\n } else {\r\n envInfo.h5 = true;\r\n }\r\n\r\n callback(envInfo);\r\n}","/**\r\n * 导航 API 模块\r\n * 提供统一的导航接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的导航实现\r\n */\r\nfunction getPlatformNavigation() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 导航到新页面\r\n * @param {Object} options - 导航选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function navigateTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateTo(options);\r\n}\r\n\r\n/**\r\n * 返回上一页\r\n * @param {Object} options - 返回选项\r\n * @param {number} options.delta - 返回的页面数,默认1\r\n */\r\nexport function navigateBack(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.navigateBack(options);\r\n}\r\n\r\n/**\r\n * 切换 Tab 页面\r\n * @param {Object} options - 切换选项\r\n * @param {string} options.url - 目标 Tab 页面路径\r\n */\r\nexport function switchTab(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.switchTab(options);\r\n}\r\n\r\n/**\r\n * 关闭所有页面,打开到应用内的某个页面\r\n * @param {Object} options - 重启选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function reLaunch(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.reLaunch(options);\r\n}\r\n\r\n/**\r\n * 关闭当前页面,跳转到应用内的某个页面\r\n * @param {Object} options - 重定向选项\r\n * @param {string} options.url - 目标页面路径\r\n */\r\nexport function redirectTo(options) {\r\n const platform = getPlatformNavigation();\r\n return platform.redirectTo(options);\r\n}","/**\r\n * 消息通信 API 模块\r\n * 提供与原生端的消息通信接口\r\n */\r\n\r\nimport { isWeixinMiniProgram } from '../core/environment.js';\r\nimport * as weixinPlatform from '../platforms/weixin.js';\r\nimport * as appPlatform from '../platforms/app.js';\r\n\r\n/**\r\n * 获取当前平台的消息实现\r\n */\r\nfunction getPlatformMessage() {\r\n if (isWeixinMiniProgram()) {\r\n return weixinPlatform;\r\n }\r\n return appPlatform;\r\n}\r\n\r\n/**\r\n * 向原生端发送消息\r\n * @param {Object} options - 消息选项\r\n * @param {Object} options.data - 要发送的数据\r\n */\r\nexport function postMessage(options = {}) {\r\n const platform = getPlatformMessage();\r\n return platform.postMessage(options);\r\n}\r\n\r\n/**\r\n * 获取当前环境信息\r\n * @param {Function} callback - 回调函数\r\n */\r\nexport function getEnv(callback) {\r\n const platform = getPlatformMessage();\r\n return platform.getEnv(callback);\r\n}","(function(){\n\n // Copyright (c) 2005 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Basic JavaScript BN library - subset useful for RSA encryption.\n\n // Bits per digit\n var dbits;\n\n // JavaScript engine analysis\n var canary = 0xdeadbeefcafe;\n var j_lm = ((canary&0xffffff)==0xefcafe);\n\n // (public) Constructor\n function BigInteger(a,b,c) {\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n }\n\n // return new, unset BigInteger\n function nbi() { return new BigInteger(null); }\n\n // am: Compute w_j += (x*this_i), propagate carries,\n // c is initial carry, returns final carry.\n // c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n // We need to select the fastest one that works in this environment.\n\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n function am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this[i++]+w[j]+c;\n c = Math.floor(v/0x4000000);\n w[j++] = v&0x3ffffff;\n }\n return c;\n }\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n function am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this[i]&0x7fff;\n var h = this[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w[j++] = l&0x3fffffff;\n }\n return c;\n }\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n function am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this[i]&0x3fff;\n var h = this[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w[j++] = l&0xfffffff;\n }\n return c;\n }\n var inBrowser = typeof navigator !== \"undefined\";\n if(inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n }\n else if(inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n }\n else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n }\n\n BigInteger.prototype.DB = dbits;\n BigInteger.prototype.DM = ((1<<dbits)-1);\n BigInteger.prototype.DV = (1<<dbits);\n\n var BI_FP = 52;\n BigInteger.prototype.FV = Math.pow(2,BI_FP);\n BigInteger.prototype.F1 = BI_FP-dbits;\n BigInteger.prototype.F2 = 2*dbits-BI_FP;\n\n // Digit conversions\n var BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\n var BI_RC = new Array();\n var rr,vv;\n rr = \"0\".charCodeAt(0);\n for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\n rr = \"a\".charCodeAt(0);\n for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n rr = \"A\".charCodeAt(0);\n for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n\n function int2char(n) { return BI_RM.charAt(n); }\n function intAt(s,i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c==null)?-1:c;\n }\n\n // (protected) copy this to r\n function bnpCopyTo(r) {\n for(var i = this.t-1; i >= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n }\n\n // (protected) set from integer value x, -DV <= x < DV\n function bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this[0] = x;\n else if(x < -1) this[0] = x+this.DV;\n else this.t = 0;\n }\n\n // return bigint initialized to value\n function nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n // (protected) set from string and radix\n function bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this[this.t++] = x;\n else if(sh+k > this.DB) {\n this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;\n this[this.t++] = (x>>(this.DB-sh));\n }\n else\n this[this.t-1] |= x<<sh;\n sh += k;\n if(sh >= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;\n }\n this.clamp();\n if(mi) BigInteger.ZERO.subTo(this,this);\n }\n\n // (protected) clamp off excess high words\n function bnpClamp() {\n var c = this.s&this.DM;\n while(this.t > 0 && this[this.t-1] == c) --this.t;\n }\n\n // (public) return string representation in given radix\n function bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1<<k)-1, d, m = false, r = \"\", i = this.t;\n var p = this.DB-(i*this.DB)%k;\n if(i-- > 0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<<p)-1))<<(k-p);\n d |= this[--i]>>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n }\n\n // (public) -this\n function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n // (public) |this|\n function bnAbs() { return (this.s<0)?this.negate():this; }\n\n // (public) return + if this > a, - if this < a, 0 if equal\n function bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n }\n\n // returns bit length of the integer x\n function nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n }\n\n // (public) return the number of bits in \"this\"\n function bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n }\n\n // (protected) r = this << n*DB\n function bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n }\n\n // (protected) r = this >> n*DB\n function bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n }\n\n // (protected) r = this << n\n function bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<<cbs)-1;\n var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;\n for(i = this.t-1; i >= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<<bs;\n }\n for(i = ds-1; i >= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n }\n\n // (protected) r = this >> n\n function bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<<bs)-1;\n r[0] = this[ds]>>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<<cbs;\n r[i-ds] = this[i]>>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;\n r.t = this.t-ds;\n r.clamp();\n }\n\n // (protected) r = this - a\n function bnpSubTo(a,r) {\n var i = 0, c = 0, m = Math.min(a.t,this.t);\n while(i < m) {\n c += this[i]-a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n }\n\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n }\n\n // (protected) r = this^2, r != this (HAC 14.16)\n function bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n }\n\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n function bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;\n var i = r.t, j = i-ys, t = (q==null)?nbi():q;\n y.dlShiftTo(j,t);\n if(r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y); // \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n }\n\n // (public) this mod a\n function bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n }\n\n // Modular reduction using \"classic\" algorithm\n function Classic(m) { this.m = m; }\n function cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n }\n function cRevert(x) { return x; }\n function cReduce(x) { x.divRemTo(this.m,null,x); }\n function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n Classic.prototype.convert = cConvert;\n Classic.prototype.revert = cRevert;\n Classic.prototype.reduce = cReduce;\n Classic.prototype.mulTo = cMulTo;\n Classic.prototype.sqrTo = cSqrTo;\n\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n function bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3; // y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n }\n\n // Montgomery reduction\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n }\n\n // xR mod m\n function montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n }\n\n // x/R mod m\n function montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n\n // x = x/R mod m (HAC 14.32)\n function montReduce(x) {\n while(x.t <= this.mt2) // pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = \"x^2/R mod m\"; x != r\n function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = \"xy/R mod m\"; x,y != r\n function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Montgomery.prototype.convert = montConvert;\n Montgomery.prototype.revert = montRevert;\n Montgomery.prototype.reduce = montReduce;\n Montgomery.prototype.mulTo = montMulTo;\n Montgomery.prototype.sqrTo = montSqrTo;\n\n // (protected) true iff this is even\n function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n function bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1<<i)) > 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n }\n\n // (public) this^e % m, 0 <= e < 2^32\n function bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n }\n\n // protected\n BigInteger.prototype.copyTo = bnpCopyTo;\n BigInteger.prototype.fromInt = bnpFromInt;\n BigInteger.prototype.fromString = bnpFromString;\n BigInteger.prototype.clamp = bnpClamp;\n BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n BigInteger.prototype.lShiftTo = bnpLShiftTo;\n BigInteger.prototype.rShiftTo = bnpRShiftTo;\n BigInteger.prototype.subTo = bnpSubTo;\n BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n BigInteger.prototype.squareTo = bnpSquareTo;\n BigInteger.prototype.divRemTo = bnpDivRemTo;\n BigInteger.prototype.invDigit = bnpInvDigit;\n BigInteger.prototype.isEven = bnpIsEven;\n BigInteger.prototype.exp = bnpExp;\n\n // public\n BigInteger.prototype.toString = bnToString;\n BigInteger.prototype.negate = bnNegate;\n BigInteger.prototype.abs = bnAbs;\n BigInteger.prototype.compareTo = bnCompareTo;\n BigInteger.prototype.bitLength = bnBitLength;\n BigInteger.prototype.mod = bnMod;\n BigInteger.prototype.modPowInt = bnModPowInt;\n\n // \"constants\"\n BigInteger.ZERO = nbv(0);\n BigInteger.ONE = nbv(1);\n\n // Copyright (c) 2005-2009 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Extended JavaScript BN functions, required for RSA private ops.\n\n // Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n // Version 1.2: square() API, isProbablePrime fix\n\n // (public)\n function bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n // (public) return value as integer\n function bnIntValue() {\n if(this.s < 0) {\n if(this.t == 1) return this[0]-this.DV;\n else if(this.t == 0) return -1;\n }\n else if(this.t == 1) return this[0];\n else if(this.t == 0) return 0;\n // assumes 16 < DB < 32\n return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];\n }\n\n // (public) return value as byte\n function bnByteValue() { return (this.t==0)?this.s:(this[0]<<24)>>24; }\n\n // (public) return value as short (assumes DB>=16)\n function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n // (protected) return x s.t. r^x < DV\n function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n // (public) 0 if this == 0, 1 if this > 0\n function bnSigNum() {\n if(this.s < 0) return -1;\n else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n }\n\n // (protected) convert to radix string\n function bnpToRadix(b) {\n if(b == null) b = 10;\n if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b,cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d,y,z);\n while(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n }\n return z.intValue().toString(b) + r;\n }\n\n // (protected) convert from radix string\n function bnpFromRadix(s,b) {\n this.fromInt(0);\n if(b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n for(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n }\n if(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n }\n if(mi) BigInteger.ZERO.subTo(this,this);\n }\n\n // (protected) alternate constructor\n function bnpFromNumber(a,b,c) {\n if(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1)) // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;\n this.fromString(x,256);\n }\n }\n\n // (public) convert to bigendian byte array\n function bnToByteArray() {\n var i = this.t, r = new Array();\n r[0] = this.s;\n var p = this.DB-(i*this.DB)%8, d, k = 0;\n if(i-- > 0) {\n if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this[i]&((1<<p)-1))<<(8-p);\n d |= this[--i]>>(p+=this.DB-8);\n }\n else {\n d = (this[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n }\n\n function bnEquals(a) { return(this.compareTo(a)==0); }\n function bnMin(a) { return(this.compareTo(a)<0)?this:a; }\n function bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n // (protected) r = this op a (bitwise)\n function bnpBitwiseTo(a,op,r) {\n var i, f, m = Math.min(a.t,this.t);\n for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n if(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n r.t = this.t;\n }\n else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n r.t = a.t;\n }\n r.s = op(this.s,a.s);\n r.clamp();\n }\n\n // (public) this & a\n function op_and(x,y) { return x&y; }\n function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n // (public) this | a\n function op_or(x,y) { return x|y; }\n function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n // (public) this ^ a\n function op_xor(x,y) { return x^y; }\n function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n // (public) this & ~a\n function op_andnot(x,y) { return x&~y; }\n function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n // (public) ~this\n function bnNot() {\n var r = nbi();\n for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n }\n\n // (public) this << n\n function bnShiftLeft(n) {\n var r = nbi();\n if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n return r;\n }\n\n // (public) this >> n\n function bnShiftRight(n) {\n var r = nbi();\n if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n return r;\n }\n\n // return index of lowest 1-bit in x, x < 2^31\n function lbit(x) {\n if(x == 0) return -1;\n var r = 0;\n if((x&0xffff) == 0) { x >>= 16; r += 16; }\n if((x&0xff) == 0) { x >>= 8; r += 8; }\n if((x&0xf) == 0) { x >>= 4; r += 4; }\n if((x&3) == 0) { x >>= 2; r += 2; }\n if((x&1) == 0) ++r;\n return r;\n }\n\n // (public) returns index of lowest 1-bit (or -1 if none)\n function bnGetLowestSetBit() {\n for(var i = 0; i < this.t; ++i)\n if(this[i] != 0) return i*this.DB+lbit(this[i]);\n if(this.s < 0) return this.t*this.DB;\n return -1;\n }\n\n // return number of 1 bits in x\n function cbit(x) {\n var r = 0;\n while(x != 0) { x &= x-1; ++r; }\n return r;\n }\n\n // (public) return number of set bits\n function bnBitCount() {\n var r = 0, x = this.s&this.DM;\n for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n return r;\n }\n\n // (public) true iff nth bit is set\n function bnTestBit(n) {\n var j = Math.floor(n/this.DB);\n if(j >= this.t) return(this.s!=0);\n return((this[j]&(1<<(n%this.DB)))!=0);\n }\n\n // (protected) this op (1<<n)\n function bnpChangeBit(n,op) {\n var r = BigInteger.ONE.shiftLeft(n);\n this.bitwiseTo(r,op,r);\n return r;\n }\n\n // (public) this | (1<<n)\n function bnSetBit(n) { return this.changeBit(n,op_or); }\n\n // (public) this & ~(1<<n)\n function bnClearBit(n) { return this.changeBit(n,op_andnot); }\n\n // (public) this ^ (1<<n)\n function bnFlipBit(n) { return this.changeBit(n,op_xor); }\n\n // (protected) r = this + a\n function bnpAddTo(a,r) {\n var i = 0, c = 0, m = Math.min(a.t,this.t);\n while(i < m) {\n c += this[i]+a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n if(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c += a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c<0)?-1:0;\n if(c > 0) r[i++] = c;\n else if(c < -1) r[i++] = this.DV+c;\n r.t = i;\n r.clamp();\n }\n\n // (public) this + a\n function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n // (public) this - a\n function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n // (public) this * a\n function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n // (public) this^2\n function bnSquare() { var r = nbi(); this.squareTo(r); return r; }\n\n // (public) this / a\n function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n // (public) this % a\n function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n // (public) [this/a,this%a]\n function bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a,q,r);\n return new Array(q,r);\n }\n\n // (protected) this *= n, this >= 0, 1 < n < DV\n function bnpDMultiply(n) {\n this[this.t] = this.am(0,n-1,this,0,0,this.t);\n ++this.t;\n this.clamp();\n }\n\n // (protected) this += n << w words, this >= 0\n function bnpDAddOffset(n,w) {\n if(n == 0) return;\n while(this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while(this[w] >= this.DV) {\n this[w] -= this.DV;\n if(++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n }\n\n // A \"null\" reducer\n function NullExp() {}\n function nNop(x) { return x; }\n function nMulTo(x,y,r) { x.multiplyTo(y,r); }\n function nSqrTo(x,r) { x.squareTo(r); }\n\n NullExp.prototype.convert = nNop;\n NullExp.prototype.revert = nNop;\n NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.sqrTo = nSqrTo;\n\n // (public) this^e\n function bnPow(e) { return this.exp(e,new NullExp()); }\n\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyLowerTo(a,n,r) {\n var i = Math.min(this.t+a.t,n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while(i > 0) r[--i] = 0;\n var j;\n for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n r.clamp();\n }\n\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyUpperTo(a,n,r) {\n --n;\n var i = r.t = this.t+a.t-n;\n r.s = 0; // assumes a,this >= 0\n while(--i >= 0) r[i] = 0;\n for(i = Math.max(n-this.t,0); i < a.t; ++i)\n r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n r.clamp();\n r.drShiftTo(1,r);\n }\n\n // Barrett modular reduction\n function Barrett(m) {\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2*m.t,this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n }\n\n function barrettConvert(x) {\n if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n else if(x.compareTo(this.m) < 0) return x;\n else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n }\n\n function barrettRevert(x) { return x; }\n\n // x = x mod m (HAC 14.42)\n function barrettReduce(x) {\n x.drShiftTo(this.m.t-1,this.r2);\n if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n x.subTo(this.r2,x);\n while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = x^2 mod m; x != r\n function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = x*y mod m; x,y != r\n function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.reduce = barrettReduce;\n Barrett.prototype.mulTo = barrettMulTo;\n Barrett.prototype.sqrTo = barrettSqrTo;\n\n // (public) this^e % m (HAC 14.85)\n function bnModPow(e,m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if(i <= 0) return r;\n else if(i < 18) k = 1;\n else if(i < 48) k = 3;\n else if(i < 144) k = 4;\n else if(i < 768) k = 5;\n else k = 6;\n if(i < 8)\n z = new Classic(m);\n else if(m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n // precomputation\n var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;\n g[1] = z.convert(this);\n if(k > 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n }\n\n var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j])-1;\n while(j >= 0) {\n if(i >= k1) w = (e[j]>>(i-k1))&km;\n else {\n w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e[j]&(1<<i)) == 0) {\n z.sqrTo(r,r2); t = r; r = r2; r2 = t;\n if(--i < 0) { i = this.DB-1; --j; }\n }\n }\n return z.revert(r);\n }\n\n // (public) gcd(this,a) (HAC 14.54)\n function bnGCD(a) {\n var x = (this.s<0)?this.negate():this.clone();\n var y = (a.s<0)?a.negate():a.clone();\n if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }\n var i = x.getLowestSetBit(), g = y.getLowestSetBit();\n if(g < 0) return x;\n if(i < g) g = i;\n if(g > 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n }\n while(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n }\n else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n }\n if(g > 0) y.lShiftTo(g,y);\n return y;\n }\n\n // (protected) this % n, n < 2^26\n function bnpModInt(n) {\n if(n <= 0) return 0;\n var d = this.DV%n, r = (this.s<0)?n-1:0;\n if(this.t > 0)\n if(d == 0) r = this[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n return r;\n }\n\n // (public) 1/this % m (HAC 14.61)\n function bnModInverse(m) {\n var ac = m.isEven();\n if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n }\n else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n }\n else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n }\n else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n }\n if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\n if(d.compareTo(m) >= 0) return d.subtract(m);\n if(d.signum() < 0) d.addTo(m,d); else return d;\n if(d.signum() < 0) return d.add(m); else return d;\n }\n\n var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];\n var lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n // (public) test primality with certainty >= 1-.5^t\n function bnIsProbablePrime(t) {\n var i, x = this.abs();\n if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x[0] == lowprimes[i]) return true;\n return false;\n }\n if(x.isEven()) return false;\n i = 1;\n while(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n }\n return x.millerRabin(t);\n }\n\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n function bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if(k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t+1)>>1;\n if(t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for(var i = 0; i < t; ++i) {\n //Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n }\n\n // protected\n BigInteger.prototype.chunkSize = bnpChunkSize;\n BigInteger.prototype.toRadix = bnpToRadix;\n BigInteger.prototype.fromRadix = bnpFromRadix;\n BigInteger.prototype.fromNumber = bnpFromNumber;\n BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n BigInteger.prototype.changeBit = bnpChangeBit;\n BigInteger.prototype.addTo = bnpAddTo;\n BigInteger.prototype.dMultiply = bnpDMultiply;\n BigInteger.prototype.dAddOffset = bnpDAddOffset;\n BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n BigInteger.prototype.modInt = bnpModInt;\n BigInteger.prototype.millerRabin = bnpMillerRabin;\n\n // public\n BigInteger.prototype.clone = bnClone;\n BigInteger.prototype.intValue = bnIntValue;\n BigInteger.prototype.byteValue = bnByteValue;\n BigInteger.prototype.shortValue = bnShortValue;\n BigInteger.prototype.signum = bnSigNum;\n BigInteger.prototype.toByteArray = bnToByteArray;\n BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.min = bnMin;\n BigInteger.prototype.max = bnMax;\n BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.or = bnOr;\n BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.not = bnNot;\n BigInteger.prototype.shiftLeft = bnShiftLeft;\n BigInteger.prototype.shiftRight = bnShiftRight;\n BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n BigInteger.prototype.bitCount = bnBitCount;\n BigInteger.prototype.testBit = bnTestBit;\n BigInteger.prototype.setBit = bnSetBit;\n BigInteger.prototype.clearBit = bnClearBit;\n BigInteger.prototype.flipBit = bnFlipBit;\n BigInteger.prototype.add = bnAdd;\n BigInteger.prototype.subtract = bnSubtract;\n BigInteger.prototype.multiply = bnMultiply;\n BigInteger.prototype.divide = bnDivide;\n BigInteger.prototype.remainder = bnRemainder;\n BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\n BigInteger.prototype.modPow = bnModPow;\n BigInteger.prototype.modInverse = bnModInverse;\n BigInteger.prototype.pow = bnPow;\n BigInteger.prototype.gcd = bnGCD;\n BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n // JSBN-specific extension\n BigInteger.prototype.square = bnSquare;\n\n // Expose the Barrett function\n BigInteger.prototype.Barrett = Barrett\n\n // BigInteger interfaces not implemented in jsbn:\n\n // BigInteger(int signum, byte[] magnitude)\n // double doubleValue()\n // float floatValue()\n // int hashCode()\n // long longValue()\n // static BigInteger valueOf(long val)\n\n // Random number generator - requires a PRNG backend, e.g. prng4.js\n\n // For best results, put code like\n // <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>\n // in your main HTML document.\n\n var rng_state;\n var rng_pool;\n var rng_pptr;\n\n // Mix in a 32-bit integer into the pool\n function rng_seed_int(x) {\n rng_pool[rng_pptr++] ^= x & 255;\n rng_pool[rng_pptr++] ^= (x >> 8) & 255;\n rng_pool[rng_pptr++] ^= (x >> 16) & 255;\n rng_pool[rng_pptr++] ^= (x >> 24) & 255;\n if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\n }\n\n // Mix in the current time (w/milliseconds) into the pool\n function rng_seed_time() {\n rng_seed_int(new Date().getTime());\n }\n\n // Initialize the pool with junk if needed.\n if(rng_pool == null) {\n rng_pool = new Array();\n rng_pptr = 0;\n var t;\n if(typeof window !== \"undefined\" && window.crypto) {\n if (window.crypto.getRandomValues) {\n // Use webcrypto if available\n var ua = new Uint8Array(32);\n window.crypto.getRandomValues(ua);\n for(t = 0; t < 32; ++t)\n rng_pool[rng_pptr++] = ua[t];\n }\n else if(navigator.appName == \"Netscape\" && navigator.appVersion < \"5\") {\n // Extract entropy (256 bits) from NS4 RNG if available\n var z = window.crypto.random(32);\n for(t = 0; t < z.length; ++t)\n rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n }\n }\n while(rng_pptr < rng_psize) { // extract some randomness from Math.random()\n t = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = t >>> 8;\n rng_pool[rng_pptr++] = t & 255;\n }\n rng_pptr = 0;\n rng_seed_time();\n //rng_seed_int(window.screenX);\n //rng_seed_int(window.screenY);\n }\n\n function rng_get_byte() {\n if(rng_state == null) {\n rng_seed_time();\n rng_state = prng_newstate();\n rng_state.init(rng_pool);\n for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\n rng_pool[rng_pptr] = 0;\n rng_pptr = 0;\n //rng_pool = null;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n }\n\n function rng_get_bytes(ba) {\n var i;\n for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\n }\n\n function SecureRandom() {}\n\n SecureRandom.prototype.nextBytes = rng_get_bytes;\n\n // prng4.js - uses Arcfour as a PRNG\n\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = new Array();\n }\n\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n function ARC4init(key) {\n var i, j, t;\n for(i = 0; i < 256; ++i)\n this.S[i] = i;\n j = 0;\n for(i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n }\n\n function ARC4next() {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n }\n\n Arcfour.prototype.init = ARC4init;\n Arcfour.prototype.next = ARC4next;\n\n // Plug in your RNG constructor here\n function prng_newstate() {\n return new Arcfour();\n }\n\n // Pool size must be a multiple of 4 and greater than 32.\n // An array of bytes the size of the pool will be passed to init()\n var rng_psize = 256;\n\n if (typeof exports !== 'undefined') {\n exports = module.exports = {\n default: BigInteger,\n BigInteger: BigInteger,\n SecureRandom: SecureRandom,\n };\n } else {\n this.jsbn = {\n BigInteger: BigInteger,\n SecureRandom: SecureRandom\n };\n }\n\n}).call(this);\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"jsbn\");\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// 消息扩展\nvar W = new Uint32Array(68);\nvar M = new Uint32Array(64); // W'\n\n/**\n * 循环左移\n */\nfunction rotl(x, n) {\n var s = n & 31;\n return x << s | x >>> 32 - s;\n}\n\n/**\n * 二进制异或运算\n */\nfunction xor(x, y) {\n var result = [];\n for (var i = x.length - 1; i >= 0; i--) {\n result[i] = (x[i] ^ y[i]) & 0xff;\n }return result;\n}\n\n/**\n * 压缩函数中的置换函数 P0(X) = X xor (X <<< 9) xor (X <<< 17)\n */\nfunction P0(X) {\n return X ^ rotl(X, 9) ^ rotl(X, 17);\n}\n\n/**\n * 消息扩展中的置换函数 P1(X) = X xor (X <<< 15) xor (X <<< 23)\n */\nfunction P1(X) {\n return X ^ rotl(X, 15) ^ rotl(X, 23);\n}\n\n/**\n * sm3 本体\n */\nfunction sm3(array) {\n var len = array.length * 8;\n\n // k 是满足 len + 1 + k = 448mod512 的最小的非负整数\n var k = len % 512;\n // 如果 448 <= (512 % len) < 512,需要多补充 (len % 448) 比特'0'以满足总比特长度为512的倍数\n k = k >= 448 ? 512 - k % 448 - 1 : 448 - k - 1;\n\n // 填充\n var kArr = new Array((k - 7) / 8);\n var lenArr = new Array(8);\n for (var i = 0, _len = kArr.length; i < _len; i++) {\n kArr[i] = 0;\n }for (var _i = 0, _len2 = lenArr.length; _i < _len2; _i++) {\n lenArr[_i] = 0;\n }len = len.toString(2);\n for (var _i2 = 7; _i2 >= 0; _i2--) {\n if (len.length > 8) {\n var start = len.length - 8;\n lenArr[_i2] = parseInt(len.substr(start), 2);\n len = len.substr(0, start);\n } else if (len.length > 0) {\n lenArr[_i2] = parseInt(len, 2);\n len = '';\n }\n }\n var m = new Uint8Array([].concat(array, [0x80], kArr, lenArr));\n var dataView = new DataView(m.buffer, 0);\n\n // 迭代压缩\n var n = m.length / 64;\n var V = new Uint32Array([0x7380166f, 0x4914b2b9, 0x172442d7, 0xda8a0600, 0xa96f30bc, 0x163138aa, 0xe38dee4d, 0xb0fb0e4e]);\n for (var _i3 = 0; _i3 < n; _i3++) {\n W.fill(0);\n M.fill(0);\n\n // 将消息分组B划分为 16 个字 W0, W1,……,W15\n var _start = 16 * _i3;\n for (var j = 0; j < 16; j++) {\n W[j] = dataView.getUint32((_start + j) * 4, false);\n }\n\n // W16 ~ W67:W[j] <- P1(W[j−16] xor W[j−9] xor (W[j−3] <<< 15)) xor (W[j−13] <<< 7) xor W[j−6]\n for (var _j = 16; _j < 68; _j++) {\n W[_j] = P1(W[_j - 16] ^ W[_j - 9] ^ rotl(W[_j - 3], 15)) ^ rotl(W[_j - 13], 7) ^ W[_j - 6];\n }\n\n // W′0 ~ W′63:W′[j] = W[j] xor W[j+4]\n for (var _j2 = 0; _j2 < 64; _j2++) {\n M[_j2] = W[_j2] ^ W[_j2 + 4];\n }\n\n // 压缩\n var T1 = 0x79cc4519;\n var T2 = 0x7a879d8a;\n // 字寄存器\n var A = V[0];\n var B = V[1];\n var C = V[2];\n var D = V[3];\n var E = V[4];\n var F = V[5];\n var G = V[6];\n var H = V[7];\n // 中间变量\n var SS1 = void 0;\n var SS2 = void 0;\n var TT1 = void 0;\n var TT2 = void 0;\n var T = void 0;\n for (var _j3 = 0; _j3 < 64; _j3++) {\n T = _j3 >= 0 && _j3 <= 15 ? T1 : T2;\n SS1 = rotl(rotl(A, 12) + E + rotl(T, _j3), 7);\n SS2 = SS1 ^ rotl(A, 12);\n\n TT1 = (_j3 >= 0 && _j3 <= 15 ? A ^ B ^ C : A & B | A & C | B & C) + D + SS2 + M[_j3];\n TT2 = (_j3 >= 0 && _j3 <= 15 ? E ^ F ^ G : E & F | ~E & G) + H + SS1 + W[_j3];\n\n D = C;\n C = rotl(B, 9);\n B = A;\n A = TT1;\n H = G;\n G = rotl(F, 19);\n F = E;\n E = P0(TT2);\n }\n\n V[0] ^= A;\n V[1] ^= B;\n V[2] ^= C;\n V[3] ^= D;\n V[4] ^= E;\n V[5] ^= F;\n V[6] ^= G;\n V[7] ^= H;\n }\n\n // 转回 uint8\n var result = [];\n for (var _i4 = 0, _len3 = V.length; _i4 < _len3; _i4++) {\n var word = V[_i4];\n result.push((word & 0xff000000) >>> 24, (word & 0xff0000) >>> 16, (word & 0xff00) >>> 8, word & 0xff);\n }\n\n return result;\n}\n\n/**\n * hmac 实现\n */\nvar blockLen = 64;\nvar iPad = new Uint8Array(blockLen);\nvar oPad = new Uint8Array(blockLen);\nfor (var i = 0; i < blockLen; i++) {\n iPad[i] = 0x36;\n oPad[i] = 0x5c;\n}\nfunction hmac(input, key) {\n // 密钥填充\n if (key.length > blockLen) key = sm3(key);\n while (key.length < blockLen) {\n key.push(0);\n }var iPadKey = xor(key, iPad);\n var oPadKey = xor(key, oPad);\n\n var hash = sm3([].concat(iPadKey, input));\n return sm3([].concat(oPadKey, hash));\n}\n\nmodule.exports = {\n sm3: sm3,\n hmac: hmac\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n sm2: __webpack_require__(3),\n sm3: __webpack_require__(7),\n sm4: __webpack_require__(8)\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* eslint-disable no-use-before-define */\nvar _require = __webpack_require__(0),\n BigInteger = _require.BigInteger;\n\nvar _require2 = __webpack_require__(4),\n encodeDer = _require2.encodeDer,\n decodeDer = _require2.decodeDer;\n\nvar _ = __webpack_require__(5);\nvar sm3 = __webpack_require__(1).sm3;\n\nvar _$generateEcparam = _.generateEcparam(),\n G = _$generateEcparam.G,\n curve = _$generateEcparam.curve,\n n = _$generateEcparam.n;\n\nvar C1C2C3 = 0;\n\n/**\n * 加密\n */\nfunction doEncrypt(msg, publicKey) {\n var cipherMode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n msg = typeof msg === 'string' ? _.hexToArray(_.utf8ToHex(msg)) : Array.prototype.slice.call(msg);\n publicKey = _.getGlobalCurve().decodePointHex(publicKey); // 先将公钥转成点\n\n var keypair = _.generateKeyPairHex();\n var k = new BigInteger(keypair.privateKey, 16); // 随机数 k\n\n // c1 = k * G\n var c1 = keypair.publicKey;\n if (c1.length > 128) c1 = c1.substr(c1.length - 128);\n\n // (x2, y2) = k * publicKey\n var p = publicKey.multiply(k);\n var x2 = _.hexToArray(_.leftPad(p.getX().toBigInteger().toRadix(16), 64));\n var y2 = _.hexToArray(_.leftPad(p.getY().toBigInteger().toRadix(16), 64));\n\n // c3 = hash(x2 || msg || y2)\n var c3 = _.arrayToHex(sm3([].concat(x2, msg, y2)));\n\n var ct = 1;\n var offset = 0;\n var t = []; // 256 位\n var z = [].concat(x2, y2);\n var nextT = function nextT() {\n // (1) Hai = hash(z || ct)\n // (2) ct++\n t = sm3([].concat(z, [ct >> 24 & 0x00ff, ct >> 16 & 0x00ff, ct >> 8 & 0x00ff, ct & 0x00ff]));\n ct++;\n offset = 0;\n };\n nextT(); // 先生成 Ha1\n\n for (var i = 0, len = msg.length; i < len; i++) {\n // t = Ha1 || Ha2 || Ha3 || Ha4\n if (offset === t.length) nextT();\n\n // c2 = msg ^ t\n msg[i] ^= t[offset++] & 0xff;\n }\n var c2 = _.arrayToHex(msg);\n\n return cipherMode === C1C2C3 ? c1 + c2 + c3 : c1 + c3 + c2;\n}\n\n/**\n * 解密\n */\nfunction doDecrypt(encryptData, privateKey) {\n var cipherMode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n _ref$output = _ref.output,\n output = _ref$output === undefined ? 'string' : _ref$output;\n\n privateKey = new BigInteger(privateKey, 16);\n\n var c3 = encryptData.substr(128, 64);\n var c2 = encryptData.substr(128 + 64);\n\n if (cipherMode === C1C2C3) {\n c3 = encryptData.substr(encryptData.length - 64);\n c2 = encryptData.substr(128, encryptData.length - 128 - 64);\n }\n\n var msg = _.hexToArray(c2);\n var c1 = _.getGlobalCurve().decodePointHex('04' + encryptData.substr(0, 128));\n\n var p = c1.multiply(privateKey);\n var x2 = _.hexToArray(_.leftPad(p.getX().toBigInteger().toRadix(16), 64));\n var y2 = _.hexToArray(_.leftPad(p.getY().toBigInteger().toRadix(16), 64));\n\n var ct = 1;\n var offset = 0;\n var t = []; // 256 位\n var z = [].concat(x2, y2);\n var nextT = function nextT() {\n // (1) Hai = hash(z || ct)\n // (2) ct++\n t = sm3([].concat(z, [ct >> 24 & 0x00ff, ct >> 16 & 0x00ff, ct >> 8 & 0x00ff, ct & 0x00ff]));\n ct++;\n offset = 0;\n };\n nextT(); // 先生成 Ha1\n\n for (var i = 0, len = msg.length; i < len; i++) {\n // t = Ha1 || Ha2 || Ha3 || Ha4\n if (offset === t.length) nextT();\n\n // c2 = msg ^ t\n msg[i] ^= t[offset++] & 0xff;\n }\n\n // c3 = hash(x2 || msg || y2)\n var checkC3 = _.arrayToHex(sm3([].concat(x2, msg, y2)));\n\n if (checkC3 === c3.toLowerCase()) {\n return output === 'array' ? msg : _.arrayToUtf8(msg);\n } else {\n return output === 'array' ? [] : '';\n }\n}\n\n/**\n * 签名\n */\nfunction doSignature(msg, privateKey) {\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n pointPool = _ref2.pointPool,\n der = _ref2.der,\n hash = _ref2.hash,\n publicKey = _ref2.publicKey,\n userId = _ref2.userId;\n\n var hashHex = typeof msg === 'string' ? _.utf8ToHex(msg) : _.arrayToHex(msg);\n\n if (hash) {\n // sm3杂凑\n publicKey = publicKey || getPublicKeyFromPrivateKey(privateKey);\n hashHex = getHash(hashHex, publicKey, userId);\n }\n\n var dA = new BigInteger(privateKey, 16);\n var e = new BigInteger(hashHex, 16);\n\n // k\n var k = null;\n var r = null;\n var s = null;\n\n do {\n do {\n var point = void 0;\n if (pointPool && pointPool.length) {\n point = pointPool.pop();\n } else {\n point = getPoint();\n }\n k = point.k;\n\n // r = (e + x1) mod n\n r = e.add(point.x1).mod(n);\n } while (r.equals(BigInteger.ZERO) || r.add(k).equals(n));\n\n // s = ((1 + dA)^-1 * (k - r * dA)) mod n\n s = dA.add(BigInteger.ONE).modInverse(n).multiply(k.subtract(r.multiply(dA))).mod(n);\n } while (s.equals(BigInteger.ZERO));\n\n if (der) return encodeDer(r, s); // asn.1 der 编码\n\n return _.leftPad(r.toString(16), 64) + _.leftPad(s.toString(16), 64);\n}\n\n/**\n * 验签\n */\nfunction doVerifySignature(msg, signHex, publicKey) {\n var _ref3 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n der = _ref3.der,\n hash = _ref3.hash,\n userId = _ref3.userId;\n\n var hashHex = typeof msg === 'string' ? _.utf8ToHex(msg) : _.arrayToHex(msg);\n\n if (hash) {\n // sm3杂凑\n hashHex = getHash(hashHex, publicKey, userId);\n }\n\n var r = void 0;var s = void 0;\n if (der) {\n var decodeDerObj = decodeDer(signHex); // asn.1 der 解码\n r = decodeDerObj.r;\n s = decodeDerObj.s;\n } else {\n r = new BigInteger(signHex.substring(0, 64), 16);\n s = new BigInteger(signHex.substring(64), 16);\n }\n\n var PA = curve.decodePointHex(publicKey);\n var e = new BigInteger(hashHex, 16);\n\n // t = (r + s) mod n\n var t = r.add(s).mod(n);\n\n if (t.equals(BigInteger.ZERO)) return false;\n\n // x1y1 = s * G + t * PA\n var x1y1 = G.multiply(s).add(PA.multiply(t));\n\n // R = (e + x1) mod n\n var R = e.add(x1y1.getX().toBigInteger()).mod(n);\n\n return r.equals(R);\n}\n\n/**\n * sm3杂凑算法\n */\nfunction getHash(hashHex, publicKey) {\n var userId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '1234567812345678';\n\n // z = hash(entl || userId || a || b || gx || gy || px || py)\n userId = _.utf8ToHex(userId);\n var a = _.leftPad(G.curve.a.toBigInteger().toRadix(16), 64);\n var b = _.leftPad(G.curve.b.toBigInteger().toRadix(16), 64);\n var gx = _.leftPad(G.getX().toBigInteger().toRadix(16), 64);\n var gy = _.leftPad(G.getY().toBigInteger().toRadix(16), 64);\n var px = void 0;\n var py = void 0;\n if (publicKey.length === 128) {\n px = publicKey.substr(0, 64);\n py = publicKey.substr(64, 64);\n } else {\n var point = G.curve.decodePointHex(publicKey);\n px = _.leftPad(point.getX().toBigInteger().toRadix(16), 64);\n py = _.leftPad(point.getY().toBigInteger().toRadix(16), 64);\n }\n var data = _.hexToArray(userId + a + b + gx + gy + px + py);\n\n var entl = userId.length * 4;\n data.unshift(entl & 0x00ff);\n data.unshift(entl >> 8 & 0x00ff);\n\n var z = sm3(data);\n\n // e = hash(z || msg)\n return _.arrayToHex(sm3(z.concat(_.hexToArray(hashHex))));\n}\n\n/**\n * 计算公钥\n */\nfunction getPublicKeyFromPrivateKey(privateKey) {\n var PA = G.multiply(new BigInteger(privateKey, 16));\n var x = _.leftPad(PA.getX().toBigInteger().toString(16), 64);\n var y = _.leftPad(PA.getY().toBigInteger().toString(16), 64);\n return '04' + x + y;\n}\n\n/**\n * 获取椭圆曲线点\n */\nfunction getPoint() {\n var keypair = _.generateKeyPairHex();\n var PA = curve.decodePointHex(keypair.publicKey);\n\n keypair.k = new BigInteger(keypair.privateKey, 16);\n keypair.x1 = PA.getX().toBigInteger();\n\n return keypair;\n}\n\nmodule.exports = {\n generateKeyPairHex: _.generateKeyPairHex,\n compressPublicKeyHex: _.compressPublicKeyHex,\n comparePublicKeyHex: _.comparePublicKeyHex,\n doEncrypt: doEncrypt,\n doDecrypt: doDecrypt,\n doSignature: doSignature,\n doVerifySignature: doVerifySignature,\n getPublicKeyFromPrivateKey: getPublicKeyFromPrivateKey,\n getPoint: getPoint,\n verifyPublicKey: _.verifyPublicKey\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/* eslint-disable class-methods-use-this */\nvar _require = __webpack_require__(0),\n BigInteger = _require.BigInteger;\n\nfunction bigintToValue(bigint) {\n var h = bigint.toString(16);\n if (h[0] !== '-') {\n // 正数\n if (h.length % 2 === 1) h = '0' + h; // 补齐到整字节\n else if (!h.match(/^[0-7]/)) h = '00' + h; // 非0开头,则补一个全0字节\n } else {\n // 负数\n h = h.substr(1);\n\n var len = h.length;\n if (len % 2 === 1) len += 1; // 补齐到整字节\n else if (!h.match(/^[0-7]/)) len += 2; // 非0开头,则补一个全0字节\n\n var mask = '';\n for (var i = 0; i < len; i++) {\n mask += 'f';\n }mask = new BigInteger(mask, 16);\n\n // 对绝对值取反,加1\n h = mask.xor(bigint).add(BigInteger.ONE);\n h = h.toString(16).replace(/^-/, '');\n }\n return h;\n}\n\nvar ASN1Object = function () {\n function ASN1Object() {\n _classCallCheck(this, ASN1Object);\n\n this.tlv = null;\n this.t = '00';\n this.l = '00';\n this.v = '';\n }\n\n /**\r\n * 获取 der 编码比特流16进制串\r\n */\n\n\n ASN1Object.prototype.getEncodedHex = function getEncodedHex() {\n if (!this.tlv) {\n this.v = this.getValue();\n this.l = this.getLength();\n this.tlv = this.t + this.l + this.v;\n }\n return this.tlv;\n };\n\n ASN1Object.prototype.getLength = function getLength() {\n var n = this.v.length / 2; // 字节数\n var nHex = n.toString(16);\n if (nHex.length % 2 === 1) nHex = '0' + nHex; // 补齐到整字节\n\n if (n < 128) {\n // 短格式,以 0 开头\n return nHex;\n } else {\n // 长格式,以 1 开头\n var head = 128 + nHex.length / 2; // 1(1位) + 真正的长度占用字节数(7位) + 真正的长度\n return head.toString(16) + nHex;\n }\n };\n\n ASN1Object.prototype.getValue = function getValue() {\n return '';\n };\n\n return ASN1Object;\n}();\n\nvar DERInteger = function (_ASN1Object) {\n _inherits(DERInteger, _ASN1Object);\n\n function DERInteger(bigint) {\n _classCallCheck(this, DERInteger);\n\n var _this = _possibleConstructorReturn(this, _ASN1Object.call(this));\n\n _this.t = '02'; // 整型标签说明\n if (bigint) _this.v = bigintToValue(bigint);\n return _this;\n }\n\n DERInteger.prototype.getValue = function getValue() {\n return this.v;\n };\n\n return DERInteger;\n}(ASN1Object);\n\nvar DERSequence = function (_ASN1Object2) {\n _inherits(DERSequence, _ASN1Object2);\n\n function DERSequence(asn1Array) {\n _classCallCheck(this, DERSequence);\n\n var _this2 = _possibleConstructorReturn(this, _ASN1Object2.call(this));\n\n _this2.t = '30'; // 序列标签说明\n _this2.asn1Array = asn1Array;\n return _this2;\n }\n\n DERSequence.prototype.getValue = function getValue() {\n this.v = this.asn1Array.map(function (asn1Object) {\n return asn1Object.getEncodedHex();\n }).join('');\n return this.v;\n };\n\n return DERSequence;\n}(ASN1Object);\n\n/**\r\n * 获取 l 占用字节数\r\n */\n\n\nfunction getLenOfL(str, start) {\n if (+str[start + 2] < 8) return 1; // l 以0开头,则表示短格式,只占一个字节\n return +str.substr(start + 2, 2) & 0x7f + 1; // 长格式,取第一个字节后7位作为长度真正占用字节数,再加上本身\n}\n\n/**\r\n * 获取 l\r\n */\nfunction getL(str, start) {\n // 获取 l\n var len = getLenOfL(str, start);\n var l = str.substr(start + 2, len * 2);\n\n if (!l) return -1;\n var bigint = +l[0] < 8 ? new BigInteger(l, 16) : new BigInteger(l.substr(2), 16);\n\n return bigint.intValue();\n}\n\n/**\r\n * 获取 v 的位置\r\n */\nfunction getStartOfV(str, start) {\n var len = getLenOfL(str, start);\n return start + (len + 1) * 2;\n}\n\nmodule.exports = {\n /**\r\n * ASN.1 der 编码,针对 sm2 签名\r\n */\n encodeDer: function encodeDer(r, s) {\n var derR = new DERInteger(r);\n var derS = new DERInteger(s);\n var derSeq = new DERSequence([derR, derS]);\n\n return derSeq.getEncodedHex();\n },\n\n\n /**\r\n * 解析 ASN.1 der,针对 sm2 验签\r\n */\n decodeDer: function decodeDer(input) {\n // 结构:\n // input = | tSeq | lSeq | vSeq |\n // vSeq = | tR | lR | vR | tS | lS | vS |\n var start = getStartOfV(input, 0);\n\n var vIndexR = getStartOfV(input, start);\n var lR = getL(input, start);\n var vR = input.substr(vIndexR, lR * 2);\n\n var nextStart = vIndexR + vR.length;\n var vIndexS = getStartOfV(input, nextStart);\n var lS = getL(input, nextStart);\n var vS = input.substr(vIndexS, lS * 2);\n\n var r = new BigInteger(vR, 16);\n var s = new BigInteger(vS, 16);\n\n return { r: r, s: s };\n }\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* eslint-disable no-bitwise, no-mixed-operators, no-use-before-define, max-len */\nvar _require = __webpack_require__(0),\n BigInteger = _require.BigInteger,\n SecureRandom = _require.SecureRandom;\n\nvar _require2 = __webpack_require__(6),\n ECCurveFp = _require2.ECCurveFp;\n\nvar rng = new SecureRandom();\n\nvar _generateEcparam = generateEcparam(),\n curve = _generateEcparam.curve,\n G = _generateEcparam.G,\n n = _generateEcparam.n;\n\n/**\n * 获取公共椭圆曲线\n */\n\n\nfunction getGlobalCurve() {\n return curve;\n}\n\n/**\n * 生成ecparam\n */\nfunction generateEcparam() {\n // 椭圆曲线\n var p = new BigInteger('FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF', 16);\n var a = new BigInteger('FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC', 16);\n var b = new BigInteger('28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93', 16);\n var curve = new ECCurveFp(p, a, b);\n\n // 基点\n var gxHex = '32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7';\n var gyHex = 'BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0';\n var G = curve.decodePointHex('04' + gxHex + gyHex);\n\n var n = new BigInteger('FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123', 16);\n\n return { curve: curve, G: G, n: n };\n}\n\n/**\n * 生成密钥对:publicKey = privateKey * G\n */\nfunction generateKeyPairHex(a, b, c) {\n var random = a ? new BigInteger(a, b, c) : new BigInteger(n.bitLength(), rng);\n var d = random.mod(n.subtract(BigInteger.ONE)).add(BigInteger.ONE); // 随机数\n var privateKey = leftPad(d.toString(16), 64);\n\n var P = G.multiply(d); // P = dG,p 为公钥,d 为私钥\n var Px = leftPad(P.getX().toBigInteger().toString(16), 64);\n var Py = leftPad(P.getY().toBigInteger().toString(16), 64);\n var publicKey = '04' + Px + Py;\n\n return { privateKey: privateKey, publicKey: publicKey };\n}\n\n/**\n * 生成压缩公钥\n */\nfunction compressPublicKeyHex(s) {\n if (s.length !== 130) throw new Error('Invalid public key to compress');\n\n var len = (s.length - 2) / 2;\n var xHex = s.substr(2, len);\n var y = new BigInteger(s.substr(len + 2, len), 16);\n\n var prefix = '03';\n if (y.mod(new BigInteger('2')).equals(BigInteger.ZERO)) prefix = '02';\n\n return prefix + xHex;\n}\n\n/**\n * utf8串转16进制串\n */\nfunction utf8ToHex(input) {\n input = unescape(encodeURIComponent(input));\n\n var length = input.length;\n\n // 转换到字数组\n var words = [];\n for (var i = 0; i < length; i++) {\n words[i >>> 2] |= (input.charCodeAt(i) & 0xff) << 24 - i % 4 * 8;\n }\n\n // 转换到16进制\n var hexChars = [];\n for (var _i = 0; _i < length; _i++) {\n var bite = words[_i >>> 2] >>> 24 - _i % 4 * 8 & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n\n return hexChars.join('');\n}\n\n/**\n * 补全16进制字符串\n */\nfunction leftPad(input, num) {\n if (input.length >= num) return input;\n\n return new Array(num - input.length + 1).join('0') + input;\n}\n\n/**\n * 转成16进制串\n */\nfunction arrayToHex(arr) {\n return arr.map(function (item) {\n item = item.toString(16);\n return item.length === 1 ? '0' + item : item;\n }).join('');\n}\n\n/**\n * 转成utf8串\n */\nfunction arrayToUtf8(arr) {\n var words = [];\n var j = 0;\n for (var i = 0; i < arr.length * 2; i += 2) {\n words[i >>> 3] |= parseInt(arr[j], 10) << 24 - i % 8 * 4;\n j++;\n }\n\n try {\n var latin1Chars = [];\n\n for (var _i2 = 0; _i2 < arr.length; _i2++) {\n var bite = words[_i2 >>> 2] >>> 24 - _i2 % 4 * 8 & 0xff;\n latin1Chars.push(String.fromCharCode(bite));\n }\n\n return decodeURIComponent(escape(latin1Chars.join('')));\n } catch (e) {\n throw new Error('Malformed UTF-8 data');\n }\n}\n\n/**\n * 转成字节数组\n */\nfunction hexToArray(hexStr) {\n var words = [];\n var hexStrLength = hexStr.length;\n\n if (hexStrLength % 2 !== 0) {\n hexStr = leftPad(hexStr, hexStrLength + 1);\n }\n\n hexStrLength = hexStr.length;\n\n for (var i = 0; i < hexStrLength; i += 2) {\n words.push(parseInt(hexStr.substr(i, 2), 16));\n }\n return words;\n}\n\n/**\n * 验证公钥是否为椭圆曲线上的点\n */\nfunction verifyPublicKey(publicKey) {\n var point = curve.decodePointHex(publicKey);\n if (!point) return false;\n\n var x = point.getX();\n var y = point.getY();\n\n // 验证 y^2 是否等于 x^3 + ax + b\n return y.square().equals(x.multiply(x.square()).add(x.multiply(curve.a)).add(curve.b));\n}\n\n/**\n * 验证公钥是否等价,等价返回true\n */\nfunction comparePublicKeyHex(publicKey1, publicKey2) {\n var point1 = curve.decodePointHex(publicKey1);\n if (!point1) return false;\n\n var point2 = curve.decodePointHex(publicKey2);\n if (!point2) return false;\n\n return point1.equals(point2);\n}\n\nmodule.exports = {\n getGlobalCurve: getGlobalCurve,\n generateEcparam: generateEcparam,\n generateKeyPairHex: generateKeyPairHex,\n compressPublicKeyHex: compressPublicKeyHex,\n utf8ToHex: utf8ToHex,\n leftPad: leftPad,\n arrayToHex: arrayToHex,\n arrayToUtf8: arrayToUtf8,\n hexToArray: hexToArray,\n verifyPublicKey: verifyPublicKey,\n comparePublicKeyHex: comparePublicKeyHex\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/* eslint-disable no-case-declarations, max-len */\nvar _require = __webpack_require__(0),\n BigInteger = _require.BigInteger;\n\n/**\r\n * thanks for Tom Wu : http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n *\r\n * Basic Javascript Elliptic Curve implementation\r\n * Ported loosely from BouncyCastle's Java EC code\r\n * Only Fp curves implemented for now\r\n */\n\nvar TWO = new BigInteger('2');\nvar THREE = new BigInteger('3');\n\n/**\r\n * 椭圆曲线域元素\r\n */\n\nvar ECFieldElementFp = function () {\n function ECFieldElementFp(q, x) {\n _classCallCheck(this, ECFieldElementFp);\n\n this.x = x;\n this.q = q;\n // TODO if (x.compareTo(q) >= 0) error\n }\n\n /**\r\n * 判断相等\r\n */\n\n\n ECFieldElementFp.prototype.equals = function equals(other) {\n if (other === this) return true;\n return this.q.equals(other.q) && this.x.equals(other.x);\n };\n\n /**\r\n * 返回具体数值\r\n */\n\n\n ECFieldElementFp.prototype.toBigInteger = function toBigInteger() {\n return this.x;\n };\n\n /**\r\n * 取反\r\n */\n\n\n ECFieldElementFp.prototype.negate = function negate() {\n return new ECFieldElementFp(this.q, this.x.negate().mod(this.q));\n };\n\n /**\r\n * 相加\r\n */\n\n\n ECFieldElementFp.prototype.add = function add(b) {\n return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q));\n };\n\n /**\r\n * 相减\r\n */\n\n\n ECFieldElementFp.prototype.subtract = function subtract(b) {\n return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q));\n };\n\n /**\r\n * 相乘\r\n */\n\n\n ECFieldElementFp.prototype.multiply = function multiply(b) {\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q));\n };\n\n /**\r\n * 相除\r\n */\n\n\n ECFieldElementFp.prototype.divide = function divide(b) {\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q));\n };\n\n /**\r\n * 平方\r\n */\n\n\n ECFieldElementFp.prototype.square = function square() {\n return new ECFieldElementFp(this.q, this.x.square().mod(this.q));\n };\n\n return ECFieldElementFp;\n}();\n\nvar ECPointFp = function () {\n function ECPointFp(curve, x, y, z) {\n _classCallCheck(this, ECPointFp);\n\n this.curve = curve;\n this.x = x;\n this.y = y;\n // 标准射影坐标系:zinv == null 或 z * zinv == 1\n this.z = z == null ? BigInteger.ONE : z;\n this.zinv = null;\n // TODO: compression flag\n }\n\n ECPointFp.prototype.getX = function getX() {\n if (this.zinv === null) this.zinv = this.z.modInverse(this.curve.q);\n\n return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q));\n };\n\n ECPointFp.prototype.getY = function getY() {\n if (this.zinv === null) this.zinv = this.z.modInverse(this.curve.q);\n\n return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q));\n };\n\n /**\r\n * 判断相等\r\n */\n\n\n ECPointFp.prototype.equals = function equals(other) {\n if (other === this) return true;\n if (this.isInfinity()) return other.isInfinity();\n if (other.isInfinity()) return this.isInfinity();\n\n // u = y2 * z1 - y1 * z2\n var u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q);\n if (!u.equals(BigInteger.ZERO)) return false;\n\n // v = x2 * z1 - x1 * z2\n var v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q);\n return v.equals(BigInteger.ZERO);\n };\n\n /**\r\n * 是否是无穷远点\r\n */\n\n\n ECPointFp.prototype.isInfinity = function isInfinity() {\n if (this.x === null && this.y === null) return true;\n return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO);\n };\n\n /**\r\n * 取反,x 轴对称点\r\n */\n\n\n ECPointFp.prototype.negate = function negate() {\n return new ECPointFp(this.curve, this.x, this.y.negate(), this.z);\n };\n\n /**\r\n * 相加\r\n *\r\n * 标准射影坐标系:\r\n *\r\n * λ1 = x1 * z2\r\n * λ2 = x2 * z1\r\n * λ3 = λ1 − λ2\r\n * λ4 = y1 * z2\r\n * λ5 = y2 * z1\r\n * λ6 = λ4 − λ5\r\n * λ7 = λ1 + λ2\r\n * λ8 = z1 * z2\r\n * λ9 = λ3^2\r\n * λ10 = λ3 * λ9\r\n * λ11 = λ8 * λ6^2 − λ7 * λ9\r\n * x3 = λ3 * λ11\r\n * y3 = λ6 * (λ9 * λ1 − λ11) − λ4 * λ10\r\n * z3 = λ10 * λ8\r\n */\n\n\n ECPointFp.prototype.add = function add(b) {\n if (this.isInfinity()) return b;\n if (b.isInfinity()) return this;\n\n var x1 = this.x.toBigInteger();\n var y1 = this.y.toBigInteger();\n var z1 = this.z;\n var x2 = b.x.toBigInteger();\n var y2 = b.y.toBigInteger();\n var z2 = b.z;\n var q = this.curve.q;\n\n var w1 = x1.multiply(z2).mod(q);\n var w2 = x2.multiply(z1).mod(q);\n var w3 = w1.subtract(w2);\n var w4 = y1.multiply(z2).mod(q);\n var w5 = y2.multiply(z1).mod(q);\n var w6 = w4.subtract(w5);\n\n if (BigInteger.ZERO.equals(w3)) {\n if (BigInteger.ZERO.equals(w6)) {\n return this.twice(); // this == b,计算自加\n }\n return this.curve.infinity; // this == -b,则返回无穷远点\n }\n\n var w7 = w1.add(w2);\n var w8 = z1.multiply(z2).mod(q);\n var w9 = w3.square().mod(q);\n var w10 = w3.multiply(w9).mod(q);\n var w11 = w8.multiply(w6.square()).subtract(w7.multiply(w9)).mod(q);\n\n var x3 = w3.multiply(w11).mod(q);\n var y3 = w6.multiply(w9.multiply(w1).subtract(w11)).subtract(w4.multiply(w10)).mod(q);\n var z3 = w10.multiply(w8).mod(q);\n\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);\n };\n\n /**\r\n * 自加\r\n *\r\n * 标准射影坐标系:\r\n *\r\n * λ1 = 3 * x1^2 + a * z1^2\r\n * λ2 = 2 * y1 * z1\r\n * λ3 = y1^2\r\n * λ4 = λ3 * x1 * z1\r\n * λ5 = λ2^2\r\n * λ6 = λ1^2 − 8 * λ4\r\n * x3 = λ2 * λ6\r\n * y3 = λ1 * (4 * λ4 − λ6) − 2 * λ5 * λ3\r\n * z3 = λ2 * λ5\r\n */\n\n\n ECPointFp.prototype.twice = function twice() {\n if (this.isInfinity()) return this;\n if (!this.y.toBigInteger().signum()) return this.curve.infinity;\n\n var x1 = this.x.toBigInteger();\n var y1 = this.y.toBigInteger();\n var z1 = this.z;\n var q = this.curve.q;\n var a = this.curve.a.toBigInteger();\n\n var w1 = x1.square().multiply(THREE).add(a.multiply(z1.square())).mod(q);\n var w2 = y1.shiftLeft(1).multiply(z1).mod(q);\n var w3 = y1.square().mod(q);\n var w4 = w3.multiply(x1).multiply(z1).mod(q);\n var w5 = w2.square().mod(q);\n var w6 = w1.square().subtract(w4.shiftLeft(3)).mod(q);\n\n var x3 = w2.multiply(w6).mod(q);\n var y3 = w1.multiply(w4.shiftLeft(2).subtract(w6)).subtract(w5.shiftLeft(1).multiply(w3)).mod(q);\n var z3 = w2.multiply(w5).mod(q);\n\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3);\n };\n\n /**\r\n * 倍点计算\r\n */\n\n\n ECPointFp.prototype.multiply = function multiply(k) {\n if (this.isInfinity()) return this;\n if (!k.signum()) return this.curve.infinity;\n\n // 使用加减法\n var k3 = k.multiply(THREE);\n var neg = this.negate();\n var Q = this;\n\n for (var i = k3.bitLength() - 2; i > 0; i--) {\n Q = Q.twice();\n\n var k3Bit = k3.testBit(i);\n var kBit = k.testBit(i);\n\n if (k3Bit !== kBit) {\n Q = Q.add(k3Bit ? this : neg);\n }\n }\n\n return Q;\n };\n\n return ECPointFp;\n}();\n\n/**\r\n * 椭圆曲线 y^2 = x^3 + ax + b\r\n */\n\n\nvar ECCurveFp = function () {\n function ECCurveFp(q, a, b) {\n _classCallCheck(this, ECCurveFp);\n\n this.q = q;\n this.a = this.fromBigInteger(a);\n this.b = this.fromBigInteger(b);\n this.infinity = new ECPointFp(this, null, null); // 无穷远点\n }\n\n /**\r\n * 判断两个椭圆曲线是否相等\r\n */\n\n\n ECCurveFp.prototype.equals = function equals(other) {\n if (other === this) return true;\n return this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b);\n };\n\n /**\r\n * 生成椭圆曲线域元素\r\n */\n\n\n ECCurveFp.prototype.fromBigInteger = function fromBigInteger(x) {\n return new ECFieldElementFp(this.q, x);\n };\n\n /**\r\n * 解析 16 进制串为椭圆曲线点\r\n */\n\n\n ECCurveFp.prototype.decodePointHex = function decodePointHex(s) {\n switch (parseInt(s.substr(0, 2), 16)) {\n // 第一个字节\n case 0:\n return this.infinity;\n case 2:\n case 3:\n // 压缩\n var x = this.fromBigInteger(new BigInteger(s.substr(2), 16));\n // 对 p ≡ 3 (mod4),即存在正整数 u,使得 p = 4u + 3\n // 计算 y = (√ (x^3 + ax + b) % p)^(u + 1) modp\n var y = this.fromBigInteger(x.multiply(x.square()).add(x.multiply(this.a)).add(this.b).toBigInteger().modPow(this.q.divide(new BigInteger('4')).add(BigInteger.ONE), this.q));\n // 算出结果 2 进制最后 1 位不等于第 1 个字节减 2 则取反\n if (!y.toBigInteger().mod(TWO).equals(new BigInteger(s.substr(0, 2), 16).subtract(TWO))) {\n y = y.negate();\n }\n return new ECPointFp(this, x, y);\n case 4:\n case 6:\n case 7:\n var len = (s.length - 2) / 2;\n var xHex = s.substr(2, len);\n var yHex = s.substr(len + 2, len);\n\n return new ECPointFp(this, this.fromBigInteger(new BigInteger(xHex, 16)), this.fromBigInteger(new BigInteger(yHex, 16)));\n default:\n // 不支持\n return null;\n }\n };\n\n return ECCurveFp;\n}();\n\nmodule.exports = {\n ECPointFp: ECPointFp,\n ECCurveFp: ECCurveFp\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _require = __webpack_require__(1),\n sm3 = _require.sm3,\n hmac = _require.hmac;\n\n/**\n * 补全16进制字符串\n */\n\n\nfunction leftPad(input, num) {\n if (input.length >= num) return input;\n\n return new Array(num - input.length + 1).join('0') + input;\n}\n\n/**\n * 字节数组转 16 进制串\n */\nfunction ArrayToHex(arr) {\n return arr.map(function (item) {\n item = item.toString(16);\n return item.length === 1 ? '0' + item : item;\n }).join('');\n}\n\n/**\n * 转成字节数组\n */\nfunction hexToArray(hexStr) {\n var words = [];\n var hexStrLength = hexStr.length;\n\n if (hexStrLength % 2 !== 0) {\n hexStr = leftPad(hexStr, hexStrLength + 1);\n }\n\n hexStrLength = hexStr.length;\n\n for (var i = 0; i < hexStrLength; i += 2) {\n words.push(parseInt(hexStr.substr(i, 2), 16));\n }\n return words;\n}\n\n/**\n * utf8 串转字节数组\n */\nfunction utf8ToArray(str) {\n var arr = [];\n\n for (var i = 0, len = str.length; i < len; i++) {\n var point = str.codePointAt(i);\n\n if (point <= 0x007f) {\n // 单字节,标量值:00000000 00000000 0zzzzzzz\n arr.push(point);\n } else if (point <= 0x07ff) {\n // 双字节,标量值:00000000 00000yyy yyzzzzzz\n arr.push(0xc0 | point >>> 6); // 110yyyyy(0xc0-0xdf)\n arr.push(0x80 | point & 0x3f); // 10zzzzzz(0x80-0xbf)\n } else if (point <= 0xD7FF || point >= 0xE000 && point <= 0xFFFF) {\n // 三字节:标量值:00000000 xxxxyyyy yyzzzzzz\n arr.push(0xe0 | point >>> 12); // 1110xxxx(0xe0-0xef)\n arr.push(0x80 | point >>> 6 & 0x3f); // 10yyyyyy(0x80-0xbf)\n arr.push(0x80 | point & 0x3f); // 10zzzzzz(0x80-0xbf)\n } else if (point >= 0x010000 && point <= 0x10FFFF) {\n // 四字节:标量值:000wwwxx xxxxyyyy yyzzzzzz\n i++;\n arr.push(0xf0 | point >>> 18 & 0x1c); // 11110www(0xf0-0xf7)\n arr.push(0x80 | point >>> 12 & 0x3f); // 10xxxxxx(0x80-0xbf)\n arr.push(0x80 | point >>> 6 & 0x3f); // 10yyyyyy(0x80-0xbf)\n arr.push(0x80 | point & 0x3f); // 10zzzzzz(0x80-0xbf)\n } else {\n // 五、六字节,暂时不支持\n arr.push(point);\n throw new Error('input is not supported');\n }\n }\n\n return arr;\n}\n\nmodule.exports = function (input, options) {\n input = typeof input === 'string' ? utf8ToArray(input) : Array.prototype.slice.call(input);\n\n if (options) {\n var mode = options.mode || 'hmac';\n if (mode !== 'hmac') throw new Error('invalid mode');\n\n var key = options.key;\n if (!key) throw new Error('invalid key');\n\n key = typeof key === 'string' ? hexToArray(key) : Array.prototype.slice.call(key);\n return ArrayToHex(hmac(input, key));\n }\n\n return ArrayToHex(sm3(input));\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* eslint-disable no-bitwise, no-mixed-operators, complexity */\nvar DECRYPT = 0;\nvar ROUND = 32;\nvar BLOCK = 16;\n\nvar Sbox = [0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05, 0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3, 0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99, 0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a, 0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62, 0xe4, 0xb3, 0x1c, 0xa9, 0xc9, 0x08, 0xe8, 0x95, 0x80, 0xdf, 0x94, 0xfa, 0x75, 0x8f, 0x3f, 0xa6, 0x47, 0x07, 0xa7, 0xfc, 0xf3, 0x73, 0x17, 0xba, 0x83, 0x59, 0x3c, 0x19, 0xe6, 0x85, 0x4f, 0xa8, 0x68, 0x6b, 0x81, 0xb2, 0x71, 0x64, 0xda, 0x8b, 0xf8, 0xeb, 0x0f, 0x4b, 0x70, 0x56, 0x9d, 0x35, 0x1e, 0x24, 0x0e, 0x5e, 0x63, 0x58, 0xd1, 0xa2, 0x25, 0x22, 0x7c, 0x3b, 0x01, 0x21, 0x78, 0x87, 0xd4, 0x00, 0x46, 0x57, 0x9f, 0xd3, 0x27, 0x52, 0x4c, 0x36, 0x02, 0xe7, 0xa0, 0xc4, 0xc8, 0x9e, 0xea, 0xbf, 0x8a, 0xd2, 0x40, 0xc7, 0x38, 0xb5, 0xa3, 0xf7, 0xf2, 0xce, 0xf9, 0x61, 0x15, 0xa1, 0xe0, 0xae, 0x5d, 0xa4, 0x9b, 0x34, 0x1a, 0x55, 0xad, 0x93, 0x32, 0x30, 0xf5, 0x8c, 0xb1, 0xe3, 0x1d, 0xf6, 0xe2, 0x2e, 0x82, 0x66, 0xca, 0x60, 0xc0, 0x29, 0x23, 0xab, 0x0d, 0x53, 0x4e, 0x6f, 0xd5, 0xdb, 0x37, 0x45, 0xde, 0xfd, 0x8e, 0x2f, 0x03, 0xff, 0x6a, 0x72, 0x6d, 0x6c, 0x5b, 0x51, 0x8d, 0x1b, 0xaf, 0x92, 0xbb, 0xdd, 0xbc, 0x7f, 0x11, 0xd9, 0x5c, 0x41, 0x1f, 0x10, 0x5a, 0xd8, 0x0a, 0xc1, 0x31, 0x88, 0xa5, 0xcd, 0x7b, 0xbd, 0x2d, 0x74, 0xd0, 0x12, 0xb8, 0xe5, 0xb4, 0xb0, 0x89, 0x69, 0x97, 0x4a, 0x0c, 0x96, 0x77, 0x7e, 0x65, 0xb9, 0xf1, 0x09, 0xc5, 0x6e, 0xc6, 0x84, 0x18, 0xf0, 0x7d, 0xec, 0x3a, 0xdc, 0x4d, 0x20, 0x79, 0xee, 0x5f, 0x3e, 0xd7, 0xcb, 0x39, 0x48];\n\nvar CK = [0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269, 0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9, 0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249, 0x50575e65, 0x6c737a81, 0x888f969d, 0xa4abb2b9, 0xc0c7ced5, 0xdce3eaf1, 0xf8ff060d, 0x141b2229, 0x30373e45, 0x4c535a61, 0x686f767d, 0x848b9299, 0xa0a7aeb5, 0xbcc3cad1, 0xd8dfe6ed, 0xf4fb0209, 0x10171e25, 0x2c333a41, 0x484f565d, 0x646b7279];\n\n/**\r\n * 16 进制串转字节数组\r\n */\nfunction hexToArray(str) {\n var arr = [];\n for (var i = 0, len = str.length; i < len; i += 2) {\n arr.push(parseInt(str.substr(i, 2), 16));\n }\n return arr;\n}\n\n/**\r\n * 字节数组转 16 进制串\r\n */\nfunction ArrayToHex(arr) {\n return arr.map(function (item) {\n item = item.toString(16);\n return item.length === 1 ? '0' + item : item;\n }).join('');\n}\n\n/**\r\n * utf8 串转字节数组\r\n */\nfunction utf8ToArray(str) {\n var arr = [];\n\n for (var i = 0, len = str.length; i < len; i++) {\n var point = str.codePointAt(i);\n\n if (point <= 0x007f) {\n // 单字节,标量值:00000000 00000000 0zzzzzzz\n arr.push(point);\n } else if (point <= 0x07ff) {\n // 双字节,标量值:00000000 00000yyy yyzzzzzz\n arr.push(0xc0 | point >>> 6); // 110yyyyy(0xc0-0xdf)\n arr.push(0x80 | point & 0x3f); // 10zzzzzz(0x80-0xbf)\n } else if (point <= 0xD7FF || point >= 0xE000 && point <= 0xFFFF) {\n // 三字节:标量值:00000000 xxxxyyyy yyzzzzzz\n arr.push(0xe0 | point >>> 12); // 1110xxxx(0xe0-0xef)\n arr.push(0x80 | point >>> 6 & 0x3f); // 10yyyyyy(0x80-0xbf)\n arr.push(0x80 | point & 0x3f); // 10zzzzzz(0x80-0xbf)\n } else if (point >= 0x010000 && point <= 0x10FFFF) {\n // 四字节:标量值:000wwwxx xxxxyyyy yyzzzzzz\n i++;\n arr.push(0xf0 | point >>> 18 & 0x1c); // 11110www(0xf0-0xf7)\n arr.push(0x80 | point >>> 12 & 0x3f); // 10xxxxxx(0x80-0xbf)\n arr.push(0x80 | point >>> 6 & 0x3f); // 10yyyyyy(0x80-0xbf)\n arr.push(0x80 | point & 0x3f); // 10zzzzzz(0x80-0xbf)\n } else {\n // 五、六字节,暂时不支持\n arr.push(point);\n throw new Error('input is not supported');\n }\n }\n\n return arr;\n}\n\n/**\r\n * 字节数组转 utf8 串\r\n */\nfunction arrayToUtf8(arr) {\n var str = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n if (arr[i] >= 0xf0 && arr[i] <= 0xf7) {\n // 四字节\n str.push(String.fromCodePoint(((arr[i] & 0x07) << 18) + ((arr[i + 1] & 0x3f) << 12) + ((arr[i + 2] & 0x3f) << 6) + (arr[i + 3] & 0x3f)));\n i += 3;\n } else if (arr[i] >= 0xe0 && arr[i] <= 0xef) {\n // 三字节\n str.push(String.fromCodePoint(((arr[i] & 0x0f) << 12) + ((arr[i + 1] & 0x3f) << 6) + (arr[i + 2] & 0x3f)));\n i += 2;\n } else if (arr[i] >= 0xc0 && arr[i] <= 0xdf) {\n // 双字节\n str.push(String.fromCodePoint(((arr[i] & 0x1f) << 6) + (arr[i + 1] & 0x3f)));\n i++;\n } else {\n // 单字节\n str.push(String.fromCodePoint(arr[i]));\n }\n }\n\n return str.join('');\n}\n\n/**\r\n * 32 比特循环左移\r\n */\nfunction rotl(x, n) {\n var s = n & 31;\n return x << s | x >>> 32 - s;\n}\n\n/**\r\n * 非线性变换\r\n */\nfunction byteSub(a) {\n return (Sbox[a >>> 24 & 0xFF] & 0xFF) << 24 | (Sbox[a >>> 16 & 0xFF] & 0xFF) << 16 | (Sbox[a >>> 8 & 0xFF] & 0xFF) << 8 | Sbox[a & 0xFF] & 0xFF;\n}\n\n/**\r\n * 线性变换,加密/解密用\r\n */\nfunction l1(b) {\n return b ^ rotl(b, 2) ^ rotl(b, 10) ^ rotl(b, 18) ^ rotl(b, 24);\n}\n\n/**\r\n * 线性变换,生成轮密钥用\r\n */\nfunction l2(b) {\n return b ^ rotl(b, 13) ^ rotl(b, 23);\n}\n\n/**\r\n * 以一组 128 比特进行加密/解密操作\r\n */\nfunction sms4Crypt(input, output, roundKey) {\n var x = new Array(4);\n\n // 字节数组转成字数组(此处 1 字 = 32 比特)\n var tmp = new Array(4);\n for (var i = 0; i < 4; i++) {\n tmp[0] = input[4 * i] & 0xff;\n tmp[1] = input[4 * i + 1] & 0xff;\n tmp[2] = input[4 * i + 2] & 0xff;\n tmp[3] = input[4 * i + 3] & 0xff;\n x[i] = tmp[0] << 24 | tmp[1] << 16 | tmp[2] << 8 | tmp[3];\n }\n\n // x[i + 4] = x[i] ^ l1(byteSub(x[i + 1] ^ x[i + 2] ^ x[i + 3] ^ roundKey[i]))\n for (var r = 0, mid; r < 32; r += 4) {\n mid = x[1] ^ x[2] ^ x[3] ^ roundKey[r + 0];\n x[0] ^= l1(byteSub(mid)); // x[4]\n\n mid = x[2] ^ x[3] ^ x[0] ^ roundKey[r + 1];\n x[1] ^= l1(byteSub(mid)); // x[5]\n\n mid = x[3] ^ x[0] ^ x[1] ^ roundKey[r + 2];\n x[2] ^= l1(byteSub(mid)); // x[6]\n\n mid = x[0] ^ x[1] ^ x[2] ^ roundKey[r + 3];\n x[3] ^= l1(byteSub(mid)); // x[7]\n }\n\n // 反序变换\n for (var j = 0; j < 16; j += 4) {\n output[j] = x[3 - j / 4] >>> 24 & 0xff;\n output[j + 1] = x[3 - j / 4] >>> 16 & 0xff;\n output[j + 2] = x[3 - j / 4] >>> 8 & 0xff;\n output[j + 3] = x[3 - j / 4] & 0xff;\n }\n}\n\n/**\r\n * 密钥扩展算法\r\n */\nfunction sms4KeyExt(key, roundKey, cryptFlag) {\n var x = new Array(4);\n\n // 字节数组转成字数组(此处 1 字 = 32 比特)\n var tmp = new Array(4);\n for (var i = 0; i < 4; i++) {\n tmp[0] = key[0 + 4 * i] & 0xff;\n tmp[1] = key[1 + 4 * i] & 0xff;\n tmp[2] = key[2 + 4 * i] & 0xff;\n tmp[3] = key[3 + 4 * i] & 0xff;\n x[i] = tmp[0] << 24 | tmp[1] << 16 | tmp[2] << 8 | tmp[3];\n }\n\n // 与系统参数做异或\n x[0] ^= 0xa3b1bac6;\n x[1] ^= 0x56aa3350;\n x[2] ^= 0x677d9197;\n x[3] ^= 0xb27022dc;\n\n // roundKey[i] = x[i + 4] = x[i] ^ l2(byteSub(x[i + 1] ^ x[i + 2] ^ x[i + 3] ^ CK[i]))\n for (var r = 0, mid; r < 32; r += 4) {\n mid = x[1] ^ x[2] ^ x[3] ^ CK[r + 0];\n roundKey[r + 0] = x[0] ^= l2(byteSub(mid)); // x[4]\n\n mid = x[2] ^ x[3] ^ x[0] ^ CK[r + 1];\n roundKey[r + 1] = x[1] ^= l2(byteSub(mid)); // x[5]\n\n mid = x[3] ^ x[0] ^ x[1] ^ CK[r + 2];\n roundKey[r + 2] = x[2] ^= l2(byteSub(mid)); // x[6]\n\n mid = x[0] ^ x[1] ^ x[2] ^ CK[r + 3];\n roundKey[r + 3] = x[3] ^= l2(byteSub(mid)); // x[7]\n }\n\n // 解密时使用反序的轮密钥\n if (cryptFlag === DECRYPT) {\n for (var _r = 0, _mid; _r < 16; _r++) {\n _mid = roundKey[_r];\n roundKey[_r] = roundKey[31 - _r];\n roundKey[31 - _r] = _mid;\n }\n }\n}\n\nfunction sm4(inArray, key, cryptFlag) {\n var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n _ref$padding = _ref.padding,\n padding = _ref$padding === undefined ? 'pkcs#7' : _ref$padding,\n mode = _ref.mode,\n _ref$iv = _ref.iv,\n iv = _ref$iv === undefined ? [] : _ref$iv,\n _ref$output = _ref.output,\n output = _ref$output === undefined ? 'string' : _ref$output;\n\n if (mode === 'cbc') {\n // CBC 模式,默认走 ECB 模式\n if (typeof iv === 'string') iv = hexToArray(iv);\n if (iv.length !== 128 / 8) {\n // iv 不是 128 比特\n throw new Error('iv is invalid');\n }\n }\n\n // 检查 key\n if (typeof key === 'string') key = hexToArray(key);\n if (key.length !== 128 / 8) {\n // key 不是 128 比特\n throw new Error('key is invalid');\n }\n\n // 检查输入\n if (typeof inArray === 'string') {\n if (cryptFlag !== DECRYPT) {\n // 加密,输入为 utf8 串\n inArray = utf8ToArray(inArray);\n } else {\n // 解密,输入为 16 进制串\n inArray = hexToArray(inArray);\n }\n } else {\n inArray = [].concat(inArray);\n }\n\n // 新增填充,sm4 是 16 个字节一个分组,所以统一走到 pkcs#7\n if ((padding === 'pkcs#5' || padding === 'pkcs#7') && cryptFlag !== DECRYPT) {\n var paddingCount = BLOCK - inArray.length % BLOCK;\n for (var i = 0; i < paddingCount; i++) {\n inArray.push(paddingCount);\n }\n }\n\n // 生成轮密钥\n var roundKey = new Array(ROUND);\n sms4KeyExt(key, roundKey, cryptFlag);\n\n var outArray = [];\n var lastVector = iv;\n var restLen = inArray.length;\n var point = 0;\n while (restLen >= BLOCK) {\n var input = inArray.slice(point, point + 16);\n var _output = new Array(16);\n\n if (mode === 'cbc') {\n for (var _i = 0; _i < BLOCK; _i++) {\n if (cryptFlag !== DECRYPT) {\n // 加密过程在组加密前进行异或\n input[_i] ^= lastVector[_i];\n }\n }\n }\n\n sms4Crypt(input, _output, roundKey);\n\n for (var _i2 = 0; _i2 < BLOCK; _i2++) {\n if (mode === 'cbc') {\n if (cryptFlag === DECRYPT) {\n // 解密过程在组解密后进行异或\n _output[_i2] ^= lastVector[_i2];\n }\n }\n\n outArray[point + _i2] = _output[_i2];\n }\n\n if (mode === 'cbc') {\n if (cryptFlag !== DECRYPT) {\n // 使用上一次输出作为加密向量\n lastVector = _output;\n } else {\n // 使用上一次输入作为解密向量\n lastVector = input;\n }\n }\n\n restLen -= BLOCK;\n point += BLOCK;\n }\n\n // 去除填充,sm4 是 16 个字节一个分组,所以统一走到 pkcs#7\n if ((padding === 'pkcs#5' || padding === 'pkcs#7') && cryptFlag === DECRYPT) {\n var len = outArray.length;\n var _paddingCount = outArray[len - 1];\n for (var _i3 = 1; _i3 <= _paddingCount; _i3++) {\n if (outArray[len - _i3] !== _paddingCount) throw new Error('padding is invalid');\n }\n outArray.splice(len - _paddingCount, _paddingCount);\n }\n\n // 调整输出\n if (output !== 'array') {\n if (cryptFlag !== DECRYPT) {\n // 加密,输出转 16 进制串\n return ArrayToHex(outArray);\n } else {\n // 解密,输出转 utf8 串\n return arrayToUtf8(outArray);\n }\n } else {\n return outArray;\n }\n}\n\nmodule.exports = {\n encrypt: function encrypt(inArray, key, options) {\n return sm4(inArray, key, 1, options);\n },\n decrypt: function decrypt(inArray, key, options) {\n return sm4(inArray, key, 0, options);\n }\n};\n\n/***/ })\n/******/ ]);","/*\r\n * @Description: Crypto APIs based on miniprogram-sm-crypto (SM2/SM3/SM4)\r\n */\r\n\r\n// Use ESM default import style compatible with Vite bundling\r\nimport { sm2, sm3, sm4 } from 'miniprogram-sm-crypto';\r\n\r\n// SM2 helpers\r\nexport const sm2GenerateKeyPair = (random) => {\r\n return sm2.generateKeyPairHex(random);\r\n};\r\n\r\nexport const sm2Encrypt = (message, publicKey, cipherMode = 1, options) => {\r\n // message can be string or byte array; options are forwarded as-is\r\n return sm2.doEncrypt(message, publicKey, cipherMode, options);\r\n};\r\n\r\nexport const sm2Decrypt = (cipherText, privateKey, cipherMode = 1, options) => {\r\n return sm2.doDecrypt(cipherText, privateKey, cipherMode, options);\r\n};\r\n\r\nexport const sm2Sign = (message, privateKey, options) => {\r\n return sm2.doSignature(message, privateKey, options);\r\n};\r\n\r\nexport const sm2Verify = (message, signatureHex, publicKey, options) => {\r\n return sm2.doVerifySignature(message, signatureHex, publicKey, options);\r\n};\r\n\r\nexport const sm2GetPublicKey = (privateKey) => {\r\n return sm2.getPublicKeyFromPrivateKey(privateKey);\r\n};\r\n\r\nexport const sm2GetPoint = () => sm2.getPoint();\r\nexport const sm2CompressPublicKey = (publicKey) => sm2.compressPublicKeyHex(publicKey);\r\nexport const sm2ComparePublicKey = (a, b) => sm2.comparePublicKeyHex(a, b);\r\nexport const sm2VerifyPublicKey = (publicKey) => sm2.verifyPublicKey(publicKey);\r\n\r\n// SM3 helper (supports HMAC via options.key)\r\nexport const sm3Hash = (message, options) => sm3(message, options);\r\n\r\n// SM4 helpers\r\nexport const sm4Encrypt = (message, key, options) => sm4.encrypt(message, key, options);\r\nexport const sm4Decrypt = (cipherText, key, options) => sm4.decrypt(cipherText, key, options);\r\n\r\n// Raw access in case consumers need full control\r\nexport const __raw__ = { sm2, sm3, sm4 };\r\n\r\nexport default {\r\n sm2GenerateKeyPair,\r\n sm2Encrypt,\r\n sm2Decrypt,\r\n sm2Sign,\r\n sm2Verify,\r\n sm2GetPublicKey,\r\n sm2GetPoint,\r\n sm2CompressPublicKey,\r\n sm2ComparePublicKey,\r\n sm2VerifyPublicKey,\r\n sm3Hash,\r\n sm4Encrypt,\r\n sm4Decrypt,\r\n __raw__\r\n};\r\n\r\n","/*\n * @Description: \n * @Author: TK\n * @Date: 2025-08-06 09:54:28\n * @LastEditors: TK\n * @LastEditTime: 2025-08-08 16:55:09\n */\n/**\n * UniApp WebView SDK\n * 支持微信小程序和 APP 端的 WebView 通信\n */\n\n// 导入核心模块\nimport { waitForBridge, initBridge } from './core/bridge.js';\nimport { environment } from './core/environment.js';\n\n// 导入 API 模块\nimport { \n navigateTo, \n navigateBack, \n switchTab, \n reLaunch, \n redirectTo \n} from './api/navigation.js';\n\nimport { \n postMessage, \n getEnv \n} from './api/message.js';\nimport crypto from './api/crypto.js';\n\n// 平台特定 API 不在此处直接导入,按需在各模块内处理\n\n// 自动初始化逻辑 - 确保在 DOM 准备好后初始化\nif (typeof window !== 'undefined') {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // DOM 已经准备好,立即初始化\n setTimeout(() => initBridge(), 0);\n } else {\n // 等待 DOM 准备好\n document.addEventListener('DOMContentLoaded', () => {\n initBridge();\n });\n }\n}\n\n// 创建 uni 对象\nconst uni = {\n // 导航 API\n navigateTo,\n navigateBack,\n switchTab,\n reLaunch,\n redirectTo,\n \n // 消息 API\n postMessage,\n getEnv,\n \n // 加密 API\n crypto,\n \n // 环境信息\n environment,\n \n // 等待桥接准备就绪\n ready: waitForBridge,\n \n // 添加手动初始化方法(供需要手动控制的场景使用)\n init: initBridge,\n \n // WebView 对象(兼容旧版本)\n webView: null\n};\n\n// 设置 webView 对象\nif (environment.isWeixinMiniProgram) {\n uni.webView = window.wx && window.wx.miniProgram;\n} else {\n uni.webView = {\n navigateTo,\n navigateBack,\n switchTab,\n reLaunch,\n redirectTo,\n postMessage,\n getEnv\n };\n}\n\n// 保留对原始 uni 对象的引用(如果存在)\nconst originalUni = typeof window.uni !== 'undefined' ? window.uni : {};\n\n// 合并原有的 uni 对象属性(如果存在)\nObject.keys(originalUni).forEach(key => {\n if (!uni.hasOwnProperty(key)) {\n uni[key] = originalUni[key];\n }\n});\n\n// 导出\nexport default uni;\n\n// 自动挂载到全局(UMD 模式)\nif (typeof window !== 'undefined') {\n // 仅挂载新全局名,不再暴露 window.uni\n window.qsh = uni;\n}"],"names":["isWeixinMiniProgram","isAppPlus","isNvue","isUvue","isUniApp","isHtml5Plus","getEnvironment","environment","READY_STATE_REGEX","fireJSBridgeReadyEvent","initializeInApp","callback","initializeInWeixin","initializeBridge","waitForBridge","resolve","isInitialized","initBridge","webviewIds","getCurrentWebviewId","currentWebview","parent","webviewId","sendToUniAppX","name","data","message","postData","serviceMessage","sendToNvue","sendToPlus","currentWebviewIds","jsonMessage","jsonWebviewIds","sendToParent","sendMessage","navigateTo","options","url","navigateBack","delta","switchTab","reLaunch","redirectTo","postMessage","getEnv","envInfo","isAppEnv","getPlatformNavigation","weixinPlatform","appPlatform","getPlatformMessage","dbits","canary","j_lm","BigInteger","a","b","c","nbi","am1","i","x","w","j","n","v","am2","xl","xh","l","h","m","am3","inBrowser","BI_FP","BI_RM","BI_RC","rr","vv","int2char","intAt","s","bnpCopyTo","r","bnpFromInt","nbv","bnpFromString","k","mi","sh","bnpClamp","bnToString","km","d","p","bnNegate","bnAbs","bnCompareTo","nbits","t","bnBitLength","bnpDLShiftTo","bnpDRShiftTo","bnpLShiftTo","bs","cbs","bm","ds","bnpRShiftTo","bnpSubTo","bnpMultiplyTo","y","bnpSquareTo","bnpDivRemTo","q","pm","pt","ts","ms","nsh","ys","y0","yt","d1","d2","e","qd","bnMod","Classic","cConvert","cRevert","cReduce","cMulTo","cSqrTo","bnpInvDigit","Montgomery","montConvert","montRevert","montReduce","u0","montSqrTo","montMulTo","bnpIsEven","bnpExp","z","r2","g","bnModPowInt","bnClone","bnIntValue","bnByteValue","bnShortValue","bnpChunkSize","bnSigNum","bnpToRadix","cs","bnpFromRadix","bnpFromNumber","op_or","bnToByteArray","bnEquals","bnMin","bnMax","bnpBitwiseTo","op","f","op_and","bnAnd","bnOr","op_xor","bnXor","op_andnot","bnAndNot","bnNot","bnShiftLeft","bnShiftRight","lbit","bnGetLowestSetBit","cbit","bnBitCount","bnTestBit","bnpChangeBit","bnSetBit","bnClearBit","bnFlipBit","bnpAddTo","bnAdd","bnSubtract","bnMultiply","bnSquare","bnDivide","bnRemainder","bnDivideAndRemainder","bnpDMultiply","bnpDAddOffset","NullExp","nNop","nMulTo","nSqrTo","bnPow","bnpMultiplyLowerTo","bnpMultiplyUpperTo","Barrett","barrettConvert","barrettRevert","barrettReduce","barrettSqrTo","barrettMulTo","bnModPow","k1","g2","is1","bnGCD","bnpModInt","bnModInverse","ac","u","lowprimes","lplim","bnIsProbablePrime","bnpMillerRabin","n1","rng_state","rng_pool","rng_pptr","rng_seed_int","rng_psize","rng_seed_time","ua","rng_get_byte","prng_newstate","rng_get_bytes","ba","SecureRandom","Arcfour","ARC4init","key","ARC4next","module","this","modules","installedModules","__webpack_require__","moduleId","exports","getter","value","mode","ns","object","property","require$$0","W","M","rotl","xor","result","P0","X","P1","sm3","array","len","kArr","lenArr","_len","_i","_len2","_i2","start","dataView","V","_i3","_start","_j","_j2","T1","T2","A","B","C","D","E","F","G","H","SS1","SS2","TT1","TT2","T","_j3","_i4","_len3","word","blockLen","iPad","oPad","hmac","input","iPadKey","oPadKey","hash","_require","_require2","encodeDer","decodeDer","_","_$generateEcparam","curve","C1C2C3","doEncrypt","msg","publicKey","cipherMode","keypair","c1","x2","y2","c3","ct","offset","nextT","c2","doDecrypt","encryptData","privateKey","_ref","_ref$output","output","checkC3","doSignature","_ref2","pointPool","der","userId","hashHex","getPublicKeyFromPrivateKey","getHash","dA","point","getPoint","doVerifySignature","signHex","_ref3","decodeDerObj","PA","x1y1","R","gx","gy","px","py","entl","_possibleConstructorReturn","self","call","_inherits","subClass","superClass","_classCallCheck","instance","Constructor","bigintToValue","bigint","mask","ASN1Object","nHex","head","DERInteger","_ASN1Object","_this","DERSequence","_ASN1Object2","asn1Array","_this2","asn1Object","getLenOfL","str","getL","getStartOfV","derR","derS","derSeq","vIndexR","lR","vR","nextStart","vIndexS","lS","vS","ECCurveFp","rng","_generateEcparam","generateEcparam","getGlobalCurve","gxHex","gyHex","generateKeyPairHex","random","leftPad","P","Px","Py","compressPublicKeyHex","xHex","prefix","utf8ToHex","length","words","hexChars","bite","num","arrayToHex","arr","item","arrayToUtf8","latin1Chars","hexToArray","hexStr","hexStrLength","verifyPublicKey","comparePublicKeyHex","publicKey1","publicKey2","point1","point2","TWO","THREE","ECFieldElementFp","other","ECPointFp","x1","y1","z1","z2","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","x3","y3","z3","k3","neg","Q","k3Bit","kBit","yHex","ArrayToHex","utf8ToArray","DECRYPT","ROUND","BLOCK","Sbox","CK","byteSub","l1","l2","sms4Crypt","roundKey","tmp","mid","sms4KeyExt","cryptFlag","_r","_mid","sm4","inArray","_ref$padding","padding","_ref$iv","iv","paddingCount","outArray","lastVector","restLen","_output","_paddingCount","sm2GenerateKeyPair","sm2","sm2Encrypt","sm2Decrypt","cipherText","sm2Sign","sm2Verify","signatureHex","sm2GetPublicKey","sm2GetPoint","sm2CompressPublicKey","sm2ComparePublicKey","sm2VerifyPublicKey","sm3Hash","sm4Encrypt","sm4Decrypt","__raw__","crypto","uni","originalUni"],"mappings":"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","x_google_ignoreList":[7,8]}
|