@libp2p/interface-compliance-tests 7.0.33 → 7.0.34-2d4c93ed6
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection-encryption/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAU,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEhF,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,UAAU,CAAA;CACvB;yBAEe,QAAQ,SAAS,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,KAAG,IAAI;AAA3F,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection-encryption/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAU,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEhF,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,UAAU,CAAA;CACvB;yBAEe,QAAQ,SAAS,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,KAAG,IAAI;AAA3F,wBA0MC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { generateKeyPair } from '@libp2p/crypto/keys';
|
|
2
|
-
import { peerIdFromPrivateKey } from '@libp2p/peer-id';
|
|
2
|
+
import { peerIdFromPrivateKey, peerIdFromString } from '@libp2p/peer-id';
|
|
3
3
|
import { multiaddrConnectionPair, echo } from '@libp2p/utils';
|
|
4
4
|
import { expect } from 'aegir/chai';
|
|
5
5
|
import all from 'it-all';
|
|
@@ -88,6 +88,78 @@ export default (common) => {
|
|
|
88
88
|
expect(err).to.have.property('name', 'UnexpectedPeerError');
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
|
+
describe('remote peer id parsed from a string', () => {
|
|
92
|
+
let rsaKey;
|
|
93
|
+
let rsaPeer;
|
|
94
|
+
let cryptoRsa;
|
|
95
|
+
before(async () => {
|
|
96
|
+
rsaKey = await generateKeyPair('RSA', 512);
|
|
97
|
+
rsaPeer = peerIdFromPrivateKey(rsaKey);
|
|
98
|
+
cryptoRsa = await common.setup({
|
|
99
|
+
privateKey: rsaKey
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
async function secure(opts) {
|
|
103
|
+
const [remoteConn, localConn] = multiaddrConnectionPair();
|
|
104
|
+
try {
|
|
105
|
+
const [inboundResult, outboundResult] = await Promise.all([
|
|
106
|
+
opts.responder.secureInbound(localConn, {
|
|
107
|
+
remotePeer: opts.expectedByResponder
|
|
108
|
+
}),
|
|
109
|
+
opts.initiator.secureOutbound(remoteConn, {
|
|
110
|
+
remotePeer: opts.expectedByInitiator
|
|
111
|
+
})
|
|
112
|
+
]);
|
|
113
|
+
return { inbound: inboundResult.remotePeer, outbound: outboundResult.remotePeer };
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
localConn.abort(new Error('test finished'));
|
|
117
|
+
remoteConn.abort(new Error('test finished'));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function parse(peerId) {
|
|
121
|
+
return peerIdFromString(peerId.toString());
|
|
122
|
+
}
|
|
123
|
+
it('should match an RSA peer id on outbound connections', async () => {
|
|
124
|
+
const expected = parse(rsaPeer);
|
|
125
|
+
expect(expected.publicKey).to.be.undefined();
|
|
126
|
+
const { outbound } = await secure({ initiator: crypto, responder: cryptoRsa, expectedByInitiator: expected });
|
|
127
|
+
expect(outbound.equals(rsaPeer)).to.be.true();
|
|
128
|
+
expect(outbound.publicKey?.equals(rsaKey.publicKey)).to.be.true();
|
|
129
|
+
});
|
|
130
|
+
it('should not match an RSA peer id against a different key on outbound connections', async () => {
|
|
131
|
+
const expected = parse(rsaPeer);
|
|
132
|
+
expect(expected.publicKey).to.be.undefined();
|
|
133
|
+
await expect(secure({ initiator: crypto, responder: cryptoRemote, expectedByInitiator: expected })).to.eventually.be.rejected
|
|
134
|
+
.with.property('name', 'UnexpectedPeerError');
|
|
135
|
+
});
|
|
136
|
+
it('should match an RSA peer id on inbound connections', async () => {
|
|
137
|
+
const expected = parse(rsaPeer);
|
|
138
|
+
expect(expected.publicKey).to.be.undefined();
|
|
139
|
+
const { inbound } = await secure({ initiator: cryptoRsa, responder: cryptoRemote, expectedByResponder: expected });
|
|
140
|
+
expect(inbound.equals(rsaPeer)).to.be.true();
|
|
141
|
+
expect(inbound.publicKey?.equals(rsaKey.publicKey)).to.be.true();
|
|
142
|
+
});
|
|
143
|
+
it('should return the key of an RSA peer on inbound connections without an expected peer', async () => {
|
|
144
|
+
const { inbound } = await secure({ initiator: cryptoRsa, responder: cryptoRemote });
|
|
145
|
+
expect(inbound.equals(rsaPeer)).to.be.true();
|
|
146
|
+
expect(inbound.publicKey?.equals(rsaKey.publicKey)).to.be.true();
|
|
147
|
+
});
|
|
148
|
+
it('should not match an RSA peer id against a different key on inbound connections', async () => {
|
|
149
|
+
const expected = parse(rsaPeer);
|
|
150
|
+
expect(expected.publicKey).to.be.undefined();
|
|
151
|
+
await expect(secure({ initiator: crypto, responder: cryptoRemote, expectedByResponder: expected })).to.eventually.be.rejected
|
|
152
|
+
.with.property('name', 'UnexpectedPeerError');
|
|
153
|
+
});
|
|
154
|
+
it('should match an Ed25519 peer id', async () => {
|
|
155
|
+
const { outbound } = await secure({ initiator: crypto, responder: cryptoRemote, expectedByInitiator: parse(remotePeer) });
|
|
156
|
+
expect(outbound.equals(remotePeer)).to.be.true();
|
|
157
|
+
});
|
|
158
|
+
it('should not match a different Ed25519 peer id', async () => {
|
|
159
|
+
await expect(secure({ initiator: crypto, responder: cryptoRemote, expectedByInitiator: parse(mitmPeer) })).to.eventually.be.rejected
|
|
160
|
+
.with.property('name', 'UnexpectedPeerError');
|
|
161
|
+
});
|
|
162
|
+
});
|
|
91
163
|
});
|
|
92
164
|
};
|
|
93
165
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection-encryption/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection-encryption/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,QAAQ,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAQ5E,eAAe,CAAC,MAAoE,EAAQ,EAAE;IAC5F,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC/D,IAAI,MAA2B,CAAA;QAC/B,IAAI,YAAiC,CAAA;QACrC,IAAI,SAAiB,CAAA;QACrB,IAAI,UAAkB,CAAA;QACtB,IAAI,QAAgB,CAAA;QAEpB,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAA;YACjD,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;YAC1C,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAA;YAClD,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAA;YAE5C,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBAC1B,UAAU,EAAE,QAAQ;aACrB,CAAC,CAAA;YACF,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBAChC,UAAU,EAAE,SAAS;aACtB,CAAC,CAAA;YAEF,QAAQ,GAAG,oBAAoB,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,uBAAuB,EAAE,CAAA;YAEzD,MAAM,CACJ,aAAa,EACb,cAAc,CACf,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACpB,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC;gBACtC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE;oBAC/B,UAAU;iBACX,CAAC;aACH,CAAC,CAAA;YAEF,cAAc;YACd,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAE9C,MAAM,KAAK,GAAiB,EAAE,CAAA;YAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAA;YACjE,CAAC;YAED,wCAAwC;YACxC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC;gBAC9B,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;oBAChC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;wBACxB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BACzC,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;wBAClD,CAAC;oBACH,CAAC;oBAED,MAAM,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;gBACzC,CAAC,CAAC;aACH,CAAC,CAAA;YAEF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,uBAAuB,EAAE,CAAA;YAEzD,MAAM,CACJ,aAAa,EACb,cAAc,CACf,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACpB,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC;gBACrC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE;oBAChC,UAAU;iBACX,CAAC;aACH,CAAC,CAAA;YAEF,mDAAmD;YACnD,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC1E,oDAAoD;YACpD,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC9E,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,uBAAuB,EAAE,CAAA;YAEzD,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE;oBACpC,UAAU,EAAE,QAAQ;iBACrB,CAAC;gBACF,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE;oBAChC,UAAU;iBACX,CAAC;aACH,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;gBACnC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;YAC7D,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;YACnD,IAAI,MAAkB,CAAA;YACtB,IAAI,OAAe,CAAA;YACnB,IAAI,SAA8B,CAAA;YAElC,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBAC1C,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;gBACtC,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;oBAC7B,UAAU,EAAE,MAAM;iBACnB,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YASF,KAAK,UAAU,MAAM,CAAE,IAAmB;gBACxC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,uBAAuB,EAAE,CAAA;gBAEzD,IAAI,CAAC;oBACH,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;wBACxD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE;4BACtC,UAAU,EAAE,IAAI,CAAC,mBAAmB;yBACrC,CAAC;wBACF,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE;4BACxC,UAAU,EAAE,IAAI,CAAC,mBAAmB;yBACrC,CAAC;qBACH,CAAC,CAAA;oBAEF,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,UAAU,EAAE,CAAA;gBACnF,CAAC;wBAAS,CAAC;oBACT,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;oBAC3C,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;gBAC9C,CAAC;YACH,CAAC;YAED,SAAS,KAAK,CAAE,MAAc;gBAC5B,OAAO,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC5C,CAAC;YAED,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAA;gBAE5C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAC7G,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;gBAC7C,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;YACnE,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;gBAC/F,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAA;gBAE5C,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ;qBAC1H,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;gBAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAA;gBAE5C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAClH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;gBAC5C,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;YAClE,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;gBACpG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAA;gBACnF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;gBAC5C,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;YAClE,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;gBAC9F,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAA;gBAE5C,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ;qBAC1H,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;gBAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;gBACzH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;YAClD,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;gBAC5D,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ;qBACjI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/interface-compliance-tests",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.34-2d4c93ed6",
|
|
4
4
|
"description": "Compliance tests for JS libp2p interfaces",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/interface-compliance-tests#readme",
|
|
@@ -86,15 +86,15 @@
|
|
|
86
86
|
"test:electron-main": "aegir test -t electron-main"
|
|
87
87
|
},
|
|
88
88
|
"dependencies": {
|
|
89
|
-
"@libp2p/crypto": "
|
|
90
|
-
"@libp2p/echo": "
|
|
91
|
-
"@libp2p/interface": "
|
|
92
|
-
"@libp2p/interface-internal": "
|
|
93
|
-
"@libp2p/logger": "
|
|
94
|
-
"@libp2p/memory": "
|
|
95
|
-
"@libp2p/peer-id": "
|
|
96
|
-
"@libp2p/plaintext": "
|
|
97
|
-
"@libp2p/utils": "
|
|
89
|
+
"@libp2p/crypto": "5.1.25-2d4c93ed6",
|
|
90
|
+
"@libp2p/echo": "3.1.16-2d4c93ed6",
|
|
91
|
+
"@libp2p/interface": "3.4.0-2d4c93ed6",
|
|
92
|
+
"@libp2p/interface-internal": "3.2.0-2d4c93ed6",
|
|
93
|
+
"@libp2p/logger": "6.2.15-2d4c93ed6",
|
|
94
|
+
"@libp2p/memory": "2.0.30-2d4c93ed6",
|
|
95
|
+
"@libp2p/peer-id": "6.0.17-2d4c93ed6",
|
|
96
|
+
"@libp2p/plaintext": "3.0.30-2d4c93ed6",
|
|
97
|
+
"@libp2p/utils": "7.4.3-2d4c93ed6",
|
|
98
98
|
"@multiformats/multiaddr": "^13.0.3",
|
|
99
99
|
"@multiformats/multiaddr-matcher": "^3.0.2",
|
|
100
100
|
"aegir": "^48.1.1",
|
|
@@ -104,9 +104,9 @@
|
|
|
104
104
|
"it-map": "^3.1.4",
|
|
105
105
|
"it-pushable": "^3.2.3",
|
|
106
106
|
"it-to-buffer": "^5.0.0",
|
|
107
|
-
"libp2p": "
|
|
107
|
+
"libp2p": "3.4.0-2d4c93ed6",
|
|
108
108
|
"p-defer": "^4.0.1",
|
|
109
|
-
"p-event": "^
|
|
109
|
+
"p-event": "^8.0.1",
|
|
110
110
|
"p-retry": "^8.0.0",
|
|
111
111
|
"p-wait-for": "^6.0.0",
|
|
112
112
|
"protons-runtime": "^7.0.0",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { generateKeyPair } from '@libp2p/crypto/keys'
|
|
2
|
-
import { peerIdFromPrivateKey } from '@libp2p/peer-id'
|
|
2
|
+
import { peerIdFromPrivateKey, peerIdFromString } from '@libp2p/peer-id'
|
|
3
3
|
import { multiaddrConnectionPair, echo } from '@libp2p/utils'
|
|
4
4
|
import { expect } from 'aegir/chai'
|
|
5
5
|
import all from 'it-all'
|
|
@@ -119,5 +119,100 @@ export default (common: TestSetup<ConnectionEncrypter, ConnectionEncrypterSetupA
|
|
|
119
119
|
expect(err).to.have.property('name', 'UnexpectedPeerError')
|
|
120
120
|
})
|
|
121
121
|
})
|
|
122
|
+
|
|
123
|
+
describe('remote peer id parsed from a string', () => {
|
|
124
|
+
let rsaKey: PrivateKey
|
|
125
|
+
let rsaPeer: PeerId
|
|
126
|
+
let cryptoRsa: ConnectionEncrypter
|
|
127
|
+
|
|
128
|
+
before(async () => {
|
|
129
|
+
rsaKey = await generateKeyPair('RSA', 512)
|
|
130
|
+
rsaPeer = peerIdFromPrivateKey(rsaKey)
|
|
131
|
+
cryptoRsa = await common.setup({
|
|
132
|
+
privateKey: rsaKey
|
|
133
|
+
})
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
interface SecureOptions {
|
|
137
|
+
initiator: ConnectionEncrypter
|
|
138
|
+
responder: ConnectionEncrypter
|
|
139
|
+
expectedByInitiator?: PeerId
|
|
140
|
+
expectedByResponder?: PeerId
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
async function secure (opts: SecureOptions): Promise<{ inbound: PeerId, outbound: PeerId }> {
|
|
144
|
+
const [remoteConn, localConn] = multiaddrConnectionPair()
|
|
145
|
+
|
|
146
|
+
try {
|
|
147
|
+
const [inboundResult, outboundResult] = await Promise.all([
|
|
148
|
+
opts.responder.secureInbound(localConn, {
|
|
149
|
+
remotePeer: opts.expectedByResponder
|
|
150
|
+
}),
|
|
151
|
+
opts.initiator.secureOutbound(remoteConn, {
|
|
152
|
+
remotePeer: opts.expectedByInitiator
|
|
153
|
+
})
|
|
154
|
+
])
|
|
155
|
+
|
|
156
|
+
return { inbound: inboundResult.remotePeer, outbound: outboundResult.remotePeer }
|
|
157
|
+
} finally {
|
|
158
|
+
localConn.abort(new Error('test finished'))
|
|
159
|
+
remoteConn.abort(new Error('test finished'))
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function parse (peerId: PeerId): PeerId {
|
|
164
|
+
return peerIdFromString(peerId.toString())
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
it('should match an RSA peer id on outbound connections', async () => {
|
|
168
|
+
const expected = parse(rsaPeer)
|
|
169
|
+
expect(expected.publicKey).to.be.undefined()
|
|
170
|
+
|
|
171
|
+
const { outbound } = await secure({ initiator: crypto, responder: cryptoRsa, expectedByInitiator: expected })
|
|
172
|
+
expect(outbound.equals(rsaPeer)).to.be.true()
|
|
173
|
+
expect(outbound.publicKey?.equals(rsaKey.publicKey)).to.be.true()
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
it('should not match an RSA peer id against a different key on outbound connections', async () => {
|
|
177
|
+
const expected = parse(rsaPeer)
|
|
178
|
+
expect(expected.publicKey).to.be.undefined()
|
|
179
|
+
|
|
180
|
+
await expect(secure({ initiator: crypto, responder: cryptoRemote, expectedByInitiator: expected })).to.eventually.be.rejected
|
|
181
|
+
.with.property('name', 'UnexpectedPeerError')
|
|
182
|
+
})
|
|
183
|
+
|
|
184
|
+
it('should match an RSA peer id on inbound connections', async () => {
|
|
185
|
+
const expected = parse(rsaPeer)
|
|
186
|
+
expect(expected.publicKey).to.be.undefined()
|
|
187
|
+
|
|
188
|
+
const { inbound } = await secure({ initiator: cryptoRsa, responder: cryptoRemote, expectedByResponder: expected })
|
|
189
|
+
expect(inbound.equals(rsaPeer)).to.be.true()
|
|
190
|
+
expect(inbound.publicKey?.equals(rsaKey.publicKey)).to.be.true()
|
|
191
|
+
})
|
|
192
|
+
|
|
193
|
+
it('should return the key of an RSA peer on inbound connections without an expected peer', async () => {
|
|
194
|
+
const { inbound } = await secure({ initiator: cryptoRsa, responder: cryptoRemote })
|
|
195
|
+
expect(inbound.equals(rsaPeer)).to.be.true()
|
|
196
|
+
expect(inbound.publicKey?.equals(rsaKey.publicKey)).to.be.true()
|
|
197
|
+
})
|
|
198
|
+
|
|
199
|
+
it('should not match an RSA peer id against a different key on inbound connections', async () => {
|
|
200
|
+
const expected = parse(rsaPeer)
|
|
201
|
+
expect(expected.publicKey).to.be.undefined()
|
|
202
|
+
|
|
203
|
+
await expect(secure({ initiator: crypto, responder: cryptoRemote, expectedByResponder: expected })).to.eventually.be.rejected
|
|
204
|
+
.with.property('name', 'UnexpectedPeerError')
|
|
205
|
+
})
|
|
206
|
+
|
|
207
|
+
it('should match an Ed25519 peer id', async () => {
|
|
208
|
+
const { outbound } = await secure({ initiator: crypto, responder: cryptoRemote, expectedByInitiator: parse(remotePeer) })
|
|
209
|
+
expect(outbound.equals(remotePeer)).to.be.true()
|
|
210
|
+
})
|
|
211
|
+
|
|
212
|
+
it('should not match a different Ed25519 peer id', async () => {
|
|
213
|
+
await expect(secure({ initiator: crypto, responder: cryptoRemote, expectedByInitiator: parse(mitmPeer) })).to.eventually.be.rejected
|
|
214
|
+
.with.property('name', 'UnexpectedPeerError')
|
|
215
|
+
})
|
|
216
|
+
})
|
|
122
217
|
})
|
|
123
218
|
}
|
package/dist/typedoc-urls.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"ConnectionEncrypterSetupArgs": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface-compliance-tests.connection-encryption.ConnectionEncrypterSetupArgs.html",
|
|
3
|
-
"./connection-encryption:ConnectionEncrypterSetupArgs": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface-compliance-tests.connection-encryption.ConnectionEncrypterSetupArgs.html",
|
|
4
|
-
"default": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface-compliance-tests.connection-encryption.default.html",
|
|
5
|
-
"./connection-encryption:default": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface-compliance-tests.connection-encryption.default.html",
|
|
6
|
-
"TestSetup": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface-compliance-tests.index.TestSetup.html",
|
|
7
|
-
".:TestSetup": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface-compliance-tests.index.TestSetup.html",
|
|
8
|
-
"./peer-discovery:default": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface-compliance-tests.peer-discovery.default.html",
|
|
9
|
-
"./stream-muxer:default": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface-compliance-tests.stream-muxer.default.html",
|
|
10
|
-
"TransportTestFixtures": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface-compliance-tests.transport.TransportTestFixtures.html",
|
|
11
|
-
"./transport:TransportTestFixtures": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_interface-compliance-tests.transport.TransportTestFixtures.html",
|
|
12
|
-
"./transport:default": "https://libp2p.github.io/js-libp2p/variables/_libp2p_interface-compliance-tests.transport.default.html"
|
|
13
|
-
}
|