libp2p 0.46.21 → 1.0.0-06e6d235f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -48
- package/dist/index.min.js +40 -28
- package/dist/src/address-manager/index.d.ts +4 -5
- package/dist/src/address-manager/index.d.ts.map +1 -1
- package/dist/src/address-manager/index.js +3 -3
- package/dist/src/address-manager/index.js.map +1 -1
- package/dist/src/components.d.ts +4 -15
- package/dist/src/components.d.ts.map +1 -1
- package/dist/src/components.js +2 -2
- package/dist/src/components.js.map +1 -1
- package/dist/src/config/connection-gater.browser.d.ts +1 -1
- package/dist/src/config/connection-gater.browser.d.ts.map +1 -1
- package/dist/src/config/connection-gater.browser.js.map +1 -1
- package/dist/src/config/connection-gater.d.ts +1 -1
- package/dist/src/config/connection-gater.d.ts.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +1 -2
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection/index.d.ts +4 -6
- package/dist/src/connection/index.d.ts.map +1 -1
- package/dist/src/connection/index.js +11 -13
- package/dist/src/connection/index.js.map +1 -1
- package/dist/src/connection-manager/auto-dial.d.ts +3 -6
- package/dist/src/connection-manager/auto-dial.d.ts.map +1 -1
- package/dist/src/connection-manager/auto-dial.js +21 -21
- package/dist/src/connection-manager/auto-dial.js.map +1 -1
- package/dist/src/connection-manager/connection-pruner.d.ts +3 -5
- package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
- package/dist/src/connection-manager/connection-pruner.js +8 -8
- package/dist/src/connection-manager/connection-pruner.js.map +1 -1
- package/dist/src/connection-manager/constants.defaults.d.ts +0 -4
- package/dist/src/connection-manager/constants.defaults.d.ts.map +1 -1
- package/dist/src/connection-manager/constants.defaults.js +0 -4
- package/dist/src/connection-manager/constants.defaults.js.map +1 -1
- package/dist/src/connection-manager/dial-queue.d.ts +3 -10
- package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
- package/dist/src/connection-manager/dial-queue.js +30 -38
- package/dist/src/connection-manager/dial-queue.js.map +1 -1
- package/dist/src/connection-manager/index.d.ts +3 -18
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +17 -19
- package/dist/src/connection-manager/index.js.map +1 -1
- package/dist/src/connection-manager/utils.js +1 -1
- package/dist/src/connection-manager/utils.js.map +1 -1
- package/dist/src/content-routing/index.d.ts +1 -5
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +2 -2
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/content-routing/utils.d.ts +1 -2
- package/dist/src/content-routing/utils.d.ts.map +1 -1
- package/dist/src/content-routing/utils.js +1 -1
- package/dist/src/content-routing/utils.js.map +1 -1
- package/dist/src/errors.d.ts +0 -2
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +0 -2
- package/dist/src/errors.js.map +1 -1
- package/dist/src/get-peer.d.ts +1 -1
- package/dist/src/get-peer.d.ts.map +1 -1
- package/dist/src/get-peer.js +1 -5
- package/dist/src/get-peer.js.map +1 -1
- package/dist/src/index.d.ts +5 -16
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/libp2p.d.ts +4 -12
- package/dist/src/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js +30 -65
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/peer-routing.d.ts +6 -6
- package/dist/src/peer-routing.d.ts.map +1 -1
- package/dist/src/peer-routing.js +12 -9
- package/dist/src/peer-routing.js.map +1 -1
- package/dist/src/registrar.d.ts +5 -7
- package/dist/src/registrar.d.ts.map +1 -1
- package/dist/src/registrar.js +4 -4
- package/dist/src/registrar.js.map +1 -1
- package/dist/src/transport-manager.d.ts +5 -9
- package/dist/src/transport-manager.d.ts.map +1 -1
- package/dist/src/transport-manager.js +12 -13
- package/dist/src/transport-manager.js.map +1 -1
- package/dist/src/upgrader.d.ts +8 -19
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +75 -38
- package/dist/src/upgrader.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +41 -110
- package/src/address-manager/index.ts +6 -9
- package/src/components.ts +5 -16
- package/src/config/connection-gater.browser.ts +1 -1
- package/src/config/connection-gater.ts +1 -1
- package/src/config.ts +1 -2
- package/src/connection/index.ts +12 -17
- package/src/connection-manager/auto-dial.ts +23 -26
- package/src/connection-manager/connection-pruner.ts +10 -12
- package/src/connection-manager/constants.defaults.ts +0 -5
- package/src/connection-manager/dial-queue.ts +31 -46
- package/src/connection-manager/index.ts +19 -37
- package/src/connection-manager/utils.ts +1 -1
- package/src/content-routing/index.ts +3 -7
- package/src/content-routing/utils.ts +2 -3
- package/src/errors.ts +0 -2
- package/src/get-peer.ts +2 -7
- package/src/index.ts +6 -17
- package/src/libp2p.ts +32 -80
- package/src/peer-routing.ts +16 -15
- package/src/registrar.ts +8 -12
- package/src/transport-manager.ts +15 -22
- package/src/upgrader.ts +110 -64
- package/src/version.ts +1 -1
- package/dist/src/autonat/constants.d.ts +0 -18
- package/dist/src/autonat/constants.d.ts.map +0 -1
- package/dist/src/autonat/constants.js +0 -18
- package/dist/src/autonat/constants.js.map +0 -1
- package/dist/src/autonat/index.d.ts +0 -62
- package/dist/src/autonat/index.d.ts.map +0 -1
- package/dist/src/autonat/index.js +0 -447
- package/dist/src/autonat/index.js.map +0 -1
- package/dist/src/autonat/pb/index.d.ts +0 -57
- package/dist/src/autonat/pb/index.d.ts.map +0 -1
- package/dist/src/autonat/pb/index.js +0 -250
- package/dist/src/autonat/pb/index.js.map +0 -1
- package/dist/src/circuit-relay/constants.d.ts +0 -50
- package/dist/src/circuit-relay/constants.d.ts.map +0 -1
- package/dist/src/circuit-relay/constants.js +0 -56
- package/dist/src/circuit-relay/constants.js.map +0 -1
- package/dist/src/circuit-relay/index.d.ts +0 -55
- package/dist/src/circuit-relay/index.d.ts.map +0 -1
- package/dist/src/circuit-relay/index.js +0 -38
- package/dist/src/circuit-relay/index.js.map +0 -1
- package/dist/src/circuit-relay/pb/index.d.ts +0 -93
- package/dist/src/circuit-relay/pb/index.d.ts.map +0 -1
- package/dist/src/circuit-relay/pb/index.js +0 -425
- package/dist/src/circuit-relay/pb/index.js.map +0 -1
- package/dist/src/circuit-relay/server/advert-service.d.ts +0 -43
- package/dist/src/circuit-relay/server/advert-service.d.ts.map +0 -1
- package/dist/src/circuit-relay/server/advert-service.js +0 -73
- package/dist/src/circuit-relay/server/advert-service.js.map +0 -1
- package/dist/src/circuit-relay/server/index.d.ts +0 -65
- package/dist/src/circuit-relay/server/index.d.ts.map +0 -1
- package/dist/src/circuit-relay/server/index.js +0 -312
- package/dist/src/circuit-relay/server/index.js.map +0 -1
- package/dist/src/circuit-relay/server/reservation-store.d.ts +0 -49
- package/dist/src/circuit-relay/server/reservation-store.d.ts.map +0 -1
- package/dist/src/circuit-relay/server/reservation-store.js +0 -65
- package/dist/src/circuit-relay/server/reservation-store.js.map +0 -1
- package/dist/src/circuit-relay/server/reservation-voucher.d.ts +0 -18
- package/dist/src/circuit-relay/server/reservation-voucher.d.ts.map +0 -1
- package/dist/src/circuit-relay/server/reservation-voucher.js +0 -36
- package/dist/src/circuit-relay/server/reservation-voucher.js.map +0 -1
- package/dist/src/circuit-relay/transport/discovery.d.ts +0 -45
- package/dist/src/circuit-relay/transport/discovery.d.ts.map +0 -1
- package/dist/src/circuit-relay/transport/discovery.js +0 -97
- package/dist/src/circuit-relay/transport/discovery.js.map +0 -1
- package/dist/src/circuit-relay/transport/index.d.ts +0 -57
- package/dist/src/circuit-relay/transport/index.d.ts.map +0 -1
- package/dist/src/circuit-relay/transport/index.js +0 -276
- package/dist/src/circuit-relay/transport/index.js.map +0 -1
- package/dist/src/circuit-relay/transport/listener.d.ts +0 -9
- package/dist/src/circuit-relay/transport/listener.d.ts.map +0 -1
- package/dist/src/circuit-relay/transport/listener.js +0 -66
- package/dist/src/circuit-relay/transport/listener.js.map +0 -1
- package/dist/src/circuit-relay/transport/reservation-store.d.ts +0 -72
- package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +0 -1
- package/dist/src/circuit-relay/transport/reservation-store.js +0 -209
- package/dist/src/circuit-relay/transport/reservation-store.js.map +0 -1
- package/dist/src/circuit-relay/utils.d.ts +0 -13
- package/dist/src/circuit-relay/utils.d.ts.map +0 -1
- package/dist/src/circuit-relay/utils.js +0 -108
- package/dist/src/circuit-relay/utils.js.map +0 -1
- package/dist/src/dcutr/dcutr.d.ts +0 -43
- package/dist/src/dcutr/dcutr.d.ts.map +0 -1
- package/dist/src/dcutr/dcutr.js +0 -313
- package/dist/src/dcutr/dcutr.js.map +0 -1
- package/dist/src/dcutr/index.d.ts +0 -92
- package/dist/src/dcutr/index.d.ts.map +0 -1
- package/dist/src/dcutr/index.js +0 -63
- package/dist/src/dcutr/index.js.map +0 -1
- package/dist/src/dcutr/pb/message.d.ts +0 -20
- package/dist/src/dcutr/pb/message.d.ts.map +0 -1
- package/dist/src/dcutr/pb/message.js +0 -77
- package/dist/src/dcutr/pb/message.js.map +0 -1
- package/dist/src/dcutr/utils.d.ts +0 -8
- package/dist/src/dcutr/utils.d.ts.map +0 -1
- package/dist/src/dcutr/utils.js +0 -27
- package/dist/src/dcutr/utils.js.map +0 -1
- package/dist/src/fetch/constants.d.ts +0 -3
- package/dist/src/fetch/constants.d.ts.map +0 -1
- package/dist/src/fetch/constants.js +0 -4
- package/dist/src/fetch/constants.js.map +0 -1
- package/dist/src/fetch/index.d.ts +0 -61
- package/dist/src/fetch/index.d.ts.map +0 -1
- package/dist/src/fetch/index.js +0 -205
- package/dist/src/fetch/index.js.map +0 -1
- package/dist/src/fetch/pb/proto.d.ts +0 -28
- package/dist/src/fetch/pb/proto.d.ts.map +0 -1
- package/dist/src/fetch/pb/proto.js +0 -120
- package/dist/src/fetch/pb/proto.js.map +0 -1
- package/dist/src/identify/consts.d.ts +0 -10
- package/dist/src/identify/consts.d.ts.map +0 -1
- package/dist/src/identify/consts.js +0 -11
- package/dist/src/identify/consts.js.map +0 -1
- package/dist/src/identify/identify.d.ts +0 -54
- package/dist/src/identify/identify.d.ts.map +0 -1
- package/dist/src/identify/identify.js +0 -447
- package/dist/src/identify/identify.js.map +0 -1
- package/dist/src/identify/index.d.ts +0 -72
- package/dist/src/identify/index.d.ts.map +0 -1
- package/dist/src/identify/index.js +0 -15
- package/dist/src/identify/index.js.map +0 -1
- package/dist/src/identify/pb/message.d.ts +0 -17
- package/dist/src/identify/pb/message.d.ts.map +0 -1
- package/dist/src/identify/pb/message.js +0 -98
- package/dist/src/identify/pb/message.js.map +0 -1
- package/dist/src/insecure/index.d.ts +0 -26
- package/dist/src/insecure/index.d.ts.map +0 -1
- package/dist/src/insecure/index.js +0 -110
- package/dist/src/insecure/index.js.map +0 -1
- package/dist/src/insecure/pb/proto.d.ts +0 -30
- package/dist/src/insecure/pb/proto.d.ts.map +0 -1
- package/dist/src/insecure/pb/proto.js +0 -127
- package/dist/src/insecure/pb/proto.js.map +0 -1
- package/dist/src/ping/constants.d.ts +0 -9
- package/dist/src/ping/constants.d.ts.map +0 -1
- package/dist/src/ping/constants.js +0 -15
- package/dist/src/ping/constants.js.map +0 -1
- package/dist/src/ping/index.d.ts +0 -24
- package/dist/src/ping/index.d.ts.map +0 -1
- package/dist/src/ping/index.js +0 -115
- package/dist/src/ping/index.js.map +0 -1
- package/dist/src/pnet/crypto.d.ts +0 -18
- package/dist/src/pnet/crypto.d.ts.map +0 -1
- package/dist/src/pnet/crypto.js +0 -60
- package/dist/src/pnet/crypto.js.map +0 -1
- package/dist/src/pnet/errors.d.ts +0 -6
- package/dist/src/pnet/errors.d.ts.map +0 -1
- package/dist/src/pnet/errors.js +0 -6
- package/dist/src/pnet/errors.js.map +0 -1
- package/dist/src/pnet/index.d.ts +0 -31
- package/dist/src/pnet/index.d.ts.map +0 -1
- package/dist/src/pnet/index.js +0 -97
- package/dist/src/pnet/index.js.map +0 -1
- package/dist/src/pnet/key-generator.d.ts +0 -11
- package/dist/src/pnet/key-generator.d.ts.map +0 -1
- package/dist/src/pnet/key-generator.js +0 -22
- package/dist/src/pnet/key-generator.js.map +0 -1
- package/dist/src/upnp-nat/index.d.ts +0 -71
- package/dist/src/upnp-nat/index.d.ts.map +0 -1
- package/dist/src/upnp-nat/index.js +0 -136
- package/dist/src/upnp-nat/index.js.map +0 -1
- package/dist/src/utils/peer-job-queue.d.ts +0 -33
- package/dist/src/utils/peer-job-queue.d.ts.map +0 -1
- package/dist/src/utils/peer-job-queue.js +0 -82
- package/dist/src/utils/peer-job-queue.js.map +0 -1
- package/dist/typedoc-urls.json +0 -71
- package/src/autonat/constants.ts +0 -19
- package/src/autonat/index.ts +0 -597
- package/src/autonat/pb/index.proto +0 -35
- package/src/autonat/pb/index.ts +0 -320
- package/src/circuit-relay/constants.ts +0 -72
- package/src/circuit-relay/index.ts +0 -59
- package/src/circuit-relay/pb/index.proto +0 -67
- package/src/circuit-relay/pb/index.ts +0 -539
- package/src/circuit-relay/server/advert-service.ts +0 -108
- package/src/circuit-relay/server/index.ts +0 -443
- package/src/circuit-relay/server/reservation-store.ts +0 -116
- package/src/circuit-relay/server/reservation-voucher.ts +0 -51
- package/src/circuit-relay/transport/discovery.ts +0 -136
- package/src/circuit-relay/transport/index.ts +0 -396
- package/src/circuit-relay/transport/listener.ts +0 -97
- package/src/circuit-relay/transport/reservation-store.ts +0 -312
- package/src/circuit-relay/utils.ts +0 -136
- package/src/dcutr/dcutr.ts +0 -378
- package/src/dcutr/index.ts +0 -102
- package/src/dcutr/pb/message.proto +0 -12
- package/src/dcutr/pb/message.ts +0 -96
- package/src/dcutr/utils.ts +0 -33
- package/src/fetch/README.md +0 -41
- package/src/fetch/constants.ts +0 -3
- package/src/fetch/index.ts +0 -315
- package/src/fetch/pb/proto.proto +0 -15
- package/src/fetch/pb/proto.ts +0 -153
- package/src/identify/README.md +0 -13
- package/src/identify/consts.ts +0 -12
- package/src/identify/identify.ts +0 -561
- package/src/identify/index.ts +0 -90
- package/src/identify/pb/message.proto +0 -30
- package/src/identify/pb/message.ts +0 -126
- package/src/insecure/index.ts +0 -138
- package/src/insecure/pb/proto.proto +0 -18
- package/src/insecure/pb/proto.ts +0 -161
- package/src/ping/constants.ts +0 -15
- package/src/ping/index.ts +0 -170
- package/src/pnet/README.md +0 -68
- package/src/pnet/crypto.ts +0 -67
- package/src/pnet/errors.ts +0 -5
- package/src/pnet/index.ts +0 -126
- package/src/pnet/key-generator.ts +0 -23
- package/src/upnp-nat/index.ts +0 -212
- package/src/utils/peer-job-queue.ts +0 -119
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/* eslint-disable import/export */
|
|
2
|
-
/* eslint-disable complexity */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-namespace */
|
|
4
|
-
/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */
|
|
5
|
-
/* eslint-disable @typescript-eslint/no-empty-interface */
|
|
6
|
-
|
|
7
|
-
import { encodeMessage, decodeMessage, message } from 'protons-runtime'
|
|
8
|
-
import type { Codec } from 'protons-runtime'
|
|
9
|
-
import type { Uint8ArrayList } from 'uint8arraylist'
|
|
10
|
-
|
|
11
|
-
export interface Identify {
|
|
12
|
-
protocolVersion?: string
|
|
13
|
-
agentVersion?: string
|
|
14
|
-
publicKey?: Uint8Array
|
|
15
|
-
listenAddrs: Uint8Array[]
|
|
16
|
-
observedAddr?: Uint8Array
|
|
17
|
-
protocols: string[]
|
|
18
|
-
signedPeerRecord?: Uint8Array
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export namespace Identify {
|
|
22
|
-
let _codec: Codec<Identify>
|
|
23
|
-
|
|
24
|
-
export const codec = (): Codec<Identify> => {
|
|
25
|
-
if (_codec == null) {
|
|
26
|
-
_codec = message<Identify>((obj, w, opts = {}) => {
|
|
27
|
-
if (opts.lengthDelimited !== false) {
|
|
28
|
-
w.fork()
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (obj.protocolVersion != null) {
|
|
32
|
-
w.uint32(42)
|
|
33
|
-
w.string(obj.protocolVersion)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (obj.agentVersion != null) {
|
|
37
|
-
w.uint32(50)
|
|
38
|
-
w.string(obj.agentVersion)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (obj.publicKey != null) {
|
|
42
|
-
w.uint32(10)
|
|
43
|
-
w.bytes(obj.publicKey)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (obj.listenAddrs != null) {
|
|
47
|
-
for (const value of obj.listenAddrs) {
|
|
48
|
-
w.uint32(18)
|
|
49
|
-
w.bytes(value)
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (obj.observedAddr != null) {
|
|
54
|
-
w.uint32(34)
|
|
55
|
-
w.bytes(obj.observedAddr)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (obj.protocols != null) {
|
|
59
|
-
for (const value of obj.protocols) {
|
|
60
|
-
w.uint32(26)
|
|
61
|
-
w.string(value)
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (obj.signedPeerRecord != null) {
|
|
66
|
-
w.uint32(66)
|
|
67
|
-
w.bytes(obj.signedPeerRecord)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (opts.lengthDelimited !== false) {
|
|
71
|
-
w.ldelim()
|
|
72
|
-
}
|
|
73
|
-
}, (reader, length) => {
|
|
74
|
-
const obj: any = {
|
|
75
|
-
listenAddrs: [],
|
|
76
|
-
protocols: []
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const end = length == null ? reader.len : reader.pos + length
|
|
80
|
-
|
|
81
|
-
while (reader.pos < end) {
|
|
82
|
-
const tag = reader.uint32()
|
|
83
|
-
|
|
84
|
-
switch (tag >>> 3) {
|
|
85
|
-
case 5:
|
|
86
|
-
obj.protocolVersion = reader.string()
|
|
87
|
-
break
|
|
88
|
-
case 6:
|
|
89
|
-
obj.agentVersion = reader.string()
|
|
90
|
-
break
|
|
91
|
-
case 1:
|
|
92
|
-
obj.publicKey = reader.bytes()
|
|
93
|
-
break
|
|
94
|
-
case 2:
|
|
95
|
-
obj.listenAddrs.push(reader.bytes())
|
|
96
|
-
break
|
|
97
|
-
case 4:
|
|
98
|
-
obj.observedAddr = reader.bytes()
|
|
99
|
-
break
|
|
100
|
-
case 3:
|
|
101
|
-
obj.protocols.push(reader.string())
|
|
102
|
-
break
|
|
103
|
-
case 8:
|
|
104
|
-
obj.signedPeerRecord = reader.bytes()
|
|
105
|
-
break
|
|
106
|
-
default:
|
|
107
|
-
reader.skipType(tag & 7)
|
|
108
|
-
break
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return obj
|
|
113
|
-
})
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return _codec
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
export const encode = (obj: Partial<Identify>): Uint8Array => {
|
|
120
|
-
return encodeMessage(obj, Identify.codec())
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export const decode = (buf: Uint8Array | Uint8ArrayList): Identify => {
|
|
124
|
-
return decodeMessage(buf, Identify.codec())
|
|
125
|
-
}
|
|
126
|
-
}
|
package/src/insecure/index.ts
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @packageDocumentation
|
|
3
|
-
*
|
|
4
|
-
* A connection encrypter that does no connection encryption.
|
|
5
|
-
*
|
|
6
|
-
* This should not be used in production should be used for research purposes only.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
*
|
|
10
|
-
* ```typescript
|
|
11
|
-
* import { createLibp2p } from 'libp2p'
|
|
12
|
-
* import { plaintext } from 'libp2p/insecure'
|
|
13
|
-
*
|
|
14
|
-
* // Create a Uint8Array and write the swarm key to it
|
|
15
|
-
* const swarmKey = new Uint8Array(95)
|
|
16
|
-
* generateKey(swarmKey)
|
|
17
|
-
*
|
|
18
|
-
* const node = await createLibp2p({
|
|
19
|
-
* // ...other options
|
|
20
|
-
* connectionEncryption: [plaintext()]
|
|
21
|
-
* })
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
import { UnexpectedPeerError, InvalidCryptoExchangeError } from '@libp2p/interface/errors'
|
|
26
|
-
import { logger } from '@libp2p/logger'
|
|
27
|
-
import { peerIdFromBytes, peerIdFromKeys } from '@libp2p/peer-id'
|
|
28
|
-
import { handshake } from 'it-handshake'
|
|
29
|
-
import * as lp from 'it-length-prefixed'
|
|
30
|
-
import map from 'it-map'
|
|
31
|
-
import { Exchange, KeyType } from './pb/proto.js'
|
|
32
|
-
import type { ConnectionEncrypter, SecuredConnection } from '@libp2p/interface/connection-encrypter'
|
|
33
|
-
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
34
|
-
import type { Duplex, Source } from 'it-stream-types'
|
|
35
|
-
import type { Uint8ArrayList } from 'uint8arraylist'
|
|
36
|
-
|
|
37
|
-
const log = logger('libp2p:plaintext')
|
|
38
|
-
const PROTOCOL = '/plaintext/2.0.0'
|
|
39
|
-
|
|
40
|
-
function lpEncodeExchange (exchange: Exchange): Uint8ArrayList {
|
|
41
|
-
const pb = Exchange.encode(exchange)
|
|
42
|
-
|
|
43
|
-
return lp.encode.single(pb)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Encrypt connection
|
|
48
|
-
*/
|
|
49
|
-
async function encrypt (localId: PeerId, conn: Duplex<AsyncGenerator<Uint8Array>, Source<Uint8Array>, Promise<void>>, remoteId?: PeerId): Promise<SecuredConnection> {
|
|
50
|
-
const shake = handshake(conn)
|
|
51
|
-
|
|
52
|
-
let type = KeyType.RSA
|
|
53
|
-
|
|
54
|
-
if (localId.type === 'Ed25519') {
|
|
55
|
-
type = KeyType.Ed25519
|
|
56
|
-
} else if (localId.type === 'secp256k1') {
|
|
57
|
-
type = KeyType.Secp256k1
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Encode the public key and write it to the remote peer
|
|
61
|
-
shake.write(
|
|
62
|
-
lpEncodeExchange({
|
|
63
|
-
id: localId.toBytes(),
|
|
64
|
-
pubkey: {
|
|
65
|
-
Type: type,
|
|
66
|
-
Data: localId.publicKey ?? new Uint8Array(0)
|
|
67
|
-
}
|
|
68
|
-
}).subarray()
|
|
69
|
-
)
|
|
70
|
-
|
|
71
|
-
log('write pubkey exchange to peer %p', remoteId)
|
|
72
|
-
|
|
73
|
-
// Get the Exchange message
|
|
74
|
-
const response = (await lp.decode.fromReader(shake.reader).next()).value
|
|
75
|
-
|
|
76
|
-
if (response == null) {
|
|
77
|
-
throw new Error('Did not read response')
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const id = Exchange.decode(response)
|
|
81
|
-
log('read pubkey exchange from peer %p', remoteId)
|
|
82
|
-
|
|
83
|
-
let peerId
|
|
84
|
-
try {
|
|
85
|
-
if (id.pubkey == null) {
|
|
86
|
-
throw new Error('Public key missing')
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (id.pubkey.Data.length === 0) {
|
|
90
|
-
throw new Error('Public key data too short')
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (id.id == null) {
|
|
94
|
-
throw new Error('Remote id missing')
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
peerId = await peerIdFromKeys(id.pubkey.Data)
|
|
98
|
-
|
|
99
|
-
if (!peerId.equals(peerIdFromBytes(id.id))) {
|
|
100
|
-
throw new Error('Public key did not match id')
|
|
101
|
-
}
|
|
102
|
-
} catch (err: any) {
|
|
103
|
-
log.error(err)
|
|
104
|
-
throw new InvalidCryptoExchangeError('Remote did not provide its public key')
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (remoteId != null && !peerId.equals(remoteId)) {
|
|
108
|
-
throw new UnexpectedPeerError()
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
log('plaintext key exchange completed successfully with peer %p', peerId)
|
|
112
|
-
|
|
113
|
-
shake.rest()
|
|
114
|
-
|
|
115
|
-
return {
|
|
116
|
-
conn: {
|
|
117
|
-
sink: shake.stream.sink,
|
|
118
|
-
source: map(shake.stream.source, (buf) => buf.subarray())
|
|
119
|
-
},
|
|
120
|
-
remotePeer: peerId
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
class Plaintext implements ConnectionEncrypter {
|
|
125
|
-
public protocol: string = PROTOCOL
|
|
126
|
-
|
|
127
|
-
async secureInbound (localId: PeerId, conn: Duplex<AsyncGenerator<Uint8Array>, Source<Uint8Array>, Promise<void>>, remoteId?: PeerId): Promise<SecuredConnection> {
|
|
128
|
-
return encrypt(localId, conn, remoteId)
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
async secureOutbound (localId: PeerId, conn: Duplex<AsyncGenerator<Uint8Array>, Source<Uint8Array>, Promise<void>>, remoteId?: PeerId): Promise<SecuredConnection> {
|
|
132
|
-
return encrypt(localId, conn, remoteId)
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export function plaintext (): () => ConnectionEncrypter {
|
|
137
|
-
return () => new Plaintext()
|
|
138
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
syntax = "proto3";
|
|
2
|
-
|
|
3
|
-
message Exchange {
|
|
4
|
-
optional bytes id = 1;
|
|
5
|
-
optional PublicKey pubkey = 2;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
enum KeyType {
|
|
9
|
-
RSA = 0;
|
|
10
|
-
Ed25519 = 1;
|
|
11
|
-
Secp256k1 = 2;
|
|
12
|
-
ECDSA = 3;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
message PublicKey {
|
|
16
|
-
KeyType Type = 1;
|
|
17
|
-
bytes Data = 2;
|
|
18
|
-
}
|
package/src/insecure/pb/proto.ts
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
/* eslint-disable import/export */
|
|
2
|
-
/* eslint-disable complexity */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-namespace */
|
|
4
|
-
/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */
|
|
5
|
-
/* eslint-disable @typescript-eslint/no-empty-interface */
|
|
6
|
-
|
|
7
|
-
import { encodeMessage, decodeMessage, message, enumeration } from 'protons-runtime'
|
|
8
|
-
import type { Codec } from 'protons-runtime'
|
|
9
|
-
import type { Uint8ArrayList } from 'uint8arraylist'
|
|
10
|
-
|
|
11
|
-
export interface Exchange {
|
|
12
|
-
id?: Uint8Array
|
|
13
|
-
pubkey?: PublicKey
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export namespace Exchange {
|
|
17
|
-
let _codec: Codec<Exchange>
|
|
18
|
-
|
|
19
|
-
export const codec = (): Codec<Exchange> => {
|
|
20
|
-
if (_codec == null) {
|
|
21
|
-
_codec = message<Exchange>((obj, w, opts = {}) => {
|
|
22
|
-
if (opts.lengthDelimited !== false) {
|
|
23
|
-
w.fork()
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if (obj.id != null) {
|
|
27
|
-
w.uint32(10)
|
|
28
|
-
w.bytes(obj.id)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (obj.pubkey != null) {
|
|
32
|
-
w.uint32(18)
|
|
33
|
-
PublicKey.codec().encode(obj.pubkey, w)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (opts.lengthDelimited !== false) {
|
|
37
|
-
w.ldelim()
|
|
38
|
-
}
|
|
39
|
-
}, (reader, length) => {
|
|
40
|
-
const obj: any = {}
|
|
41
|
-
|
|
42
|
-
const end = length == null ? reader.len : reader.pos + length
|
|
43
|
-
|
|
44
|
-
while (reader.pos < end) {
|
|
45
|
-
const tag = reader.uint32()
|
|
46
|
-
|
|
47
|
-
switch (tag >>> 3) {
|
|
48
|
-
case 1:
|
|
49
|
-
obj.id = reader.bytes()
|
|
50
|
-
break
|
|
51
|
-
case 2:
|
|
52
|
-
obj.pubkey = PublicKey.codec().decode(reader, reader.uint32())
|
|
53
|
-
break
|
|
54
|
-
default:
|
|
55
|
-
reader.skipType(tag & 7)
|
|
56
|
-
break
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return obj
|
|
61
|
-
})
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return _codec
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export const encode = (obj: Partial<Exchange>): Uint8Array => {
|
|
68
|
-
return encodeMessage(obj, Exchange.codec())
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export const decode = (buf: Uint8Array | Uint8ArrayList): Exchange => {
|
|
72
|
-
return decodeMessage(buf, Exchange.codec())
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export enum KeyType {
|
|
77
|
-
RSA = 'RSA',
|
|
78
|
-
Ed25519 = 'Ed25519',
|
|
79
|
-
Secp256k1 = 'Secp256k1',
|
|
80
|
-
ECDSA = 'ECDSA'
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
enum __KeyTypeValues {
|
|
84
|
-
RSA = 0,
|
|
85
|
-
Ed25519 = 1,
|
|
86
|
-
Secp256k1 = 2,
|
|
87
|
-
ECDSA = 3
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export namespace KeyType {
|
|
91
|
-
export const codec = (): Codec<KeyType> => {
|
|
92
|
-
return enumeration<KeyType>(__KeyTypeValues)
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
export interface PublicKey {
|
|
96
|
-
Type: KeyType
|
|
97
|
-
Data: Uint8Array
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export namespace PublicKey {
|
|
101
|
-
let _codec: Codec<PublicKey>
|
|
102
|
-
|
|
103
|
-
export const codec = (): Codec<PublicKey> => {
|
|
104
|
-
if (_codec == null) {
|
|
105
|
-
_codec = message<PublicKey>((obj, w, opts = {}) => {
|
|
106
|
-
if (opts.lengthDelimited !== false) {
|
|
107
|
-
w.fork()
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
if (obj.Type != null && __KeyTypeValues[obj.Type] !== 0) {
|
|
111
|
-
w.uint32(8)
|
|
112
|
-
KeyType.codec().encode(obj.Type, w)
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if ((obj.Data != null && obj.Data.byteLength > 0)) {
|
|
116
|
-
w.uint32(18)
|
|
117
|
-
w.bytes(obj.Data)
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (opts.lengthDelimited !== false) {
|
|
121
|
-
w.ldelim()
|
|
122
|
-
}
|
|
123
|
-
}, (reader, length) => {
|
|
124
|
-
const obj: any = {
|
|
125
|
-
Type: KeyType.RSA,
|
|
126
|
-
Data: new Uint8Array(0)
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const end = length == null ? reader.len : reader.pos + length
|
|
130
|
-
|
|
131
|
-
while (reader.pos < end) {
|
|
132
|
-
const tag = reader.uint32()
|
|
133
|
-
|
|
134
|
-
switch (tag >>> 3) {
|
|
135
|
-
case 1:
|
|
136
|
-
obj.Type = KeyType.codec().decode(reader)
|
|
137
|
-
break
|
|
138
|
-
case 2:
|
|
139
|
-
obj.Data = reader.bytes()
|
|
140
|
-
break
|
|
141
|
-
default:
|
|
142
|
-
reader.skipType(tag & 7)
|
|
143
|
-
break
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return obj
|
|
148
|
-
})
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
return _codec
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export const encode = (obj: Partial<PublicKey>): Uint8Array => {
|
|
155
|
-
return encodeMessage(obj, PublicKey.codec())
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export const decode = (buf: Uint8Array | Uint8ArrayList): PublicKey => {
|
|
159
|
-
return decodeMessage(buf, PublicKey.codec())
|
|
160
|
-
}
|
|
161
|
-
}
|
package/src/ping/constants.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export const PROTOCOL = '/ipfs/ping/1.0.0'
|
|
2
|
-
export const PING_LENGTH = 32
|
|
3
|
-
export const PROTOCOL_VERSION = '1.0.0'
|
|
4
|
-
export const PROTOCOL_NAME = 'ping'
|
|
5
|
-
export const PROTOCOL_PREFIX = 'ipfs'
|
|
6
|
-
export const TIMEOUT = 10000
|
|
7
|
-
|
|
8
|
-
// See https://github.com/libp2p/specs/blob/d4b5fb0152a6bb86cfd9ea/ping/ping.md?plain=1#L38-L43
|
|
9
|
-
// The dialing peer MUST NOT keep more than one outbound stream for the ping protocol per peer.
|
|
10
|
-
// The listening peer SHOULD accept at most two streams per peer since cross-stream behavior is
|
|
11
|
-
// non-linear and stream writes occur asynchronously. The listening peer may perceive the
|
|
12
|
-
// dialing peer closing and opening the wrong streams (for instance, closing stream B and
|
|
13
|
-
// opening stream A even though the dialing peer is opening stream B and closing stream A).
|
|
14
|
-
export const MAX_INBOUND_STREAMS = 2
|
|
15
|
-
export const MAX_OUTBOUND_STREAMS = 1
|
package/src/ping/index.ts
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { randomBytes } from '@libp2p/crypto'
|
|
2
|
-
import { CodeError } from '@libp2p/interface/errors'
|
|
3
|
-
import { logger } from '@libp2p/logger'
|
|
4
|
-
import first from 'it-first'
|
|
5
|
-
import { pipe } from 'it-pipe'
|
|
6
|
-
import { equals as uint8ArrayEquals } from 'uint8arrays/equals'
|
|
7
|
-
import { codes } from '../errors.js'
|
|
8
|
-
import { PROTOCOL_PREFIX, PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION, TIMEOUT, MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS } from './constants.js'
|
|
9
|
-
import type { AbortOptions } from '@libp2p/interface'
|
|
10
|
-
import type { Stream } from '@libp2p/interface/connection'
|
|
11
|
-
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
12
|
-
import type { Startable } from '@libp2p/interface/startable'
|
|
13
|
-
import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
|
|
14
|
-
import type { IncomingStreamData, Registrar } from '@libp2p/interface-internal/registrar'
|
|
15
|
-
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
16
|
-
|
|
17
|
-
const log = logger('libp2p:ping')
|
|
18
|
-
|
|
19
|
-
export interface PingService {
|
|
20
|
-
ping(peer: PeerId | Multiaddr | Multiaddr[], options?: AbortOptions): Promise<number>
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface PingServiceInit {
|
|
24
|
-
protocolPrefix?: string
|
|
25
|
-
maxInboundStreams?: number
|
|
26
|
-
maxOutboundStreams?: number
|
|
27
|
-
runOnTransientConnection?: boolean
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* How long we should wait for a ping response
|
|
31
|
-
*/
|
|
32
|
-
timeout?: number
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export interface PingServiceComponents {
|
|
36
|
-
registrar: Registrar
|
|
37
|
-
connectionManager: ConnectionManager
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
class DefaultPingService implements Startable, PingService {
|
|
41
|
-
public readonly protocol: string
|
|
42
|
-
private readonly components: PingServiceComponents
|
|
43
|
-
private started: boolean
|
|
44
|
-
private readonly timeout: number
|
|
45
|
-
private readonly maxInboundStreams: number
|
|
46
|
-
private readonly maxOutboundStreams: number
|
|
47
|
-
private readonly runOnTransientConnection: boolean
|
|
48
|
-
|
|
49
|
-
constructor (components: PingServiceComponents, init: PingServiceInit) {
|
|
50
|
-
this.components = components
|
|
51
|
-
this.started = false
|
|
52
|
-
this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`
|
|
53
|
-
this.timeout = init.timeout ?? TIMEOUT
|
|
54
|
-
this.maxInboundStreams = init.maxInboundStreams ?? MAX_INBOUND_STREAMS
|
|
55
|
-
this.maxOutboundStreams = init.maxOutboundStreams ?? MAX_OUTBOUND_STREAMS
|
|
56
|
-
this.runOnTransientConnection = init.runOnTransientConnection ?? true
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
async start (): Promise<void> {
|
|
60
|
-
await this.components.registrar.handle(this.protocol, this.handleMessage, {
|
|
61
|
-
maxInboundStreams: this.maxInboundStreams,
|
|
62
|
-
maxOutboundStreams: this.maxOutboundStreams,
|
|
63
|
-
runOnTransientConnection: this.runOnTransientConnection
|
|
64
|
-
})
|
|
65
|
-
this.started = true
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
async stop (): Promise<void> {
|
|
69
|
-
await this.components.registrar.unhandle(this.protocol)
|
|
70
|
-
this.started = false
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
isStarted (): boolean {
|
|
74
|
-
return this.started
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* A handler to register with Libp2p to process ping messages
|
|
79
|
-
*/
|
|
80
|
-
handleMessage (data: IncomingStreamData): void {
|
|
81
|
-
log('incoming ping from %p', data.connection.remotePeer)
|
|
82
|
-
|
|
83
|
-
const { stream } = data
|
|
84
|
-
const start = Date.now()
|
|
85
|
-
|
|
86
|
-
void pipe(stream, stream)
|
|
87
|
-
.catch(err => {
|
|
88
|
-
log.error('incoming ping from %p failed with error', data.connection.remotePeer, err)
|
|
89
|
-
})
|
|
90
|
-
.finally(() => {
|
|
91
|
-
const ms = Date.now() - start
|
|
92
|
-
|
|
93
|
-
log('incoming ping from %p complete in %dms', data.connection.remotePeer, ms)
|
|
94
|
-
})
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Ping a given peer and wait for its response, getting the operation latency.
|
|
99
|
-
*
|
|
100
|
-
* @param {PeerId|Multiaddr} peer
|
|
101
|
-
* @returns {Promise<number>}
|
|
102
|
-
*/
|
|
103
|
-
async ping (peer: PeerId | Multiaddr | Multiaddr[], options: AbortOptions = {}): Promise<number> {
|
|
104
|
-
log('pinging %p', peer)
|
|
105
|
-
|
|
106
|
-
const start = Date.now()
|
|
107
|
-
const data = randomBytes(PING_LENGTH)
|
|
108
|
-
const connection = await this.components.connectionManager.openConnection(peer, options)
|
|
109
|
-
let stream: Stream | undefined
|
|
110
|
-
let onAbort = (): void => {}
|
|
111
|
-
|
|
112
|
-
if (options.signal == null) {
|
|
113
|
-
const signal = AbortSignal.timeout(this.timeout)
|
|
114
|
-
|
|
115
|
-
options = {
|
|
116
|
-
...options,
|
|
117
|
-
signal
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
try {
|
|
122
|
-
stream = await connection.newStream(this.protocol, {
|
|
123
|
-
...options,
|
|
124
|
-
runOnTransientConnection: this.runOnTransientConnection
|
|
125
|
-
})
|
|
126
|
-
|
|
127
|
-
onAbort = () => {
|
|
128
|
-
stream?.abort(new CodeError('ping timeout', codes.ERR_TIMEOUT))
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// make stream abortable
|
|
132
|
-
options.signal?.addEventListener('abort', onAbort, { once: true })
|
|
133
|
-
|
|
134
|
-
const result = await pipe(
|
|
135
|
-
[data],
|
|
136
|
-
stream,
|
|
137
|
-
async (source) => first(source)
|
|
138
|
-
)
|
|
139
|
-
|
|
140
|
-
const ms = Date.now() - start
|
|
141
|
-
|
|
142
|
-
if (result == null) {
|
|
143
|
-
throw new CodeError(`Did not receive a ping ack after ${ms}ms`, codes.ERR_WRONG_PING_ACK)
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
if (!uint8ArrayEquals(data, result.subarray())) {
|
|
147
|
-
throw new CodeError(`Received wrong ping ack after ${ms}ms`, codes.ERR_WRONG_PING_ACK)
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
log('ping %p complete in %dms', connection.remotePeer, ms)
|
|
151
|
-
|
|
152
|
-
return ms
|
|
153
|
-
} catch (err: any) {
|
|
154
|
-
log.error('error while pinging %p', connection.remotePeer, err)
|
|
155
|
-
|
|
156
|
-
stream?.abort(err)
|
|
157
|
-
|
|
158
|
-
throw err
|
|
159
|
-
} finally {
|
|
160
|
-
options.signal?.removeEventListener('abort', onAbort)
|
|
161
|
-
if (stream != null) {
|
|
162
|
-
await stream.close()
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export function pingService (init: PingServiceInit = {}): (components: PingServiceComponents) => PingService {
|
|
169
|
-
return (components) => new DefaultPingService(components, init)
|
|
170
|
-
}
|
package/src/pnet/README.md
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
js-libp2p-pnet <!-- omit in toc -->
|
|
2
|
-
==================
|
|
3
|
-
|
|
4
|
-
> Connection protection management for libp2p leveraging PSK encryption via XSalsa20.
|
|
5
|
-
|
|
6
|
-
**Note**: git history prior to merging into js-libp2p can be found in the original repository, https://github.com/libp2p/js-libp2p-pnet.
|
|
7
|
-
|
|
8
|
-
## Table of Contents <!-- omit in toc -->
|
|
9
|
-
|
|
10
|
-
- [Usage](#usage)
|
|
11
|
-
- [Private Shared Keys](#private-shared-keys)
|
|
12
|
-
- [PSK Generation](#psk-generation)
|
|
13
|
-
- [From a module using libp2p](#from-a-module-using-libp2p)
|
|
14
|
-
- [Programmatically](#programmatically)
|
|
15
|
-
|
|
16
|
-
## Usage
|
|
17
|
-
|
|
18
|
-
```js
|
|
19
|
-
import { createLibp2p } from 'libp2p'
|
|
20
|
-
import { preSharedKey, generateKey } from 'libp2p/pnet'
|
|
21
|
-
|
|
22
|
-
// Create a Uint8Array and write the swarm key to it
|
|
23
|
-
const swarmKey = new Uint8Array(95)
|
|
24
|
-
generateKey(swarmKey)
|
|
25
|
-
|
|
26
|
-
const node = await createLibp2p({
|
|
27
|
-
// ...other options
|
|
28
|
-
connectionProtector: preSharedKey({
|
|
29
|
-
psk: swarmKey
|
|
30
|
-
})
|
|
31
|
-
})
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Private Shared Keys
|
|
35
|
-
|
|
36
|
-
Private Shared Keys are expected to be in the following format:
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
/key/swarm/psk/1.0.0/
|
|
40
|
-
/base16/
|
|
41
|
-
dffb7e3135399a8b1612b2aaca1c36a3a8ac2cd0cca51ceeb2ced87d308cac6d
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## PSK Generation
|
|
45
|
-
|
|
46
|
-
A utility method has been created to generate a key for your private network. You can
|
|
47
|
-
use one of the methods below to generate your key.
|
|
48
|
-
|
|
49
|
-
#### From a module using libp2p
|
|
50
|
-
|
|
51
|
-
If you have a module locally that depends on libp2p, you can run the following from
|
|
52
|
-
that project, assuming the node_modules are installed.
|
|
53
|
-
|
|
54
|
-
```console
|
|
55
|
-
node -e "import('libp2p/pnet').then(({ generateKey }) => generateKey(process.stdout))" > swarm.key
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
#### Programmatically
|
|
59
|
-
|
|
60
|
-
```js
|
|
61
|
-
import fs from 'fs'
|
|
62
|
-
import { generateKey } from 'libp2p/pnet'
|
|
63
|
-
|
|
64
|
-
const swarmKey = new Uint8Array(95)
|
|
65
|
-
generateKey(swarmKey)
|
|
66
|
-
|
|
67
|
-
fs.writeFileSync('swarm.key', swarmKey)
|
|
68
|
-
```
|