@onekeyfe/hd-web-sdk 0.1.52 → 0.1.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4035,6 +4035,8 @@ var sha256 = __webpack_require__(1965);
4035
4035
 
4036
4036
  var hdTransport = __webpack_require__(7495);
4037
4037
 
4038
+ var sha3 = __webpack_require__(3669);
4039
+
4038
4040
  function _interopDefaultLegacy(e) {
4039
4041
  return e && typeof e === 'object' && 'default' in e ? e : {
4040
4042
  'default': e
@@ -4049,6 +4051,8 @@ var BigNumber__default = /*#__PURE__*/_interopDefaultLegacy(BigNumber);
4049
4051
 
4050
4052
  var sha256__default = /*#__PURE__*/_interopDefaultLegacy(sha256);
4051
4053
 
4054
+ var sha3__default = /*#__PURE__*/_interopDefaultLegacy(sha3);
4055
+
4052
4056
  const inject = ({
4053
4057
  call,
4054
4058
  cancel,
@@ -4273,6 +4277,10 @@ const inject = ({
4273
4277
  connectId,
4274
4278
  method: 'firmwareUpdate'
4275
4279
  })),
4280
+ firmwareUpdateV2: (connectId, params) => call(Object.assign(Object.assign({}, params), {
4281
+ connectId,
4282
+ method: 'firmwareUpdateV2'
4283
+ })),
4276
4284
  requestWebUsbDevice: () => call({
4277
4285
  method: 'requestWebUsbDevice'
4278
4286
  }),
@@ -5141,6 +5149,12 @@ const getPassphraseState = (features, commands) => __awaiter(void 0, void 0, voi
5141
5149
  return message.address;
5142
5150
  });
5143
5151
 
5152
+ const supportBatchPublicKey = features => {
5153
+ if (!features) return false;
5154
+ const currentVersion = getDeviceFirmwareVersion(features).join('.');
5155
+ return semver__default["default"].gte(currentVersion, '2.6.0');
5156
+ };
5157
+
5144
5158
  var nested = {
5145
5159
  AptosGetAddress: {
5146
5160
  fields: {
@@ -14606,6 +14620,10 @@ const LoggerMap = {
14606
14620
 
14607
14621
  const getLogger = key => LoggerMap[key];
14608
14622
 
14623
+ const wait = ms => new Promise(resolve => {
14624
+ setTimeout(resolve, ms);
14625
+ });
14626
+
14609
14627
  const getReleaseStatus = (releases, currentVersion) => {
14610
14628
  const newVersions = releases.filter(r => semver__default["default"].gt(r.version.join('.'), currentVersion));
14611
14629
 
@@ -14832,6 +14850,7 @@ const UI_REQUEST$1 = {
14832
14850
  LOCATION_PERMISSION: 'ui-location_permission',
14833
14851
  LOCATION_SERVICE_PERMISSION: 'ui-location_service_permission',
14834
14852
  FIRMWARE_PROGRESS: 'ui-firmware-progress',
14853
+ FIRMWARE_TIP: 'ui-firmware-tip',
14835
14854
  NOT_IN_BOOTLOADER: 'ui-device_not_in_bootloader_mode'
14836
14855
  };
14837
14856
 
@@ -15505,7 +15524,8 @@ const UI_REQUEST = {
15505
15524
  FIRMWARE_NOT_SUPPORTED: 'ui-device_firmware_unsupported',
15506
15525
  FIRMWARE_NOT_COMPATIBLE: 'ui-device_firmware_not_compatible',
15507
15526
  FIRMWARE_NOT_INSTALLED: 'ui-device_firmware_not_installed',
15508
- NOT_USE_ONEKEY_DEVICE: 'ui-device_please_use_onekey_device'
15527
+ NOT_USE_ONEKEY_DEVICE: 'ui-device_please_use_onekey_device',
15528
+ FIRMWARE_TIP: 'ui-firmware-tip'
15509
15529
  };
15510
15530
 
15511
15531
  const pkg = __webpack_require__(2391);
@@ -16472,6 +16492,29 @@ const formatAnyHex = value => {
16472
16492
  return value;
16473
16493
  };
16474
16494
 
16495
+ Array.from({
16496
+ length: 256
16497
+ }, (v, i) => i.toString(16).padStart(2, '0'));
16498
+
16499
+ function hexToBytes(hex) {
16500
+ if (typeof hex !== 'string') {
16501
+ throw new TypeError(`hexToBytes: expected string, got ${typeof hex}`);
16502
+ }
16503
+
16504
+ if (hex.length % 2) throw new Error('hexToBytes: received invalid unpadded hex');
16505
+ const array = new Uint8Array(hex.length / 2);
16506
+
16507
+ for (let i = 0; i < array.length; i++) {
16508
+ const j = i * 2;
16509
+ const hexByte = hex.slice(j, j + 2);
16510
+ const byte = Number.parseInt(hexByte, 16);
16511
+ if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');
16512
+ array[i] = byte;
16513
+ }
16514
+
16515
+ return array;
16516
+ }
16517
+
16475
16518
  const invalidParameter = message => hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, message);
16476
16519
 
16477
16520
  const validateParams = (values, fields) => {
@@ -16880,7 +16923,7 @@ const getBinary = ({
16880
16923
  throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'no firmware found for this device');
16881
16924
  }
16882
16925
 
16883
- if (version && !semver__default["default"].eq(releaseInfo.version, version)) {
16926
+ if (version && !semver__default["default"].eq(releaseInfo.version.join('.'), version.join('.'))) {
16884
16927
  throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'firmware version mismatch');
16885
16928
  }
16886
16929
 
@@ -16929,6 +16972,15 @@ const postProgressMessage = (device, progress, postMessage) => {
16929
16972
  }));
16930
16973
  };
16931
16974
 
16975
+ const postProgressTip = (device, message, postMessage) => {
16976
+ postMessage(createUiMessage(UI_REQUEST$1.FIRMWARE_TIP, {
16977
+ device: device.toMessageObject(),
16978
+ data: {
16979
+ message
16980
+ }
16981
+ }));
16982
+ };
16983
+
16932
16984
  const uploadFirmware = (updateType, typedCall, postMessage, device, {
16933
16985
  payload
16934
16986
  }) => __awaiter(void 0, void 0, void 0, function* () {
@@ -16936,8 +16988,10 @@ const uploadFirmware = (updateType, typedCall, postMessage, device, {
16936
16988
 
16937
16989
  if (((_a = device.features) === null || _a === void 0 ? void 0 : _a.major_version) === 1) {
16938
16990
  postConfirmationMessage(device);
16991
+ postProgressTip(device, 'ConfirmOnDevice', postMessage);
16939
16992
  const eraseCommand = updateType === 'firmware' ? 'FirmwareErase' : 'FirmwareErase_ex';
16940
16993
  yield typedCall(eraseCommand, 'Success', {});
16994
+ postProgressTip(device, 'FirmwareEraseSuccess', postMessage);
16941
16995
  postProgressMessage(device, 0, postMessage);
16942
16996
  const {
16943
16997
  message
@@ -16950,10 +17004,12 @@ const uploadFirmware = (updateType, typedCall, postMessage, device, {
16950
17004
 
16951
17005
  if (((_b = device.features) === null || _b === void 0 ? void 0 : _b.major_version) === 2) {
16952
17006
  postConfirmationMessage(device);
17007
+ postProgressTip(device, 'ConfirmOnDevice', postMessage);
16953
17008
  const length = payload.byteLength;
16954
17009
  let response = yield typedCall('FirmwareErase', ['FirmwareRequest', 'Success'], {
16955
17010
  length
16956
17011
  });
17012
+ postProgressTip(device, 'FirmwareEraseSuccess', postMessage);
16957
17013
 
16958
17014
  while (response.type !== 'Success') {
16959
17015
  const start = response.message.offset;
@@ -16976,7 +17032,7 @@ const uploadFirmware = (updateType, typedCall, postMessage, device, {
16976
17032
  throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'uploadFirmware: unknown major_version');
16977
17033
  });
16978
17034
 
16979
- class FirmwareUpdate extends BaseMethod {
17035
+ class FirmwareUpdate$1 extends BaseMethod {
16980
17036
  init() {
16981
17037
  this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.INITIALIZE];
16982
17038
  this.requireDeviceMode = [UI_REQUEST.BOOTLOADER];
@@ -17050,6 +17106,157 @@ class FirmwareUpdate extends BaseMethod {
17050
17106
 
17051
17107
  }
17052
17108
 
17109
+ class FirmwareUpdate extends BaseMethod {
17110
+ constructor() {
17111
+ super(...arguments);
17112
+ this.checkPromise = null;
17113
+
17114
+ this.postTipMessage = message => {
17115
+ this.postMessage(createUiMessage(UI_REQUEST.FIRMWARE_TIP, {
17116
+ device: this.device.toMessageObject(),
17117
+ data: {
17118
+ message
17119
+ }
17120
+ }));
17121
+ };
17122
+ }
17123
+
17124
+ init() {
17125
+ this.allowDeviceMode = [UI_REQUEST.BOOTLOADER, UI_REQUEST.INITIALIZE];
17126
+ this.requireDeviceMode = [];
17127
+ this.useDevicePassphraseState = false;
17128
+ const {
17129
+ payload
17130
+ } = this;
17131
+ validateParams(payload, [{
17132
+ name: 'version',
17133
+ type: 'array'
17134
+ }, {
17135
+ name: 'binary',
17136
+ type: 'buffer'
17137
+ }]);
17138
+
17139
+ if (!payload.updateType) {
17140
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.CallMethodInvalidParameter, 'updateType is required');
17141
+ }
17142
+
17143
+ this.params = {
17144
+ updateType: payload.updateType
17145
+ };
17146
+
17147
+ if ('version' in payload) {
17148
+ this.params = Object.assign(Object.assign({}, this.params), {
17149
+ version: payload.version
17150
+ });
17151
+ }
17152
+
17153
+ if ('binary' in payload) {
17154
+ this.params = Object.assign(Object.assign({}, this.params), {
17155
+ binary: payload.binary
17156
+ });
17157
+ }
17158
+ }
17159
+
17160
+ checkDeviceToBootloader() {
17161
+ this.checkPromise = hdShared.createDeferred();
17162
+ const intervalTimer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
17163
+ var _a, _b, _c, _d;
17164
+
17165
+ const deviceDiff = yield (_a = this.device.deviceConnector) === null || _a === void 0 ? void 0 : _a.enumerate();
17166
+ const devicesDescriptor = (_b = deviceDiff === null || deviceDiff === void 0 ? void 0 : deviceDiff.descriptors) !== null && _b !== void 0 ? _b : [];
17167
+ const {
17168
+ deviceList
17169
+ } = yield DevicePool.getDevices(devicesDescriptor, this.connectId);
17170
+ console.log('device list: ', deviceList);
17171
+
17172
+ if (deviceList.length === 1 && ((_c = deviceList[0].features) === null || _c === void 0 ? void 0 : _c.bootloader_mode)) {
17173
+ this.device.updateFromCache(deviceList[0]);
17174
+ this.device.commands.disposed = false;
17175
+ clearInterval(intervalTimer);
17176
+ (_d = this.checkPromise) === null || _d === void 0 ? void 0 : _d.resolve(true);
17177
+ }
17178
+ }), 2000);
17179
+ setTimeout(() => {
17180
+ if (this.checkPromise) {
17181
+ clearInterval(intervalTimer);
17182
+ this.checkPromise.reject(new Error());
17183
+ }
17184
+ }, 30000);
17185
+ }
17186
+
17187
+ run() {
17188
+ var _a, _b;
17189
+
17190
+ return __awaiter(this, void 0, void 0, function* () {
17191
+ const {
17192
+ device,
17193
+ params
17194
+ } = this;
17195
+ const {
17196
+ features,
17197
+ commands
17198
+ } = device;
17199
+
17200
+ if (!(features === null || features === void 0 ? void 0 : features.bootloader_mode)) {
17201
+ const uuid = getDeviceUUID(features);
17202
+ const deviceType = getDeviceType(features);
17203
+
17204
+ if (deviceType === 'mini') {
17205
+ return Promise.reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceUnexpectedBootloaderMode));
17206
+ }
17207
+
17208
+ try {
17209
+ this.postTipMessage('AutoRebootToBootloader');
17210
+ yield commands.typedCall('BixinReboot', 'Success');
17211
+ this.postTipMessage('GoToBootloaderSuccess');
17212
+ this.checkDeviceToBootloader();
17213
+
17214
+ if (deviceType === 'classic') {
17215
+ DevicePool.clearDeviceCache(uuid);
17216
+ }
17217
+
17218
+ delete DevicePool.devicesCache[''];
17219
+ yield (_a = this.checkPromise) === null || _a === void 0 ? void 0 : _a.promise;
17220
+ this.checkPromise = null;
17221
+ yield wait(1500);
17222
+ } catch (e) {
17223
+ console.log('auto go to bootloader mode failed: ', e);
17224
+ return Promise.reject(hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'go to bootloader mode failed'));
17225
+ }
17226
+ }
17227
+
17228
+ let binary;
17229
+
17230
+ try {
17231
+ if (params.binary) {
17232
+ binary = this.params.binary;
17233
+ } else {
17234
+ if (!device.features) {
17235
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.RuntimeError, 'no features found for this device');
17236
+ }
17237
+
17238
+ this.postTipMessage('DownloadFirmware');
17239
+ const firmware = yield getBinary({
17240
+ features: device.features,
17241
+ version: params.version,
17242
+ updateType: params.updateType
17243
+ });
17244
+ binary = firmware.binary;
17245
+ this.postTipMessage('DownloadFirmwareSuccess');
17246
+ }
17247
+ } catch (err) {
17248
+ throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.FirmwareUpdateDownloadFailed, (_b = err.message) !== null && _b !== void 0 ? _b : err);
17249
+ }
17250
+
17251
+ yield this.device.acquire();
17252
+ return uploadFirmware(params.updateType, this.device.getCommands().typedCall.bind(this.device.getCommands()), this.postMessage, device, {
17253
+ payload: binary
17254
+ });
17255
+ });
17256
+ }
17257
+
17258
+ }
17259
+
17053
17260
  const Log$2 = getLogger(exports.d0.Method);
17054
17261
 
17055
17262
  class RequestWebUsbDevice extends BaseMethod {
@@ -20660,6 +20867,10 @@ class NearSignTransaction extends BaseMethod {
20660
20867
 
20661
20868
  }
20662
20869
 
20870
+ const {
20871
+ sha3_256: sha3Hash
20872
+ } = sha3__default["default"];
20873
+
20663
20874
  class AptosGetAddress extends BaseMethod {
20664
20875
  constructor() {
20665
20876
  super(...arguments);
@@ -20699,8 +20910,30 @@ class AptosGetAddress extends BaseMethod {
20699
20910
  });
20700
20911
  }
20701
20912
 
20913
+ publicKeyToAddress(publicKey) {
20914
+ const hash = sha3Hash.create();
20915
+ hash.update(hexToBytes(publicKey));
20916
+ hash.update("\x00");
20917
+ return hash.hex();
20918
+ }
20919
+
20702
20920
  run() {
20921
+ var _a;
20922
+
20703
20923
  return __awaiter(this, void 0, void 0, function* () {
20924
+ if (this.hasBundle && supportBatchPublicKey((_a = this.device) === null || _a === void 0 ? void 0 : _a.features)) {
20925
+ const res = yield this.device.commands.typedCall('BatchGetPublickeys', 'EcdsaPublicKeys', {
20926
+ paths: this.params,
20927
+ ecdsa_curve_name: 'ed25519'
20928
+ });
20929
+ const result = res.message.public_keys.map((publicKey, index) => ({
20930
+ path: serializedPath(this.params[index].address_n),
20931
+ publicKey,
20932
+ address: this.publicKeyToAddress(publicKey)
20933
+ }));
20934
+ return Promise.resolve(result);
20935
+ }
20936
+
20704
20937
  const responses = [];
20705
20938
 
20706
20939
  for (let i = 0; i < this.params.length; i++) {
@@ -20782,7 +21015,8 @@ var ApiMethods = /*#__PURE__*/Object.freeze({
20782
21015
  deviceSupportFeatures: DeviceSupportFeatures,
20783
21016
  deviceVerify: DeviceVerify,
20784
21017
  deviceWipe: DeviceWipe,
20785
- firmwareUpdate: FirmwareUpdate,
21018
+ firmwareUpdate: FirmwareUpdate$1,
21019
+ firmwareUpdateV2: FirmwareUpdate,
20786
21020
  requestWebUsbDevice: RequestWebUsbDevice,
20787
21021
  batchGetPublicKey: BatchGetPublicKey,
20788
21022
  cipherKeyValue: CipherKeyValue,
@@ -21237,7 +21471,7 @@ function initDevice(method) {
21237
21471
  } else if (allDevices.length === 1) {
21238
21472
  [device] = allDevices;
21239
21473
  } else if (allDevices.length > 1) {
21240
- throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.SelectDevice);
21474
+ throw hdShared.ERRORS.TypedError(method.name === 'firmwareUpdateV2' ? hdShared.HardwareErrorCode.FirmwareUpdateLimitOneDevice : hdShared.HardwareErrorCode.SelectDevice);
21241
21475
  }
21242
21476
 
21243
21477
  if (!device) {
@@ -21340,7 +21574,7 @@ const ensureConnected = (method, pollingId) => __awaiter(void 0, void 0, void 0,
21340
21574
  } catch (error) {
21341
21575
  Log.debug('device error: ', error);
21342
21576
 
21343
- if ([hdShared.HardwareErrorCode.BlePermissionError, hdShared.HardwareErrorCode.BleLocationError, hdShared.HardwareErrorCode.BleLocationServicesDisabled, hdShared.HardwareErrorCode.BleDeviceNotBonded, hdShared.HardwareErrorCode.BleCharacteristicNotifyError, hdShared.HardwareErrorCode.BleWriteCharacteristicError, hdShared.HardwareErrorCode.BleAlreadyConnected].includes(error.errorCode)) {
21577
+ if ([hdShared.HardwareErrorCode.BlePermissionError, hdShared.HardwareErrorCode.BleLocationError, hdShared.HardwareErrorCode.BleLocationServicesDisabled, hdShared.HardwareErrorCode.BleDeviceNotBonded, hdShared.HardwareErrorCode.BleCharacteristicNotifyError, hdShared.HardwareErrorCode.BleWriteCharacteristicError, hdShared.HardwareErrorCode.BleAlreadyConnected, hdShared.HardwareErrorCode.FirmwareUpdateLimitOneDevice].includes(error.errorCode)) {
21344
21578
  reject(error);
21345
21579
  return;
21346
21580
  }
@@ -21688,6 +21922,7 @@ __webpack_unused_export__ = safeThrowError;
21688
21922
  exports.hZ = setLoggerPostMessage;
21689
21923
  __webpack_unused_export__ = versionCompare;
21690
21924
  __webpack_unused_export__ = versionSplit;
21925
+ __webpack_unused_export__ = wait;
21691
21926
 
21692
21927
  /***/ }),
21693
21928
 
@@ -22938,6 +23173,7 @@ const HardwareErrorCode = {
22938
23173
  FirmwareUpdateDownloadFailed: 406,
22939
23174
  CallMethodNeedUpgradeFirmware: 407,
22940
23175
  CallMethodDeprecated: 408,
23176
+ FirmwareUpdateLimitOneDevice: 409,
22941
23177
  NetworkError: 500,
22942
23178
  TransportNotConfigured: 600,
22943
23179
  TransportCallInProgress: 601,
@@ -22998,6 +23234,7 @@ const HardwareErrorCodeMessage = {
22998
23234
  [HardwareErrorCode.FirmwareUpdateDownloadFailed]: 'Firmware update download failed',
22999
23235
  [HardwareErrorCode.CallMethodNeedUpgradeFirmware]: 'Call method need upgrade firmware',
23000
23236
  [HardwareErrorCode.CallMethodDeprecated]: 'Call method is deprecated',
23237
+ [HardwareErrorCode.FirmwareUpdateLimitOneDevice]: 'Only one device can be connected during firmware upgrade',
23001
23238
  [HardwareErrorCode.NetworkError]: 'Network request error',
23002
23239
  [HardwareErrorCode.TransportNotConfigured]: 'Transport not configured',
23003
23240
  [HardwareErrorCode.TransportCallInProgress]: 'Transport call in progress',
@@ -34300,6 +34537,670 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/**
34300
34537
  })();
34301
34538
 
34302
34539
 
34540
+ /***/ }),
34541
+
34542
+ /***/ 3669:
34543
+ /***/ ((module, exports, __webpack_require__) => {
34544
+
34545
+ var __WEBPACK_AMD_DEFINE_RESULT__;/**
34546
+ * [js-sha3]{@link https://github.com/emn178/js-sha3}
34547
+ *
34548
+ * @version 0.8.0
34549
+ * @author Chen, Yi-Cyuan [emn178@gmail.com]
34550
+ * @copyright Chen, Yi-Cyuan 2015-2018
34551
+ * @license MIT
34552
+ */
34553
+ /*jslint bitwise: true */
34554
+ (function () {
34555
+ 'use strict';
34556
+
34557
+ var INPUT_ERROR = 'input is invalid type';
34558
+ var FINALIZE_ERROR = 'finalize already called';
34559
+ var WINDOW = typeof window === 'object';
34560
+ var root = WINDOW ? window : {};
34561
+ if (root.JS_SHA3_NO_WINDOW) {
34562
+ WINDOW = false;
34563
+ }
34564
+ var WEB_WORKER = !WINDOW && typeof self === 'object';
34565
+ var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
34566
+ if (NODE_JS) {
34567
+ root = __webpack_require__.g;
34568
+ } else if (WEB_WORKER) {
34569
+ root = self;
34570
+ }
34571
+ var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && "object" === 'object' && module.exports;
34572
+ var AMD = true && __webpack_require__.amdO;
34573
+ var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';
34574
+ var HEX_CHARS = '0123456789abcdef'.split('');
34575
+ var SHAKE_PADDING = [31, 7936, 2031616, 520093696];
34576
+ var CSHAKE_PADDING = [4, 1024, 262144, 67108864];
34577
+ var KECCAK_PADDING = [1, 256, 65536, 16777216];
34578
+ var PADDING = [6, 1536, 393216, 100663296];
34579
+ var SHIFT = [0, 8, 16, 24];
34580
+ var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,
34581
+ 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,
34582
+ 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,
34583
+ 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,
34584
+ 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];
34585
+ var BITS = [224, 256, 384, 512];
34586
+ var SHAKE_BITS = [128, 256];
34587
+ var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];
34588
+ var CSHAKE_BYTEPAD = {
34589
+ '128': 168,
34590
+ '256': 136
34591
+ };
34592
+
34593
+ if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {
34594
+ Array.isArray = function (obj) {
34595
+ return Object.prototype.toString.call(obj) === '[object Array]';
34596
+ };
34597
+ }
34598
+
34599
+ if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
34600
+ ArrayBuffer.isView = function (obj) {
34601
+ return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;
34602
+ };
34603
+ }
34604
+
34605
+ var createOutputMethod = function (bits, padding, outputType) {
34606
+ return function (message) {
34607
+ return new Keccak(bits, padding, bits).update(message)[outputType]();
34608
+ };
34609
+ };
34610
+
34611
+ var createShakeOutputMethod = function (bits, padding, outputType) {
34612
+ return function (message, outputBits) {
34613
+ return new Keccak(bits, padding, outputBits).update(message)[outputType]();
34614
+ };
34615
+ };
34616
+
34617
+ var createCshakeOutputMethod = function (bits, padding, outputType) {
34618
+ return function (message, outputBits, n, s) {
34619
+ return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();
34620
+ };
34621
+ };
34622
+
34623
+ var createKmacOutputMethod = function (bits, padding, outputType) {
34624
+ return function (key, message, outputBits, s) {
34625
+ return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();
34626
+ };
34627
+ };
34628
+
34629
+ var createOutputMethods = function (method, createMethod, bits, padding) {
34630
+ for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
34631
+ var type = OUTPUT_TYPES[i];
34632
+ method[type] = createMethod(bits, padding, type);
34633
+ }
34634
+ return method;
34635
+ };
34636
+
34637
+ var createMethod = function (bits, padding) {
34638
+ var method = createOutputMethod(bits, padding, 'hex');
34639
+ method.create = function () {
34640
+ return new Keccak(bits, padding, bits);
34641
+ };
34642
+ method.update = function (message) {
34643
+ return method.create().update(message);
34644
+ };
34645
+ return createOutputMethods(method, createOutputMethod, bits, padding);
34646
+ };
34647
+
34648
+ var createShakeMethod = function (bits, padding) {
34649
+ var method = createShakeOutputMethod(bits, padding, 'hex');
34650
+ method.create = function (outputBits) {
34651
+ return new Keccak(bits, padding, outputBits);
34652
+ };
34653
+ method.update = function (message, outputBits) {
34654
+ return method.create(outputBits).update(message);
34655
+ };
34656
+ return createOutputMethods(method, createShakeOutputMethod, bits, padding);
34657
+ };
34658
+
34659
+ var createCshakeMethod = function (bits, padding) {
34660
+ var w = CSHAKE_BYTEPAD[bits];
34661
+ var method = createCshakeOutputMethod(bits, padding, 'hex');
34662
+ method.create = function (outputBits, n, s) {
34663
+ if (!n && !s) {
34664
+ return methods['shake' + bits].create(outputBits);
34665
+ } else {
34666
+ return new Keccak(bits, padding, outputBits).bytepad([n, s], w);
34667
+ }
34668
+ };
34669
+ method.update = function (message, outputBits, n, s) {
34670
+ return method.create(outputBits, n, s).update(message);
34671
+ };
34672
+ return createOutputMethods(method, createCshakeOutputMethod, bits, padding);
34673
+ };
34674
+
34675
+ var createKmacMethod = function (bits, padding) {
34676
+ var w = CSHAKE_BYTEPAD[bits];
34677
+ var method = createKmacOutputMethod(bits, padding, 'hex');
34678
+ method.create = function (key, outputBits, s) {
34679
+ return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);
34680
+ };
34681
+ method.update = function (key, message, outputBits, s) {
34682
+ return method.create(key, outputBits, s).update(message);
34683
+ };
34684
+ return createOutputMethods(method, createKmacOutputMethod, bits, padding);
34685
+ };
34686
+
34687
+ var algorithms = [
34688
+ { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },
34689
+ { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },
34690
+ { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },
34691
+ { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },
34692
+ { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }
34693
+ ];
34694
+
34695
+ var methods = {}, methodNames = [];
34696
+
34697
+ for (var i = 0; i < algorithms.length; ++i) {
34698
+ var algorithm = algorithms[i];
34699
+ var bits = algorithm.bits;
34700
+ for (var j = 0; j < bits.length; ++j) {
34701
+ var methodName = algorithm.name + '_' + bits[j];
34702
+ methodNames.push(methodName);
34703
+ methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);
34704
+ if (algorithm.name !== 'sha3') {
34705
+ var newMethodName = algorithm.name + bits[j];
34706
+ methodNames.push(newMethodName);
34707
+ methods[newMethodName] = methods[methodName];
34708
+ }
34709
+ }
34710
+ }
34711
+
34712
+ function Keccak(bits, padding, outputBits) {
34713
+ this.blocks = [];
34714
+ this.s = [];
34715
+ this.padding = padding;
34716
+ this.outputBits = outputBits;
34717
+ this.reset = true;
34718
+ this.finalized = false;
34719
+ this.block = 0;
34720
+ this.start = 0;
34721
+ this.blockCount = (1600 - (bits << 1)) >> 5;
34722
+ this.byteCount = this.blockCount << 2;
34723
+ this.outputBlocks = outputBits >> 5;
34724
+ this.extraBytes = (outputBits & 31) >> 3;
34725
+
34726
+ for (var i = 0; i < 50; ++i) {
34727
+ this.s[i] = 0;
34728
+ }
34729
+ }
34730
+
34731
+ Keccak.prototype.update = function (message) {
34732
+ if (this.finalized) {
34733
+ throw new Error(FINALIZE_ERROR);
34734
+ }
34735
+ var notString, type = typeof message;
34736
+ if (type !== 'string') {
34737
+ if (type === 'object') {
34738
+ if (message === null) {
34739
+ throw new Error(INPUT_ERROR);
34740
+ } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
34741
+ message = new Uint8Array(message);
34742
+ } else if (!Array.isArray(message)) {
34743
+ if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
34744
+ throw new Error(INPUT_ERROR);
34745
+ }
34746
+ }
34747
+ } else {
34748
+ throw new Error(INPUT_ERROR);
34749
+ }
34750
+ notString = true;
34751
+ }
34752
+ var blocks = this.blocks, byteCount = this.byteCount, length = message.length,
34753
+ blockCount = this.blockCount, index = 0, s = this.s, i, code;
34754
+
34755
+ while (index < length) {
34756
+ if (this.reset) {
34757
+ this.reset = false;
34758
+ blocks[0] = this.block;
34759
+ for (i = 1; i < blockCount + 1; ++i) {
34760
+ blocks[i] = 0;
34761
+ }
34762
+ }
34763
+ if (notString) {
34764
+ for (i = this.start; index < length && i < byteCount; ++index) {
34765
+ blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
34766
+ }
34767
+ } else {
34768
+ for (i = this.start; index < length && i < byteCount; ++index) {
34769
+ code = message.charCodeAt(index);
34770
+ if (code < 0x80) {
34771
+ blocks[i >> 2] |= code << SHIFT[i++ & 3];
34772
+ } else if (code < 0x800) {
34773
+ blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];
34774
+ blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
34775
+ } else if (code < 0xd800 || code >= 0xe000) {
34776
+ blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];
34777
+ blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
34778
+ blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
34779
+ } else {
34780
+ code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
34781
+ blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];
34782
+ blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];
34783
+ blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
34784
+ blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
34785
+ }
34786
+ }
34787
+ }
34788
+ this.lastByteIndex = i;
34789
+ if (i >= byteCount) {
34790
+ this.start = i - byteCount;
34791
+ this.block = blocks[blockCount];
34792
+ for (i = 0; i < blockCount; ++i) {
34793
+ s[i] ^= blocks[i];
34794
+ }
34795
+ f(s);
34796
+ this.reset = true;
34797
+ } else {
34798
+ this.start = i;
34799
+ }
34800
+ }
34801
+ return this;
34802
+ };
34803
+
34804
+ Keccak.prototype.encode = function (x, right) {
34805
+ var o = x & 255, n = 1;
34806
+ var bytes = [o];
34807
+ x = x >> 8;
34808
+ o = x & 255;
34809
+ while (o > 0) {
34810
+ bytes.unshift(o);
34811
+ x = x >> 8;
34812
+ o = x & 255;
34813
+ ++n;
34814
+ }
34815
+ if (right) {
34816
+ bytes.push(n);
34817
+ } else {
34818
+ bytes.unshift(n);
34819
+ }
34820
+ this.update(bytes);
34821
+ return bytes.length;
34822
+ };
34823
+
34824
+ Keccak.prototype.encodeString = function (str) {
34825
+ var notString, type = typeof str;
34826
+ if (type !== 'string') {
34827
+ if (type === 'object') {
34828
+ if (str === null) {
34829
+ throw new Error(INPUT_ERROR);
34830
+ } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {
34831
+ str = new Uint8Array(str);
34832
+ } else if (!Array.isArray(str)) {
34833
+ if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {
34834
+ throw new Error(INPUT_ERROR);
34835
+ }
34836
+ }
34837
+ } else {
34838
+ throw new Error(INPUT_ERROR);
34839
+ }
34840
+ notString = true;
34841
+ }
34842
+ var bytes = 0, length = str.length;
34843
+ if (notString) {
34844
+ bytes = length;
34845
+ } else {
34846
+ for (var i = 0; i < str.length; ++i) {
34847
+ var code = str.charCodeAt(i);
34848
+ if (code < 0x80) {
34849
+ bytes += 1;
34850
+ } else if (code < 0x800) {
34851
+ bytes += 2;
34852
+ } else if (code < 0xd800 || code >= 0xe000) {
34853
+ bytes += 3;
34854
+ } else {
34855
+ code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));
34856
+ bytes += 4;
34857
+ }
34858
+ }
34859
+ }
34860
+ bytes += this.encode(bytes * 8);
34861
+ this.update(str);
34862
+ return bytes;
34863
+ };
34864
+
34865
+ Keccak.prototype.bytepad = function (strs, w) {
34866
+ var bytes = this.encode(w);
34867
+ for (var i = 0; i < strs.length; ++i) {
34868
+ bytes += this.encodeString(strs[i]);
34869
+ }
34870
+ var paddingBytes = w - bytes % w;
34871
+ var zeros = [];
34872
+ zeros.length = paddingBytes;
34873
+ this.update(zeros);
34874
+ return this;
34875
+ };
34876
+
34877
+ Keccak.prototype.finalize = function () {
34878
+ if (this.finalized) {
34879
+ return;
34880
+ }
34881
+ this.finalized = true;
34882
+ var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;
34883
+ blocks[i >> 2] |= this.padding[i & 3];
34884
+ if (this.lastByteIndex === this.byteCount) {
34885
+ blocks[0] = blocks[blockCount];
34886
+ for (i = 1; i < blockCount + 1; ++i) {
34887
+ blocks[i] = 0;
34888
+ }
34889
+ }
34890
+ blocks[blockCount - 1] |= 0x80000000;
34891
+ for (i = 0; i < blockCount; ++i) {
34892
+ s[i] ^= blocks[i];
34893
+ }
34894
+ f(s);
34895
+ };
34896
+
34897
+ Keccak.prototype.toString = Keccak.prototype.hex = function () {
34898
+ this.finalize();
34899
+
34900
+ var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
34901
+ extraBytes = this.extraBytes, i = 0, j = 0;
34902
+ var hex = '', block;
34903
+ while (j < outputBlocks) {
34904
+ for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
34905
+ block = s[i];
34906
+ hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +
34907
+ HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +
34908
+ HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +
34909
+ HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];
34910
+ }
34911
+ if (j % blockCount === 0) {
34912
+ f(s);
34913
+ i = 0;
34914
+ }
34915
+ }
34916
+ if (extraBytes) {
34917
+ block = s[i];
34918
+ hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];
34919
+ if (extraBytes > 1) {
34920
+ hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];
34921
+ }
34922
+ if (extraBytes > 2) {
34923
+ hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];
34924
+ }
34925
+ }
34926
+ return hex;
34927
+ };
34928
+
34929
+ Keccak.prototype.arrayBuffer = function () {
34930
+ this.finalize();
34931
+
34932
+ var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
34933
+ extraBytes = this.extraBytes, i = 0, j = 0;
34934
+ var bytes = this.outputBits >> 3;
34935
+ var buffer;
34936
+ if (extraBytes) {
34937
+ buffer = new ArrayBuffer((outputBlocks + 1) << 2);
34938
+ } else {
34939
+ buffer = new ArrayBuffer(bytes);
34940
+ }
34941
+ var array = new Uint32Array(buffer);
34942
+ while (j < outputBlocks) {
34943
+ for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
34944
+ array[j] = s[i];
34945
+ }
34946
+ if (j % blockCount === 0) {
34947
+ f(s);
34948
+ }
34949
+ }
34950
+ if (extraBytes) {
34951
+ array[i] = s[i];
34952
+ buffer = buffer.slice(0, bytes);
34953
+ }
34954
+ return buffer;
34955
+ };
34956
+
34957
+ Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;
34958
+
34959
+ Keccak.prototype.digest = Keccak.prototype.array = function () {
34960
+ this.finalize();
34961
+
34962
+ var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
34963
+ extraBytes = this.extraBytes, i = 0, j = 0;
34964
+ var array = [], offset, block;
34965
+ while (j < outputBlocks) {
34966
+ for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
34967
+ offset = j << 2;
34968
+ block = s[i];
34969
+ array[offset] = block & 0xFF;
34970
+ array[offset + 1] = (block >> 8) & 0xFF;
34971
+ array[offset + 2] = (block >> 16) & 0xFF;
34972
+ array[offset + 3] = (block >> 24) & 0xFF;
34973
+ }
34974
+ if (j % blockCount === 0) {
34975
+ f(s);
34976
+ }
34977
+ }
34978
+ if (extraBytes) {
34979
+ offset = j << 2;
34980
+ block = s[i];
34981
+ array[offset] = block & 0xFF;
34982
+ if (extraBytes > 1) {
34983
+ array[offset + 1] = (block >> 8) & 0xFF;
34984
+ }
34985
+ if (extraBytes > 2) {
34986
+ array[offset + 2] = (block >> 16) & 0xFF;
34987
+ }
34988
+ }
34989
+ return array;
34990
+ };
34991
+
34992
+ function Kmac(bits, padding, outputBits) {
34993
+ Keccak.call(this, bits, padding, outputBits);
34994
+ }
34995
+
34996
+ Kmac.prototype = new Keccak();
34997
+
34998
+ Kmac.prototype.finalize = function () {
34999
+ this.encode(this.outputBits, true);
35000
+ return Keccak.prototype.finalize.call(this);
35001
+ };
35002
+
35003
+ var f = function (s) {
35004
+ var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,
35005
+ b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,
35006
+ b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,
35007
+ b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;
35008
+ for (n = 0; n < 48; n += 2) {
35009
+ c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];
35010
+ c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];
35011
+ c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];
35012
+ c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];
35013
+ c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];
35014
+ c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];
35015
+ c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];
35016
+ c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];
35017
+ c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];
35018
+ c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];
35019
+
35020
+ h = c8 ^ ((c2 << 1) | (c3 >>> 31));
35021
+ l = c9 ^ ((c3 << 1) | (c2 >>> 31));
35022
+ s[0] ^= h;
35023
+ s[1] ^= l;
35024
+ s[10] ^= h;
35025
+ s[11] ^= l;
35026
+ s[20] ^= h;
35027
+ s[21] ^= l;
35028
+ s[30] ^= h;
35029
+ s[31] ^= l;
35030
+ s[40] ^= h;
35031
+ s[41] ^= l;
35032
+ h = c0 ^ ((c4 << 1) | (c5 >>> 31));
35033
+ l = c1 ^ ((c5 << 1) | (c4 >>> 31));
35034
+ s[2] ^= h;
35035
+ s[3] ^= l;
35036
+ s[12] ^= h;
35037
+ s[13] ^= l;
35038
+ s[22] ^= h;
35039
+ s[23] ^= l;
35040
+ s[32] ^= h;
35041
+ s[33] ^= l;
35042
+ s[42] ^= h;
35043
+ s[43] ^= l;
35044
+ h = c2 ^ ((c6 << 1) | (c7 >>> 31));
35045
+ l = c3 ^ ((c7 << 1) | (c6 >>> 31));
35046
+ s[4] ^= h;
35047
+ s[5] ^= l;
35048
+ s[14] ^= h;
35049
+ s[15] ^= l;
35050
+ s[24] ^= h;
35051
+ s[25] ^= l;
35052
+ s[34] ^= h;
35053
+ s[35] ^= l;
35054
+ s[44] ^= h;
35055
+ s[45] ^= l;
35056
+ h = c4 ^ ((c8 << 1) | (c9 >>> 31));
35057
+ l = c5 ^ ((c9 << 1) | (c8 >>> 31));
35058
+ s[6] ^= h;
35059
+ s[7] ^= l;
35060
+ s[16] ^= h;
35061
+ s[17] ^= l;
35062
+ s[26] ^= h;
35063
+ s[27] ^= l;
35064
+ s[36] ^= h;
35065
+ s[37] ^= l;
35066
+ s[46] ^= h;
35067
+ s[47] ^= l;
35068
+ h = c6 ^ ((c0 << 1) | (c1 >>> 31));
35069
+ l = c7 ^ ((c1 << 1) | (c0 >>> 31));
35070
+ s[8] ^= h;
35071
+ s[9] ^= l;
35072
+ s[18] ^= h;
35073
+ s[19] ^= l;
35074
+ s[28] ^= h;
35075
+ s[29] ^= l;
35076
+ s[38] ^= h;
35077
+ s[39] ^= l;
35078
+ s[48] ^= h;
35079
+ s[49] ^= l;
35080
+
35081
+ b0 = s[0];
35082
+ b1 = s[1];
35083
+ b32 = (s[11] << 4) | (s[10] >>> 28);
35084
+ b33 = (s[10] << 4) | (s[11] >>> 28);
35085
+ b14 = (s[20] << 3) | (s[21] >>> 29);
35086
+ b15 = (s[21] << 3) | (s[20] >>> 29);
35087
+ b46 = (s[31] << 9) | (s[30] >>> 23);
35088
+ b47 = (s[30] << 9) | (s[31] >>> 23);
35089
+ b28 = (s[40] << 18) | (s[41] >>> 14);
35090
+ b29 = (s[41] << 18) | (s[40] >>> 14);
35091
+ b20 = (s[2] << 1) | (s[3] >>> 31);
35092
+ b21 = (s[3] << 1) | (s[2] >>> 31);
35093
+ b2 = (s[13] << 12) | (s[12] >>> 20);
35094
+ b3 = (s[12] << 12) | (s[13] >>> 20);
35095
+ b34 = (s[22] << 10) | (s[23] >>> 22);
35096
+ b35 = (s[23] << 10) | (s[22] >>> 22);
35097
+ b16 = (s[33] << 13) | (s[32] >>> 19);
35098
+ b17 = (s[32] << 13) | (s[33] >>> 19);
35099
+ b48 = (s[42] << 2) | (s[43] >>> 30);
35100
+ b49 = (s[43] << 2) | (s[42] >>> 30);
35101
+ b40 = (s[5] << 30) | (s[4] >>> 2);
35102
+ b41 = (s[4] << 30) | (s[5] >>> 2);
35103
+ b22 = (s[14] << 6) | (s[15] >>> 26);
35104
+ b23 = (s[15] << 6) | (s[14] >>> 26);
35105
+ b4 = (s[25] << 11) | (s[24] >>> 21);
35106
+ b5 = (s[24] << 11) | (s[25] >>> 21);
35107
+ b36 = (s[34] << 15) | (s[35] >>> 17);
35108
+ b37 = (s[35] << 15) | (s[34] >>> 17);
35109
+ b18 = (s[45] << 29) | (s[44] >>> 3);
35110
+ b19 = (s[44] << 29) | (s[45] >>> 3);
35111
+ b10 = (s[6] << 28) | (s[7] >>> 4);
35112
+ b11 = (s[7] << 28) | (s[6] >>> 4);
35113
+ b42 = (s[17] << 23) | (s[16] >>> 9);
35114
+ b43 = (s[16] << 23) | (s[17] >>> 9);
35115
+ b24 = (s[26] << 25) | (s[27] >>> 7);
35116
+ b25 = (s[27] << 25) | (s[26] >>> 7);
35117
+ b6 = (s[36] << 21) | (s[37] >>> 11);
35118
+ b7 = (s[37] << 21) | (s[36] >>> 11);
35119
+ b38 = (s[47] << 24) | (s[46] >>> 8);
35120
+ b39 = (s[46] << 24) | (s[47] >>> 8);
35121
+ b30 = (s[8] << 27) | (s[9] >>> 5);
35122
+ b31 = (s[9] << 27) | (s[8] >>> 5);
35123
+ b12 = (s[18] << 20) | (s[19] >>> 12);
35124
+ b13 = (s[19] << 20) | (s[18] >>> 12);
35125
+ b44 = (s[29] << 7) | (s[28] >>> 25);
35126
+ b45 = (s[28] << 7) | (s[29] >>> 25);
35127
+ b26 = (s[38] << 8) | (s[39] >>> 24);
35128
+ b27 = (s[39] << 8) | (s[38] >>> 24);
35129
+ b8 = (s[48] << 14) | (s[49] >>> 18);
35130
+ b9 = (s[49] << 14) | (s[48] >>> 18);
35131
+
35132
+ s[0] = b0 ^ (~b2 & b4);
35133
+ s[1] = b1 ^ (~b3 & b5);
35134
+ s[10] = b10 ^ (~b12 & b14);
35135
+ s[11] = b11 ^ (~b13 & b15);
35136
+ s[20] = b20 ^ (~b22 & b24);
35137
+ s[21] = b21 ^ (~b23 & b25);
35138
+ s[30] = b30 ^ (~b32 & b34);
35139
+ s[31] = b31 ^ (~b33 & b35);
35140
+ s[40] = b40 ^ (~b42 & b44);
35141
+ s[41] = b41 ^ (~b43 & b45);
35142
+ s[2] = b2 ^ (~b4 & b6);
35143
+ s[3] = b3 ^ (~b5 & b7);
35144
+ s[12] = b12 ^ (~b14 & b16);
35145
+ s[13] = b13 ^ (~b15 & b17);
35146
+ s[22] = b22 ^ (~b24 & b26);
35147
+ s[23] = b23 ^ (~b25 & b27);
35148
+ s[32] = b32 ^ (~b34 & b36);
35149
+ s[33] = b33 ^ (~b35 & b37);
35150
+ s[42] = b42 ^ (~b44 & b46);
35151
+ s[43] = b43 ^ (~b45 & b47);
35152
+ s[4] = b4 ^ (~b6 & b8);
35153
+ s[5] = b5 ^ (~b7 & b9);
35154
+ s[14] = b14 ^ (~b16 & b18);
35155
+ s[15] = b15 ^ (~b17 & b19);
35156
+ s[24] = b24 ^ (~b26 & b28);
35157
+ s[25] = b25 ^ (~b27 & b29);
35158
+ s[34] = b34 ^ (~b36 & b38);
35159
+ s[35] = b35 ^ (~b37 & b39);
35160
+ s[44] = b44 ^ (~b46 & b48);
35161
+ s[45] = b45 ^ (~b47 & b49);
35162
+ s[6] = b6 ^ (~b8 & b0);
35163
+ s[7] = b7 ^ (~b9 & b1);
35164
+ s[16] = b16 ^ (~b18 & b10);
35165
+ s[17] = b17 ^ (~b19 & b11);
35166
+ s[26] = b26 ^ (~b28 & b20);
35167
+ s[27] = b27 ^ (~b29 & b21);
35168
+ s[36] = b36 ^ (~b38 & b30);
35169
+ s[37] = b37 ^ (~b39 & b31);
35170
+ s[46] = b46 ^ (~b48 & b40);
35171
+ s[47] = b47 ^ (~b49 & b41);
35172
+ s[8] = b8 ^ (~b0 & b2);
35173
+ s[9] = b9 ^ (~b1 & b3);
35174
+ s[18] = b18 ^ (~b10 & b12);
35175
+ s[19] = b19 ^ (~b11 & b13);
35176
+ s[28] = b28 ^ (~b20 & b22);
35177
+ s[29] = b29 ^ (~b21 & b23);
35178
+ s[38] = b38 ^ (~b30 & b32);
35179
+ s[39] = b39 ^ (~b31 & b33);
35180
+ s[48] = b48 ^ (~b40 & b42);
35181
+ s[49] = b49 ^ (~b41 & b43);
35182
+
35183
+ s[0] ^= RC[n];
35184
+ s[1] ^= RC[n + 1];
35185
+ }
35186
+ };
35187
+
35188
+ if (COMMON_JS) {
35189
+ module.exports = methods;
35190
+ } else {
35191
+ for (i = 0; i < methodNames.length; ++i) {
35192
+ root[methodNames[i]] = methods[methodNames[i]];
35193
+ }
35194
+ if (AMD) {
35195
+ !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {
35196
+ return methods;
35197
+ }).call(exports, __webpack_require__, exports, module),
35198
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
35199
+ }
35200
+ }
35201
+ })();
35202
+
35203
+
34303
35204
  /***/ }),
34304
35205
 
34305
35206
  /***/ 857:
@@ -45755,7 +46656,7 @@ try {
45755
46656
  /***/ ((module) => {
45756
46657
 
45757
46658
  "use strict";
45758
- module.exports = JSON.parse('{"name":"@onekeyfe/hd-core","version":"0.1.52","description":"> TODO: description","author":"OneKey","homepage":"https://github.com/OneKeyHQ/hardware-js-sdk#readme","license":"ISC","main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/OneKeyHQ/hardware-js-sdk.git"},"publishConfig":{"access":"public"},"scripts":{"dev":"rimraf dist && rollup -c ../../build/rollup.config.js -w","build":"rimraf dist && rollup -c ../../build/rollup.config.js","lint":"eslint .","lint:fix":"eslint . --fix"},"bugs":{"url":"https://github.com/OneKeyHQ/hardware-js-sdk/issues"},"dependencies":{"@onekeyfe/hd-shared":"^0.1.52","@onekeyfe/hd-transport":"^0.1.52","axios":"^0.27.2","bignumber.js":"^9.0.2","js-sha256":"^0.9.0","parse-uri":"^1.0.7","semver":"^7.3.7"},"devDependencies":{"@types/parse-uri":"^1.0.0","@types/semver":"^7.3.9"}}');
46659
+ module.exports = JSON.parse('{"name":"@onekeyfe/hd-core","version":"0.1.54","description":"> TODO: description","author":"OneKey","homepage":"https://github.com/OneKeyHQ/hardware-js-sdk#readme","license":"ISC","main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"git+https://github.com/OneKeyHQ/hardware-js-sdk.git"},"publishConfig":{"access":"public"},"scripts":{"dev":"rimraf dist && rollup -c ../../build/rollup.config.js -w","build":"rimraf dist && rollup -c ../../build/rollup.config.js","lint":"eslint .","lint:fix":"eslint . --fix"},"bugs":{"url":"https://github.com/OneKeyHQ/hardware-js-sdk/issues"},"dependencies":{"@onekeyfe/hd-shared":"^0.1.54","@onekeyfe/hd-transport":"^0.1.54","axios":"^0.27.2","bignumber.js":"^9.0.2","js-sha256":"^0.9.0","js-sha3":"^0.8.0","parse-uri":"^1.0.7","semver":"^7.3.7"},"devDependencies":{"@types/parse-uri":"^1.0.0","@types/semver":"^7.3.9"}}');
45759
46660
 
45760
46661
  /***/ })
45761
46662
 
@@ -48287,7 +49188,7 @@ const src_init = async settings => {
48287
49188
 
48288
49189
  try {
48289
49190
  await init({ ..._settings,
48290
- version: "0.1.52"
49191
+ version: "0.1.54"
48291
49192
  });
48292
49193
  return true;
48293
49194
  } catch (e) {