@libp2p/webtransport 6.0.27 → 6.0.28-a34745c01
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/dist/index.min.js +1 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +10 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/generate-certificates.d.ts +1 -1
- package/dist/src/utils/parse-multiaddr.d.ts +1 -1
- package/dist/src/utils/parse-multiaddr.d.ts.map +1 -1
- package/dist/src/utils/parse-multiaddr.js +0 -3
- package/dist/src/utils/parse-multiaddr.js.map +1 -1
- package/package.json +14 -14
- package/src/index.ts +13 -6
- package/src/utils/generate-certificates.ts +1 -1
- package/src/utils/parse-multiaddr.ts +1 -5
- package/dist/typedoc-urls.json +0 -14
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAcH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAyD,eAAe,EAA2C,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,+BAA+B,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEzP,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;CACf;AAMD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAA;CACzC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,MAAM,sBAAsB,GAChC,+BAA+B,GAC/B,aAAa,CAAC,+BAA+B,CAAC,GAC9C,aAAa,CAAC,yCAAyC,CAAC,GACxD,aAAa,CAAC,yCAAyC,CAAC,GACxD,aAAa,CAAC,0CAA0C,CAAC,CAAA;AAiP3D,wBAAgB,YAAY,CAAE,IAAI,GAAE,gBAAqB,GAAG,CAAC,UAAU,EAAE,sBAAsB,KAAK,SAAS,CAE5G"}
|
package/dist/src/index.js
CHANGED
|
@@ -30,6 +30,7 @@ import { noise } from '@chainsafe/libp2p-noise';
|
|
|
30
30
|
import { InvalidCryptoExchangeError, InvalidParametersError, serviceCapabilities, transportSymbol } from '@libp2p/interface';
|
|
31
31
|
import { WebTransport as WebTransportMatcher } from '@multiformats/multiaddr-matcher';
|
|
32
32
|
import { CustomProgressEvent } from 'progress-events';
|
|
33
|
+
import { withArrayBuffer } from 'uint8arrays/with-array-buffer';
|
|
33
34
|
import createListener from "./listener.js";
|
|
34
35
|
import { webtransportMuxer } from "./muxer.js";
|
|
35
36
|
import { toMultiaddrConnection } from "./session-to-conn.js";
|
|
@@ -79,7 +80,7 @@ class WebTransportTransport {
|
|
|
79
80
|
const wt = new WebTransport(`${url}/.well-known/libp2p-webtransport?type=noise`, {
|
|
80
81
|
serverCertificateHashes: certhashes.map(certhash => ({
|
|
81
82
|
algorithm: 'sha-256',
|
|
82
|
-
value: certhash.digest
|
|
83
|
+
value: withArrayBuffer(certhash.digest)
|
|
83
84
|
}))
|
|
84
85
|
});
|
|
85
86
|
cleanUpWTSession = (metric) => {
|
|
@@ -137,20 +138,24 @@ class WebTransportTransport {
|
|
|
137
138
|
direction: 'outbound',
|
|
138
139
|
log: this.components.logger.forComponent('libp2p:webtransport:connection')
|
|
139
140
|
});
|
|
140
|
-
|
|
141
|
+
const securePeer = await this.authenticateWebTransport({
|
|
141
142
|
wt,
|
|
142
143
|
maConn,
|
|
143
144
|
remotePeer,
|
|
144
145
|
certhashes,
|
|
145
146
|
...options
|
|
146
147
|
});
|
|
148
|
+
authenticated = true;
|
|
149
|
+
if (remotePeer != null) {
|
|
150
|
+
authenticated = remotePeer.equals(securePeer);
|
|
151
|
+
}
|
|
147
152
|
if (!authenticated) {
|
|
148
153
|
throw new InvalidCryptoExchangeError('Failed to authenticate webtransport');
|
|
149
154
|
}
|
|
150
155
|
return await options.upgrader.upgradeOutbound(maConn, {
|
|
151
156
|
...options,
|
|
152
157
|
skipEncryption: true,
|
|
153
|
-
remotePeer,
|
|
158
|
+
remotePeer: securePeer,
|
|
154
159
|
muxerFactory: webtransportMuxer(wt),
|
|
155
160
|
skipProtection: true
|
|
156
161
|
});
|
|
@@ -184,7 +189,7 @@ class WebTransportTransport {
|
|
|
184
189
|
});
|
|
185
190
|
const n = noise()(this.components);
|
|
186
191
|
onProgress?.(new CustomProgressEvent('webtransport:secure-outbound-connection'));
|
|
187
|
-
const { remoteExtensions } = await n.secureOutbound(messages, {
|
|
192
|
+
const { remoteExtensions, remotePeer: securePeer } = await n.secureOutbound(messages, {
|
|
188
193
|
signal,
|
|
189
194
|
remotePeer,
|
|
190
195
|
skipStreamMuxerNegotiation: true
|
|
@@ -199,7 +204,7 @@ class WebTransportTransport {
|
|
|
199
204
|
if (!isSubset(remoteExtensions?.webtransportCerthashes ?? [], certhashes.map(ch => ch.bytes))) {
|
|
200
205
|
throw new InvalidParametersError("Our certhashes are not a subset of the remote's reported certhashes");
|
|
201
206
|
}
|
|
202
|
-
return
|
|
207
|
+
return securePeer;
|
|
203
208
|
}
|
|
204
209
|
createListener(options) {
|
|
205
210
|
return createListener(this.components, {
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC5H,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,cAAc,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAkD5C,MAAM,qBAAqB;IACR,GAAG,CAAQ;IACX,UAAU,CAAwB;IAClC,MAAM,CAA4B;IAClC,OAAO,CAAsB;IAE9C,YAAa,UAAkC,EAAE,OAAyB,EAAE;QAC1E,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAA;QAChE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,IAAI;YACP,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;SACtC,CAAA;QAED,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,GAAG;gBACb,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,yCAAyC,EAAE;oBAC/F,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,mDAAmD;iBAC1D,CAAC;aACH,CAAA;QACH,CAAC;IACH,CAAC;IAEQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,sBAAsB,CAAA;IAE7C,CAAC,eAAe,CAAC,GAAG,IAAI,CAAA;IAExB,CAAC,mBAAmB,CAAC,GAAa;QACzC,mBAAmB;KACpB,CAAA;IAED,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAAqD;QAC9E,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;QAE/B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;QAE1B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;QAEvB,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAA;QAC1D,IAAI,aAAuC,CAAA;QAC3C,IAAI,MAAuC,CAAA;QAC3C,IAAI,gBAAgB,GAA+B,GAAG,EAAE,GAAE,CAAC,CAAA;QAC3D,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,IAAI,aAAa,GAAG,KAAK,CAAA;QAEzB,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAEvD,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,GAAG,GAAG,6CAA6C,EAAE;gBAC/E,uBAAuB,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBACnD,SAAS,EAAE,SAAS;oBACpB,KAAK,EAAE,QAAQ,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import type { MultihashDigest } from 'multiformats/hashes/interface';
|
|
|
4
4
|
export interface ParsedMultiaddr {
|
|
5
5
|
url: string;
|
|
6
6
|
certhashes: MultihashDigest[];
|
|
7
|
-
remotePeer
|
|
7
|
+
remotePeer?: PeerId;
|
|
8
8
|
}
|
|
9
9
|
export declare function parseMultiaddr(ma: Multiaddr): ParsedMultiaddr;
|
|
10
10
|
//# sourceMappingURL=parse-multiaddr.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-multiaddr.d.ts","sourceRoot":"","sources":["../../../src/utils/parse-multiaddr.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AASpE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,eAAe,EAAE,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"parse-multiaddr.d.ts","sourceRoot":"","sources":["../../../src/utils/parse-multiaddr.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AASpE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,eAAe,EAAE,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,cAAc,CAAE,EAAE,EAAE,SAAS,GAAG,eAAe,CAwC9D"}
|
|
@@ -23,9 +23,6 @@ export function parseMultiaddr(ma) {
|
|
|
23
23
|
remotePeer = peerIdFromString(components.value ?? '');
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
if (remotePeer == null) {
|
|
27
|
-
throw new InvalidMultiaddrError('Remote peer must be present in multiaddr');
|
|
28
|
-
}
|
|
29
26
|
const opts = getNetConfig(ma);
|
|
30
27
|
let host = opts.host;
|
|
31
28
|
if (opts.type === 'ip6' && host.includes(':')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-multiaddr.js","sourceRoot":"","sources":["../../../src/utils/parse-multiaddr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAKnD,sDAAsD;AACtD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAE3F,SAAS,iBAAiB,CAAE,CAAS;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAClD,CAAC;AAQD,MAAM,UAAU,cAAc,CAAE,EAAa;IAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,qBAAqB,CAAC,mDAAmD,CAAC,CAAA;IACtF,CAAC;IAED,MAAM,UAAU,GAAsB,EAAE,CAAA;IACxC,IAAI,UAA8B,CAAA;IAElC,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC;QAC5C,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACnC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;QAED,oEAAoE;QACpE,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACpD,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"parse-multiaddr.js","sourceRoot":"","sources":["../../../src/utils/parse-multiaddr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAKnD,sDAAsD;AACtD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAE3F,SAAS,iBAAiB,CAAE,CAAS;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAClD,CAAC;AAQD,MAAM,UAAU,cAAc,CAAE,EAAa;IAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,qBAAqB,CAAC,mDAAmD,CAAC,CAAA;IACtF,CAAC;IAED,MAAM,UAAU,GAAsB,EAAE,CAAA;IACxC,IAAI,UAA8B,CAAA;IAElC,KAAK,MAAM,UAAU,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC;QAC5C,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACnC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;QAED,oEAAoE;QACpE,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACpD,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;IAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IAEpB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C;;;;;;;WAOG;QACH,IAAI,GAAG,IAAI,IAAI,GAAG,CAAA;IACpB,CAAC;IAED,OAAO;QACL,kCAAkC;QAClC,GAAG,EAAE,WAAW,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;QACnC,UAAU;QACV,UAAU;KACX,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/webtransport",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.28-a34745c01",
|
|
4
4
|
"description": "JavaScript implementation of the WebTransport module that libp2p uses and that implements the interface-transport spec",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-webtransport#readme",
|
|
@@ -46,28 +46,28 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@chainsafe/libp2p-noise": "^17.0.0",
|
|
49
|
-
"@libp2p/interface": "
|
|
50
|
-
"@libp2p/peer-id": "
|
|
51
|
-
"@libp2p/utils": "
|
|
52
|
-
"@multiformats/multiaddr": "^13.0.
|
|
53
|
-
"@multiformats/multiaddr-matcher": "^3.0.
|
|
54
|
-
"multiformats": "^
|
|
49
|
+
"@libp2p/interface": "3.2.3-a34745c01",
|
|
50
|
+
"@libp2p/peer-id": "6.0.10-a34745c01",
|
|
51
|
+
"@libp2p/utils": "7.2.2-a34745c01",
|
|
52
|
+
"@multiformats/multiaddr": "^13.0.3",
|
|
53
|
+
"@multiformats/multiaddr-matcher": "^3.0.2",
|
|
54
|
+
"multiformats": "^14.0.0",
|
|
55
55
|
"progress-events": "^1.0.1",
|
|
56
56
|
"race-signal": "^2.0.0",
|
|
57
57
|
"uint8arraylist": "^2.4.8",
|
|
58
|
-
"uint8arrays": "^
|
|
58
|
+
"uint8arrays": "^6.1.1"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@libp2p/crypto": "
|
|
62
|
-
"@libp2p/daemon-client": "
|
|
63
|
-
"@libp2p/logger": "
|
|
64
|
-
"@libp2p/ping": "
|
|
61
|
+
"@libp2p/crypto": "5.1.19-a34745c01",
|
|
62
|
+
"@libp2p/daemon-client": "10.0.28-a34745c01",
|
|
63
|
+
"@libp2p/logger": "6.2.8-a34745c01",
|
|
64
|
+
"@libp2p/ping": "3.1.6-a34745c01",
|
|
65
65
|
"@noble/hashes": "^2.0.1",
|
|
66
|
-
"aegir": "^
|
|
66
|
+
"aegir": "^48.0.11",
|
|
67
67
|
"execa": "^9.6.0",
|
|
68
68
|
"go-libp2p": "^1.6.0",
|
|
69
69
|
"it-all": "^3.0.9",
|
|
70
|
-
"libp2p": "
|
|
70
|
+
"libp2p": "3.3.3-a34745c01",
|
|
71
71
|
"p-defer": "^4.0.1",
|
|
72
72
|
"p-event": "^7.0.0",
|
|
73
73
|
"sinon-ts": "^2.0.0"
|
package/src/index.ts
CHANGED
|
@@ -31,6 +31,7 @@ import { noise } from '@chainsafe/libp2p-noise'
|
|
|
31
31
|
import { InvalidCryptoExchangeError, InvalidParametersError, serviceCapabilities, transportSymbol } from '@libp2p/interface'
|
|
32
32
|
import { WebTransport as WebTransportMatcher } from '@multiformats/multiaddr-matcher'
|
|
33
33
|
import { CustomProgressEvent } from 'progress-events'
|
|
34
|
+
import { withArrayBuffer } from 'uint8arrays/with-array-buffer'
|
|
34
35
|
import createListener from './listener.ts'
|
|
35
36
|
import { webtransportMuxer } from './muxer.ts'
|
|
36
37
|
import { toMultiaddrConnection } from './session-to-conn.ts'
|
|
@@ -140,7 +141,7 @@ class WebTransportTransport implements Transport<WebTransportDialEvents> {
|
|
|
140
141
|
const wt = new WebTransport(`${url}/.well-known/libp2p-webtransport?type=noise`, {
|
|
141
142
|
serverCertificateHashes: certhashes.map(certhash => ({
|
|
142
143
|
algorithm: 'sha-256',
|
|
143
|
-
value: certhash.digest
|
|
144
|
+
value: withArrayBuffer(certhash.digest)
|
|
144
145
|
}))
|
|
145
146
|
})
|
|
146
147
|
|
|
@@ -205,7 +206,7 @@ class WebTransportTransport implements Transport<WebTransportDialEvents> {
|
|
|
205
206
|
log: this.components.logger.forComponent('libp2p:webtransport:connection')
|
|
206
207
|
})
|
|
207
208
|
|
|
208
|
-
|
|
209
|
+
const securePeer = await this.authenticateWebTransport({
|
|
209
210
|
wt,
|
|
210
211
|
maConn,
|
|
211
212
|
remotePeer,
|
|
@@ -213,6 +214,12 @@ class WebTransportTransport implements Transport<WebTransportDialEvents> {
|
|
|
213
214
|
...options
|
|
214
215
|
})
|
|
215
216
|
|
|
217
|
+
authenticated = true
|
|
218
|
+
|
|
219
|
+
if (remotePeer != null) {
|
|
220
|
+
authenticated = remotePeer.equals(securePeer)
|
|
221
|
+
}
|
|
222
|
+
|
|
216
223
|
if (!authenticated) {
|
|
217
224
|
throw new InvalidCryptoExchangeError('Failed to authenticate webtransport')
|
|
218
225
|
}
|
|
@@ -220,7 +227,7 @@ class WebTransportTransport implements Transport<WebTransportDialEvents> {
|
|
|
220
227
|
return await options.upgrader.upgradeOutbound(maConn, {
|
|
221
228
|
...options,
|
|
222
229
|
skipEncryption: true,
|
|
223
|
-
remotePeer,
|
|
230
|
+
remotePeer: securePeer,
|
|
224
231
|
muxerFactory: webtransportMuxer(wt),
|
|
225
232
|
skipProtection: true
|
|
226
233
|
})
|
|
@@ -243,7 +250,7 @@ class WebTransportTransport implements Transport<WebTransportDialEvents> {
|
|
|
243
250
|
}
|
|
244
251
|
}
|
|
245
252
|
|
|
246
|
-
async authenticateWebTransport ({ wt, maConn, remotePeer, certhashes, onProgress, signal }: AuthenticateWebTransportOptions): Promise<
|
|
253
|
+
async authenticateWebTransport ({ wt, maConn, remotePeer, certhashes, onProgress, signal }: AuthenticateWebTransportOptions): Promise<PeerId> {
|
|
247
254
|
onProgress?.(new CustomProgressEvent('webtransport:open-authentication-stream'))
|
|
248
255
|
const stream = await wt.createBidirectionalStream()
|
|
249
256
|
signal?.throwIfAborted()
|
|
@@ -256,7 +263,7 @@ class WebTransportTransport implements Transport<WebTransportDialEvents> {
|
|
|
256
263
|
const n = noise()(this.components)
|
|
257
264
|
|
|
258
265
|
onProgress?.(new CustomProgressEvent('webtransport:secure-outbound-connection'))
|
|
259
|
-
const { remoteExtensions } = await n.secureOutbound(messages, {
|
|
266
|
+
const { remoteExtensions, remotePeer: securePeer } = await n.secureOutbound(messages, {
|
|
260
267
|
signal,
|
|
261
268
|
remotePeer,
|
|
262
269
|
skipStreamMuxerNegotiation: true
|
|
@@ -275,7 +282,7 @@ class WebTransportTransport implements Transport<WebTransportDialEvents> {
|
|
|
275
282
|
throw new InvalidParametersError("Our certhashes are not a subset of the remote's reported certhashes")
|
|
276
283
|
}
|
|
277
284
|
|
|
278
|
-
return
|
|
285
|
+
return securePeer
|
|
279
286
|
}
|
|
280
287
|
|
|
281
288
|
createListener (options: CreateListenerOptions): Listener {
|
|
@@ -17,7 +17,7 @@ function decodeCerthashStr (s: string): MultihashDigest {
|
|
|
17
17
|
export interface ParsedMultiaddr {
|
|
18
18
|
url: string
|
|
19
19
|
certhashes: MultihashDigest[]
|
|
20
|
-
remotePeer
|
|
20
|
+
remotePeer?: PeerId
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export function parseMultiaddr (ma: Multiaddr): ParsedMultiaddr {
|
|
@@ -39,10 +39,6 @@ export function parseMultiaddr (ma: Multiaddr): ParsedMultiaddr {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
if (remotePeer == null) {
|
|
43
|
-
throw new InvalidMultiaddrError('Remote peer must be present in multiaddr')
|
|
44
|
-
}
|
|
45
|
-
|
|
46
42
|
const opts = getNetConfig(ma)
|
|
47
43
|
let host = opts.host
|
|
48
44
|
|
package/dist/typedoc-urls.json
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"WebTransportCertificate": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_webtransport.WebTransportCertificate.html",
|
|
3
|
-
".:WebTransportCertificate": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_webtransport.WebTransportCertificate.html",
|
|
4
|
-
"WebTransportComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_webtransport.WebTransportComponents.html",
|
|
5
|
-
".:WebTransportComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_webtransport.WebTransportComponents.html",
|
|
6
|
-
"WebTransportInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_webtransport.WebTransportInit.html",
|
|
7
|
-
".:WebTransportInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_webtransport.WebTransportInit.html",
|
|
8
|
-
"WebTransportMetrics": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_webtransport.WebTransportMetrics.html",
|
|
9
|
-
".:WebTransportMetrics": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_webtransport.WebTransportMetrics.html",
|
|
10
|
-
"WebTransportDialEvents": "https://libp2p.github.io/js-libp2p/types/_libp2p_webtransport.WebTransportDialEvents.html",
|
|
11
|
-
".:WebTransportDialEvents": "https://libp2p.github.io/js-libp2p/types/_libp2p_webtransport.WebTransportDialEvents.html",
|
|
12
|
-
"webTransport": "https://libp2p.github.io/js-libp2p/functions/_libp2p_webtransport.webTransport.html",
|
|
13
|
-
".:webTransport": "https://libp2p.github.io/js-libp2p/functions/_libp2p_webtransport.webTransport.html"
|
|
14
|
-
}
|