Skip to content

Commit 0b3f1a3

Browse files
committed
test: Symmetric encryption with waku store
1 parent 44efd28 commit 0b3f1a3

File tree

1 file changed

+29
-17
lines changed

1 file changed

+29
-17
lines changed

src/lib/waku_store/index.spec.ts

+29-17
Original file line numberDiff line numberDiff line change
@@ -146,32 +146,42 @@ describe('Waku Store', () => {
146146
expect(result).to.not.eq(-1);
147147
});
148148

149-
it('Retrieves history with asymmetric encrypted messages', async function () {
149+
it('Retrieves history with asymmetric & symmetric encrypted messages', async function () {
150150
this.timeout(10_000);
151151

152152
nimWaku = new NimWaku(makeLogFileName(this));
153153
await nimWaku.start({ persistMessages: true, lightpush: true });
154154

155-
const encryptedMessageText = 'This message is encrypted for me';
155+
const encryptedAsymmetricMessageText =
156+
'This message is encrypted for me using asymmetric';
157+
const encryptedSymmetricMessageText =
158+
'This message is encrypted for me using symmetric encryption';
156159
const clearMessageText =
157160
'This is a clear text message for everyone to read';
158161
const otherEncMessageText =
159162
'This message is not for and I must not be able to read it';
160163

161164
const privateKey = generatePrivateKey();
165+
const symKey = generatePrivateKey();
162166
const publicKey = getPublicKey(privateKey);
163167

164-
const [encryptedMessage, clearMessage, otherEncMessage] = await Promise.all(
165-
[
166-
WakuMessage.fromUtf8String(encryptedMessageText, {
167-
encPublicKey: publicKey,
168-
}),
169-
WakuMessage.fromUtf8String(clearMessageText),
170-
WakuMessage.fromUtf8String(otherEncMessageText, {
171-
encPublicKey: getPublicKey(generatePrivateKey()),
172-
}),
173-
]
174-
);
168+
const [
169+
encryptedAsymmetricMessage,
170+
encryptedSymmetricMessage,
171+
clearMessage,
172+
otherEncMessage,
173+
] = await Promise.all([
174+
WakuMessage.fromUtf8String(encryptedAsymmetricMessageText, {
175+
encPublicKey: publicKey,
176+
}),
177+
WakuMessage.fromUtf8String(encryptedSymmetricMessageText, {
178+
symKey: symKey,
179+
}),
180+
WakuMessage.fromUtf8String(clearMessageText),
181+
WakuMessage.fromUtf8String(otherEncMessageText, {
182+
encPublicKey: getPublicKey(generatePrivateKey()),
183+
}),
184+
]);
175185

176186
dbg('Messages have been encrypted');
177187

@@ -204,7 +214,8 @@ describe('Waku Store', () => {
204214

205215
dbg('Sending messages using light push');
206216
await Promise.all([
207-
await waku1.lightPush.push(encryptedMessage),
217+
waku1.lightPush.push(encryptedAsymmetricMessage),
218+
waku1.lightPush.push(encryptedSymmetricMessage),
208219
waku1.lightPush.push(otherEncMessage),
209220
waku1.lightPush.push(clearMessage),
210221
]);
@@ -218,13 +229,14 @@ describe('Waku Store', () => {
218229
dbg('Retrieve messages from store');
219230
const messages = await waku2.store.queryHistory({
220231
contentTopics: [],
221-
decryptionPrivateKeys: [privateKey],
232+
decryptionKeys: [privateKey, symKey],
222233
});
223234

224-
expect(messages?.length).eq(2);
235+
expect(messages?.length).eq(3);
225236
if (!messages) throw 'Length was tested';
226237
expect(messages[0].payloadAsUtf8).to.eq(clearMessageText);
227-
expect(messages[1].payloadAsUtf8).to.eq(encryptedMessageText);
238+
expect(messages[1].payloadAsUtf8).to.eq(encryptedSymmetricMessageText);
239+
expect(messages[2].payloadAsUtf8).to.eq(encryptedAsymmetricMessageText);
228240

229241
await Promise.all([waku1.stop(), waku2.stop()]);
230242
});

0 commit comments

Comments
 (0)