From ef991fe9f151a57bc677bec77624eedbfabc126f Mon Sep 17 00:00:00 2001 From: duruofu <2747211095@qq.com> Date: Mon, 4 Aug 2025 19:55:09 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=88=A0=E9=99=A4=20ESP=20Config?= =?UTF-8?q?=20WeChat=20=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blufi/ESP-Config-WeChat/.gitignore | 2 - .../blufi/ESP-Config-WeChat/README.md | 5 - .../blufi/ESP-Config-WeChat/app.js | 22 - .../blufi/ESP-Config-WeChat/app.json | 15 - .../blufi/ESP-Config-WeChat/app.wxss | 119 - .../blufi/ESP-Config-WeChat/crypto/aes.js | 802 ---- .../ESP-Config-WeChat/crypto/crypto-dh.js | 42 - .../ESP-Config-WeChat/crypto/lib/base64-js.js | 151 - .../blufi/ESP-Config-WeChat/crypto/lib/bn.js | 3427 ----------------- .../ESP-Config-WeChat/crypto/lib/brorand.js | 52 - .../ESP-Config-WeChat/crypto/lib/buffer.js | 1777 --------- .../blufi/ESP-Config-WeChat/crypto/lib/dh.js | 165 - .../crypto/lib/generatePrime.js | 105 - .../ESP-Config-WeChat/crypto/lib/ieee754.js | 84 - .../crypto/lib/miller-rabin.js | 115 - .../crypto/lib/randombytes.js | 31 - .../crypto/lib/safe-buffer.js | 62 - .../blufi/ESP-Config-WeChat/crypto/md5.min.js | 10 - .../images/bluetooth-way.png | Bin 8179 -> 0 bytes .../ESP-Config-WeChat/images/bluetooth.png | Bin 5112 -> 0 bytes .../ESP-Config-WeChat/images/failure.png | Bin 36457 -> 0 bytes .../ESP-Config-WeChat/images/network.png | Bin 47485 -> 0 bytes .../blufi/ESP-Config-WeChat/images/round.gif | Bin 265142 -> 0 bytes .../ESP-Config-WeChat/images/wifi-lock.png | Bin 15041 -> 0 bytes .../ESP-Config-WeChat/images/wifi-way.png | Bin 16447 -> 0 bytes .../blufi/ESP-Config-WeChat/images/wifi.png | Bin 13346 -> 0 bytes .../blufi/ESP-Config-WeChat/package-lock.json | 28 - .../blufi/ESP-Config-WeChat/package.json | 23 - .../pages/blueConnect/blueConnect.js | 388 -- .../pages/blueConnect/blueConnect.json | 1 - .../pages/blueConnect/blueConnect.wxml | 29 - .../pages/blueConnect/blueConnect.wxss | 68 - .../pages/blueDevices/blueDevices.js | 105 - .../pages/blueDevices/blueDevices.json | 1 - .../pages/blueDevices/blueDevices.wxml | 13 - .../pages/blueDevices/blueDevices.wxss | 11 - .../pages/blueWifi/blueWifi.js | 476 --- .../pages/blueWifi/blueWifi.json | 4 - .../pages/blueWifi/blueWifi.wxml | 19 - .../pages/blueWifi/blueWifi.wxss | 12 - .../ESP-Config-WeChat/pages/index/index.js | 57 - .../ESP-Config-WeChat/pages/index/index.json | 1 - .../ESP-Config-WeChat/pages/index/index.wxml | 19 - .../ESP-Config-WeChat/pages/index/index.wxss | 60 - .../pages/wifiConfig/wifiConfig.js | 72 - .../pages/wifiConfig/wifiConfig.json | 1 - .../pages/wifiConfig/wifiConfig.wxml | 20 - .../pages/wifiConfig/wifiConfig.wxss | 9 - .../pages/wifiConnect/wifiConnect.js | 166 - .../pages/wifiConnect/wifiConnect.json | 1 - .../pages/wifiConnect/wifiConnect.wxml | 13 - .../pages/wifiConnect/wifiConnect.wxss | 13 - .../pages/wifiDevices/wifiDevices.js | 67 - .../pages/wifiDevices/wifiDevices.json | 1 - .../pages/wifiDevices/wifiDevices.wxml | 23 - .../pages/wifiDevices/wifiDevices.wxss | 20 - .../pages/wifiList/wifiList.js | 142 - .../pages/wifiList/wifiList.json | 1 - .../pages/wifiList/wifiList.wxml | 35 - .../pages/wifiList/wifiList.wxss | 35 - .../ESP-Config-WeChat/project.config.json | 54 - .../project.private.config.json | 7 - .../blufi/ESP-Config-WeChat/sitemap.json | 7 - .../blufi/ESP-Config-WeChat/utils/util.js | 440 --- .../blufi/blufi-esp32/CMakeLists.txt | 6 - .../wifi_config/blufi/blufi-esp32/README.md | 84 - .../blufi/blufi-esp32/main/CMakeLists.txt | 4 - .../blufi/blufi-esp32/main/Kconfig.projbuild | 10 - .../blufi/blufi-esp32/main/blufi_example.h | 26 - .../blufi-esp32/main/blufi_example_main.c | 484 --- .../blufi/blufi-esp32/main/blufi_init.c | 283 -- .../blufi/blufi-esp32/main/blufi_security.c | 227 -- .../blufi/blufi-esp32/sdkconfig.defaults | 18 - .../blufi-esp32/sdkconfig.defaults.esp32 | 7 - .../blufi-esp32/sdkconfig.defaults.esp32c2 | 18 - .../blufi-esp32/sdkconfig.defaults.esp32c3 | 7 - .../blufi-esp32/sdkconfig.defaults.esp32c6 | 18 - .../blufi-esp32/sdkconfig.defaults.esp32s3 | 7 - docs/docs/guide/.obsidian/workspace.json | 65 +- .../4.1-基础外设/4.1.9-I2S/I2S入门.md | 2 - .../4.3-其他外设/4.3.2-TWAI/TWAI.md | 99 + .../04.外设学习/4.3-其他外设/4.3.3-RMT/RMT.md | 4 + .../10.1.3-42步进电机/42步进电机.md | 108 + .../attachments/Pasted image 20250604162038.png | Bin 0 -> 1401346 bytes .../attachments/Pasted image 20250604162227.png | Bin 0 -> 240076 bytes .../attachments/Pasted image 20250604162407.png | Bin 0 -> 209484 bytes .../attachments/Pasted image 20250604164852.png | Bin 0 -> 28753 bytes .../attachments/Pasted image 20250604164929.png | Bin 0 -> 74915 bytes .../attachments/Pasted image 20250604165352.png | Bin 0 -> 349720 bytes .../attachments/Pasted image 20250624165127.png | Bin 0 -> 1877481 bytes .../attachments/Pasted image 20250624174733.png | Bin 0 -> 1638650 bytes .../attachments/Pasted image 20250624174842.png | Bin 0 -> 131235 bytes .../10.1.4-rc522模块/rc522模块.md | 140 + 93 files changed, 389 insertions(+), 10656 deletions(-) delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/.gitignore delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/README.md delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.wxss delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/aes.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/crypto-dh.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/base64-js.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/bn.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/brorand.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/buffer.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/dh.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/generatePrime.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/ieee754.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/miller-rabin.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/randombytes.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/safe-buffer.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/md5.min.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/bluetooth-way.png delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/bluetooth.png delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/failure.png delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/network.png delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/round.gif delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/wifi-lock.png delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/wifi-way.png delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/wifi.png delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/package-lock.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/package.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.wxml delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.wxss delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.wxml delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.wxss delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.wxml delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.wxss delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.wxml delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.wxss delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.wxml delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.wxss delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.wxml delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.wxss delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.wxml delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.wxss delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.js delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.wxml delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.wxss delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/project.config.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/project.private.config.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/sitemap.json delete mode 100644 code/09.extra/wifi_config/blufi/ESP-Config-WeChat/utils/util.js delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/CMakeLists.txt delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/README.md delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/main/CMakeLists.txt delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/main/Kconfig.projbuild delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_example.h delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_example_main.c delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_init.c delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_security.c delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32 delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c2 delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c3 delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c6 delete mode 100644 code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32s3 create mode 100644 docs/docs/guide/04.外设学习/4.3-其他外设/4.3.2-TWAI/TWAI.md create mode 100644 docs/docs/guide/04.外设学习/4.3-其他外设/4.3.3-RMT/RMT.md create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/42步进电机.md create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604162038.png create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604162227.png create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604162407.png create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604164852.png create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604164929.png create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604165352.png create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.4-rc522模块/attachments/Pasted image 20250624165127.png create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.4-rc522模块/attachments/Pasted image 20250624174733.png create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.4-rc522模块/attachments/Pasted image 20250624174842.png create mode 100644 docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.4-rc522模块/rc522模块.md diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/.gitignore b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/.gitignore deleted file mode 100644 index 5225be2..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -miniprogram_npm/ diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/README.md b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/README.md deleted file mode 100644 index ea42453..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# ESP Config WeChat -A WeChat application for provisioning ESP smart devices. - -## Implemented modules -[BluFi](https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/blufi) diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.js deleted file mode 100644 index 4655336..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.js +++ /dev/null @@ -1,22 +0,0 @@ -//app.js -App({ - data: { - service_uuid: "0000FFFF-0000-1000-8000-00805F9B34FB", - characteristic_write_uuid: "0000FF01-0000-1000-8000-00805F9B34FB", - characteristic_read_uuid: "0000FF02-0000-1000-8000-00805F9B34FB", - name: "BLUFI", - mtu: 19, - constMtu: 128, - md5Key: "", - platform: '', - sequenceControl: -1, - sequenceNumber: -1 - }, - - onLaunch: function () { - - }, - globalData: { - userInfo: null - } -}) \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.json deleted file mode 100644 index fc7cc3c..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "pages": [ - "pages/index/index", - "pages/blueDevices/blueDevices", - "pages/blueWifi/blueWifi", - "pages/blueConnect/blueConnect" - ], - "window": { - "backgroundTextStyle": "light", - "navigationBarBackgroundColor": "#4d9efb", - "navigationBarTitleText": "WeChat", - "navigationBarTextStyle": "white" - }, - "sitemapLocation": "sitemap.json" -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.wxss b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.wxss deleted file mode 100644 index 1b8be7d..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/app.wxss +++ /dev/null @@ -1,119 +0,0 @@ -/**app.wxss**/ -.container { - height: 100%; - display: flex; - padding: 0 10px; - flex-direction: column; - align-items: center; - justify-content: space-between; - box-sizing: border-box; -} -.item { - display: flex; - height: 130rpx; - width: 100%; - align-items: center; - border-bottom: 1px solid #eee; -} -.item-img { - flex: 0 0 100rpx; - height: 100rpx; - display: flex; - justify-content: center; - align-items: center; - border-radius: 100%; -} -.bluetooth-img { - height: 80rpx; - width: 80rpx; -} -.item-name { - flex: 1; - padding-left: 10px; - display: flex; - flex-direction: column; - font-size: 32rpx; -} -.text-rssi { - font-size: 28rpx; - color: #999; -} -.btn { - width: 100%; - height: 90rpx; - line-height: 90rpx; - background: #4d9efb; - border: none; - margin-bottom: 30rpx; - font-size: 14px; - color: #fff; -} -.font14 { - font-size: 14px; -} -.font16 { - font-size: 16px; -} -.textcenter { - text-align: center; -} -.width100 { - width: 100%; -} -.margintop20 { - margin-top: 20px; -} -.margintop10 { - margin-top: 10px; -} -.modal-mask{ - width: 100%; - height: 100%; - position: fixed; - top: 0; - left: 0; - background: rgba(0,0,0,.7); - overflow: hidden; - color: #ffffff; - z-index:900; -} -.modal-dialog{ - background-color: #f9f9f9; - /*background: rgba(0,0,0,.7);*/ - opacity: 0.95; - position: fixed; - z-index: 999; - top: 20%; - left: 10%; - overflow: hidden; - width: 80%; - color: #000; - border-radius: 26rpx; -} -.modal-dialog input{ - margin: 15px 0; - padding: 0 20px; - font-size: 32rpx; -} -.modal-btn-wrapper{ - display: flex; - flex-direction: row; - height: 100rpx; - line-height:90rpx; - border-top: 2rpx solid rgba(7,17,27,0.1); -} -.cancel-btn, .confirm-btn{ - flex: 1; - height: 100rpx; - line-height: 100rpx; - text-align: center; - font-size: 32rpx; -} -.cancel-btn{ - border-right: 2rpx solid rgba(7,17,27,0.1); -} -.modal-title{ - text-align: center; - padding-top: 10px; -} - diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/aes.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/aes.js deleted file mode 100644 index ec49bc5..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/aes.js +++ /dev/null @@ -1,802 +0,0 @@ -(function(root) { - "use strict"; - - function checkInt(value) { - return (parseInt(value) === value); - } - - function checkInts(arrayish) { - if (!checkInt(arrayish.length)) { return false; } - - for (var i = 0; i < arrayish.length; i++) { - if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) { - return false; - } - } - - return true; - } - - function coerceArray(arg, copy) { - - // ArrayBuffer view - if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') { - - if (copy) { - if (arg.slice) { - arg = arg.slice(); - } else { - arg = Array.prototype.slice.call(arg); - } - } - - return arg; - } - - // It's an array; check it is a valid representation of a byte - if (Array.isArray(arg)) { - if (!checkInts(arg)) { - throw new Error('Array contains invalid value: ' + arg); - } - - return new Uint8Array(arg); - } - - // Something else, but behaves like an array (maybe a Buffer? Arguments?) - if (checkInt(arg.length) && checkInts(arg)) { - return new Uint8Array(arg); - } - - throw new Error('unsupported array-like object'); - } - - function createArray(length) { - return new Uint8Array(length); - } - - function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) { - if (sourceStart != null || sourceEnd != null) { - if (sourceArray.slice) { - sourceArray = sourceArray.slice(sourceStart, sourceEnd); - } else { - sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd); - } - } - targetArray.set(sourceArray, targetStart); - } - - - - var convertUtf8 = (function() { - function toBytes(text) { - var result = [], i = 0; - text = encodeURI(text); - while (i < text.length) { - var c = text.charCodeAt(i++); - - // if it is a % sign, encode the following 2 bytes as a hex value - if (c === 37) { - result.push(parseInt(text.substr(i, 2), 16)) - i += 2; - - // otherwise, just the actual byte - } else { - result.push(c) - } - } - - return coerceArray(result); - } - - function fromBytes(bytes) { - var result = [], i = 0; - - while (i < bytes.length) { - var c = bytes[i]; - - if (c < 128) { - result.push(String.fromCharCode(c)); - i++; - } else if (c > 191 && c < 224) { - result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f))); - i += 2; - } else { - result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f))); - i += 3; - } - } - - return result.join(''); - } - - return { - toBytes: toBytes, - fromBytes: fromBytes, - } - })(); - - var convertHex = (function() { - function toBytes(text) { - var result = []; - for (var i = 0; i < text.length; i += 2) { - result.push(parseInt(text.substr(i, 2), 16)); - } - - return result; - } - - // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html - var Hex = '0123456789abcdef'; - - function fromBytes(bytes) { - var result = []; - for (var i = 0; i < bytes.length; i++) { - var v = bytes[i]; - result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]); - } - return result.join(''); - } - - return { - toBytes: toBytes, - fromBytes: fromBytes, - } - })(); - - - // Number of rounds by keysize - var numberOfRounds = {16: 10, 24: 12, 32: 14} - - // Round constant words - var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91]; - - // S-box and Inverse S-box (S is for Substitution) - var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]; - var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]; - - // Transformations for encryption - var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a]; - var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616]; - var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16]; - var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c]; - - // Transformations for decryption - var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742]; - var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857]; - var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8]; - var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0]; - - // Transformations for decryption key expansion - var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]; - var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697]; - var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46]; - var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d]; - - function convertToInt32(bytes) { - var result = []; - for (var i = 0; i < bytes.length; i += 4) { - result.push( - (bytes[i ] << 24) | - (bytes[i + 1] << 16) | - (bytes[i + 2] << 8) | - bytes[i + 3] - ); - } - return result; - } - - var AES = function(key) { - if (!(this instanceof AES)) { - throw Error('AES must be instanitated with `new`'); - } - - Object.defineProperty(this, 'key', { - value: coerceArray(key, true) - }); - - this._prepare(); - } - - - AES.prototype._prepare = function() { - - var rounds = numberOfRounds[this.key.length]; - if (rounds == null) { - throw new Error('invalid key size (must be 16, 24 or 32 bytes)'); - } - - // encryption round keys - this._Ke = []; - - // decryption round keys - this._Kd = []; - - for (var i = 0; i <= rounds; i++) { - this._Ke.push([0, 0, 0, 0]); - this._Kd.push([0, 0, 0, 0]); - } - - var roundKeyCount = (rounds + 1) * 4; - var KC = this.key.length / 4; - - // convert the key into ints - var tk = convertToInt32(this.key); - - // copy values into round key arrays - var index; - for (var i = 0; i < KC; i++) { - index = i >> 2; - this._Ke[index][i % 4] = tk[i]; - this._Kd[rounds - index][i % 4] = tk[i]; - } - - // key expansion (fips-197 section 5.2) - var rconpointer = 0; - var t = KC, tt; - while (t < roundKeyCount) { - tt = tk[KC - 1]; - tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^ - (S[(tt >> 8) & 0xFF] << 16) ^ - (S[ tt & 0xFF] << 8) ^ - S[(tt >> 24) & 0xFF] ^ - (rcon[rconpointer] << 24)); - rconpointer += 1; - - // key expansion (for non-256 bit) - if (KC != 8) { - for (var i = 1; i < KC; i++) { - tk[i] ^= tk[i - 1]; - } - - // key expansion for 256-bit keys is "slightly different" (fips-197) - } else { - for (var i = 1; i < (KC / 2); i++) { - tk[i] ^= tk[i - 1]; - } - tt = tk[(KC / 2) - 1]; - - tk[KC / 2] ^= (S[ tt & 0xFF] ^ - (S[(tt >> 8) & 0xFF] << 8) ^ - (S[(tt >> 16) & 0xFF] << 16) ^ - (S[(tt >> 24) & 0xFF] << 24)); - - for (var i = (KC / 2) + 1; i < KC; i++) { - tk[i] ^= tk[i - 1]; - } - } - - // copy values into round key arrays - var i = 0, r, c; - while (i < KC && t < roundKeyCount) { - r = t >> 2; - c = t % 4; - this._Ke[r][c] = tk[i]; - this._Kd[rounds - r][c] = tk[i++]; - t++; - } - } - - // inverse-cipher-ify the decryption round key (fips-197 section 5.3) - for (var r = 1; r < rounds; r++) { - for (var c = 0; c < 4; c++) { - tt = this._Kd[r][c]; - this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^ - U2[(tt >> 16) & 0xFF] ^ - U3[(tt >> 8) & 0xFF] ^ - U4[ tt & 0xFF]); - } - } - } - - AES.prototype.encrypt = function(plaintext) { - if (plaintext.length != 16) { - throw new Error('invalid plaintext size (must be 16 bytes)'); - } - - var rounds = this._Ke.length - 1; - var a = [0, 0, 0, 0]; - - // convert plaintext to (ints ^ key) - var t = convertToInt32(plaintext); - for (var i = 0; i < 4; i++) { - t[i] ^= this._Ke[0][i]; - } - - // apply round transforms - for (var r = 1; r < rounds; r++) { - for (var i = 0; i < 4; i++) { - a[i] = (T1[(t[ i ] >> 24) & 0xff] ^ - T2[(t[(i + 1) % 4] >> 16) & 0xff] ^ - T3[(t[(i + 2) % 4] >> 8) & 0xff] ^ - T4[ t[(i + 3) % 4] & 0xff] ^ - this._Ke[r][i]); - } - t = a.slice(); - } - - // the last round is special - var result = createArray(16), tt; - for (var i = 0; i < 4; i++) { - tt = this._Ke[rounds][i]; - result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff; - result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff; - result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff; - result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff; - } - - return result; - } - - AES.prototype.decrypt = function(ciphertext) { - if (ciphertext.length != 16) { - throw new Error('invalid ciphertext size (must be 16 bytes)'); - } - - var rounds = this._Kd.length - 1; - var a = [0, 0, 0, 0]; - - // convert plaintext to (ints ^ key) - var t = convertToInt32(ciphertext); - for (var i = 0; i < 4; i++) { - t[i] ^= this._Kd[0][i]; - } - - // apply round transforms - for (var r = 1; r < rounds; r++) { - for (var i = 0; i < 4; i++) { - a[i] = (T5[(t[ i ] >> 24) & 0xff] ^ - T6[(t[(i + 3) % 4] >> 16) & 0xff] ^ - T7[(t[(i + 2) % 4] >> 8) & 0xff] ^ - T8[ t[(i + 1) % 4] & 0xff] ^ - this._Kd[r][i]); - } - t = a.slice(); - } - - // the last round is special - var result = createArray(16), tt; - for (var i = 0; i < 4; i++) { - tt = this._Kd[rounds][i]; - result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff; - result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff; - result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff; - result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff; - } - - return result; - } - - - /** - * Mode Of Operation - Electonic Codebook (ECB) - */ - var ModeOfOperationECB = function(key) { - if (!(this instanceof ModeOfOperationECB)) { - throw Error('AES must be instanitated with `new`'); - } - - this.description = "Electronic Code Block"; - this.name = "ecb"; - - this._aes = new AES(key); - } - - ModeOfOperationECB.prototype.encrypt = function(plaintext) { - plaintext = coerceArray(plaintext); - - if ((plaintext.length % 16) !== 0) { - throw new Error('invalid plaintext size (must be multiple of 16 bytes)'); - } - - var ciphertext = createArray(plaintext.length); - var block = createArray(16); - - for (var i = 0; i < plaintext.length; i += 16) { - copyArray(plaintext, block, 0, i, i + 16); - block = this._aes.encrypt(block); - copyArray(block, ciphertext, i); - } - - return ciphertext; - } - - ModeOfOperationECB.prototype.decrypt = function(ciphertext) { - ciphertext = coerceArray(ciphertext); - - if ((ciphertext.length % 16) !== 0) { - throw new Error('invalid ciphertext size (must be multiple of 16 bytes)'); - } - - var plaintext = createArray(ciphertext.length); - var block = createArray(16); - - for (var i = 0; i < ciphertext.length; i += 16) { - copyArray(ciphertext, block, 0, i, i + 16); - block = this._aes.decrypt(block); - copyArray(block, plaintext, i); - } - - return plaintext; - } - - - /** - * Mode Of Operation - Cipher Block Chaining (CBC) - */ - var ModeOfOperationCBC = function(key, iv) { - if (!(this instanceof ModeOfOperationCBC)) { - throw Error('AES must be instanitated with `new`'); - } - - this.description = "Cipher Block Chaining"; - this.name = "cbc"; - - if (!iv) { - iv = createArray(16); - - } else if (iv.length != 16) { - throw new Error('invalid initialation vector size (must be 16 bytes)'); - } - - this._lastCipherblock = coerceArray(iv, true); - - this._aes = new AES(key); - } - - ModeOfOperationCBC.prototype.encrypt = function(plaintext) { - plaintext = coerceArray(plaintext); - - if ((plaintext.length % 16) !== 0) { - throw new Error('invalid plaintext size (must be multiple of 16 bytes)'); - } - - var ciphertext = createArray(plaintext.length); - var block = createArray(16); - - for (var i = 0; i < plaintext.length; i += 16) { - copyArray(plaintext, block, 0, i, i + 16); - - for (var j = 0; j < 16; j++) { - block[j] ^= this._lastCipherblock[j]; - } - - this._lastCipherblock = this._aes.encrypt(block); - copyArray(this._lastCipherblock, ciphertext, i); - } - - return ciphertext; - } - - ModeOfOperationCBC.prototype.decrypt = function(ciphertext) { - ciphertext = coerceArray(ciphertext); - - if ((ciphertext.length % 16) !== 0) { - throw new Error('invalid ciphertext size (must be multiple of 16 bytes)'); - } - - var plaintext = createArray(ciphertext.length); - var block = createArray(16); - - for (var i = 0; i < ciphertext.length; i += 16) { - copyArray(ciphertext, block, 0, i, i + 16); - block = this._aes.decrypt(block); - - for (var j = 0; j < 16; j++) { - plaintext[i + j] = block[j] ^ this._lastCipherblock[j]; - } - - copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16); - } - - return plaintext; - } - - - /** - * Mode Of Operation - Cipher Feedback (CFB) - */ - var ModeOfOperationCFB = function(key, iv, segmentSize) { - if (!(this instanceof ModeOfOperationCFB)) { - throw Error('AES must be instanitated with `new`'); - } - - this.description = "Cipher Feedback"; - this.name = "cfb"; - - if (!iv) { - iv = createArray(16); - - } else if (iv.length != 16) { - throw new Error('invalid initialation vector size (must be 16 size)'); - } - - if (!segmentSize) { segmentSize = 1; } - - this.segmentSize = segmentSize; - - this._shiftRegister = coerceArray(iv, true); - - this._aes = new AES(key); - } - - ModeOfOperationCFB.prototype.encrypt = function(plaintext) { - if ((plaintext.length % this.segmentSize) != 0) { - throw new Error('invalid plaintext size (must be segmentSize bytes)'); - } - - var encrypted = coerceArray(plaintext, true); - - var xorSegment; - for (var i = 0; i < encrypted.length; i += this.segmentSize) { - xorSegment = this._aes.encrypt(this._shiftRegister); - for (var j = 0; j < this.segmentSize; j++) { - encrypted[i + j] ^= xorSegment[j]; - } - - // Shift the register - copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize); - copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize); - } - - return encrypted; - } - - ModeOfOperationCFB.prototype.decrypt = function(ciphertext) { - if ((ciphertext.length % this.segmentSize) != 0) { - throw new Error('invalid ciphertext size (must be segmentSize bytes)'); - } - - var plaintext = coerceArray(ciphertext, true); - - var xorSegment; - for (var i = 0; i < plaintext.length; i += this.segmentSize) { - xorSegment = this._aes.encrypt(this._shiftRegister); - - for (var j = 0; j < this.segmentSize; j++) { - plaintext[i + j] ^= xorSegment[j]; - } - - // Shift the register - copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize); - copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize); - } - - return plaintext; - } - - /** - * Mode Of Operation - Output Feedback (OFB) - */ - var ModeOfOperationOFB = function(key, iv) { - if (!(this instanceof ModeOfOperationOFB)) { - throw Error('AES must be instanitated with `new`'); - } - - this.description = "Output Feedback"; - this.name = "ofb"; - - if (!iv) { - iv = createArray(16); - - } else if (iv.length != 16) { - throw new Error('invalid initialation vector size (must be 16 bytes)'); - } - - this._lastPrecipher = coerceArray(iv, true); - this._lastPrecipherIndex = 16; - - this._aes = new AES(key); - } - - ModeOfOperationOFB.prototype.encrypt = function(plaintext) { - var encrypted = coerceArray(plaintext, true); - - for (var i = 0; i < encrypted.length; i++) { - if (this._lastPrecipherIndex === 16) { - this._lastPrecipher = this._aes.encrypt(this._lastPrecipher); - this._lastPrecipherIndex = 0; - } - encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++]; - } - - return encrypted; - } - - // Decryption is symetric - ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt; - - - /** - * Counter object for CTR common mode of operation - */ - var Counter = function(initialValue) { - if (!(this instanceof Counter)) { - throw Error('Counter must be instanitated with `new`'); - } - - // We allow 0, but anything false-ish uses the default 1 - if (initialValue !== 0 && !initialValue) { initialValue = 1; } - - if (typeof(initialValue) === 'number') { - this._counter = createArray(16); - this.setValue(initialValue); - - } else { - this.setBytes(initialValue); - } - } - - Counter.prototype.setValue = function(value) { - if (typeof(value) !== 'number' || parseInt(value) != value) { - throw new Error('invalid counter value (must be an integer)'); - } - - // We cannot safely handle numbers beyond the safe range for integers - if (value > Number.MAX_SAFE_INTEGER) { - throw new Error('integer value out of safe range'); - } - - for (var index = 15; index >= 0; --index) { - this._counter[index] = value % 256; - value = parseInt(value / 256); - } - } - - Counter.prototype.setBytes = function(bytes) { - bytes = coerceArray(bytes, true); - - if (bytes.length != 16) { - throw new Error('invalid counter bytes size (must be 16 bytes)'); - } - - this._counter = bytes; - }; - - Counter.prototype.increment = function() { - for (var i = 15; i >= 0; i--) { - if (this._counter[i] === 255) { - this._counter[i] = 0; - } else { - this._counter[i]++; - break; - } - } - } - - - /** - * Mode Of Operation - Counter (CTR) - */ - var ModeOfOperationCTR = function(key, counter) { - if (!(this instanceof ModeOfOperationCTR)) { - throw Error('AES must be instanitated with `new`'); - } - - this.description = "Counter"; - this.name = "ctr"; - - if (!(counter instanceof Counter)) { - counter = new Counter(counter) - } - - this._counter = counter; - - this._remainingCounter = null; - this._remainingCounterIndex = 16; - - this._aes = new AES(key); - } - - ModeOfOperationCTR.prototype.encrypt = function(plaintext) { - var encrypted = coerceArray(plaintext, true); - - for (var i = 0; i < encrypted.length; i++) { - if (this._remainingCounterIndex === 16) { - this._remainingCounter = this._aes.encrypt(this._counter._counter); - this._remainingCounterIndex = 0; - this._counter.increment(); - } - encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++]; - } - - return encrypted; - } - - // Decryption is symetric - ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt; - - - /////////////////////// - // Padding - - // See:https://tools.ietf.org/html/rfc2315 - function pkcs7pad(data) { - data = coerceArray(data, true); - var padder = 16 - (data.length % 16); - var result = createArray(data.length + padder); - copyArray(data, result); - for (var i = data.length; i < result.length; i++) { - result[i] = padder; - } - return result; - } - - function pkcs7strip(data) { - data = coerceArray(data, true); - if (data.length < 16) { throw new Error('PKCS#7 invalid length'); } - - var padder = data[data.length - 1]; - if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); } - - var length = data.length - padder; - for (var i = 0; i < padder; i++) { - if (data[length + i] !== padder) { - throw new Error('PKCS#7 invalid padding byte'); - } - } - - var result = createArray(length); - copyArray(data, result, 0, 0, length); - return result; - } - - /////////////////////// - // Exporting - - - // The block cipher - var aesjs = { - AES: AES, - Counter: Counter, - - ModeOfOperation: { - ecb: ModeOfOperationECB, - cbc: ModeOfOperationCBC, - cfb: ModeOfOperationCFB, - ofb: ModeOfOperationOFB, - ctr: ModeOfOperationCTR - }, - - utils: { - hex: convertHex, - utf8: convertUtf8 - }, - - padding: { - pkcs7: { - pad: pkcs7pad, - strip: pkcs7strip - } - }, - - _arrayTest: { - coerceArray: coerceArray, - createArray: createArray, - copyArray: copyArray, - } - }; - - - // node.js - if (typeof exports !== 'undefined') { - module.exports = aesjs - - // RequireJS/AMD - // http://www.requirejs.org/docs/api.html - // https://github.com/amdjs/amdjs-api/wiki/AMD - } else if (typeof(define) === 'function' && define.amd) { - define(aesjs); - - // Web Browsers - } else { - - // If there was an existing library at "aesjs" make sure it's still available - if (root.aesjs) { - aesjs._aesjs = root.aesjs; - } - - root.aesjs = aesjs; - } - - -})(this); diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/crypto-dh.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/crypto-dh.js deleted file mode 100644 index a2d2ecb..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/crypto-dh.js +++ /dev/null @@ -1,42 +0,0 @@ -var generatePrime = require('./lib/generatePrime') - -var DH = require('./lib/dh') -var Buffer = require('./lib/safe-buffer').Buffer - -function getDiffieHellman(mod) { - var prime = new Buffer(primes[mod].prime, 'hex') - var gen = new Buffer(primes[mod].gen, 'hex') - - return new DH(prime, gen) -} - -var ENCODINGS = { - 'binary': true, 'hex': true, 'base64': true -} - -function createDiffieHellman(prime, enc, generator, genc) { - if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) { - return createDiffieHellman(prime, 'binary', enc, generator) - } - - enc = enc || 'binary' - genc = genc || 'binary' - generator = generator || new Buffer([2]) - - if (!Buffer.isBuffer(generator)) { - generator = new Buffer(generator, genc) - } - - if (typeof prime === 'number') { - return new DH(generatePrime(prime, generator), generator, true) - } - - if (!Buffer.isBuffer(prime)) { - prime = new Buffer(prime, enc) - } - - return new DH(prime, generator, true) -} - -exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman -exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/base64-js.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/base64-js.js deleted file mode 100644 index 44c6766..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/base64-js.js +++ /dev/null @@ -1,151 +0,0 @@ -'use strict' - -exports.byteLength = byteLength -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray - -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i -} - -// Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications -revLookup['-'.charCodeAt(0)] = 62 -revLookup['_'.charCodeAt(0)] = 63 - -function getLens (b64) { - var len = b64.length - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('=') - if (validLen === -1) validLen = len - - var placeHoldersLen = validLen === len - ? 0 - : 4 - (validLen % 4) - - return [validLen, placeHoldersLen] -} - -// base64 is 4/3 + up to two characters of the original data -function byteLength (b64) { - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function toByteArray (b64) { - var tmp - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) - - var curByte = 0 - - // if there are placeholders, only get up to the last complete 4 chars - var len = placeHoldersLen > 0 - ? validLen - 4 - : validLen - - for (var i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)] - arr[curByte++] = (tmp >> 16) & 0xFF - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk( - uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) - )) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ) - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1] - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ) - } - - return parts.join('') -} diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/bn.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/bn.js deleted file mode 100644 index b590145..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/bn.js +++ /dev/null @@ -1,3427 +0,0 @@ -(function (module, exports) { - 'use strict'; - - // Utils - function assert (val, msg) { - if (!val) throw new Error(msg || 'Assertion failed'); - } - - // Could use `inherits` module, but don't want to move from single file - // architecture yet. - function inherits (ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - } - - // BN - - function BN (number, base, endian) { - if (BN.isBN(number)) { - return number; - } - - this.negative = 0; - this.words = null; - this.length = 0; - - // Reduction context - this.red = null; - - if (number !== null) { - if (base === 'le' || base === 'be') { - endian = base; - base = 10; - } - - this._init(number || 0, base || 10, endian || 'be'); - } - } - if (typeof module === 'object') { - module.exports = BN; - } else { - exports.BN = BN; - } - - BN.BN = BN; - BN.wordSize = 26; - - var Buffer; - try { - Buffer = require('buffer').Buffer; - } catch (e) { - } - - BN.isBN = function isBN (num) { - if (num instanceof BN) { - return true; - } - - return num !== null && typeof num === 'object' && - num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); - }; - - BN.max = function max (left, right) { - if (left.cmp(right) > 0) return left; - return right; - }; - - BN.min = function min (left, right) { - if (left.cmp(right) < 0) return left; - return right; - }; - - BN.prototype._init = function init (number, base, endian) { - if (typeof number === 'number') { - return this._initNumber(number, base, endian); - } - - if (typeof number === 'object') { - return this._initArray(number, base, endian); - } - - if (base === 'hex') { - base = 16; - } - assert(base === (base | 0) && base >= 2 && base <= 36); - - number = number.toString().replace(/\s+/g, ''); - var start = 0; - if (number[0] === '-') { - start++; - } - - if (base === 16) { - this._parseHex(number, start); - } else { - this._parseBase(number, base, start); - } - - if (number[0] === '-') { - this.negative = 1; - } - - this.strip(); - - if (endian !== 'le') return; - - this._initArray(this.toArray(), base, endian); - }; - - BN.prototype._initNumber = function _initNumber (number, base, endian) { - if (number < 0) { - this.negative = 1; - number = -number; - } - if (number < 0x4000000) { - this.words = [ number & 0x3ffffff ]; - this.length = 1; - } else if (number < 0x10000000000000) { - this.words = [ - number & 0x3ffffff, - (number / 0x4000000) & 0x3ffffff - ]; - this.length = 2; - } else { - assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) - this.words = [ - number & 0x3ffffff, - (number / 0x4000000) & 0x3ffffff, - 1 - ]; - this.length = 3; - } - - if (endian !== 'le') return; - - // Reverse the bytes - this._initArray(this.toArray(), base, endian); - }; - - BN.prototype._initArray = function _initArray (number, base, endian) { - // Perhaps a Uint8Array - assert(typeof number.length === 'number'); - if (number.length <= 0) { - this.words = [ 0 ]; - this.length = 1; - return this; - } - - this.length = Math.ceil(number.length / 3); - this.words = new Array(this.length); - for (var i = 0; i < this.length; i++) { - this.words[i] = 0; - } - - var j, w; - var off = 0; - if (endian === 'be') { - for (i = number.length - 1, j = 0; i >= 0; i -= 3) { - w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16); - this.words[j] |= (w << off) & 0x3ffffff; - this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; - off += 24; - if (off >= 26) { - off -= 26; - j++; - } - } - } else if (endian === 'le') { - for (i = 0, j = 0; i < number.length; i += 3) { - w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16); - this.words[j] |= (w << off) & 0x3ffffff; - this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; - off += 24; - if (off >= 26) { - off -= 26; - j++; - } - } - } - return this.strip(); - }; - - function parseHex (str, start, end) { - var r = 0; - var len = Math.min(str.length, end); - for (var i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - - r <<= 4; - - // 'a' - 'f' - if (c >= 49 && c <= 54) { - r |= c - 49 + 0xa; - - // 'A' - 'F' - } else if (c >= 17 && c <= 22) { - r |= c - 17 + 0xa; - - // '0' - '9' - } else { - r |= c & 0xf; - } - } - return r; - } - - BN.prototype._parseHex = function _parseHex (number, start) { - // Create possibly bigger array to ensure that it fits the number - this.length = Math.ceil((number.length - start) / 6); - this.words = new Array(this.length); - for (var i = 0; i < this.length; i++) { - this.words[i] = 0; - } - - var j, w; - // Scan 24-bit chunks and add them to the number - var off = 0; - for (i = number.length - 6, j = 0; i >= start; i -= 6) { - w = parseHex(number, i, i + 6); - this.words[j] |= (w << off) & 0x3ffffff; - // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb - this.words[j + 1] |= w >>> (26 - off) & 0x3fffff; - off += 24; - if (off >= 26) { - off -= 26; - j++; - } - } - if (i + 6 !== start) { - w = parseHex(number, start, i + 6); - this.words[j] |= (w << off) & 0x3ffffff; - this.words[j + 1] |= w >>> (26 - off) & 0x3fffff; - } - this.strip(); - }; - - function parseBase (str, start, end, mul) { - var r = 0; - var len = Math.min(str.length, end); - for (var i = start; i < len; i++) { - var c = str.charCodeAt(i) - 48; - - r *= mul; - - // 'a' - if (c >= 49) { - r += c - 49 + 0xa; - - // 'A' - } else if (c >= 17) { - r += c - 17 + 0xa; - - // '0' - '9' - } else { - r += c; - } - } - return r; - } - - BN.prototype._parseBase = function _parseBase (number, base, start) { - // Initialize as zero - this.words = [ 0 ]; - this.length = 1; - - // Find length of limb in base - for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { - limbLen++; - } - limbLen--; - limbPow = (limbPow / base) | 0; - - var total = number.length - start; - var mod = total % limbLen; - var end = Math.min(total, total - mod) + start; - - var word = 0; - for (var i = start; i < end; i += limbLen) { - word = parseBase(number, i, i + limbLen, base); - - this.imuln(limbPow); - if (this.words[0] + word < 0x4000000) { - this.words[0] += word; - } else { - this._iaddn(word); - } - } - - if (mod !== 0) { - var pow = 1; - word = parseBase(number, i, number.length, base); - - for (i = 0; i < mod; i++) { - pow *= base; - } - - this.imuln(pow); - if (this.words[0] + word < 0x4000000) { - this.words[0] += word; - } else { - this._iaddn(word); - } - } - }; - - BN.prototype.copy = function copy (dest) { - dest.words = new Array(this.length); - for (var i = 0; i < this.length; i++) { - dest.words[i] = this.words[i]; - } - dest.length = this.length; - dest.negative = this.negative; - dest.red = this.red; - }; - - BN.prototype.clone = function clone () { - var r = new BN(null); - this.copy(r); - return r; - }; - - BN.prototype._expand = function _expand (size) { - while (this.length < size) { - this.words[this.length++] = 0; - } - return this; - }; - - // Remove leading `0` from `this` - BN.prototype.strip = function strip () { - while (this.length > 1 && this.words[this.length - 1] === 0) { - this.length--; - } - return this._normSign(); - }; - - BN.prototype._normSign = function _normSign () { - // -0 = 0 - if (this.length === 1 && this.words[0] === 0) { - this.negative = 0; - } - return this; - }; - - BN.prototype.inspect = function inspect () { - return (this.red ? ''; - }; - - /* - - var zeros = []; - var groupSizes = []; - var groupBases = []; - - var s = ''; - var i = -1; - while (++i < BN.wordSize) { - zeros[i] = s; - s += '0'; - } - groupSizes[0] = 0; - groupSizes[1] = 0; - groupBases[0] = 0; - groupBases[1] = 0; - var base = 2 - 1; - while (++base < 36 + 1) { - var groupSize = 0; - var groupBase = 1; - while (groupBase < (1 << BN.wordSize) / base) { - groupBase *= base; - groupSize += 1; - } - groupSizes[base] = groupSize; - groupBases[base] = groupBase; - } - - */ - - var zeros = [ - '', - '0', - '00', - '000', - '0000', - '00000', - '000000', - '0000000', - '00000000', - '000000000', - '0000000000', - '00000000000', - '000000000000', - '0000000000000', - '00000000000000', - '000000000000000', - '0000000000000000', - '00000000000000000', - '000000000000000000', - '0000000000000000000', - '00000000000000000000', - '000000000000000000000', - '0000000000000000000000', - '00000000000000000000000', - '000000000000000000000000', - '0000000000000000000000000' - ]; - - var groupSizes = [ - 0, 0, - 25, 16, 12, 11, 10, 9, 8, - 8, 7, 7, 7, 7, 6, 6, - 6, 6, 6, 6, 6, 5, 5, - 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5 - ]; - - var groupBases = [ - 0, 0, - 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, - 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, - 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, - 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, - 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 - ]; - - BN.prototype.toString = function toString (base, padding) { - base = base || 10; - padding = padding | 0 || 1; - - var out; - if (base === 16 || base === 'hex') { - out = ''; - var off = 0; - var carry = 0; - for (var i = 0; i < this.length; i++) { - var w = this.words[i]; - var word = (((w << off) | carry) & 0xffffff).toString(16); - carry = (w >>> (24 - off)) & 0xffffff; - if (carry !== 0 || i !== this.length - 1) { - out = zeros[6 - word.length] + word + out; - } else { - out = word + out; - } - off += 2; - if (off >= 26) { - off -= 26; - i--; - } - } - if (carry !== 0) { - out = carry.toString(16) + out; - } - while (out.length % padding !== 0) { - out = '0' + out; - } - if (this.negative !== 0) { - out = '-' + out; - } - return out; - } - - if (base === (base | 0) && base >= 2 && base <= 36) { - // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); - var groupSize = groupSizes[base]; - // var groupBase = Math.pow(base, groupSize); - var groupBase = groupBases[base]; - out = ''; - var c = this.clone(); - c.negative = 0; - while (!c.isZero()) { - var r = c.modn(groupBase).toString(base); - c = c.idivn(groupBase); - - if (!c.isZero()) { - out = zeros[groupSize - r.length] + r + out; - } else { - out = r + out; - } - } - if (this.isZero()) { - out = '0' + out; - } - while (out.length % padding !== 0) { - out = '0' + out; - } - if (this.negative !== 0) { - out = '-' + out; - } - return out; - } - - assert(false, 'Base should be between 2 and 36'); - }; - - BN.prototype.toNumber = function toNumber () { - var ret = this.words[0]; - if (this.length === 2) { - ret += this.words[1] * 0x4000000; - } else if (this.length === 3 && this.words[2] === 0x01) { - // NOTE: at this stage it is known that the top bit is set - ret += 0x10000000000000 + (this.words[1] * 0x4000000); - } else if (this.length > 2) { - assert(false, 'Number can only safely store up to 53 bits'); - } - return (this.negative !== 0) ? -ret : ret; - }; - - BN.prototype.toJSON = function toJSON () { - return this.toString(16); - }; - - BN.prototype.toBuffer = function toBuffer (endian, length) { - assert(typeof Buffer !== 'undefined'); - return this.toArrayLike(Buffer, endian, length); - }; - - BN.prototype.toArray = function toArray (endian, length) { - return this.toArrayLike(Array, endian, length); - }; - - BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) { - var byteLength = this.byteLength(); - var reqLength = length || Math.max(1, byteLength); - assert(byteLength <= reqLength, 'byte array longer than desired length'); - assert(reqLength > 0, 'Requested array length <= 0'); - - this.strip(); - var littleEndian = endian === 'le'; - var res = new ArrayType(reqLength); - - var b, i; - var q = this.clone(); - if (!littleEndian) { - // Assume big-endian - for (i = 0; i < reqLength - byteLength; i++) { - res[i] = 0; - } - - for (i = 0; !q.isZero(); i++) { - b = q.andln(0xff); - q.iushrn(8); - - res[reqLength - i - 1] = b; - } - } else { - for (i = 0; !q.isZero(); i++) { - b = q.andln(0xff); - q.iushrn(8); - - res[i] = b; - } - - for (; i < reqLength; i++) { - res[i] = 0; - } - } - - return res; - }; - - if (Math.clz32) { - BN.prototype._countBits = function _countBits (w) { - return 32 - Math.clz32(w); - }; - } else { - BN.prototype._countBits = function _countBits (w) { - var t = w; - var r = 0; - if (t >= 0x1000) { - r += 13; - t >>>= 13; - } - if (t >= 0x40) { - r += 7; - t >>>= 7; - } - if (t >= 0x8) { - r += 4; - t >>>= 4; - } - if (t >= 0x02) { - r += 2; - t >>>= 2; - } - return r + t; - }; - } - - BN.prototype._zeroBits = function _zeroBits (w) { - // Short-cut - if (w === 0) return 26; - - var t = w; - var r = 0; - if ((t & 0x1fff) === 0) { - r += 13; - t >>>= 13; - } - if ((t & 0x7f) === 0) { - r += 7; - t >>>= 7; - } - if ((t & 0xf) === 0) { - r += 4; - t >>>= 4; - } - if ((t & 0x3) === 0) { - r += 2; - t >>>= 2; - } - if ((t & 0x1) === 0) { - r++; - } - return r; - }; - - // Return number of used bits in a BN - BN.prototype.bitLength = function bitLength () { - var w = this.words[this.length - 1]; - var hi = this._countBits(w); - return (this.length - 1) * 26 + hi; - }; - - function toBitArray (num) { - var w = new Array(num.bitLength()); - - for (var bit = 0; bit < w.length; bit++) { - var off = (bit / 26) | 0; - var wbit = bit % 26; - - w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; - } - - return w; - } - - // Number of trailing zero bits - BN.prototype.zeroBits = function zeroBits () { - if (this.isZero()) return 0; - - var r = 0; - for (var i = 0; i < this.length; i++) { - var b = this._zeroBits(this.words[i]); - r += b; - if (b !== 26) break; - } - return r; - }; - - BN.prototype.byteLength = function byteLength () { - return Math.ceil(this.bitLength() / 8); - }; - - BN.prototype.toTwos = function toTwos (width) { - if (this.negative !== 0) { - return this.abs().inotn(width).iaddn(1); - } - return this.clone(); - }; - - BN.prototype.fromTwos = function fromTwos (width) { - if (this.testn(width - 1)) { - return this.notn(width).iaddn(1).ineg(); - } - return this.clone(); - }; - - BN.prototype.isNeg = function isNeg () { - return this.negative !== 0; - }; - - // Return negative clone of `this` - BN.prototype.neg = function neg () { - return this.clone().ineg(); - }; - - BN.prototype.ineg = function ineg () { - if (!this.isZero()) { - this.negative ^= 1; - } - - return this; - }; - - // Or `num` with `this` in-place - BN.prototype.iuor = function iuor (num) { - while (this.length < num.length) { - this.words[this.length++] = 0; - } - - for (var i = 0; i < num.length; i++) { - this.words[i] = this.words[i] | num.words[i]; - } - - return this.strip(); - }; - - BN.prototype.ior = function ior (num) { - assert((this.negative | num.negative) === 0); - return this.iuor(num); - }; - - // Or `num` with `this` - BN.prototype.or = function or (num) { - if (this.length > num.length) return this.clone().ior(num); - return num.clone().ior(this); - }; - - BN.prototype.uor = function uor (num) { - if (this.length > num.length) return this.clone().iuor(num); - return num.clone().iuor(this); - }; - - // And `num` with `this` in-place - BN.prototype.iuand = function iuand (num) { - // b = min-length(num, this) - var b; - if (this.length > num.length) { - b = num; - } else { - b = this; - } - - for (var i = 0; i < b.length; i++) { - this.words[i] = this.words[i] & num.words[i]; - } - - this.length = b.length; - - return this.strip(); - }; - - BN.prototype.iand = function iand (num) { - assert((this.negative | num.negative) === 0); - return this.iuand(num); - }; - - // And `num` with `this` - BN.prototype.and = function and (num) { - if (this.length > num.length) return this.clone().iand(num); - return num.clone().iand(this); - }; - - BN.prototype.uand = function uand (num) { - if (this.length > num.length) return this.clone().iuand(num); - return num.clone().iuand(this); - }; - - // Xor `num` with `this` in-place - BN.prototype.iuxor = function iuxor (num) { - // a.length > b.length - var a; - var b; - if (this.length > num.length) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - for (var i = 0; i < b.length; i++) { - this.words[i] = a.words[i] ^ b.words[i]; - } - - if (this !== a) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - this.length = a.length; - - return this.strip(); - }; - - BN.prototype.ixor = function ixor (num) { - assert((this.negative | num.negative) === 0); - return this.iuxor(num); - }; - - // Xor `num` with `this` - BN.prototype.xor = function xor (num) { - if (this.length > num.length) return this.clone().ixor(num); - return num.clone().ixor(this); - }; - - BN.prototype.uxor = function uxor (num) { - if (this.length > num.length) return this.clone().iuxor(num); - return num.clone().iuxor(this); - }; - - // Not ``this`` with ``width`` bitwidth - BN.prototype.inotn = function inotn (width) { - assert(typeof width === 'number' && width >= 0); - - var bytesNeeded = Math.ceil(width / 26) | 0; - var bitsLeft = width % 26; - - // Extend the buffer with leading zeroes - this._expand(bytesNeeded); - - if (bitsLeft > 0) { - bytesNeeded--; - } - - // Handle complete words - for (var i = 0; i < bytesNeeded; i++) { - this.words[i] = ~this.words[i] & 0x3ffffff; - } - - // Handle the residue - if (bitsLeft > 0) { - this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft)); - } - - // And remove leading zeroes - return this.strip(); - }; - - BN.prototype.notn = function notn (width) { - return this.clone().inotn(width); - }; - - // Set `bit` of `this` - BN.prototype.setn = function setn (bit, val) { - assert(typeof bit === 'number' && bit >= 0); - - var off = (bit / 26) | 0; - var wbit = bit % 26; - - this._expand(off + 1); - - if (val) { - this.words[off] = this.words[off] | (1 << wbit); - } else { - this.words[off] = this.words[off] & ~(1 << wbit); - } - - return this.strip(); - }; - - // Add `num` to `this` in-place - BN.prototype.iadd = function iadd (num) { - var r; - - // negative + positive - if (this.negative !== 0 && num.negative === 0) { - this.negative = 0; - r = this.isub(num); - this.negative ^= 1; - return this._normSign(); - - // positive + negative - } else if (this.negative === 0 && num.negative !== 0) { - num.negative = 0; - r = this.isub(num); - num.negative = 1; - return r._normSign(); - } - - // a.length > b.length - var a, b; - if (this.length > num.length) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - var carry = 0; - for (var i = 0; i < b.length; i++) { - r = (a.words[i] | 0) + (b.words[i] | 0) + carry; - this.words[i] = r & 0x3ffffff; - carry = r >>> 26; - } - for (; carry !== 0 && i < a.length; i++) { - r = (a.words[i] | 0) + carry; - this.words[i] = r & 0x3ffffff; - carry = r >>> 26; - } - - this.length = a.length; - if (carry !== 0) { - this.words[this.length] = carry; - this.length++; - // Copy the rest of the words - } else if (a !== this) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - return this; - }; - - // Add `num` to `this` - BN.prototype.add = function add (num) { - var res; - if (num.negative !== 0 && this.negative === 0) { - num.negative = 0; - res = this.sub(num); - num.negative ^= 1; - return res; - } else if (num.negative === 0 && this.negative !== 0) { - this.negative = 0; - res = num.sub(this); - this.negative = 1; - return res; - } - - if (this.length > num.length) return this.clone().iadd(num); - - return num.clone().iadd(this); - }; - - // Subtract `num` from `this` in-place - BN.prototype.isub = function isub (num) { - // this - (-num) = this + num - if (num.negative !== 0) { - num.negative = 0; - var r = this.iadd(num); - num.negative = 1; - return r._normSign(); - - // -this - num = -(this + num) - } else if (this.negative !== 0) { - this.negative = 0; - this.iadd(num); - this.negative = 1; - return this._normSign(); - } - - // At this point both numbers are positive - var cmp = this.cmp(num); - - // Optimization - zeroify - if (cmp === 0) { - this.negative = 0; - this.length = 1; - this.words[0] = 0; - return this; - } - - // a > b - var a, b; - if (cmp > 0) { - a = this; - b = num; - } else { - a = num; - b = this; - } - - var carry = 0; - for (var i = 0; i < b.length; i++) { - r = (a.words[i] | 0) - (b.words[i] | 0) + carry; - carry = r >> 26; - this.words[i] = r & 0x3ffffff; - } - for (; carry !== 0 && i < a.length; i++) { - r = (a.words[i] | 0) + carry; - carry = r >> 26; - this.words[i] = r & 0x3ffffff; - } - - // Copy rest of the words - if (carry === 0 && i < a.length && a !== this) { - for (; i < a.length; i++) { - this.words[i] = a.words[i]; - } - } - - this.length = Math.max(this.length, i); - - if (a !== this) { - this.negative = 1; - } - - return this.strip(); - }; - - // Subtract `num` from `this` - BN.prototype.sub = function sub (num) { - return this.clone().isub(num); - }; - - function smallMulTo (self, num, out) { - out.negative = num.negative ^ self.negative; - var len = (self.length + num.length) | 0; - out.length = len; - len = (len - 1) | 0; - - // Peel one iteration (compiler can't do it, because of code complexity) - var a = self.words[0] | 0; - var b = num.words[0] | 0; - var r = a * b; - - var lo = r & 0x3ffffff; - var carry = (r / 0x4000000) | 0; - out.words[0] = lo; - - for (var k = 1; k < len; k++) { - // Sum all words with the same `i + j = k` and accumulate `ncarry`, - // note that ncarry could be >= 0x3ffffff - var ncarry = carry >>> 26; - var rword = carry & 0x3ffffff; - var maxJ = Math.min(k, num.length - 1); - for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { - var i = (k - j) | 0; - a = self.words[i] | 0; - b = num.words[j] | 0; - r = a * b + rword; - ncarry += (r / 0x4000000) | 0; - rword = r & 0x3ffffff; - } - out.words[k] = rword | 0; - carry = ncarry | 0; - } - if (carry !== 0) { - out.words[k] = carry | 0; - } else { - out.length--; - } - - return out.strip(); - } - - // TODO(indutny): it may be reasonable to omit it for users who don't need - // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit - // multiplication (like elliptic secp256k1). - var comb10MulTo = function comb10MulTo (self, num, out) { - var a = self.words; - var b = num.words; - var o = out.words; - var c = 0; - var lo; - var mid; - var hi; - var a0 = a[0] | 0; - var al0 = a0 & 0x1fff; - var ah0 = a0 >>> 13; - var a1 = a[1] | 0; - var al1 = a1 & 0x1fff; - var ah1 = a1 >>> 13; - var a2 = a[2] | 0; - var al2 = a2 & 0x1fff; - var ah2 = a2 >>> 13; - var a3 = a[3] | 0; - var al3 = a3 & 0x1fff; - var ah3 = a3 >>> 13; - var a4 = a[4] | 0; - var al4 = a4 & 0x1fff; - var ah4 = a4 >>> 13; - var a5 = a[5] | 0; - var al5 = a5 & 0x1fff; - var ah5 = a5 >>> 13; - var a6 = a[6] | 0; - var al6 = a6 & 0x1fff; - var ah6 = a6 >>> 13; - var a7 = a[7] | 0; - var al7 = a7 & 0x1fff; - var ah7 = a7 >>> 13; - var a8 = a[8] | 0; - var al8 = a8 & 0x1fff; - var ah8 = a8 >>> 13; - var a9 = a[9] | 0; - var al9 = a9 & 0x1fff; - var ah9 = a9 >>> 13; - var b0 = b[0] | 0; - var bl0 = b0 & 0x1fff; - var bh0 = b0 >>> 13; - var b1 = b[1] | 0; - var bl1 = b1 & 0x1fff; - var bh1 = b1 >>> 13; - var b2 = b[2] | 0; - var bl2 = b2 & 0x1fff; - var bh2 = b2 >>> 13; - var b3 = b[3] | 0; - var bl3 = b3 & 0x1fff; - var bh3 = b3 >>> 13; - var b4 = b[4] | 0; - var bl4 = b4 & 0x1fff; - var bh4 = b4 >>> 13; - var b5 = b[5] | 0; - var bl5 = b5 & 0x1fff; - var bh5 = b5 >>> 13; - var b6 = b[6] | 0; - var bl6 = b6 & 0x1fff; - var bh6 = b6 >>> 13; - var b7 = b[7] | 0; - var bl7 = b7 & 0x1fff; - var bh7 = b7 >>> 13; - var b8 = b[8] | 0; - var bl8 = b8 & 0x1fff; - var bh8 = b8 >>> 13; - var b9 = b[9] | 0; - var bl9 = b9 & 0x1fff; - var bh9 = b9 >>> 13; - - out.negative = self.negative ^ num.negative; - out.length = 19; - /* k = 0 */ - lo = Math.imul(al0, bl0); - mid = Math.imul(al0, bh0); - mid = (mid + Math.imul(ah0, bl0)) | 0; - hi = Math.imul(ah0, bh0); - var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0; - w0 &= 0x3ffffff; - /* k = 1 */ - lo = Math.imul(al1, bl0); - mid = Math.imul(al1, bh0); - mid = (mid + Math.imul(ah1, bl0)) | 0; - hi = Math.imul(ah1, bh0); - lo = (lo + Math.imul(al0, bl1)) | 0; - mid = (mid + Math.imul(al0, bh1)) | 0; - mid = (mid + Math.imul(ah0, bl1)) | 0; - hi = (hi + Math.imul(ah0, bh1)) | 0; - var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0; - w1 &= 0x3ffffff; - /* k = 2 */ - lo = Math.imul(al2, bl0); - mid = Math.imul(al2, bh0); - mid = (mid + Math.imul(ah2, bl0)) | 0; - hi = Math.imul(ah2, bh0); - lo = (lo + Math.imul(al1, bl1)) | 0; - mid = (mid + Math.imul(al1, bh1)) | 0; - mid = (mid + Math.imul(ah1, bl1)) | 0; - hi = (hi + Math.imul(ah1, bh1)) | 0; - lo = (lo + Math.imul(al0, bl2)) | 0; - mid = (mid + Math.imul(al0, bh2)) | 0; - mid = (mid + Math.imul(ah0, bl2)) | 0; - hi = (hi + Math.imul(ah0, bh2)) | 0; - var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0; - w2 &= 0x3ffffff; - /* k = 3 */ - lo = Math.imul(al3, bl0); - mid = Math.imul(al3, bh0); - mid = (mid + Math.imul(ah3, bl0)) | 0; - hi = Math.imul(ah3, bh0); - lo = (lo + Math.imul(al2, bl1)) | 0; - mid = (mid + Math.imul(al2, bh1)) | 0; - mid = (mid + Math.imul(ah2, bl1)) | 0; - hi = (hi + Math.imul(ah2, bh1)) | 0; - lo = (lo + Math.imul(al1, bl2)) | 0; - mid = (mid + Math.imul(al1, bh2)) | 0; - mid = (mid + Math.imul(ah1, bl2)) | 0; - hi = (hi + Math.imul(ah1, bh2)) | 0; - lo = (lo + Math.imul(al0, bl3)) | 0; - mid = (mid + Math.imul(al0, bh3)) | 0; - mid = (mid + Math.imul(ah0, bl3)) | 0; - hi = (hi + Math.imul(ah0, bh3)) | 0; - var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0; - w3 &= 0x3ffffff; - /* k = 4 */ - lo = Math.imul(al4, bl0); - mid = Math.imul(al4, bh0); - mid = (mid + Math.imul(ah4, bl0)) | 0; - hi = Math.imul(ah4, bh0); - lo = (lo + Math.imul(al3, bl1)) | 0; - mid = (mid + Math.imul(al3, bh1)) | 0; - mid = (mid + Math.imul(ah3, bl1)) | 0; - hi = (hi + Math.imul(ah3, bh1)) | 0; - lo = (lo + Math.imul(al2, bl2)) | 0; - mid = (mid + Math.imul(al2, bh2)) | 0; - mid = (mid + Math.imul(ah2, bl2)) | 0; - hi = (hi + Math.imul(ah2, bh2)) | 0; - lo = (lo + Math.imul(al1, bl3)) | 0; - mid = (mid + Math.imul(al1, bh3)) | 0; - mid = (mid + Math.imul(ah1, bl3)) | 0; - hi = (hi + Math.imul(ah1, bh3)) | 0; - lo = (lo + Math.imul(al0, bl4)) | 0; - mid = (mid + Math.imul(al0, bh4)) | 0; - mid = (mid + Math.imul(ah0, bl4)) | 0; - hi = (hi + Math.imul(ah0, bh4)) | 0; - var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0; - w4 &= 0x3ffffff; - /* k = 5 */ - lo = Math.imul(al5, bl0); - mid = Math.imul(al5, bh0); - mid = (mid + Math.imul(ah5, bl0)) | 0; - hi = Math.imul(ah5, bh0); - lo = (lo + Math.imul(al4, bl1)) | 0; - mid = (mid + Math.imul(al4, bh1)) | 0; - mid = (mid + Math.imul(ah4, bl1)) | 0; - hi = (hi + Math.imul(ah4, bh1)) | 0; - lo = (lo + Math.imul(al3, bl2)) | 0; - mid = (mid + Math.imul(al3, bh2)) | 0; - mid = (mid + Math.imul(ah3, bl2)) | 0; - hi = (hi + Math.imul(ah3, bh2)) | 0; - lo = (lo + Math.imul(al2, bl3)) | 0; - mid = (mid + Math.imul(al2, bh3)) | 0; - mid = (mid + Math.imul(ah2, bl3)) | 0; - hi = (hi + Math.imul(ah2, bh3)) | 0; - lo = (lo + Math.imul(al1, bl4)) | 0; - mid = (mid + Math.imul(al1, bh4)) | 0; - mid = (mid + Math.imul(ah1, bl4)) | 0; - hi = (hi + Math.imul(ah1, bh4)) | 0; - lo = (lo + Math.imul(al0, bl5)) | 0; - mid = (mid + Math.imul(al0, bh5)) | 0; - mid = (mid + Math.imul(ah0, bl5)) | 0; - hi = (hi + Math.imul(ah0, bh5)) | 0; - var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0; - w5 &= 0x3ffffff; - /* k = 6 */ - lo = Math.imul(al6, bl0); - mid = Math.imul(al6, bh0); - mid = (mid + Math.imul(ah6, bl0)) | 0; - hi = Math.imul(ah6, bh0); - lo = (lo + Math.imul(al5, bl1)) | 0; - mid = (mid + Math.imul(al5, bh1)) | 0; - mid = (mid + Math.imul(ah5, bl1)) | 0; - hi = (hi + Math.imul(ah5, bh1)) | 0; - lo = (lo + Math.imul(al4, bl2)) | 0; - mid = (mid + Math.imul(al4, bh2)) | 0; - mid = (mid + Math.imul(ah4, bl2)) | 0; - hi = (hi + Math.imul(ah4, bh2)) | 0; - lo = (lo + Math.imul(al3, bl3)) | 0; - mid = (mid + Math.imul(al3, bh3)) | 0; - mid = (mid + Math.imul(ah3, bl3)) | 0; - hi = (hi + Math.imul(ah3, bh3)) | 0; - lo = (lo + Math.imul(al2, bl4)) | 0; - mid = (mid + Math.imul(al2, bh4)) | 0; - mid = (mid + Math.imul(ah2, bl4)) | 0; - hi = (hi + Math.imul(ah2, bh4)) | 0; - lo = (lo + Math.imul(al1, bl5)) | 0; - mid = (mid + Math.imul(al1, bh5)) | 0; - mid = (mid + Math.imul(ah1, bl5)) | 0; - hi = (hi + Math.imul(ah1, bh5)) | 0; - lo = (lo + Math.imul(al0, bl6)) | 0; - mid = (mid + Math.imul(al0, bh6)) | 0; - mid = (mid + Math.imul(ah0, bl6)) | 0; - hi = (hi + Math.imul(ah0, bh6)) | 0; - var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0; - w6 &= 0x3ffffff; - /* k = 7 */ - lo = Math.imul(al7, bl0); - mid = Math.imul(al7, bh0); - mid = (mid + Math.imul(ah7, bl0)) | 0; - hi = Math.imul(ah7, bh0); - lo = (lo + Math.imul(al6, bl1)) | 0; - mid = (mid + Math.imul(al6, bh1)) | 0; - mid = (mid + Math.imul(ah6, bl1)) | 0; - hi = (hi + Math.imul(ah6, bh1)) | 0; - lo = (lo + Math.imul(al5, bl2)) | 0; - mid = (mid + Math.imul(al5, bh2)) | 0; - mid = (mid + Math.imul(ah5, bl2)) | 0; - hi = (hi + Math.imul(ah5, bh2)) | 0; - lo = (lo + Math.imul(al4, bl3)) | 0; - mid = (mid + Math.imul(al4, bh3)) | 0; - mid = (mid + Math.imul(ah4, bl3)) | 0; - hi = (hi + Math.imul(ah4, bh3)) | 0; - lo = (lo + Math.imul(al3, bl4)) | 0; - mid = (mid + Math.imul(al3, bh4)) | 0; - mid = (mid + Math.imul(ah3, bl4)) | 0; - hi = (hi + Math.imul(ah3, bh4)) | 0; - lo = (lo + Math.imul(al2, bl5)) | 0; - mid = (mid + Math.imul(al2, bh5)) | 0; - mid = (mid + Math.imul(ah2, bl5)) | 0; - hi = (hi + Math.imul(ah2, bh5)) | 0; - lo = (lo + Math.imul(al1, bl6)) | 0; - mid = (mid + Math.imul(al1, bh6)) | 0; - mid = (mid + Math.imul(ah1, bl6)) | 0; - hi = (hi + Math.imul(ah1, bh6)) | 0; - lo = (lo + Math.imul(al0, bl7)) | 0; - mid = (mid + Math.imul(al0, bh7)) | 0; - mid = (mid + Math.imul(ah0, bl7)) | 0; - hi = (hi + Math.imul(ah0, bh7)) | 0; - var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0; - w7 &= 0x3ffffff; - /* k = 8 */ - lo = Math.imul(al8, bl0); - mid = Math.imul(al8, bh0); - mid = (mid + Math.imul(ah8, bl0)) | 0; - hi = Math.imul(ah8, bh0); - lo = (lo + Math.imul(al7, bl1)) | 0; - mid = (mid + Math.imul(al7, bh1)) | 0; - mid = (mid + Math.imul(ah7, bl1)) | 0; - hi = (hi + Math.imul(ah7, bh1)) | 0; - lo = (lo + Math.imul(al6, bl2)) | 0; - mid = (mid + Math.imul(al6, bh2)) | 0; - mid = (mid + Math.imul(ah6, bl2)) | 0; - hi = (hi + Math.imul(ah6, bh2)) | 0; - lo = (lo + Math.imul(al5, bl3)) | 0; - mid = (mid + Math.imul(al5, bh3)) | 0; - mid = (mid + Math.imul(ah5, bl3)) | 0; - hi = (hi + Math.imul(ah5, bh3)) | 0; - lo = (lo + Math.imul(al4, bl4)) | 0; - mid = (mid + Math.imul(al4, bh4)) | 0; - mid = (mid + Math.imul(ah4, bl4)) | 0; - hi = (hi + Math.imul(ah4, bh4)) | 0; - lo = (lo + Math.imul(al3, bl5)) | 0; - mid = (mid + Math.imul(al3, bh5)) | 0; - mid = (mid + Math.imul(ah3, bl5)) | 0; - hi = (hi + Math.imul(ah3, bh5)) | 0; - lo = (lo + Math.imul(al2, bl6)) | 0; - mid = (mid + Math.imul(al2, bh6)) | 0; - mid = (mid + Math.imul(ah2, bl6)) | 0; - hi = (hi + Math.imul(ah2, bh6)) | 0; - lo = (lo + Math.imul(al1, bl7)) | 0; - mid = (mid + Math.imul(al1, bh7)) | 0; - mid = (mid + Math.imul(ah1, bl7)) | 0; - hi = (hi + Math.imul(ah1, bh7)) | 0; - lo = (lo + Math.imul(al0, bl8)) | 0; - mid = (mid + Math.imul(al0, bh8)) | 0; - mid = (mid + Math.imul(ah0, bl8)) | 0; - hi = (hi + Math.imul(ah0, bh8)) | 0; - var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0; - w8 &= 0x3ffffff; - /* k = 9 */ - lo = Math.imul(al9, bl0); - mid = Math.imul(al9, bh0); - mid = (mid + Math.imul(ah9, bl0)) | 0; - hi = Math.imul(ah9, bh0); - lo = (lo + Math.imul(al8, bl1)) | 0; - mid = (mid + Math.imul(al8, bh1)) | 0; - mid = (mid + Math.imul(ah8, bl1)) | 0; - hi = (hi + Math.imul(ah8, bh1)) | 0; - lo = (lo + Math.imul(al7, bl2)) | 0; - mid = (mid + Math.imul(al7, bh2)) | 0; - mid = (mid + Math.imul(ah7, bl2)) | 0; - hi = (hi + Math.imul(ah7, bh2)) | 0; - lo = (lo + Math.imul(al6, bl3)) | 0; - mid = (mid + Math.imul(al6, bh3)) | 0; - mid = (mid + Math.imul(ah6, bl3)) | 0; - hi = (hi + Math.imul(ah6, bh3)) | 0; - lo = (lo + Math.imul(al5, bl4)) | 0; - mid = (mid + Math.imul(al5, bh4)) | 0; - mid = (mid + Math.imul(ah5, bl4)) | 0; - hi = (hi + Math.imul(ah5, bh4)) | 0; - lo = (lo + Math.imul(al4, bl5)) | 0; - mid = (mid + Math.imul(al4, bh5)) | 0; - mid = (mid + Math.imul(ah4, bl5)) | 0; - hi = (hi + Math.imul(ah4, bh5)) | 0; - lo = (lo + Math.imul(al3, bl6)) | 0; - mid = (mid + Math.imul(al3, bh6)) | 0; - mid = (mid + Math.imul(ah3, bl6)) | 0; - hi = (hi + Math.imul(ah3, bh6)) | 0; - lo = (lo + Math.imul(al2, bl7)) | 0; - mid = (mid + Math.imul(al2, bh7)) | 0; - mid = (mid + Math.imul(ah2, bl7)) | 0; - hi = (hi + Math.imul(ah2, bh7)) | 0; - lo = (lo + Math.imul(al1, bl8)) | 0; - mid = (mid + Math.imul(al1, bh8)) | 0; - mid = (mid + Math.imul(ah1, bl8)) | 0; - hi = (hi + Math.imul(ah1, bh8)) | 0; - lo = (lo + Math.imul(al0, bl9)) | 0; - mid = (mid + Math.imul(al0, bh9)) | 0; - mid = (mid + Math.imul(ah0, bl9)) | 0; - hi = (hi + Math.imul(ah0, bh9)) | 0; - var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0; - w9 &= 0x3ffffff; - /* k = 10 */ - lo = Math.imul(al9, bl1); - mid = Math.imul(al9, bh1); - mid = (mid + Math.imul(ah9, bl1)) | 0; - hi = Math.imul(ah9, bh1); - lo = (lo + Math.imul(al8, bl2)) | 0; - mid = (mid + Math.imul(al8, bh2)) | 0; - mid = (mid + Math.imul(ah8, bl2)) | 0; - hi = (hi + Math.imul(ah8, bh2)) | 0; - lo = (lo + Math.imul(al7, bl3)) | 0; - mid = (mid + Math.imul(al7, bh3)) | 0; - mid = (mid + Math.imul(ah7, bl3)) | 0; - hi = (hi + Math.imul(ah7, bh3)) | 0; - lo = (lo + Math.imul(al6, bl4)) | 0; - mid = (mid + Math.imul(al6, bh4)) | 0; - mid = (mid + Math.imul(ah6, bl4)) | 0; - hi = (hi + Math.imul(ah6, bh4)) | 0; - lo = (lo + Math.imul(al5, bl5)) | 0; - mid = (mid + Math.imul(al5, bh5)) | 0; - mid = (mid + Math.imul(ah5, bl5)) | 0; - hi = (hi + Math.imul(ah5, bh5)) | 0; - lo = (lo + Math.imul(al4, bl6)) | 0; - mid = (mid + Math.imul(al4, bh6)) | 0; - mid = (mid + Math.imul(ah4, bl6)) | 0; - hi = (hi + Math.imul(ah4, bh6)) | 0; - lo = (lo + Math.imul(al3, bl7)) | 0; - mid = (mid + Math.imul(al3, bh7)) | 0; - mid = (mid + Math.imul(ah3, bl7)) | 0; - hi = (hi + Math.imul(ah3, bh7)) | 0; - lo = (lo + Math.imul(al2, bl8)) | 0; - mid = (mid + Math.imul(al2, bh8)) | 0; - mid = (mid + Math.imul(ah2, bl8)) | 0; - hi = (hi + Math.imul(ah2, bh8)) | 0; - lo = (lo + Math.imul(al1, bl9)) | 0; - mid = (mid + Math.imul(al1, bh9)) | 0; - mid = (mid + Math.imul(ah1, bl9)) | 0; - hi = (hi + Math.imul(ah1, bh9)) | 0; - var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0; - w10 &= 0x3ffffff; - /* k = 11 */ - lo = Math.imul(al9, bl2); - mid = Math.imul(al9, bh2); - mid = (mid + Math.imul(ah9, bl2)) | 0; - hi = Math.imul(ah9, bh2); - lo = (lo + Math.imul(al8, bl3)) | 0; - mid = (mid + Math.imul(al8, bh3)) | 0; - mid = (mid + Math.imul(ah8, bl3)) | 0; - hi = (hi + Math.imul(ah8, bh3)) | 0; - lo = (lo + Math.imul(al7, bl4)) | 0; - mid = (mid + Math.imul(al7, bh4)) | 0; - mid = (mid + Math.imul(ah7, bl4)) | 0; - hi = (hi + Math.imul(ah7, bh4)) | 0; - lo = (lo + Math.imul(al6, bl5)) | 0; - mid = (mid + Math.imul(al6, bh5)) | 0; - mid = (mid + Math.imul(ah6, bl5)) | 0; - hi = (hi + Math.imul(ah6, bh5)) | 0; - lo = (lo + Math.imul(al5, bl6)) | 0; - mid = (mid + Math.imul(al5, bh6)) | 0; - mid = (mid + Math.imul(ah5, bl6)) | 0; - hi = (hi + Math.imul(ah5, bh6)) | 0; - lo = (lo + Math.imul(al4, bl7)) | 0; - mid = (mid + Math.imul(al4, bh7)) | 0; - mid = (mid + Math.imul(ah4, bl7)) | 0; - hi = (hi + Math.imul(ah4, bh7)) | 0; - lo = (lo + Math.imul(al3, bl8)) | 0; - mid = (mid + Math.imul(al3, bh8)) | 0; - mid = (mid + Math.imul(ah3, bl8)) | 0; - hi = (hi + Math.imul(ah3, bh8)) | 0; - lo = (lo + Math.imul(al2, bl9)) | 0; - mid = (mid + Math.imul(al2, bh9)) | 0; - mid = (mid + Math.imul(ah2, bl9)) | 0; - hi = (hi + Math.imul(ah2, bh9)) | 0; - var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0; - w11 &= 0x3ffffff; - /* k = 12 */ - lo = Math.imul(al9, bl3); - mid = Math.imul(al9, bh3); - mid = (mid + Math.imul(ah9, bl3)) | 0; - hi = Math.imul(ah9, bh3); - lo = (lo + Math.imul(al8, bl4)) | 0; - mid = (mid + Math.imul(al8, bh4)) | 0; - mid = (mid + Math.imul(ah8, bl4)) | 0; - hi = (hi + Math.imul(ah8, bh4)) | 0; - lo = (lo + Math.imul(al7, bl5)) | 0; - mid = (mid + Math.imul(al7, bh5)) | 0; - mid = (mid + Math.imul(ah7, bl5)) | 0; - hi = (hi + Math.imul(ah7, bh5)) | 0; - lo = (lo + Math.imul(al6, bl6)) | 0; - mid = (mid + Math.imul(al6, bh6)) | 0; - mid = (mid + Math.imul(ah6, bl6)) | 0; - hi = (hi + Math.imul(ah6, bh6)) | 0; - lo = (lo + Math.imul(al5, bl7)) | 0; - mid = (mid + Math.imul(al5, bh7)) | 0; - mid = (mid + Math.imul(ah5, bl7)) | 0; - hi = (hi + Math.imul(ah5, bh7)) | 0; - lo = (lo + Math.imul(al4, bl8)) | 0; - mid = (mid + Math.imul(al4, bh8)) | 0; - mid = (mid + Math.imul(ah4, bl8)) | 0; - hi = (hi + Math.imul(ah4, bh8)) | 0; - lo = (lo + Math.imul(al3, bl9)) | 0; - mid = (mid + Math.imul(al3, bh9)) | 0; - mid = (mid + Math.imul(ah3, bl9)) | 0; - hi = (hi + Math.imul(ah3, bh9)) | 0; - var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0; - w12 &= 0x3ffffff; - /* k = 13 */ - lo = Math.imul(al9, bl4); - mid = Math.imul(al9, bh4); - mid = (mid + Math.imul(ah9, bl4)) | 0; - hi = Math.imul(ah9, bh4); - lo = (lo + Math.imul(al8, bl5)) | 0; - mid = (mid + Math.imul(al8, bh5)) | 0; - mid = (mid + Math.imul(ah8, bl5)) | 0; - hi = (hi + Math.imul(ah8, bh5)) | 0; - lo = (lo + Math.imul(al7, bl6)) | 0; - mid = (mid + Math.imul(al7, bh6)) | 0; - mid = (mid + Math.imul(ah7, bl6)) | 0; - hi = (hi + Math.imul(ah7, bh6)) | 0; - lo = (lo + Math.imul(al6, bl7)) | 0; - mid = (mid + Math.imul(al6, bh7)) | 0; - mid = (mid + Math.imul(ah6, bl7)) | 0; - hi = (hi + Math.imul(ah6, bh7)) | 0; - lo = (lo + Math.imul(al5, bl8)) | 0; - mid = (mid + Math.imul(al5, bh8)) | 0; - mid = (mid + Math.imul(ah5, bl8)) | 0; - hi = (hi + Math.imul(ah5, bh8)) | 0; - lo = (lo + Math.imul(al4, bl9)) | 0; - mid = (mid + Math.imul(al4, bh9)) | 0; - mid = (mid + Math.imul(ah4, bl9)) | 0; - hi = (hi + Math.imul(ah4, bh9)) | 0; - var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0; - w13 &= 0x3ffffff; - /* k = 14 */ - lo = Math.imul(al9, bl5); - mid = Math.imul(al9, bh5); - mid = (mid + Math.imul(ah9, bl5)) | 0; - hi = Math.imul(ah9, bh5); - lo = (lo + Math.imul(al8, bl6)) | 0; - mid = (mid + Math.imul(al8, bh6)) | 0; - mid = (mid + Math.imul(ah8, bl6)) | 0; - hi = (hi + Math.imul(ah8, bh6)) | 0; - lo = (lo + Math.imul(al7, bl7)) | 0; - mid = (mid + Math.imul(al7, bh7)) | 0; - mid = (mid + Math.imul(ah7, bl7)) | 0; - hi = (hi + Math.imul(ah7, bh7)) | 0; - lo = (lo + Math.imul(al6, bl8)) | 0; - mid = (mid + Math.imul(al6, bh8)) | 0; - mid = (mid + Math.imul(ah6, bl8)) | 0; - hi = (hi + Math.imul(ah6, bh8)) | 0; - lo = (lo + Math.imul(al5, bl9)) | 0; - mid = (mid + Math.imul(al5, bh9)) | 0; - mid = (mid + Math.imul(ah5, bl9)) | 0; - hi = (hi + Math.imul(ah5, bh9)) | 0; - var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0; - w14 &= 0x3ffffff; - /* k = 15 */ - lo = Math.imul(al9, bl6); - mid = Math.imul(al9, bh6); - mid = (mid + Math.imul(ah9, bl6)) | 0; - hi = Math.imul(ah9, bh6); - lo = (lo + Math.imul(al8, bl7)) | 0; - mid = (mid + Math.imul(al8, bh7)) | 0; - mid = (mid + Math.imul(ah8, bl7)) | 0; - hi = (hi + Math.imul(ah8, bh7)) | 0; - lo = (lo + Math.imul(al7, bl8)) | 0; - mid = (mid + Math.imul(al7, bh8)) | 0; - mid = (mid + Math.imul(ah7, bl8)) | 0; - hi = (hi + Math.imul(ah7, bh8)) | 0; - lo = (lo + Math.imul(al6, bl9)) | 0; - mid = (mid + Math.imul(al6, bh9)) | 0; - mid = (mid + Math.imul(ah6, bl9)) | 0; - hi = (hi + Math.imul(ah6, bh9)) | 0; - var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0; - w15 &= 0x3ffffff; - /* k = 16 */ - lo = Math.imul(al9, bl7); - mid = Math.imul(al9, bh7); - mid = (mid + Math.imul(ah9, bl7)) | 0; - hi = Math.imul(ah9, bh7); - lo = (lo + Math.imul(al8, bl8)) | 0; - mid = (mid + Math.imul(al8, bh8)) | 0; - mid = (mid + Math.imul(ah8, bl8)) | 0; - hi = (hi + Math.imul(ah8, bh8)) | 0; - lo = (lo + Math.imul(al7, bl9)) | 0; - mid = (mid + Math.imul(al7, bh9)) | 0; - mid = (mid + Math.imul(ah7, bl9)) | 0; - hi = (hi + Math.imul(ah7, bh9)) | 0; - var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0; - w16 &= 0x3ffffff; - /* k = 17 */ - lo = Math.imul(al9, bl8); - mid = Math.imul(al9, bh8); - mid = (mid + Math.imul(ah9, bl8)) | 0; - hi = Math.imul(ah9, bh8); - lo = (lo + Math.imul(al8, bl9)) | 0; - mid = (mid + Math.imul(al8, bh9)) | 0; - mid = (mid + Math.imul(ah8, bl9)) | 0; - hi = (hi + Math.imul(ah8, bh9)) | 0; - var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0; - w17 &= 0x3ffffff; - /* k = 18 */ - lo = Math.imul(al9, bl9); - mid = Math.imul(al9, bh9); - mid = (mid + Math.imul(ah9, bl9)) | 0; - hi = Math.imul(ah9, bh9); - var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; - c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0; - w18 &= 0x3ffffff; - o[0] = w0; - o[1] = w1; - o[2] = w2; - o[3] = w3; - o[4] = w4; - o[5] = w5; - o[6] = w6; - o[7] = w7; - o[8] = w8; - o[9] = w9; - o[10] = w10; - o[11] = w11; - o[12] = w12; - o[13] = w13; - o[14] = w14; - o[15] = w15; - o[16] = w16; - o[17] = w17; - o[18] = w18; - if (c !== 0) { - o[19] = c; - out.length++; - } - return out; - }; - - // Polyfill comb - if (!Math.imul) { - comb10MulTo = smallMulTo; - } - - function bigMulTo (self, num, out) { - out.negative = num.negative ^ self.negative; - out.length = self.length + num.length; - - var carry = 0; - var hncarry = 0; - for (var k = 0; k < out.length - 1; k++) { - // Sum all words with the same `i + j = k` and accumulate `ncarry`, - // note that ncarry could be >= 0x3ffffff - var ncarry = hncarry; - hncarry = 0; - var rword = carry & 0x3ffffff; - var maxJ = Math.min(k, num.length - 1); - for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { - var i = k - j; - var a = self.words[i] | 0; - var b = num.words[j] | 0; - var r = a * b; - - var lo = r & 0x3ffffff; - ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0; - lo = (lo + rword) | 0; - rword = lo & 0x3ffffff; - ncarry = (ncarry + (lo >>> 26)) | 0; - - hncarry += ncarry >>> 26; - ncarry &= 0x3ffffff; - } - out.words[k] = rword; - carry = ncarry; - ncarry = hncarry; - } - if (carry !== 0) { - out.words[k] = carry; - } else { - out.length--; - } - - return out.strip(); - } - - function jumboMulTo (self, num, out) { - var fftm = new FFTM(); - return fftm.mulp(self, num, out); - } - - BN.prototype.mulTo = function mulTo (num, out) { - var res; - var len = this.length + num.length; - if (this.length === 10 && num.length === 10) { - res = comb10MulTo(this, num, out); - } else if (len < 63) { - res = smallMulTo(this, num, out); - } else if (len < 1024) { - res = bigMulTo(this, num, out); - } else { - res = jumboMulTo(this, num, out); - } - - return res; - }; - - // Cooley-Tukey algorithm for FFT - // slightly revisited to rely on looping instead of recursion - - function FFTM (x, y) { - this.x = x; - this.y = y; - } - - FFTM.prototype.makeRBT = function makeRBT (N) { - var t = new Array(N); - var l = BN.prototype._countBits(N) - 1; - for (var i = 0; i < N; i++) { - t[i] = this.revBin(i, l, N); - } - - return t; - }; - - // Returns binary-reversed representation of `x` - FFTM.prototype.revBin = function revBin (x, l, N) { - if (x === 0 || x === N - 1) return x; - - var rb = 0; - for (var i = 0; i < l; i++) { - rb |= (x & 1) << (l - i - 1); - x >>= 1; - } - - return rb; - }; - - // Performs "tweedling" phase, therefore 'emulating' - // behaviour of the recursive algorithm - FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) { - for (var i = 0; i < N; i++) { - rtws[i] = rws[rbt[i]]; - itws[i] = iws[rbt[i]]; - } - }; - - FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) { - this.permute(rbt, rws, iws, rtws, itws, N); - - for (var s = 1; s < N; s <<= 1) { - var l = s << 1; - - var rtwdf = Math.cos(2 * Math.PI / l); - var itwdf = Math.sin(2 * Math.PI / l); - - for (var p = 0; p < N; p += l) { - var rtwdf_ = rtwdf; - var itwdf_ = itwdf; - - for (var j = 0; j < s; j++) { - var re = rtws[p + j]; - var ie = itws[p + j]; - - var ro = rtws[p + j + s]; - var io = itws[p + j + s]; - - var rx = rtwdf_ * ro - itwdf_ * io; - - io = rtwdf_ * io + itwdf_ * ro; - ro = rx; - - rtws[p + j] = re + ro; - itws[p + j] = ie + io; - - rtws[p + j + s] = re - ro; - itws[p + j + s] = ie - io; - - /* jshint maxdepth : false */ - if (j !== l) { - rx = rtwdf * rtwdf_ - itwdf * itwdf_; - - itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; - rtwdf_ = rx; - } - } - } - } - }; - - FFTM.prototype.guessLen13b = function guessLen13b (n, m) { - var N = Math.max(m, n) | 1; - var odd = N & 1; - var i = 0; - for (N = N / 2 | 0; N; N = N >>> 1) { - i++; - } - - return 1 << i + 1 + odd; - }; - - FFTM.prototype.conjugate = function conjugate (rws, iws, N) { - if (N <= 1) return; - - for (var i = 0; i < N / 2; i++) { - var t = rws[i]; - - rws[i] = rws[N - i - 1]; - rws[N - i - 1] = t; - - t = iws[i]; - - iws[i] = -iws[N - i - 1]; - iws[N - i - 1] = -t; - } - }; - - FFTM.prototype.normalize13b = function normalize13b (ws, N) { - var carry = 0; - for (var i = 0; i < N / 2; i++) { - var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + - Math.round(ws[2 * i] / N) + - carry; - - ws[i] = w & 0x3ffffff; - - if (w < 0x4000000) { - carry = 0; - } else { - carry = w / 0x4000000 | 0; - } - } - - return ws; - }; - - FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) { - var carry = 0; - for (var i = 0; i < len; i++) { - carry = carry + (ws[i] | 0); - - rws[2 * i] = carry & 0x1fff; carry = carry >>> 13; - rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13; - } - - // Pad with zeroes - for (i = 2 * len; i < N; ++i) { - rws[i] = 0; - } - - assert(carry === 0); - assert((carry & ~0x1fff) === 0); - }; - - FFTM.prototype.stub = function stub (N) { - var ph = new Array(N); - for (var i = 0; i < N; i++) { - ph[i] = 0; - } - - return ph; - }; - - FFTM.prototype.mulp = function mulp (x, y, out) { - var N = 2 * this.guessLen13b(x.length, y.length); - - var rbt = this.makeRBT(N); - - var _ = this.stub(N); - - var rws = new Array(N); - var rwst = new Array(N); - var iwst = new Array(N); - - var nrws = new Array(N); - var nrwst = new Array(N); - var niwst = new Array(N); - - var rmws = out.words; - rmws.length = N; - - this.convert13b(x.words, x.length, rws, N); - this.convert13b(y.words, y.length, nrws, N); - - this.transform(rws, _, rwst, iwst, N, rbt); - this.transform(nrws, _, nrwst, niwst, N, rbt); - - for (var i = 0; i < N; i++) { - var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; - iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; - rwst[i] = rx; - } - - this.conjugate(rwst, iwst, N); - this.transform(rwst, iwst, rmws, _, N, rbt); - this.conjugate(rmws, _, N); - this.normalize13b(rmws, N); - - out.negative = x.negative ^ y.negative; - out.length = x.length + y.length; - return out.strip(); - }; - - // Multiply `this` by `num` - BN.prototype.mul = function mul (num) { - var out = new BN(null); - out.words = new Array(this.length + num.length); - return this.mulTo(num, out); - }; - - // Multiply employing FFT - BN.prototype.mulf = function mulf (num) { - var out = new BN(null); - out.words = new Array(this.length + num.length); - return jumboMulTo(this, num, out); - }; - - // In-place Multiplication - BN.prototype.imul = function imul (num) { - return this.clone().mulTo(num, this); - }; - - BN.prototype.imuln = function imuln (num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - - // Carry - var carry = 0; - for (var i = 0; i < this.length; i++) { - var w = (this.words[i] | 0) * num; - var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); - carry >>= 26; - carry += (w / 0x4000000) | 0; - // NOTE: lo is 27bit maximum - carry += lo >>> 26; - this.words[i] = lo & 0x3ffffff; - } - - if (carry !== 0) { - this.words[i] = carry; - this.length++; - } - - return this; - }; - - BN.prototype.muln = function muln (num) { - return this.clone().imuln(num); - }; - - // `this` * `this` - BN.prototype.sqr = function sqr () { - return this.mul(this); - }; - - // `this` * `this` in-place - BN.prototype.isqr = function isqr () { - return this.imul(this.clone()); - }; - - // Math.pow(`this`, `num`) - BN.prototype.pow = function pow (num) { - var w = toBitArray(num); - if (w.length === 0) return new BN(1); - - // Skip leading zeroes - var res = this; - for (var i = 0; i < w.length; i++, res = res.sqr()) { - if (w[i] !== 0) break; - } - - if (++i < w.length) { - for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { - if (w[i] === 0) continue; - - res = res.mul(q); - } - } - - return res; - }; - - // Shift-left in-place - BN.prototype.iushln = function iushln (bits) { - assert(typeof bits === 'number' && bits >= 0); - var r = bits % 26; - var s = (bits - r) / 26; - var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r); - var i; - - if (r !== 0) { - var carry = 0; - - for (i = 0; i < this.length; i++) { - var newCarry = this.words[i] & carryMask; - var c = ((this.words[i] | 0) - newCarry) << r; - this.words[i] = c | carry; - carry = newCarry >>> (26 - r); - } - - if (carry) { - this.words[i] = carry; - this.length++; - } - } - - if (s !== 0) { - for (i = this.length - 1; i >= 0; i--) { - this.words[i + s] = this.words[i]; - } - - for (i = 0; i < s; i++) { - this.words[i] = 0; - } - - this.length += s; - } - - return this.strip(); - }; - - BN.prototype.ishln = function ishln (bits) { - // TODO(indutny): implement me - assert(this.negative === 0); - return this.iushln(bits); - }; - - // Shift-right in-place - // NOTE: `hint` is a lowest bit before trailing zeroes - // NOTE: if `extended` is present - it will be filled with destroyed bits - BN.prototype.iushrn = function iushrn (bits, hint, extended) { - assert(typeof bits === 'number' && bits >= 0); - var h; - if (hint) { - h = (hint - (hint % 26)) / 26; - } else { - h = 0; - } - - var r = bits % 26; - var s = Math.min((bits - r) / 26, this.length); - var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); - var maskedWords = extended; - - h -= s; - h = Math.max(0, h); - - // Extended mode, copy masked part - if (maskedWords) { - for (var i = 0; i < s; i++) { - maskedWords.words[i] = this.words[i]; - } - maskedWords.length = s; - } - - if (s === 0) { - // No-op, we should not move anything at all - } else if (this.length > s) { - this.length -= s; - for (i = 0; i < this.length; i++) { - this.words[i] = this.words[i + s]; - } - } else { - this.words[0] = 0; - this.length = 1; - } - - var carry = 0; - for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { - var word = this.words[i] | 0; - this.words[i] = (carry << (26 - r)) | (word >>> r); - carry = word & mask; - } - - // Push carried bits as a mask - if (maskedWords && carry !== 0) { - maskedWords.words[maskedWords.length++] = carry; - } - - if (this.length === 0) { - this.words[0] = 0; - this.length = 1; - } - - return this.strip(); - }; - - BN.prototype.ishrn = function ishrn (bits, hint, extended) { - // TODO(indutny): implement me - assert(this.negative === 0); - return this.iushrn(bits, hint, extended); - }; - - // Shift-left - BN.prototype.shln = function shln (bits) { - return this.clone().ishln(bits); - }; - - BN.prototype.ushln = function ushln (bits) { - return this.clone().iushln(bits); - }; - - // Shift-right - BN.prototype.shrn = function shrn (bits) { - return this.clone().ishrn(bits); - }; - - BN.prototype.ushrn = function ushrn (bits) { - return this.clone().iushrn(bits); - }; - - // Test if n bit is set - BN.prototype.testn = function testn (bit) { - assert(typeof bit === 'number' && bit >= 0); - var r = bit % 26; - var s = (bit - r) / 26; - var q = 1 << r; - - // Fast case: bit is much higher than all existing words - if (this.length <= s) return false; - - // Check bit and return - var w = this.words[s]; - - return !!(w & q); - }; - - // Return only lowers bits of number (in-place) - BN.prototype.imaskn = function imaskn (bits) { - assert(typeof bits === 'number' && bits >= 0); - var r = bits % 26; - var s = (bits - r) / 26; - - assert(this.negative === 0, 'imaskn works only with positive numbers'); - - if (this.length <= s) { - return this; - } - - if (r !== 0) { - s++; - } - this.length = Math.min(s, this.length); - - if (r !== 0) { - var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); - this.words[this.length - 1] &= mask; - } - - return this.strip(); - }; - - // Return only lowers bits of number - BN.prototype.maskn = function maskn (bits) { - return this.clone().imaskn(bits); - }; - - // Add plain number `num` to `this` - BN.prototype.iaddn = function iaddn (num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - if (num < 0) return this.isubn(-num); - - // Possible sign change - if (this.negative !== 0) { - if (this.length === 1 && (this.words[0] | 0) < num) { - this.words[0] = num - (this.words[0] | 0); - this.negative = 0; - return this; - } - - this.negative = 0; - this.isubn(num); - this.negative = 1; - return this; - } - - // Add without checks - return this._iaddn(num); - }; - - BN.prototype._iaddn = function _iaddn (num) { - this.words[0] += num; - - // Carry - for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { - this.words[i] -= 0x4000000; - if (i === this.length - 1) { - this.words[i + 1] = 1; - } else { - this.words[i + 1]++; - } - } - this.length = Math.max(this.length, i + 1); - - return this; - }; - - // Subtract plain number `num` from `this` - BN.prototype.isubn = function isubn (num) { - assert(typeof num === 'number'); - assert(num < 0x4000000); - if (num < 0) return this.iaddn(-num); - - if (this.negative !== 0) { - this.negative = 0; - this.iaddn(num); - this.negative = 1; - return this; - } - - this.words[0] -= num; - - if (this.length === 1 && this.words[0] < 0) { - this.words[0] = -this.words[0]; - this.negative = 1; - } else { - // Carry - for (var i = 0; i < this.length && this.words[i] < 0; i++) { - this.words[i] += 0x4000000; - this.words[i + 1] -= 1; - } - } - - return this.strip(); - }; - - BN.prototype.addn = function addn (num) { - return this.clone().iaddn(num); - }; - - BN.prototype.subn = function subn (num) { - return this.clone().isubn(num); - }; - - BN.prototype.iabs = function iabs () { - this.negative = 0; - - return this; - }; - - BN.prototype.abs = function abs () { - return this.clone().iabs(); - }; - - BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) { - var len = num.length + shift; - var i; - - this._expand(len); - - var w; - var carry = 0; - for (i = 0; i < num.length; i++) { - w = (this.words[i + shift] | 0) + carry; - var right = (num.words[i] | 0) * mul; - w -= right & 0x3ffffff; - carry = (w >> 26) - ((right / 0x4000000) | 0); - this.words[i + shift] = w & 0x3ffffff; - } - for (; i < this.length - shift; i++) { - w = (this.words[i + shift] | 0) + carry; - carry = w >> 26; - this.words[i + shift] = w & 0x3ffffff; - } - - if (carry === 0) return this.strip(); - - // Subtraction overflow - assert(carry === -1); - carry = 0; - for (i = 0; i < this.length; i++) { - w = -(this.words[i] | 0) + carry; - carry = w >> 26; - this.words[i] = w & 0x3ffffff; - } - this.negative = 1; - - return this.strip(); - }; - - BN.prototype._wordDiv = function _wordDiv (num, mode) { - var shift = this.length - num.length; - - var a = this.clone(); - var b = num; - - // Normalize - var bhi = b.words[b.length - 1] | 0; - var bhiBits = this._countBits(bhi); - shift = 26 - bhiBits; - if (shift !== 0) { - b = b.ushln(shift); - a.iushln(shift); - bhi = b.words[b.length - 1] | 0; - } - - // Initialize quotient - var m = a.length - b.length; - var q; - - if (mode !== 'mod') { - q = new BN(null); - q.length = m + 1; - q.words = new Array(q.length); - for (var i = 0; i < q.length; i++) { - q.words[i] = 0; - } - } - - var diff = a.clone()._ishlnsubmul(b, 1, m); - if (diff.negative === 0) { - a = diff; - if (q) { - q.words[m] = 1; - } - } - - for (var j = m - 1; j >= 0; j--) { - var qj = (a.words[b.length + j] | 0) * 0x4000000 + - (a.words[b.length + j - 1] | 0); - - // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max - // (0x7ffffff) - qj = Math.min((qj / bhi) | 0, 0x3ffffff); - - a._ishlnsubmul(b, qj, j); - while (a.negative !== 0) { - qj--; - a.negative = 0; - a._ishlnsubmul(b, 1, j); - if (!a.isZero()) { - a.negative ^= 1; - } - } - if (q) { - q.words[j] = qj; - } - } - if (q) { - q.strip(); - } - a.strip(); - - // Denormalize - if (mode !== 'div' && shift !== 0) { - a.iushrn(shift); - } - - return { - div: q || null, - mod: a - }; - }; - - // NOTE: 1) `mode` can be set to `mod` to request mod only, - // to `div` to request div only, or be absent to - // request both div & mod - // 2) `positive` is true if unsigned mod is requested - BN.prototype.divmod = function divmod (num, mode, positive) { - assert(!num.isZero()); - - if (this.isZero()) { - return { - div: new BN(0), - mod: new BN(0) - }; - } - - var div, mod, res; - if (this.negative !== 0 && num.negative === 0) { - res = this.neg().divmod(num, mode); - - if (mode !== 'mod') { - div = res.div.neg(); - } - - if (mode !== 'div') { - mod = res.mod.neg(); - if (positive && mod.negative !== 0) { - mod.iadd(num); - } - } - - return { - div: div, - mod: mod - }; - } - - if (this.negative === 0 && num.negative !== 0) { - res = this.divmod(num.neg(), mode); - - if (mode !== 'mod') { - div = res.div.neg(); - } - - return { - div: div, - mod: res.mod - }; - } - - if ((this.negative & num.negative) !== 0) { - res = this.neg().divmod(num.neg(), mode); - - if (mode !== 'div') { - mod = res.mod.neg(); - if (positive && mod.negative !== 0) { - mod.isub(num); - } - } - - return { - div: res.div, - mod: mod - }; - } - - // Both numbers are positive at this point - - // Strip both numbers to approximate shift value - if (num.length > this.length || this.cmp(num) < 0) { - return { - div: new BN(0), - mod: this - }; - } - - // Very short reduction - if (num.length === 1) { - if (mode === 'div') { - return { - div: this.divn(num.words[0]), - mod: null - }; - } - - if (mode === 'mod') { - return { - div: null, - mod: new BN(this.modn(num.words[0])) - }; - } - - return { - div: this.divn(num.words[0]), - mod: new BN(this.modn(num.words[0])) - }; - } - - return this._wordDiv(num, mode); - }; - - // Find `this` / `num` - BN.prototype.div = function div (num) { - return this.divmod(num, 'div', false).div; - }; - - // Find `this` % `num` - BN.prototype.mod = function mod (num) { - return this.divmod(num, 'mod', false).mod; - }; - - BN.prototype.umod = function umod (num) { - return this.divmod(num, 'mod', true).mod; - }; - - // Find Round(`this` / `num`) - BN.prototype.divRound = function divRound (num) { - var dm = this.divmod(num); - - // Fast case - exact division - if (dm.mod.isZero()) return dm.div; - - var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; - - var half = num.ushrn(1); - var r2 = num.andln(1); - var cmp = mod.cmp(half); - - // Round down - if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; - - // Round up - return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); - }; - - BN.prototype.modn = function modn (num) { - assert(num <= 0x3ffffff); - var p = (1 << 26) % num; - - var acc = 0; - for (var i = this.length - 1; i >= 0; i--) { - acc = (p * acc + (this.words[i] | 0)) % num; - } - - return acc; - }; - - // In-place division by number - BN.prototype.idivn = function idivn (num) { - assert(num <= 0x3ffffff); - - var carry = 0; - for (var i = this.length - 1; i >= 0; i--) { - var w = (this.words[i] | 0) + carry * 0x4000000; - this.words[i] = (w / num) | 0; - carry = w % num; - } - - return this.strip(); - }; - - BN.prototype.divn = function divn (num) { - return this.clone().idivn(num); - }; - - BN.prototype.egcd = function egcd (p) { - assert(p.negative === 0); - assert(!p.isZero()); - - var x = this; - var y = p.clone(); - - if (x.negative !== 0) { - x = x.umod(p); - } else { - x = x.clone(); - } - - // A * x + B * y = x - var A = new BN(1); - var B = new BN(0); - - // C * x + D * y = y - var C = new BN(0); - var D = new BN(1); - - var g = 0; - - while (x.isEven() && y.isEven()) { - x.iushrn(1); - y.iushrn(1); - ++g; - } - - var yp = y.clone(); - var xp = x.clone(); - - while (!x.isZero()) { - for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) { - x.iushrn(i); - while (i-- > 0) { - if (A.isOdd() || B.isOdd()) { - A.iadd(yp); - B.isub(xp); - } - - A.iushrn(1); - B.iushrn(1); - } - } - - for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) { - y.iushrn(j); - while (j-- > 0) { - if (C.isOdd() || D.isOdd()) { - C.iadd(yp); - D.isub(xp); - } - - C.iushrn(1); - D.iushrn(1); - } - } - - if (x.cmp(y) >= 0) { - x.isub(y); - A.isub(C); - B.isub(D); - } else { - y.isub(x); - C.isub(A); - D.isub(B); - } - } - - return { - a: C, - b: D, - gcd: y.iushln(g) - }; - }; - - // This is reduced incarnation of the binary EEA - // above, designated to invert members of the - // _prime_ fields F(p) at a maximal speed - BN.prototype._invmp = function _invmp (p) { - assert(p.negative === 0); - assert(!p.isZero()); - - var a = this; - var b = p.clone(); - - if (a.negative !== 0) { - a = a.umod(p); - } else { - a = a.clone(); - } - - var x1 = new BN(1); - var x2 = new BN(0); - - var delta = b.clone(); - - while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { - for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); - if (i > 0) { - a.iushrn(i); - while (i-- > 0) { - if (x1.isOdd()) { - x1.iadd(delta); - } - - x1.iushrn(1); - } - } - - for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); - if (j > 0) { - b.iushrn(j); - while (j-- > 0) { - if (x2.isOdd()) { - x2.iadd(delta); - } - - x2.iushrn(1); - } - } - - if (a.cmp(b) >= 0) { - a.isub(b); - x1.isub(x2); - } else { - b.isub(a); - x2.isub(x1); - } - } - - var res; - if (a.cmpn(1) === 0) { - res = x1; - } else { - res = x2; - } - - if (res.cmpn(0) < 0) { - res.iadd(p); - } - - return res; - }; - - BN.prototype.gcd = function gcd (num) { - if (this.isZero()) return num.abs(); - if (num.isZero()) return this.abs(); - - var a = this.clone(); - var b = num.clone(); - a.negative = 0; - b.negative = 0; - - // Remove common factor of two - for (var shift = 0; a.isEven() && b.isEven(); shift++) { - a.iushrn(1); - b.iushrn(1); - } - - do { - while (a.isEven()) { - a.iushrn(1); - } - while (b.isEven()) { - b.iushrn(1); - } - - var r = a.cmp(b); - if (r < 0) { - // Swap `a` and `b` to make `a` always bigger than `b` - var t = a; - a = b; - b = t; - } else if (r === 0 || b.cmpn(1) === 0) { - break; - } - - a.isub(b); - } while (true); - - return b.iushln(shift); - }; - - // Invert number in the field F(num) - BN.prototype.invm = function invm (num) { - return this.egcd(num).a.umod(num); - }; - - BN.prototype.isEven = function isEven () { - return (this.words[0] & 1) === 0; - }; - - BN.prototype.isOdd = function isOdd () { - return (this.words[0] & 1) === 1; - }; - - // And first word and num - BN.prototype.andln = function andln (num) { - return this.words[0] & num; - }; - - // Increment at the bit position in-line - BN.prototype.bincn = function bincn (bit) { - assert(typeof bit === 'number'); - var r = bit % 26; - var s = (bit - r) / 26; - var q = 1 << r; - - // Fast case: bit is much higher than all existing words - if (this.length <= s) { - this._expand(s + 1); - this.words[s] |= q; - return this; - } - - // Add bit and propagate, if needed - var carry = q; - for (var i = s; carry !== 0 && i < this.length; i++) { - var w = this.words[i] | 0; - w += carry; - carry = w >>> 26; - w &= 0x3ffffff; - this.words[i] = w; - } - if (carry !== 0) { - this.words[i] = carry; - this.length++; - } - return this; - }; - - BN.prototype.isZero = function isZero () { - return this.length === 1 && this.words[0] === 0; - }; - - BN.prototype.cmpn = function cmpn (num) { - var negative = num < 0; - - if (this.negative !== 0 && !negative) return -1; - if (this.negative === 0 && negative) return 1; - - this.strip(); - - var res; - if (this.length > 1) { - res = 1; - } else { - if (negative) { - num = -num; - } - - assert(num <= 0x3ffffff, 'Number is too big'); - - var w = this.words[0] | 0; - res = w === num ? 0 : w < num ? -1 : 1; - } - if (this.negative !== 0) return -res | 0; - return res; - }; - - // Compare two numbers and return: - // 1 - if `this` > `num` - // 0 - if `this` == `num` - // -1 - if `this` < `num` - BN.prototype.cmp = function cmp (num) { - if (this.negative !== 0 && num.negative === 0) return -1; - if (this.negative === 0 && num.negative !== 0) return 1; - - var res = this.ucmp(num); - if (this.negative !== 0) return -res | 0; - return res; - }; - - // Unsigned comparison - BN.prototype.ucmp = function ucmp (num) { - // At this point both numbers have the same sign - if (this.length > num.length) return 1; - if (this.length < num.length) return -1; - - var res = 0; - for (var i = this.length - 1; i >= 0; i--) { - var a = this.words[i] | 0; - var b = num.words[i] | 0; - - if (a === b) continue; - if (a < b) { - res = -1; - } else if (a > b) { - res = 1; - } - break; - } - return res; - }; - - BN.prototype.gtn = function gtn (num) { - return this.cmpn(num) === 1; - }; - - BN.prototype.gt = function gt (num) { - return this.cmp(num) === 1; - }; - - BN.prototype.gten = function gten (num) { - return this.cmpn(num) >= 0; - }; - - BN.prototype.gte = function gte (num) { - return this.cmp(num) >= 0; - }; - - BN.prototype.ltn = function ltn (num) { - return this.cmpn(num) === -1; - }; - - BN.prototype.lt = function lt (num) { - return this.cmp(num) === -1; - }; - - BN.prototype.lten = function lten (num) { - return this.cmpn(num) <= 0; - }; - - BN.prototype.lte = function lte (num) { - return this.cmp(num) <= 0; - }; - - BN.prototype.eqn = function eqn (num) { - return this.cmpn(num) === 0; - }; - - BN.prototype.eq = function eq (num) { - return this.cmp(num) === 0; - }; - - // - // A reduce context, could be using montgomery or something better, depending - // on the `m` itself. - // - BN.red = function red (num) { - return new Red(num); - }; - - BN.prototype.toRed = function toRed (ctx) { - assert(!this.red, 'Already a number in reduction context'); - assert(this.negative === 0, 'red works only with positives'); - return ctx.convertTo(this)._forceRed(ctx); - }; - - BN.prototype.fromRed = function fromRed () { - assert(this.red, 'fromRed works only with numbers in reduction context'); - return this.red.convertFrom(this); - }; - - BN.prototype._forceRed = function _forceRed (ctx) { - this.red = ctx; - return this; - }; - - BN.prototype.forceRed = function forceRed (ctx) { - assert(!this.red, 'Already a number in reduction context'); - return this._forceRed(ctx); - }; - - BN.prototype.redAdd = function redAdd (num) { - assert(this.red, 'redAdd works only with red numbers'); - return this.red.add(this, num); - }; - - BN.prototype.redIAdd = function redIAdd (num) { - assert(this.red, 'redIAdd works only with red numbers'); - return this.red.iadd(this, num); - }; - - BN.prototype.redSub = function redSub (num) { - assert(this.red, 'redSub works only with red numbers'); - return this.red.sub(this, num); - }; - - BN.prototype.redISub = function redISub (num) { - assert(this.red, 'redISub works only with red numbers'); - return this.red.isub(this, num); - }; - - BN.prototype.redShl = function redShl (num) { - assert(this.red, 'redShl works only with red numbers'); - return this.red.shl(this, num); - }; - - BN.prototype.redMul = function redMul (num) { - assert(this.red, 'redMul works only with red numbers'); - this.red._verify2(this, num); - return this.red.mul(this, num); - }; - - BN.prototype.redIMul = function redIMul (num) { - assert(this.red, 'redMul works only with red numbers'); - this.red._verify2(this, num); - return this.red.imul(this, num); - }; - - BN.prototype.redSqr = function redSqr () { - assert(this.red, 'redSqr works only with red numbers'); - this.red._verify1(this); - return this.red.sqr(this); - }; - - BN.prototype.redISqr = function redISqr () { - assert(this.red, 'redISqr works only with red numbers'); - this.red._verify1(this); - return this.red.isqr(this); - }; - - // Square root over p - BN.prototype.redSqrt = function redSqrt () { - assert(this.red, 'redSqrt works only with red numbers'); - this.red._verify1(this); - return this.red.sqrt(this); - }; - - BN.prototype.redInvm = function redInvm () { - assert(this.red, 'redInvm works only with red numbers'); - this.red._verify1(this); - return this.red.invm(this); - }; - - // Return negative clone of `this` % `red modulo` - BN.prototype.redNeg = function redNeg () { - assert(this.red, 'redNeg works only with red numbers'); - this.red._verify1(this); - return this.red.neg(this); - }; - - BN.prototype.redPow = function redPow (num) { - assert(this.red && !num.red, 'redPow(normalNum)'); - this.red._verify1(this); - return this.red.pow(this, num); - }; - - // Prime numbers with efficient reduction - var primes = { - k256: null, - p224: null, - p192: null, - p25519: null - }; - - // Pseudo-Mersenne prime - function MPrime (name, p) { - // P = 2 ^ N - K - this.name = name; - this.p = new BN(p, 16); - this.n = this.p.bitLength(); - this.k = new BN(1).iushln(this.n).isub(this.p); - - this.tmp = this._tmp(); - } - - MPrime.prototype._tmp = function _tmp () { - var tmp = new BN(null); - tmp.words = new Array(Math.ceil(this.n / 13)); - return tmp; - }; - - MPrime.prototype.ireduce = function ireduce (num) { - // Assumes that `num` is less than `P^2` - // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) - var r = num; - var rlen; - - do { - this.split(r, this.tmp); - r = this.imulK(r); - r = r.iadd(this.tmp); - rlen = r.bitLength(); - } while (rlen > this.n); - - var cmp = rlen < this.n ? -1 : r.ucmp(this.p); - if (cmp === 0) { - r.words[0] = 0; - r.length = 1; - } else if (cmp > 0) { - r.isub(this.p); - } else { - r.strip(); - } - - return r; - }; - - MPrime.prototype.split = function split (input, out) { - input.iushrn(this.n, 0, out); - }; - - MPrime.prototype.imulK = function imulK (num) { - return num.imul(this.k); - }; - - function K256 () { - MPrime.call( - this, - 'k256', - 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); - } - inherits(K256, MPrime); - - K256.prototype.split = function split (input, output) { - // 256 = 9 * 26 + 22 - var mask = 0x3fffff; - - var outLen = Math.min(input.length, 9); - for (var i = 0; i < outLen; i++) { - output.words[i] = input.words[i]; - } - output.length = outLen; - - if (input.length <= 9) { - input.words[0] = 0; - input.length = 1; - return; - } - - // Shift by 9 limbs - var prev = input.words[9]; - output.words[output.length++] = prev & mask; - - for (i = 10; i < input.length; i++) { - var next = input.words[i] | 0; - input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22); - prev = next; - } - prev >>>= 22; - input.words[i - 10] = prev; - if (prev === 0 && input.length > 10) { - input.length -= 10; - } else { - input.length -= 9; - } - }; - - K256.prototype.imulK = function imulK (num) { - // K = 0x1000003d1 = [ 0x40, 0x3d1 ] - num.words[num.length] = 0; - num.words[num.length + 1] = 0; - num.length += 2; - - // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 - var lo = 0; - for (var i = 0; i < num.length; i++) { - var w = num.words[i] | 0; - lo += w * 0x3d1; - num.words[i] = lo & 0x3ffffff; - lo = w * 0x40 + ((lo / 0x4000000) | 0); - } - - // Fast length reduction - if (num.words[num.length - 1] === 0) { - num.length--; - if (num.words[num.length - 1] === 0) { - num.length--; - } - } - return num; - }; - - function P224 () { - MPrime.call( - this, - 'p224', - 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); - } - inherits(P224, MPrime); - - function P192 () { - MPrime.call( - this, - 'p192', - 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); - } - inherits(P192, MPrime); - - function P25519 () { - // 2 ^ 255 - 19 - MPrime.call( - this, - '25519', - '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); - } - inherits(P25519, MPrime); - - P25519.prototype.imulK = function imulK (num) { - // K = 0x13 - var carry = 0; - for (var i = 0; i < num.length; i++) { - var hi = (num.words[i] | 0) * 0x13 + carry; - var lo = hi & 0x3ffffff; - hi >>>= 26; - - num.words[i] = lo; - carry = hi; - } - if (carry !== 0) { - num.words[num.length++] = carry; - } - return num; - }; - - // Exported mostly for testing purposes, use plain name instead - BN._prime = function prime (name) { - // Cached version of prime - if (primes[name]) return primes[name]; - - var prime; - if (name === 'k256') { - prime = new K256(); - } else if (name === 'p224') { - prime = new P224(); - } else if (name === 'p192') { - prime = new P192(); - } else if (name === 'p25519') { - prime = new P25519(); - } else { - throw new Error('Unknown prime ' + name); - } - primes[name] = prime; - - return prime; - }; - - // - // Base reduction engine - // - function Red (m) { - if (typeof m === 'string') { - var prime = BN._prime(m); - this.m = prime.p; - this.prime = prime; - } else { - assert(m.gtn(1), 'modulus must be greater than 1'); - this.m = m; - this.prime = null; - } - } - - Red.prototype._verify1 = function _verify1 (a) { - assert(a.negative === 0, 'red works only with positives'); - assert(a.red, 'red works only with red numbers'); - }; - - Red.prototype._verify2 = function _verify2 (a, b) { - assert((a.negative | b.negative) === 0, 'red works only with positives'); - assert(a.red && a.red === b.red, - 'red works only with red numbers'); - }; - - Red.prototype.imod = function imod (a) { - if (this.prime) return this.prime.ireduce(a)._forceRed(this); - return a.umod(this.m)._forceRed(this); - }; - - Red.prototype.neg = function neg (a) { - if (a.isZero()) { - return a.clone(); - } - - return this.m.sub(a)._forceRed(this); - }; - - Red.prototype.add = function add (a, b) { - this._verify2(a, b); - - var res = a.add(b); - if (res.cmp(this.m) >= 0) { - res.isub(this.m); - } - return res._forceRed(this); - }; - - Red.prototype.iadd = function iadd (a, b) { - this._verify2(a, b); - - var res = a.iadd(b); - if (res.cmp(this.m) >= 0) { - res.isub(this.m); - } - return res; - }; - - Red.prototype.sub = function sub (a, b) { - this._verify2(a, b); - - var res = a.sub(b); - if (res.cmpn(0) < 0) { - res.iadd(this.m); - } - return res._forceRed(this); - }; - - Red.prototype.isub = function isub (a, b) { - this._verify2(a, b); - - var res = a.isub(b); - if (res.cmpn(0) < 0) { - res.iadd(this.m); - } - return res; - }; - - Red.prototype.shl = function shl (a, num) { - this._verify1(a); - return this.imod(a.ushln(num)); - }; - - Red.prototype.imul = function imul (a, b) { - this._verify2(a, b); - return this.imod(a.imul(b)); - }; - - Red.prototype.mul = function mul (a, b) { - this._verify2(a, b); - return this.imod(a.mul(b)); - }; - - Red.prototype.isqr = function isqr (a) { - return this.imul(a, a.clone()); - }; - - Red.prototype.sqr = function sqr (a) { - return this.mul(a, a); - }; - - Red.prototype.sqrt = function sqrt (a) { - if (a.isZero()) return a.clone(); - - var mod3 = this.m.andln(3); - assert(mod3 % 2 === 1); - - // Fast case - if (mod3 === 3) { - var pow = this.m.add(new BN(1)).iushrn(2); - return this.pow(a, pow); - } - - // Tonelli-Shanks algorithm (Totally unoptimized and slow) - // - // Find Q and S, that Q * 2 ^ S = (P - 1) - var q = this.m.subn(1); - var s = 0; - while (!q.isZero() && q.andln(1) === 0) { - s++; - q.iushrn(1); - } - assert(!q.isZero()); - - var one = new BN(1).toRed(this); - var nOne = one.redNeg(); - - // Find quadratic non-residue - // NOTE: Max is such because of generalized Riemann hypothesis. - var lpow = this.m.subn(1).iushrn(1); - var z = this.m.bitLength(); - z = new BN(2 * z * z).toRed(this); - - while (this.pow(z, lpow).cmp(nOne) !== 0) { - z.redIAdd(nOne); - } - - var c = this.pow(z, q); - var r = this.pow(a, q.addn(1).iushrn(1)); - var t = this.pow(a, q); - var m = s; - while (t.cmp(one) !== 0) { - var tmp = t; - for (var i = 0; tmp.cmp(one) !== 0; i++) { - tmp = tmp.redSqr(); - } - assert(i < m); - var b = this.pow(c, new BN(1).iushln(m - i - 1)); - - r = r.redMul(b); - c = b.redSqr(); - t = t.redMul(c); - m = i; - } - - return r; - }; - - Red.prototype.invm = function invm (a) { - var inv = a._invmp(this.m); - if (inv.negative !== 0) { - inv.negative = 0; - return this.imod(inv).redNeg(); - } else { - return this.imod(inv); - } - }; - - Red.prototype.pow = function pow (a, num) { - if (num.isZero()) return new BN(1).toRed(this); - if (num.cmpn(1) === 0) return a.clone(); - - var windowSize = 4; - var wnd = new Array(1 << windowSize); - wnd[0] = new BN(1).toRed(this); - wnd[1] = a; - for (var i = 2; i < wnd.length; i++) { - wnd[i] = this.mul(wnd[i - 1], a); - } - - var res = wnd[0]; - var current = 0; - var currentLen = 0; - var start = num.bitLength() % 26; - if (start === 0) { - start = 26; - } - - for (i = num.length - 1; i >= 0; i--) { - var word = num.words[i]; - for (var j = start - 1; j >= 0; j--) { - var bit = (word >> j) & 1; - if (res !== wnd[0]) { - res = this.sqr(res); - } - - if (bit === 0 && current === 0) { - currentLen = 0; - continue; - } - - current <<= 1; - current |= bit; - currentLen++; - if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; - - res = this.mul(res, wnd[current]); - currentLen = 0; - current = 0; - } - start = 26; - } - - return res; - }; - - Red.prototype.convertTo = function convertTo (num) { - var r = num.umod(this.m); - - return r === num ? r.clone() : r; - }; - - Red.prototype.convertFrom = function convertFrom (num) { - var res = num.clone(); - res.red = null; - return res; - }; - - // - // Montgomery method engine - // - - BN.mont = function mont (num) { - return new Mont(num); - }; - - function Mont (m) { - Red.call(this, m); - - this.shift = this.m.bitLength(); - if (this.shift % 26 !== 0) { - this.shift += 26 - (this.shift % 26); - } - - this.r = new BN(1).iushln(this.shift); - this.r2 = this.imod(this.r.sqr()); - this.rinv = this.r._invmp(this.m); - - this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); - this.minv = this.minv.umod(this.r); - this.minv = this.r.sub(this.minv); - } - inherits(Mont, Red); - - Mont.prototype.convertTo = function convertTo (num) { - return this.imod(num.ushln(this.shift)); - }; - - Mont.prototype.convertFrom = function convertFrom (num) { - var r = this.imod(num.mul(this.rinv)); - r.red = null; - return r; - }; - - Mont.prototype.imul = function imul (a, b) { - if (a.isZero() || b.isZero()) { - a.words[0] = 0; - a.length = 1; - return a; - } - - var t = a.imul(b); - var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); - var u = t.isub(c).iushrn(this.shift); - var res = u; - - if (u.cmp(this.m) >= 0) { - res = u.isub(this.m); - } else if (u.cmpn(0) < 0) { - res = u.iadd(this.m); - } - - return res._forceRed(this); - }; - - Mont.prototype.mul = function mul (a, b) { - if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); - - var t = a.mul(b); - var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); - var u = t.isub(c).iushrn(this.shift); - var res = u; - if (u.cmp(this.m) >= 0) { - res = u.isub(this.m); - } else if (u.cmpn(0) < 0) { - res = u.iadd(this.m); - } - - return res._forceRed(this); - }; - - Mont.prototype.invm = function invm (a) { - // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R - var res = this.imod(a._invmp(this.m).mul(this.r2)); - return res._forceRed(this); - }; -})(typeof module === 'undefined' || module, this); diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/brorand.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/brorand.js deleted file mode 100644 index 0d6a339..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/brorand.js +++ /dev/null @@ -1,52 +0,0 @@ -var r; - -module.exports = function rand(len) { - if (!r) - r = new Rand(null); - - return r.generate(len); -}; - -function Rand(rand) { - this.rand = rand; -} -module.exports.Rand = Rand; - -Rand.prototype.generate = function generate(len) { - return this._rand(len); -}; - -// Emulate crypto API using randy -Rand.prototype._rand = function _rand(n) { - console.log(this); - if (this.rand.getBytes) - return this.rand.getBytes(n); - - var res = new Uint8Array(n); - for (var i = 0; i < res.length; i++) - res[i] = this.rand.getByte(); - return res; -}; - -if (typeof self === 'object') { - Rand.prototype._rand = function _rand(n) { - var list = []; - for (var i = 0; i < n; i++) { - list.push(Math.ceil(Math.random() * 255)) - } - var arr = new Uint8Array(list); - return arr; - }; -} else { - // Node.js or Web worker with no crypto support - try { - var crypto = require('crypto'); - if (typeof crypto.randomBytes !== 'function') - throw new Error('Not supported'); - - Rand.prototype._rand = function _rand(n) { - return crypto.randomBytes(n); - }; - } catch (e) { - } -} diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/buffer.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/buffer.js deleted file mode 100644 index c1719db..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/buffer.js +++ /dev/null @@ -1,1777 +0,0 @@ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -'use strict' - -var base64 = require('base64-js') -var ieee754 = require('ieee754') - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - -var K_MAX_LENGTH = 0x7fffffff -exports.kMaxLength = K_MAX_LENGTH - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && - typeof console.error === 'function') { - console.error( - 'This browser lacks typed array (Uint8Array) support which is required by ' + - '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' - ) -} - -function typedArraySupport () { - // Can typed array instances can be augmented? - try { - var arr = new Uint8Array(1) - arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } - return arr.foo() === 42 - } catch (e) { - return false - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}) - -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}) - -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - var buf = new Uint8Array(length) - buf.__proto__ = Buffer.prototype - return buf -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) - } - return allocUnsafe(arg) - } - return from(arg, encodingOrOffset, length) -} - -// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 -if (typeof Symbol !== 'undefined' && Symbol.species != null && - Buffer[Symbol.species] === Buffer) { - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true, - enumerable: false, - writable: false - }) -} - -Buffer.poolSize = 8192 // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayLike(value) - } - - if (value == null) { - throw TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } - - var valueOf = value.valueOf && value.valueOf() - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) - } - - var b = fromObject(value) - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from( - value[Symbol.toPrimitive]('string'), encodingOrOffset, length - ) - } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) -} - -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Buffer.prototype.__proto__ = Uint8Array.prototype -Buffer.__proto__ = Uint8Array - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } -} - -function alloc (size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) - } - return createBuffer(size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) -} - -function allocUnsafe (size) { - assertSize(size) - return createBuffer(size < 0 ? 0 : checked(size) | 0) -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) -} -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) -} - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - - var length = byteLength(string, encoding) | 0 - var buf = createBuffer(length) - - var actual = buf.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual) - } - - return buf -} - -function fromArrayLike (array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - var buf = createBuffer(length) - for (var i = 0; i < length; i += 1) { - buf[i] = array[i] & 255 - } - return buf -} - -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } - - var buf - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array) - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset) - } else { - buf = new Uint8Array(array, byteOffset, length) - } - - // Return an augmented `Uint8Array` instance - buf.__proto__ = Buffer.prototype - return buf -} - -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - var buf = createBuffer(len) - - if (buf.length === 0) { - return buf - } - - obj.copy(buf, 0, 0, len) - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) - } - return fromArrayLike(obj) - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) - } -} - -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false -} - -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (isInstance(buf, Uint8Array)) { - buf = Buffer.from(buf) - } - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos) - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } - - var len = string.length - var mustMatch = (arguments.length > 2 && arguments[2] === true) - if (!mustMatch && len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - var length = this.length - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.toLocaleString = Buffer.prototype.toString - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() - if (this.length > max) str += ' ... ' - return '' -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength) - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) - - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - var strLen = string.length - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0 - if (isFinite(length)) { - length = length >>> 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; ++i) { - out += toHex(buf[i]) - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf = this.subarray(start, end) - // Return an augmented `Uint8Array` instance - newBuf.__proto__ = Buffer.prototype - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end) - } else if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (var i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ) - } - - return len -} - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - if (val.length === 1) { - var code = val.charCodeAt(0) - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code - } - } - } else if (typeof val === 'number') { - val = val & 255 - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding) - var len = bytes.length - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0] - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/dh.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/dh.js deleted file mode 100644 index 642c216..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/dh.js +++ /dev/null @@ -1,165 +0,0 @@ -var BN = require('bn'); -var MillerRabin = require('miller-rabin'); -var millerRabin = new MillerRabin(); -var TWENTYFOUR = new BN(24); -var ELEVEN = new BN(11); -var TEN = new BN(10); -var THREE = new BN(3); -var SEVEN = new BN(7); -var Buffer = require('safe-buffer').Buffer -var primes = require('./generatePrime'); -var randomBytes = require('randombytes'); -module.exports = DH; - -function setPublicKey(pub, enc) { - enc = enc || 'utf8'; - if (!Buffer.isBuffer(pub)) { - pub = new Buffer(pub, enc); - } - this._pub = new BN(pub); - return this; -} - -function setPrivateKey(priv, enc) { - enc = enc || 'utf8'; - if (!Buffer.isBuffer(priv)) { - priv = new Buffer(priv, enc); - } - this._priv = new BN(priv); - return this; -} - -var primeCache = {}; -function checkPrime(prime, generator) { - var gen = generator.toString('hex'); - var hex = [gen, prime.toString(16)].join('_'); - if (hex in primeCache) { - return primeCache[hex]; - } - var error = 0; - - if (prime.isEven() || - !primes.simpleSieve || - !primes.fermatTest(prime) || - !millerRabin.test(prime)) { - //not a prime so +1 - error += 1; - - if (gen === '02' || gen === '05') { - // we'd be able to check the generator - // it would fail so +8 - error += 8; - } else { - //we wouldn't be able to test the generator - // so +4 - error += 4; - } - primeCache[hex] = error; - return error; - } - if (!millerRabin.test(prime.shrn(1))) { - //not a safe prime - error += 2; - } - var rem; - switch (gen) { - case '02': - if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) { - // unsuidable generator - error += 8; - } - break; - case '05': - rem = prime.mod(TEN); - if (rem.cmp(THREE) && rem.cmp(SEVEN)) { - // prime mod 10 needs to equal 3 or 7 - error += 8; - } - break; - default: - error += 4; - } - primeCache[hex] = error; - return error; -} - -function DH(prime, generator, malleable) { - this.setGenerator(generator); - this.__prime = new BN(prime); - this._prime = BN.mont(this.__prime); - this._primeLen = 128; - this._pub = undefined; - this._priv = undefined; - this._primeCode = undefined; - if (malleable) { - this.setPublicKey = setPublicKey; - this.setPrivateKey = setPrivateKey; - } else { - this._primeCode = 8; - } -} -Object.defineProperty(DH.prototype, 'verifyError', { - enumerable: true, - get: function () { - if (typeof this._primeCode !== 'number') { - this._primeCode = checkPrime(this.__prime, this.__gen); - } - return this._primeCode; - } -}); -DH.prototype.generateKeys = function () { - if (!this._priv) { - this._priv = new BN(randomBytes(this._primeLen)); - } - this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed(); - return this.getPublicKey(); -}; - -DH.prototype.computeSecret = function (other) { - other = new BN(other); - other = other.toRed(this._prime); - var secret = other.redPow(this._priv).fromRed(); - var out = new Buffer(secret.toArray()); - var prime = this.getPrime(); - if (out.length < prime.length) { - var front = new Buffer(prime.length - out.length); - front.fill(0); - out = Buffer.concat([front, out]); - } - return out; -}; - -DH.prototype.getPublicKey = function getPublicKey(enc) { - return formatReturnValue(this._pub, enc); -}; - -DH.prototype.getPrivateKey = function getPrivateKey(enc) { - return formatReturnValue(this._priv, enc); -}; - -DH.prototype.getPrime = function (enc) { - return formatReturnValue(this.__prime, enc); -}; - -DH.prototype.getGenerator = function (enc) { - return formatReturnValue(this._gen, enc); -}; - -DH.prototype.setGenerator = function (gen, enc) { - enc = enc || 'utf8'; - if (!Buffer.isBuffer(gen)) { - gen = new Buffer(gen, enc); - } - this.__gen = gen; - this._gen = new BN(gen); - return this; -}; - -function formatReturnValue(bn, enc) { - var buf = new Buffer(bn.toArray()); - if (!enc) { - return buf; - } else { - return buf.toString(enc); - } -} diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/generatePrime.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/generatePrime.js deleted file mode 100644 index 32e053c..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/generatePrime.js +++ /dev/null @@ -1,105 +0,0 @@ -var randomBytes = require('randombytes'); -module.exports = findPrime; -findPrime.simpleSieve = simpleSieve; -findPrime.fermatTest = fermatTest; -var BN = require('bn.js'); -var TWENTYFOUR = new BN(24); -var MillerRabin = require('miller-rabin'); -var millerRabin = new MillerRabin(); -var ONE = new BN(1); -var TWO = new BN(2); -var FIVE = new BN(5); -var SIXTEEN = new BN(16); -var EIGHT = new BN(8); -var TEN = new BN(10); -var THREE = new BN(3); -var SEVEN = new BN(7); -var ELEVEN = new BN(11); -var FOUR = new BN(4); -var TWELVE = new BN(12); -var primes = null; - -function _getPrimes() { - if (primes !== null) - return primes; - - var limit = 0x100000; - var res = []; - res[0] = 2; - for (var i = 1, k = 3; k < limit; k += 2) { - var sqrt = Math.ceil(Math.sqrt(k)); - for (var j = 0; j < i && res[j] <= sqrt; j++) - if (k % res[j] === 0) - break; - - if (i !== j && res[j] <= sqrt) - continue; - - res[i++] = k; - } - primes = res; - return res; -} - -function simpleSieve(p) { - var primes = _getPrimes(); - - for (var i = 0; i < primes.length; i++) - if (p.modn(primes[i]) === 0) { - if (p.cmpn(primes[i]) === 0) { - return true; - } else { - return false; - } - } - - return true; -} - -function fermatTest(p) { - var red = BN.mont(p); - return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0; -} - -function findPrime(bits, gen) { - if (bits < 16) { - // this is what openssl does - if (gen === 2 || gen === 5) { - return new BN([0x8c, 0x7b]); - } else { - return new BN([0x8c, 0x27]); - } - } - gen = new BN(gen); - - var num, n2; - - while (true) { - num = new BN(randomBytes(Math.ceil(bits / 8))); - while (num.bitLength() > bits) { - num.ishrn(1); - } - if (num.isEven()) { - num.iadd(ONE); - } - if (!num.testn(1)) { - num.iadd(TWO); - } - if (!gen.cmp(TWO)) { - while (num.mod(TWENTYFOUR).cmp(ELEVEN)) { - num.iadd(FOUR); - } - } else if (!gen.cmp(FIVE)) { - while (num.mod(TEN).cmp(THREE)) { - num.iadd(FOUR); - } - } - n2 = num.shrn(1); - if (simpleSieve(n2) && simpleSieve(num) && - fermatTest(n2) && fermatTest(num) && - millerRabin.test(n2) && millerRabin.test(num)) { - return num; - } - } - -} diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/ieee754.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/ieee754.js deleted file mode 100644 index e87e6ff..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/ieee754.js +++ /dev/null @@ -1,84 +0,0 @@ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] - - i += d - - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} - -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = (nBytes * 8) - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 - - value = Math.abs(value) - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 - } - - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = ((value * c) - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128 -} diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/miller-rabin.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/miller-rabin.js deleted file mode 100644 index 60d2a8e..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/miller-rabin.js +++ /dev/null @@ -1,115 +0,0 @@ -var bn = require('bn.js'); -var brorand = require('brorand'); - -function MillerRabin(rand) { - this.rand = rand || new brorand.Rand(); -} -module.exports = MillerRabin; - -MillerRabin.create = function create(rand) { - return new MillerRabin(rand); -}; - -MillerRabin.prototype._randbelow = function _randbelow(n) { - var len = n.bitLength(); - var min_bytes = Math.ceil(len / 8); - - // Generage random bytes until a number less than n is found. - // This ensures that 0..n-1 have an equal probability of being selected. - do - var a = new bn(this.rand.generate(min_bytes)); - while (a.cmp(n) >= 0); - - return a; -}; - -MillerRabin.prototype._randrange = function _randrange(start, stop) { - // Generate a random number greater than or equal to start and less than stop. - var size = stop.sub(start); - return start.add(this._randbelow(size)); -}; - -MillerRabin.prototype.test = function test(n, k, cb) { - var len = n.bitLength(); - var red = bn.mont(n); - var rone = new bn(1).toRed(red); - - if (!k) - k = Math.max(1, (len / 48) | 0); - - // Find d and s, (n - 1) = (2 ^ s) * d; - var n1 = n.subn(1); - for (var s = 0; !n1.testn(s); s++) {} - var d = n.shrn(s); - - var rn1 = n1.toRed(red); - - var prime = true; - for (; k > 0; k--) { - var a = this._randrange(new bn(2), n1); - if (cb) - cb(a); - - var x = a.toRed(red).redPow(d); - if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) - continue; - - for (var i = 1; i < s; i++) { - x = x.redSqr(); - - if (x.cmp(rone) === 0) - return false; - if (x.cmp(rn1) === 0) - break; - } - - if (i === s) - return false; - } - - return prime; -}; - -MillerRabin.prototype.getDivisor = function getDivisor(n, k) { - var len = n.bitLength(); - var red = bn.mont(n); - var rone = new bn(1).toRed(red); - - if (!k) - k = Math.max(1, (len / 48) | 0); - - // Find d and s, (n - 1) = (2 ^ s) * d; - var n1 = n.subn(1); - for (var s = 0; !n1.testn(s); s++) {} - var d = n.shrn(s); - - var rn1 = n1.toRed(red); - - for (; k > 0; k--) { - var a = this._randrange(new bn(2), n1); - - var g = n.gcd(a); - if (g.cmpn(1) !== 0) - return g; - - var x = a.toRed(red).redPow(d); - if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) - continue; - - for (var i = 1; i < s; i++) { - x = x.redSqr(); - - if (x.cmp(rone) === 0) - return x.fromRed().subn(1).gcd(n); - if (x.cmp(rn1) === 0) - break; - } - - if (i === s) { - x = x.redSqr(); - return x.fromRed().subn(1).gcd(n); - } - } - - return false; -}; diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/randombytes.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/randombytes.js deleted file mode 100644 index fef72d7..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/randombytes.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' - -function oldBrowser() { - throw new Error('Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11') -} - -var Buffer = require('safe-buffer').Buffer - -module.exports = randomBytes - -function randomBytes(size, cb) { - // phantomjs needs to throw - if (size > 65536) throw new Error('requested too many random bytes') - // in case browserify isn't using the Uint8Array version - var arr = []; - for (var i = 0; i < size; i++) { - arr.push(Math.ceil(Math.random() * 255)) - } - var rawBytes = new Uint8Array(arr) - - // XXX: phantomjs doesn't like a buffer being passed here - var bytes = Buffer.from(rawBytes.buffer) - - if (typeof cb === 'function') { - return process.nextTick(function () { - cb(null, bytes) - }) - } - - return bytes -} diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/safe-buffer.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/safe-buffer.js deleted file mode 100644 index 22438da..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/lib/safe-buffer.js +++ /dev/null @@ -1,62 +0,0 @@ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer') -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/md5.min.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/md5.min.js deleted file mode 100644 index 7418ff8..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/crypto/md5.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * [js-md5]{@link https://github.com/emn178/js-md5} - * - * @namespace md5 - * @version 0.7.3 - * @author Chen, Yi-Cyuan [emn178@gmail.com] - * @copyright Chen, Yi-Cyuan 2014-2017 - * @license MIT - */ -!function(){"use strict";function t(t){if(t)d[0]=d[16]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=0,this.blocks=d,this.buffer8=l;else if(a){var r=new ArrayBuffer(68);this.buffer8=new Uint8Array(r),this.blocks=new Uint32Array(r)}else this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h0=this.h1=this.h2=this.h3=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}var r="input is invalid type",e="object"==typeof window,i=e?window:{};i.JS_MD5_NO_WINDOW&&(e=!1);var s=!e&&"object"==typeof self,h=!i.JS_MD5_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;h?i=global:s&&(i=self);var f=!i.JS_MD5_NO_COMMON_JS&&"object"==typeof module&&module.exports,o="function"==typeof define&&define.amd,a=!i.JS_MD5_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,n="0123456789abcdef".split(""),u=[128,32768,8388608,-2147483648],y=[0,8,16,24],c=["hex","array","digest","buffer","arrayBuffer","base64"],p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),d=[],l;if(a){var A=new ArrayBuffer(68);l=new Uint8Array(A),d=new Uint32Array(A)}!i.JS_MD5_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!a||!i.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var b=function(r){return function(e){return new t(!0).update(e)[r]()}},v=function(){var r=b("hex");h&&(r=w(r)),r.create=function(){return new t},r.update=function(t){return r.create().update(t)};for(var e=0;e>2]|=t[f]<>6,u[h++]=128|63&s):s<55296||s>=57344?(u[h++]=224|s>>12,u[h++]=128|s>>6&63,u[h++]=128|63&s):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++f)),u[h++]=240|s>>18,u[h++]=128|s>>12&63,u[h++]=128|s>>6&63,u[h++]=128|63&s);else for(h=this.start;f>2]|=s<>2]|=(192|s>>6)<>2]|=(128|63&s)<=57344?(n[h>>2]|=(224|s>>12)<>2]|=(128|s>>6&63)<>2]|=(128|63&s)<>2]|=(240|s>>18)<>2]|=(128|s>>12&63)<>2]|=(128|s>>6&63)<>2]|=(128|63&s)<=64?(this.start=h-64,this.hash(),this.hashed=!0):this.start=h}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},t.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,r=this.lastByteIndex;t[r>>2]|=u[3&r],r>=56&&(this.hashed||this.hash(),t[0]=t[16],t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.bytes<<3,t[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},t.prototype.hash=function(){var t,r,e,i,s,h,f=this.blocks;this.first?r=((r=((t=((t=f[0]-680876937)<<7|t>>>25)-271733879<<0)^(e=((e=(-271733879^(i=((i=(-1732584194^2004318071&t)+f[1]-117830708)<<12|i>>>20)+t<<0)&(-271733879^t))+f[2]-1126478375)<<17|e>>>15)+i<<0)&(i^t))+f[3]-1316259209)<<22|r>>>10)+e<<0:(t=this.h0,r=this.h1,e=this.h2,r=((r+=((t=((t+=((i=this.h3)^r&(e^i))+f[0]-680876936)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[1]-389564586)<<12|i>>>20)+t<<0)&(t^r))+f[2]+606105819)<<17|e>>>15)+i<<0)&(i^t))+f[3]-1044525330)<<22|r>>>10)+e<<0),r=((r+=((t=((t+=(i^r&(e^i))+f[4]-176418897)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[5]+1200080426)<<12|i>>>20)+t<<0)&(t^r))+f[6]-1473231341)<<17|e>>>15)+i<<0)&(i^t))+f[7]-45705983)<<22|r>>>10)+e<<0,r=((r+=((t=((t+=(i^r&(e^i))+f[8]+1770035416)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[9]-1958414417)<<12|i>>>20)+t<<0)&(t^r))+f[10]-42063)<<17|e>>>15)+i<<0)&(i^t))+f[11]-1990404162)<<22|r>>>10)+e<<0,r=((r+=((t=((t+=(i^r&(e^i))+f[12]+1804603682)<<7|t>>>25)+r<<0)^(e=((e+=(r^(i=((i+=(e^t&(r^e))+f[13]-40341101)<<12|i>>>20)+t<<0)&(t^r))+f[14]-1502002290)<<17|e>>>15)+i<<0)&(i^t))+f[15]+1236535329)<<22|r>>>10)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[1]-165796510)<<5|t>>>27)+r<<0)^r))+f[6]-1069501632)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[11]+643717713)<<14|e>>>18)+i<<0)^i))+f[0]-373897302)<<20|r>>>12)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[5]-701558691)<<5|t>>>27)+r<<0)^r))+f[10]+38016083)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[15]-660478335)<<14|e>>>18)+i<<0)^i))+f[4]-405537848)<<20|r>>>12)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[9]+568446438)<<5|t>>>27)+r<<0)^r))+f[14]-1019803690)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[3]-187363961)<<14|e>>>18)+i<<0)^i))+f[8]+1163531501)<<20|r>>>12)+e<<0,r=((r+=((i=((i+=(r^e&((t=((t+=(e^i&(r^e))+f[13]-1444681467)<<5|t>>>27)+r<<0)^r))+f[2]-51403784)<<9|i>>>23)+t<<0)^t&((e=((e+=(t^r&(i^t))+f[7]+1735328473)<<14|e>>>18)+i<<0)^i))+f[12]-1926607734)<<20|r>>>12)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[5]-378558)<<4|t>>>28)+r<<0))+f[8]-2022574463)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[11]+1839030562)<<16|e>>>16)+i<<0))+f[14]-35309556)<<23|r>>>9)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[1]-1530992060)<<4|t>>>28)+r<<0))+f[4]+1272893353)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[7]-155497632)<<16|e>>>16)+i<<0))+f[10]-1094730640)<<23|r>>>9)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[13]+681279174)<<4|t>>>28)+r<<0))+f[0]-358537222)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[3]-722521979)<<16|e>>>16)+i<<0))+f[6]+76029189)<<23|r>>>9)+e<<0,r=((r+=((h=(i=((i+=((s=r^e)^(t=((t+=(s^i)+f[9]-640364487)<<4|t>>>28)+r<<0))+f[12]-421815835)<<11|i>>>21)+t<<0)^t)^(e=((e+=(h^r)+f[15]+530742520)<<16|e>>>16)+i<<0))+f[2]-995338651)<<23|r>>>9)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[0]-198630844)<<6|t>>>26)+r<<0)|~e))+f[7]+1126891415)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[14]-1416354905)<<15|e>>>17)+i<<0)|~t))+f[5]-57434055)<<21|r>>>11)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[12]+1700485571)<<6|t>>>26)+r<<0)|~e))+f[3]-1894986606)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[10]-1051523)<<15|e>>>17)+i<<0)|~t))+f[1]-2054922799)<<21|r>>>11)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[8]+1873313359)<<6|t>>>26)+r<<0)|~e))+f[15]-30611744)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[6]-1560198380)<<15|e>>>17)+i<<0)|~t))+f[13]+1309151649)<<21|r>>>11)+e<<0,r=((r+=((i=((i+=(r^((t=((t+=(e^(r|~i))+f[4]-145523070)<<6|t>>>26)+r<<0)|~e))+f[11]-1120210379)<<10|i>>>22)+t<<0)^((e=((e+=(t^(i|~r))+f[2]+718787259)<<15|e>>>17)+i<<0)|~t))+f[9]-343485551)<<21|r>>>11)+e<<0,this.first?(this.h0=t+1732584193<<0,this.h1=r-271733879<<0,this.h2=e-1732584194<<0,this.h3=i+271733878<<0,this.first=!1):(this.h0=this.h0+t<<0,this.h1=this.h1+r<<0,this.h2=this.h2+e<<0,this.h3=this.h3+i<<0)},t.prototype.hex=function(){this.finalize();var t=this.h0,r=this.h1,e=this.h2,i=this.h3;return n[t>>4&15]+n[15&t]+n[t>>12&15]+n[t>>8&15]+n[t>>20&15]+n[t>>16&15]+n[t>>28&15]+n[t>>24&15]+n[r>>4&15]+n[15&r]+n[r>>12&15]+n[r>>8&15]+n[r>>20&15]+n[r>>16&15]+n[r>>28&15]+n[r>>24&15]+n[e>>4&15]+n[15&e]+n[e>>12&15]+n[e>>8&15]+n[e>>20&15]+n[e>>16&15]+n[e>>28&15]+n[e>>24&15]+n[i>>4&15]+n[15&i]+n[i>>12&15]+n[i>>8&15]+n[i>>20&15]+n[i>>16&15]+n[i>>28&15]+n[i>>24&15]},t.prototype.toString=t.prototype.hex,t.prototype.digest=function(){this.finalize();var t=this.h0,r=this.h1,e=this.h2,i=this.h3;return[255&t,t>>8&255,t>>16&255,t>>24&255,255&r,r>>8&255,r>>16&255,r>>24&255,255&e,e>>8&255,e>>16&255,e>>24&255,255&i,i>>8&255,i>>16&255,i>>24&255]},t.prototype.array=t.prototype.digest,t.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(16),r=new Uint32Array(t);return r[0]=this.h0,r[1]=this.h1,r[2]=this.h2,r[3]=this.h3,t},t.prototype.buffer=t.prototype.arrayBuffer,t.prototype.base64=function(){for(var t,r,e,i="",s=this.array(),h=0;h<15;)t=s[h++],r=s[h++],e=s[h++],i+=p[t>>>2]+p[63&(t<<4|r>>>4)]+p[63&(r<<2|e>>>6)]+p[63&e];return t=s[h],i+=p[t>>>2]+p[t<<4&63]+"=="};var _=v();f?module.exports=_:(i.md5=_,o&&define(function(){return _}))}(); \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/bluetooth-way.png b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/bluetooth-way.png deleted file mode 100644 index 05fa94cdd518280949f2a3e73946aae455cdfb5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8179 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 V^3l2y3!znfjDfB(u?%*I`XBP1u+0Df diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/bluetooth.png b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/bluetooth.png deleted file mode 100644 index 16a971112b077475c6611b407433ab3a76ec8153..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5112 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 OkL2v&hTp&fME?UT>USjo diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/failure.png b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/failure.png deleted file mode 100644 index 2a3a87eccf424b73d197328cadbdd2980d5a3bd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36457 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 diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/network.png b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/network.png deleted file mode 100644 index 7366de5ee0b98032b985afbb17bd0aa4e05691d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47485 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

ro=Wt%oR>myWJ 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⁡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

wS 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 z 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%0A4in2qWC}kG)fpuKgsL{k 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 Lewi#6aP9vASLl5J diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/wifi-lock.png b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/wifi-lock.png deleted file mode 100644 index d41a16ecfbe6f7d06ad85847a5cb5b321c2923d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15041 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 diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/wifi-way.png b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/wifi-way.png deleted file mode 100644 index 02050b4cac71046fed5231a88bed230096eface4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16447 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 diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/wifi.png b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/images/wifi.png deleted file mode 100644 index beee61a705aa5d6154d228c579b67a56c53d1e01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13346 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 PlK_Pesxq}wreXgFBfX4t diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/package-lock.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/package-lock.json deleted file mode 100644 index 4c28627..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/package-lock.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "ESP-Config-WeChat", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "ESP-Config-WeChat", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "crypto-js": "^4.0.0" - } - }, - "node_modules/crypto-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz", - "integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==" - } - }, - "dependencies": { - "crypto-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz", - "integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==" - } - } -} diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/package.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/package.json deleted file mode 100644 index 92722a1..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "ESP-Config-WeChat", - "version": "1.0.0", - "description": "", - "main": "app.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/EspressifApps/ESP-Config-WeChat.git" - }, - "keywords": [], - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/EspressifApps/ESP-Config-WeChat/issues" - }, - "homepage": "https://github.com/EspressifApps/ESP-Config-WeChat#readme", - "dependencies": { - "crypto-js": "^4.0.0" - } -} diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.js deleted file mode 100644 index 014bc55..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.js +++ /dev/null @@ -1,388 +0,0 @@ -//获取应用实例 -const app = getApp() -const util = require('../../utils/util.js'); - -const timeOut = 20;//超时时间 -var timeId = ""; -Page({ - data: { - failure: false, - value: 0, - desc: "Device connecting...", - isChecksum: false, - isEncrypt: false, - flagEnd: false, - defaultData: 1, - ssidType: 2, - passwordType: 3, - meshIdType: 3, - deviceId: "", - ssid: "", - uuid: "", - serviceId: "", - password: "", - meshId: "", - processList: [], - result: [], - }, - blueConnect: function (event) { - var self = this; - self.setProcess(0, util.descSucList[0]); - self.setProcess(10, util.descSucList[1]); - self.setProcess(20, util.descSucList[2]); - self.setProcess(35, util.descSucList[3]); - self.openNotify(self.data.deviceId, self.data.serviceId, self.data.uuid); - }, - // 告知设备数据开始写入 - writeDeviceStart: function (deviceId, serviceId, characteristicId, data) { - var self = this, obj = {}, frameControl = 0; - self.setProcess(40, util.descSucList[4]); - app.data.sequenceControl = parseInt(app.data.sequenceControl) + 1; - if (!util._isEmpty(data)) { - obj = util.isSubcontractor(data, self.data.isChecksum, app.data.sequenceControl, self.data.isEncrypt); - frameControl = util.getFrameCTRLValue(self.data.isEncrypt, self.data.isChecksum, util.DIRECTION_OUTPUT, false, obj.flag); - } else { - obj = util.isSubcontractor([self.data.defaultData], self.data.isChecksum, app.data.sequenceControl, true); - frameControl = util.getFrameCTRLValue(self.data.isEncrypt, self.data.isChecksum, util.DIRECTION_OUTPUT, false, obj.flag); - } - // var defaultData = util.encrypt(app.data.sequenceControl, obj.lenData, true); - var value = util.writeData(util.PACKAGE_CONTROL_VALUE, util.SUBTYPE_WIFI_MODEl, frameControl, app.data.sequenceControl, obj.len, obj.lenData); - var typedArray = new Uint8Array(value) - wx.writeBLECharacteristicValue({ - deviceId: deviceId, - serviceId: serviceId, - characteristicId: characteristicId, - value: typedArray.buffer, - success: function (res) { - if (obj.flag) { - self.writeDeviceStart(deviceId, serviceId, characteristicId, obj.laveData); - } else { - self.setProcess(60, util.descSucList[5]); - self.writeRouterSsid(deviceId, serviceId, characteristicId, null); - } - }, - fail: function (res) { - self.setFailProcess(true, util.descFailList[3]); - } - }) - }, - //写入路由ssid - writeRouterSsid: function (deviceId, serviceId, characteristicId, data) { - var self = this, obj = {}, frameControl = 0; - app.data.sequenceControl = parseInt(app.data.sequenceControl) + 1; - if (!util._isEmpty(data)) { - obj = util.isSubcontractor(data, self.data.isChecksum, app.data.sequenceControl, self.data.isEncrypt); - frameControl = util.getFrameCTRLValue(self.data.isEncrypt, self.data.isChecksum, util.DIRECTION_OUTPUT, false, obj.flag); - } else { - var ssidData = self.getCharCodeat(self.data.ssid); - obj = util.isSubcontractor(ssidData, self.data.isChecksum, app.data.sequenceControl, self.data.isEncrypt); - frameControl = util.getFrameCTRLValue(self.data.isEncrypt, self.data.isChecksum, util.DIRECTION_OUTPUT, false, obj.flag); - } - // var defaultData = util.encrypt(app.data.sequenceControl, obj.lenData, true); - var value = util.writeData(util.PACKAGE_VALUE, util.SUBTYPE_SET_SSID, frameControl, app.data.sequenceControl, obj.len, obj.lenData); - var typedArray = new Uint8Array(value) - wx.writeBLECharacteristicValue({ - deviceId: deviceId, - serviceId: serviceId, - characteristicId: characteristicId, - value: typedArray.buffer, - success: function (res) { - if (obj.flag) { - self.writeRouterSsid(deviceId, serviceId, characteristicId, obj.laveData); - } else { - self.writeDevicePwd(deviceId, serviceId, characteristicId, null); - } - }, - fail: function (res) { - self.setFailProcess(true, util.descFailList[4]); - } - }) - }, - //写入路由密码 - writeDevicePwd: function (deviceId, serviceId, characteristicId, data) { - var self = this, obj = {}, frameControl = 0; - app.data.sequenceControl = parseInt(app.data.sequenceControl) + 1; - if (!util._isEmpty(data)) { - obj = util.isSubcontractor(data, self.data.isChecksum, app.data.sequenceControl, self.data.isEncrypt); - frameControl = util.getFrameCTRLValue(self.data.isEncrypt, self.data.isChecksum, util.DIRECTION_OUTPUT, false, obj.flag); - } else { - var pwdData = self.getCharCodeat(self.data.password); - obj = util.isSubcontractor(pwdData, self.data.isChecksum, app.data.sequenceControl, self.data.isEncrypt); - frameControl = util.getFrameCTRLValue(self.data.isEncrypt, self.data.isChecksum, util.DIRECTION_OUTPUT, false, obj.flag); - } - // var defaultData = util.encrypt(app.data.sequenceControl, obj.lenData, true); - var value = util.writeData(util.PACKAGE_VALUE, util.SUBTYPE_SET_PWD, frameControl, app.data.sequenceControl, obj.len, obj.lenData); - var typedArray = new Uint8Array(value) - wx.writeBLECharacteristicValue({ - deviceId: deviceId, - serviceId: serviceId, - characteristicId: characteristicId, - value: typedArray.buffer, - success: function (res) { - if (obj.flag) { - self.writeDevicePwd(deviceId, serviceId, characteristicId, obj.laveData); - } else { - self.writeDeviceEnd(deviceId, serviceId, characteristicId); - } - }, - fail: function (res) { - self.setFailProcess(true, util.descFailList[4]); - } - }) - }, - //告知设备写入结束 - writeDeviceEnd: function (deviceId, serviceId, characteristicId) { - var self = this; - app.data.sequenceControl = parseInt(app.data.sequenceControl) + 1; - var frameControl = util.getFrameCTRLValue(self.data.isEncrypt, false, util.DIRECTION_OUTPUT, false, false); - var value = util.writeData(self.data.PACKAGE_CONTROL_VALUE, util.SUBTYPE_END, frameControl, app.data.sequenceControl, 0, null); - var typedArray = new Uint8Array(value) - wx.writeBLECharacteristicValue({ - deviceId: deviceId, - serviceId: serviceId, - characteristicId: characteristicId, - value: typedArray.buffer, - success: function (res) { - self.onTimeout(0); - }, - fail: function (res) { - self.setFailProcess(true, util.descFailList[4]); - } - }) - }, - //连接超时 - onTimeout: function(num) { - const self = this; - timeId = setInterval(function() { - if (num < timeOut) { - num++; - } else { - clearInterval(timeId); - self.setFailProcess(true, util.descFailList[4]); - } - }, 1000) - }, - //监听通知 - onNotify: function () { - var self = this; - wx.onBLECharacteristicValueChange(function (res) { - self.getResultType(util.ab2hex(res.value)); - }) - }, - //启用通知 - openNotify: function (deviceId, serviceId, characteristicId) { - var self = this; - wx.notifyBLECharacteristicValueChange({ - state: true, // 启用 notify 功能 - deviceId: deviceId, - serviceId: serviceId, - characteristicId: app.data.characteristic_read_uuid, - success: function (res) { - self.writeDeviceStart(deviceId, serviceId, characteristicId); - self.onNotify(); - }, - fail: function (res) { - } - }) - }, - getSsids: function (str) { - var list = [], - strs = str.split(":"); - for (var i = 0; i < strs.length; i++) { - list.push(parseInt(strs[i], 16)); - } - return list; - }, - getCharCodeat: function (str) { - var list = []; - for (var i = 0; i < str.length; i++) { - list.push(str.charCodeAt(i)); - } - return list; - }, - setProcess: function(value, desc) { - var self = this, list = []; - list = self.data.processList; - list.push(desc); - self.setData({ - value: value, - processList: list - }); - if (value == 100) { - self.closeConnect(); - self.setData({ - desc: util.descSucList[6] - }); - clearInterval(timeId); - app.data.sequenceControl = 0; - setTimeout(function () { - wx.reLaunch({ - url: '/pages/index/index' - }) - }, 3000) - } - }, - setFailProcess: function (flag, desc) { - var self = this, list = []; - list = self.data.processList; - list.push(desc); - self.setFailBg(); - self.setData({ - failure: flag, - processList: list - }); - }, - getResultType: function(list) { - var self = this; - var result = self.data.result; - console.log(list) - if (list.length < 4) { - self.setFailProcess(true, util.descFailList[4]); - return false; - } - var val = parseInt(list[0], 16), - type = val & 3, - subType = val >> 2; - console.log(type, subType, self.data.flagEnd) - if (type != parseInt(util.PACKAGE_VALUE)) { - self.setFailProcess(true, util.descFailList[4]); - return false; - } - var sequenceNum = parseInt(list[2], 16); - if (sequenceNum - app.data.sequenceNumber != 1) { - self.setFailProcess(true, util.descFailList[4]); - return false; - } - app.data.sequenceNumber = sequenceNum; - if (app.data.sequenceNumber == 255) { - app.data.sequenceNumber = -1 - } - var dataLength = parseInt(list[3], 16); - if (dataLength == 0) { - self.setFailProcess(true, util.descFailList[4]); - return false; - } - var fragNum = util.hexToBinArray(list[1]); - list = util.isEncrypt(self, fragNum, list); - result = result.concat(list); - self.setData({ - result: result, - }) - if (self.data.flagEnd) { - self.setData({ - flagEnd: false, - }) - if (type == 1) { - if (subType == 15) { - for (var i = 0; i <= result.length; i++) { - var num = parseInt(result[i], 16) + ""; - if (i == 0) { - self.setProcess(85, "Connected: " + util.successList[num]); - } else if (i == 1) { - if (num == 0) { - self.setProcess(100, util.descSucList[6]); - } - } - } - } else if (subType == 18) { - for (var i = 0; i <= result.length; i++) { - var num = parseInt(result[i], 16) + ""; - if (i == 0) { - self.setProcess(85, util.successList[num]); - } else if (i == 1) { - self.setFailProcess(true, util.failList[num]); - } - } - } else { - self.setFailProcess(true, util.descFailList[4]) - } - } else { - self.setFailProcess(true, util.descFailList[4]) - } - } - - - }, - closeConnect: function () { - var self = this; - wx.closeBLEConnection({ - deviceId: self.data.deviceId, - success: function (res) { - } - }) - wx.closeBluetoothAdapter({ - success: function() { - } - }); - }, - //设置配网失败背景色 - setFailBg: function() { - wx.setNavigationBarColor({ - frontColor: "#ffffff", - backgroundColor: '#737d89', - }) - }, - //设置配网成功背景色 - setSucBg: function() { - wx.setNavigationBarColor({ - frontColor: "#ffffff", - backgroundColor: '#4d9efb', - }) - }, - onLoad: function (options) { - var self = this; - self.setSucBg(); - wx.setNavigationBarTitle({ - title: '配网' - }); - self.setData({ - deviceId: options.deviceId, - ssid: unescape(options.ssid), - password: unescape(options.password), - meshId: options.bssid, - uuid: options.uuid, - serviceId: options.serviceId, - }) - self.blueConnect(); - }, - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, - -}) diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.json deleted file mode 100644 index 9e26dfe..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.wxml b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.wxml deleted file mode 100644 index e2378a8..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.wxml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - {{value}}% - {{desc}} - - - - - - - - - - ! - {{desc}} - - - - - - {{item}} - {{vConsoleV}} - - diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.wxss b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.wxss deleted file mode 100644 index f9ac275..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueConnect/blueConnect.wxss +++ /dev/null @@ -1,68 +0,0 @@ -/* pages/blueConnect/blueConnect.wxss */ -.container { - padding: 0; -} -.schedule { - background: #4d9efb; - height: 46vh; - width: 100%; - padding: 50rpx; -} -.schedule-result { - position: relative; - display: flex; - justify-content: center; - align-items: center; - border-radius: 100%; - background: transparent; - height: 55vw; - width: 55vw; - margin: 0 auto; - color: #fff; -} -.schedule-img { - height: 55vw; - width: 55vw; -} -.fail{ - background: #737d89; -} -.desc-wrapper { - position: absolute; -} -.text-value { - text-align: center; - font-size: 20px; -} -.text-desc { - font-size: 14px; -} -.text-samll { - font-size: 16px; -} -.text-sigh { - height: 80rpx; - width: 80rpx; - background: #fff; - border-radius: 100%; - display: flex; - justify-content: center; - align-items: center; - font-size: 20px; - font-weight: bold; - color: #737d89; - margin: 0 auto 10px; -} -.process-wrapper { - display: flex; - flex-direction: column; - width: 100%; - text-align: left; - margin-top: 20px; - padding-left: 30px; - font-size: 14px; - color: #999; -} -.text-process { - margin: 3px 0; -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.js deleted file mode 100644 index 5d989f6..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.js +++ /dev/null @@ -1,105 +0,0 @@ - -//获取应用实例 -const app = getApp(); -const util = require('../../utils/util.js'); -Page({ - data: { - deviceList: [], - deviceId: "", - }, - bindViewConnect: function (event) { - var self = this, - deviceId = event.currentTarget.dataset.value; - self.setData({ - deviceId: deviceId - }); - wx.navigateTo({ - url: '/pages/blueWifi/blueWifi?deviceId=' + deviceId, - }) - }, - - getBluDevice: function () { - var self = this; - wx.getBluetoothDevices({ - success: function (res) { - var list = util.filterDevice(res.devices, "name"); - if (list.length > 0) { - wx.hideLoading(); - } - self.setData({ - deviceList: list - }) - } - }) - wx.onBluetoothDeviceFound(function (res) { - console.log(res.devices[0].name); - var list = util.filterDevice(res.devices, "name"); - if (list.length > 0) { - wx.hideLoading(); - } - self.setData({ - deviceList: self.data.deviceList.concat(list) - }) - - }) - }, - - onLoad: function () { - var self = this; - wx.setNavigationBarTitle({ - title: 'BluFi扫描' - }); - wx.showLoading({ - title: '设备扫描中...', - }) - self.getBluDevice(); - }, - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - var self = this, - deviceId = self.data.deviceId; - if (!util._isEmpty(deviceId)) { - wx.closeBLEConnection({ - deviceId: deviceId, - }) - } - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, - -}) diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.json deleted file mode 100644 index 9e26dfe..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.wxml b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.wxml deleted file mode 100644 index 4aa7d13..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.wxml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - {{item.name}} - Rssi: {{item.RSSI}} - deviceId: {{item.deviceId}} - - - diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.wxss b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.wxss deleted file mode 100644 index d944cfc..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueDevices/blueDevices.wxss +++ /dev/null @@ -1,11 +0,0 @@ -/* pages/blueDevices/blueDevices.wxss */ -.prompt-title { - height: 50rpx; - border-top: 1px solid #999; - border-bottom: 1px solid #999; - width: 100%; -} -.item { - height: auto; - padding: 8rpx 0; -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.js deleted file mode 100644 index 396b7c1..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.js +++ /dev/null @@ -1,476 +0,0 @@ -// pages/blueWifi/blueWifi.js -//获取应用实例 -const app = getApp(); -const util = require('../../utils/util.js'); -const crypto = require('../../crypto/crypto-dh.js'); -const md5 = require('../../crypto/md5.min.js'); -var client = ""; -Page({ - - /** - * 页面的初始数据 - */ - data: { - deviceId: "", - wifiList: [], - hiddenModal: true, - blueConnectNum: 0, - frag: 16, - flag: false, - flagEnd: false, - fragList: [], - frameControl: 0, - ssid: "", - bssid: "", - serviceId: "", - uuid: "", - password: "", - }, - bindViewWifi: function(event) { - var self = this, - ssid = event.currentTarget.dataset.ssid, - bssid = event.currentTarget.dataset.bssid; - self.setData({ - hiddenModal: false, - ssid: ssid, - bssid: bssid, - password: "" - }) - }, - bindViewConfirm: function() { - var self = this; - wx.navigateTo({ - url: '/pages/blueConnect/blueConnect?deviceId=' + self.data.deviceId + "&ssid=" + escape(self.data.ssid) + "&bssid=" + self.data.bssid + "&password=" + escape(self.data.password) + "&serviceId=" + self.data.serviceId + "&uuid=" + self.data.uuid, - }) - this.setData({ - hiddenModal: true, - }) - }, - bindViewCancel: function(){ - this.setData({ - hiddenModal: true, - ssid: "", - bssid: "", - password: "" - }) - }, - bindViewInput: function (e) { - this.setData({ password: e.detail.value }) - }, - blueConnect: function (event) { - var self = this; - app.data.sequenceControl = -1; - app.data.sequenceNumber = -1; - self.setData({ - fragList: [], - wifiList: [], - flagEnd: false, - serviceId: "", - uuid: "" - }); - wx.createBLEConnection({ - deviceId: self.data.deviceId, - timeout: 10000, - success: function (res) { - console.info("app.data.platform", app.data.platform) - if (app.data.platform == 'android') { - app.data.mtu = app.data.constMtu; - wx.setBLEMTU({ - deviceId: self.data.deviceId, - mtu: app.data.constMtu, - success (res) { - console.info('setBLEMTU-suc', res) - }, - fail (res) { - console.info('setBLEMTU-fail', res) - } - }) - } - self.getDeviceServices(self.data.deviceId); - }, - fail: function (res) { - var num = self.data.blueConnectNum; - if (num < 3) { - self.blueConnect(); - num++; - self.setData({ - blueConnectNum: num - }) - } else { - self.showFailToast(); - } - } - }) - }, - getDeviceServices: function (deviceId) { - var self = this; - wx.getBLEDeviceServices({ - deviceId: deviceId, - success: function (res) { - var services = res.services; - if (services.length > 0) { - for (var i = 0; i < services.length; i++) { - var uuid = services[i].uuid; - if (uuid == app.data.service_uuid) { - self.getDeviceCharacteristics(deviceId, uuid); - return false; - } - } - } - }, - fail: function (res) { - self.showFailToast(); - } - }) - }, - getDeviceCharacteristics: function (deviceId, serviceId) { - var self = this; - wx.getBLEDeviceCharacteristics({ - deviceId: deviceId, - serviceId: serviceId, - success: function (res) { - var list = res.characteristics; - if (list.length > 0) { - for (var i = 0; i < list.length; i++) { - var uuid = list[i].uuid; - if (uuid == app.data.characteristic_write_uuid) { - self.openNotify(deviceId, serviceId, uuid); - self.setData({ - serviceId: serviceId, - uuid: uuid, - }) - return false; - } - } - } - }, - fail: function (res) { - self.showFailToast(); - } - }) - }, - //通知设备交互方式(是否加密) - notifyDevice: function (deviceId, serviceId, characteristicId) { - var self = this; - client = util.blueDH(util.DH_P, util.DH_G, crypto); - var kBytes = util.uint8ArrayToArray(client.getPublicKey()); - var pBytes = util.hexByInt(util.DH_P); - var gBytes = util.hexByInt(util.DH_G); - var pgkLength = pBytes.length + gBytes.length + kBytes.length + 6; - var pgkLen1 = (pgkLength >> 8) & 0xff; - var pgkLen2 = pgkLength & 0xff; - var data = []; - data.push(util.NEG_SET_SEC_TOTAL_LEN); - data.push(pgkLen1); - data.push(pgkLen2); - var frameControl = util.getFrameCTRLValue(false, false, util.DIRECTION_OUTPUT, false, false); - var value = util.writeData(util.PACKAGE_VALUE, util.SUBTYPE_NEG, frameControl, app.data.sequenceControl, data.length, data); - var typedArray = new Uint8Array(value); - console.log("notifyDevice:", value) - wx.writeBLECharacteristicValue({ - deviceId: deviceId, - serviceId: serviceId, - characteristicId: characteristicId, - value: typedArray.buffer, - success: function (res) { - console.log("notifyDevice-suc:", res) - self.getSecret(deviceId, serviceId, characteristicId, client, kBytes, pBytes, gBytes, null); - }, - fail: function (res) { - console.log("notifyDevice-fail:", res) - self.showFailToast(); - } - }) - }, - getSecret: function (deviceId, serviceId, characteristicId, client, kBytes, pBytes, gBytes, data) { - var self = this, obj = {}, frameControl = 0; - app.data.sequenceControl = parseInt(app.data.sequenceControl) + 1; - const encrypt = false - const checksum = false - if (!util._isEmpty(data)) { - obj = util.isSubcontractor(data, checksum, app.data.sequenceControl); - frameControl = util.getFrameCTRLValue(encrypt, checksum, util.DIRECTION_OUTPUT, false, obj.flag); - } else { - data = []; - data.push(util.NEG_SET_SEC_ALL_DATA); - var pLength = pBytes.length; - var pLen1 = (pLength >> 8) & 0xff; - var pLen2 = pLength & 0xff; - data.push(pLen1); - data.push(pLen2); - data = data.concat(pBytes); - var gLength = gBytes.length; - var gLen1 = (gLength >> 8) & 0xff; - var gLen2 = gLength & 0xff; - data.push(gLen1); - data.push(gLen2); - data = data.concat(gBytes); - var kLength = kBytes.length; - var kLen1 = (kLength >> 8) & 0xff; - var kLen2 = kLength & 0xff; - data.push(kLen1); - data.push(kLen2); - data = data.concat(kBytes); - obj = util.isSubcontractor(data, checksum, app.data.sequenceControl); - frameControl = util.getFrameCTRLValue(encrypt, checksum, util.DIRECTION_OUTPUT, false, obj.flag); - } - var value = util.writeData(util.PACKAGE_VALUE, util.SUBTYPE_NEG, frameControl, app.data.sequenceControl, obj.len, obj.lenData); - var typedArray = new Uint8Array(value); - wx.writeBLECharacteristicValue({ - deviceId: deviceId, - serviceId: serviceId, - characteristicId: characteristicId, - value: typedArray.buffer, - success: function (res) { - console.log('getSecret-suc', res) - if (obj.flag) { - self.getSecret(deviceId, serviceId, characteristicId, client, kBytes, pBytes, gBytes, obj.laveData); - } else { - // setTimeout(function(){ - // self.getWifiList(deviceId, serviceId, characteristicId); - // }, 3000) - self.setSecret(deviceId, serviceId, characteristicId); - } - }, - fail: function (res) { - console.log('getSecret-error', res) - self.showFailToast(); - } - }) - }, - setSecret (deviceId, serviceId, characteristicId) { - const self = this; - let value = 0; - // value |= 1; // 数据包校验 - // value |= 0b10; //数据包加密 - let data = [value] - app.data.sequenceControl = parseInt(app.data.sequenceControl) + 1; - let frameControl = util.getFrameCTRLValue(false, false, util.DIRECTION_OUTPUT, false, false); - value = util.writeData(util.PACKAGE_CONTROL_VALUE, util.SUBTYPE_SET_SEC_MODE, frameControl, app.data.sequenceControl, data.length, data); - var typedArray = new Uint8Array(value); - wx.writeBLECharacteristicValue({ - deviceId: deviceId, - serviceId: serviceId, - characteristicId: characteristicId, - value: typedArray.buffer, - success: function (res) { - setTimeout(function(){ - self.getWifiList(deviceId, serviceId, characteristicId); - }, 3000) - }, - fail: function (res) { - self.showFailToast(); - } - }) - }, - getWifiList: function (deviceId, serviceId, characteristicId) { - var self = this; - var frameControl = util.getFrameCTRLValue(false, false, util.DIRECTION_OUTPUT, false, false); - app.data.sequenceControl = parseInt(app.data.sequenceControl) + 1; - var value = util.writeData(util.PACKAGE_CONTROL_VALUE, util.SUBTYPE_WIFI_NEG, frameControl, app.data.sequenceControl, 0, null); - var typedArray = new Uint8Array(value); - wx.writeBLECharacteristicValue({ - deviceId: deviceId, - serviceId: serviceId, - characteristicId: characteristicId, - value: typedArray.buffer, - success: function (res) { - }, - fail: function (res) { - self.showFailToast(); - } - }) - }, - // 监听特征值变化 - onNotify: function () { - var self = this; - wx.onBLECharacteristicValueChange(function (res) { - self.analysisWifi(util.ab2hex(res.value)); - }) - }, - // 启用特征值变化 - openNotify: function (deviceId, serviceId, characteristicId) { - var self = this; - wx.notifyBLECharacteristicValueChange({ - state: true, // 启用 notify 功能 - deviceId: deviceId, - serviceId: serviceId, - characteristicId: app.data.characteristic_read_uuid, - success: function (res) { - //通知设备交互方式(是否加密) - // self.notifyDevice(deviceId, serviceId, characteristicId); - self.onNotify(); - self.getWifiList(deviceId, serviceId, characteristicId); - }, - fail: function (res) { - self.showFailToast(); - } - }) - }, - analysisWifi: function (list) { - const self = this; - var fragList = self.data.fragList; - if (list.length < 4) { - return false; - } - var val = list[0], - type = val & 3, - subType = val >> 2; - if (type != parseInt(util.PACKAGE_VALUE)) { - wx.hideLoading(); - return false; - } - var sequenceNum = parseInt(list[2], 16); - if (sequenceNum - app.data.sequenceNumber != 1) { - wx.hideLoading(); - return false; - } - app.data.sequenceNumber = sequenceNum; - if (app.data.sequenceNumber == 255) { - app.data.sequenceNumber = -1 - } - var dataLength = parseInt(list[3], 16); - if (dataLength == 0) { - wx.hideLoading(); - return false; - } - console.log('fragNum', list) - var fragNum = util.hexToBinArray(list[1]); - list = util.isEncrypt(self, fragNum, list); - fragList = fragList.concat(list); - self.setData({ - fragList: fragList, - }) - if (self.data.flagEnd) { - if (subType == util.SUBTYPE_WIFI_LIST_NEG) { - self.getList(fragList, fragList.length, 0); - wx.hideLoading(); - } else if (subType == util.SUBTYPE_NEGOTIATION_NEG) { - var arr = util.hexByInt(fragList.join("")); - var clientSecret = client.computeSecret(new Uint8Array(arr)); - var md5Key = md5.array(clientSecret); - app.data.md5Key = md5Key; - self.setData({ - fragList: [], - }) - } else { - wx.hideLoading(); - } - self.setData({ - flagEnd: false, - }) - } - }, - getList: function (arr, totalLength, curLength) { - var self = this; - if (arr.length > 0) { - var len = parseInt(arr[0], 16); - curLength += (1 + len); - if (len > 0 && curLength < totalLength) { - var rssi = 0, name = ""; - let list = [] - for (var i = 1; i <= len; i++) { - if (i == 1) { - rssi = parseInt(arr[i], 16); - } else { - list.push(parseInt(arr[i], 16)) - } - } - name = decodeURIComponent(encodeURIComponent(String.fromCharCode(...list))) - var wifiList = self.data.wifiList; - wifiList.push({ "rssi": rssi, "SSID": name }); - self.setData({ - wifiList: wifiList.sort(util.sortBy("rssi", false)) - }) - arr = arr.splice(len + 1); - this.getList(arr, totalLength, curLength); - } - } - }, - - showFailToast: function() { - wx.hideLoading(); - wx.showToast({ - title: 'WiFi信息获取失败', - icon: 'none', - duration: 2000 - }) - }, - /** - * 生命周期函数--监听页面加载 - */ - onLoad: function (options) { - var self = this; - wx.setNavigationBarTitle({ - title: '选择WiFi' - }); - self.setData({ - deviceId: options.deviceId, - }) - wx.showLoading({ - title: 'WiFi获取中...', - }) - wx.stopBluetoothDevicesDiscovery({ - success: function (res) { - } - }) - self.blueConnect(); - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - var self = this; - self.setData({ - wifiList: [], - fragList: [] - }); - self.getWifiList(self.data.deviceId, self.data.serviceId, self.data.uuid); - setTimeout(function () { - wx.stopPullDownRefresh(); - }, 6000); - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function () { - - } -}) \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.json deleted file mode 100644 index 6b33b19..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "backgroundTextStyle": "dark", - "enablePullDownRefresh": true -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.wxml b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.wxml deleted file mode 100644 index f4015ec..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.wxml +++ /dev/null @@ -1,19 +0,0 @@ - - - - {{item.SSID}} - - - - - - - - \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.wxss b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.wxss deleted file mode 100644 index 3e2ada1..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/blueWifi/blueWifi.wxss +++ /dev/null @@ -1,12 +0,0 @@ -/* pages/blueWifi/blueWifi.wxss */ -.item-icon { - flex: 0 0 80rpx; - height: 100%; - display: flex; - justify-items: center; - align-items: center; -} -.wifi-img { - width: 60rpx; - height: 60rpx; -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.js deleted file mode 100644 index 43213c8..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.js +++ /dev/null @@ -1,57 +0,0 @@ -//index.js -//获取应用实例 -const app = getApp(); -const util = require('../../utils/util.js'); -Page({ - data: { - - }, - //事件处理函数 - bindViewBlue: function() { - wx.closeBluetoothAdapter({ - success: function () { - } - }); - wx.openBluetoothAdapter({ - success: function (res) { - wx.startBluetoothDevicesDiscovery({ - success: function (res) { - wx.navigateTo({ - url: '/pages/blueDevices/blueDevices', - }) - } - }) - }, - fail: function (res) { - wx.showToast({ - title: '请打开蓝牙', - icon: 'none', - duration: 2000 - }) - } - }) - - }, - bindViewWifi: function () { - wx.navigateTo({ - url: '/pages/wifiDevices/wifiDevices', - }) - }, - onLoad: function () { - wx.setNavigationBarTitle({ - title: '配网方式' - }) - wx.getSystemInfo({ - success (res) { - try { - app.data.platform = res.platform.toLocaleLowerCase() - } catch(e) { - console.log(e) - } - } - }) - }, - getUserInfo: function(e) { - } - -}) diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.json deleted file mode 100644 index 9e26dfe..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.wxml b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.wxml deleted file mode 100644 index dcaeaf0..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.wxml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - 配网方式 - - - - BluFi 配网 - - - - - diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.wxss b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.wxss deleted file mode 100644 index 8dfcb41..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/index/index.wxss +++ /dev/null @@ -1,60 +0,0 @@ -.container { - display: block; - padding: 0; - height: 100vh; - background: #eee; -} -.header-wrapper { - display: flex; - justify-content: center; - align-items: center; - height: 45vh; - width: 100%; - background: #4d9efb; - border-bottom-right-radius: 40px; - border-bottom-left-radius: 40px; -} -.header-image { - width: 29vh; - height: 29vh; - position: relative; - top: -5vh; -} -.content-wrapper { - position: absolute; - top: 38vh; - left: 15px; - height: 50vh; - width: calc(100% - 30px); - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 10px; - box-shadow: 0px 0px 3px #fff; - color: #818181; -} -.title { - margin: 10px 0; - text-align: center; - font-size: 16px; -} -.btn-info { - display: flex; - margin-top: 10vh; -} -.btn-image { - width: 50px; - height: 50px; -} -.select-way { - flex: 1; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; -} -.name { - margin: 10px 0; - font-size: 14px; -} - diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.js deleted file mode 100644 index 35f14f5..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.js +++ /dev/null @@ -1,72 +0,0 @@ -// pages/wifiConfig/wifiConfig.js -Page({ - - /** - * 页面的初始数据 - */ - data: { - - }, - next: function () { - wx.navigateTo({ - url: "/pages/wifiList/wifiList" - }) - - }, - /** - * 生命周期函数--监听页面加载 - */ - onLoad: function (options) { - wx.setNavigationBarTitle({ - title: 'WiFi配网' - }); - }, - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function () { - - } -}) \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.json deleted file mode 100644 index 9e26dfe..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.wxml b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.wxml deleted file mode 100644 index 04426e2..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.wxml +++ /dev/null @@ -1,20 +0,0 @@ - - - - 第二步 - 将手机连接设备,请前往手机设置,进入无线局域网 - - - - - - - - - - - - - - - diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.wxss b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.wxss deleted file mode 100644 index 3b3bcd7..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConfig/wifiConfig.wxss +++ /dev/null @@ -1,9 +0,0 @@ -/* pages/wifiConfig/wifiConfig.wxss */ -.container{ - padding-top: 50rpx; -} -.wifi-img { - width:300px; - height:234px; - margin-top:20px; -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.js deleted file mode 100644 index b701d56..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.js +++ /dev/null @@ -1,166 +0,0 @@ -// pages/wifiConnect/wifiConnect.js - -Page({ - - /** - * 页面的初始数据 - */ - data: { - failStatus: false, - sucStatus: false, - progress: 0, - }, - getStatus: function() { - var self = this; - - wx.request({ - url: 'https://www.alavening.com/wifi/connstatus.cgi', - data: { - }, - header: { - 'content-type': 'application/json' // 默认值 - }, - success: function (res) { - console.log(res.data); - var data = res.data; - console.log(data.status); - if (data.status == "success") { - self.setData({ - progress: 100, - failStatus: false, - sucStatus: true, - }) - self.setResult("success"); - } else if (data.status == "fail") { - self.setData({ - failStatus: true, - sucStatus: false, - }) - self.setResult("fail"); - } else { - if (self.data.progress <= 90) { - self.setData({ - progress: (self.data.progress + 5), - failStatus: false, - sucStatus: false, - }) - } - self.getStatus(); - } - }, - fail: function (res) { - self.setData({ - failStatus: true, - sucStatus: false, - }) - - } - }) - - }, - setResult: function(result) { - var self = this; - wx.request({ - url: 'https://www.alavening.com/wifi/configsuccess.cgi', - method: "post", - data: { - configstatus: result - }, - header: { - 'content-type': 'application/x-www-form-urlencoded' - }, - success: function (res) { - }, - fail: function () { - } - }) - }, - setConnect: function(ssid, password) { - var self = this; - wx.request({ - url: 'https://alavening.com/wifi/connect.cgi', - method: "post", - data: { - essid: ssid, - password: password - }, - header: { - 'content-type': 'application/x-www-form-urlencoded' - }, - success: function (res) { - - }, - fail: function () { - } - }) - self.getStatus(); - }, - successwifi: function() { - wx.reLaunch({ - url: '/pages/index/index' - }) - }, - failwifi: function() { - wx.navigateBack({ - delta: 2 - }) - }, - /** - * 生命周期函数--监听页面加载 - */ - onLoad: function (options) { - var self = this; - wx.setNavigationBarTitle({ - title: 'WiFi配网' - }); - self.setConnect(options.ssid, options.password); - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function () { - - } -}) \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.json deleted file mode 100644 index 9e26dfe..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.wxml b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.wxml deleted file mode 100644 index 5ead5fb..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.wxml +++ /dev/null @@ -1,13 +0,0 @@ - - - - 配网中... - - - - - - - - - diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.wxss b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.wxss deleted file mode 100644 index c4cfecd..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiConnect/wifiConnect.wxss +++ /dev/null @@ -1,13 +0,0 @@ -/* pages/wifiConnect/wifiConnect.wxss */ -.container { - padding-top: 50rpx; -} -.progress-wrapper { - width: 100%; - height: 40px; - display: flex; - align-items: center; -} -progress { - flex: 1; -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.js deleted file mode 100644 index e8f1d15..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.js +++ /dev/null @@ -1,67 +0,0 @@ -// pages/wifiDevices/wifiDevices.js -Page({ - - /** - * 页面的初始数据 - */ - data: { - - }, - next: function () { - wx.navigateTo({ - url: "/pages/wifiConfig/wifiConfig" - }) - - }, - - /** - * 生命周期函数--监听页面加载 - */ - onLoad: function (options) { - wx.setNavigationBarTitle({ - title: 'WiFi配网' - }); - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, -}) \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.json deleted file mode 100644 index 9e26dfe..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.wxml b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.wxml deleted file mode 100644 index 3b4ae60..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.wxml +++ /dev/null @@ -1,23 +0,0 @@ - - - - 第一步 - 双击设备按键 - - - - - - - - - - - - - - - - diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.wxss b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.wxss deleted file mode 100644 index 74048aa..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiDevices/wifiDevices.wxss +++ /dev/null @@ -1,20 +0,0 @@ -/* pages/wifi/wifi.wxss */ -.container { - padding-top: 50rpx; -} -.checkbox{ - color: #333 -} -.back{ - width: 40%; - margin: 0 auto -} -.colored{ - color: red; -} -.hide{ - display: none; -} -.show{ - display: block; -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.js deleted file mode 100644 index ada3999..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.js +++ /dev/null @@ -1,142 +0,0 @@ -// pages/wifiList/wifiList.js -Page({ - - /** - * 页面的初始数据 - */ - data: { - password: '', - hiddenmodal: true,//可以通过hidden是否掩藏弹出框的属性,来指定那个弹出框 - wifiList: [], - ssid: '', - }, - //点击按钮弹出指定的hiddenmodalput弹出框 - bindViewWifi: function (e) { - var list = this.data.wifiList; - var index = e.currentTarget.dataset.index; - //console.log(list[index]) - this.setData({ - ssid: list[index].essid, - hiddenmodal: !this.data.hiddenmodal, - - }) - - }, - bindViewInput: function (e) { - this.setData({ password: e.detail.value }) - }, - getWifiList: function() { - var self = this; - wx.request({ - url: 'https://www.alavening.com/wifi/wifiscan.cgi', - data: { - }, - header: { - 'content-type': 'application/json' // 默认值 - }, - success: function (res) { - console.log(res); - var data = res.data.result; - console.log(data); - if (data.inProgress == "0") { - wx.hideLoading(); - self.setData({ - wifiList: data.APs - }) - } else { - self.getWifiList(); - } - }, - fail: function(res) { - console.log(res); - wx.hideLoading(); - } - }) - }, - //取消按钮 - cancel: function () { - this.setData({ - hiddenmodal: true - }); - }, - //确认 - confirm: function () { - var self = this; - // this.setData({ - // hiddenmodal: true - // }) - if (!self.data.password.length < 8) { - // 这里修改成跳转的页面 - wx.redirectTo({ - url: '/pages/wifiConnect/wifiConnect?password=' + self.data.password + "&ssid=" + self.data.ssid - }) - - } - }, - /** - * 生命周期函数--监听页面加载 - */ - onLoad: function (options) { - var self = this; - wx.setNavigationBarTitle({ - title: 'WiFi配网' - }); - setTimeout(function() { - wx.showLoading({ - title: 'WiFi加载中...', - }); - self.getWifiList(); - console.log("WiFi加载中..."); - }, 500); - - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - - }, - - /** - * 生命周期函数--监听页面显示 - */ - onShow: function () { - - }, - - /** - * 生命周期函数--监听页面隐藏 - */ - onHide: function () { - - }, - - /** - * 生命周期函数--监听页面卸载 - */ - onUnload: function () { - - }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - - }, - - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - - }, - - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function () { - - } -}) \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.json deleted file mode 100644 index 9e26dfe..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.wxml b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.wxml deleted file mode 100644 index 1ac912c..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.wxml +++ /dev/null @@ -1,35 +0,0 @@ - - - - 第三步 - 请选择您的WiFi - - - - - - {{item.essid}} - - - - - - - - - - - - - - - - - diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.wxss b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.wxss deleted file mode 100644 index e993838..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/pages/wifiList/wifiList.wxss +++ /dev/null @@ -1,35 +0,0 @@ -.container{ - position: relative; - padding-top: 50rpx; -} -.weui-cell__bd{ - padding: 0 20px; -} -.wifi-list{ - margin-top: 30px; -} -.main-content{ - flex: 1; - height: 100%; - overflow-y: hidden; -} -.item-wifi{ - border-bottom:2rpx solid #eee; - height:100rpx; - line-height:100rpx; - margin-top:0; - padding: 0 20px; - -} - -.item-icon { - flex: 0 0 80rpx; - height: 100%; - display: flex; - justify-items: center; - align-items: center; -} -.wifi-img { - width: 60rpx; - height: 60rpx; -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/project.config.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/project.config.json deleted file mode 100644 index 9d8582b..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/project.config.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "description": "项目配置文件", - "packOptions": { - "ignore": [], - "include": [] - }, - "setting": { - "urlCheck": true, - "es6": true, - "enhance": false, - "postcss": true, - "preloadBackgroundData": false, - "minified": true, - "newFeature": true, - "coverView": true, - "nodeModules": true, - "autoAudits": false, - "showShadowRootInWxmlPanel": true, - "scopeDataCheck": false, - "uglifyFileName": false, - "checkInvalidKey": true, - "checkSiteMap": true, - "uploadWithSourceMap": true, - "compileHotReLoad": false, - "useMultiFrameRuntime": false, - "useApiHook": false, - "useApiHostProcess": false, - "babelSetting": { - "ignore": [], - "disablePlugins": [], - "outputPath": "" - }, - "useIsolateContext": false, - "userConfirmedBundleSwitch": false, - "packNpmManually": false, - "packNpmRelationList": [], - "minifyWXSS": true, - "disableUseStrict": false, - "minifyWXML": true, - "showES6CompileOption": false, - "useCompilerPlugins": false - }, - "compileType": "miniprogram", - "libVersion": "2.3.0", - "appid": "wx3ff81ef68814b084", - "projectname": "ESPConfig", - "simulatorType": "wechat", - "simulatorPluginLibVersion": {}, - "condition": {}, - "editorSetting": { - "tabIndent": "insertSpaces", - "tabSize": 2 - } -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/project.private.config.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/project.private.config.json deleted file mode 100644 index 9a01ecf..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/project.private.config.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", - "projectname": "ESPConfig", - "setting": { - "compileHotReLoad": true - } -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/sitemap.json b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/sitemap.json deleted file mode 100644 index ca02add..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/sitemap.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", - "rules": [{ - "action": "allow", - "page": "*" - }] -} \ No newline at end of file diff --git a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/utils/util.js b/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/utils/util.js deleted file mode 100644 index 7bc1e68..0000000 --- a/code/09.extra/wifi_config/blufi/ESP-Config-WeChat/utils/util.js +++ /dev/null @@ -1,440 +0,0 @@ -import CryptoJS from'crypto-js'; - -const app = getApp(); -const FRAME_CTRL_POSITION_ENCRYPTED = 0; -const FRAME_CTRL_POSITION_CHECKSUM = 1; -const FRAME_CTRL_POSITION_DATA_DIRECTION = 2; -const FRAME_CTRL_POSITION_REQUIRE_ACK = 3; -const FRAME_CTRL_POSITION_FRAG = 4; -const DIRECTION_OUTPUT = 0; -const DIRECTION_INPUT = 1; -const AES_BASE_IV = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; -const NEG_SET_SEC_TOTAL_LEN = 0x00; -const NEG_SET_SEC_ALL_DATA = 0x01; -const PACKAGE_VALUE = 0x01; -const SUBTYPE_NEG = 0x00; -const SUBTYPE_WIFI_MODEl = 0x02; -const SUBTYPE_END = 0x03; -const PACKAGE_CONTROL_VALUE = 0x00; -const SUBTYPE_WIFI_NEG = 0x09; -const SUBTYPE_VERSION_NEG = 0x07; -const SUBTYPE_SET_SSID = 0x2; -const SUBTYPE_SET_PWD = 0x3; -const SUBTYPE_WIFI_LIST_NEG = 11; -const SUBTYPE_NEGOTIATION_NEG = 0; -const SUBTYPE_CUSTOM_DATA = 0x13; -const SUBTYPE_SET_SEC_MODE = 0x01; -var DH_P = "cf5cf5c38419a724957ff5dd323b9c45c3cdd261eb740f69aa94b8bb1a5c96409153bd76b24222d03274e4725a5406092e9e82e9135c643cae98132b0d95f7d65347c68afc1e677da90e51bbab5f5cf429c291b4ba39c6b2dc5e8c7231e46aa7728e87664532cdf547be20c9a3fa8342be6e34371a27c06f7dc0edddd2f86373"; -var DH_G = "02"; - -const descSucList = ["Bluetooth connecting...", "Bluetooth connection successful", "Device information is successfully obtained", "Attribute information is successfully obtained", "Send configuration information...", "Configuration information sent successfully", "Connection successfully"]; -const descFailList = ["Bluetooth connection failed", "Device information acquisition failed", "Attribute information acquisition failed", "Configuration information sent failed", "Distribution network failed"]; -const successList = { "0": "NULL", "1": "STA", "2": "SoftAP", "3": "SoftAP & STA" }; -const failList = { "0": "sequence error", "1": "checksum error", "2": "decrypt error", "3": "encrypt error", "4": "init security error", "5": "dh malloc error", "6": "dh param error", "7": "read param error", "8": "make public error" }; -var CRC_TB = [ - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, - 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, - 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, - 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, - 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, - 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, - 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, - 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, - 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 -]; - -//时间格式 -const formatTime = date => { - const year = date.getFullYear() - const month = date.getMonth() + 1 - const day = date.getDate() - const hour = date.getHours() - const minute = date.getMinutes() - const second = date.getSeconds() - - return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') -} -const formatNumber = n => { - n = n.toString() - return n[1] ? n : '0' + n -} -//转16进制 -const ab2hex = buffer => { - var hexArr = Array.prototype.map.call( - new Uint8Array(buffer), - function (bit) { - return ('00' + bit.toString(16)).slice(-2) - } - ) - return hexArr; -} -//16进制转字符串 -const hexCharCodeToStr = hexCharCodeStr => { - var trimedStr = hexCharCodeStr.trim(); - var rawStr = trimedStr.substr(0, 2).toLowerCase() === "0x" ? trimedStr.substr(2) : trimedStr; - var len = rawStr.length; - if (len % 2 !== 0) { - alert("Illegal Format ASCII Code!"); - return ""; - } - var curCharCode; - var resultStr = []; - for (var i = 0; i < len; i = i + 2) { - curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value - resultStr.push(String.fromCharCode(curCharCode)); - } - return resultStr.join(""); -} -//过滤名称 -const filterDevice = (devices, name) => { - var list = []; - for (var i = 0; i < devices.length; i++) { - var device = devices[i]; - var re = new RegExp("^(BLUFI)"); - if (re.test(device[name])) { - list.push(device); - } - } - return list; -} -//获去type -const getType = (pkgType, subType) => { - return (subType << 2) | pkgType; -} -//unit8Arry转数组 -const uint8ArrayToArray = uint8Array => { - var array = []; - - for (var i = 0; i < uint8Array.byteLength; i++) { - array[i] = uint8Array[i]; - } - - return array; -} -//16进制转二进制数组 -const hexToBinArray = str => { - var dec = parseInt(str, 16), - bin = dec.toString(2); - while (bin.length < 8) { - bin = "0" + bin - } - return bin.split(""); -} -//16进制转数组 -const hexByArray = str => { - var arr = []; - if (str.length % 2 != 0) { - str = "0" + str; - } - for (var i = 0; i < str.length; i += 2) { - arr.push(str.substring(i, i + 2)) - } - return arr; -} -//16进制转整形数组 -const hexByInt = str => { - var arr = []; - if (str.length % 2 != 0) { - str = "0" + str; - } - for (var i = 0; i < str.length; i += 2) { - arr.push(parseInt(str.substring(i, i + 2), 16)) - } - return arr; -} -//排序 -const sortBy = (attr, rev) => { - //第二个参数没有传递 默认升序排列 - if (rev == undefined) { - rev = 1; - } else { - rev = (rev) ? 1 : -1; - } - return function (a, b) { - a = a[attr]; - b = b[attr]; - if (a < b) { - return rev * -1; - } else if (a > b) { - return rev * 1; - } - return 0; - } -} -//判断非空 -const _isEmpty = str => { - if (str === "" || str === null || str === undefined || str === "null" || str === "undefined") { - return true; - } else { - return false; - } -} -//设置配网失败背景色 -const setFailBg = () => { - wx.setNavigationBarColor({ - frontColor: "#ffffff", - backgroundColor: '#737d89', - }) -} -//设置配网成功背景色 -const setSucBg = () => { - wx.setNavigationBarColor({ - frontColor: "#ffffff", - backgroundColor: '#4d9efb', - }) -} -//组装数据格式 -const writeData = (type, subType, frameCtl, seq, len, data) => { - var value = [], - type = getType(type, subType); - value.push(type); - value.push(frameCtl); - value.push(seq); - value.push(len); - if (!_isEmpty(data)) { - value = value.concat(data); - } - return value; -} -//是否分包 -const isSubcontractor = (data, checksum, sequence, encrypt) => { - var len = 0, lenData = [], laveData = [], flag = false; - var total = data.length; - console.info('app.data.mtu', app.data.mtu) - console.info('total', total) - const splitLen = app.data.mtu - 3 - if (total > splitLen) { - if (checksum) { - lenData = data.slice(0, splitLen - 4); - laveData = data.slice(splitLen - 4); - } else { - lenData = data.slice(0, splitLen - 2); - laveData = data.slice(splitLen - 2); - } - var len1 = (total >> 8) & 0xff; - var len2 = total & 0xff; - lenData.splice(0, 0, len1); - lenData.splice(0, 0, len2); - len = lenData.length; - flag = true; - } else { - lenData = data; - len = lenData.length; - } - if (checksum) { - lenData = assemblyChecksum(lenData, len, sequence); - } - return {"len": len, "lenData": lenData, "laveData": laveData, "flag": flag} -} -const assemblyChecksum = (list, len, sequence, encrypt) => { - var checkData = []; - checkData.push(sequence); - checkData.push(len); - checkData = checkData.concat(list); - var crc = caluCRC(0, checkData); - var checksumByte1 = crc & 0xff; - var checksumByte2 = (crc >> 8) & 0xff; - list.push(checksumByte1); - list.push(checksumByte2); - return list; -} -//加密发送的数据 -const encrypt = (sequence, data, checksum) => { - var iv = generateAESIV(sequence), sumArr = [], list = []; - if (checksum) { - var len = data.length - 2; - list = data.slice(0, len); - sumArr = data.slice(len); - } else { - list = data; - } - console.log('加密') - var encryptData = blueAesEncrypt(iv, ab2hex(list).join('')); - return encryptData.concat(sumArr); -} -//判断返回的数据是否加密 -const isEncrypt = (self, frameCtrl, list) => { - var checksum = [], checkData = []; - if (frameCtrl[7] == "1") {//返回数据加密 - var iv = generateAESIV(parseInt(list[2], 16)); - console.log('解密') - console.log(iv) - list = list.slice(4) // 解密数据不含 Header - let byteArray = list.map(item => parseInt(item, 16)) - let decryptPkg = blueAesDecrypt(iv, ab2hex(byteArray).join('')) - console.log("DecryptPkg = ", decryptPkg) - list = ab2hex(decryptPkg); - if (frameCtrl[6] == "1") {//数据有校验 - console.log('校验') - var len = list.length - 2; - // checkData = list.slice(2, len); - // checksum = list.slice(len); - // console.log(checksum); - // var crc = caluCRC(0, checkData); - // var checksumByte1 = crc & 0xff; - // var checksumByte2 = (crc >> 8) & 0xff; - list = list.slice(0, len); - } - - if (frameCtrl[3] == "0") {//未分包 - self.setData({ - flagEnd: true - }) - } else {//分包 - list = list.slice(2); - } - - } else {//返回数据未加密 - if (frameCtrl[6] == "1") { - var len = list.length - 2; - // checkData = list.slice(2, len); - // checksum = list.slice(len); - // var crc = caluCRC(0, checkData); - // var checksumByte1 = crc & 0xff; - // var checksumByte2 = (crc >> 8) & 0xff; - list = list.slice(0, len); - } - if (frameCtrl[3] == "0") {//未分包 - list = list.slice(4); - self.setData({ - flagEnd: true - }) - } else {//分包 - list = list.slice(6); - } - } - return list; -} -//DH加密 -const blueDH = (p, g, crypto) => { - var client = crypto.createDiffieHellman(p, "hex", g, "hex"); - var clientKey = client.generateKeys(); - //var clientSecret = client.computeSecret(server.getPublicKey()); - return client; -} -//md5加密 -const blueMd5 = (md5, key) => { - var arr = md5.array(key); - return arr; -} -// aes加密 -const blueAesEncrypt = (iv, bytes) => { - bytes = CryptoJS.enc.Hex.parse(bytes); - let mdKey = ab2hex(app.data.md5Key).join(''); - iv = ab2hex(iv).join(''); - const encryptedStr = CryptoJS.AES.encrypt(bytes, CryptoJS.enc.Hex.parse(mdKey), { - iv: CryptoJS.enc.Hex.parse(iv), - mode: CryptoJS.mode.CFB, - padding: CryptoJS.pad.NoPadding -}); -return hexByInt(encryptedStr.ciphertext.toString()) -} -//aes解密 -const blueAesDecrypt = (iv, bytes) => { - let mdKey = ab2hex(app.data.md5Key).join(''); - iv = ab2hex(iv).join(''); - bytes = CryptoJS.enc.Hex.parse(bytes); - bytes = CryptoJS.enc.Base64.stringify(bytes); - const decryptStr = CryptoJS.AES.decrypt(bytes, CryptoJS.enc.Hex.parse(mdKey), { - iv: CryptoJS.enc.Hex.parse(iv), - mode: CryptoJS.mode.CFB, - padding: CryptoJS.pad.NoPadding - }); - return hexByInt(decryptStr.toString()) -} -//获取Frame Control -const getFrameCTRLValue = (encrypted, checksum, direction, requireAck, frag) => { - var frame = 0; - if (encrypted) { - frame = frame | (1 << FRAME_CTRL_POSITION_ENCRYPTED); - } - if (checksum) { - frame = frame | (1 << FRAME_CTRL_POSITION_CHECKSUM); - } - if (direction == DIRECTION_INPUT) { - frame = frame | (1 << FRAME_CTRL_POSITION_DATA_DIRECTION); - } - if (requireAck) { - frame = frame | (1 << FRAME_CTRL_POSITION_REQUIRE_ACK); - } - if (frag) { - frame = frame | (1 << FRAME_CTRL_POSITION_FRAG); - } - return frame; -} -//获取aes iv -const generateAESIV = sequence => { - var result = []; - for (var i = 0; i < 16; i++) { - if (i == 0) { - result[0] = sequence; - } else { - result[i] = AES_BASE_IV[i]; - } - } - return result; -} -//计算CRC值 -const caluCRC = (crc, pByte) => { - crc = (~crc) & 0xffff; - for (var i in pByte) { - crc = CRC_TB[((crc & 0xffff) >> 8) ^ (pByte[i] & 0xff)] ^ ((crc & 0xffff) << 8); - } - return (~crc) & 0xffff; -} -module.exports = { - formatTime: formatTime, - ab2hex: ab2hex, - hexCharCodeToStr: hexCharCodeToStr, - filterDevice: filterDevice, - getType: getType, - hexToBinArray: hexToBinArray, - hexByArray: hexByArray, - hexByInt: hexByInt, - sortBy: sortBy, - _isEmpty: _isEmpty, - setFailBg: setFailBg, - setSucBg: setSucBg, - writeData: writeData, - isSubcontractor: isSubcontractor, - getFrameCTRLValue: getFrameCTRLValue, - blueDH: blueDH, - blueMd5: blueMd5, - blueAesEncrypt: blueAesEncrypt, - blueAesDecrypt: blueAesDecrypt, - uint8ArrayToArray: uint8ArrayToArray, - generateAESIV: generateAESIV, - isEncrypt: isEncrypt, - caluCRC: caluCRC, - encrypt: encrypt, - DH_P: DH_P, - DH_G: DH_G, - DIRECTION_OUTPUT: DIRECTION_OUTPUT, - DIRECTION_INPUT: DIRECTION_INPUT, - NEG_SET_SEC_TOTAL_LEN: NEG_SET_SEC_TOTAL_LEN, - NEG_SET_SEC_ALL_DATA: NEG_SET_SEC_ALL_DATA, - PACKAGE_VALUE: PACKAGE_VALUE, - SUBTYPE_NEG: SUBTYPE_NEG, - PACKAGE_CONTROL_VALUE: PACKAGE_CONTROL_VALUE, - SUBTYPE_WIFI_NEG: SUBTYPE_WIFI_NEG, - SUBTYPE_WIFI_LIST_NEG: SUBTYPE_WIFI_LIST_NEG, - SUBTYPE_VERSION_NEG: SUBTYPE_VERSION_NEG, - SUBTYPE_NEGOTIATION_NEG: SUBTYPE_NEGOTIATION_NEG, - SUBTYPE_WIFI_MODEl: SUBTYPE_WIFI_MODEl, - SUBTYPE_SET_SSID: SUBTYPE_SET_SSID, - SUBTYPE_SET_PWD: SUBTYPE_SET_PWD, - SUBTYPE_END: SUBTYPE_END, - SUBTYPE_CUSTOM_DATA: SUBTYPE_CUSTOM_DATA, - SUBTYPE_SET_SEC_MODE: SUBTYPE_SET_SEC_MODE, - descSucList: descSucList, - descFailList: descFailList, - successList: successList, - failList: failList, -} diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/CMakeLists.txt b/code/09.extra/wifi_config/blufi/blufi-esp32/CMakeLists.txt deleted file mode 100644 index aa43af0..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -# The following lines of boilerplate have to be in your project's CMakeLists -# in this exact order for cmake to work correctly -cmake_minimum_required(VERSION 3.16) - -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -project(blufi_demo) diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/README.md b/code/09.extra/wifi_config/blufi/blufi-esp32/README.md deleted file mode 100644 index 37d16e2..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/README.md +++ /dev/null @@ -1,84 +0,0 @@ -| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C6 | ESP32-S3 | -| ----------------- | ----- | -------- | -------- | -------- | -------- | - -# ESP-IDF Blufi Example - -This demo shows how to use the *Blufi* to configurate the Wi-Fi connection to AP. - -The BluFi for ESP32 is a Wi-Fi network configuration function via Bluetooth channel. It provides a secure protocol to pass Wi-Fi configuration and credentials to the ESP32. - -## How to Use Example - -Before project configuration and build, be sure to set the correct chip target using: - -```bash -idf.py set-target -``` - -To test this demo, you need to prepare a mobile phone with blufi application installed. You can download the blufi application from [Android version](https://github.com/EspressifApp/EspBlufi) and [iOS version](https://itunes.apple.com/cn/app/espblufi/id1450614082?mt=8). - -Blufi is completely open source, here is the download link: - -* [Blufi source code](https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/blufi) -* [BluFi protocol](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/ble/blufi.html) -* [iOS source code](https://github.com/EspressifApp/EspBlufiForiOS) -* [Android source code](https://github.com/EspressifApp/EspBlufi) -* [Bluetooth Network User Guide CN](https://www.espressif.com/sites/default/files/documentation/esp32_bluetooth_networking_user_guide_cn.pdf) - -### Hardware Required - -* A development board with ESP32/ESP32-C3/ESP32-S3/ESP32-C2 SoC (e.g., ESP32-DevKitC, ESP-WROVER-KIT, etc.) -* A USB cable for Power supply and programming - -See [Development Boards](https://www.espressif.com/en/products/devkits) for more information about it. - -### Build and Flash - -Run `idf.py -p PORT flash monitor` to build, flash and monitor the project. - -(To exit the serial monitor, type ``Ctrl-]``.) - -See the [Getting Started Guide](https://idf.espressif.com/) for full steps to configure and use ESP-IDF to build projects. - -## Example Output - -``` -I (0) cpu_start: Starting scheduler on APP CPU. -I (708) wifi:wifi driver task: 3ffbb118, prio:23, stack:6656, core=0 -I (708) system_api: Base MAC address is not set -I (708) system_api: read default base MAC address from EFUSE -I (718) wifi:wifi firmware version: 44799ff -I (718) wifi:wifi certification version: v7.0 -I (718) wifi:config NVS flash: enabled -I (718) wifi:config nano formatting: disabled -I (728) wifi:Init data frame dynamic rx buffer num: 32 -I (728) wifi:Init management frame dynamic rx buffer num: 32 -I (738) wifi:Init management short buffer num: 32 -I (738) wifi:Init dynamic tx buffer num: 32 -I (748) wifi:Init static rx buffer size: 1600 -I (748) wifi:Init static rx buffer num: 10 -I (748) wifi:Init dynamic rx buffer num: 32 -I (758) wifi_init: rx ba win: 6 -I (758) wifi_init: tcpip mbox: 32 -I (768) wifi_init: udp mbox: 6 -I (768) wifi_init: tcp mbox: 6 -I (768) wifi_init: tcp tx win: 5744 -I (778) wifi_init: tcp rx win: 5744 -I (778) wifi_init: tcp mss: 1440 -I (788) wifi_init: WiFi IRAM OP enabled -I (788) wifi_init: WiFi RX IRAM OP enabled -I (798) phy_init: phy_version 4670,719f9f6,Feb 18 2021,17:07:07 -I (908) wifi:mode : sta (fc:f5:c4:3c:62:90) -I (908) wifi:enable tsf -I (908) BTDM_INIT: BT controller compile version [1342a48] -I (1198) BLUFI_EXAMPLE: BD ADDR: fc:f5:c4:3c:62:92 - -I (1198) BLUFI_EXAMPLE: BLUFI VERSION 0102 - -I (1198) BLUFI_EXAMPLE: BLUFI init finish - -``` - -## Troubleshooting - -For any technical queries, please open an [issue](https://github.com/espressif/esp-idf/issues) on GitHub. We will get back to you soon. diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/main/CMakeLists.txt b/code/09.extra/wifi_config/blufi/blufi-esp32/main/CMakeLists.txt deleted file mode 100644 index 68e37f4..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/main/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -idf_component_register(SRCS "blufi_example_main.c" - "blufi_security.c" - "blufi_init.c" - INCLUDE_DIRS ".") diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/main/Kconfig.projbuild b/code/09.extra/wifi_config/blufi/blufi-esp32/main/Kconfig.projbuild deleted file mode 100644 index 8346f7a..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/main/Kconfig.projbuild +++ /dev/null @@ -1,10 +0,0 @@ -menu "Example Configuration" - - config EXAMPLE_WIFI_CONNECTION_MAXIMUM_RETRY - int "WiFi connection maximum retry" - range 0 255 - default 2 - help - WiFi connection maximum retry, from 0 to 255. - -endmenu diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_example.h b/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_example.h deleted file mode 100644 index c5e9e84..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_example.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Unlicense OR CC0-1.0 - */ - - -#pragma once - -#define BLUFI_EXAMPLE_TAG "BLUFI_EXAMPLE" -#define BLUFI_INFO(fmt, ...) ESP_LOGI(BLUFI_EXAMPLE_TAG, fmt, ##__VA_ARGS__) -#define BLUFI_ERROR(fmt, ...) ESP_LOGE(BLUFI_EXAMPLE_TAG, fmt, ##__VA_ARGS__) - -void blufi_dh_negotiate_data_handler(uint8_t *data, int len, uint8_t **output_data, int *output_len, bool *need_free); -int blufi_aes_encrypt(uint8_t iv8, uint8_t *crypt_data, int crypt_len); -int blufi_aes_decrypt(uint8_t iv8, uint8_t *crypt_data, int crypt_len); -uint16_t blufi_crc_checksum(uint8_t iv8, uint8_t *data, int len); - -int blufi_security_init(void); -void blufi_security_deinit(void); -int esp_blufi_gap_register_callback(void); -esp_err_t esp_blufi_host_init(void); -esp_err_t esp_blufi_host_and_cb_init(esp_blufi_callbacks_t *callbacks); -esp_err_t esp_blufi_host_deinit(void); -esp_err_t esp_blufi_controller_init(void); -esp_err_t esp_blufi_controller_deinit(void); diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_example_main.c b/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_example_main.c deleted file mode 100644 index 69a3380..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_example_main.c +++ /dev/null @@ -1,484 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Unlicense OR CC0-1.0 - */ - - -/**************************************************************************** -* This is a demo for bluetooth config wifi connection to ap. You can config ESP32 to connect a softap -* or config ESP32 as a softap to be connected by other device. APP can be downloaded from github -* android source code: https://github.com/EspressifApp/EspBlufi -* iOS source code: https://github.com/EspressifApp/EspBlufiForiOS -****************************************************************************/ - -#include -#include -#include -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/event_groups.h" -#include "esp_system.h" -#include "esp_mac.h" -#include "esp_wifi.h" -#include "esp_event.h" -#include "esp_log.h" -#include "nvs_flash.h" -#if CONFIG_BT_CONTROLLER_ENABLED || !CONFIG_BT_NIMBLE_ENABLED -#include "esp_bt.h" -#endif - -#include "esp_blufi_api.h" -#include "blufi_example.h" - -#include "esp_blufi.h" - -#define EXAMPLE_WIFI_CONNECTION_MAXIMUM_RETRY CONFIG_EXAMPLE_WIFI_CONNECTION_MAXIMUM_RETRY -#define EXAMPLE_INVALID_REASON 255 -#define EXAMPLE_INVALID_RSSI -128 - -static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_param_t *param); - -#define WIFI_LIST_NUM 10 - -static wifi_config_t sta_config; -static wifi_config_t ap_config; - -/* FreeRTOS event group to signal when we are connected & ready to make a request */ -static EventGroupHandle_t wifi_event_group; - -/* The event group allows multiple bits for each event, - but we only care about one event - are we connected - to the AP with an IP? */ -const int CONNECTED_BIT = BIT0; - -static uint8_t example_wifi_retry = 0; - -/* store the station info for send back to phone */ -static bool gl_sta_connected = false; -static bool gl_sta_got_ip = false; -static bool ble_is_connected = false; -static uint8_t gl_sta_bssid[6]; -static uint8_t gl_sta_ssid[32]; -static int gl_sta_ssid_len; -static wifi_sta_list_t gl_sta_list; -static bool gl_sta_is_connecting = false; -static esp_blufi_extra_info_t gl_sta_conn_info; - -static void example_record_wifi_conn_info(int rssi, uint8_t reason) -{ - memset(&gl_sta_conn_info, 0, sizeof(esp_blufi_extra_info_t)); - if (gl_sta_is_connecting) { - gl_sta_conn_info.sta_max_conn_retry_set = true; - gl_sta_conn_info.sta_max_conn_retry = EXAMPLE_WIFI_CONNECTION_MAXIMUM_RETRY; - } else { - gl_sta_conn_info.sta_conn_rssi_set = true; - gl_sta_conn_info.sta_conn_rssi = rssi; - gl_sta_conn_info.sta_conn_end_reason_set = true; - gl_sta_conn_info.sta_conn_end_reason = reason; - } -} - -static void example_wifi_connect(void) -{ - example_wifi_retry = 0; - gl_sta_is_connecting = (esp_wifi_connect() == ESP_OK); - example_record_wifi_conn_info(EXAMPLE_INVALID_RSSI, EXAMPLE_INVALID_REASON); -} - -static bool example_wifi_reconnect(void) -{ - bool ret; - if (gl_sta_is_connecting && example_wifi_retry++ < EXAMPLE_WIFI_CONNECTION_MAXIMUM_RETRY) { - BLUFI_INFO("BLUFI WiFi starts reconnection\n"); - gl_sta_is_connecting = (esp_wifi_connect() == ESP_OK); - example_record_wifi_conn_info(EXAMPLE_INVALID_RSSI, EXAMPLE_INVALID_REASON); - ret = true; - } else { - ret = false; - } - return ret; -} - -static int softap_get_current_connection_number(void) -{ - esp_err_t ret; - ret = esp_wifi_ap_get_sta_list(&gl_sta_list); - if (ret == ESP_OK) - { - return gl_sta_list.num; - } - - return 0; -} - -static void ip_event_handler(void* arg, esp_event_base_t event_base, - int32_t event_id, void* event_data) -{ - wifi_mode_t mode; - - switch (event_id) { - case IP_EVENT_STA_GOT_IP: { - esp_blufi_extra_info_t info; - - xEventGroupSetBits(wifi_event_group, CONNECTED_BIT); - esp_wifi_get_mode(&mode); - - memset(&info, 0, sizeof(esp_blufi_extra_info_t)); - memcpy(info.sta_bssid, gl_sta_bssid, 6); - info.sta_bssid_set = true; - info.sta_ssid = gl_sta_ssid; - info.sta_ssid_len = gl_sta_ssid_len; - gl_sta_got_ip = true; - if (ble_is_connected == true) { - esp_blufi_send_wifi_conn_report(mode, ESP_BLUFI_STA_CONN_SUCCESS, softap_get_current_connection_number(), &info); - } else { - BLUFI_INFO("BLUFI BLE is not connected yet\n"); - } - break; - } - default: - break; - } - return; -} - -static void wifi_event_handler(void* arg, esp_event_base_t event_base, - int32_t event_id, void* event_data) -{ - wifi_event_sta_connected_t *event; - wifi_event_sta_disconnected_t *disconnected_event; - wifi_mode_t mode; - - switch (event_id) { - case WIFI_EVENT_STA_START: - example_wifi_connect(); - break; - case WIFI_EVENT_STA_CONNECTED: - gl_sta_connected = true; - gl_sta_is_connecting = false; - event = (wifi_event_sta_connected_t*) event_data; - memcpy(gl_sta_bssid, event->bssid, 6); - memcpy(gl_sta_ssid, event->ssid, event->ssid_len); - gl_sta_ssid_len = event->ssid_len; - break; - case WIFI_EVENT_STA_DISCONNECTED: - /* Only handle reconnection during connecting */ - if (gl_sta_connected == false && example_wifi_reconnect() == false) { - gl_sta_is_connecting = false; - disconnected_event = (wifi_event_sta_disconnected_t*) event_data; - example_record_wifi_conn_info(disconnected_event->rssi, disconnected_event->reason); - } - /* This is a workaround as ESP32 WiFi libs don't currently - auto-reassociate. */ - gl_sta_connected = false; - gl_sta_got_ip = false; - memset(gl_sta_ssid, 0, 32); - memset(gl_sta_bssid, 0, 6); - gl_sta_ssid_len = 0; - xEventGroupClearBits(wifi_event_group, CONNECTED_BIT); - break; - case WIFI_EVENT_AP_START: - esp_wifi_get_mode(&mode); - - /* TODO: get config or information of softap, then set to report extra_info */ - if (ble_is_connected == true) { - if (gl_sta_connected) { - esp_blufi_extra_info_t info; - memset(&info, 0, sizeof(esp_blufi_extra_info_t)); - memcpy(info.sta_bssid, gl_sta_bssid, 6); - info.sta_bssid_set = true; - info.sta_ssid = gl_sta_ssid; - info.sta_ssid_len = gl_sta_ssid_len; - esp_blufi_send_wifi_conn_report(mode, gl_sta_got_ip ? ESP_BLUFI_STA_CONN_SUCCESS : ESP_BLUFI_STA_NO_IP, softap_get_current_connection_number(), &info); - } else if (gl_sta_is_connecting) { - esp_blufi_send_wifi_conn_report(mode, ESP_BLUFI_STA_CONNECTING, softap_get_current_connection_number(), &gl_sta_conn_info); - } else { - esp_blufi_send_wifi_conn_report(mode, ESP_BLUFI_STA_CONN_FAIL, softap_get_current_connection_number(), &gl_sta_conn_info); - } - } else { - BLUFI_INFO("BLUFI BLE is not connected yet\n"); - } - break; - case WIFI_EVENT_SCAN_DONE: { - uint16_t apCount = 0; - esp_wifi_scan_get_ap_num(&apCount); - if (apCount == 0) { - BLUFI_INFO("Nothing AP found"); - break; - } - wifi_ap_record_t *ap_list = (wifi_ap_record_t *)malloc(sizeof(wifi_ap_record_t) * apCount); - if (!ap_list) { - BLUFI_ERROR("malloc error, ap_list is NULL"); - esp_wifi_clear_ap_list(); - break; - } - ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&apCount, ap_list)); - esp_blufi_ap_record_t * blufi_ap_list = (esp_blufi_ap_record_t *)malloc(apCount * sizeof(esp_blufi_ap_record_t)); - if (!blufi_ap_list) { - if (ap_list) { - free(ap_list); - } - BLUFI_ERROR("malloc error, blufi_ap_list is NULL"); - break; - } - for (int i = 0; i < apCount; ++i) - { - blufi_ap_list[i].rssi = ap_list[i].rssi; - memcpy(blufi_ap_list[i].ssid, ap_list[i].ssid, sizeof(ap_list[i].ssid)); - } - - if (ble_is_connected == true) { - esp_blufi_send_wifi_list(apCount, blufi_ap_list); - } else { - BLUFI_INFO("BLUFI BLE is not connected yet\n"); - } - - esp_wifi_scan_stop(); - free(ap_list); - free(blufi_ap_list); - break; - } - case WIFI_EVENT_AP_STACONNECTED: { - wifi_event_ap_staconnected_t* event = (wifi_event_ap_staconnected_t*) event_data; - BLUFI_INFO("station "MACSTR" join, AID=%d", MAC2STR(event->mac), event->aid); - break; - } - case WIFI_EVENT_AP_STADISCONNECTED: { - wifi_event_ap_stadisconnected_t* event = (wifi_event_ap_stadisconnected_t*) event_data; - BLUFI_INFO("station "MACSTR" leave, AID=%d, reason=%d", MAC2STR(event->mac), event->aid, event->reason); - break; - } - - default: - break; - } - return; -} - -static void initialise_wifi(void) -{ - ESP_ERROR_CHECK(esp_netif_init()); - wifi_event_group = xEventGroupCreate(); - ESP_ERROR_CHECK(esp_event_loop_create_default()); - esp_netif_t *sta_netif = esp_netif_create_default_wifi_sta(); - assert(sta_netif); - esp_netif_t *ap_netif = esp_netif_create_default_wifi_ap(); - assert(ap_netif); - ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL)); - ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &ip_event_handler, NULL)); - - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); - ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); - example_record_wifi_conn_info(EXAMPLE_INVALID_RSSI, EXAMPLE_INVALID_REASON); - ESP_ERROR_CHECK( esp_wifi_start() ); -} - -static esp_blufi_callbacks_t example_callbacks = { - .event_cb = example_event_callback, - .negotiate_data_handler = blufi_dh_negotiate_data_handler, - .encrypt_func = blufi_aes_encrypt, - .decrypt_func = blufi_aes_decrypt, - .checksum_func = blufi_crc_checksum, -}; - -static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_param_t *param) -{ - /* actually, should post to blufi_task handle the procedure, - * now, as a example, we do it more simply */ - switch (event) { - case ESP_BLUFI_EVENT_INIT_FINISH: - BLUFI_INFO("BLUFI init finish\n"); - - esp_blufi_adv_start(); - break; - case ESP_BLUFI_EVENT_DEINIT_FINISH: - BLUFI_INFO("BLUFI deinit finish\n"); - break; - case ESP_BLUFI_EVENT_BLE_CONNECT: - BLUFI_INFO("BLUFI ble connect\n"); - ble_is_connected = true; - esp_blufi_adv_stop(); - blufi_security_init(); - break; - case ESP_BLUFI_EVENT_BLE_DISCONNECT: - BLUFI_INFO("BLUFI ble disconnect\n"); - ble_is_connected = false; - blufi_security_deinit(); - esp_blufi_adv_start(); - break; - case ESP_BLUFI_EVENT_SET_WIFI_OPMODE: - BLUFI_INFO("BLUFI Set WIFI opmode %d\n", param->wifi_mode.op_mode); - ESP_ERROR_CHECK( esp_wifi_set_mode(param->wifi_mode.op_mode) ); - break; - case ESP_BLUFI_EVENT_REQ_CONNECT_TO_AP: - BLUFI_INFO("BLUFI requset wifi connect to AP\n"); - /* there is no wifi callback when the device has already connected to this wifi - so disconnect wifi before connection. - */ - esp_wifi_disconnect(); - example_wifi_connect(); - break; - case ESP_BLUFI_EVENT_REQ_DISCONNECT_FROM_AP: - BLUFI_INFO("BLUFI requset wifi disconnect from AP\n"); - esp_wifi_disconnect(); - break; - case ESP_BLUFI_EVENT_REPORT_ERROR: - BLUFI_ERROR("BLUFI report error, error code %d\n", param->report_error.state); - esp_blufi_send_error_info(param->report_error.state); - break; - case ESP_BLUFI_EVENT_GET_WIFI_STATUS: { - wifi_mode_t mode; - esp_blufi_extra_info_t info; - - esp_wifi_get_mode(&mode); - - if (gl_sta_connected) { - memset(&info, 0, sizeof(esp_blufi_extra_info_t)); - memcpy(info.sta_bssid, gl_sta_bssid, 6); - info.sta_bssid_set = true; - info.sta_ssid = gl_sta_ssid; - info.sta_ssid_len = gl_sta_ssid_len; - esp_blufi_send_wifi_conn_report(mode, gl_sta_got_ip ? ESP_BLUFI_STA_CONN_SUCCESS : ESP_BLUFI_STA_NO_IP, softap_get_current_connection_number(), &info); - } else if (gl_sta_is_connecting) { - esp_blufi_send_wifi_conn_report(mode, ESP_BLUFI_STA_CONNECTING, softap_get_current_connection_number(), &gl_sta_conn_info); - } else { - esp_blufi_send_wifi_conn_report(mode, ESP_BLUFI_STA_CONN_FAIL, softap_get_current_connection_number(), &gl_sta_conn_info); - } - BLUFI_INFO("BLUFI get wifi status from AP\n"); - - break; - } - case ESP_BLUFI_EVENT_RECV_SLAVE_DISCONNECT_BLE: - BLUFI_INFO("blufi close a gatt connection"); - esp_blufi_disconnect(); - break; - case ESP_BLUFI_EVENT_DEAUTHENTICATE_STA: - /* TODO */ - break; - case ESP_BLUFI_EVENT_RECV_STA_BSSID: - memcpy(sta_config.sta.bssid, param->sta_bssid.bssid, 6); - sta_config.sta.bssid_set = 1; - esp_wifi_set_config(WIFI_IF_STA, &sta_config); - BLUFI_INFO("Recv STA BSSID %s\n", sta_config.sta.ssid); - break; - case ESP_BLUFI_EVENT_RECV_STA_SSID: - strncpy((char *)sta_config.sta.ssid, (char *)param->sta_ssid.ssid, param->sta_ssid.ssid_len); - sta_config.sta.ssid[param->sta_ssid.ssid_len] = '\0'; - esp_wifi_set_config(WIFI_IF_STA, &sta_config); - BLUFI_INFO("Recv STA SSID %s\n", sta_config.sta.ssid); - break; - case ESP_BLUFI_EVENT_RECV_STA_PASSWD: - strncpy((char *)sta_config.sta.password, (char *)param->sta_passwd.passwd, param->sta_passwd.passwd_len); - sta_config.sta.password[param->sta_passwd.passwd_len] = '\0'; - esp_wifi_set_config(WIFI_IF_STA, &sta_config); - BLUFI_INFO("Recv STA PASSWORD %s\n", sta_config.sta.password); - break; - case ESP_BLUFI_EVENT_RECV_SOFTAP_SSID: - strncpy((char *)ap_config.ap.ssid, (char *)param->softap_ssid.ssid, param->softap_ssid.ssid_len); - ap_config.ap.ssid[param->softap_ssid.ssid_len] = '\0'; - ap_config.ap.ssid_len = param->softap_ssid.ssid_len; - esp_wifi_set_config(WIFI_IF_AP, &ap_config); - BLUFI_INFO("Recv SOFTAP SSID %s, ssid len %d\n", ap_config.ap.ssid, ap_config.ap.ssid_len); - break; - case ESP_BLUFI_EVENT_RECV_SOFTAP_PASSWD: - strncpy((char *)ap_config.ap.password, (char *)param->softap_passwd.passwd, param->softap_passwd.passwd_len); - ap_config.ap.password[param->softap_passwd.passwd_len] = '\0'; - esp_wifi_set_config(WIFI_IF_AP, &ap_config); - BLUFI_INFO("Recv SOFTAP PASSWORD %s len = %d\n", ap_config.ap.password, param->softap_passwd.passwd_len); - break; - case ESP_BLUFI_EVENT_RECV_SOFTAP_MAX_CONN_NUM: - if (param->softap_max_conn_num.max_conn_num > 4) { - return; - } - ap_config.ap.max_connection = param->softap_max_conn_num.max_conn_num; - esp_wifi_set_config(WIFI_IF_AP, &ap_config); - BLUFI_INFO("Recv SOFTAP MAX CONN NUM %d\n", ap_config.ap.max_connection); - break; - case ESP_BLUFI_EVENT_RECV_SOFTAP_AUTH_MODE: - if (param->softap_auth_mode.auth_mode >= WIFI_AUTH_MAX) { - return; - } - ap_config.ap.authmode = param->softap_auth_mode.auth_mode; - esp_wifi_set_config(WIFI_IF_AP, &ap_config); - BLUFI_INFO("Recv SOFTAP AUTH MODE %d\n", ap_config.ap.authmode); - break; - case ESP_BLUFI_EVENT_RECV_SOFTAP_CHANNEL: - if (param->softap_channel.channel > 13) { - return; - } - ap_config.ap.channel = param->softap_channel.channel; - esp_wifi_set_config(WIFI_IF_AP, &ap_config); - BLUFI_INFO("Recv SOFTAP CHANNEL %d\n", ap_config.ap.channel); - break; - case ESP_BLUFI_EVENT_GET_WIFI_LIST:{ - wifi_scan_config_t scanConf = { - .ssid = NULL, - .bssid = NULL, - .channel = 0, - .show_hidden = false - }; - esp_err_t ret = esp_wifi_scan_start(&scanConf, true); - if (ret != ESP_OK) { - esp_blufi_send_error_info(ESP_BLUFI_WIFI_SCAN_FAIL); - } - break; - } - case ESP_BLUFI_EVENT_RECV_CUSTOM_DATA: - BLUFI_INFO("Recv Custom Data %" PRIu32 "\n", param->custom_data.data_len); - esp_log_buffer_hex("Custom Data", param->custom_data.data, param->custom_data.data_len); - break; - case ESP_BLUFI_EVENT_RECV_USERNAME: - /* Not handle currently */ - break; - case ESP_BLUFI_EVENT_RECV_CA_CERT: - /* Not handle currently */ - break; - case ESP_BLUFI_EVENT_RECV_CLIENT_CERT: - /* Not handle currently */ - break; - case ESP_BLUFI_EVENT_RECV_SERVER_CERT: - /* Not handle currently */ - break; - case ESP_BLUFI_EVENT_RECV_CLIENT_PRIV_KEY: - /* Not handle currently */ - break;; - case ESP_BLUFI_EVENT_RECV_SERVER_PRIV_KEY: - /* Not handle currently */ - break; - default: - break; - } -} - -void app_main(void) -{ - esp_err_t ret; - - // Initialize NVS - ret = nvs_flash_init(); - if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { - ESP_ERROR_CHECK(nvs_flash_erase()); - ret = nvs_flash_init(); - } - ESP_ERROR_CHECK( ret ); - - initialise_wifi(); - -#if CONFIG_BT_CONTROLLER_ENABLED || !CONFIG_BT_NIMBLE_ENABLED - ret = esp_blufi_controller_init(); - if (ret) { - BLUFI_ERROR("%s BLUFI controller init failed: %s\n", __func__, esp_err_to_name(ret)); - return; - } -#endif - - ret = esp_blufi_host_and_cb_init(&example_callbacks); - if (ret) { - BLUFI_ERROR("%s initialise failed: %s\n", __func__, esp_err_to_name(ret)); - return; - } - - BLUFI_INFO("BLUFI VERSION %04x\n", esp_blufi_get_version()); -} diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_init.c b/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_init.c deleted file mode 100644 index efb81ea..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_init.c +++ /dev/null @@ -1,283 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Unlicense OR CC0-1.0 - */ - -#include -#include "esp_err.h" -#include "esp_blufi_api.h" -#include "esp_log.h" -#include "esp_blufi.h" -#include "blufi_example.h" -#if CONFIG_BT_CONTROLLER_ENABLED || !CONFIG_BT_NIMBLE_ENABLED -#include "esp_bt.h" -#endif -#ifdef CONFIG_BT_BLUEDROID_ENABLED -#include "esp_bt_main.h" -#include "esp_bt_device.h" -#endif - -#ifdef CONFIG_BT_NIMBLE_ENABLED -#include "nimble/nimble_port.h" -#include "nimble/nimble_port_freertos.h" -#include "host/ble_hs.h" -#include "host/util/util.h" -#include "services/gap/ble_svc_gap.h" -#include "services/gatt/ble_svc_gatt.h" -#include "console/console.h" -#endif - -#ifdef CONFIG_BT_BLUEDROID_ENABLED -esp_err_t esp_blufi_host_init(void) -{ - int ret; - ret = esp_bluedroid_init(); - if (ret) { - BLUFI_ERROR("%s init bluedroid failed: %s\n", __func__, esp_err_to_name(ret)); - return ESP_FAIL; - } - - ret = esp_bluedroid_enable(); - if (ret) { - BLUFI_ERROR("%s init bluedroid failed: %s\n", __func__, esp_err_to_name(ret)); - return ESP_FAIL; - } - BLUFI_INFO("BD ADDR: "ESP_BD_ADDR_STR"\n", ESP_BD_ADDR_HEX(esp_bt_dev_get_address())); - - return ESP_OK; - -} - -esp_err_t esp_blufi_host_deinit(void) -{ - int ret; - ret = esp_blufi_profile_deinit(); - if(ret != ESP_OK) { - return ret; - } - - ret = esp_bluedroid_disable(); - if (ret) { - BLUFI_ERROR("%s deinit bluedroid failed: %s\n", __func__, esp_err_to_name(ret)); - return ESP_FAIL; - } - - ret = esp_bluedroid_deinit(); - if (ret) { - BLUFI_ERROR("%s deinit bluedroid failed: %s\n", __func__, esp_err_to_name(ret)); - return ESP_FAIL; - } - - return ESP_OK; - -} - -esp_err_t esp_blufi_gap_register_callback(void) -{ - int rc; - rc = esp_ble_gap_register_callback(esp_blufi_gap_event_handler); - if(rc){ - return rc; - } - return esp_blufi_profile_init(); -} - -esp_err_t esp_blufi_host_and_cb_init(esp_blufi_callbacks_t *example_callbacks) -{ - esp_err_t ret = ESP_OK; - - ret = esp_blufi_host_init(); - if (ret) { - BLUFI_ERROR("%s initialise host failed: %s\n", __func__, esp_err_to_name(ret)); - return ret; - } - - ret = esp_blufi_register_callbacks(example_callbacks); - if(ret){ - BLUFI_ERROR("%s blufi register failed, error code = %x\n", __func__, ret); - return ret; - } - - ret = esp_blufi_gap_register_callback(); - if(ret){ - BLUFI_ERROR("%s gap register failed, error code = %x\n", __func__, ret); - return ret; - } - - return ESP_OK; - -} - -#endif /* CONFIG_BT_BLUEDROID_ENABLED */ - -#if CONFIG_BT_CONTROLLER_ENABLED || !CONFIG_BT_NIMBLE_ENABLED -esp_err_t esp_blufi_controller_init() { - esp_err_t ret = ESP_OK; -#if CONFIG_IDF_TARGET_ESP32 - ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT)); -#endif - - esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); - ret = esp_bt_controller_init(&bt_cfg); - if (ret) { - BLUFI_ERROR("%s initialize bt controller failed: %s\n", __func__, esp_err_to_name(ret)); - return ret; - } - - ret = esp_bt_controller_enable(ESP_BT_MODE_BLE); - if (ret) { - BLUFI_ERROR("%s enable bt controller failed: %s\n", __func__, esp_err_to_name(ret)); - return ret; - } - return ret; -} -#endif - -#if CONFIG_BT_CONTROLLER_ENABLED || !CONFIG_BT_NIMBLE_ENABLED -esp_err_t esp_blufi_controller_deinit() { - esp_err_t ret = ESP_OK; - ret = esp_bt_controller_disable(); - if (ret) { - BLUFI_ERROR("%s disable bt controller failed: %s\n", __func__, esp_err_to_name(ret)); - return ret; - } - - ret = esp_bt_controller_deinit(); - if (ret) { - BLUFI_ERROR("%s deinit bt controller failed: %s\n", __func__, esp_err_to_name(ret)); - return ret; - } - - return ret; -} -#endif - -#ifdef CONFIG_BT_NIMBLE_ENABLED -void ble_store_config_init(void); -static void blufi_on_reset(int reason) -{ - MODLOG_DFLT(ERROR, "Resetting state; reason=%d\n", reason); -} - -static void -blufi_on_sync(void) -{ - esp_blufi_profile_init(); -} - -void bleprph_host_task(void *param) -{ - ESP_LOGI("BLUFI_EXAMPLE", "BLE Host Task Started"); - /* This function will return only when nimble_port_stop() is executed */ - nimble_port_run(); - - nimble_port_freertos_deinit(); -} - -esp_err_t esp_blufi_host_init(void) -{ - esp_err_t err; - err = esp_nimble_init(); - if (err) { - BLUFI_ERROR("%s failed: %s\n", __func__, esp_err_to_name(err)); - return ESP_FAIL; - } - -/* Initialize the NimBLE host configuration. */ - ble_hs_cfg.reset_cb = blufi_on_reset; - ble_hs_cfg.sync_cb = blufi_on_sync; - ble_hs_cfg.gatts_register_cb = esp_blufi_gatt_svr_register_cb; - ble_hs_cfg.store_status_cb = ble_store_util_status_rr; - - ble_hs_cfg.sm_io_cap = 4; -#ifdef CONFIG_EXAMPLE_BONDING - ble_hs_cfg.sm_bonding = 1; -#endif -#ifdef CONFIG_EXAMPLE_MITM - ble_hs_cfg.sm_mitm = 1; -#endif -#ifdef CONFIG_EXAMPLE_USE_SC - ble_hs_cfg.sm_sc = 1; -#else - ble_hs_cfg.sm_sc = 0; -#ifdef CONFIG_EXAMPLE_BONDING - ble_hs_cfg.sm_our_key_dist = 1; - ble_hs_cfg.sm_their_key_dist = 1; -#endif -#endif - - int rc; - rc = esp_blufi_gatt_svr_init(); - assert(rc == 0); - - /* Set the default device name. */ - rc = ble_svc_gap_device_name_set(BLUFI_DEVICE_NAME); - assert(rc == 0); - - /* XXX Need to have template for store */ - ble_store_config_init(); - - esp_blufi_btc_init(); - - err = esp_nimble_enable(bleprph_host_task); - if (err) { - BLUFI_ERROR("%s failed: %s\n", __func__, esp_err_to_name(err)); - return ESP_FAIL; - } - - return ESP_OK; -} - -esp_err_t esp_blufi_host_deinit(void) -{ - esp_err_t ret = ESP_OK; - - ret = nimble_port_stop(); - - if (ret == 0) { - esp_nimble_deinit(); - } - - ret = esp_blufi_profile_deinit(); - if(ret != ESP_OK) { - return ret; - } - - esp_blufi_btc_deinit(); - - return ret; -} - -esp_err_t esp_blufi_gap_register_callback(void) -{ - return ESP_OK; -} - -esp_err_t esp_blufi_host_and_cb_init(esp_blufi_callbacks_t *example_callbacks) -{ - esp_err_t ret = ESP_OK; - - ret = esp_blufi_register_callbacks(example_callbacks); - if(ret){ - BLUFI_ERROR("%s blufi register failed, error code = %x\n", __func__, ret); - return ret; - } - - ret = esp_blufi_gap_register_callback(); - if(ret){ - BLUFI_ERROR("%s gap register failed, error code = %x\n", __func__, ret); - return ret; - } - - ret = esp_blufi_host_init(); - if (ret) { - BLUFI_ERROR("%s initialise host failed: %s\n", __func__, esp_err_to_name(ret)); - return ret; - } - - return ret; -} - - -#endif /* CONFIG_BT_NIMBLE_ENABLED */ diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_security.c b/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_security.c deleted file mode 100644 index c651e19..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/main/blufi_security.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Unlicense OR CC0-1.0 - */ - -#include -#include -#include -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" -#include "freertos/event_groups.h" -#include "esp_system.h" -#include "esp_wifi.h" -#include "esp_event.h" -#include "esp_log.h" -#include "nvs_flash.h" -#include "esp_random.h" -#if CONFIG_BT_CONTROLLER_ENABLED || !CONFIG_BT_NIMBLE_ENABLED -#include "esp_bt.h" -#endif - -#include "esp_blufi_api.h" -#include "blufi_example.h" - -#include "mbedtls/aes.h" -#include "mbedtls/dhm.h" -#include "mbedtls/md5.h" -#include "esp_crc.h" - -/* - The SEC_TYPE_xxx is for self-defined packet data type in the procedure of "BLUFI negotiate key" - If user use other negotiation procedure to exchange(or generate) key, should redefine the type by yourself. - */ -#define SEC_TYPE_DH_PARAM_LEN 0x00 -#define SEC_TYPE_DH_PARAM_DATA 0x01 -#define SEC_TYPE_DH_P 0x02 -#define SEC_TYPE_DH_G 0x03 -#define SEC_TYPE_DH_PUBLIC 0x04 - - -struct blufi_security { -#define DH_SELF_PUB_KEY_LEN 128 -#define DH_SELF_PUB_KEY_BIT_LEN (DH_SELF_PUB_KEY_LEN * 8) - uint8_t self_public_key[DH_SELF_PUB_KEY_LEN]; -#define SHARE_KEY_LEN 128 -#define SHARE_KEY_BIT_LEN (SHARE_KEY_LEN * 8) - uint8_t share_key[SHARE_KEY_LEN]; - size_t share_len; -#define PSK_LEN 16 - uint8_t psk[PSK_LEN]; - uint8_t *dh_param; - int dh_param_len; - uint8_t iv[16]; - mbedtls_dhm_context dhm; - mbedtls_aes_context aes; -}; -static struct blufi_security *blufi_sec; - -static int myrand( void *rng_state, unsigned char *output, size_t len ) -{ - esp_fill_random(output, len); - return( 0 ); -} - -extern void btc_blufi_report_error(esp_blufi_error_state_t state); - -void blufi_dh_negotiate_data_handler(uint8_t *data, int len, uint8_t **output_data, int *output_len, bool *need_free) -{ - int ret; - uint8_t type = data[0]; - - if (blufi_sec == NULL) { - BLUFI_ERROR("BLUFI Security is not initialized"); - btc_blufi_report_error(ESP_BLUFI_INIT_SECURITY_ERROR); - return; - } - - switch (type) { - case SEC_TYPE_DH_PARAM_LEN: - blufi_sec->dh_param_len = ((data[1]<<8)|data[2]); - if (blufi_sec->dh_param) { - free(blufi_sec->dh_param); - blufi_sec->dh_param = NULL; - } - blufi_sec->dh_param = (uint8_t *)malloc(blufi_sec->dh_param_len); - if (blufi_sec->dh_param == NULL) { - btc_blufi_report_error(ESP_BLUFI_DH_MALLOC_ERROR); - BLUFI_ERROR("%s, malloc failed\n", __func__); - return; - } - break; - case SEC_TYPE_DH_PARAM_DATA:{ - if (blufi_sec->dh_param == NULL) { - BLUFI_ERROR("%s, blufi_sec->dh_param == NULL\n", __func__); - btc_blufi_report_error(ESP_BLUFI_DH_PARAM_ERROR); - return; - } - uint8_t *param = blufi_sec->dh_param; - memcpy(blufi_sec->dh_param, &data[1], blufi_sec->dh_param_len); - ret = mbedtls_dhm_read_params(&blufi_sec->dhm, ¶m, ¶m[blufi_sec->dh_param_len]); - if (ret) { - BLUFI_ERROR("%s read param failed %d\n", __func__, ret); - btc_blufi_report_error(ESP_BLUFI_READ_PARAM_ERROR); - return; - } - free(blufi_sec->dh_param); - blufi_sec->dh_param = NULL; - - const int dhm_len = mbedtls_dhm_get_len(&blufi_sec->dhm); - ret = mbedtls_dhm_make_public(&blufi_sec->dhm, dhm_len, blufi_sec->self_public_key, dhm_len, myrand, NULL); - if (ret) { - BLUFI_ERROR("%s make public failed %d\n", __func__, ret); - btc_blufi_report_error(ESP_BLUFI_MAKE_PUBLIC_ERROR); - return; - } - - ret = mbedtls_dhm_calc_secret( &blufi_sec->dhm, - blufi_sec->share_key, - SHARE_KEY_BIT_LEN, - &blufi_sec->share_len, - myrand, NULL); - if (ret) { - BLUFI_ERROR("%s mbedtls_dhm_calc_secret failed %d\n", __func__, ret); - btc_blufi_report_error(ESP_BLUFI_DH_PARAM_ERROR); - return; - } - - ret = mbedtls_md5(blufi_sec->share_key, blufi_sec->share_len, blufi_sec->psk); - - if (ret) { - BLUFI_ERROR("%s mbedtls_md5 failed %d\n", __func__, ret); - btc_blufi_report_error(ESP_BLUFI_CALC_MD5_ERROR); - return; - } - - mbedtls_aes_setkey_enc(&blufi_sec->aes, blufi_sec->psk, 128); - - /* alloc output data */ - *output_data = &blufi_sec->self_public_key[0]; - *output_len = dhm_len; - *need_free = false; - - } - break; - case SEC_TYPE_DH_P: - break; - case SEC_TYPE_DH_G: - break; - case SEC_TYPE_DH_PUBLIC: - break; - } -} - -int blufi_aes_encrypt(uint8_t iv8, uint8_t *crypt_data, int crypt_len) -{ - int ret; - size_t iv_offset = 0; - uint8_t iv0[16]; - - memcpy(iv0, blufi_sec->iv, sizeof(blufi_sec->iv)); - iv0[0] = iv8; /* set iv8 as the iv0[0] */ - - ret = mbedtls_aes_crypt_cfb128(&blufi_sec->aes, MBEDTLS_AES_ENCRYPT, crypt_len, &iv_offset, iv0, crypt_data, crypt_data); - if (ret) { - return -1; - } - - return crypt_len; -} - -int blufi_aes_decrypt(uint8_t iv8, uint8_t *crypt_data, int crypt_len) -{ - int ret; - size_t iv_offset = 0; - uint8_t iv0[16]; - - memcpy(iv0, blufi_sec->iv, sizeof(blufi_sec->iv)); - iv0[0] = iv8; /* set iv8 as the iv0[0] */ - - ret = mbedtls_aes_crypt_cfb128(&blufi_sec->aes, MBEDTLS_AES_DECRYPT, crypt_len, &iv_offset, iv0, crypt_data, crypt_data); - if (ret) { - return -1; - } - - return crypt_len; -} - -uint16_t blufi_crc_checksum(uint8_t iv8, uint8_t *data, int len) -{ - /* This iv8 ignore, not used */ - return esp_crc16_be(0, data, len); -} - -esp_err_t blufi_security_init(void) -{ - blufi_sec = (struct blufi_security *)malloc(sizeof(struct blufi_security)); - if (blufi_sec == NULL) { - return ESP_FAIL; - } - - memset(blufi_sec, 0x0, sizeof(struct blufi_security)); - - mbedtls_dhm_init(&blufi_sec->dhm); - mbedtls_aes_init(&blufi_sec->aes); - - memset(blufi_sec->iv, 0x0, 16); - return 0; -} - -void blufi_security_deinit(void) -{ - if (blufi_sec == NULL) { - return; - } - if (blufi_sec->dh_param){ - free(blufi_sec->dh_param); - blufi_sec->dh_param = NULL; - } - mbedtls_dhm_free(&blufi_sec->dhm); - mbedtls_aes_free(&blufi_sec->aes); - - memset(blufi_sec, 0x0, sizeof(struct blufi_security)); - - free(blufi_sec); - blufi_sec = NULL; -} diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults b/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults deleted file mode 100644 index 7efb350..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults +++ /dev/null @@ -1,18 +0,0 @@ -# Override some defaults so BT stack is enabled -# in this example - -# -# Partition Table -# (It's possible to fit Blufi in 1MB app partition size with some other optimizations, but -# default config is close to 1MB.) -CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y - -# -# BT config -# -CONFIG_BT_ENABLED=y -CONFIG_BT_GATTC_ENABLE=n -CONFIG_BT_BLE_SMP_ENABLE=n -CONFIG_BT_BLE_BLUFI_ENABLE=y -CONFIG_MBEDTLS_HARDWARE_MPI=n -CONFIG_MBEDTLS_DHM_C=y diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32 b/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32 deleted file mode 100644 index 0043387..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32 +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated using idf.py save-defconfig. It can be edited manually. -# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration -# -CONFIG_IDF_TARGET="esp32" -CONFIG_BT_ENABLED=y -# CONFIG_BT_BLE_50_FEATURES_SUPPORTED is not set -CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c2 b/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c2 deleted file mode 100644 index 47fa261..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c2 +++ /dev/null @@ -1,18 +0,0 @@ -# This file was generated using idf.py save-defconfig. It can be edited manually. -# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration -# -CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y -CONFIG_BT_ENABLED=y -CONFIG_BT_NIMBLE_BLUFI_ENABLE=y -# CONFIG_BT_GATTC_ENABLE is not set -# CONFIG_BT_BLE_SMP_ENABLE is not set -# CONFIG_BT_BLE_50_FEATURES_SUPPORTED is not set -CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y -CONFIG_MBEDTLS_DHM_C=y -# The config items for NIMBLE HOST -CONFIG_BT_NIMBLE_ENABLED=y -CONFIG_BT_NIMBLE_ROLE_CENTRAL=n -CONFIG_BT_NIMBLE_ROLE_OBSERVER=n -CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=n -CONFIG_BT_NIMBLE_SECURITY_ENABLE=n -CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=n diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c3 b/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c3 deleted file mode 100644 index 2cfad28..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c3 +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated using idf.py save-defconfig. It can be edited manually. -# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration -# -CONFIG_IDF_TARGET="esp32c3" -CONFIG_BT_ENABLED=y -# CONFIG_BT_BLE_50_FEATURES_SUPPORTED is not set -CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c6 b/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c6 deleted file mode 100644 index 47fa261..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32c6 +++ /dev/null @@ -1,18 +0,0 @@ -# This file was generated using idf.py save-defconfig. It can be edited manually. -# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration -# -CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y -CONFIG_BT_ENABLED=y -CONFIG_BT_NIMBLE_BLUFI_ENABLE=y -# CONFIG_BT_GATTC_ENABLE is not set -# CONFIG_BT_BLE_SMP_ENABLE is not set -# CONFIG_BT_BLE_50_FEATURES_SUPPORTED is not set -CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y -CONFIG_MBEDTLS_DHM_C=y -# The config items for NIMBLE HOST -CONFIG_BT_NIMBLE_ENABLED=y -CONFIG_BT_NIMBLE_ROLE_CENTRAL=n -CONFIG_BT_NIMBLE_ROLE_OBSERVER=n -CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=n -CONFIG_BT_NIMBLE_SECURITY_ENABLE=n -CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=n diff --git a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32s3 b/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32s3 deleted file mode 100644 index 631822e..0000000 --- a/code/09.extra/wifi_config/blufi/blufi-esp32/sdkconfig.defaults.esp32s3 +++ /dev/null @@ -1,7 +0,0 @@ -# This file was generated using idf.py save-defconfig. It can be edited manually. -# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration -# -CONFIG_IDF_TARGET="esp32s3" -CONFIG_BT_ENABLED=y -# CONFIG_BT_BLE_50_FEATURES_SUPPORTED is not set -CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y diff --git a/docs/docs/guide/.obsidian/workspace.json b/docs/docs/guide/.obsidian/workspace.json index 26f384d..f2878c6 100644 --- a/docs/docs/guide/.obsidian/workspace.json +++ b/docs/docs/guide/.obsidian/workspace.json @@ -4,22 +4,22 @@ "type": "split", "children": [ { - "id": "dbcfd28f34b2a13b", + "id": "8ff7430257e8e5f4", "type": "tabs", "children": [ { - "id": "ba89e06e4ba5dcbd", + "id": "c787cb3c2720eaca", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "10.项目实战/10.1-模块驱动案例/10.1.2-SG90舵机/SG90舵机.md", + "file": "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/42步进电机.md", "mode": "source", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "SG90舵机" + "title": "42步进电机" } } ] @@ -69,7 +69,7 @@ } ], "direction": "horizontal", - "width": 300 + "width": 240.5 }, "right": { "id": "5efe8913089ec8d6", @@ -85,13 +85,13 @@ "state": { "type": "outline", "state": { - "file": "10.项目实战/10.1-模块驱动案例/10.1.2-SG90舵机/SG90舵机.md", + "file": "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/42步进电机.md", "followCursor": false, "showSearch": false, "searchQuery": "" }, "icon": "lucide-list", - "title": "SG90舵机 的大纲" + "title": "42步进电机 的大纲" } } ] @@ -107,23 +107,39 @@ "templates:插入模板": false } }, - "active": "ba89e06e4ba5dcbd", + "active": "70853e127a5d7008", "lastOpenFiles": [ - "10.项目实战/10.1-模块驱动案例/10.1.1-28BYJ-48步进电机/28BYJ-48步进电机.md", - "04.外设学习/4.1-基础外设/4.1.6-LED_PWM/LED_PWM控制.md", - "10.项目实战/10.1-模块驱动案例/10.1.2-SG90舵机/SG90舵机.md", - "10.项目实战/10.1-模块驱动案例/10.1.2-SG90舵机/attachments/Pasted image 20250528152414.png", - "10.项目实战/10.1-模块驱动案例/10.1.2-SG90舵机/attachments/Pasted image 20250528152307.png", - "10.项目实战/10.1-模块驱动案例/10.1.2-SG90舵机/attachments", - "10.项目实战/10.1-模块驱动案例/10.1.1-28BYJ-48步进电机/attachments/Pasted image 20250527165130.png", - "10.项目实战/10.1-模块驱动案例/10.1.1-28BYJ-48步进电机/attachments/Pasted image 20250527163637.png", - "10.项目实战/10.1-模块驱动案例/10.1.1-28BYJ-48步进电机/attachments/Pasted image 20250527163522.png", - "10.项目实战/10.1-模块驱动案例/10.1.1-28BYJ-48步进电机/attachments/Pasted image 20250527162100.png", - "10.项目实战/10.1-模块驱动案例/10.1.1-28BYJ-48步进电机/attachments/Pasted image 20250527161829.png", - "10.项目实战/10.1-模块驱动案例/10.1.1-28BYJ-48步进电机/attachments", + "10.项目实战/10.1-模块驱动案例/10.1.4-rc522模块/rc522模块.md", + "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/42步进电机.md", "目录.md", - "04.外设学习/4.1-基础外设/4.1.1-GPIO/GPIO入门.md", "attachments/Templates.md", + "attachments/20250202192226.png", + "04.外设学习/4.3-其他外设/4.3.3-RMT/RMT.md", + "04.外设学习/4.3-其他外设/4.3.2-TWAI/TWAI.md", + "04.外设学习/4.3-其他外设/4.3.3-RMT", + "10.项目实战/10.1-模块驱动案例/10.1.4-rc522模块/attachments/Pasted image 20250624174842.png", + "10.项目实战/10.1-模块驱动案例/10.1.4-rc522模块/attachments/Pasted image 20250624174733.png", + "10.项目实战/10.1-模块驱动案例/10.1.4-rc522模块/attachments/Pasted image 20250624165127.png", + "10.项目实战/10.1-模块驱动案例/10.1.4-rc522模块/attachments", + "04.外设学习/4.1-基础外设/4.1.9-I2S/I2S入门.md", + "10.项目实战/10.1-模块驱动案例/10.1.4-rc522模块", + "04.外设学习/4.1-基础外设/4.1.7-I2C/I2C通信.md", + "10.项目实战/10.1-模块驱动案例/10.1.1-28BYJ-48步进电机/28BYJ-48步进电机.md", + "10.项目实战/10.1-模块驱动案例/10.1.2-SG90舵机/SG90舵机.md", + "04.外设学习/4.3-其他外设/4.3.1-MCPWM/MCPWM.md", + "04.外设学习/4.3-其他外设/4.3.2-TWAI", + "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604165352.png", + "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604164929.png", + "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604164852.png", + "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604162407.png", + "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604162227.png", + "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604162038.png", + "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments", + "10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机", + "04.外设学习/4.1-基础外设/4.1.6-LED_PWM/LED_PWM控制.md", + "10.项目实战/10.1-模块驱动案例/10.1.2-SG90舵机/attachments", + "10.项目实战/10.1-模块驱动案例/10.1.1-28BYJ-48步进电机/attachments", + "04.外设学习/4.1-基础外设/4.1.1-GPIO/GPIO入门.md", "04.外设学习/4.1-基础外设/4.1.4-ADC/ADC模数转换.md", "01.认识ESP32/1.1-ESP32介绍/ESP32介绍.md", "00.常见问题及解决方案/常见问题及解决方案.md", @@ -131,12 +147,7 @@ "10.项目实战/10.1-模块驱动案例/未命名.md", "10.项目实战/10.1-模块驱动案例/10.1.1-28BYJ-48步进电机", "04.外设学习/4.4-外设使用案例/未命名.md", - "04.外设学习/4.4-外设使用案例/未命名", - "10.项目实战/10.1-模块驱动案例", - "00.常见问题及解决方案/attachments/20250210094506.png", - "attachments/20250202192226.png", "01.认识ESP32/1.2-ESP32开发环境搭建/1.环境搭建-Windows.md", - "03.FreeRTOS基础/3.4-FreeRTOS软件定时器/FreeRTOS软件定时器.md", - "00.常见问题及解决方案/attachments/20250506154522.png" + "03.FreeRTOS基础/3.4-FreeRTOS软件定时器/FreeRTOS软件定时器.md" ] } \ No newline at end of file diff --git a/docs/docs/guide/04.外设学习/4.1-基础外设/4.1.9-I2S/I2S入门.md b/docs/docs/guide/04.外设学习/4.1-基础外设/4.1.9-I2S/I2S入门.md index 6a37918..45e2a2e 100644 --- a/docs/docs/guide/04.外设学习/4.1-基础外设/4.1.9-I2S/I2S入门.md +++ b/docs/docs/guide/04.外设学习/4.1-基础外设/4.1.9-I2S/I2S入门.md @@ -29,10 +29,8 @@ Inter-IC Sount Bus(I2S)是飞利浦半导体公司(现为恩智浦半导体公 **SCK: (continuous serial clock) 串行时钟**:标准名称为“连续串列主频” - **WS: (word select) 字段(声道)选择:** 也称为“帧同步线” - **SD: (serial data) 串行数据 :** 也可称为SDATA,SDIN,SDOUT,DACDAT,ADCDAT等 diff --git a/docs/docs/guide/04.外设学习/4.3-其他外设/4.3.2-TWAI/TWAI.md b/docs/docs/guide/04.外设学习/4.3-其他外设/4.3.2-TWAI/TWAI.md new file mode 100644 index 0000000..50c5807 --- /dev/null +++ b/docs/docs/guide/04.外设学习/4.3-其他外设/4.3.2-TWAI/TWAI.md @@ -0,0 +1,99 @@ +# 双线汽车接口 (TWAI) -(CAN) + +> [!TIP] 🚀 ESP32 外设之双线汽车接口 (TWAI) | +> - 💡 **碎碎念**😎:本节将介绍 ESP32 的双线汽车接口 (TWAI) ,他是是一种适用于汽车和工业应用的实时串行通信协议。 +> - 📺 **视频教程**:🚧 *开发中* +> - 💾 **示例代码**:🚧 *开发中* + +双线汽车接口 (TWAI) 是一种适用于汽车和工业应用的实时串行通信协议。它兼容 ISO11898-1 经典帧,因此可以支持标准帧格式(11 位 ID)和扩展帧格式(29 位 ID)。ESP32 包含 1 个 TWAI 控制器,经配置可以在 TWAI 总线上使用外部收发器通信。 + +注意:TWAI 控制器不兼容 ISO11898-1 FD 格式帧,并会将这些帧解析为错误。 + +## 一、前言简介 + +- 简介:TWAI(Two-Wire Automotive Interface)是 ESP32 提供的 CAN 协议兼容实现。 +- 协议兼容性:支持 ISO11898-1 标准帧和扩展帧格式,不支持 CAN-FD。 +- 应用场景: + - 车载设备通信 + - 工业自动化系统 + - 多主多从嵌入式网络 + +--- + +## 二、协议基础 + +- TWAI = Classic CAN(兼容) +- 帧格式: + - 标准帧(11 位 ID) + - 扩展帧(29 位 ID) + - 数据帧、远程帧、错误帧 +- 仲裁机制与优先级 +- 位定时与波特率选择(如 500kbps) + +--- + +## 三、硬件准备 + +- ESP32 模块(推荐 WROOM/WROVER 系列) +- CAN 收发器(如 SN65HVD230、TJA1050) +- 接线说明: + - ESP32 TX ➝ 收发器 TXD + - ESP32 RX ➝ 收发器 RXD + - CANH、CANL ➝ 总线 +- 加 120Ω 终端电阻于总线两端 +- 电源要求与隔离建议(如长距离通信建议使用隔离型收发器) + +--- + +## 四、软件环境配置(ESP-IDF) + +- 驱动初始化步骤: + - `twai_driver_install()` + - `twai_start()` +- 主要结构体: + - `twai_message_t`:数据帧定义 + - `twai_general_config_t`、`twai_timing_config_t`、`twai_filter_config_t` +- 示例配置波特率、引脚、模式等参数 +- 使用 FreeRTOS 任务接收数据(推荐) + +--- + +## 五、发送与接收示例 + +- ✅ 发送帧示例(标准帧、扩展帧) +- ✅ 接收帧示例(阻塞与非阻塞) +- 🔁 循环发送测试数据 +- 🛑 超时处理和帧校验 +- 🚦 使用中断或轮询方式收发 + +--- + +## 六、调试与验证 + +- 使用逻辑分析仪/示波器查看 CANH/CANL 波形 +- 多设备组网互通验证(例如连接另一个 STM32/开发板) +- 常见问题排查: + - 没有数据 ➝ 检查终端电阻、电压、接线 + - 接收错误 ➝ 检查帧格式、波特率一致性 + - 控制器状态 ➝ 使用 `twai_get_status_info()` 查看错误码 + +--- + +## 七、高级应用(可选) + +- 设置 ID 过滤器(精确匹配 / 范围匹配) +- 发送优先级控制(低 ID = 高优先级) +- 状态监测:总线关闭、错误计数 +- 灵活切换正常模式 / 回环模式 / 监听模式 + +--- + +## 八、总结与资料 + +- 官方文档: + - [ESP-IDF TWAI 文档](https://docs.espressif.com/projects/esp-idf/zh/latest/esp32/api-reference/peripherals/twai.html) +- 推荐资料: + - CAN 协议详解(推荐阅读 Bosch CAN spec) + - 收发器芯片选型参考 +- 视频教程:🚧 *开发中* +- 示例代码:🚧 *开发中* diff --git a/docs/docs/guide/04.外设学习/4.3-其他外设/4.3.3-RMT/RMT.md b/docs/docs/guide/04.外设学习/4.3-其他外设/4.3.3-RMT/RMT.md new file mode 100644 index 0000000..0a84751 --- /dev/null +++ b/docs/docs/guide/04.外设学习/4.3-其他外设/4.3.3-RMT/RMT.md @@ -0,0 +1,4 @@ +# 红外遥控 (RMT) + + +红外遥控 (RMT) 外设是一个红外发射和接收控制器。其数据格式灵活,可进一步扩展为多功能的通用收发器,发送或接收多种类型的信号。就网络分层而言,RMT 硬件包含物理层和数据链路层。物理层定义通信介质和比特信号的表示方式,数据链路层定义 RMT 帧的格式。 \ No newline at end of file diff --git a/docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/42步进电机.md b/docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/42步进电机.md new file mode 100644 index 0000000..0b0b840 --- /dev/null +++ b/docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/42步进电机.md @@ -0,0 +1,108 @@ + +# ESP32驱动42步进电机 + +> [!TIP] 🚀 ESP32驱动42步进电机 | XXXXX +> - 💡 **碎碎念**😎:本节将介绍XXXXXXXXXXXXXXXXXXX +> - 📺 **视频教程**:🚧 *开发中* +> - 💾 **示例代码**:🚧 *开发中* +> + +## 一、介绍 + +### 1.1 什么是42步进电机? + +42步进电机是一种常见的小型两相步进电机,因其电机外壳边长为 42mm 而得名(即 NEMA 17 尺寸标准)。该类电机广泛应用于 3D打印机、激光雕刻机、CNC加工设备、机器人 等对位置控制要求较高的场景。 + +常见参数如下: + +- 步距角:1.8°(每转200步)或 0.9°(每转400步) +- 工作电压:一般为 12V 或 24V +- 峰值电流:0.8A ~ 2A + +### 1.2 步进电机工作原理 + +步进电机是一种将电脉冲信号转换为角位移的电机。当控制器发出一个脉冲信号,电机就按照设定角度旋转一步。通过调节脉冲频率,可以控制电机的转速;通过控制脉冲数量,可以精准控制角位移。 + +具体的工作原理在此不再赘述,大家可自行上网查阅。由于其不需要编码器即可进行位置控制,特别适合需要开环控制的系统。 + +下面简单对比步进电机与直流电机 / 伺服电机的区别: + +| 特性 | 步进电机 | 直流电机 | 伺服电机 | +| ---- | --------------- | --------- | ---------- | +| 控制方式 | 开环(可闭环) | 电压/电流控制 | 闭环(带编码器) | +| 精度 | 高(0.9°\~1.8°/步) | 低 | 非常高(编码器支持) | +| 启停性能 | 好 | 中 | 非常好 | +| 振动噪音 | 较大(尤其低速) | 小 | 极小 | +| 价格 | 便宜 | 更便宜 | 昂贵 | +| 适合应用 | 中低速定位控制 | 普通旋转/风扇/泵 | 高速高精定位控制 | + +值得注意的是,我们需要了解一下细分技术: + +传统步进电机的步距角通常为 1.8°(每圈 200 步),在一些对平稳性和精度要求更高的场合,1.8° 的步进角可能仍然过大,运行过程中会出现抖动、不平滑等问题。为此,引入了 细分驱动(Microstepping) 技术。 + +细分驱动器不是简单地控制电机绕组全电流通断,而是通过 PWM 控制 或 电流恒流分级控制,将每个完整步细分为若干个微小步。比如: + +- 半步细分:每步 0.9°,一圈 400 步; +- 1/8 细分:每步 0.225°,一圈 1600 步; +- 1/16 细分:每步 0.1125°,一圈 3200 步; + +细分的优势在于提高分辨率和控制精度,运行更平滑、减少共振,降低噪音和震动和改善电机低速运行性能。虽然细分技术能提高控制平滑度,但并不能无限提高“实际定位精度”,因为电机本身的机械和磁滞误差仍然存在。高细分主要用于改善运动特性,而不是绝对定位精度。并且市面上常见的步进电机驱动器基本都支持细分。 +### 1.3 常用驱动器 + +步进电机无法直接由电源驱动,必须通过驱动器精确控制线圈的电流方向与大小。以下是几种常用驱动器及其特点: +#### 1. A4988 驱动芯片 + +A4988 是一种体积小、成本低的双极步进电机驱动模块,广泛应用于 3D 打印机、桌面级 CNC 等入门级设备。它支持全步、半步、1/4、1/8 和 1/16 微步细分,并带有可调电流限制功能。模块自带过热保护和欠压保护,接口简单、体积小巧,适合面包板快速开发。但需要注意的是,该模块在高电流下易发热,接线错误或通电顺序错误容易烧毁,因此在使用时要特别注意接线安全与散热。 + +![](attachments/Pasted%20image%2020250604162038.png) +#### 2. tb6600 驱动器 + +TB6600 驱动器是面向工业级场景设计的中功率步进电机驱动器,支持工作电压 9V 到 42V,最大输出电流可达 4.5A,常用于控制较大扭矩的 42、57、86 步进电机。它支持的细分模式从全步到 32步,用户可通过拨码开关手动配置。TB6600 驱动器通常带有铝合金壳体和散热片,接口清晰,安装方便,适用于 CNC 雕刻机、激光切割、机械臂等中大型场合。相比 A4988,TB6600 功率更大、稳定性更好,但体积较大,不适合空间受限的设计,且价格略高。 + +![](attachments/Pasted%20image%2020250604162227.png) + +#### 3.DRV8825驱动芯片 + +DRV8825 是德州仪器推出的一款高性能步进电机驱动器,与 A4988 引脚兼容但性能更强。其支持最多 1/32 步细分。相比 A4988,它支持更高的工作电压,能够在更高速度下提供更大的扭矩,同时运行更安静,抖动更小。它适用于对噪音和稳定性有更高要求的项目,如中高端 3D 打印机或机器人项目。不过也需注意散热问题,可以在模块上添加散热片。 + +![](attachments/Pasted%20image%2020250604162407.png) + + + +## 二、使用 + +下面简单介绍一下使用ESP32配合DRV8825驱动芯片驱动42步进电机: + +首先介绍DRV8825驱动模块,我们买到的DRV8825步进驱动模块一般如下图: + +![](attachments/Pasted%20image%2020250604162407.png) + +DRV8825 是德州仪器设计的集成电机驱动芯片。 芯片内部集成了2个H桥电路和1/32微步进分度器, 可以驱动一个双极型电机或两个直流有刷电机。主要有如下特点: + +1. 适合驱动8.2V~45V2.5A以下的步进电机: +2. 只有简单的步进和方向控制接口; +3. 六个不同的步进模式:全、半、1/4、1/8、1/16、1/32; +4. 可调电位器可以调节最大电流输出,从而获得更高的步进率; +5. 自动电流衰减模式检测/选择; +6. 过热关闭电路、欠压锁定、交叉电流保护; + +它的引脚定义是这样的: + + +![](attachments/Pasted%20image%2020250604164929.png) + + +这是芯片手册中的简化控制示意图: + +![](attachments/Pasted%20image%2020250604164852.png) + +## 三、示例 + + + + + + + +# 参考链接 + diff --git a/docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604162038.png b/docs/docs/guide/10.项目实战/10.1-模块驱动案例/10.1.3-42步进电机/attachments/Pasted image 20250604162038.png new file mode 100644 index 0000000000000000000000000000000000000000..c768dc7233624affa5d3fea33d3a4125857375a9 GIT binary patch literal 1401346 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ΜB6NG$UpH{Acl*_tFU-7m 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

-g;qR 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ʈ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


Q{khH94C+fHduBUo=0 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