ccxt 4.2.17 → 4.2.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/dist/ccxt.browser.js +48992 -47725
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +12 -1
- package/dist/cjs/src/alpaca.js +18 -18
- package/dist/cjs/src/ascendex.js +13 -6
- package/dist/cjs/src/base/Exchange.js +266 -27
- package/dist/cjs/src/bigone.js +434 -168
- package/dist/cjs/src/binance.js +163 -34
- package/dist/cjs/src/binanceus.js +8 -0
- package/dist/cjs/src/bingx.js +183 -41
- package/dist/cjs/src/bitfinex.js +2 -3
- package/dist/cjs/src/bitget.js +59 -16
- package/dist/cjs/src/bitmart.js +5 -5
- package/dist/cjs/src/bitmex.js +4 -6
- package/dist/cjs/src/bitpanda.js +5 -1991
- package/dist/cjs/src/bitstamp.js +8 -0
- package/dist/cjs/src/bybit.js +27 -47
- package/dist/cjs/src/coinbase.js +176 -26
- package/dist/cjs/src/coincheck.js +1 -0
- package/dist/cjs/src/coinex.js +3 -0
- package/dist/cjs/src/coinlist.js +13 -6
- package/dist/cjs/src/coinone.js +2 -2
- package/dist/cjs/src/coinsph.js +4 -5
- package/dist/cjs/src/delta.js +7 -1
- package/dist/cjs/src/deribit.js +17 -4
- package/dist/cjs/src/gate.js +151 -169
- package/dist/cjs/src/gemini.js +1 -1
- package/dist/cjs/src/hitbtc.js +2 -3
- package/dist/cjs/src/htx.js +157 -7
- package/dist/cjs/src/huobijp.js +2 -3
- package/dist/cjs/src/independentreserve.js +7 -5
- package/dist/cjs/src/kraken.js +86 -54
- package/dist/cjs/src/kucoin.js +5 -0
- package/dist/cjs/src/kucoinfutures.js +131 -77
- package/dist/cjs/src/lbank.js +60 -33
- package/dist/cjs/src/luno.js +84 -2
- package/dist/cjs/src/mexc.js +3 -3
- package/dist/cjs/src/oceanex.js +1 -1
- package/dist/cjs/src/okx.js +23 -11
- package/dist/cjs/{js/src/bitpanda.js → src/onetrading.js} +39 -39
- package/dist/cjs/src/phemex.js +37 -27
- package/dist/cjs/src/poloniexfutures.js +1 -0
- package/dist/cjs/src/pro/binance.js +66 -25
- package/dist/cjs/src/pro/bitget.js +1 -1
- package/dist/cjs/src/pro/bitpanda.js +5 -1330
- package/dist/cjs/src/pro/coinbase.js +4 -1
- package/dist/cjs/src/pro/coincheck.js +208 -0
- package/dist/cjs/src/pro/hitbtc.js +5 -4
- package/dist/cjs/src/pro/htx.js +6 -1
- package/dist/cjs/src/pro/kraken.js +1 -1
- package/dist/cjs/src/pro/krakenfutures.js +7 -1
- package/dist/cjs/src/pro/kucoin.js +46 -36
- package/dist/cjs/src/pro/kucoinfutures.js +45 -37
- package/dist/cjs/src/pro/lbank.js +881 -0
- package/dist/cjs/src/pro/okx.js +52 -2
- package/dist/cjs/{js/src/pro/bitpanda.js → src/pro/onetrading.js} +4 -7
- package/dist/cjs/src/pro/poloniex.js +2 -2
- package/dist/cjs/src/pro/poloniexfutures.js +43 -35
- package/dist/cjs/src/pro/woo.js +126 -0
- package/dist/cjs/src/probit.js +4 -2
- package/dist/cjs/src/upbit.js +12 -12
- package/dist/cjs/src/wavesexchange.js +1 -1
- package/dist/cjs/src/whitebit.js +1 -0
- package/dist/cjs/src/woo.js +56 -0
- package/js/ccxt.d.ts +14 -2
- package/js/ccxt.js +10 -2
- package/js/src/abstract/bitpanda.d.ts +4 -4
- package/js/src/abstract/bitstamp.d.ts +8 -0
- package/js/src/abstract/gate.d.ts +1 -0
- package/js/src/abstract/gateio.d.ts +1 -0
- package/js/src/abstract/htx.d.ts +3 -0
- package/js/src/abstract/huobi.d.ts +3 -0
- package/js/src/abstract/luno.d.ts +1 -0
- package/js/src/abstract/onetrading.d.ts +38 -0
- package/js/src/ascendex.js +2 -0
- package/js/src/base/Exchange.d.ts +2 -3
- package/js/src/base/Exchange.js +5 -2
- package/js/src/binance.js +7 -1
- package/js/src/bingx.d.ts +1 -0
- package/js/src/bingx.js +26 -0
- package/js/src/bitget.js +22 -3
- package/js/src/bitpanda.d.ts +2 -72
- package/js/src/bitpanda.js +5 -1991
- package/js/src/bitstamp.js +8 -0
- package/js/src/bybit.js +21 -47
- package/js/src/coincheck.js +1 -0
- package/js/src/deribit.js +16 -4
- package/js/src/gate.d.ts +1 -0
- package/js/src/gate.js +50 -110
- package/js/src/htx.js +3 -0
- package/js/src/kraken.d.ts +1 -0
- package/js/src/kraken.js +40 -39
- package/js/src/lbank.js +1 -0
- package/js/src/luno.d.ts +3 -1
- package/js/src/luno.js +84 -2
- package/js/src/mexc.js +1 -2
- package/js/src/onetrading.d.ts +74 -0
- package/js/src/onetrading.js +2003 -0
- package/js/src/poloniexfutures.js +1 -0
- package/js/src/pro/binance.js +7 -2
- package/js/src/pro/bitget.js +1 -1
- package/js/src/pro/bitpanda.d.ts +2 -34
- package/js/src/pro/bitpanda.js +5 -1330
- package/js/src/pro/coincheck.d.ts +12 -0
- package/js/src/pro/coincheck.js +209 -0
- package/js/src/pro/kucoin.js +43 -35
- package/js/src/pro/kucoinfutures.js +45 -37
- package/js/src/pro/lbank.d.ts +29 -0
- package/js/src/pro/lbank.js +882 -0
- package/js/src/pro/onetrading.d.ts +36 -0
- package/js/src/pro/onetrading.js +1339 -0
- package/js/src/pro/poloniexfutures.js +43 -35
- package/js/src/whitebit.js +1 -0
- package/package.json +2 -2
- package/rollup.config.js +2 -0
- package/skip-tests.json +14 -2
- package/test-commonjs.cjs +25 -1
- package/dist/cjs/js/ccxt.js +0 -476
- package/dist/cjs/js/src/abstract/alpaca.js +0 -9
- package/dist/cjs/js/src/abstract/ascendex.js +0 -9
- package/dist/cjs/js/src/abstract/bigone.js +0 -9
- package/dist/cjs/js/src/abstract/binance.js +0 -9
- package/dist/cjs/js/src/abstract/bingx.js +0 -9
- package/dist/cjs/js/src/abstract/bit2c.js +0 -9
- package/dist/cjs/js/src/abstract/bitbank.js +0 -9
- package/dist/cjs/js/src/abstract/bitbns.js +0 -9
- package/dist/cjs/js/src/abstract/bitfinex.js +0 -9
- package/dist/cjs/js/src/abstract/bitfinex2.js +0 -9
- package/dist/cjs/js/src/abstract/bitflyer.js +0 -9
- package/dist/cjs/js/src/abstract/bitforex.js +0 -9
- package/dist/cjs/js/src/abstract/bitget.js +0 -9
- package/dist/cjs/js/src/abstract/bithumb.js +0 -9
- package/dist/cjs/js/src/abstract/bitmart.js +0 -9
- package/dist/cjs/js/src/abstract/bitmex.js +0 -9
- package/dist/cjs/js/src/abstract/bitopro.js +0 -9
- package/dist/cjs/js/src/abstract/bitpanda.js +0 -9
- package/dist/cjs/js/src/abstract/bitrue.js +0 -9
- package/dist/cjs/js/src/abstract/bitso.js +0 -9
- package/dist/cjs/js/src/abstract/bitstamp.js +0 -9
- package/dist/cjs/js/src/abstract/bitteam.js +0 -9
- package/dist/cjs/js/src/abstract/bitvavo.js +0 -9
- package/dist/cjs/js/src/abstract/bl3p.js +0 -9
- package/dist/cjs/js/src/abstract/blockchaincom.js +0 -9
- package/dist/cjs/js/src/abstract/btcalpha.js +0 -9
- package/dist/cjs/js/src/abstract/btcbox.js +0 -9
- package/dist/cjs/js/src/abstract/btcmarkets.js +0 -9
- package/dist/cjs/js/src/abstract/btcturk.js +0 -9
- package/dist/cjs/js/src/abstract/bybit.js +0 -9
- package/dist/cjs/js/src/abstract/cex.js +0 -9
- package/dist/cjs/js/src/abstract/coinbase.js +0 -9
- package/dist/cjs/js/src/abstract/coinbasepro.js +0 -9
- package/dist/cjs/js/src/abstract/coincheck.js +0 -9
- package/dist/cjs/js/src/abstract/coinex.js +0 -9
- package/dist/cjs/js/src/abstract/coinlist.js +0 -9
- package/dist/cjs/js/src/abstract/coinmate.js +0 -9
- package/dist/cjs/js/src/abstract/coinone.js +0 -9
- package/dist/cjs/js/src/abstract/coinsph.js +0 -9
- package/dist/cjs/js/src/abstract/coinspot.js +0 -9
- package/dist/cjs/js/src/abstract/cryptocom.js +0 -9
- package/dist/cjs/js/src/abstract/currencycom.js +0 -9
- package/dist/cjs/js/src/abstract/delta.js +0 -9
- package/dist/cjs/js/src/abstract/deribit.js +0 -9
- package/dist/cjs/js/src/abstract/digifinex.js +0 -9
- package/dist/cjs/js/src/abstract/exmo.js +0 -9
- package/dist/cjs/js/src/abstract/gate.js +0 -9
- package/dist/cjs/js/src/abstract/gemini.js +0 -9
- package/dist/cjs/js/src/abstract/hitbtc.js +0 -9
- package/dist/cjs/js/src/abstract/hollaex.js +0 -9
- package/dist/cjs/js/src/abstract/htx.js +0 -9
- package/dist/cjs/js/src/abstract/huobijp.js +0 -9
- package/dist/cjs/js/src/abstract/idex.js +0 -9
- package/dist/cjs/js/src/abstract/independentreserve.js +0 -9
- package/dist/cjs/js/src/abstract/indodax.js +0 -9
- package/dist/cjs/js/src/abstract/kraken.js +0 -9
- package/dist/cjs/js/src/abstract/krakenfutures.js +0 -9
- package/dist/cjs/js/src/abstract/kucoin.js +0 -9
- package/dist/cjs/js/src/abstract/kucoinfutures.js +0 -9
- package/dist/cjs/js/src/abstract/kuna.js +0 -9
- package/dist/cjs/js/src/abstract/latoken.js +0 -9
- package/dist/cjs/js/src/abstract/lbank.js +0 -9
- package/dist/cjs/js/src/abstract/luno.js +0 -9
- package/dist/cjs/js/src/abstract/lykke.js +0 -9
- package/dist/cjs/js/src/abstract/mercado.js +0 -9
- package/dist/cjs/js/src/abstract/mexc.js +0 -9
- package/dist/cjs/js/src/abstract/ndax.js +0 -9
- package/dist/cjs/js/src/abstract/novadax.js +0 -9
- package/dist/cjs/js/src/abstract/oceanex.js +0 -9
- package/dist/cjs/js/src/abstract/okcoin.js +0 -9
- package/dist/cjs/js/src/abstract/okx.js +0 -9
- package/dist/cjs/js/src/abstract/p2b.js +0 -9
- package/dist/cjs/js/src/abstract/paymium.js +0 -9
- package/dist/cjs/js/src/abstract/phemex.js +0 -9
- package/dist/cjs/js/src/abstract/poloniex.js +0 -9
- package/dist/cjs/js/src/abstract/poloniexfutures.js +0 -9
- package/dist/cjs/js/src/abstract/probit.js +0 -9
- package/dist/cjs/js/src/abstract/timex.js +0 -9
- package/dist/cjs/js/src/abstract/tokocrypto.js +0 -9
- package/dist/cjs/js/src/abstract/upbit.js +0 -9
- package/dist/cjs/js/src/abstract/wavesexchange.js +0 -9
- package/dist/cjs/js/src/abstract/wazirx.js +0 -9
- package/dist/cjs/js/src/abstract/whitebit.js +0 -9
- package/dist/cjs/js/src/abstract/woo.js +0 -9
- package/dist/cjs/js/src/abstract/yobit.js +0 -9
- package/dist/cjs/js/src/abstract/zaif.js +0 -9
- package/dist/cjs/js/src/abstract/zonda.js +0 -9
- package/dist/cjs/js/src/ace.js +0 -1058
- package/dist/cjs/js/src/alpaca.js +0 -1125
- package/dist/cjs/js/src/ascendex.js +0 -3365
- package/dist/cjs/js/src/base/Exchange.js +0 -5257
- package/dist/cjs/js/src/base/Precise.js +0 -263
- package/dist/cjs/js/src/base/errors.js +0 -299
- package/dist/cjs/js/src/base/functions/crypto.js +0 -78
- package/dist/cjs/js/src/base/functions/encode.js +0 -44
- package/dist/cjs/js/src/base/functions/generic.js +0 -193
- package/dist/cjs/js/src/base/functions/misc.js +0 -96
- package/dist/cjs/js/src/base/functions/number.js +0 -297
- package/dist/cjs/js/src/base/functions/platform.js +0 -28
- package/dist/cjs/js/src/base/functions/rsa.js +0 -34
- package/dist/cjs/js/src/base/functions/string.js +0 -48
- package/dist/cjs/js/src/base/functions/throttle.js +0 -66
- package/dist/cjs/js/src/base/functions/time.js +0 -187
- package/dist/cjs/js/src/base/functions/totp.js +0 -24
- package/dist/cjs/js/src/base/functions/type.js +0 -162
- package/dist/cjs/js/src/base/functions.js +0 -157
- package/dist/cjs/js/src/base/ws/Cache.js +0 -254
- package/dist/cjs/js/src/base/ws/Client.js +0 -299
- package/dist/cjs/js/src/base/ws/Future.js +0 -34
- package/dist/cjs/js/src/base/ws/OrderBook.js +0 -107
- package/dist/cjs/js/src/base/ws/OrderBookSide.js +0 -281
- package/dist/cjs/js/src/base/ws/WsClient.js +0 -69
- package/dist/cjs/js/src/bequant.js +0 -33
- package/dist/cjs/js/src/bigone.js +0 -2213
- package/dist/cjs/js/src/binance.js +0 -9845
- package/dist/cjs/js/src/binancecoinm.js +0 -45
- package/dist/cjs/js/src/binanceus.js +0 -92
- package/dist/cjs/js/src/binanceusdm.js +0 -58
- package/dist/cjs/js/src/bingx.js +0 -3846
- package/dist/cjs/js/src/bit2c.js +0 -916
- package/dist/cjs/js/src/bitbank.js +0 -1000
- package/dist/cjs/js/src/bitbay.js +0 -17
- package/dist/cjs/js/src/bitbns.js +0 -1220
- package/dist/cjs/js/src/bitcoincom.js +0 -17
- package/dist/cjs/js/src/bitfinex.js +0 -1670
- package/dist/cjs/js/src/bitfinex2.js +0 -2990
- package/dist/cjs/js/src/bitflyer.js +0 -1045
- package/dist/cjs/js/src/bitforex.js +0 -852
- package/dist/cjs/js/src/bitget.js +0 -8295
- package/dist/cjs/js/src/bithumb.js +0 -1090
- package/dist/cjs/js/src/bitmart.js +0 -4454
- package/dist/cjs/js/src/bitmex.js +0 -2881
- package/dist/cjs/js/src/bitopro.js +0 -1724
- package/dist/cjs/js/src/bitrue.js +0 -3253
- package/dist/cjs/js/src/bitso.js +0 -1753
- package/dist/cjs/js/src/bitstamp.js +0 -2188
- package/dist/cjs/js/src/bitteam.js +0 -2309
- package/dist/cjs/js/src/bitvavo.js +0 -1968
- package/dist/cjs/js/src/bl3p.js +0 -447
- package/dist/cjs/js/src/blockchaincom.js +0 -1160
- package/dist/cjs/js/src/btcalpha.js +0 -929
- package/dist/cjs/js/src/btcbox.js +0 -565
- package/dist/cjs/js/src/btcmarkets.js +0 -1237
- package/dist/cjs/js/src/btcturk.js +0 -929
- package/dist/cjs/js/src/bybit.js +0 -7650
- package/dist/cjs/js/src/cex.js +0 -1693
- package/dist/cjs/js/src/coinbase.js +0 -3424
- package/dist/cjs/js/src/coinbasepro.js +0 -1866
- package/dist/cjs/js/src/coincheck.js +0 -843
- package/dist/cjs/js/src/coinex.js +0 -5417
- package/dist/cjs/js/src/coinlist.js +0 -2337
- package/dist/cjs/js/src/coinmate.js +0 -989
- package/dist/cjs/js/src/coinone.js +0 -1185
- package/dist/cjs/js/src/coinsph.js +0 -1933
- package/dist/cjs/js/src/coinspot.js +0 -548
- package/dist/cjs/js/src/cryptocom.js +0 -3007
- package/dist/cjs/js/src/currencycom.js +0 -2015
- package/dist/cjs/js/src/delta.js +0 -3262
- package/dist/cjs/js/src/deribit.js +0 -3306
- package/dist/cjs/js/src/digifinex.js +0 -4307
- package/dist/cjs/js/src/exmo.js +0 -2645
- package/dist/cjs/js/src/fmfwio.js +0 -34
- package/dist/cjs/js/src/gate.js +0 -7077
- package/dist/cjs/js/src/gateio.js +0 -16
- package/dist/cjs/js/src/gemini.js +0 -1801
- package/dist/cjs/js/src/hitbtc.js +0 -3660
- package/dist/cjs/js/src/hitbtc3.js +0 -19
- package/dist/cjs/js/src/hollaex.js +0 -1882
- package/dist/cjs/js/src/htx.js +0 -9174
- package/dist/cjs/js/src/huobi.js +0 -16
- package/dist/cjs/js/src/huobijp.js +0 -1918
- package/dist/cjs/js/src/idex.js +0 -1770
- package/dist/cjs/js/src/independentreserve.js +0 -761
- package/dist/cjs/js/src/indodax.js +0 -1069
- package/dist/cjs/js/src/kraken.js +0 -2891
- package/dist/cjs/js/src/krakenfutures.js +0 -2407
- package/dist/cjs/js/src/kucoin.js +0 -4494
- package/dist/cjs/js/src/kucoinfutures.js +0 -2529
- package/dist/cjs/js/src/kuna.js +0 -1949
- package/dist/cjs/js/src/latoken.js +0 -1729
- package/dist/cjs/js/src/lbank.js +0 -2851
- package/dist/cjs/js/src/luno.js +0 -1044
- package/dist/cjs/js/src/lykke.js +0 -1303
- package/dist/cjs/js/src/mercado.js +0 -897
- package/dist/cjs/js/src/mexc.js +0 -5407
- package/dist/cjs/js/src/ndax.js +0 -2450
- package/dist/cjs/js/src/novadax.js +0 -1556
- package/dist/cjs/js/src/oceanex.js +0 -964
- package/dist/cjs/js/src/okcoin.js +0 -3115
- package/dist/cjs/js/src/okx.js +0 -7331
- package/dist/cjs/js/src/p2b.js +0 -1243
- package/dist/cjs/js/src/paymium.js +0 -597
- package/dist/cjs/js/src/phemex.js +0 -4725
- package/dist/cjs/js/src/poloniex.js +0 -2356
- package/dist/cjs/js/src/poloniexfutures.js +0 -1794
- package/dist/cjs/js/src/pro/alpaca.js +0 -714
- package/dist/cjs/js/src/pro/ascendex.js +0 -957
- package/dist/cjs/js/src/pro/bequant.js +0 -33
- package/dist/cjs/js/src/pro/binance.js +0 -2796
- package/dist/cjs/js/src/pro/binancecoinm.js +0 -23
- package/dist/cjs/js/src/pro/binanceus.js +0 -51
- package/dist/cjs/js/src/pro/binanceusdm.js +0 -32
- package/dist/cjs/js/src/pro/bingx.js +0 -944
- package/dist/cjs/js/src/pro/bitcoincom.js +0 -29
- package/dist/cjs/js/src/pro/bitfinex.js +0 -672
- package/dist/cjs/js/src/pro/bitfinex2.js +0 -1159
- package/dist/cjs/js/src/pro/bitget.js +0 -1733
- package/dist/cjs/js/src/pro/bitmart.js +0 -1486
- package/dist/cjs/js/src/pro/bitmex.js +0 -1576
- package/dist/cjs/js/src/pro/bitopro.js +0 -327
- package/dist/cjs/js/src/pro/bitrue.js +0 -462
- package/dist/cjs/js/src/pro/bitstamp.js +0 -547
- package/dist/cjs/js/src/pro/bitvavo.js +0 -704
- package/dist/cjs/js/src/pro/blockchaincom.js +0 -794
- package/dist/cjs/js/src/pro/bybit.js +0 -1843
- package/dist/cjs/js/src/pro/cex.js +0 -1510
- package/dist/cjs/js/src/pro/coinbase.js +0 -561
- package/dist/cjs/js/src/pro/coinbasepro.js +0 -968
- package/dist/cjs/js/src/pro/coinex.js +0 -1095
- package/dist/cjs/js/src/pro/cryptocom.js +0 -1020
- package/dist/cjs/js/src/pro/currencycom.js +0 -563
- package/dist/cjs/js/src/pro/deribit.js +0 -825
- package/dist/cjs/js/src/pro/exmo.js +0 -658
- package/dist/cjs/js/src/pro/gate.js +0 -1316
- package/dist/cjs/js/src/pro/gateio.js +0 -16
- package/dist/cjs/js/src/pro/gemini.js +0 -649
- package/dist/cjs/js/src/pro/hitbtc.js +0 -1294
- package/dist/cjs/js/src/pro/hollaex.js +0 -597
- package/dist/cjs/js/src/pro/htx.js +0 -2388
- package/dist/cjs/js/src/pro/huobi.js +0 -16
- package/dist/cjs/js/src/pro/huobijp.js +0 -606
- package/dist/cjs/js/src/pro/idex.js +0 -714
- package/dist/cjs/js/src/pro/independentreserve.js +0 -280
- package/dist/cjs/js/src/pro/kraken.js +0 -1364
- package/dist/cjs/js/src/pro/krakenfutures.js +0 -1506
- package/dist/cjs/js/src/pro/kucoin.js +0 -1054
- package/dist/cjs/js/src/pro/kucoinfutures.js +0 -981
- package/dist/cjs/js/src/pro/luno.js +0 -322
- package/dist/cjs/js/src/pro/mexc.js +0 -1170
- package/dist/cjs/js/src/pro/ndax.js +0 -545
- package/dist/cjs/js/src/pro/okcoin.js +0 -760
- package/dist/cjs/js/src/pro/okx.js +0 -1608
- package/dist/cjs/js/src/pro/phemex.js +0 -1511
- package/dist/cjs/js/src/pro/poloniex.js +0 -1253
- package/dist/cjs/js/src/pro/poloniexfutures.js +0 -1014
- package/dist/cjs/js/src/pro/probit.js +0 -586
- package/dist/cjs/js/src/pro/upbit.js +0 -234
- package/dist/cjs/js/src/pro/wazirx.js +0 -776
- package/dist/cjs/js/src/pro/whitebit.js +0 -927
- package/dist/cjs/js/src/pro/woo.js +0 -895
- package/dist/cjs/js/src/probit.js +0 -1867
- package/dist/cjs/js/src/static_dependencies/fflake/browser.js +0 -401
- package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -195
- package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -308
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -554
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -94
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -70
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -91
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -16
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -1760
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -52
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -81
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -376
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -70
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -1580
- package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -74
- package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -24
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -158
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -429
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -176
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -324
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -163
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -245
- package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -1018
- package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +0 -383
- package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +0 -258
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +0 -53
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +0 -120
- package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +0 -69
- package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +0 -7
- package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +0 -83
- package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +0 -240
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +0 -91
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +0 -130
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +0 -214
- package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +0 -239
- package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +0 -93
- package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +0 -354
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -16
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +0 -20
- package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -30
- package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +0 -239
- package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +0 -372
- package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +0 -273
- package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +0 -139
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -14
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -16
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +0 -81
- package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -292
- package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +0 -103
- package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -140
- package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -175
- package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -95
- package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +0 -7
- package/dist/cjs/js/src/static_dependencies/scure-base/index.js +0 -383
- package/dist/cjs/js/src/timex.js +0 -1562
- package/dist/cjs/js/src/tokocrypto.js +0 -2542
- package/dist/cjs/js/src/upbit.js +0 -1844
- package/dist/cjs/js/src/wavesexchange.js +0 -2607
- package/dist/cjs/js/src/wazirx.js +0 -953
- package/dist/cjs/js/src/whitebit.js +0 -2309
- package/dist/cjs/js/src/woo.js +0 -2769
- package/dist/cjs/js/src/yobit.js +0 -1314
- package/dist/cjs/js/src/zaif.js +0 -736
- package/dist/cjs/js/src/zonda.js +0 -1883
- package/dist/cjs/src/abstract/bitpanda.js +0 -9
- package/test.ts +0 -0
- /package/dist/cjs/{js/src/abstract/ace.js → src/abstract/onetrading.js} +0 -0
- /package/dist/cjs/{js/src → src}/pro/coinone.js +0 -0
- /package/js/src/abstract/{bitpanda.js → onetrading.js} +0 -0
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var _sha2 = require('./_sha2.js');
|
|
6
|
-
var utils = require('./utils.js');
|
|
7
|
-
|
|
8
|
-
// Choice: a ? b : c
|
|
9
|
-
const Chi = (a, b, c) => (a & b) ^ (~a & c);
|
|
10
|
-
// Majority function, true if any two inpust is true
|
|
11
|
-
const Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);
|
|
12
|
-
// Round constants:
|
|
13
|
-
// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)
|
|
14
|
-
// prettier-ignore
|
|
15
|
-
const SHA256_K = new Uint32Array([
|
|
16
|
-
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
|
17
|
-
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
|
18
|
-
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
19
|
-
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
|
20
|
-
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
|
21
|
-
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
22
|
-
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
23
|
-
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
|
24
|
-
]);
|
|
25
|
-
// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):
|
|
26
|
-
// prettier-ignore
|
|
27
|
-
const IV = new Uint32Array([
|
|
28
|
-
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
|
|
29
|
-
]);
|
|
30
|
-
// Temporary buffer, not used to store anything between runs
|
|
31
|
-
// Named this way because it matches specification.
|
|
32
|
-
const SHA256_W = new Uint32Array(64);
|
|
33
|
-
class SHA256 extends _sha2.SHA2 {
|
|
34
|
-
constructor() {
|
|
35
|
-
super(64, 32, 8, false);
|
|
36
|
-
// We cannot use array here since array allows indexing by variable
|
|
37
|
-
// which means optimizer/compiler cannot use registers.
|
|
38
|
-
this.A = IV[0] | 0;
|
|
39
|
-
this.B = IV[1] | 0;
|
|
40
|
-
this.C = IV[2] | 0;
|
|
41
|
-
this.D = IV[3] | 0;
|
|
42
|
-
this.E = IV[4] | 0;
|
|
43
|
-
this.F = IV[5] | 0;
|
|
44
|
-
this.G = IV[6] | 0;
|
|
45
|
-
this.H = IV[7] | 0;
|
|
46
|
-
}
|
|
47
|
-
get() {
|
|
48
|
-
const { A, B, C, D, E, F, G, H } = this;
|
|
49
|
-
return [A, B, C, D, E, F, G, H];
|
|
50
|
-
}
|
|
51
|
-
// prettier-ignore
|
|
52
|
-
set(A, B, C, D, E, F, G, H) {
|
|
53
|
-
this.A = A | 0;
|
|
54
|
-
this.B = B | 0;
|
|
55
|
-
this.C = C | 0;
|
|
56
|
-
this.D = D | 0;
|
|
57
|
-
this.E = E | 0;
|
|
58
|
-
this.F = F | 0;
|
|
59
|
-
this.G = G | 0;
|
|
60
|
-
this.H = H | 0;
|
|
61
|
-
}
|
|
62
|
-
process(view, offset) {
|
|
63
|
-
// Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array
|
|
64
|
-
for (let i = 0; i < 16; i++, offset += 4)
|
|
65
|
-
SHA256_W[i] = view.getUint32(offset, false);
|
|
66
|
-
for (let i = 16; i < 64; i++) {
|
|
67
|
-
const W15 = SHA256_W[i - 15];
|
|
68
|
-
const W2 = SHA256_W[i - 2];
|
|
69
|
-
const s0 = utils.rotr(W15, 7) ^ utils.rotr(W15, 18) ^ (W15 >>> 3);
|
|
70
|
-
const s1 = utils.rotr(W2, 17) ^ utils.rotr(W2, 19) ^ (W2 >>> 10);
|
|
71
|
-
SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;
|
|
72
|
-
}
|
|
73
|
-
// Compression function main loop, 64 rounds
|
|
74
|
-
let { A, B, C, D, E, F, G, H } = this;
|
|
75
|
-
for (let i = 0; i < 64; i++) {
|
|
76
|
-
const sigma1 = utils.rotr(E, 6) ^ utils.rotr(E, 11) ^ utils.rotr(E, 25);
|
|
77
|
-
const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;
|
|
78
|
-
const sigma0 = utils.rotr(A, 2) ^ utils.rotr(A, 13) ^ utils.rotr(A, 22);
|
|
79
|
-
const T2 = (sigma0 + Maj(A, B, C)) | 0;
|
|
80
|
-
H = G;
|
|
81
|
-
G = F;
|
|
82
|
-
F = E;
|
|
83
|
-
E = (D + T1) | 0;
|
|
84
|
-
D = C;
|
|
85
|
-
C = B;
|
|
86
|
-
B = A;
|
|
87
|
-
A = (T1 + T2) | 0;
|
|
88
|
-
}
|
|
89
|
-
// Add the compressed chunk to the current hash value
|
|
90
|
-
A = (A + this.A) | 0;
|
|
91
|
-
B = (B + this.B) | 0;
|
|
92
|
-
C = (C + this.C) | 0;
|
|
93
|
-
D = (D + this.D) | 0;
|
|
94
|
-
E = (E + this.E) | 0;
|
|
95
|
-
F = (F + this.F) | 0;
|
|
96
|
-
G = (G + this.G) | 0;
|
|
97
|
-
H = (H + this.H) | 0;
|
|
98
|
-
this.set(A, B, C, D, E, F, G, H);
|
|
99
|
-
}
|
|
100
|
-
roundClean() {
|
|
101
|
-
SHA256_W.fill(0);
|
|
102
|
-
}
|
|
103
|
-
destroy() {
|
|
104
|
-
this.set(0, 0, 0, 0, 0, 0, 0, 0);
|
|
105
|
-
this.buffer.fill(0);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf
|
|
109
|
-
class SHA224 extends SHA256 {
|
|
110
|
-
constructor() {
|
|
111
|
-
super();
|
|
112
|
-
this.A = 0xc1059ed8 | 0;
|
|
113
|
-
this.B = 0x367cd507 | 0;
|
|
114
|
-
this.C = 0x3070dd17 | 0;
|
|
115
|
-
this.D = 0xf70e5939 | 0;
|
|
116
|
-
this.E = 0xffc00b31 | 0;
|
|
117
|
-
this.F = 0x68581511 | 0;
|
|
118
|
-
this.G = 0x64f98fa7 | 0;
|
|
119
|
-
this.H = 0xbefa4fa4 | 0;
|
|
120
|
-
this.outputLen = 28;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* SHA2-256 hash function
|
|
125
|
-
* @param message - data that would be hashed
|
|
126
|
-
*/
|
|
127
|
-
const sha256 = utils.wrapConstructor(() => new SHA256());
|
|
128
|
-
utils.wrapConstructor(() => new SHA224());
|
|
129
|
-
|
|
130
|
-
exports.sha256 = sha256;
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var _assert = require('./_assert.js');
|
|
6
|
-
var _u64 = require('./_u64.js');
|
|
7
|
-
var utils = require('./utils.js');
|
|
8
|
-
|
|
9
|
-
// Various per round constants calculations
|
|
10
|
-
const [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];
|
|
11
|
-
const _0n = BigInt(0);
|
|
12
|
-
const _1n = BigInt(1);
|
|
13
|
-
const _2n = BigInt(2);
|
|
14
|
-
const _7n = BigInt(7);
|
|
15
|
-
const _256n = BigInt(256);
|
|
16
|
-
const _0x71n = BigInt(0x71);
|
|
17
|
-
for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {
|
|
18
|
-
// Pi
|
|
19
|
-
[x, y] = [y, (2 * x + 3 * y) % 5];
|
|
20
|
-
SHA3_PI.push(2 * (5 * y + x));
|
|
21
|
-
// Rotational
|
|
22
|
-
SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);
|
|
23
|
-
// Iota
|
|
24
|
-
let t = _0n;
|
|
25
|
-
for (let j = 0; j < 7; j++) {
|
|
26
|
-
R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;
|
|
27
|
-
if (R & _2n)
|
|
28
|
-
t ^= _1n << ((_1n << BigInt(j)) - _1n);
|
|
29
|
-
}
|
|
30
|
-
_SHA3_IOTA.push(t);
|
|
31
|
-
}
|
|
32
|
-
const [SHA3_IOTA_H, SHA3_IOTA_L] = _u64["default"].split(_SHA3_IOTA, true);
|
|
33
|
-
// Left rotation (without 0, 32, 64)
|
|
34
|
-
const rotlH = (h, l, s) => s > 32 ? _u64["default"].rotlBH(h, l, s) : _u64["default"].rotlSH(h, l, s);
|
|
35
|
-
const rotlL = (h, l, s) => s > 32 ? _u64["default"].rotlBL(h, l, s) : _u64["default"].rotlSL(h, l, s);
|
|
36
|
-
// Same as keccakf1600, but allows to skip some rounds
|
|
37
|
-
function keccakP(s, rounds = 24) {
|
|
38
|
-
const B = new Uint32Array(5 * 2);
|
|
39
|
-
// NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)
|
|
40
|
-
for (let round = 24 - rounds; round < 24; round++) {
|
|
41
|
-
// Theta θ
|
|
42
|
-
for (let x = 0; x < 10; x++)
|
|
43
|
-
B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];
|
|
44
|
-
for (let x = 0; x < 10; x += 2) {
|
|
45
|
-
const idx1 = (x + 8) % 10;
|
|
46
|
-
const idx0 = (x + 2) % 10;
|
|
47
|
-
const B0 = B[idx0];
|
|
48
|
-
const B1 = B[idx0 + 1];
|
|
49
|
-
const Th = rotlH(B0, B1, 1) ^ B[idx1];
|
|
50
|
-
const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];
|
|
51
|
-
for (let y = 0; y < 50; y += 10) {
|
|
52
|
-
s[x + y] ^= Th;
|
|
53
|
-
s[x + y + 1] ^= Tl;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
// Rho (ρ) and Pi (π)
|
|
57
|
-
let curH = s[2];
|
|
58
|
-
let curL = s[3];
|
|
59
|
-
for (let t = 0; t < 24; t++) {
|
|
60
|
-
const shift = SHA3_ROTL[t];
|
|
61
|
-
const Th = rotlH(curH, curL, shift);
|
|
62
|
-
const Tl = rotlL(curH, curL, shift);
|
|
63
|
-
const PI = SHA3_PI[t];
|
|
64
|
-
curH = s[PI];
|
|
65
|
-
curL = s[PI + 1];
|
|
66
|
-
s[PI] = Th;
|
|
67
|
-
s[PI + 1] = Tl;
|
|
68
|
-
}
|
|
69
|
-
// Chi (χ)
|
|
70
|
-
for (let y = 0; y < 50; y += 10) {
|
|
71
|
-
for (let x = 0; x < 10; x++)
|
|
72
|
-
B[x] = s[y + x];
|
|
73
|
-
for (let x = 0; x < 10; x++)
|
|
74
|
-
s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];
|
|
75
|
-
}
|
|
76
|
-
// Iota (ι)
|
|
77
|
-
s[0] ^= SHA3_IOTA_H[round];
|
|
78
|
-
s[1] ^= SHA3_IOTA_L[round];
|
|
79
|
-
}
|
|
80
|
-
B.fill(0);
|
|
81
|
-
}
|
|
82
|
-
class Keccak extends utils.Hash {
|
|
83
|
-
// NOTE: we accept arguments in bytes instead of bits here.
|
|
84
|
-
constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {
|
|
85
|
-
super();
|
|
86
|
-
this.blockLen = blockLen;
|
|
87
|
-
this.suffix = suffix;
|
|
88
|
-
this.outputLen = outputLen;
|
|
89
|
-
this.enableXOF = enableXOF;
|
|
90
|
-
this.rounds = rounds;
|
|
91
|
-
this.pos = 0;
|
|
92
|
-
this.posOut = 0;
|
|
93
|
-
this.finished = false;
|
|
94
|
-
this.destroyed = false;
|
|
95
|
-
// Can be passed from user as dkLen
|
|
96
|
-
_assert["default"].number(outputLen);
|
|
97
|
-
// 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes
|
|
98
|
-
if (0 >= this.blockLen || this.blockLen >= 200)
|
|
99
|
-
throw new Error('Sha3 supports only keccak-f1600 function');
|
|
100
|
-
this.state = new Uint8Array(200);
|
|
101
|
-
this.state32 = utils.u32(this.state);
|
|
102
|
-
}
|
|
103
|
-
keccak() {
|
|
104
|
-
keccakP(this.state32, this.rounds);
|
|
105
|
-
this.posOut = 0;
|
|
106
|
-
this.pos = 0;
|
|
107
|
-
}
|
|
108
|
-
update(data) {
|
|
109
|
-
_assert["default"].exists(this);
|
|
110
|
-
const { blockLen, state } = this;
|
|
111
|
-
data = utils.toBytes(data);
|
|
112
|
-
const len = data.length;
|
|
113
|
-
for (let pos = 0; pos < len;) {
|
|
114
|
-
const take = Math.min(blockLen - this.pos, len - pos);
|
|
115
|
-
for (let i = 0; i < take; i++)
|
|
116
|
-
state[this.pos++] ^= data[pos++];
|
|
117
|
-
if (this.pos === blockLen)
|
|
118
|
-
this.keccak();
|
|
119
|
-
}
|
|
120
|
-
return this;
|
|
121
|
-
}
|
|
122
|
-
finish() {
|
|
123
|
-
if (this.finished)
|
|
124
|
-
return;
|
|
125
|
-
this.finished = true;
|
|
126
|
-
const { state, suffix, pos, blockLen } = this;
|
|
127
|
-
// Do the padding
|
|
128
|
-
state[pos] ^= suffix;
|
|
129
|
-
if ((suffix & 0x80) !== 0 && pos === blockLen - 1)
|
|
130
|
-
this.keccak();
|
|
131
|
-
state[blockLen - 1] ^= 0x80;
|
|
132
|
-
this.keccak();
|
|
133
|
-
}
|
|
134
|
-
writeInto(out) {
|
|
135
|
-
_assert["default"].exists(this, false);
|
|
136
|
-
_assert["default"].bytes(out);
|
|
137
|
-
this.finish();
|
|
138
|
-
const bufferOut = this.state;
|
|
139
|
-
const { blockLen } = this;
|
|
140
|
-
for (let pos = 0, len = out.length; pos < len;) {
|
|
141
|
-
if (this.posOut >= blockLen)
|
|
142
|
-
this.keccak();
|
|
143
|
-
const take = Math.min(blockLen - this.posOut, len - pos);
|
|
144
|
-
out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);
|
|
145
|
-
this.posOut += take;
|
|
146
|
-
pos += take;
|
|
147
|
-
}
|
|
148
|
-
return out;
|
|
149
|
-
}
|
|
150
|
-
xofInto(out) {
|
|
151
|
-
// Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF
|
|
152
|
-
if (!this.enableXOF)
|
|
153
|
-
throw new Error('XOF is not possible for this instance');
|
|
154
|
-
return this.writeInto(out);
|
|
155
|
-
}
|
|
156
|
-
xof(bytes) {
|
|
157
|
-
_assert["default"].number(bytes);
|
|
158
|
-
return this.xofInto(new Uint8Array(bytes));
|
|
159
|
-
}
|
|
160
|
-
digestInto(out) {
|
|
161
|
-
_assert["default"].output(out, this);
|
|
162
|
-
if (this.finished)
|
|
163
|
-
throw new Error('digest() was already called');
|
|
164
|
-
this.writeInto(out);
|
|
165
|
-
this.destroy();
|
|
166
|
-
return out;
|
|
167
|
-
}
|
|
168
|
-
digest() {
|
|
169
|
-
return this.digestInto(new Uint8Array(this.outputLen));
|
|
170
|
-
}
|
|
171
|
-
destroy() {
|
|
172
|
-
this.destroyed = true;
|
|
173
|
-
this.state.fill(0);
|
|
174
|
-
}
|
|
175
|
-
_cloneInto(to) {
|
|
176
|
-
const { blockLen, suffix, outputLen, rounds, enableXOF } = this;
|
|
177
|
-
to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));
|
|
178
|
-
to.state32.set(this.state32);
|
|
179
|
-
to.pos = this.pos;
|
|
180
|
-
to.posOut = this.posOut;
|
|
181
|
-
to.finished = this.finished;
|
|
182
|
-
to.rounds = rounds;
|
|
183
|
-
// Suffix can change in cSHAKE
|
|
184
|
-
to.suffix = suffix;
|
|
185
|
-
to.outputLen = outputLen;
|
|
186
|
-
to.enableXOF = enableXOF;
|
|
187
|
-
to.destroyed = this.destroyed;
|
|
188
|
-
return to;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
const gen = (suffix, blockLen, outputLen) => utils.wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));
|
|
192
|
-
gen(0x06, 144, 224 / 8);
|
|
193
|
-
/**
|
|
194
|
-
* SHA3-256 hash function
|
|
195
|
-
* @param message - that would be hashed
|
|
196
|
-
*/
|
|
197
|
-
gen(0x06, 136, 256 / 8);
|
|
198
|
-
gen(0x06, 104, 384 / 8);
|
|
199
|
-
gen(0x06, 72, 512 / 8);
|
|
200
|
-
gen(0x01, 144, 224 / 8);
|
|
201
|
-
/**
|
|
202
|
-
* keccak-256 hash function. Different from SHA3-256.
|
|
203
|
-
* @param message - that would be hashed
|
|
204
|
-
*/
|
|
205
|
-
const keccak_256 = gen(0x01, 136, 256 / 8);
|
|
206
|
-
gen(0x01, 104, 384 / 8);
|
|
207
|
-
gen(0x01, 72, 512 / 8);
|
|
208
|
-
const genShake = (suffix, blockLen, outputLen) => utils.wrapConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));
|
|
209
|
-
genShake(0x1f, 168, 128 / 8);
|
|
210
|
-
genShake(0x1f, 136, 256 / 8);
|
|
211
|
-
|
|
212
|
-
exports.Keccak = Keccak;
|
|
213
|
-
exports.keccakP = keccakP;
|
|
214
|
-
exports.keccak_256 = keccak_256;
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var _sha2 = require('./_sha2.js');
|
|
6
|
-
var _u64 = require('./_u64.js');
|
|
7
|
-
var utils = require('./utils.js');
|
|
8
|
-
|
|
9
|
-
// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):
|
|
10
|
-
// prettier-ignore
|
|
11
|
-
const [SHA512_Kh, SHA512_Kl] = _u64["default"].split([
|
|
12
|
-
'0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',
|
|
13
|
-
'0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',
|
|
14
|
-
'0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',
|
|
15
|
-
'0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',
|
|
16
|
-
'0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',
|
|
17
|
-
'0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',
|
|
18
|
-
'0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',
|
|
19
|
-
'0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',
|
|
20
|
-
'0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',
|
|
21
|
-
'0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',
|
|
22
|
-
'0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',
|
|
23
|
-
'0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',
|
|
24
|
-
'0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',
|
|
25
|
-
'0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',
|
|
26
|
-
'0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',
|
|
27
|
-
'0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',
|
|
28
|
-
'0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',
|
|
29
|
-
'0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',
|
|
30
|
-
'0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',
|
|
31
|
-
'0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'
|
|
32
|
-
].map(n => BigInt(n)));
|
|
33
|
-
// Temporary buffer, not used to store anything between runs
|
|
34
|
-
const SHA512_W_H = new Uint32Array(80);
|
|
35
|
-
const SHA512_W_L = new Uint32Array(80);
|
|
36
|
-
class SHA512 extends _sha2.SHA2 {
|
|
37
|
-
constructor() {
|
|
38
|
-
super(128, 64, 16, false);
|
|
39
|
-
// We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.
|
|
40
|
-
// Also looks cleaner and easier to verify with spec.
|
|
41
|
-
// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):
|
|
42
|
-
// h -- high 32 bits, l -- low 32 bits
|
|
43
|
-
this.Ah = 0x6a09e667 | 0;
|
|
44
|
-
this.Al = 0xf3bcc908 | 0;
|
|
45
|
-
this.Bh = 0xbb67ae85 | 0;
|
|
46
|
-
this.Bl = 0x84caa73b | 0;
|
|
47
|
-
this.Ch = 0x3c6ef372 | 0;
|
|
48
|
-
this.Cl = 0xfe94f82b | 0;
|
|
49
|
-
this.Dh = 0xa54ff53a | 0;
|
|
50
|
-
this.Dl = 0x5f1d36f1 | 0;
|
|
51
|
-
this.Eh = 0x510e527f | 0;
|
|
52
|
-
this.El = 0xade682d1 | 0;
|
|
53
|
-
this.Fh = 0x9b05688c | 0;
|
|
54
|
-
this.Fl = 0x2b3e6c1f | 0;
|
|
55
|
-
this.Gh = 0x1f83d9ab | 0;
|
|
56
|
-
this.Gl = 0xfb41bd6b | 0;
|
|
57
|
-
this.Hh = 0x5be0cd19 | 0;
|
|
58
|
-
this.Hl = 0x137e2179 | 0;
|
|
59
|
-
}
|
|
60
|
-
// prettier-ignore
|
|
61
|
-
get() {
|
|
62
|
-
const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;
|
|
63
|
-
return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];
|
|
64
|
-
}
|
|
65
|
-
// prettier-ignore
|
|
66
|
-
set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {
|
|
67
|
-
this.Ah = Ah | 0;
|
|
68
|
-
this.Al = Al | 0;
|
|
69
|
-
this.Bh = Bh | 0;
|
|
70
|
-
this.Bl = Bl | 0;
|
|
71
|
-
this.Ch = Ch | 0;
|
|
72
|
-
this.Cl = Cl | 0;
|
|
73
|
-
this.Dh = Dh | 0;
|
|
74
|
-
this.Dl = Dl | 0;
|
|
75
|
-
this.Eh = Eh | 0;
|
|
76
|
-
this.El = El | 0;
|
|
77
|
-
this.Fh = Fh | 0;
|
|
78
|
-
this.Fl = Fl | 0;
|
|
79
|
-
this.Gh = Gh | 0;
|
|
80
|
-
this.Gl = Gl | 0;
|
|
81
|
-
this.Hh = Hh | 0;
|
|
82
|
-
this.Hl = Hl | 0;
|
|
83
|
-
}
|
|
84
|
-
process(view, offset) {
|
|
85
|
-
// Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array
|
|
86
|
-
for (let i = 0; i < 16; i++, offset += 4) {
|
|
87
|
-
SHA512_W_H[i] = view.getUint32(offset);
|
|
88
|
-
SHA512_W_L[i] = view.getUint32((offset += 4));
|
|
89
|
-
}
|
|
90
|
-
for (let i = 16; i < 80; i++) {
|
|
91
|
-
// s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)
|
|
92
|
-
const W15h = SHA512_W_H[i - 15] | 0;
|
|
93
|
-
const W15l = SHA512_W_L[i - 15] | 0;
|
|
94
|
-
const s0h = _u64["default"].rotrSH(W15h, W15l, 1) ^ _u64["default"].rotrSH(W15h, W15l, 8) ^ _u64["default"].shrSH(W15h, W15l, 7);
|
|
95
|
-
const s0l = _u64["default"].rotrSL(W15h, W15l, 1) ^ _u64["default"].rotrSL(W15h, W15l, 8) ^ _u64["default"].shrSL(W15h, W15l, 7);
|
|
96
|
-
// s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)
|
|
97
|
-
const W2h = SHA512_W_H[i - 2] | 0;
|
|
98
|
-
const W2l = SHA512_W_L[i - 2] | 0;
|
|
99
|
-
const s1h = _u64["default"].rotrSH(W2h, W2l, 19) ^ _u64["default"].rotrBH(W2h, W2l, 61) ^ _u64["default"].shrSH(W2h, W2l, 6);
|
|
100
|
-
const s1l = _u64["default"].rotrSL(W2h, W2l, 19) ^ _u64["default"].rotrBL(W2h, W2l, 61) ^ _u64["default"].shrSL(W2h, W2l, 6);
|
|
101
|
-
// SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];
|
|
102
|
-
const SUMl = _u64["default"].add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);
|
|
103
|
-
const SUMh = _u64["default"].add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);
|
|
104
|
-
SHA512_W_H[i] = SUMh | 0;
|
|
105
|
-
SHA512_W_L[i] = SUMl | 0;
|
|
106
|
-
}
|
|
107
|
-
let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;
|
|
108
|
-
// Compression function main loop, 80 rounds
|
|
109
|
-
for (let i = 0; i < 80; i++) {
|
|
110
|
-
// S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)
|
|
111
|
-
const sigma1h = _u64["default"].rotrSH(Eh, El, 14) ^ _u64["default"].rotrSH(Eh, El, 18) ^ _u64["default"].rotrBH(Eh, El, 41);
|
|
112
|
-
const sigma1l = _u64["default"].rotrSL(Eh, El, 14) ^ _u64["default"].rotrSL(Eh, El, 18) ^ _u64["default"].rotrBL(Eh, El, 41);
|
|
113
|
-
//const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;
|
|
114
|
-
const CHIh = (Eh & Fh) ^ (~Eh & Gh);
|
|
115
|
-
const CHIl = (El & Fl) ^ (~El & Gl);
|
|
116
|
-
// T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]
|
|
117
|
-
// prettier-ignore
|
|
118
|
-
const T1ll = _u64["default"].add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);
|
|
119
|
-
const T1h = _u64["default"].add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);
|
|
120
|
-
const T1l = T1ll | 0;
|
|
121
|
-
// S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)
|
|
122
|
-
const sigma0h = _u64["default"].rotrSH(Ah, Al, 28) ^ _u64["default"].rotrBH(Ah, Al, 34) ^ _u64["default"].rotrBH(Ah, Al, 39);
|
|
123
|
-
const sigma0l = _u64["default"].rotrSL(Ah, Al, 28) ^ _u64["default"].rotrBL(Ah, Al, 34) ^ _u64["default"].rotrBL(Ah, Al, 39);
|
|
124
|
-
const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);
|
|
125
|
-
const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);
|
|
126
|
-
Hh = Gh | 0;
|
|
127
|
-
Hl = Gl | 0;
|
|
128
|
-
Gh = Fh | 0;
|
|
129
|
-
Gl = Fl | 0;
|
|
130
|
-
Fh = Eh | 0;
|
|
131
|
-
Fl = El | 0;
|
|
132
|
-
({ h: Eh, l: El } = _u64["default"].add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));
|
|
133
|
-
Dh = Ch | 0;
|
|
134
|
-
Dl = Cl | 0;
|
|
135
|
-
Ch = Bh | 0;
|
|
136
|
-
Cl = Bl | 0;
|
|
137
|
-
Bh = Ah | 0;
|
|
138
|
-
Bl = Al | 0;
|
|
139
|
-
const All = _u64["default"].add3L(T1l, sigma0l, MAJl);
|
|
140
|
-
Ah = _u64["default"].add3H(All, T1h, sigma0h, MAJh);
|
|
141
|
-
Al = All | 0;
|
|
142
|
-
}
|
|
143
|
-
// Add the compressed chunk to the current hash value
|
|
144
|
-
({ h: Ah, l: Al } = _u64["default"].add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));
|
|
145
|
-
({ h: Bh, l: Bl } = _u64["default"].add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));
|
|
146
|
-
({ h: Ch, l: Cl } = _u64["default"].add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));
|
|
147
|
-
({ h: Dh, l: Dl } = _u64["default"].add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));
|
|
148
|
-
({ h: Eh, l: El } = _u64["default"].add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));
|
|
149
|
-
({ h: Fh, l: Fl } = _u64["default"].add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));
|
|
150
|
-
({ h: Gh, l: Gl } = _u64["default"].add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));
|
|
151
|
-
({ h: Hh, l: Hl } = _u64["default"].add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));
|
|
152
|
-
this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);
|
|
153
|
-
}
|
|
154
|
-
roundClean() {
|
|
155
|
-
SHA512_W_H.fill(0);
|
|
156
|
-
SHA512_W_L.fill(0);
|
|
157
|
-
}
|
|
158
|
-
destroy() {
|
|
159
|
-
this.buffer.fill(0);
|
|
160
|
-
this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
class SHA512_224 extends SHA512 {
|
|
164
|
-
constructor() {
|
|
165
|
-
super();
|
|
166
|
-
// h -- high 32 bits, l -- low 32 bits
|
|
167
|
-
this.Ah = 0x8c3d37c8 | 0;
|
|
168
|
-
this.Al = 0x19544da2 | 0;
|
|
169
|
-
this.Bh = 0x73e19966 | 0;
|
|
170
|
-
this.Bl = 0x89dcd4d6 | 0;
|
|
171
|
-
this.Ch = 0x1dfab7ae | 0;
|
|
172
|
-
this.Cl = 0x32ff9c82 | 0;
|
|
173
|
-
this.Dh = 0x679dd514 | 0;
|
|
174
|
-
this.Dl = 0x582f9fcf | 0;
|
|
175
|
-
this.Eh = 0x0f6d2b69 | 0;
|
|
176
|
-
this.El = 0x7bd44da8 | 0;
|
|
177
|
-
this.Fh = 0x77e36f73 | 0;
|
|
178
|
-
this.Fl = 0x04c48942 | 0;
|
|
179
|
-
this.Gh = 0x3f9d85a8 | 0;
|
|
180
|
-
this.Gl = 0x6a1d36c8 | 0;
|
|
181
|
-
this.Hh = 0x1112e6ad | 0;
|
|
182
|
-
this.Hl = 0x91d692a1 | 0;
|
|
183
|
-
this.outputLen = 28;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
class SHA512_256 extends SHA512 {
|
|
187
|
-
constructor() {
|
|
188
|
-
super();
|
|
189
|
-
// h -- high 32 bits, l -- low 32 bits
|
|
190
|
-
this.Ah = 0x22312194 | 0;
|
|
191
|
-
this.Al = 0xfc2bf72c | 0;
|
|
192
|
-
this.Bh = 0x9f555fa3 | 0;
|
|
193
|
-
this.Bl = 0xc84c64c2 | 0;
|
|
194
|
-
this.Ch = 0x2393b86b | 0;
|
|
195
|
-
this.Cl = 0x6f53b151 | 0;
|
|
196
|
-
this.Dh = 0x96387719 | 0;
|
|
197
|
-
this.Dl = 0x5940eabd | 0;
|
|
198
|
-
this.Eh = 0x96283ee2 | 0;
|
|
199
|
-
this.El = 0xa88effe3 | 0;
|
|
200
|
-
this.Fh = 0xbe5e1e25 | 0;
|
|
201
|
-
this.Fl = 0x53863992 | 0;
|
|
202
|
-
this.Gh = 0x2b0199fc | 0;
|
|
203
|
-
this.Gl = 0x2c85b8aa | 0;
|
|
204
|
-
this.Hh = 0x0eb72ddc | 0;
|
|
205
|
-
this.Hl = 0x81c52ca2 | 0;
|
|
206
|
-
this.outputLen = 32;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
class SHA384 extends SHA512 {
|
|
210
|
-
constructor() {
|
|
211
|
-
super();
|
|
212
|
-
// h -- high 32 bits, l -- low 32 bits
|
|
213
|
-
this.Ah = 0xcbbb9d5d | 0;
|
|
214
|
-
this.Al = 0xc1059ed8 | 0;
|
|
215
|
-
this.Bh = 0x629a292a | 0;
|
|
216
|
-
this.Bl = 0x367cd507 | 0;
|
|
217
|
-
this.Ch = 0x9159015a | 0;
|
|
218
|
-
this.Cl = 0x3070dd17 | 0;
|
|
219
|
-
this.Dh = 0x152fecd8 | 0;
|
|
220
|
-
this.Dl = 0xf70e5939 | 0;
|
|
221
|
-
this.Eh = 0x67332667 | 0;
|
|
222
|
-
this.El = 0xffc00b31 | 0;
|
|
223
|
-
this.Fh = 0x8eb44a87 | 0;
|
|
224
|
-
this.Fl = 0x68581511 | 0;
|
|
225
|
-
this.Gh = 0xdb0c2e0d | 0;
|
|
226
|
-
this.Gl = 0x64f98fa7 | 0;
|
|
227
|
-
this.Hh = 0x47b5481d | 0;
|
|
228
|
-
this.Hl = 0xbefa4fa4 | 0;
|
|
229
|
-
this.outputLen = 48;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
const sha512 = utils.wrapConstructor(() => new SHA512());
|
|
233
|
-
utils.wrapConstructor(() => new SHA512_224());
|
|
234
|
-
utils.wrapConstructor(() => new SHA512_256());
|
|
235
|
-
const sha384 = utils.wrapConstructor(() => new SHA384());
|
|
236
|
-
|
|
237
|
-
exports.SHA512 = SHA512;
|
|
238
|
-
exports.sha384 = sha384;
|
|
239
|
-
exports.sha512 = sha512;
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var crypto = require('./crypto.js');
|
|
6
|
-
|
|
7
|
-
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
8
|
-
const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));
|
|
9
|
-
// Cast array to view
|
|
10
|
-
const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);
|
|
11
|
-
// The rotate right (circular right shift) operation for uint32
|
|
12
|
-
const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);
|
|
13
|
-
// big-endian hardware is rare. Just in case someone still decides to run hashes:
|
|
14
|
-
// early-throw an error because we don't support BE yet.
|
|
15
|
-
const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;
|
|
16
|
-
if (!isLE)
|
|
17
|
-
throw new Error('Non little-endian hardware is not supported');
|
|
18
|
-
Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));
|
|
19
|
-
function utf8ToBytes(str) {
|
|
20
|
-
if (typeof str !== 'string') {
|
|
21
|
-
throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);
|
|
22
|
-
}
|
|
23
|
-
return new TextEncoder().encode(str);
|
|
24
|
-
}
|
|
25
|
-
function toBytes(data) {
|
|
26
|
-
if (typeof data === 'string')
|
|
27
|
-
data = utf8ToBytes(data);
|
|
28
|
-
if (!(data instanceof Uint8Array))
|
|
29
|
-
throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);
|
|
30
|
-
return data;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`
|
|
34
|
-
* @example concatBytes(buf1, buf2)
|
|
35
|
-
*/
|
|
36
|
-
function concatBytes(...arrays) {
|
|
37
|
-
if (!arrays.every((a) => a instanceof Uint8Array))
|
|
38
|
-
throw new Error('Uint8Array list expected');
|
|
39
|
-
if (arrays.length === 1)
|
|
40
|
-
return arrays[0];
|
|
41
|
-
const length = arrays.reduce((a, arr) => a + arr.length, 0);
|
|
42
|
-
const result = new Uint8Array(length);
|
|
43
|
-
for (let i = 0, pad = 0; i < arrays.length; i++) {
|
|
44
|
-
const arr = arrays[i];
|
|
45
|
-
result.set(arr, pad);
|
|
46
|
-
pad += arr.length;
|
|
47
|
-
}
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
// For runtime check if class implements interface
|
|
51
|
-
class Hash {
|
|
52
|
-
// Safe version that clones internal state
|
|
53
|
-
clone() {
|
|
54
|
-
return this._cloneInto();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
function wrapConstructor(hashConstructor) {
|
|
58
|
-
const hashC = (message) => hashConstructor().update(toBytes(message)).digest();
|
|
59
|
-
const tmp = hashConstructor();
|
|
60
|
-
hashC.outputLen = tmp.outputLen;
|
|
61
|
-
hashC.blockLen = tmp.blockLen;
|
|
62
|
-
hashC.create = () => hashConstructor();
|
|
63
|
-
return hashC;
|
|
64
|
-
}
|
|
65
|
-
function wrapConstructorWithOpts(hashCons) {
|
|
66
|
-
const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();
|
|
67
|
-
const tmp = hashCons({});
|
|
68
|
-
hashC.outputLen = tmp.outputLen;
|
|
69
|
-
hashC.blockLen = tmp.blockLen;
|
|
70
|
-
hashC.create = (opts) => hashCons(opts);
|
|
71
|
-
return hashC;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Secure PRNG. Uses `globalThis.crypto` or node.js crypto module.
|
|
75
|
-
*/
|
|
76
|
-
function randomBytes(bytesLength = 32) {
|
|
77
|
-
if (crypto.crypto && typeof crypto.crypto.getRandomValues === 'function') {
|
|
78
|
-
return crypto.crypto.getRandomValues(new Uint8Array(bytesLength));
|
|
79
|
-
}
|
|
80
|
-
throw new Error('crypto.getRandomValues must be defined');
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
exports.Hash = Hash;
|
|
84
|
-
exports.concatBytes = concatBytes;
|
|
85
|
-
exports.createView = createView;
|
|
86
|
-
exports.isLE = isLE;
|
|
87
|
-
exports.randomBytes = randomBytes;
|
|
88
|
-
exports.rotr = rotr;
|
|
89
|
-
exports.toBytes = toBytes;
|
|
90
|
-
exports.u32 = u32;
|
|
91
|
-
exports.utf8ToBytes = utf8ToBytes;
|
|
92
|
-
exports.wrapConstructor = wrapConstructor;
|
|
93
|
-
exports.wrapConstructorWithOpts = wrapConstructorWithOpts;
|