remove bn.js

# Conflicts:
#	src/@types/basic.ts
#	src/handshakes/ik.ts
#	src/handshakes/xx.ts
This commit is contained in:
Marin Petrunić 2020-04-09 14:53:29 +02:00 committed by morrigan
parent 2efbfcb105
commit cc96cf5e37
3 changed files with 20 additions and 25 deletions

View File

@ -1,9 +1,8 @@
import { BN } from 'bn.js'; import {Buffer} from 'buffer';
import { Buffer } from 'buffer';
export type bytes = Buffer; export type bytes = Buffer;
export type bytes32 = Buffer; export type bytes32 = Buffer;
export type bytes16 = Buffer; export type bytes16 = Buffer;
export type uint32 = number; export type uint32 = number;
export type uint64 = BN; export type uint64 = number;

View File

@ -1,6 +1,4 @@
import {Buffer} from "buffer"; import {Buffer} from "buffer";
import {BN} from "bn.js";
import {CipherState, HandshakeState, MessageBuffer, NoiseSession} from "../@types/handshake"; import {CipherState, HandshakeState, MessageBuffer, NoiseSession} from "../@types/handshake";
import {bytes, bytes32} from "../@types/basic"; import {bytes, bytes32} from "../@types/basic";
import {generateKeypair, isValidPublicKey} from "../utils"; import {generateKeypair, isValidPublicKey} from "../utils";
@ -22,21 +20,21 @@ export class IK extends AbstractHandshake {
return { return {
hs, hs,
i: initiator, i: initiator,
mc: new BN(0), mc: 0,
}; };
} }
public sendMessage(session: NoiseSession, message: bytes): MessageBuffer { public sendMessage(session: NoiseSession, message: bytes): MessageBuffer {
let messageBuffer: MessageBuffer; let messageBuffer: MessageBuffer;
if (session.mc.eqn(0)) { if (session.mc === 0) {
messageBuffer = this.writeMessageA(session.hs, message); messageBuffer = this.writeMessageA(session.hs, message);
} else if (session.mc.eqn(1)) { } else if (session.mc === 1) {
const { messageBuffer: mb, h, cs1, cs2 } = this.writeMessageB(session.hs, message); const { messageBuffer: mb, h, cs1, cs2 } = this.writeMessageB(session.hs, message);
messageBuffer = mb; messageBuffer = mb;
session.h = h; session.h = h;
session.cs1 = cs1; session.cs1 = cs1;
session.cs2 = cs2; session.cs2 = cs2;
} else if (session.mc.gtn(1)) { } else if (session.mc > 1) {
if (session.i) { if (session.i) {
if (!session.cs1) { if (!session.cs1) {
throw new Error("CS1 (cipher state) is not defined") throw new Error("CS1 (cipher state) is not defined")
@ -54,16 +52,16 @@ export class IK extends AbstractHandshake {
throw new Error("Session invalid.") throw new Error("Session invalid.")
} }
session.mc = session.mc.add(new BN(1)); session.mc++;
return messageBuffer; return messageBuffer;
} }
public recvMessage(session: NoiseSession, message: MessageBuffer): {plaintext: bytes; valid: boolean} { public recvMessage(session: NoiseSession, message: MessageBuffer): {plaintext: bytes; valid: boolean} {
let plaintext = Buffer.alloc(0), valid = false; let plaintext = Buffer.alloc(0), valid = false;
if (session.mc.eqn(0)) { if (session.mc === 0) {
({plaintext, valid} = this.readMessageA(session.hs, message)); ({plaintext, valid} = this.readMessageA(session.hs, message));
} }
if (session.mc.eqn(1)) { if (session.mc === 1) {
const { plaintext: pt, valid: v, h, cs1, cs2 } = this.readMessageB(session.hs, message); const { plaintext: pt, valid: v, h, cs1, cs2 } = this.readMessageB(session.hs, message);
plaintext = pt; plaintext = pt;
valid = v; valid = v;
@ -71,7 +69,7 @@ export class IK extends AbstractHandshake {
session.cs1 = cs1; session.cs1 = cs1;
session.cs2 = cs2; session.cs2 = cs2;
} }
session.mc = session.mc.add(new BN(1)); session.mc++;
return {plaintext, valid}; return {plaintext, valid};
} }

View File

@ -1,6 +1,4 @@
import { Buffer } from 'buffer'; import { Buffer } from 'buffer';
import { BN } from 'bn.js';
import { bytes32, bytes } from '../@types/basic' import { bytes32, bytes } from '../@types/basic'
import { KeyPair } from '../@types/libp2p' import { KeyPair } from '../@types/libp2p'
import {generateKeypair, isValidPublicKey} from '../utils'; import {generateKeypair, isValidPublicKey} from '../utils';
@ -129,23 +127,23 @@ export class XX extends AbstractHandshake {
return { return {
hs, hs,
i: initiator, i: initiator,
mc: new BN(0), mc: 0,
}; };
} }
public sendMessage(session: NoiseSession, message: bytes, ephemeral?: KeyPair): MessageBuffer { public sendMessage(session: NoiseSession, message: bytes, ephemeral?: KeyPair): MessageBuffer {
let messageBuffer: MessageBuffer; let messageBuffer: MessageBuffer;
if (session.mc.eqn(0)) { if (session.mc === 0) {
messageBuffer = this.writeMessageA(session.hs, message, ephemeral); messageBuffer = this.writeMessageA(session.hs, message, ephemeral);
} else if (session.mc.eqn(1)) { } else if (session.mc === 1) {
messageBuffer = this.writeMessageB(session.hs, message); messageBuffer = this.writeMessageB(session.hs, message);
} else if (session.mc.eqn(2)) { } else if (session.mc === 2) {
const { h, messageBuffer: resultingBuffer, cs1, cs2 } = this.writeMessageC(session.hs, message); const { h, messageBuffer: resultingBuffer, cs1, cs2 } = this.writeMessageC(session.hs, message);
messageBuffer = resultingBuffer; messageBuffer = resultingBuffer;
session.h = h; session.h = h;
session.cs1 = cs1; session.cs1 = cs1;
session.cs2 = cs2; session.cs2 = cs2;
} else if (session.mc.gtn(2)) { } else if (session.mc > 2) {
if (session.i) { if (session.i) {
if (!session.cs1) { if (!session.cs1) {
throw new Error("CS1 (cipher state) is not defined") throw new Error("CS1 (cipher state) is not defined")
@ -163,18 +161,18 @@ export class XX extends AbstractHandshake {
throw new Error("Session invalid.") throw new Error("Session invalid.")
} }
session.mc = session.mc.add(new BN(1)); session.mc++;
return messageBuffer; return messageBuffer;
} }
public recvMessage(session: NoiseSession, message: MessageBuffer): {plaintext: bytes; valid: boolean} { public recvMessage(session: NoiseSession, message: MessageBuffer): {plaintext: bytes; valid: boolean} {
let plaintext: bytes = Buffer.alloc(0); let plaintext: bytes = Buffer.alloc(0);
let valid = false; let valid = false;
if (session.mc.eqn(0)) { if (session.mc === 0) {
({plaintext, valid} = this.readMessageA(session.hs, message)); ({plaintext, valid} = this.readMessageA(session.hs, message));
} else if (session.mc.eqn(1)) { } else if (session.mc === 1) {
({plaintext, valid} = this.readMessageB(session.hs, message)); ({plaintext, valid} = this.readMessageB(session.hs, message));
} else if (session.mc.eqn(2)) { } else if (session.mc === 2) {
const { h, plaintext: resultingPlaintext, valid: resultingValid, cs1, cs2 } = this.readMessageC(session.hs, message); const { h, plaintext: resultingPlaintext, valid: resultingValid, cs1, cs2 } = this.readMessageC(session.hs, message);
plaintext = resultingPlaintext; plaintext = resultingPlaintext;
valid = resultingValid; valid = resultingValid;
@ -182,7 +180,7 @@ export class XX extends AbstractHandshake {
session.cs1 = cs1; session.cs1 = cs1;
session.cs2 = cs2; session.cs2 = cs2;
} }
session.mc = session.mc.add(new BN(1)); session.mc++;
return {plaintext, valid}; return {plaintext, valid};
} }
} }