mirror of
https://github.com/fluencelabs/js-libp2p-noise
synced 2025-04-25 19:42:25 +00:00
Address PR comments
This commit is contained in:
parent
6ee527e621
commit
36c3fa8ccb
@ -28,7 +28,6 @@
|
|||||||
"@typescript-eslint/parser": "^2.6.0",
|
"@typescript-eslint/parser": "^2.6.0",
|
||||||
"bn.js-typings": "^1.0.1",
|
"bn.js-typings": "^1.0.1",
|
||||||
"chai": "^4.2.0",
|
"chai": "^4.2.0",
|
||||||
"debug": "^4.1.1",
|
|
||||||
"eslint": "^6.6.0",
|
"eslint": "^6.6.0",
|
||||||
"libp2p-crypto": "^0.17.1",
|
"libp2p-crypto": "^0.17.1",
|
||||||
"mocha": "^6.2.2",
|
"mocha": "^6.2.2",
|
||||||
@ -56,6 +55,7 @@
|
|||||||
"bcrypto": "^4.2.3",
|
"bcrypto": "^4.2.3",
|
||||||
"bn.js": "^5.0.0",
|
"bn.js": "^5.0.0",
|
||||||
"buffer": "^5.4.3",
|
"buffer": "^5.4.3",
|
||||||
|
"debug": "^4.1.1",
|
||||||
"it-buffer": "^0.1.1",
|
"it-buffer": "^0.1.1",
|
||||||
"it-length-prefixed": "^3.0.0",
|
"it-length-prefixed": "^3.0.0",
|
||||||
"it-pair": "^1.0.0",
|
"it-pair": "^1.0.0",
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
import { Duplex } from "it-pair";
|
import { Duplex } from "it-pair";
|
||||||
import { Handshake } from "./handshake";
|
import { Handshake } from "./handshake";
|
||||||
|
import { Buffer } from "buffer";
|
||||||
|
|
||||||
interface ReturnEncryptionWrapper {
|
interface ReturnEncryptionWrapper {
|
||||||
(source: any): any;
|
(source: Iterable<Uint8Array>): any;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns generator that encrypts payload from the user
|
// Returns generator that encrypts payload from the user
|
||||||
export function encryptStream(handshake: Handshake): ReturnEncryptionWrapper {
|
export function encryptStream(handshake: Handshake): ReturnEncryptionWrapper {
|
||||||
return async function * (source) {
|
return async function * (source) {
|
||||||
for await (const chunk of source) {
|
for await (const chunk of source) {
|
||||||
const data = await handshake.encrypt(chunk, handshake.session);
|
const chunkBuffer = Buffer.from(chunk);
|
||||||
|
const data = await handshake.encrypt(chunkBuffer, handshake.session);
|
||||||
yield data;
|
yield data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -20,7 +22,8 @@ export function encryptStream(handshake: Handshake): ReturnEncryptionWrapper {
|
|||||||
export function decryptStream(handshake: Handshake): ReturnEncryptionWrapper {
|
export function decryptStream(handshake: Handshake): ReturnEncryptionWrapper {
|
||||||
return async function * (source) {
|
return async function * (source) {
|
||||||
for await (const chunk of source) {
|
for await (const chunk of source) {
|
||||||
const decrypted = await handshake.decrypt(chunk, handshake.session);
|
const chunkBuffer = Buffer.from(chunk);
|
||||||
|
const decrypted = await handshake.decrypt(chunkBuffer, handshake.session);
|
||||||
yield decrypted
|
yield decrypted
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,8 +61,8 @@ export class Handshake {
|
|||||||
logger("Stage 0 - Initiator finished proposing, sent signed NoiseHandshake payload.");
|
logger("Stage 0 - Initiator finished proposing, sent signed NoiseHandshake payload.");
|
||||||
} else {
|
} else {
|
||||||
const receivedMessageBuffer = decodeMessageBuffer((await this.connection.readLP()).slice());
|
const receivedMessageBuffer = decodeMessageBuffer((await this.connection.readLP()).slice());
|
||||||
|
|
||||||
const plaintext = await this.xx.recvMessage(this.session, receivedMessageBuffer);
|
const plaintext = await this.xx.recvMessage(this.session, receivedMessageBuffer);
|
||||||
|
// TODO: Verify payload
|
||||||
logger("Stage 0 - Responder received proposed message and remote static public key.");
|
logger("Stage 0 - Responder received proposed message and remote static public key.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -72,7 +72,8 @@ export class Handshake {
|
|||||||
if (this.isInitiator) {
|
if (this.isInitiator) {
|
||||||
const receivedMessageBuffer = decodeMessageBuffer((await this.connection.readLP()).slice());
|
const receivedMessageBuffer = decodeMessageBuffer((await this.connection.readLP()).slice());
|
||||||
const plaintext = await this.xx.recvMessage(this.session, receivedMessageBuffer);
|
const plaintext = await this.xx.recvMessage(this.session, receivedMessageBuffer);
|
||||||
logger('Stage 1 - Initiator received the message.');
|
// TODO: Verify payload
|
||||||
|
logger('Stage 1 - Initiator received the message. Got remote\'s static key.');
|
||||||
} else {
|
} else {
|
||||||
// create payload as responder
|
// create payload as responder
|
||||||
const signedPayload = signPayload(this.libp2pPrivateKey, getHandshakePayload(this.staticKeys.publicKey));
|
const signedPayload = signPayload(this.libp2pPrivateKey, getHandshakePayload(this.staticKeys.publicKey));
|
||||||
@ -97,16 +98,17 @@ export class Handshake {
|
|||||||
} else {
|
} else {
|
||||||
const receivedMessageBuffer = (await this.connection.readLP()).slice();
|
const receivedMessageBuffer = (await this.connection.readLP()).slice();
|
||||||
const plaintext = await this.xx.recvMessage(this.session, decodeMessageBuffer(receivedMessageBuffer));
|
const plaintext = await this.xx.recvMessage(this.session, decodeMessageBuffer(receivedMessageBuffer));
|
||||||
logger('Stage 2 - Responder received the message, finished handshake.')
|
logger('Stage 2 - Responder received the message, finished handshake. Got remote\'s static key.')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
encrypt(plaintext: bytes, session: NoiseSession): bytes {
|
public encrypt(plaintext: bytes, session: NoiseSession): bytes {
|
||||||
const cs = this.getCS(session);
|
const cs = this.getCS(session);
|
||||||
|
|
||||||
return this.xx.encryptWithAd(cs, Buffer.alloc(0), plaintext);
|
return this.xx.encryptWithAd(cs, Buffer.alloc(0), plaintext);
|
||||||
}
|
}
|
||||||
|
|
||||||
decrypt(ciphertext: bytes, session: NoiseSession): bytes {
|
public decrypt(ciphertext: bytes, session: NoiseSession): bytes {
|
||||||
const cs = this.getCS(session, false);
|
const cs = this.getCS(session, false);
|
||||||
return this.xx.decryptWithAd(cs, Buffer.alloc(0), ciphertext);
|
return this.xx.decryptWithAd(cs, Buffer.alloc(0), ciphertext);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user