ccxt 4.2.11 → 4.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/README.md +5 -5
  2. package/build.sh +2 -2
  3. package/dist/ccxt.browser.js +1347 -490
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/_virtual/agent.js +7 -0
  6. package/dist/cjs/_virtual/parse-proxy-response.js +7 -0
  7. package/dist/cjs/_virtual/promisify.js +7 -0
  8. package/dist/cjs/ccxt.js +1 -1
  9. package/dist/cjs/js/ccxt.js +474 -0
  10. package/dist/cjs/js/src/abstract/ace.js +9 -0
  11. package/dist/cjs/js/src/abstract/alpaca.js +9 -0
  12. package/dist/cjs/js/src/abstract/ascendex.js +9 -0
  13. package/dist/cjs/js/src/abstract/bigone.js +9 -0
  14. package/dist/cjs/js/src/abstract/binance.js +9 -0
  15. package/dist/cjs/js/src/abstract/bingx.js +9 -0
  16. package/dist/cjs/js/src/abstract/bit2c.js +9 -0
  17. package/dist/cjs/js/src/abstract/bitbank.js +9 -0
  18. package/dist/cjs/js/src/abstract/bitbns.js +9 -0
  19. package/dist/cjs/js/src/abstract/bitfinex.js +9 -0
  20. package/dist/cjs/js/src/abstract/bitfinex2.js +9 -0
  21. package/dist/cjs/js/src/abstract/bitflyer.js +9 -0
  22. package/dist/cjs/js/src/abstract/bitforex.js +9 -0
  23. package/dist/cjs/js/src/abstract/bitget.js +9 -0
  24. package/dist/cjs/js/src/abstract/bithumb.js +9 -0
  25. package/dist/cjs/js/src/abstract/bitmart.js +9 -0
  26. package/dist/cjs/js/src/abstract/bitmex.js +9 -0
  27. package/dist/cjs/js/src/abstract/bitopro.js +9 -0
  28. package/dist/cjs/js/src/abstract/bitpanda.js +9 -0
  29. package/dist/cjs/js/src/abstract/bitrue.js +9 -0
  30. package/dist/cjs/js/src/abstract/bitso.js +9 -0
  31. package/dist/cjs/js/src/abstract/bitstamp.js +9 -0
  32. package/dist/cjs/js/src/abstract/bitteam.js +9 -0
  33. package/dist/cjs/js/src/abstract/bitvavo.js +9 -0
  34. package/dist/cjs/js/src/abstract/bl3p.js +9 -0
  35. package/dist/cjs/js/src/abstract/blockchaincom.js +9 -0
  36. package/dist/cjs/js/src/abstract/btcalpha.js +9 -0
  37. package/dist/cjs/js/src/abstract/btcbox.js +9 -0
  38. package/dist/cjs/js/src/abstract/btcmarkets.js +9 -0
  39. package/dist/cjs/js/src/abstract/btcturk.js +9 -0
  40. package/dist/cjs/js/src/abstract/bybit.js +9 -0
  41. package/dist/cjs/js/src/abstract/cex.js +9 -0
  42. package/dist/cjs/js/src/abstract/coinbase.js +9 -0
  43. package/dist/cjs/js/src/abstract/coinbasepro.js +9 -0
  44. package/dist/cjs/js/src/abstract/coincheck.js +9 -0
  45. package/dist/cjs/js/src/abstract/coinex.js +9 -0
  46. package/dist/cjs/js/src/abstract/coinlist.js +9 -0
  47. package/dist/cjs/js/src/abstract/coinmate.js +9 -0
  48. package/dist/cjs/js/src/abstract/coinone.js +9 -0
  49. package/dist/cjs/js/src/abstract/coinsph.js +9 -0
  50. package/dist/cjs/js/src/abstract/coinspot.js +9 -0
  51. package/dist/cjs/js/src/abstract/cryptocom.js +9 -0
  52. package/dist/cjs/js/src/abstract/currencycom.js +9 -0
  53. package/dist/cjs/js/src/abstract/delta.js +9 -0
  54. package/dist/cjs/js/src/abstract/deribit.js +9 -0
  55. package/dist/cjs/js/src/abstract/digifinex.js +9 -0
  56. package/dist/cjs/js/src/abstract/exmo.js +9 -0
  57. package/dist/cjs/js/src/abstract/gate.js +9 -0
  58. package/dist/cjs/js/src/abstract/gemini.js +9 -0
  59. package/dist/cjs/js/src/abstract/hitbtc.js +9 -0
  60. package/dist/cjs/js/src/abstract/hollaex.js +9 -0
  61. package/dist/cjs/js/src/abstract/htx.js +9 -0
  62. package/dist/cjs/js/src/abstract/huobijp.js +9 -0
  63. package/dist/cjs/js/src/abstract/idex.js +9 -0
  64. package/dist/cjs/js/src/abstract/independentreserve.js +9 -0
  65. package/dist/cjs/js/src/abstract/indodax.js +9 -0
  66. package/dist/cjs/js/src/abstract/kraken.js +9 -0
  67. package/dist/cjs/js/src/abstract/krakenfutures.js +9 -0
  68. package/dist/cjs/js/src/abstract/kucoin.js +9 -0
  69. package/dist/cjs/js/src/abstract/kucoinfutures.js +9 -0
  70. package/dist/cjs/js/src/abstract/kuna.js +9 -0
  71. package/dist/cjs/js/src/abstract/latoken.js +9 -0
  72. package/dist/cjs/js/src/abstract/lbank.js +9 -0
  73. package/dist/cjs/js/src/abstract/luno.js +9 -0
  74. package/dist/cjs/js/src/abstract/lykke.js +9 -0
  75. package/dist/cjs/js/src/abstract/mercado.js +9 -0
  76. package/dist/cjs/js/src/abstract/mexc.js +9 -0
  77. package/dist/cjs/js/src/abstract/ndax.js +9 -0
  78. package/dist/cjs/js/src/abstract/novadax.js +9 -0
  79. package/dist/cjs/js/src/abstract/oceanex.js +9 -0
  80. package/dist/cjs/js/src/abstract/okcoin.js +9 -0
  81. package/dist/cjs/js/src/abstract/okx.js +9 -0
  82. package/dist/cjs/js/src/abstract/p2b.js +9 -0
  83. package/dist/cjs/js/src/abstract/paymium.js +9 -0
  84. package/dist/cjs/js/src/abstract/phemex.js +9 -0
  85. package/dist/cjs/js/src/abstract/poloniex.js +9 -0
  86. package/dist/cjs/js/src/abstract/poloniexfutures.js +9 -0
  87. package/dist/cjs/js/src/abstract/probit.js +9 -0
  88. package/dist/cjs/js/src/abstract/timex.js +9 -0
  89. package/dist/cjs/js/src/abstract/tokocrypto.js +9 -0
  90. package/dist/cjs/js/src/abstract/upbit.js +9 -0
  91. package/dist/cjs/js/src/abstract/wavesexchange.js +9 -0
  92. package/dist/cjs/js/src/abstract/wazirx.js +9 -0
  93. package/dist/cjs/js/src/abstract/whitebit.js +9 -0
  94. package/dist/cjs/js/src/abstract/woo.js +9 -0
  95. package/dist/cjs/js/src/abstract/yobit.js +9 -0
  96. package/dist/cjs/js/src/abstract/zaif.js +9 -0
  97. package/dist/cjs/js/src/abstract/zonda.js +9 -0
  98. package/dist/cjs/js/src/ace.js +1058 -0
  99. package/dist/cjs/js/src/alpaca.js +1125 -0
  100. package/dist/cjs/js/src/ascendex.js +3360 -0
  101. package/dist/cjs/js/src/base/Exchange.js +5110 -0
  102. package/dist/cjs/js/src/base/Precise.js +263 -0
  103. package/dist/cjs/js/src/base/errors.js +299 -0
  104. package/dist/cjs/js/src/base/functions/crypto.js +78 -0
  105. package/dist/cjs/js/src/base/functions/encode.js +44 -0
  106. package/dist/cjs/js/src/base/functions/generic.js +193 -0
  107. package/dist/cjs/js/src/base/functions/misc.js +96 -0
  108. package/dist/cjs/js/src/base/functions/number.js +297 -0
  109. package/dist/cjs/js/src/base/functions/platform.js +28 -0
  110. package/dist/cjs/js/src/base/functions/rsa.js +34 -0
  111. package/dist/cjs/js/src/base/functions/string.js +48 -0
  112. package/dist/cjs/js/src/base/functions/throttle.js +66 -0
  113. package/dist/cjs/js/src/base/functions/time.js +187 -0
  114. package/dist/cjs/js/src/base/functions/totp.js +24 -0
  115. package/dist/cjs/js/src/base/functions/type.js +162 -0
  116. package/dist/cjs/js/src/base/functions.js +157 -0
  117. package/dist/cjs/js/src/base/ws/Cache.js +254 -0
  118. package/dist/cjs/js/src/base/ws/Client.js +299 -0
  119. package/dist/cjs/js/src/base/ws/Future.js +34 -0
  120. package/dist/cjs/js/src/base/ws/OrderBook.js +107 -0
  121. package/dist/cjs/js/src/base/ws/OrderBookSide.js +281 -0
  122. package/dist/cjs/js/src/base/ws/WsClient.js +69 -0
  123. package/dist/cjs/js/src/bequant.js +33 -0
  124. package/dist/cjs/js/src/bigone.js +2209 -0
  125. package/dist/cjs/js/src/binance.js +9736 -0
  126. package/dist/cjs/js/src/binancecoinm.js +45 -0
  127. package/dist/cjs/js/src/binanceus.js +84 -0
  128. package/dist/cjs/js/src/binanceusdm.js +58 -0
  129. package/dist/cjs/js/src/bingx.js +3807 -0
  130. package/dist/cjs/js/src/bit2c.js +916 -0
  131. package/dist/cjs/js/src/bitbank.js +1000 -0
  132. package/dist/cjs/js/src/bitbay.js +17 -0
  133. package/dist/cjs/js/src/bitbns.js +1220 -0
  134. package/dist/cjs/js/src/bitcoincom.js +17 -0
  135. package/dist/cjs/js/src/bitfinex.js +1670 -0
  136. package/dist/cjs/js/src/bitfinex2.js +2990 -0
  137. package/dist/cjs/js/src/bitflyer.js +1045 -0
  138. package/dist/cjs/js/src/bitforex.js +852 -0
  139. package/dist/cjs/js/src/bitget.js +8291 -0
  140. package/dist/cjs/js/src/bithumb.js +1090 -0
  141. package/dist/cjs/js/src/bitmart.js +4454 -0
  142. package/dist/cjs/js/src/bitmex.js +2884 -0
  143. package/dist/cjs/js/src/bitopro.js +1724 -0
  144. package/dist/cjs/js/src/bitpanda.js +2002 -0
  145. package/dist/cjs/js/src/bitrue.js +3253 -0
  146. package/dist/cjs/js/src/bitso.js +1753 -0
  147. package/dist/cjs/js/src/bitstamp.js +2188 -0
  148. package/dist/cjs/js/src/bitteam.js +2309 -0
  149. package/dist/cjs/js/src/bitvavo.js +1968 -0
  150. package/dist/cjs/js/src/bl3p.js +447 -0
  151. package/dist/cjs/js/src/blockchaincom.js +1160 -0
  152. package/dist/cjs/js/src/btcalpha.js +929 -0
  153. package/dist/cjs/js/src/btcbox.js +565 -0
  154. package/dist/cjs/js/src/btcmarkets.js +1237 -0
  155. package/dist/cjs/js/src/btcturk.js +929 -0
  156. package/dist/cjs/js/src/bybit.js +7646 -0
  157. package/dist/cjs/js/src/cex.js +1693 -0
  158. package/dist/cjs/js/src/coinbase.js +3424 -0
  159. package/dist/cjs/js/src/coinbasepro.js +1866 -0
  160. package/dist/cjs/js/src/coincheck.js +843 -0
  161. package/dist/cjs/js/src/coinex.js +5414 -0
  162. package/dist/cjs/js/src/coinlist.js +2329 -0
  163. package/dist/cjs/js/src/coinmate.js +989 -0
  164. package/dist/cjs/js/src/coinone.js +1185 -0
  165. package/dist/cjs/js/src/coinsph.js +1933 -0
  166. package/dist/cjs/js/src/coinspot.js +548 -0
  167. package/dist/cjs/js/src/cryptocom.js +3007 -0
  168. package/dist/cjs/js/src/currencycom.js +2015 -0
  169. package/dist/cjs/js/src/delta.js +3256 -0
  170. package/dist/cjs/js/src/deribit.js +3306 -0
  171. package/dist/cjs/js/src/digifinex.js +4307 -0
  172. package/dist/cjs/js/src/exmo.js +2645 -0
  173. package/dist/cjs/js/src/fmfwio.js +34 -0
  174. package/dist/cjs/js/src/gate.js +7072 -0
  175. package/dist/cjs/js/src/gateio.js +16 -0
  176. package/dist/cjs/js/src/gemini.js +1801 -0
  177. package/dist/cjs/js/src/hitbtc.js +3660 -0
  178. package/dist/cjs/js/src/hitbtc3.js +19 -0
  179. package/dist/cjs/js/src/hollaex.js +1882 -0
  180. package/dist/cjs/js/src/htx.js +9049 -0
  181. package/dist/cjs/js/src/huobi.js +16 -0
  182. package/dist/cjs/js/src/huobijp.js +1918 -0
  183. package/dist/cjs/js/src/idex.js +1770 -0
  184. package/dist/cjs/js/src/independentreserve.js +761 -0
  185. package/dist/cjs/js/src/indodax.js +1069 -0
  186. package/dist/cjs/js/src/kraken.js +2857 -0
  187. package/dist/cjs/js/src/krakenfutures.js +2407 -0
  188. package/dist/cjs/js/src/kucoin.js +4489 -0
  189. package/dist/cjs/js/src/kucoinfutures.js +2475 -0
  190. package/dist/cjs/js/src/kuna.js +1949 -0
  191. package/dist/cjs/js/src/latoken.js +1729 -0
  192. package/dist/cjs/js/src/lbank.js +2851 -0
  193. package/dist/cjs/js/src/luno.js +1044 -0
  194. package/dist/cjs/js/src/lykke.js +1303 -0
  195. package/dist/cjs/js/src/mercado.js +897 -0
  196. package/dist/cjs/js/src/mexc.js +5407 -0
  197. package/dist/cjs/js/src/ndax.js +2450 -0
  198. package/dist/cjs/js/src/novadax.js +1556 -0
  199. package/dist/cjs/js/src/oceanex.js +964 -0
  200. package/dist/cjs/js/src/okcoin.js +3115 -0
  201. package/dist/cjs/js/src/okx.js +7330 -0
  202. package/dist/cjs/js/src/p2b.js +1243 -0
  203. package/dist/cjs/js/src/paymium.js +597 -0
  204. package/dist/cjs/js/src/phemex.js +4722 -0
  205. package/dist/cjs/js/src/poloniex.js +2356 -0
  206. package/dist/cjs/js/src/poloniexfutures.js +1794 -0
  207. package/dist/cjs/js/src/pro/alpaca.js +714 -0
  208. package/dist/cjs/js/src/pro/ascendex.js +957 -0
  209. package/dist/cjs/js/src/pro/bequant.js +33 -0
  210. package/dist/cjs/js/src/pro/binance.js +2796 -0
  211. package/dist/cjs/js/src/pro/binancecoinm.js +23 -0
  212. package/dist/cjs/js/src/pro/binanceus.js +51 -0
  213. package/dist/cjs/js/src/pro/binanceusdm.js +32 -0
  214. package/dist/cjs/js/src/pro/bingx.js +944 -0
  215. package/dist/cjs/js/src/pro/bitcoincom.js +29 -0
  216. package/dist/cjs/js/src/pro/bitfinex.js +672 -0
  217. package/dist/cjs/js/src/pro/bitfinex2.js +1159 -0
  218. package/dist/cjs/js/src/pro/bitget.js +1733 -0
  219. package/dist/cjs/js/src/pro/bitmart.js +1486 -0
  220. package/dist/cjs/js/src/pro/bitmex.js +1576 -0
  221. package/dist/cjs/js/src/pro/bitopro.js +327 -0
  222. package/dist/cjs/js/src/pro/bitpanda.js +1341 -0
  223. package/dist/cjs/js/src/pro/bitrue.js +462 -0
  224. package/dist/cjs/js/src/pro/bitstamp.js +547 -0
  225. package/dist/cjs/js/src/pro/bitvavo.js +704 -0
  226. package/dist/cjs/js/src/pro/blockchaincom.js +794 -0
  227. package/dist/cjs/js/src/pro/bybit.js +1843 -0
  228. package/dist/cjs/js/src/pro/cex.js +1510 -0
  229. package/dist/cjs/js/src/pro/coinbase.js +561 -0
  230. package/dist/cjs/js/src/pro/coinbasepro.js +968 -0
  231. package/dist/cjs/js/src/pro/coinex.js +1095 -0
  232. package/dist/cjs/js/src/pro/cryptocom.js +1020 -0
  233. package/dist/cjs/js/src/pro/currencycom.js +563 -0
  234. package/dist/cjs/js/src/pro/deribit.js +825 -0
  235. package/dist/cjs/js/src/pro/exmo.js +658 -0
  236. package/dist/cjs/js/src/pro/gate.js +1316 -0
  237. package/dist/cjs/js/src/pro/gateio.js +16 -0
  238. package/dist/cjs/js/src/pro/gemini.js +649 -0
  239. package/dist/cjs/js/src/pro/hitbtc.js +1293 -0
  240. package/dist/cjs/js/src/pro/hollaex.js +597 -0
  241. package/dist/cjs/js/src/pro/htx.js +2383 -0
  242. package/dist/cjs/js/src/pro/huobi.js +16 -0
  243. package/dist/cjs/js/src/pro/huobijp.js +606 -0
  244. package/dist/cjs/js/src/pro/idex.js +714 -0
  245. package/dist/cjs/js/src/pro/independentreserve.js +280 -0
  246. package/dist/cjs/js/src/pro/kraken.js +1364 -0
  247. package/dist/cjs/js/src/pro/krakenfutures.js +1500 -0
  248. package/dist/cjs/js/src/pro/kucoin.js +1052 -0
  249. package/dist/cjs/js/src/pro/kucoinfutures.js +981 -0
  250. package/dist/cjs/js/src/pro/luno.js +322 -0
  251. package/dist/cjs/js/src/pro/mexc.js +1170 -0
  252. package/dist/cjs/js/src/pro/ndax.js +545 -0
  253. package/dist/cjs/js/src/pro/okcoin.js +760 -0
  254. package/dist/cjs/js/src/pro/okx.js +1608 -0
  255. package/dist/cjs/js/src/pro/phemex.js +1511 -0
  256. package/dist/cjs/js/src/pro/poloniex.js +1253 -0
  257. package/dist/cjs/js/src/pro/poloniexfutures.js +1014 -0
  258. package/dist/cjs/js/src/pro/probit.js +586 -0
  259. package/dist/cjs/js/src/pro/upbit.js +234 -0
  260. package/dist/cjs/js/src/pro/wazirx.js +776 -0
  261. package/dist/cjs/js/src/pro/whitebit.js +927 -0
  262. package/dist/cjs/js/src/pro/woo.js +769 -0
  263. package/dist/cjs/js/src/probit.js +1867 -0
  264. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +401 -0
  265. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +195 -0
  266. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +308 -0
  267. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +554 -0
  268. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  269. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  270. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  271. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +16 -0
  272. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1760 -0
  273. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +52 -0
  274. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +81 -0
  275. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +376 -0
  276. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +70 -0
  277. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1580 -0
  278. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +74 -0
  279. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +24 -0
  280. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +158 -0
  281. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +429 -0
  282. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +176 -0
  283. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +324 -0
  284. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +163 -0
  285. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +245 -0
  286. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +1018 -0
  287. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +383 -0
  288. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +258 -0
  289. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +53 -0
  290. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +120 -0
  291. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +69 -0
  292. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +7 -0
  293. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +83 -0
  294. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +240 -0
  295. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +91 -0
  296. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +130 -0
  297. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +214 -0
  298. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +239 -0
  299. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +93 -0
  300. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +354 -0
  301. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +16 -0
  302. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +20 -0
  303. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +30 -0
  304. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +239 -0
  305. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +372 -0
  306. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +273 -0
  307. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +139 -0
  308. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +14 -0
  309. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +16 -0
  310. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +81 -0
  311. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +292 -0
  312. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +103 -0
  313. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +140 -0
  314. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +175 -0
  315. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  316. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +7 -0
  317. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +383 -0
  318. package/dist/cjs/js/src/timex.js +1562 -0
  319. package/dist/cjs/js/src/tokocrypto.js +2542 -0
  320. package/dist/cjs/js/src/upbit.js +1844 -0
  321. package/dist/cjs/js/src/wavesexchange.js +2607 -0
  322. package/dist/cjs/js/src/wazirx.js +953 -0
  323. package/dist/cjs/js/src/whitebit.js +2309 -0
  324. package/dist/cjs/js/src/woo.js +2765 -0
  325. package/dist/cjs/js/src/yobit.js +1314 -0
  326. package/dist/cjs/js/src/zaif.js +736 -0
  327. package/dist/cjs/js/src/zonda.js +1883 -0
  328. package/js/ccxt.d.ts +1 -1
  329. package/js/ccxt.js +1 -1
  330. package/js/src/abstract/bigone.d.ts +18 -0
  331. package/js/src/abstract/binance.d.ts +2 -0
  332. package/js/src/abstract/binancecoinm.d.ts +2 -0
  333. package/js/src/abstract/binanceus.d.ts +2 -0
  334. package/js/src/abstract/binanceusdm.d.ts +2 -0
  335. package/js/src/abstract/bingx.d.ts +2 -0
  336. package/js/src/abstract/bybit.d.ts +1 -0
  337. package/js/src/abstract/gate.d.ts +11 -0
  338. package/js/src/abstract/gateio.d.ts +11 -0
  339. package/js/src/abstract/okx.d.ts +1 -0
  340. package/js/src/alpaca.js +18 -18
  341. package/js/src/base/Exchange.d.ts +5 -1
  342. package/js/src/base/Exchange.js +101 -12
  343. package/js/src/bigone.d.ts +3 -2
  344. package/js/src/bigone.js +429 -167
  345. package/js/src/binance.js +48 -34
  346. package/js/src/bingx.js +115 -38
  347. package/js/src/bitfinex.d.ts +2 -2
  348. package/js/src/bitfinex.js +2 -3
  349. package/js/src/bitget.js +33 -13
  350. package/js/src/bitmart.d.ts +2 -2
  351. package/js/src/bitmart.js +5 -5
  352. package/js/src/bitmex.js +1 -0
  353. package/js/src/bybit.js +2 -0
  354. package/js/src/coinbase.d.ts +26 -3
  355. package/js/src/coinbase.js +176 -26
  356. package/js/src/coinlist.js +3 -4
  357. package/js/src/coinone.js +1 -1
  358. package/js/src/coinsph.js +2 -3
  359. package/js/src/deribit.js +1 -0
  360. package/js/src/gate.d.ts +4 -4
  361. package/js/src/gate.js +96 -59
  362. package/js/src/gemini.js +1 -1
  363. package/js/src/hitbtc.d.ts +4 -4
  364. package/js/src/hitbtc.js +2 -3
  365. package/js/src/htx.d.ts +1 -0
  366. package/js/src/htx.js +29 -7
  367. package/js/src/huobijp.js +2 -3
  368. package/js/src/independentreserve.js +7 -5
  369. package/js/src/kraken.js +3 -6
  370. package/js/src/lbank.js +59 -33
  371. package/js/src/mexc.js +2 -1
  372. package/js/src/oceanex.js +1 -1
  373. package/js/src/okx.js +14 -3
  374. package/js/src/phemex.js +9 -2
  375. package/js/src/pro/binance.d.ts +2 -23
  376. package/js/src/pro/binance.js +58 -22
  377. package/js/src/pro/coinbase.d.ts +2 -2
  378. package/js/src/pro/coinbase.js +4 -1
  379. package/js/src/pro/coinbasepro.d.ts +2 -2
  380. package/js/src/pro/hitbtc.d.ts +2 -2
  381. package/js/src/pro/kraken.js +1 -1
  382. package/js/src/pro/okx.d.ts +1 -0
  383. package/js/src/pro/okx.js +52 -2
  384. package/js/src/pro/poloniex.d.ts +2 -2
  385. package/js/src/probit.js +4 -2
  386. package/js/src/upbit.d.ts +3 -101
  387. package/js/src/upbit.js +12 -12
  388. package/js/src/wavesexchange.js +1 -1
  389. package/js/src/woo.d.ts +2 -0
  390. package/js/src/woo.js +52 -0
  391. package/package.json +1 -1
  392. package/skip-tests.json +5 -0
@@ -0,0 +1,1580 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsbn = require('../jsbn/jsbn.js');
6
+ var yahoo = require('./yahoo.js');
7
+
8
+ /* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license
9
+ */
10
+ /**
11
+ * @fileOverview
12
+ * @name asn1-1.0.js
13
+ * @author Kenji Urushima kenji.urushima@gmail.com
14
+ * @version asn1 1.0.13 (2017-Jun-02)
15
+ * @since jsrsasign 2.1
16
+ * @license <a href="https://kjur.github.io/jsrsasign/license/">MIT License</a>
17
+ */
18
+ /**
19
+ * kjur's class library name space
20
+ * <p>
21
+ * This name space provides following name spaces:
22
+ * <ul>
23
+ * <li>{@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder</li>
24
+ * <li>{@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL</li>
25
+ * <li>{@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature
26
+ * class and utilities</li>
27
+ * </ul>
28
+ * </p>
29
+ * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.
30
+ * @name KJUR
31
+ * @namespace kjur's class library name space
32
+ */
33
+ var KJUR = {};
34
+ /**
35
+ * kjur's ASN.1 class library name space
36
+ * <p>
37
+ * This is ITU-T X.690 ASN.1 DER encoder class library and
38
+ * class structure and methods is very similar to
39
+ * org.bouncycastle.asn1 package of
40
+ * well known BouncyCaslte Cryptography Library.
41
+ * <h4>PROVIDING ASN.1 PRIMITIVES</h4>
42
+ * Here are ASN.1 DER primitive classes.
43
+ * <ul>
44
+ * <li>0x01 {@link KJUR.asn1.DERBoolean}</li>
45
+ * <li>0x02 {@link KJUR.asn1.DERInteger}</li>
46
+ * <li>0x03 {@link KJUR.asn1.DERBitString}</li>
47
+ * <li>0x04 {@link KJUR.asn1.DEROctetString}</li>
48
+ * <li>0x05 {@link KJUR.asn1.DERNull}</li>
49
+ * <li>0x06 {@link KJUR.asn1.DERObjectIdentifier}</li>
50
+ * <li>0x0a {@link KJUR.asn1.DEREnumerated}</li>
51
+ * <li>0x0c {@link KJUR.asn1.DERUTF8String}</li>
52
+ * <li>0x12 {@link KJUR.asn1.DERNumericString}</li>
53
+ * <li>0x13 {@link KJUR.asn1.DERPrintableString}</li>
54
+ * <li>0x14 {@link KJUR.asn1.DERTeletexString}</li>
55
+ * <li>0x16 {@link KJUR.asn1.DERIA5String}</li>
56
+ * <li>0x17 {@link KJUR.asn1.DERUTCTime}</li>
57
+ * <li>0x18 {@link KJUR.asn1.DERGeneralizedTime}</li>
58
+ * <li>0x30 {@link KJUR.asn1.DERSequence}</li>
59
+ * <li>0x31 {@link KJUR.asn1.DERSet}</li>
60
+ * </ul>
61
+ * <h4>OTHER ASN.1 CLASSES</h4>
62
+ * <ul>
63
+ * <li>{@link KJUR.asn1.ASN1Object}</li>
64
+ * <li>{@link KJUR.asn1.DERAbstractString}</li>
65
+ * <li>{@link KJUR.asn1.DERAbstractTime}</li>
66
+ * <li>{@link KJUR.asn1.DERAbstractStructured}</li>
67
+ * <li>{@link KJUR.asn1.DERTaggedObject}</li>
68
+ * </ul>
69
+ * <h4>SUB NAME SPACES</h4>
70
+ * <ul>
71
+ * <li>{@link KJUR.asn1.cades} - CAdES long term signature format</li>
72
+ * <li>{@link KJUR.asn1.cms} - Cryptographic Message Syntax</li>
73
+ * <li>{@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)</li>
74
+ * <li>{@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format</li>
75
+ * <li>{@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL</li>
76
+ * </ul>
77
+ * </p>
78
+ * NOTE: Please ignore method summary and document of this namespace.
79
+ * This caused by a bug of jsdoc2.
80
+ * @name KJUR.asn1
81
+ * @namespace
82
+ */
83
+ if (typeof KJUR.asn1 == "undefined" || !KJUR.asn1)
84
+ KJUR.asn1 = {};
85
+ /**
86
+ * ASN1 utilities class
87
+ * @type Class
88
+ * @name KJUR.asn1.ASN1Util
89
+ * @class ASN1 utilities class
90
+ * @since asn1 1.0.2
91
+ */
92
+ KJUR.asn1.ASN1Util = new function () {
93
+ this.integerToByteHex = function (i) {
94
+ var h = i.toString(16);
95
+ if ((h.length % 2) == 1)
96
+ h = '0' + h;
97
+ return h;
98
+ };
99
+ this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {
100
+ var h = bigIntegerValue.toString(16);
101
+ if (h.substr(0, 1) != '-') {
102
+ if (h.length % 2 == 1) {
103
+ h = '0' + h;
104
+ }
105
+ else {
106
+ if (!h.match(/^[0-7]/)) {
107
+ h = '00' + h;
108
+ }
109
+ }
110
+ }
111
+ else {
112
+ var hPos = h.substr(1);
113
+ var xorLen = hPos.length;
114
+ if (xorLen % 2 == 1) {
115
+ xorLen += 1;
116
+ }
117
+ else {
118
+ if (!h.match(/^[0-7]/)) {
119
+ xorLen += 2;
120
+ }
121
+ }
122
+ var hMask = '';
123
+ for (var i = 0; i < xorLen; i++) {
124
+ hMask += 'f';
125
+ }
126
+ var biMask = new jsbn.BigInteger(hMask, 16);
127
+ var biNeg = biMask.xor(bigIntegerValue).add(jsbn.BigInteger.ONE);
128
+ h = biNeg.toString(16).replace(/^-/, '');
129
+ }
130
+ return h;
131
+ };
132
+ /**
133
+ * get PEM string from hexadecimal data and header string
134
+ * @name getPEMStringFromHex
135
+ * @memberOf KJUR.asn1.ASN1Util
136
+ * @function
137
+ * @param {String} dataHex hexadecimal string of PEM body
138
+ * @param {String} pemHeader PEM header string (ex. 'RSA PRIVATE KEY')
139
+ * @return {String} PEM formatted string of input data
140
+ * @description
141
+ * This method converts a hexadecimal string to a PEM string with
142
+ * a specified header. Its line break will be CRLF("\r\n").
143
+ * @example
144
+ * var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex('616161', 'RSA PRIVATE KEY');
145
+ * // value of pem will be:
146
+ * -----BEGIN PRIVATE KEY-----
147
+ * YWFh
148
+ * -----END PRIVATE KEY-----
149
+ */
150
+ this.getPEMStringFromHex = function (dataHex, pemHeader) {
151
+ return hextopem(dataHex, pemHeader);
152
+ };
153
+ /**
154
+ * generate ASN1Object specifed by JSON parameters
155
+ * @name newObject
156
+ * @memberOf KJUR.asn1.ASN1Util
157
+ * @function
158
+ * @param {Array} param JSON parameter to generate ASN1Object
159
+ * @return {KJUR.asn1.ASN1Object} generated object
160
+ * @since asn1 1.0.3
161
+ * @description
162
+ * generate any ASN1Object specified by JSON param
163
+ * including ASN.1 primitive or structured.
164
+ * Generally 'param' can be described as follows:
165
+ * <blockquote>
166
+ * {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}
167
+ * </blockquote>
168
+ * 'TYPE-OF-ASN1OBJ' can be one of following symbols:
169
+ * <ul>
170
+ * <li>'bool' - DERBoolean</li>
171
+ * <li>'int' - DERInteger</li>
172
+ * <li>'bitstr' - DERBitString</li>
173
+ * <li>'octstr' - DEROctetString</li>
174
+ * <li>'null' - DERNull</li>
175
+ * <li>'oid' - DERObjectIdentifier</li>
176
+ * <li>'enum' - DEREnumerated</li>
177
+ * <li>'utf8str' - DERUTF8String</li>
178
+ * <li>'numstr' - DERNumericString</li>
179
+ * <li>'prnstr' - DERPrintableString</li>
180
+ * <li>'telstr' - DERTeletexString</li>
181
+ * <li>'ia5str' - DERIA5String</li>
182
+ * <li>'utctime' - DERUTCTime</li>
183
+ * <li>'gentime' - DERGeneralizedTime</li>
184
+ * <li>'seq' - DERSequence</li>
185
+ * <li>'set' - DERSet</li>
186
+ * <li>'tag' - DERTaggedObject</li>
187
+ * </ul>
188
+ * @example
189
+ * newObject({'prnstr': 'aaa'});
190
+ * newObject({'seq': [{'int': 3}, {'prnstr': 'aaa'}]})
191
+ * // ASN.1 Tagged Object
192
+ * newObject({'tag': {'tag': 'a1',
193
+ * 'explicit': true,
194
+ * 'obj': {'seq': [{'int': 3}, {'prnstr': 'aaa'}]}}});
195
+ * // more simple representation of ASN.1 Tagged Object
196
+ * newObject({'tag': ['a1',
197
+ * true,
198
+ * {'seq': [
199
+ * {'int': 3},
200
+ * {'prnstr': 'aaa'}]}
201
+ * ]});
202
+ */
203
+ this.newObject = function (param) {
204
+ var _KJUR = KJUR, _KJUR_asn1 = _KJUR.asn1, _DERBoolean = _KJUR_asn1.DERBoolean, _DERInteger = _KJUR_asn1.DERInteger, _DERBitString = _KJUR_asn1.DERBitString, _DEROctetString = _KJUR_asn1.DEROctetString, _DERNull = _KJUR_asn1.DERNull, _DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier, _DEREnumerated = _KJUR_asn1.DEREnumerated, _DERUTF8String = _KJUR_asn1.DERUTF8String, _DERNumericString = _KJUR_asn1.DERNumericString, _DERPrintableString = _KJUR_asn1.DERPrintableString, _DERTeletexString = _KJUR_asn1.DERTeletexString, _DERIA5String = _KJUR_asn1.DERIA5String, _DERUTCTime = _KJUR_asn1.DERUTCTime, _DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime, _DERSequence = _KJUR_asn1.DERSequence, _DERSet = _KJUR_asn1.DERSet, _DERTaggedObject = _KJUR_asn1.DERTaggedObject, _newObject = _KJUR_asn1.ASN1Util.newObject;
205
+ var keys = Object.keys(param);
206
+ if (keys.length != 1)
207
+ throw "key of param shall be only one.";
208
+ var key = keys[0];
209
+ if (":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:".indexOf(":" + key + ":") == -1)
210
+ throw "undefined key: " + key;
211
+ if (key == "bool")
212
+ return new _DERBoolean(param[key]);
213
+ if (key == "int")
214
+ return new _DERInteger(param[key]);
215
+ if (key == "bitstr")
216
+ return new _DERBitString(param[key]);
217
+ if (key == "octstr")
218
+ return new _DEROctetString(param[key]);
219
+ if (key == "null")
220
+ return new _DERNull(param[key]);
221
+ if (key == "oid")
222
+ return new _DERObjectIdentifier(param[key]);
223
+ if (key == "enum")
224
+ return new _DEREnumerated(param[key]);
225
+ if (key == "utf8str")
226
+ return new _DERUTF8String(param[key]);
227
+ if (key == "numstr")
228
+ return new _DERNumericString(param[key]);
229
+ if (key == "prnstr")
230
+ return new _DERPrintableString(param[key]);
231
+ if (key == "telstr")
232
+ return new _DERTeletexString(param[key]);
233
+ if (key == "ia5str")
234
+ return new _DERIA5String(param[key]);
235
+ if (key == "utctime")
236
+ return new _DERUTCTime(param[key]);
237
+ if (key == "gentime")
238
+ return new _DERGeneralizedTime(param[key]);
239
+ if (key == "seq") {
240
+ var paramList = param[key];
241
+ var a = [];
242
+ for (var i = 0; i < paramList.length; i++) {
243
+ var asn1Obj = _newObject(paramList[i]);
244
+ a.push(asn1Obj);
245
+ }
246
+ return new _DERSequence({ 'array': a });
247
+ }
248
+ if (key == "set") {
249
+ var paramList = param[key];
250
+ var a = [];
251
+ for (var i = 0; i < paramList.length; i++) {
252
+ var asn1Obj = _newObject(paramList[i]);
253
+ a.push(asn1Obj);
254
+ }
255
+ return new _DERSet({ 'array': a });
256
+ }
257
+ if (key == "tag") {
258
+ var tagParam = param[key];
259
+ if (Object.prototype.toString.call(tagParam) === '[object Array]' &&
260
+ tagParam.length == 3) {
261
+ var obj = _newObject(tagParam[2]);
262
+ return new _DERTaggedObject({ tag: tagParam[0],
263
+ explicit: tagParam[1],
264
+ obj: obj });
265
+ }
266
+ else {
267
+ var newParam = {};
268
+ if (tagParam.explicit !== undefined)
269
+ newParam.explicit = tagParam.explicit;
270
+ if (tagParam.tag !== undefined)
271
+ newParam.tag = tagParam.tag;
272
+ if (tagParam.obj === undefined)
273
+ throw "obj shall be specified for 'tag'.";
274
+ newParam.obj = _newObject(tagParam.obj);
275
+ return new _DERTaggedObject(newParam);
276
+ }
277
+ }
278
+ };
279
+ /**
280
+ * get encoded hexadecimal string of ASN1Object specifed by JSON parameters
281
+ * @name jsonToASN1HEX
282
+ * @memberOf KJUR.asn1.ASN1Util
283
+ * @function
284
+ * @param {Array} param JSON parameter to generate ASN1Object
285
+ * @return hexadecimal string of ASN1Object
286
+ * @since asn1 1.0.4
287
+ * @description
288
+ * As for ASN.1 object representation of JSON object,
289
+ * please see {@link newObject}.
290
+ * @example
291
+ * jsonToASN1HEX({'prnstr': 'aaa'});
292
+ */
293
+ this.jsonToASN1HEX = function (param) {
294
+ var asn1Obj = this.newObject(param);
295
+ return asn1Obj.getEncodedHex();
296
+ };
297
+ };
298
+ /**
299
+ * get dot noted oid number string from hexadecimal value of OID
300
+ * @name oidHexToInt
301
+ * @memberOf KJUR.asn1.ASN1Util
302
+ * @function
303
+ * @param {String} hex hexadecimal value of object identifier
304
+ * @return {String} dot noted string of object identifier
305
+ * @since jsrsasign 4.8.3 asn1 1.0.7
306
+ * @description
307
+ * This static method converts from hexadecimal string representation of
308
+ * ASN.1 value of object identifier to oid number string.
309
+ * @example
310
+ * KJUR.asn1.ASN1Util.oidHexToInt('550406') &rarr; "2.5.4.6"
311
+ */
312
+ KJUR.asn1.ASN1Util.oidHexToInt = function (hex) {
313
+ var s = "";
314
+ var i01 = parseInt(hex.substr(0, 2), 16);
315
+ var i0 = Math.floor(i01 / 40);
316
+ var i1 = i01 % 40;
317
+ var s = i0 + "." + i1;
318
+ var binbuf = "";
319
+ for (var i = 2; i < hex.length; i += 2) {
320
+ var value = parseInt(hex.substr(i, 2), 16);
321
+ var bin = ("00000000" + value.toString(2)).slice(-8);
322
+ binbuf = binbuf + bin.substr(1, 7);
323
+ if (bin.substr(0, 1) == "0") {
324
+ var bi = new jsbn.BigInteger(binbuf, 2);
325
+ s = s + "." + bi.toString(10);
326
+ binbuf = "";
327
+ }
328
+ }
329
+ return s;
330
+ };
331
+ /**
332
+ * get hexadecimal value of object identifier from dot noted oid value
333
+ * @name oidIntToHex
334
+ * @memberOf KJUR.asn1.ASN1Util
335
+ * @function
336
+ * @param {String} oidString dot noted string of object identifier
337
+ * @return {String} hexadecimal value of object identifier
338
+ * @since jsrsasign 4.8.3 asn1 1.0.7
339
+ * @description
340
+ * This static method converts from object identifier value string.
341
+ * to hexadecimal string representation of it.
342
+ * @example
343
+ * KJUR.asn1.ASN1Util.oidIntToHex("2.5.4.6") &rarr; "550406"
344
+ */
345
+ KJUR.asn1.ASN1Util.oidIntToHex = function (oidString) {
346
+ var itox = function (i) {
347
+ var h = i.toString(16);
348
+ if (h.length == 1)
349
+ h = '0' + h;
350
+ return h;
351
+ };
352
+ var roidtox = function (roid) {
353
+ var h = '';
354
+ var bi = new jsbn.BigInteger(roid, 10);
355
+ var b = bi.toString(2);
356
+ var padLen = 7 - b.length % 7;
357
+ if (padLen == 7)
358
+ padLen = 0;
359
+ var bPad = '';
360
+ for (var i = 0; i < padLen; i++)
361
+ bPad += '0';
362
+ b = bPad + b;
363
+ for (var i = 0; i < b.length - 1; i += 7) {
364
+ var b8 = b.substr(i, 7);
365
+ if (i != b.length - 7)
366
+ b8 = '1' + b8;
367
+ h += itox(parseInt(b8, 2));
368
+ }
369
+ return h;
370
+ };
371
+ if (!oidString.match(/^[0-9.]+$/)) {
372
+ throw "malformed oid string: " + oidString;
373
+ }
374
+ var h = '';
375
+ var a = oidString.split('.');
376
+ var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);
377
+ h += itox(i0);
378
+ a.splice(0, 2);
379
+ for (var i = 0; i < a.length; i++) {
380
+ h += roidtox(a[i]);
381
+ }
382
+ return h;
383
+ };
384
+ // ********************************************************************
385
+ // Abstract ASN.1 Classes
386
+ // ********************************************************************
387
+ // ********************************************************************
388
+ /**
389
+ * base class for ASN.1 DER encoder object
390
+ * @name KJUR.asn1.ASN1Object
391
+ * @class base class for ASN.1 DER encoder object
392
+ * @property {Boolean} isModified flag whether internal data was changed
393
+ * @property {String} hTLV hexadecimal string of ASN.1 TLV
394
+ * @property {String} hT hexadecimal string of ASN.1 TLV tag(T)
395
+ * @property {String} hL hexadecimal string of ASN.1 TLV length(L)
396
+ * @property {String} hV hexadecimal string of ASN.1 TLV value(V)
397
+ * @description
398
+ */
399
+ KJUR.asn1.ASN1Object = function () {
400
+ var hV = '';
401
+ /**
402
+ * get hexadecimal ASN.1 TLV length(L) bytes from TLV value(V)
403
+ * @name getLengthHexFromValue
404
+ * @memberOf KJUR.asn1.ASN1Object#
405
+ * @function
406
+ * @return {String} hexadecimal string of ASN.1 TLV length(L)
407
+ */
408
+ this.getLengthHexFromValue = function () {
409
+ if (typeof this.hV == "undefined" || this.hV == null) {
410
+ throw "this.hV is null or undefined.";
411
+ }
412
+ if (this.hV.length % 2 == 1) {
413
+ throw "value hex must be even length: n=" + hV.length + ",v=" + this.hV;
414
+ }
415
+ var n = this.hV.length / 2;
416
+ var hN = n.toString(16);
417
+ if (hN.length % 2 == 1) {
418
+ hN = "0" + hN;
419
+ }
420
+ if (n < 128) {
421
+ return hN;
422
+ }
423
+ else {
424
+ var hNlen = hN.length / 2;
425
+ if (hNlen > 15) {
426
+ throw "ASN.1 length too long to represent by 8x: n = " + n.toString(16);
427
+ }
428
+ var head = 128 + hNlen;
429
+ return head.toString(16) + hN;
430
+ }
431
+ };
432
+ /**
433
+ * get hexadecimal string of ASN.1 TLV bytes
434
+ * @name getEncodedHex
435
+ * @memberOf KJUR.asn1.ASN1Object#
436
+ * @function
437
+ * @return {String} hexadecimal string of ASN.1 TLV
438
+ */
439
+ this.getEncodedHex = function () {
440
+ if (this.hTLV == null || this.isModified) {
441
+ this.hV = this.getFreshValueHex();
442
+ this.hL = this.getLengthHexFromValue();
443
+ this.hTLV = this.hT + this.hL + this.hV;
444
+ this.isModified = false;
445
+ //alert("first time: " + this.hTLV);
446
+ }
447
+ return this.hTLV;
448
+ };
449
+ /**
450
+ * get hexadecimal string of ASN.1 TLV value(V) bytes
451
+ * @name getValueHex
452
+ * @memberOf KJUR.asn1.ASN1Object#
453
+ * @function
454
+ * @return {String} hexadecimal string of ASN.1 TLV value(V) bytes
455
+ */
456
+ this.getValueHex = function () {
457
+ this.getEncodedHex();
458
+ return this.hV;
459
+ };
460
+ this.getFreshValueHex = function () {
461
+ return '';
462
+ };
463
+ };
464
+ // == BEGIN DERAbstractString ================================================
465
+ /**
466
+ * base class for ASN.1 DER string classes
467
+ * @name KJUR.asn1.DERAbstractString
468
+ * @class base class for ASN.1 DER string classes
469
+ * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})
470
+ * @property {String} s internal string of value
471
+ * @extends KJUR.asn1.ASN1Object
472
+ * @description
473
+ * <br/>
474
+ * As for argument 'params' for constructor, you can specify one of
475
+ * following properties:
476
+ * <ul>
477
+ * <li>str - specify initial ASN.1 value(V) by a string</li>
478
+ * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>
479
+ * </ul>
480
+ * NOTE: 'params' can be omitted.
481
+ */
482
+ KJUR.asn1.DERAbstractString = function (params) {
483
+ KJUR.asn1.DERAbstractString.superclass.constructor.call(this);
484
+ /**
485
+ * get string value of this string object
486
+ * @name getString
487
+ * @memberOf KJUR.asn1.DERAbstractString#
488
+ * @function
489
+ * @return {String} string value of this string object
490
+ */
491
+ this.getString = function () {
492
+ return this.s;
493
+ };
494
+ /**
495
+ * set value by a string
496
+ * @name setString
497
+ * @memberOf KJUR.asn1.DERAbstractString#
498
+ * @function
499
+ * @param {String} newS value by a string to set
500
+ */
501
+ this.setString = function (newS) {
502
+ this.hTLV = null;
503
+ this.isModified = true;
504
+ this.s = newS;
505
+ this.hV = stohex(this.s);
506
+ };
507
+ /**
508
+ * set value by a hexadecimal string
509
+ * @name setStringHex
510
+ * @memberOf KJUR.asn1.DERAbstractString#
511
+ * @function
512
+ * @param {String} newHexString value by a hexadecimal string to set
513
+ */
514
+ this.setStringHex = function (newHexString) {
515
+ this.hTLV = null;
516
+ this.isModified = true;
517
+ this.s = null;
518
+ this.hV = newHexString;
519
+ };
520
+ this.getFreshValueHex = function () {
521
+ return this.hV;
522
+ };
523
+ if (typeof params != "undefined") {
524
+ if (typeof params == "string") {
525
+ this.setString(params);
526
+ }
527
+ else if (typeof params['str'] != "undefined") {
528
+ this.setString(params['str']);
529
+ }
530
+ else if (typeof params['hex'] != "undefined") {
531
+ this.setStringHex(params['hex']);
532
+ }
533
+ }
534
+ };
535
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object);
536
+ // == END DERAbstractString ================================================
537
+ // == BEGIN DERAbstractTime ==================================================
538
+ /**
539
+ * base class for ASN.1 DER Generalized/UTCTime class
540
+ * @name KJUR.asn1.DERAbstractTime
541
+ * @class base class for ASN.1 DER Generalized/UTCTime class
542
+ * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})
543
+ * @extends KJUR.asn1.ASN1Object
544
+ * @description
545
+ * @see KJUR.asn1.ASN1Object - superclass
546
+ */
547
+ KJUR.asn1.DERAbstractTime = function (params) {
548
+ KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);
549
+ // --- PRIVATE METHODS --------------------
550
+ this.localDateToUTC = function (d) {
551
+ utc = d.getTime() + (d.getTimezoneOffset() * 60000);
552
+ var utcDate = new Date(utc);
553
+ return utcDate;
554
+ };
555
+ /*
556
+ * format date string by Data object
557
+ * @name formatDate
558
+ * @memberOf KJUR.asn1.AbstractTime;
559
+ * @param {Date} dateObject
560
+ * @param {string} type 'utc' or 'gen'
561
+ * @param {boolean} withMillis flag for with millisections or not
562
+ * @description
563
+ * 'withMillis' flag is supported from asn1 1.0.6.
564
+ */
565
+ this.formatDate = function (dateObject, type, withMillis) {
566
+ var pad = this.zeroPadding;
567
+ var d = this.localDateToUTC(dateObject);
568
+ var year = String(d.getFullYear());
569
+ if (type == 'utc')
570
+ year = year.substr(2, 2);
571
+ var month = pad(String(d.getMonth() + 1), 2);
572
+ var day = pad(String(d.getDate()), 2);
573
+ var hour = pad(String(d.getHours()), 2);
574
+ var min = pad(String(d.getMinutes()), 2);
575
+ var sec = pad(String(d.getSeconds()), 2);
576
+ var s = year + month + day + hour + min + sec;
577
+ if (withMillis === true) {
578
+ var millis = d.getMilliseconds();
579
+ if (millis != 0) {
580
+ var sMillis = pad(String(millis), 3);
581
+ sMillis = sMillis.replace(/[0]+$/, "");
582
+ s = s + "." + sMillis;
583
+ }
584
+ }
585
+ return s + "Z";
586
+ };
587
+ this.zeroPadding = function (s, len) {
588
+ if (s.length >= len)
589
+ return s;
590
+ return new Array(len - s.length + 1).join('0') + s;
591
+ };
592
+ // --- PUBLIC METHODS --------------------
593
+ /**
594
+ * get string value of this string object
595
+ * @name getString
596
+ * @memberOf KJUR.asn1.DERAbstractTime#
597
+ * @function
598
+ * @return {String} string value of this time object
599
+ */
600
+ this.getString = function () {
601
+ return this.s;
602
+ };
603
+ /**
604
+ * set value by a string
605
+ * @name setString
606
+ * @memberOf KJUR.asn1.DERAbstractTime#
607
+ * @function
608
+ * @param {String} newS value by a string to set such like "130430235959Z"
609
+ */
610
+ this.setString = function (newS) {
611
+ this.hTLV = null;
612
+ this.isModified = true;
613
+ this.s = newS;
614
+ this.hV = stohex(newS);
615
+ };
616
+ /**
617
+ * set value by a Date object
618
+ * @name setByDateValue
619
+ * @memberOf KJUR.asn1.DERAbstractTime#
620
+ * @function
621
+ * @param {Integer} year year of date (ex. 2013)
622
+ * @param {Integer} month month of date between 1 and 12 (ex. 12)
623
+ * @param {Integer} day day of month
624
+ * @param {Integer} hour hours of date
625
+ * @param {Integer} min minutes of date
626
+ * @param {Integer} sec seconds of date
627
+ */
628
+ this.setByDateValue = function (year, month, day, hour, min, sec) {
629
+ var dateObject = new Date(Date.UTC(year, month - 1, day, hour, min, sec, 0));
630
+ this.setByDate(dateObject);
631
+ };
632
+ this.getFreshValueHex = function () {
633
+ return this.hV;
634
+ };
635
+ };
636
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object);
637
+ // == END DERAbstractTime ==================================================
638
+ // == BEGIN DERAbstractStructured ============================================
639
+ /**
640
+ * base class for ASN.1 DER structured class
641
+ * @name KJUR.asn1.DERAbstractStructured
642
+ * @class base class for ASN.1 DER structured class
643
+ * @property {Array} asn1Array internal array of ASN1Object
644
+ * @extends KJUR.asn1.ASN1Object
645
+ * @description
646
+ * @see KJUR.asn1.ASN1Object - superclass
647
+ */
648
+ KJUR.asn1.DERAbstractStructured = function (params) {
649
+ KJUR.asn1.DERAbstractString.superclass.constructor.call(this);
650
+ /**
651
+ * set value by array of ASN1Object
652
+ * @name setByASN1ObjectArray
653
+ * @memberOf KJUR.asn1.DERAbstractStructured#
654
+ * @function
655
+ * @param {array} asn1ObjectArray array of ASN1Object to set
656
+ */
657
+ this.setByASN1ObjectArray = function (asn1ObjectArray) {
658
+ this.hTLV = null;
659
+ this.isModified = true;
660
+ this.asn1Array = asn1ObjectArray;
661
+ };
662
+ /**
663
+ * append an ASN1Object to internal array
664
+ * @name appendASN1Object
665
+ * @memberOf KJUR.asn1.DERAbstractStructured#
666
+ * @function
667
+ * @param {ASN1Object} asn1Object to add
668
+ */
669
+ this.appendASN1Object = function (asn1Object) {
670
+ this.hTLV = null;
671
+ this.isModified = true;
672
+ this.asn1Array.push(asn1Object);
673
+ };
674
+ this.asn1Array = new Array();
675
+ if (typeof params != "undefined") {
676
+ if (typeof params['array'] != "undefined") {
677
+ this.asn1Array = params['array'];
678
+ }
679
+ }
680
+ };
681
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object);
682
+ // ********************************************************************
683
+ // ASN.1 Object Classes
684
+ // ********************************************************************
685
+ // ********************************************************************
686
+ /**
687
+ * class for ASN.1 DER Boolean
688
+ * @name KJUR.asn1.DERBoolean
689
+ * @class class for ASN.1 DER Boolean
690
+ * @extends KJUR.asn1.ASN1Object
691
+ * @description
692
+ * @see KJUR.asn1.ASN1Object - superclass
693
+ */
694
+ KJUR.asn1.DERBoolean = function () {
695
+ KJUR.asn1.DERBoolean.superclass.constructor.call(this);
696
+ this.hT = "01";
697
+ this.hTLV = "0101ff";
698
+ };
699
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object);
700
+ // ********************************************************************
701
+ /**
702
+ * class for ASN.1 DER Integer
703
+ * @name KJUR.asn1.DERInteger
704
+ * @class class for ASN.1 DER Integer
705
+ * @extends KJUR.asn1.ASN1Object
706
+ * @description
707
+ * <br/>
708
+ * As for argument 'params' for constructor, you can specify one of
709
+ * following properties:
710
+ * <ul>
711
+ * <li>int - specify initial ASN.1 value(V) by integer value</li>
712
+ * <li>bigint - specify initial ASN.1 value(V) by BigInteger object</li>
713
+ * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>
714
+ * </ul>
715
+ * NOTE: 'params' can be omitted.
716
+ */
717
+ KJUR.asn1.DERInteger = function (params) {
718
+ KJUR.asn1.DERInteger.superclass.constructor.call(this);
719
+ this.hT = "02";
720
+ /**
721
+ * set value by Tom Wu's BigInteger object
722
+ * @name setByBigInteger
723
+ * @memberOf KJUR.asn1.DERInteger#
724
+ * @function
725
+ * @param {BigInteger} bigIntegerValue to set
726
+ */
727
+ this.setByBigInteger = function (bigIntegerValue) {
728
+ this.hTLV = null;
729
+ this.isModified = true;
730
+ this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);
731
+ };
732
+ /**
733
+ * set value by integer value
734
+ * @name setByInteger
735
+ * @memberOf KJUR.asn1.DERInteger
736
+ * @function
737
+ * @param {Integer} integer value to set
738
+ */
739
+ this.setByInteger = function (intValue) {
740
+ var bi = new jsbn.BigInteger(String(intValue), 10);
741
+ this.setByBigInteger(bi);
742
+ };
743
+ /**
744
+ * set value by integer value
745
+ * @name setValueHex
746
+ * @memberOf KJUR.asn1.DERInteger#
747
+ * @function
748
+ * @param {String} hexadecimal string of integer value
749
+ * @description
750
+ * <br/>
751
+ * NOTE: Value shall be represented by minimum octet length of
752
+ * two's complement representation.
753
+ * @example
754
+ * new KJUR.asn1.DERInteger(123);
755
+ * new KJUR.asn1.DERInteger({'int': 123});
756
+ * new KJUR.asn1.DERInteger({'hex': '1fad'});
757
+ */
758
+ this.setValueHex = function (newHexString) {
759
+ this.hV = newHexString;
760
+ };
761
+ this.getFreshValueHex = function () {
762
+ return this.hV;
763
+ };
764
+ if (typeof params != "undefined") {
765
+ if (typeof params['bigint'] != "undefined") {
766
+ this.setByBigInteger(params['bigint']);
767
+ }
768
+ else if (typeof params['int'] != "undefined") {
769
+ this.setByInteger(params['int']);
770
+ }
771
+ else if (typeof params == "number") {
772
+ this.setByInteger(params);
773
+ }
774
+ else if (typeof params['hex'] != "undefined") {
775
+ this.setValueHex(params['hex']);
776
+ }
777
+ }
778
+ };
779
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object);
780
+ // ********************************************************************
781
+ /**
782
+ * class for ASN.1 DER encoded BitString primitive
783
+ * @name KJUR.asn1.DERBitString
784
+ * @class class for ASN.1 DER encoded BitString primitive
785
+ * @extends KJUR.asn1.ASN1Object
786
+ * @description
787
+ * <br/>
788
+ * As for argument 'params' for constructor, you can specify one of
789
+ * following properties:
790
+ * <ul>
791
+ * <li>bin - specify binary string (ex. '10111')</li>
792
+ * <li>array - specify array of boolean (ex. [true,false,true,true])</li>
793
+ * <li>hex - specify hexadecimal string of ASN.1 value(V) including unused bits</li>
794
+ * <li>obj - specify {@link KJUR.asn1.ASN1Util.newObject}
795
+ * argument for "BitString encapsulates" structure.</li>
796
+ * </ul>
797
+ * NOTE1: 'params' can be omitted.<br/>
798
+ * NOTE2: 'obj' parameter have been supported since
799
+ * asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).<br/>
800
+ * @example
801
+ * // default constructor
802
+ * o = new KJUR.asn1.DERBitString();
803
+ * // initialize with binary string
804
+ * o = new KJUR.asn1.DERBitString({bin: "1011"});
805
+ * // initialize with boolean array
806
+ * o = new KJUR.asn1.DERBitString({array: [true,false,true,true]});
807
+ * // initialize with hexadecimal string (04 is unused bits)
808
+ * o = new KJUR.asn1.DEROctetString({hex: "04bac0"});
809
+ * // initialize with ASN1Util.newObject argument for encapsulated
810
+ * o = new KJUR.asn1.DERBitString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});
811
+ * // above generates a ASN.1 data like this:
812
+ * // BIT STRING, encapsulates {
813
+ * // SEQUENCE {
814
+ * // INTEGER 3
815
+ * // PrintableString 'aaa'
816
+ * // }
817
+ * // }
818
+ */
819
+ KJUR.asn1.DERBitString = function (params) {
820
+ if (params !== undefined && typeof params.obj !== "undefined") {
821
+ var o = KJUR.asn1.ASN1Util.newObject(params.obj);
822
+ params.hex = "00" + o.getEncodedHex();
823
+ }
824
+ KJUR.asn1.DERBitString.superclass.constructor.call(this);
825
+ this.hT = "03";
826
+ /**
827
+ * set ASN.1 value(V) by a hexadecimal string including unused bits
828
+ * @name setHexValueIncludingUnusedBits
829
+ * @memberOf KJUR.asn1.DERBitString#
830
+ * @function
831
+ * @param {String} newHexStringIncludingUnusedBits
832
+ */
833
+ this.setHexValueIncludingUnusedBits = function (newHexStringIncludingUnusedBits) {
834
+ this.hTLV = null;
835
+ this.isModified = true;
836
+ this.hV = newHexStringIncludingUnusedBits;
837
+ };
838
+ /**
839
+ * set ASN.1 value(V) by unused bit and hexadecimal string of value
840
+ * @name setUnusedBitsAndHexValue
841
+ * @memberOf KJUR.asn1.DERBitString#
842
+ * @function
843
+ * @param {Integer} unusedBits
844
+ * @param {String} hValue
845
+ */
846
+ this.setUnusedBitsAndHexValue = function (unusedBits, hValue) {
847
+ if (unusedBits < 0 || 7 < unusedBits) {
848
+ throw "unused bits shall be from 0 to 7: u = " + unusedBits;
849
+ }
850
+ var hUnusedBits = "0" + unusedBits;
851
+ this.hTLV = null;
852
+ this.isModified = true;
853
+ this.hV = hUnusedBits + hValue;
854
+ };
855
+ /**
856
+ * set ASN.1 DER BitString by binary string<br/>
857
+ * @name setByBinaryString
858
+ * @memberOf KJUR.asn1.DERBitString#
859
+ * @function
860
+ * @param {String} binaryString binary value string (i.e. '10111')
861
+ * @description
862
+ * Its unused bits will be calculated automatically by length of
863
+ * 'binaryValue'. <br/>
864
+ * NOTE: Trailing zeros '0' will be ignored.
865
+ * @example
866
+ * o = new KJUR.asn1.DERBitString();
867
+ * o.setByBooleanArray("01011");
868
+ */
869
+ this.setByBinaryString = function (binaryString) {
870
+ binaryString = binaryString.replace(/0+$/, '');
871
+ var unusedBits = 8 - binaryString.length % 8;
872
+ if (unusedBits == 8)
873
+ unusedBits = 0;
874
+ for (var i = 0; i <= unusedBits; i++) {
875
+ binaryString += '0';
876
+ }
877
+ var h = '';
878
+ for (var i = 0; i < binaryString.length - 1; i += 8) {
879
+ var b = binaryString.substr(i, 8);
880
+ var x = parseInt(b, 2).toString(16);
881
+ if (x.length == 1)
882
+ x = '0' + x;
883
+ h += x;
884
+ }
885
+ this.hTLV = null;
886
+ this.isModified = true;
887
+ this.hV = '0' + unusedBits + h;
888
+ };
889
+ /**
890
+ * set ASN.1 TLV value(V) by an array of boolean<br/>
891
+ * @name setByBooleanArray
892
+ * @memberOf KJUR.asn1.DERBitString#
893
+ * @function
894
+ * @param {array} booleanArray array of boolean (ex. [true, false, true])
895
+ * @description
896
+ * NOTE: Trailing falses will be ignored in the ASN.1 DER Object.
897
+ * @example
898
+ * o = new KJUR.asn1.DERBitString();
899
+ * o.setByBooleanArray([false, true, false, true, true]);
900
+ */
901
+ this.setByBooleanArray = function (booleanArray) {
902
+ var s = '';
903
+ for (var i = 0; i < booleanArray.length; i++) {
904
+ if (booleanArray[i] == true) {
905
+ s += '1';
906
+ }
907
+ else {
908
+ s += '0';
909
+ }
910
+ }
911
+ this.setByBinaryString(s);
912
+ };
913
+ /**
914
+ * generate an array of falses with specified length<br/>
915
+ * @name newFalseArray
916
+ * @memberOf KJUR.asn1.DERBitString
917
+ * @function
918
+ * @param {Integer} nLength length of array to generate
919
+ * @return {array} array of boolean falses
920
+ * @description
921
+ * This static method may be useful to initialize boolean array.
922
+ * @example
923
+ * o = new KJUR.asn1.DERBitString();
924
+ * o.newFalseArray(3) &rarr; [false, false, false]
925
+ */
926
+ this.newFalseArray = function (nLength) {
927
+ var a = new Array(nLength);
928
+ for (var i = 0; i < nLength; i++) {
929
+ a[i] = false;
930
+ }
931
+ return a;
932
+ };
933
+ this.getFreshValueHex = function () {
934
+ return this.hV;
935
+ };
936
+ if (typeof params != "undefined") {
937
+ if (typeof params == "string" && params.toLowerCase().match(/^[0-9a-f]+$/)) {
938
+ this.setHexValueIncludingUnusedBits(params);
939
+ }
940
+ else if (typeof params['hex'] != "undefined") {
941
+ this.setHexValueIncludingUnusedBits(params['hex']);
942
+ }
943
+ else if (typeof params['bin'] != "undefined") {
944
+ this.setByBinaryString(params['bin']);
945
+ }
946
+ else if (typeof params['array'] != "undefined") {
947
+ this.setByBooleanArray(params['array']);
948
+ }
949
+ }
950
+ };
951
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object);
952
+ // ********************************************************************
953
+ /**
954
+ * class for ASN.1 DER OctetString<br/>
955
+ * @name KJUR.asn1.DEROctetString
956
+ * @class class for ASN.1 DER OctetString
957
+ * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})
958
+ * @extends KJUR.asn1.DERAbstractString
959
+ * @description
960
+ * This class provides ASN.1 OctetString simple type.<br/>
961
+ * Supported "params" attributes are:
962
+ * <ul>
963
+ * <li>str - to set a string as a value</li>
964
+ * <li>hex - to set a hexadecimal string as a value</li>
965
+ * <li>obj - to set a encapsulated ASN.1 value by JSON object
966
+ * which is defined in {@link KJUR.asn1.ASN1Util.newObject}</li>
967
+ * </ul>
968
+ * NOTE: A parameter 'obj' have been supported
969
+ * for "OCTET STRING, encapsulates" structure.
970
+ * since asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).
971
+ * @see KJUR.asn1.DERAbstractString - superclass
972
+ * @example
973
+ * // default constructor
974
+ * o = new KJUR.asn1.DEROctetString();
975
+ * // initialize with string
976
+ * o = new KJUR.asn1.DEROctetString({str: "aaa"});
977
+ * // initialize with hexadecimal string
978
+ * o = new KJUR.asn1.DEROctetString({hex: "616161"});
979
+ * // initialize with ASN1Util.newObject argument
980
+ * o = new KJUR.asn1.DEROctetString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});
981
+ * // above generates a ASN.1 data like this:
982
+ * // OCTET STRING, encapsulates {
983
+ * // SEQUENCE {
984
+ * // INTEGER 3
985
+ * // PrintableString 'aaa'
986
+ * // }
987
+ * // }
988
+ */
989
+ KJUR.asn1.DEROctetString = function (params) {
990
+ if (params !== undefined && typeof params.obj !== "undefined") {
991
+ var o = KJUR.asn1.ASN1Util.newObject(params.obj);
992
+ params.hex = o.getEncodedHex();
993
+ }
994
+ KJUR.asn1.DEROctetString.superclass.constructor.call(this, params);
995
+ this.hT = "04";
996
+ };
997
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString);
998
+ // ********************************************************************
999
+ /**
1000
+ * class for ASN.1 DER Null
1001
+ * @name KJUR.asn1.DERNull
1002
+ * @class class for ASN.1 DER Null
1003
+ * @extends KJUR.asn1.ASN1Object
1004
+ * @description
1005
+ * @see KJUR.asn1.ASN1Object - superclass
1006
+ */
1007
+ KJUR.asn1.DERNull = function () {
1008
+ KJUR.asn1.DERNull.superclass.constructor.call(this);
1009
+ this.hT = "05";
1010
+ this.hTLV = "0500";
1011
+ };
1012
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object);
1013
+ // ********************************************************************
1014
+ /**
1015
+ * class for ASN.1 DER ObjectIdentifier
1016
+ * @name KJUR.asn1.DERObjectIdentifier
1017
+ * @class class for ASN.1 DER ObjectIdentifier
1018
+ * @param {Array} params associative array of parameters (ex. {'oid': '2.5.4.5'})
1019
+ * @extends KJUR.asn1.ASN1Object
1020
+ * @description
1021
+ * <br/>
1022
+ * As for argument 'params' for constructor, you can specify one of
1023
+ * following properties:
1024
+ * <ul>
1025
+ * <li>oid - specify initial ASN.1 value(V) by a oid string (ex. 2.5.4.13)</li>
1026
+ * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>
1027
+ * </ul>
1028
+ * NOTE: 'params' can be omitted.
1029
+ */
1030
+ KJUR.asn1.DERObjectIdentifier = function (params) {
1031
+ var itox = function (i) {
1032
+ var h = i.toString(16);
1033
+ if (h.length == 1)
1034
+ h = '0' + h;
1035
+ return h;
1036
+ };
1037
+ var roidtox = function (roid) {
1038
+ var h = '';
1039
+ var bi = new jsbn.BigInteger(roid, 10);
1040
+ var b = bi.toString(2);
1041
+ var padLen = 7 - b.length % 7;
1042
+ if (padLen == 7)
1043
+ padLen = 0;
1044
+ var bPad = '';
1045
+ for (var i = 0; i < padLen; i++)
1046
+ bPad += '0';
1047
+ b = bPad + b;
1048
+ for (var i = 0; i < b.length - 1; i += 7) {
1049
+ var b8 = b.substr(i, 7);
1050
+ if (i != b.length - 7)
1051
+ b8 = '1' + b8;
1052
+ h += itox(parseInt(b8, 2));
1053
+ }
1054
+ return h;
1055
+ };
1056
+ KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);
1057
+ this.hT = "06";
1058
+ /**
1059
+ * set value by a hexadecimal string
1060
+ * @name setValueHex
1061
+ * @memberOf KJUR.asn1.DERObjectIdentifier#
1062
+ * @function
1063
+ * @param {String} newHexString hexadecimal value of OID bytes
1064
+ */
1065
+ this.setValueHex = function (newHexString) {
1066
+ this.hTLV = null;
1067
+ this.isModified = true;
1068
+ this.s = null;
1069
+ this.hV = newHexString;
1070
+ };
1071
+ /**
1072
+ * set value by a OID string<br/>
1073
+ * @name setValueOidString
1074
+ * @memberOf KJUR.asn1.DERObjectIdentifier#
1075
+ * @function
1076
+ * @param {String} oidString OID string (ex. 2.5.4.13)
1077
+ * @example
1078
+ * o = new KJUR.asn1.DERObjectIdentifier();
1079
+ * o.setValueOidString("2.5.4.13");
1080
+ */
1081
+ this.setValueOidString = function (oidString) {
1082
+ if (!oidString.match(/^[0-9.]+$/)) {
1083
+ throw "malformed oid string: " + oidString;
1084
+ }
1085
+ var h = '';
1086
+ var a = oidString.split('.');
1087
+ var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);
1088
+ h += itox(i0);
1089
+ a.splice(0, 2);
1090
+ for (var i = 0; i < a.length; i++) {
1091
+ h += roidtox(a[i]);
1092
+ }
1093
+ this.hTLV = null;
1094
+ this.isModified = true;
1095
+ this.s = null;
1096
+ this.hV = h;
1097
+ };
1098
+ /**
1099
+ * set value by a OID name
1100
+ * @name setValueName
1101
+ * @memberOf KJUR.asn1.DERObjectIdentifier#
1102
+ * @function
1103
+ * @param {String} oidName OID name (ex. 'serverAuth')
1104
+ * @since 1.0.1
1105
+ * @description
1106
+ * OID name shall be defined in 'KJUR.asn1.x509.OID.name2oidList'.
1107
+ * Otherwise raise error.
1108
+ * @example
1109
+ * o = new KJUR.asn1.DERObjectIdentifier();
1110
+ * o.setValueName("serverAuth");
1111
+ */
1112
+ this.setValueName = function (oidName) {
1113
+ var oid = KJUR.asn1.x509.OID.name2oid(oidName);
1114
+ if (oid !== '') {
1115
+ this.setValueOidString(oid);
1116
+ }
1117
+ else {
1118
+ throw "DERObjectIdentifier oidName undefined: " + oidName;
1119
+ }
1120
+ };
1121
+ this.getFreshValueHex = function () {
1122
+ return this.hV;
1123
+ };
1124
+ if (params !== undefined) {
1125
+ if (typeof params === "string") {
1126
+ if (params.match(/^[0-2].[0-9.]+$/)) {
1127
+ this.setValueOidString(params);
1128
+ }
1129
+ else {
1130
+ this.setValueName(params);
1131
+ }
1132
+ }
1133
+ else if (params.oid !== undefined) {
1134
+ this.setValueOidString(params.oid);
1135
+ }
1136
+ else if (params.hex !== undefined) {
1137
+ this.setValueHex(params.hex);
1138
+ }
1139
+ else if (params.name !== undefined) {
1140
+ this.setValueName(params.name);
1141
+ }
1142
+ }
1143
+ };
1144
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object);
1145
+ // ********************************************************************
1146
+ /**
1147
+ * class for ASN.1 DER Enumerated
1148
+ * @name KJUR.asn1.DEREnumerated
1149
+ * @class class for ASN.1 DER Enumerated
1150
+ * @extends KJUR.asn1.ASN1Object
1151
+ * @description
1152
+ * <br/>
1153
+ * As for argument 'params' for constructor, you can specify one of
1154
+ * following properties:
1155
+ * <ul>
1156
+ * <li>int - specify initial ASN.1 value(V) by integer value</li>
1157
+ * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>
1158
+ * </ul>
1159
+ * NOTE: 'params' can be omitted.
1160
+ * @example
1161
+ * new KJUR.asn1.DEREnumerated(123);
1162
+ * new KJUR.asn1.DEREnumerated({int: 123});
1163
+ * new KJUR.asn1.DEREnumerated({hex: '1fad'});
1164
+ */
1165
+ KJUR.asn1.DEREnumerated = function (params) {
1166
+ KJUR.asn1.DEREnumerated.superclass.constructor.call(this);
1167
+ this.hT = "0a";
1168
+ /**
1169
+ * set value by Tom Wu's BigInteger object
1170
+ * @name setByBigInteger
1171
+ * @memberOf KJUR.asn1.DEREnumerated#
1172
+ * @function
1173
+ * @param {BigInteger} bigIntegerValue to set
1174
+ */
1175
+ this.setByBigInteger = function (bigIntegerValue) {
1176
+ this.hTLV = null;
1177
+ this.isModified = true;
1178
+ this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);
1179
+ };
1180
+ /**
1181
+ * set value by integer value
1182
+ * @name setByInteger
1183
+ * @memberOf KJUR.asn1.DEREnumerated#
1184
+ * @function
1185
+ * @param {Integer} integer value to set
1186
+ */
1187
+ this.setByInteger = function (intValue) {
1188
+ var bi = new jsbn.BigInteger(String(intValue), 10);
1189
+ this.setByBigInteger(bi);
1190
+ };
1191
+ /**
1192
+ * set value by integer value
1193
+ * @name setValueHex
1194
+ * @memberOf KJUR.asn1.DEREnumerated#
1195
+ * @function
1196
+ * @param {String} hexadecimal string of integer value
1197
+ * @description
1198
+ * <br/>
1199
+ * NOTE: Value shall be represented by minimum octet length of
1200
+ * two's complement representation.
1201
+ */
1202
+ this.setValueHex = function (newHexString) {
1203
+ this.hV = newHexString;
1204
+ };
1205
+ this.getFreshValueHex = function () {
1206
+ return this.hV;
1207
+ };
1208
+ if (typeof params != "undefined") {
1209
+ if (typeof params['int'] != "undefined") {
1210
+ this.setByInteger(params['int']);
1211
+ }
1212
+ else if (typeof params == "number") {
1213
+ this.setByInteger(params);
1214
+ }
1215
+ else if (typeof params['hex'] != "undefined") {
1216
+ this.setValueHex(params['hex']);
1217
+ }
1218
+ }
1219
+ };
1220
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object);
1221
+ // ********************************************************************
1222
+ /**
1223
+ * class for ASN.1 DER UTF8String
1224
+ * @name KJUR.asn1.DERUTF8String
1225
+ * @class class for ASN.1 DER UTF8String
1226
+ * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})
1227
+ * @extends KJUR.asn1.DERAbstractString
1228
+ * @description
1229
+ * @see KJUR.asn1.DERAbstractString - superclass
1230
+ */
1231
+ KJUR.asn1.DERUTF8String = function (params) {
1232
+ KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params);
1233
+ this.hT = "0c";
1234
+ };
1235
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString);
1236
+ // ********************************************************************
1237
+ /**
1238
+ * class for ASN.1 DER NumericString
1239
+ * @name KJUR.asn1.DERNumericString
1240
+ * @class class for ASN.1 DER NumericString
1241
+ * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})
1242
+ * @extends KJUR.asn1.DERAbstractString
1243
+ * @description
1244
+ * @see KJUR.asn1.DERAbstractString - superclass
1245
+ */
1246
+ KJUR.asn1.DERNumericString = function (params) {
1247
+ KJUR.asn1.DERNumericString.superclass.constructor.call(this, params);
1248
+ this.hT = "12";
1249
+ };
1250
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString);
1251
+ // ********************************************************************
1252
+ /**
1253
+ * class for ASN.1 DER PrintableString
1254
+ * @name KJUR.asn1.DERPrintableString
1255
+ * @class class for ASN.1 DER PrintableString
1256
+ * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})
1257
+ * @extends KJUR.asn1.DERAbstractString
1258
+ * @description
1259
+ * @see KJUR.asn1.DERAbstractString - superclass
1260
+ */
1261
+ KJUR.asn1.DERPrintableString = function (params) {
1262
+ KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params);
1263
+ this.hT = "13";
1264
+ };
1265
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString);
1266
+ // ********************************************************************
1267
+ /**
1268
+ * class for ASN.1 DER TeletexString
1269
+ * @name KJUR.asn1.DERTeletexString
1270
+ * @class class for ASN.1 DER TeletexString
1271
+ * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})
1272
+ * @extends KJUR.asn1.DERAbstractString
1273
+ * @description
1274
+ * @see KJUR.asn1.DERAbstractString - superclass
1275
+ */
1276
+ KJUR.asn1.DERTeletexString = function (params) {
1277
+ KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params);
1278
+ this.hT = "14";
1279
+ };
1280
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString);
1281
+ // ********************************************************************
1282
+ /**
1283
+ * class for ASN.1 DER IA5String
1284
+ * @name KJUR.asn1.DERIA5String
1285
+ * @class class for ASN.1 DER IA5String
1286
+ * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})
1287
+ * @extends KJUR.asn1.DERAbstractString
1288
+ * @description
1289
+ * @see KJUR.asn1.DERAbstractString - superclass
1290
+ */
1291
+ KJUR.asn1.DERIA5String = function (params) {
1292
+ KJUR.asn1.DERIA5String.superclass.constructor.call(this, params);
1293
+ this.hT = "16";
1294
+ };
1295
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString);
1296
+ // ********************************************************************
1297
+ /**
1298
+ * class for ASN.1 DER UTCTime
1299
+ * @name KJUR.asn1.DERUTCTime
1300
+ * @class class for ASN.1 DER UTCTime
1301
+ * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})
1302
+ * @extends KJUR.asn1.DERAbstractTime
1303
+ * @description
1304
+ * <br/>
1305
+ * As for argument 'params' for constructor, you can specify one of
1306
+ * following properties:
1307
+ * <ul>
1308
+ * <li>str - specify initial ASN.1 value(V) by a string (ex.'130430235959Z')</li>
1309
+ * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>
1310
+ * <li>date - specify Date object.</li>
1311
+ * </ul>
1312
+ * NOTE: 'params' can be omitted.
1313
+ * <h4>EXAMPLES</h4>
1314
+ * @example
1315
+ * d1 = new KJUR.asn1.DERUTCTime();
1316
+ * d1.setString('130430125959Z');
1317
+ *
1318
+ * d2 = new KJUR.asn1.DERUTCTime({'str': '130430125959Z'});
1319
+ * d3 = new KJUR.asn1.DERUTCTime({'date': new Date(Date.UTC(2015, 0, 31, 0, 0, 0, 0))});
1320
+ * d4 = new KJUR.asn1.DERUTCTime('130430125959Z');
1321
+ */
1322
+ KJUR.asn1.DERUTCTime = function (params) {
1323
+ KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params);
1324
+ this.hT = "17";
1325
+ /**
1326
+ * set value by a Date object<br/>
1327
+ * @name setByDate
1328
+ * @memberOf KJUR.asn1.DERUTCTime#
1329
+ * @function
1330
+ * @param {Date} dateObject Date object to set ASN.1 value(V)
1331
+ * @example
1332
+ * o = new KJUR.asn1.DERUTCTime();
1333
+ * o.setByDate(new Date("2016/12/31"));
1334
+ */
1335
+ this.setByDate = function (dateObject) {
1336
+ this.hTLV = null;
1337
+ this.isModified = true;
1338
+ this.date = dateObject;
1339
+ this.s = this.formatDate(this.date, 'utc');
1340
+ this.hV = stohex(this.s);
1341
+ };
1342
+ this.getFreshValueHex = function () {
1343
+ if (typeof this.date == "undefined" && typeof this.s == "undefined") {
1344
+ this.date = new Date();
1345
+ this.s = this.formatDate(this.date, 'utc');
1346
+ this.hV = stohex(this.s);
1347
+ }
1348
+ return this.hV;
1349
+ };
1350
+ if (params !== undefined) {
1351
+ if (params.str !== undefined) {
1352
+ this.setString(params.str);
1353
+ }
1354
+ else if (typeof params == "string" && params.match(/^[0-9]{12}Z$/)) {
1355
+ this.setString(params);
1356
+ }
1357
+ else if (params.hex !== undefined) {
1358
+ this.setStringHex(params.hex);
1359
+ }
1360
+ else if (params.date !== undefined) {
1361
+ this.setByDate(params.date);
1362
+ }
1363
+ }
1364
+ };
1365
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime);
1366
+ // ********************************************************************
1367
+ /**
1368
+ * class for ASN.1 DER GeneralizedTime
1369
+ * @name KJUR.asn1.DERGeneralizedTime
1370
+ * @class class for ASN.1 DER GeneralizedTime
1371
+ * @param {Array} params associative array of parameters (ex. {'str': '20130430235959Z'})
1372
+ * @property {Boolean} withMillis flag to show milliseconds or not
1373
+ * @extends KJUR.asn1.DERAbstractTime
1374
+ * @description
1375
+ * <br/>
1376
+ * As for argument 'params' for constructor, you can specify one of
1377
+ * following properties:
1378
+ * <ul>
1379
+ * <li>str - specify initial ASN.1 value(V) by a string (ex.'20130430235959Z')</li>
1380
+ * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>
1381
+ * <li>date - specify Date object.</li>
1382
+ * <li>millis - specify flag to show milliseconds (from 1.0.6)</li>
1383
+ * </ul>
1384
+ * NOTE1: 'params' can be omitted.
1385
+ * NOTE2: 'withMillis' property is supported from asn1 1.0.6.
1386
+ */
1387
+ KJUR.asn1.DERGeneralizedTime = function (params) {
1388
+ KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params);
1389
+ this.hT = "18";
1390
+ this.withMillis = false;
1391
+ /**
1392
+ * set value by a Date object
1393
+ * @name setByDate
1394
+ * @memberOf KJUR.asn1.DERGeneralizedTime#
1395
+ * @function
1396
+ * @param {Date} dateObject Date object to set ASN.1 value(V)
1397
+ * @example
1398
+ * When you specify UTC time, use 'Date.UTC' method like this:<br/>
1399
+ * o1 = new DERUTCTime();
1400
+ * o1.setByDate(date);
1401
+ *
1402
+ * date = new Date(Date.UTC(2015, 0, 31, 23, 59, 59, 0)); #2015JAN31 23:59:59
1403
+ */
1404
+ this.setByDate = function (dateObject) {
1405
+ this.hTLV = null;
1406
+ this.isModified = true;
1407
+ this.date = dateObject;
1408
+ this.s = this.formatDate(this.date, 'gen', this.withMillis);
1409
+ this.hV = stohex(this.s);
1410
+ };
1411
+ this.getFreshValueHex = function () {
1412
+ if (this.date === undefined && this.s === undefined) {
1413
+ this.date = new Date();
1414
+ this.s = this.formatDate(this.date, 'gen', this.withMillis);
1415
+ this.hV = stohex(this.s);
1416
+ }
1417
+ return this.hV;
1418
+ };
1419
+ if (params !== undefined) {
1420
+ if (params.str !== undefined) {
1421
+ this.setString(params.str);
1422
+ }
1423
+ else if (typeof params == "string" && params.match(/^[0-9]{14}Z$/)) {
1424
+ this.setString(params);
1425
+ }
1426
+ else if (params.hex !== undefined) {
1427
+ this.setStringHex(params.hex);
1428
+ }
1429
+ else if (params.date !== undefined) {
1430
+ this.setByDate(params.date);
1431
+ }
1432
+ if (params.millis === true) {
1433
+ this.withMillis = true;
1434
+ }
1435
+ }
1436
+ };
1437
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime);
1438
+ // ********************************************************************
1439
+ /**
1440
+ * class for ASN.1 DER Sequence
1441
+ * @name KJUR.asn1.DERSequence
1442
+ * @class class for ASN.1 DER Sequence
1443
+ * @extends KJUR.asn1.DERAbstractStructured
1444
+ * @description
1445
+ * <br/>
1446
+ * As for argument 'params' for constructor, you can specify one of
1447
+ * following properties:
1448
+ * <ul>
1449
+ * <li>array - specify array of ASN1Object to set elements of content</li>
1450
+ * </ul>
1451
+ * NOTE: 'params' can be omitted.
1452
+ */
1453
+ KJUR.asn1.DERSequence = function (params) {
1454
+ KJUR.asn1.DERSequence.superclass.constructor.call(this, params);
1455
+ this.hT = "30";
1456
+ this.getFreshValueHex = function () {
1457
+ var h = '';
1458
+ for (var i = 0; i < this.asn1Array.length; i++) {
1459
+ var asn1Obj = this.asn1Array[i];
1460
+ h += asn1Obj.getEncodedHex();
1461
+ }
1462
+ this.hV = h;
1463
+ return this.hV;
1464
+ };
1465
+ };
1466
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured);
1467
+ // ********************************************************************
1468
+ /**
1469
+ * class for ASN.1 DER Set
1470
+ * @name KJUR.asn1.DERSet
1471
+ * @class class for ASN.1 DER Set
1472
+ * @extends KJUR.asn1.DERAbstractStructured
1473
+ * @description
1474
+ * <br/>
1475
+ * As for argument 'params' for constructor, you can specify one of
1476
+ * following properties:
1477
+ * <ul>
1478
+ * <li>array - specify array of ASN1Object to set elements of content</li>
1479
+ * <li>sortflag - flag for sort (default: true). ASN.1 BER is not sorted in 'SET OF'.</li>
1480
+ * </ul>
1481
+ * NOTE1: 'params' can be omitted.<br/>
1482
+ * NOTE2: sortflag is supported since 1.0.5.
1483
+ */
1484
+ KJUR.asn1.DERSet = function (params) {
1485
+ KJUR.asn1.DERSet.superclass.constructor.call(this, params);
1486
+ this.hT = "31";
1487
+ this.sortFlag = true; // item shall be sorted only in ASN.1 DER
1488
+ this.getFreshValueHex = function () {
1489
+ var a = new Array();
1490
+ for (var i = 0; i < this.asn1Array.length; i++) {
1491
+ var asn1Obj = this.asn1Array[i];
1492
+ a.push(asn1Obj.getEncodedHex());
1493
+ }
1494
+ if (this.sortFlag == true)
1495
+ a.sort();
1496
+ this.hV = a.join('');
1497
+ return this.hV;
1498
+ };
1499
+ if (typeof params != "undefined") {
1500
+ if (typeof params.sortflag != "undefined" &&
1501
+ params.sortflag == false)
1502
+ this.sortFlag = false;
1503
+ }
1504
+ };
1505
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured);
1506
+ // ********************************************************************
1507
+ /**
1508
+ * class for ASN.1 DER TaggedObject
1509
+ * @name KJUR.asn1.DERTaggedObject
1510
+ * @class class for ASN.1 DER TaggedObject
1511
+ * @extends KJUR.asn1.ASN1Object
1512
+ * @description
1513
+ * <br/>
1514
+ * Parameter 'tagNoNex' is ASN.1 tag(T) value for this object.
1515
+ * For example, if you find '[1]' tag in a ASN.1 dump,
1516
+ * 'tagNoHex' will be 'a1'.
1517
+ * <br/>
1518
+ * As for optional argument 'params' for constructor, you can specify *ANY* of
1519
+ * following properties:
1520
+ * <ul>
1521
+ * <li>explicit - specify true if this is explicit tag otherwise false
1522
+ * (default is 'true').</li>
1523
+ * <li>tag - specify tag (default is 'a0' which means [0])</li>
1524
+ * <li>obj - specify ASN1Object which is tagged</li>
1525
+ * </ul>
1526
+ * @example
1527
+ * d1 = new KJUR.asn1.DERUTF8String({'str':'a'});
1528
+ * d2 = new KJUR.asn1.DERTaggedObject({'obj': d1});
1529
+ * hex = d2.getEncodedHex();
1530
+ */
1531
+ KJUR.asn1.DERTaggedObject = function (params) {
1532
+ KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);
1533
+ this.hT = "a0";
1534
+ this.hV = '';
1535
+ this.isExplicit = true;
1536
+ this.asn1Object = null;
1537
+ /**
1538
+ * set value by an ASN1Object
1539
+ * @name setString
1540
+ * @memberOf KJUR.asn1.DERTaggedObject#
1541
+ * @function
1542
+ * @param {Boolean} isExplicitFlag flag for explicit/implicit tag
1543
+ * @param {Integer} tagNoHex hexadecimal string of ASN.1 tag
1544
+ * @param {ASN1Object} asn1Object ASN.1 to encapsulate
1545
+ */
1546
+ this.setASN1Object = function (isExplicitFlag, tagNoHex, asn1Object) {
1547
+ this.hT = tagNoHex;
1548
+ this.isExplicit = isExplicitFlag;
1549
+ this.asn1Object = asn1Object;
1550
+ if (this.isExplicit) {
1551
+ this.hV = this.asn1Object.getEncodedHex();
1552
+ this.hTLV = null;
1553
+ this.isModified = true;
1554
+ }
1555
+ else {
1556
+ this.hV = null;
1557
+ this.hTLV = asn1Object.getEncodedHex();
1558
+ this.hTLV = this.hTLV.replace(/^../, tagNoHex);
1559
+ this.isModified = false;
1560
+ }
1561
+ };
1562
+ this.getFreshValueHex = function () {
1563
+ return this.hV;
1564
+ };
1565
+ if (typeof params != "undefined") {
1566
+ if (typeof params['tag'] != "undefined") {
1567
+ this.hT = params['tag'];
1568
+ }
1569
+ if (typeof params['explicit'] != "undefined") {
1570
+ this.isExplicit = params['explicit'];
1571
+ }
1572
+ if (typeof params['obj'] != "undefined") {
1573
+ this.asn1Object = params['obj'];
1574
+ this.setASN1Object(this.isExplicit, this.hT, this.asn1Object);
1575
+ }
1576
+ }
1577
+ };
1578
+ yahoo.YAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object);
1579
+
1580
+ exports.KJUR = KJUR;