libp2p 0.36.2 → 0.37.0

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 (430) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +34 -52
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +81 -0
  6. package/dist/src/address-manager/index.js.map +1 -0
  7. package/dist/src/circuit/auto-relay.d.ts +24 -85
  8. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  9. package/dist/src/circuit/auto-relay.js +216 -0
  10. package/dist/src/circuit/auto-relay.js.map +1 -0
  11. package/dist/src/circuit/circuit/hop.d.ts +26 -53
  12. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  13. package/dist/src/circuit/circuit/hop.js +138 -0
  14. package/dist/src/circuit/circuit/hop.js.map +1 -0
  15. package/dist/src/circuit/circuit/stop.d.ts +18 -10
  16. package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
  17. package/dist/src/circuit/circuit/stop.js +49 -0
  18. package/dist/src/circuit/circuit/stop.js.map +1 -0
  19. package/dist/src/circuit/circuit/stream-handler.d.ts +19 -38
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +59 -0
  22. package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
  23. package/dist/src/circuit/circuit/utils.d.ts +3 -6
  24. package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
  25. package/dist/src/circuit/circuit/utils.js +43 -0
  26. package/dist/src/circuit/circuit/utils.js.map +1 -0
  27. package/dist/src/circuit/constants.d.ts +24 -6
  28. package/dist/src/circuit/constants.d.ts.map +1 -1
  29. package/dist/src/circuit/constants.js +26 -0
  30. package/dist/src/circuit/constants.js.map +1 -0
  31. package/dist/src/circuit/index.d.ts +41 -74
  32. package/dist/src/circuit/index.d.ts.map +1 -1
  33. package/dist/src/circuit/index.js +69 -0
  34. package/dist/src/circuit/index.js.map +1 -0
  35. package/dist/src/circuit/listener.d.ts +8 -3
  36. package/dist/src/circuit/listener.d.ts.map +1 -1
  37. package/dist/src/circuit/listener.js +62 -0
  38. package/dist/src/circuit/listener.js.map +1 -0
  39. package/dist/src/circuit/multicodec.d.ts +1 -1
  40. package/dist/src/circuit/multicodec.d.ts.map +1 -1
  41. package/dist/src/circuit/multicodec.js +2 -0
  42. package/dist/src/circuit/multicodec.js.map +1 -0
  43. package/dist/src/circuit/pb/index.d.ts +52 -0
  44. package/dist/src/circuit/pb/index.d.ts.map +1 -0
  45. package/dist/src/circuit/pb/index.js +98 -0
  46. package/dist/src/circuit/pb/index.js.map +1 -0
  47. package/dist/src/circuit/transport.d.ts +18 -78
  48. package/dist/src/circuit/transport.d.ts.map +1 -1
  49. package/dist/src/circuit/transport.js +192 -0
  50. package/dist/src/circuit/transport.js.map +1 -0
  51. package/dist/src/circuit/utils.d.ts +5 -2
  52. package/dist/src/circuit/utils.d.ts.map +1 -1
  53. package/dist/src/circuit/utils.js +11 -0
  54. package/dist/src/circuit/utils.js.map +1 -0
  55. package/dist/src/config.d.ts +3 -85
  56. package/dist/src/config.d.ts.map +1 -1
  57. package/dist/src/config.js +91 -0
  58. package/dist/src/config.js.map +1 -0
  59. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  60. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  61. package/dist/src/connection-manager/auto-dialler.js +105 -0
  62. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  63. package/dist/src/connection-manager/dialer/auto-dialer.d.ts +16 -0
  64. package/dist/src/connection-manager/dialer/auto-dialer.d.ts.map +1 -0
  65. package/dist/src/connection-manager/dialer/auto-dialer.js +37 -0
  66. package/dist/src/connection-manager/dialer/auto-dialer.js.map +1 -0
  67. package/dist/src/connection-manager/dialer/dial-request.d.ts +27 -0
  68. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -0
  69. package/dist/src/connection-manager/dialer/dial-request.js +83 -0
  70. package/dist/src/connection-manager/dialer/dial-request.js.map +1 -0
  71. package/dist/src/connection-manager/dialer/index.d.ts +104 -0
  72. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -0
  73. package/dist/src/connection-manager/dialer/index.js +267 -0
  74. package/dist/src/connection-manager/dialer/index.js.map +1 -0
  75. package/dist/src/connection-manager/index.d.ts +102 -136
  76. package/dist/src/connection-manager/index.d.ts.map +1 -1
  77. package/dist/src/connection-manager/index.js +333 -0
  78. package/dist/src/connection-manager/index.js.map +1 -0
  79. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  80. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  81. package/dist/src/connection-manager/latency-monitor.js +220 -0
  82. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  83. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  84. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  85. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  86. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  87. package/dist/src/constants.d.ts +22 -10
  88. package/dist/src/constants.d.ts.map +1 -1
  89. package/dist/src/constants.js +27 -0
  90. package/dist/src/constants.js.map +1 -0
  91. package/dist/src/content-routing/index.d.ts +27 -81
  92. package/dist/src/content-routing/index.d.ts.map +1 -1
  93. package/dist/src/content-routing/index.js +99 -0
  94. package/dist/src/content-routing/index.js.map +1 -0
  95. package/dist/src/content-routing/utils.d.ts +6 -49
  96. package/dist/src/content-routing/utils.d.ts.map +1 -1
  97. package/dist/src/content-routing/utils.js +42 -0
  98. package/dist/src/content-routing/utils.js.map +1 -0
  99. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  100. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  101. package/dist/src/dht/dht-content-routing.js +32 -0
  102. package/dist/src/dht/dht-content-routing.js.map +1 -0
  103. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  104. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  105. package/dist/src/dht/dht-peer-routing.js +26 -0
  106. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  107. package/dist/src/dht/dummy-dht.d.ts +20 -0
  108. package/dist/src/dht/dummy-dht.d.ts.map +1 -0
  109. package/dist/src/dht/dummy-dht.js +46 -0
  110. package/dist/src/dht/dummy-dht.js.map +1 -0
  111. package/dist/src/errors.d.ts +70 -63
  112. package/dist/src/errors.d.ts.map +1 -1
  113. package/dist/src/errors.js +75 -0
  114. package/dist/src/errors.js.map +1 -0
  115. package/dist/src/fetch/constants.d.ts +1 -1
  116. package/dist/src/fetch/constants.d.ts.map +1 -1
  117. package/dist/src/fetch/constants.js +3 -0
  118. package/dist/src/fetch/constants.js.map +1 -0
  119. package/dist/src/fetch/index.d.ts +30 -49
  120. package/dist/src/fetch/index.d.ts.map +1 -1
  121. package/dist/src/fetch/index.js +129 -0
  122. package/dist/src/fetch/index.js.map +1 -0
  123. package/dist/src/fetch/pb/proto.d.ts +27 -0
  124. package/dist/src/fetch/pb/proto.d.ts.map +1 -0
  125. package/dist/src/fetch/pb/proto.js +50 -0
  126. package/dist/src/fetch/pb/proto.js.map +1 -0
  127. package/dist/src/get-peer.d.ts +4 -11
  128. package/dist/src/get-peer.d.ts.map +1 -1
  129. package/dist/src/get-peer.js +43 -0
  130. package/dist/src/get-peer.js.map +1 -0
  131. package/dist/src/identify/consts.d.ts +9 -9
  132. package/dist/src/identify/consts.d.ts.map +1 -1
  133. package/dist/src/identify/consts.js +11 -0
  134. package/dist/src/identify/consts.js.map +1 -0
  135. package/dist/src/identify/index.d.ts +42 -96
  136. package/dist/src/identify/index.d.ts.map +1 -1
  137. package/dist/src/identify/index.js +322 -0
  138. package/dist/src/identify/index.js.map +1 -0
  139. package/dist/src/identify/pb/message.d.ts +16 -0
  140. package/dist/src/identify/pb/message.d.ts.map +1 -0
  141. package/dist/src/identify/pb/message.js +24 -0
  142. package/dist/src/identify/pb/message.js.map +1 -0
  143. package/dist/src/index.d.ts +150 -496
  144. package/dist/src/index.d.ts.map +1 -1
  145. package/dist/src/index.js +9 -0
  146. package/dist/src/index.js.map +1 -0
  147. package/dist/src/insecure/index.d.ts +9 -0
  148. package/dist/src/insecure/index.d.ts.map +1 -0
  149. package/dist/src/insecure/index.js +81 -0
  150. package/dist/src/insecure/index.js.map +1 -0
  151. package/dist/src/insecure/pb/proto.d.ts +29 -0
  152. package/dist/src/insecure/pb/proto.d.ts.map +1 -0
  153. package/dist/src/insecure/pb/proto.js +53 -0
  154. package/dist/src/insecure/pb/proto.js.map +1 -0
  155. package/dist/src/keychain/cms.d.ts +6 -14
  156. package/dist/src/keychain/cms.d.ts.map +1 -1
  157. package/dist/src/keychain/cms.js +129 -0
  158. package/dist/src/keychain/cms.js.map +1 -0
  159. package/dist/src/keychain/index.d.ts +60 -81
  160. package/dist/src/keychain/index.d.ts.map +1 -1
  161. package/dist/src/keychain/index.js +492 -0
  162. package/dist/src/keychain/index.js.map +1 -0
  163. package/dist/src/keychain/util.d.ts +3 -6
  164. package/dist/src/keychain/util.d.ts.map +1 -1
  165. package/dist/src/keychain/util.js +79 -0
  166. package/dist/src/keychain/util.js.map +1 -0
  167. package/dist/src/libp2p.d.ts +80 -0
  168. package/dist/src/libp2p.d.ts.map +1 -0
  169. package/dist/src/libp2p.js +397 -0
  170. package/dist/src/libp2p.js.map +1 -0
  171. package/dist/src/metrics/index.d.ts +47 -104
  172. package/dist/src/metrics/index.d.ts.map +1 -1
  173. package/dist/src/metrics/index.js +231 -0
  174. package/dist/src/metrics/index.js.map +1 -0
  175. package/dist/src/metrics/moving-average.d.ts +14 -0
  176. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  177. package/dist/src/metrics/moving-average.js +40 -0
  178. package/dist/src/metrics/moving-average.js.map +1 -0
  179. package/dist/src/metrics/stats.d.ts +41 -93
  180. package/dist/src/metrics/stats.d.ts.map +1 -1
  181. package/dist/src/metrics/stats.js +183 -0
  182. package/dist/src/metrics/stats.js.map +1 -0
  183. package/dist/src/nat-manager.d.ts +42 -99
  184. package/dist/src/nat-manager.d.ts.map +1 -1
  185. package/dist/src/nat-manager.js +114 -0
  186. package/dist/src/nat-manager.js.map +1 -0
  187. package/dist/src/peer-record-updater.d.ts +15 -0
  188. package/dist/src/peer-record-updater.d.ts.map +1 -0
  189. package/dist/src/peer-record-updater.js +44 -0
  190. package/dist/src/peer-record-updater.js.map +1 -0
  191. package/dist/src/peer-routing.d.ts +40 -84
  192. package/dist/src/peer-routing.d.ts.map +1 -1
  193. package/dist/src/peer-routing.js +108 -0
  194. package/dist/src/peer-routing.js.map +1 -0
  195. package/dist/src/ping/constants.d.ts +4 -4
  196. package/dist/src/ping/constants.d.ts.map +1 -1
  197. package/dist/src/ping/constants.js +5 -0
  198. package/dist/src/ping/constants.js.map +1 -0
  199. package/dist/src/ping/index.d.ts +17 -31
  200. package/dist/src/ping/index.d.ts.map +1 -1
  201. package/dist/src/ping/index.js +57 -0
  202. package/dist/src/ping/index.js.map +1 -0
  203. package/dist/src/pnet/crypto.d.ts +15 -5
  204. package/dist/src/pnet/crypto.d.ts.map +1 -1
  205. package/dist/src/pnet/crypto.js +60 -0
  206. package/dist/src/pnet/crypto.js.map +1 -0
  207. package/dist/src/pnet/errors.d.ts +5 -5
  208. package/dist/src/pnet/errors.d.ts.map +1 -1
  209. package/dist/src/pnet/errors.js +6 -0
  210. package/dist/src/pnet/errors.js.map +1 -0
  211. package/dist/src/pnet/index.d.ts +12 -20
  212. package/dist/src/pnet/index.d.ts.map +1 -1
  213. package/dist/src/pnet/index.js +67 -0
  214. package/dist/src/pnet/index.js.map +1 -0
  215. package/dist/src/pnet/key-generator.d.ts +3 -7
  216. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  217. package/dist/src/pnet/key-generator.js +25 -0
  218. package/dist/src/pnet/key-generator.js.map +1 -0
  219. package/dist/src/pubsub/dummy-pubsub.d.ts +17 -0
  220. package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -0
  221. package/dist/src/pubsub/dummy-pubsub.js +37 -0
  222. package/dist/src/pubsub/dummy-pubsub.js.map +1 -0
  223. package/dist/src/registrar.d.ts +26 -65
  224. package/dist/src/registrar.d.ts.map +1 -1
  225. package/dist/src/registrar.js +144 -0
  226. package/dist/src/registrar.js.map +1 -0
  227. package/dist/src/transport-manager.d.ts +36 -82
  228. package/dist/src/transport-manager.d.ts.map +1 -1
  229. package/dist/src/transport-manager.js +223 -0
  230. package/dist/src/transport-manager.js.map +1 -0
  231. package/dist/src/upgrader.d.ts +49 -129
  232. package/dist/src/upgrader.d.ts.map +1 -1
  233. package/dist/src/upgrader.js +402 -0
  234. package/dist/src/upgrader.js.map +1 -0
  235. package/dist/src/version.d.ts +3 -0
  236. package/dist/src/version.d.ts.map +1 -0
  237. package/dist/src/version.js +3 -0
  238. package/dist/src/version.js.map +1 -0
  239. package/package.json +144 -201
  240. package/src/address-manager/index.ts +130 -0
  241. package/src/circuit/README.md +16 -11
  242. package/src/circuit/auto-relay.ts +286 -0
  243. package/src/circuit/circuit/hop.ts +211 -0
  244. package/src/circuit/circuit/stop.ts +78 -0
  245. package/src/circuit/circuit/stream-handler.ts +86 -0
  246. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  247. package/src/circuit/constants.ts +31 -0
  248. package/src/circuit/index.ts +120 -0
  249. package/src/circuit/listener.ts +82 -0
  250. package/src/circuit/multicodec.ts +2 -0
  251. package/src/circuit/{protocol → pb}/index.proto +1 -1
  252. package/src/circuit/pb/index.ts +117 -0
  253. package/src/circuit/transport.ts +219 -0
  254. package/src/circuit/utils.ts +12 -0
  255. package/src/config.ts +99 -0
  256. package/src/connection-manager/auto-dialler.ts +154 -0
  257. package/src/connection-manager/dialer/auto-dialer.ts +59 -0
  258. package/src/{dialer/dial-request.js → connection-manager/dialer/dial-request.ts} +60 -51
  259. package/src/connection-manager/dialer/index.ts +382 -0
  260. package/src/connection-manager/index.ts +508 -0
  261. package/src/connection-manager/latency-monitor.ts +319 -0
  262. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  263. package/src/constants.ts +31 -0
  264. package/src/content-routing/index.ts +144 -0
  265. package/src/content-routing/utils.ts +54 -0
  266. package/src/dht/dht-content-routing.ts +43 -0
  267. package/src/dht/dht-peer-routing.ts +35 -0
  268. package/src/dht/dummy-dht.ts +60 -0
  269. package/src/errors.ts +73 -0
  270. package/src/fetch/README.md +1 -1
  271. package/src/fetch/constants.ts +3 -0
  272. package/src/fetch/index.ts +167 -0
  273. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  274. package/src/fetch/pb/proto.ts +65 -0
  275. package/src/get-peer.ts +57 -0
  276. package/src/identify/consts.ts +13 -0
  277. package/src/identify/index.ts +445 -0
  278. package/src/identify/{message.proto → pb/message.proto} +0 -0
  279. package/src/identify/pb/message.ts +37 -0
  280. package/src/index.ts +220 -0
  281. package/src/insecure/index.ts +101 -0
  282. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  283. package/src/insecure/pb/proto.ts +68 -0
  284. package/src/keychain/{cms.js → cms.ts} +62 -58
  285. package/src/keychain/index.ts +587 -0
  286. package/src/keychain/{util.js → util.ts} +7 -17
  287. package/src/libp2p.ts +538 -0
  288. package/src/metrics/index.ts +310 -0
  289. package/src/metrics/moving-average.ts +53 -0
  290. package/src/metrics/stats.ts +238 -0
  291. package/src/nat-manager.ts +194 -0
  292. package/src/peer-record-updater.ts +55 -0
  293. package/src/peer-routing.ts +186 -0
  294. package/src/ping/README.md +1 -1
  295. package/src/ping/constants.ts +5 -0
  296. package/src/ping/index.ts +84 -0
  297. package/src/pnet/README.md +2 -2
  298. package/src/pnet/crypto.ts +67 -0
  299. package/src/pnet/errors.ts +5 -0
  300. package/src/pnet/index.ts +97 -0
  301. package/src/pnet/key-generator.ts +28 -0
  302. package/src/pubsub/dummy-pubsub.ts +51 -0
  303. package/src/registrar.ts +189 -0
  304. package/src/transport-manager.ts +281 -0
  305. package/src/upgrader.ts +499 -0
  306. package/src/version.ts +3 -0
  307. package/dist/index.min.js +0 -55
  308. package/dist/src/circuit/protocol/index.d.ts +0 -173
  309. package/dist/src/dialer/dial-request.d.ts +0 -55
  310. package/dist/src/dialer/dial-request.d.ts.map +0 -1
  311. package/dist/src/dialer/index.d.ts +0 -182
  312. package/dist/src/dialer/index.d.ts.map +0 -1
  313. package/dist/src/fetch/proto.d.ts +0 -134
  314. package/dist/src/identify/message.d.ts +0 -95
  315. package/dist/src/insecure/plaintext.d.ts +0 -12
  316. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  317. package/dist/src/insecure/proto.d.ts +0 -128
  318. package/dist/src/metrics/old-peers.d.ts +0 -3
  319. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  320. package/dist/src/metrics/tracked-map.d.ts +0 -8
  321. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  322. package/dist/src/peer-store/address-book.d.ts +0 -67
  323. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  324. package/dist/src/peer-store/index.d.ts +0 -58
  325. package/dist/src/peer-store/index.d.ts.map +0 -1
  326. package/dist/src/peer-store/key-book.d.ts +0 -40
  327. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  328. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  329. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  330. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  331. package/dist/src/peer-store/proto-book.d.ts +0 -43
  332. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  333. package/dist/src/peer-store/store.d.ts +0 -73
  334. package/dist/src/peer-store/store.d.ts.map +0 -1
  335. package/dist/src/peer-store/types.d.ts +0 -202
  336. package/dist/src/peer-store/types.d.ts.map +0 -1
  337. package/dist/src/ping/util.d.ts +0 -5
  338. package/dist/src/ping/util.d.ts.map +0 -1
  339. package/dist/src/pubsub-adapter.d.ts +0 -22
  340. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  341. package/dist/src/record/envelope/envelope.d.ts +0 -77
  342. package/dist/src/record/envelope/index.d.ts +0 -80
  343. package/dist/src/record/envelope/index.d.ts.map +0 -1
  344. package/dist/src/record/peer-record/consts.d.ts +0 -4
  345. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  346. package/dist/src/record/peer-record/index.d.ts +0 -60
  347. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  348. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  349. package/dist/src/record/utils.d.ts +0 -12
  350. package/dist/src/record/utils.d.ts.map +0 -1
  351. package/dist/src/types.d.ts +0 -90
  352. package/dist/src/types.d.ts.map +0 -1
  353. package/src/address-manager/index.js +0 -96
  354. package/src/circuit/auto-relay.js +0 -302
  355. package/src/circuit/circuit/hop.js +0 -205
  356. package/src/circuit/circuit/stop.js +0 -81
  357. package/src/circuit/circuit/stream-handler.js +0 -94
  358. package/src/circuit/constants.js +0 -12
  359. package/src/circuit/index.js +0 -102
  360. package/src/circuit/listener.js +0 -75
  361. package/src/circuit/multicodec.js +0 -5
  362. package/src/circuit/protocol/index.d.ts +0 -173
  363. package/src/circuit/protocol/index.js +0 -530
  364. package/src/circuit/transport.js +0 -229
  365. package/src/circuit/utils.js +0 -17
  366. package/src/config.js +0 -114
  367. package/src/connection-manager/auto-dialler.js +0 -132
  368. package/src/connection-manager/index.js +0 -374
  369. package/src/connection-manager/latency-monitor.js +0 -264
  370. package/src/constants.js +0 -18
  371. package/src/content-routing/index.js +0 -163
  372. package/src/content-routing/utils.js +0 -89
  373. package/src/dht/dht-content-routing.js +0 -44
  374. package/src/dht/dht-peer-routing.js +0 -51
  375. package/src/dialer/index.js +0 -376
  376. package/src/errors.js +0 -66
  377. package/src/fetch/constants.js +0 -6
  378. package/src/fetch/index.js +0 -159
  379. package/src/fetch/proto.d.ts +0 -134
  380. package/src/fetch/proto.js +0 -333
  381. package/src/get-peer.js +0 -49
  382. package/src/identify/consts.js +0 -15
  383. package/src/identify/index.js +0 -384
  384. package/src/identify/message.d.ts +0 -95
  385. package/src/identify/message.js +0 -328
  386. package/src/index.js +0 -813
  387. package/src/insecure/plaintext.js +0 -95
  388. package/src/insecure/proto.d.ts +0 -128
  389. package/src/insecure/proto.js +0 -371
  390. package/src/keychain/index.js +0 -561
  391. package/src/metrics/index.js +0 -290
  392. package/src/metrics/old-peers.js +0 -16
  393. package/src/metrics/stats.js +0 -270
  394. package/src/metrics/tracked-map.js +0 -94
  395. package/src/nat-manager.js +0 -197
  396. package/src/peer-routing.js +0 -176
  397. package/src/peer-store/README.md +0 -145
  398. package/src/peer-store/address-book.js +0 -382
  399. package/src/peer-store/index.js +0 -121
  400. package/src/peer-store/key-book.js +0 -141
  401. package/src/peer-store/metadata-book.js +0 -250
  402. package/src/peer-store/pb/peer.d.ts +0 -222
  403. package/src/peer-store/pb/peer.js +0 -643
  404. package/src/peer-store/pb/peer.proto +0 -31
  405. package/src/peer-store/proto-book.js +0 -237
  406. package/src/peer-store/store.js +0 -263
  407. package/src/peer-store/types.ts +0 -245
  408. package/src/ping/constants.js +0 -8
  409. package/src/ping/index.js +0 -84
  410. package/src/ping/util.js +0 -18
  411. package/src/pnet/crypto.js +0 -84
  412. package/src/pnet/errors.js +0 -7
  413. package/src/pnet/index.js +0 -86
  414. package/src/pnet/key-generator.js +0 -33
  415. package/src/pubsub-adapter.js +0 -61
  416. package/src/record/README.md +0 -130
  417. package/src/record/envelope/envelope.d.ts +0 -77
  418. package/src/record/envelope/envelope.js +0 -243
  419. package/src/record/envelope/envelope.proto +0 -19
  420. package/src/record/envelope/index.js +0 -183
  421. package/src/record/peer-record/consts.js +0 -14
  422. package/src/record/peer-record/index.js +0 -113
  423. package/src/record/peer-record/peer-record.d.ts +0 -133
  424. package/src/record/peer-record/peer-record.js +0 -367
  425. package/src/record/peer-record/peer-record.proto +0 -18
  426. package/src/record/utils.js +0 -25
  427. package/src/registrar.js +0 -127
  428. package/src/transport-manager.js +0 -269
  429. package/src/types.ts +0 -98
  430. package/src/upgrader.js +0 -492
@@ -0,0 +1,101 @@
1
+ import { logger } from '@libp2p/logger'
2
+ import { handshake } from 'it-handshake'
3
+ import * as lp from 'it-length-prefixed'
4
+ import { UnexpectedPeerError, InvalidCryptoExchangeError } from '@libp2p/interfaces/connection-encrypter/errors'
5
+ import { Exchange, KeyType } from './pb/proto.js'
6
+ import type { PeerId } from '@libp2p/interfaces/peer-id'
7
+ import { peerIdFromBytes, peerIdFromKeys } from '@libp2p/peer-id'
8
+ import type { ConnectionEncrypter, SecuredConnection } from '@libp2p/interfaces/connection-encrypter'
9
+ import type { Duplex } from 'it-stream-types'
10
+
11
+ const log = logger('libp2p:plaintext')
12
+ const PROTOCOL = '/plaintext/2.0.0'
13
+
14
+ function lpEncodeExchange (exchange: Exchange) {
15
+ const pb = Exchange.encode(exchange)
16
+
17
+ return lp.encode.single(pb)
18
+ }
19
+
20
+ /**
21
+ * Encrypt connection
22
+ */
23
+ async function encrypt (localId: PeerId, conn: Duplex<Uint8Array>, remoteId?: PeerId): Promise<SecuredConnection> {
24
+ const shake = handshake(conn)
25
+
26
+ let type = KeyType.RSA
27
+
28
+ if (localId.type === 'Ed25519') {
29
+ type = KeyType.Ed25519
30
+ } else if (localId.type === 'secp256k1') {
31
+ type = KeyType.Secp256k1
32
+ }
33
+
34
+ // Encode the public key and write it to the remote peer
35
+ shake.write(
36
+ lpEncodeExchange({
37
+ id: localId.toBytes(),
38
+ pubkey: {
39
+ Type: type,
40
+ Data: localId.publicKey ?? new Uint8Array(0)
41
+ }
42
+ }).slice()
43
+ )
44
+
45
+ log('write pubkey exchange to peer %p', remoteId)
46
+
47
+ // Get the Exchange message
48
+ // @ts-expect-error needs to be generator
49
+ const response = (await lp.decode.fromReader(shake.reader).next()).value
50
+ const id = Exchange.decode(response.slice())
51
+ log('read pubkey exchange from peer %p', remoteId)
52
+
53
+ let peerId
54
+ try {
55
+ if (id.pubkey == null) {
56
+ throw new Error('Public key missing')
57
+ }
58
+
59
+ if (id.pubkey.Data.length === 0) {
60
+ throw new Error('Public key data too short')
61
+ }
62
+
63
+ if (id.id == null) {
64
+ throw new Error('Remote id missing')
65
+ }
66
+
67
+ peerId = await peerIdFromKeys(id.pubkey.Data)
68
+
69
+ if (!peerId.equals(peerIdFromBytes(id.id))) {
70
+ throw new Error('Public key did not match id')
71
+ }
72
+ } catch (err: any) {
73
+ log.error(err)
74
+ throw new InvalidCryptoExchangeError('Remote did not provide its public key')
75
+ }
76
+
77
+ if (remoteId != null && !peerId.equals(remoteId)) {
78
+ throw new UnexpectedPeerError()
79
+ }
80
+
81
+ log('plaintext key exchange completed successfully with peer %p', peerId)
82
+
83
+ shake.rest()
84
+ return {
85
+ conn: shake.stream,
86
+ remotePeer: peerId,
87
+ remoteEarlyData: new Uint8Array()
88
+ }
89
+ }
90
+
91
+ export class Plaintext implements ConnectionEncrypter {
92
+ public protocol: string = PROTOCOL
93
+
94
+ async secureInbound (localId: PeerId, conn: Duplex<Uint8Array>, remoteId?: PeerId): Promise<SecuredConnection> {
95
+ return await encrypt(localId, conn, remoteId)
96
+ }
97
+
98
+ async secureOutbound (localId: PeerId, conn: Duplex<Uint8Array>, remoteId: PeerId): Promise<SecuredConnection> {
99
+ return await encrypt(localId, conn, remoteId)
100
+ }
101
+ }
File without changes
@@ -0,0 +1,68 @@
1
+ /* eslint-disable import/export */
2
+ /* eslint-disable @typescript-eslint/no-namespace */
3
+
4
+ import { encodeMessage, decodeMessage, message, bytes, enumeration } from 'protons-runtime'
5
+ import type { Codec } from 'protons-runtime'
6
+
7
+ export interface Exchange {
8
+ id?: Uint8Array
9
+ pubkey?: PublicKey
10
+ }
11
+
12
+ export namespace Exchange {
13
+ export const codec = (): Codec<Exchange> => {
14
+ return message<Exchange>({
15
+ 1: { name: 'id', codec: bytes, optional: true },
16
+ 2: { name: 'pubkey', codec: PublicKey.codec(), optional: true }
17
+ })
18
+ }
19
+
20
+ export const encode = (obj: Exchange): Uint8Array => {
21
+ return encodeMessage(obj, Exchange.codec())
22
+ }
23
+
24
+ export const decode = (buf: Uint8Array): Exchange => {
25
+ return decodeMessage(buf, Exchange.codec())
26
+ }
27
+ }
28
+
29
+ export enum KeyType {
30
+ RSA = 'RSA',
31
+ Ed25519 = 'Ed25519',
32
+ Secp256k1 = 'Secp256k1',
33
+ ECDSA = 'ECDSA'
34
+ }
35
+
36
+ enum __KeyTypeValues {
37
+ RSA = 0,
38
+ Ed25519 = 1,
39
+ Secp256k1 = 2,
40
+ ECDSA = 3
41
+ }
42
+
43
+ export namespace KeyType {
44
+ export const codec = () => {
45
+ return enumeration<typeof KeyType>(__KeyTypeValues)
46
+ }
47
+ }
48
+ export interface PublicKey {
49
+ Type: KeyType
50
+ Data: Uint8Array
51
+ }
52
+
53
+ export namespace PublicKey {
54
+ export const codec = (): Codec<PublicKey> => {
55
+ return message<PublicKey>({
56
+ 1: { name: 'Type', codec: KeyType.codec() },
57
+ 2: { name: 'Data', codec: bytes }
58
+ })
59
+ }
60
+
61
+ export const encode = (obj: PublicKey): Uint8Array => {
62
+ return encodeMessage(obj, PublicKey.codec())
63
+ }
64
+
65
+ export const decode = (buf: Uint8Array): PublicKey => {
66
+ return decodeMessage(buf, PublicKey.codec())
67
+ }
68
+ }
@@ -1,18 +1,18 @@
1
- 'use strict'
2
-
3
- // @ts-ignore node-forge types not exported
4
- require('node-forge/lib/pkcs7')
5
- // @ts-ignore node-forge types not exported
6
- require('node-forge/lib/pbe')
7
- // @ts-ignore node-forge types not exported
8
- const forge = require('node-forge/lib/forge')
9
- const { certificateForKey, findAsync } = require('./util')
10
- const errcode = require('err-code')
11
- const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
12
- const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
13
- const { codes } = require('../errors')
14
-
15
- const privates = new WeakMap()
1
+ import 'node-forge/lib/pkcs7.js'
2
+ import 'node-forge/lib/pbe.js'
3
+ // @ts-expect-error types are missing
4
+ import forge from 'node-forge/lib/forge.js'
5
+ import { certificateForKey, findAsync } from './util.js'
6
+ import errCode from 'err-code'
7
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
8
+ import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
9
+ import { codes } from '../errors.js'
10
+ import { logger } from '@libp2p/logger'
11
+ import type { KeyChain } from './index.js'
12
+
13
+ const log = logger('libp2p:keychain:cms')
14
+
15
+ const privates = new WeakMap<object, { dek: string }>()
16
16
 
17
17
  /**
18
18
  * Cryptographic Message Syntax (aka PKCS #7)
@@ -23,16 +23,15 @@ const privates = new WeakMap()
23
23
  *
24
24
  * See RFC 5652 for all the details.
25
25
  */
26
- class CMS {
26
+ export class CMS {
27
+ private readonly keychain: KeyChain
28
+
27
29
  /**
28
30
  * Creates a new instance with a keychain
29
- *
30
- * @param {import('./index')} keychain - the available keys
31
- * @param {string} dek
32
31
  */
33
- constructor (keychain, dek) {
34
- if (!keychain) {
35
- throw errcode(new Error('keychain is required'), codes.ERR_KEYCHAIN_REQUIRED)
32
+ constructor (keychain: KeyChain, dek: string) {
33
+ if (keychain == null) {
34
+ throw errCode(new Error('keychain is required'), codes.ERR_KEYCHAIN_REQUIRED)
36
35
  }
37
36
 
38
37
  this.keychain = keychain
@@ -43,20 +42,21 @@ class CMS {
43
42
  * Creates some protected data.
44
43
  *
45
44
  * The output Uint8Array contains the PKCS #7 message in DER.
46
- *
47
- * @param {string} name - The local key name.
48
- * @param {Uint8Array} plain - The data to encrypt.
49
- * @returns {Promise<Uint8Array>}
50
45
  */
51
- async encrypt (name, plain) {
46
+ async encrypt (name: string, plain: Uint8Array): Promise<Uint8Array> {
52
47
  if (!(plain instanceof Uint8Array)) {
53
- throw errcode(new Error('Plain data must be a Uint8Array'), codes.ERR_INVALID_PARAMETERS)
48
+ throw errCode(new Error('Plain data must be a Uint8Array'), codes.ERR_INVALID_PARAMETERS)
54
49
  }
55
50
 
56
51
  const key = await this.keychain.findKeyByName(name)
57
- const pem = await this.keychain._getPrivateKey(name)
58
- /** @type {string} */
59
- const dek = privates.get(this).dek
52
+ const pem = await this.keychain.getPrivateKey(name)
53
+ const cached = privates.get(this)
54
+
55
+ if (cached == null) {
56
+ throw errCode(new Error('dek missing'), codes.ERR_INVALID_PARAMETERS)
57
+ }
58
+
59
+ const dek = cached.dek
60
60
  const privateKey = forge.pki.decryptRsaPrivateKey(pem, dek)
61
61
  const certificate = await certificateForKey(key, privateKey)
62
62
 
@@ -76,71 +76,75 @@ class CMS {
76
76
  *
77
77
  * The keychain must contain one of the keys used to encrypt the data. If none of the keys
78
78
  * exists, an Error is returned with the property 'missingKeys'. It is array of key ids.
79
- *
80
- * @param {Uint8Array} cmsData - The CMS encrypted data to decrypt.
81
- * @returns {Promise<Uint8Array>}
82
79
  */
83
- async decrypt (cmsData) {
80
+ async decrypt (cmsData: Uint8Array): Promise<Uint8Array> {
84
81
  if (!(cmsData instanceof Uint8Array)) {
85
- throw errcode(new Error('CMS data is required'), codes.ERR_INVALID_PARAMETERS)
82
+ throw errCode(new Error('CMS data is required'), codes.ERR_INVALID_PARAMETERS)
86
83
  }
87
84
 
88
- let cms
85
+ let cms: any
89
86
  try {
90
87
  const buf = forge.util.createBuffer(uint8ArrayToString(cmsData, 'ascii'))
91
88
  const obj = forge.asn1.fromDer(buf)
92
- // @ts-ignore not defined
89
+
93
90
  cms = forge.pkcs7.messageFromAsn1(obj)
94
- } catch (/** @type {any} */ err) {
95
- throw errcode(new Error('Invalid CMS: ' + err.message), codes.ERR_INVALID_CMS)
91
+ } catch (err: any) {
92
+ log.error(err)
93
+ throw errCode(new Error('Invalid CMS'), codes.ERR_INVALID_CMS)
96
94
  }
97
95
 
98
96
  // Find a recipient whose key we hold. We only deal with recipient certs
99
97
  // issued by ipfs (O=ipfs).
100
- const recipients = cms.recipients
101
- // @ts-ignore cms types not defined
98
+ const recipients: any = cms.recipients
99
+ // @ts-expect-error cms types not defined
102
100
  .filter(r => r.issuer.find(a => a.shortName === 'O' && a.value === 'ipfs'))
103
- // @ts-ignore cms types not defined
101
+ // @ts-expect-error cms types not defined
104
102
  .filter(r => r.issuer.find(a => a.shortName === 'CN'))
105
- // @ts-ignore cms types not defined
103
+ // @ts-expect-error cms types not defined
106
104
  .map(r => {
107
105
  return {
108
106
  recipient: r,
109
- // @ts-ignore cms types not defined
107
+ // @ts-expect-error cms types not defined
110
108
  keyId: r.issuer.find(a => a.shortName === 'CN').value
111
109
  }
112
110
  })
113
111
 
114
- const r = await findAsync(recipients, async (recipient) => {
112
+ const r = await findAsync(recipients, async (recipient: any) => {
115
113
  try {
116
114
  const key = await this.keychain.findKeyById(recipient.keyId)
117
- if (key) return true
118
- } catch (/** @type {any} */ err) {
115
+ if (key != null) {
116
+ return true
117
+ }
118
+ } catch (err: any) {
119
119
  return false
120
120
  }
121
121
  return false
122
122
  })
123
123
 
124
- if (!r) {
125
- // @ts-ignore cms types not defined
126
- const missingKeys = recipients.map(r => r.keyId)
127
- throw errcode(new Error('Decryption needs one of the key(s): ' + missingKeys.join(', ')), codes.ERR_MISSING_KEYS, {
124
+ if (r == null) {
125
+ // @ts-expect-error cms types not defined
126
+ const missingKeys: string[] = recipients.map(r => r.keyId)
127
+ throw errCode(new Error(`Decryption needs one of the key(s): ${missingKeys.join(', ')}`), codes.ERR_MISSING_KEYS, {
128
128
  missingKeys
129
129
  })
130
130
  }
131
131
 
132
132
  const key = await this.keychain.findKeyById(r.keyId)
133
133
 
134
- if (!key) {
135
- throw errcode(new Error('No key available to decrypto'), codes.ERR_NO_KEY)
134
+ if (key == null) {
135
+ throw errCode(new Error('No key available to decrypto'), codes.ERR_NO_KEY)
136
+ }
137
+
138
+ const pem = await this.keychain.getPrivateKey(key.name)
139
+ const cached = privates.get(this)
140
+
141
+ if (cached == null) {
142
+ throw errCode(new Error('dek missing'), codes.ERR_INVALID_PARAMETERS)
136
143
  }
137
144
 
138
- const pem = await this.keychain._getPrivateKey(key.name)
139
- const dek = privates.get(this).dek
145
+ const dek = cached.dek
140
146
  const privateKey = forge.pki.decryptRsaPrivateKey(pem, dek)
141
147
  cms.decrypt(r.recipient, privateKey)
142
148
  return uint8ArrayFromString(cms.content.getBytes(), 'ascii')
143
149
  }
144
150
  }
145
-
146
- module.exports = CMS