@libp2p/webrtc 5.2.3 → 5.2.4
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 +1 -1
- package/dist/index.min.js +4 -4
- package/dist/src/constants.d.ts +0 -4
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +0 -4
- package/dist/src/constants.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/maconn.d.ts +1 -1
- package/dist/src/maconn.js +1 -1
- package/dist/src/muxer.js +1 -1
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts +1 -1
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +14 -6
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-public/listener.d.ts +2 -0
- package/dist/src/private-to-public/listener.d.ts.map +1 -1
- package/dist/src/private-to-public/listener.js +20 -9
- package/dist/src/private-to-public/listener.js.map +1 -1
- package/dist/src/private-to-public/transport.d.ts +2 -1
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +3 -3
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/dist/src/private-to-public/utils/generate-noise-prologue.js +1 -1
- package/dist/src/private-to-public/utils/generate-noise-prologue.js.map +1 -1
- package/dist/src/private-to-public/utils/sdp.d.ts +1 -1
- package/dist/src/private-to-public/utils/sdp.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/sdp.js +8 -8
- package/dist/src/private-to-public/utils/sdp.js.map +1 -1
- package/dist/src/stream.js +5 -5
- package/dist/src/stream.js.map +1 -1
- package/package.json +9 -9
- package/src/constants.ts +0 -4
- package/src/index.ts +1 -1
- package/src/maconn.ts +1 -1
- package/src/muxer.ts +1 -1
- package/src/private-to-private/transport.ts +15 -6
- package/src/private-to-public/listener.ts +25 -10
- package/src/private-to-public/transport.ts +6 -4
- package/src/private-to-public/utils/generate-noise-prologue.ts +1 -1
- package/src/private-to-public/utils/sdp.ts +8 -8
- package/src/stream.ts +5 -5
package/dist/src/stream.js
CHANGED
@@ -244,10 +244,10 @@ export class WebRTCStream extends AbstractStream {
|
|
244
244
|
while (data.byteLength > 0) {
|
245
245
|
const toSend = Math.min(data.byteLength, this.maxMessageSize);
|
246
246
|
const buf = data.subarray(0, toSend);
|
247
|
-
const
|
248
|
-
const
|
247
|
+
const messageBuf = Message.encode({ message: buf });
|
248
|
+
const sendBuf = lengthPrefixed.encode.single(messageBuf);
|
249
249
|
this.log.trace('-> sending message %s', this.channel.readyState);
|
250
|
-
await this._sendMessage(
|
250
|
+
await this._sendMessage(sendBuf);
|
251
251
|
this.log.trace('-> sent message %s', this.channel.readyState);
|
252
252
|
data.consume(toSend);
|
253
253
|
}
|
@@ -334,8 +334,8 @@ export class WebRTCStream extends AbstractStream {
|
|
334
334
|
return false;
|
335
335
|
}
|
336
336
|
this.log.trace('sending flag %s', flag.toString());
|
337
|
-
const
|
338
|
-
const prefixedBuf = lengthPrefixed.encode.single(
|
337
|
+
const messageBuf = Message.encode({ flag });
|
338
|
+
const prefixedBuf = lengthPrefixed.encode.single(messageBuf);
|
339
339
|
try {
|
340
340
|
await this._sendMessage(prefixedBuf, false);
|
341
341
|
return true;
|
package/dist/src/stream.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/webrtc",
|
3
|
-
"version": "5.2.
|
3
|
+
"version": "5.2.4",
|
4
4
|
"description": "A libp2p transport using WebRTC connections",
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-webrtc#readme",
|
@@ -54,10 +54,10 @@
|
|
54
54
|
"@chainsafe/is-ip": "^2.0.2",
|
55
55
|
"@chainsafe/libp2p-noise": "^16.0.0",
|
56
56
|
"@ipshipyard/node-datachannel": "^0.26.4",
|
57
|
-
"@libp2p/interface": "^2.6.
|
58
|
-
"@libp2p/interface-internal": "^2.3.
|
59
|
-
"@libp2p/peer-id": "^5.0.
|
60
|
-
"@libp2p/utils": "^6.5.
|
57
|
+
"@libp2p/interface": "^2.6.1",
|
58
|
+
"@libp2p/interface-internal": "^2.3.5",
|
59
|
+
"@libp2p/peer-id": "^5.0.14",
|
60
|
+
"@libp2p/utils": "^6.5.5",
|
61
61
|
"@multiformats/multiaddr": "^12.4.0",
|
62
62
|
"@multiformats/multiaddr-matcher": "^1.6.0",
|
63
63
|
"@peculiar/webcrypto": "^1.5.0",
|
@@ -83,11 +83,11 @@
|
|
83
83
|
"uint8arrays": "^5.1.0"
|
84
84
|
},
|
85
85
|
"devDependencies": {
|
86
|
-
"@libp2p/crypto": "^5.0.
|
87
|
-
"@libp2p/interface-compliance-tests": "^6.3.
|
88
|
-
"@libp2p/logger": "^5.1.
|
86
|
+
"@libp2p/crypto": "^5.0.13",
|
87
|
+
"@libp2p/interface-compliance-tests": "^6.3.5",
|
88
|
+
"@libp2p/logger": "^5.1.10",
|
89
89
|
"@types/sinon": "^17.0.3",
|
90
|
-
"aegir": "^45.
|
90
|
+
"aegir": "^45.1.1",
|
91
91
|
"delay": "^6.0.0",
|
92
92
|
"it-length": "^3.0.6",
|
93
93
|
"it-pair": "^2.0.6",
|
package/src/constants.ts
CHANGED
@@ -17,9 +17,5 @@ export const UFRAG_ALPHABET = Array.from('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL
|
|
17
17
|
|
18
18
|
export const UFRAG_PREFIX = 'libp2p+webrtc+v1/'
|
19
19
|
|
20
|
-
/**
|
21
|
-
* The time to wait, in milliseconds, for the data channel handshake to complete
|
22
|
-
*/
|
23
|
-
export const HANDSHAKE_TIMEOUT_MS = 10_000
|
24
20
|
export const CODEC_WEBRTC_DIRECT = 0x0118
|
25
21
|
export const CODEC_CERTHASH = 0x01d2
|
package/src/index.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @packageDocumentation
|
3
3
|
*
|
4
|
-
* A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebRTC
|
4
|
+
* A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebRTC data channels](https://webrtc.org/).
|
5
5
|
*
|
6
6
|
* [WebRTC](https://www.w3.org/TR/webrtc/) is a specification that allows real-time communication between nodes - it's commonly used in browser video conferencing applications but it also provides a reliable data transport mechanism called [data channels](https://www.w3.org/TR/webrtc/#peer-to-peer-data-api) which libp2p uses to facilitate [protocol streams](https://docs.libp2p.io/concepts/multiplex/overview/) between peers.
|
7
7
|
*
|
package/src/maconn.ts
CHANGED
package/src/muxer.ts
CHANGED
@@ -59,7 +59,7 @@ export class DataChannelMuxerFactory implements StreamMuxerFactory {
|
|
59
59
|
this.dataChannelOptions = init.dataChannelOptions ?? {}
|
60
60
|
this.log = components.logger.forComponent('libp2p:webrtc:muxerfactory')
|
61
61
|
|
62
|
-
// store any
|
62
|
+
// store any data channels opened before upgrade has been completed
|
63
63
|
this.peerConnection.ondatachannel = ({ channel }) => {
|
64
64
|
this.log.trace('incoming early datachannel with channel id %d and label "%s"', channel.id)
|
65
65
|
|
@@ -17,7 +17,6 @@ import type { ProgressEvent } from 'progress-events'
|
|
17
17
|
const WEBRTC_TRANSPORT = '/webrtc'
|
18
18
|
const CIRCUIT_RELAY_TRANSPORT = '/p2p-circuit'
|
19
19
|
export const SIGNALING_PROTO_ID = '/webrtc-signaling/0.0.1'
|
20
|
-
const INBOUND_CONNECTION_TIMEOUT = 30 * 1000
|
21
20
|
|
22
21
|
export interface WebRTCTransportInit {
|
23
22
|
rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>)
|
@@ -106,7 +105,16 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
106
105
|
|
107
106
|
async start (): Promise<void> {
|
108
107
|
await this.components.registrar.handle(SIGNALING_PROTO_ID, (data: IncomingStreamData) => {
|
109
|
-
|
108
|
+
// ensure we don't try to upgrade forever
|
109
|
+
const signal = this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal)
|
110
|
+
|
111
|
+
this._onProtocol(data, signal)
|
112
|
+
.catch(err => {
|
113
|
+
this.log.error('failed to handle incoming connect from %p', data.connection.remotePeer, err)
|
114
|
+
})
|
115
|
+
.finally(() => {
|
116
|
+
signal.clear()
|
117
|
+
})
|
110
118
|
}, {
|
111
119
|
runOnLimitedConnection: true
|
112
120
|
})
|
@@ -172,7 +180,8 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
172
180
|
skipProtection: true,
|
173
181
|
skipEncryption: true,
|
174
182
|
muxerFactory,
|
175
|
-
onProgress: options.onProgress
|
183
|
+
onProgress: options.onProgress,
|
184
|
+
signal: options.signal
|
176
185
|
})
|
177
186
|
|
178
187
|
// close the connection on shut down
|
@@ -181,8 +190,7 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
181
190
|
return connection
|
182
191
|
}
|
183
192
|
|
184
|
-
async _onProtocol ({ connection, stream }: IncomingStreamData): Promise<void> {
|
185
|
-
const signal = AbortSignal.timeout(this.init.inboundConnectionTimeout ?? INBOUND_CONNECTION_TIMEOUT)
|
193
|
+
async _onProtocol ({ connection, stream }: IncomingStreamData, signal: AbortSignal): Promise<void> {
|
186
194
|
const peerConnection = new RTCPeerConnection(await getRtcConfiguration(this.init.rtcConfiguration))
|
187
195
|
const muxerFactory = new DataChannelMuxerFactory(this.components, {
|
188
196
|
peerConnection,
|
@@ -213,7 +221,8 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
213
221
|
await this.components.upgrader.upgradeInbound(webRTCConn, {
|
214
222
|
skipEncryption: true,
|
215
223
|
skipProtection: true,
|
216
|
-
muxerFactory
|
224
|
+
muxerFactory,
|
225
|
+
signal
|
217
226
|
})
|
218
227
|
|
219
228
|
// close the connection on shut down
|
@@ -6,7 +6,7 @@ import { IP4, WebRTCDirect } from '@multiformats/multiaddr-matcher'
|
|
6
6
|
import { Crypto } from '@peculiar/webcrypto'
|
7
7
|
import getPort from 'get-port'
|
8
8
|
import pWaitFor from 'p-wait-for'
|
9
|
-
import { CODEC_CERTHASH, CODEC_WEBRTC_DIRECT
|
9
|
+
import { CODEC_CERTHASH, CODEC_WEBRTC_DIRECT } from '../constants.js'
|
10
10
|
import { connect } from './utils/connect.js'
|
11
11
|
import { generateTransportCertificate } from './utils/generate-certificates.js'
|
12
12
|
import { createDialerRTCPeerConnection } from './utils/get-rtcpeerconnection.js'
|
@@ -23,6 +23,7 @@ export interface WebRTCDirectListenerComponents {
|
|
23
23
|
peerId: PeerId
|
24
24
|
privateKey: PrivateKey
|
25
25
|
logger: ComponentLogger
|
26
|
+
upgrader: Upgrader
|
26
27
|
metrics?: Metrics
|
27
28
|
}
|
28
29
|
|
@@ -62,6 +63,7 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
62
63
|
private readonly init: WebRTCDirectListenerInit
|
63
64
|
private readonly components: WebRTCDirectListenerComponents
|
64
65
|
private readonly metrics?: WebRTCListenerMetrics
|
66
|
+
private readonly shutdownController: AbortController
|
65
67
|
|
66
68
|
constructor (components: WebRTCDirectListenerComponents, init: WebRTCDirectListenerInit) {
|
67
69
|
super()
|
@@ -72,6 +74,7 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
72
74
|
this.connections = new Map()
|
73
75
|
this.log = components.logger.forComponent('libp2p:webrtc-direct:listener')
|
74
76
|
this.certificate = init.certificates?.[0]
|
77
|
+
this.shutdownController = new AbortController()
|
75
78
|
|
76
79
|
if (components.metrics != null) {
|
77
80
|
this.metrics = {
|
@@ -93,14 +96,14 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
93
96
|
.pop()?.[1]
|
94
97
|
|
95
98
|
if (host == null) {
|
96
|
-
throw new Error('IP4/6 host must be specified in webrtc-direct
|
99
|
+
throw new Error('IP4/6 host must be specified in webrtc-direct multiaddr')
|
97
100
|
}
|
98
101
|
const port = parseInt(parts
|
99
102
|
.filter(([code, value]) => code === UDP_PROTOCOL.code)
|
100
103
|
.pop()?.[1] ?? '')
|
101
104
|
|
102
105
|
if (isNaN(port)) {
|
103
|
-
throw new Error('UDP port must be specified in webrtc-direct
|
106
|
+
throw new Error('UDP port must be specified in webrtc-direct multiaddr')
|
104
107
|
}
|
105
108
|
|
106
109
|
// have to do this before any async work happens so starting two listeners
|
@@ -178,16 +181,21 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
178
181
|
}
|
179
182
|
|
180
183
|
return stunListener(host, port, this.log, (ufrag, remoteHost, remotePort) => {
|
181
|
-
this.
|
184
|
+
const signal = this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal)
|
185
|
+
|
186
|
+
this.incomingConnection(ufrag, remoteHost, remotePort, signal)
|
182
187
|
.catch(err => {
|
183
188
|
this.log.error('error processing incoming STUN request', err)
|
184
189
|
})
|
190
|
+
.finally(() => {
|
191
|
+
signal.clear()
|
192
|
+
})
|
185
193
|
})
|
186
194
|
})
|
187
195
|
}
|
188
196
|
}
|
189
197
|
|
190
|
-
private async incomingConnection (ufrag: string, remoteHost: string, remotePort: number): Promise<void> {
|
198
|
+
private async incomingConnection (ufrag: string, remoteHost: string, remotePort: number, signal: AbortSignal): Promise<void> {
|
191
199
|
const key = `${remoteHost}:${remotePort}:${ufrag}`
|
192
200
|
let peerConnection = this.connections.get(key)
|
193
201
|
|
@@ -198,6 +206,9 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
198
206
|
|
199
207
|
this.log('create peer connection for %s', key)
|
200
208
|
|
209
|
+
// do not create RTCPeerConnection objects if the signal has aborted already
|
210
|
+
signal.throwIfAborted()
|
211
|
+
|
201
212
|
// https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md#browser-to-public-server
|
202
213
|
peerConnection = await createDialerRTCPeerConnection('server', ufrag, this.init.rtcConfiguration, this.certificate)
|
203
214
|
|
@@ -222,7 +233,7 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
222
233
|
logger: this.components.logger,
|
223
234
|
metrics: this.components.metrics,
|
224
235
|
events: this.metrics?.listenerEvents,
|
225
|
-
signal
|
236
|
+
signal,
|
226
237
|
remoteAddr: multiaddr(`/ip${isIPv4(remoteHost) ? 4 : 6}/${remoteHost}/udp/${remotePort}`),
|
227
238
|
dataChannel: this.init.dataChannel,
|
228
239
|
upgrader: this.init.upgrader,
|
@@ -268,10 +279,6 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
268
279
|
}
|
269
280
|
|
270
281
|
async close (): Promise<void> {
|
271
|
-
for (const connection of this.connections.values()) {
|
272
|
-
connection.close()
|
273
|
-
}
|
274
|
-
|
275
282
|
// stop our UDP mux listeners
|
276
283
|
await Promise.all(
|
277
284
|
UDP_MUX_LISTENERS
|
@@ -285,6 +292,14 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
285
292
|
// remove our stopped UDP mux listeners
|
286
293
|
UDP_MUX_LISTENERS = UDP_MUX_LISTENERS.filter(listener => listener.owner !== this)
|
287
294
|
|
295
|
+
// close existing connections
|
296
|
+
for (const connection of this.connections.values()) {
|
297
|
+
connection.close()
|
298
|
+
}
|
299
|
+
|
300
|
+
// stop any in-progress incoming dials
|
301
|
+
this.shutdownController.abort()
|
302
|
+
|
288
303
|
// RTCPeerConnections will be removed from the connections map when their
|
289
304
|
// connection state changes to 'closed'/'disconnected'/'failed
|
290
305
|
await pWaitFor(() => {
|
@@ -2,14 +2,13 @@ import { serviceCapabilities, transportSymbol } from '@libp2p/interface'
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id'
|
3
3
|
import { WebRTCDirect } from '@multiformats/multiaddr-matcher'
|
4
4
|
import { raceSignal } from 'race-signal'
|
5
|
-
import { HANDSHAKE_TIMEOUT_MS } from '../constants.js'
|
6
5
|
import { genUfrag } from '../util.js'
|
7
6
|
import { WebRTCDirectListener } from './listener.js'
|
8
7
|
import { connect } from './utils/connect.js'
|
9
8
|
import { createDialerRTCPeerConnection } from './utils/get-rtcpeerconnection.js'
|
10
9
|
import type { DataChannelOptions, TransportCertificate } from '../index.js'
|
11
10
|
import type { WebRTCDialEvents } from '../private-to-private/transport.js'
|
12
|
-
import type { CreateListenerOptions, Transport, Listener, ComponentLogger, Logger, Connection, CounterGroup, Metrics, PeerId, DialTransportOptions, PrivateKey } from '@libp2p/interface'
|
11
|
+
import type { CreateListenerOptions, Transport, Listener, ComponentLogger, Logger, Connection, CounterGroup, Metrics, PeerId, DialTransportOptions, PrivateKey, Upgrader } from '@libp2p/interface'
|
13
12
|
import type { TransportManager } from '@libp2p/interface-internal'
|
14
13
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
15
14
|
|
@@ -22,6 +21,7 @@ export interface WebRTCDirectTransportComponents {
|
|
22
21
|
metrics?: Metrics
|
23
22
|
logger: ComponentLogger
|
24
23
|
transportManager: TransportManager
|
24
|
+
upgrader: Upgrader
|
25
25
|
}
|
26
26
|
|
27
27
|
export interface WebRTCMetrics {
|
@@ -72,7 +72,6 @@ export class WebRTCDirectTransport implements Transport {
|
|
72
72
|
* Dial a given multiaddr
|
73
73
|
*/
|
74
74
|
async dial (ma: Multiaddr, options: DialTransportOptions<WebRTCDialEvents>): Promise<Connection> {
|
75
|
-
options?.signal?.throwIfAborted()
|
76
75
|
const rawConn = await this._connect(ma, options)
|
77
76
|
this.log('dialing address: %a', ma)
|
78
77
|
return rawConn
|
@@ -106,6 +105,9 @@ export class WebRTCDirectTransport implements Transport {
|
|
106
105
|
* Connect to a peer using a multiaddr
|
107
106
|
*/
|
108
107
|
async _connect (ma: Multiaddr, options: DialTransportOptions<WebRTCDialEvents>): Promise<Connection> {
|
108
|
+
// do not create RTCPeerConnection if the signal has already been aborted
|
109
|
+
options.signal.throwIfAborted()
|
110
|
+
|
109
111
|
let theirPeerId: PeerId | undefined
|
110
112
|
const remotePeerString = ma.getPeerId()
|
111
113
|
if (remotePeerString != null) {
|
@@ -124,7 +126,7 @@ export class WebRTCDirectTransport implements Transport {
|
|
124
126
|
logger: this.components.logger,
|
125
127
|
metrics: this.components.metrics,
|
126
128
|
events: this.metrics?.dialerEvents,
|
127
|
-
signal: options.signal
|
129
|
+
signal: options.signal,
|
128
130
|
remoteAddr: ma,
|
129
131
|
dataChannel: this.init.dataChannel,
|
130
132
|
upgrader: options.upgrader,
|
@@ -15,7 +15,7 @@ export function generateNoisePrologue (localFingerprint: string, remoteAddr: Mul
|
|
15
15
|
const localFpString = localFingerprint.trim().toLowerCase().replaceAll(':', '')
|
16
16
|
const localFpArray = uint8arrayFromString(localFpString, 'hex')
|
17
17
|
const local = Digest.create(sha256.code, localFpArray)
|
18
|
-
const remote: Uint8Array = sdp.
|
18
|
+
const remote: Uint8Array = sdp.multibaseDecoder.decode(sdp.certhash(remoteAddr))
|
19
19
|
const byteLength = PREFIX.byteLength + local.bytes.byteLength + remote.byteLength
|
20
20
|
|
21
21
|
if (role === 'server') {
|
@@ -14,7 +14,7 @@ import type { MultihashDigest } from 'multiformats/hashes/interface'
|
|
14
14
|
* Get base2 | identity decoders
|
15
15
|
*/
|
16
16
|
// @ts-expect-error - Not easy to combine these types.
|
17
|
-
export const
|
17
|
+
export const multibaseDecoder: any = Object.values(bases).map(b => b.decoder).reduce((d, b) => d.or(b))
|
18
18
|
|
19
19
|
const fingerprintRegex = /^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m
|
20
20
|
export function getFingerprintFromSdp (sdp: string | undefined): string | undefined {
|
@@ -42,16 +42,16 @@ export function certhash (ma: Multiaddr): string {
|
|
42
42
|
* Convert a certhash into a multihash
|
43
43
|
*/
|
44
44
|
export function decodeCerthash (certhash: string): MultihashDigest {
|
45
|
-
return digest.decode(
|
45
|
+
return digest.decode(multibaseDecoder.decode(certhash))
|
46
46
|
}
|
47
47
|
|
48
48
|
export function certhashToFingerprint (certhash: string): string {
|
49
|
-
const
|
49
|
+
const multibaseDecoded = decodeCerthash(certhash)
|
50
50
|
|
51
|
-
return new Array(
|
51
|
+
return new Array(multibaseDecoded.bytes.length)
|
52
52
|
.fill(0)
|
53
53
|
.map((val, index) => {
|
54
|
-
return
|
54
|
+
return multibaseDecoded.digest[index].toString(16).padStart(2, '0').toUpperCase()
|
55
55
|
})
|
56
56
|
.join(':')
|
57
57
|
}
|
@@ -60,9 +60,9 @@ export function certhashToFingerprint (certhash: string): string {
|
|
60
60
|
* Extract the fingerprint from a multiaddr
|
61
61
|
*/
|
62
62
|
export function ma2Fingerprint (ma: Multiaddr): string {
|
63
|
-
const
|
64
|
-
const prefix = toSupportedHashFunction(
|
65
|
-
const fingerprint =
|
63
|
+
const multihashDecoded = decodeCerthash(certhash(ma))
|
64
|
+
const prefix = toSupportedHashFunction(multihashDecoded.code)
|
65
|
+
const fingerprint = multihashDecoded.digest.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '')
|
66
66
|
const sdp = fingerprint.match(/.{1,2}/g)
|
67
67
|
|
68
68
|
if (sdp == null) {
|
package/src/stream.ts
CHANGED
@@ -305,10 +305,10 @@ export class WebRTCStream extends AbstractStream {
|
|
305
305
|
while (data.byteLength > 0) {
|
306
306
|
const toSend = Math.min(data.byteLength, this.maxMessageSize)
|
307
307
|
const buf = data.subarray(0, toSend)
|
308
|
-
const
|
309
|
-
const
|
308
|
+
const messageBuf = Message.encode({ message: buf })
|
309
|
+
const sendBuf = lengthPrefixed.encode.single(messageBuf)
|
310
310
|
this.log.trace('-> sending message %s', this.channel.readyState)
|
311
|
-
await this._sendMessage(
|
311
|
+
await this._sendMessage(sendBuf)
|
312
312
|
this.log.trace('-> sent message %s', this.channel.readyState)
|
313
313
|
|
314
314
|
data.consume(toSend)
|
@@ -411,8 +411,8 @@ export class WebRTCStream extends AbstractStream {
|
|
411
411
|
}
|
412
412
|
|
413
413
|
this.log.trace('sending flag %s', flag.toString())
|
414
|
-
const
|
415
|
-
const prefixedBuf = lengthPrefixed.encode.single(
|
414
|
+
const messageBuf = Message.encode({ flag })
|
415
|
+
const prefixedBuf = lengthPrefixed.encode.single(messageBuf)
|
416
416
|
|
417
417
|
try {
|
418
418
|
await this._sendMessage(prefixedBuf, false)
|