Merge branch 'morrigan/fix-interop' into revert-51-remove-bcrypto-dependency

# Conflicts:
#	package.json
#	src/@types/basic.ts
#	src/handshakes/ik.ts
#	src/handshakes/xx.ts
#	yarn.lock
This commit is contained in:
morrigan 2020-04-22 19:07:03 +02:00
commit f5f4b9f344
11 changed files with 90 additions and 81 deletions

View File

@ -19,6 +19,9 @@ Stable version, interobable with go-libp2p-noise!
- fix types to be compatible with rest of libp2p typescript projects - fix types to be compatible with rest of libp2p typescript projects
- update it-pb-rpc to 0.1.8 (contains proper typescript types) - update it-pb-rpc to 0.1.8 (contains proper typescript types)
### Bugfixes
- changed bcrypto imports to use pure js versions (web bundle size reduction)
## [1.0.0-rc.9] - 2019-03-11 ## [1.0.0-rc.9] - 2019-03-11
### Bugfixes ### Bugfixes

View File

@ -1,6 +1,6 @@
{ {
"name": "libp2p-noise", "name": "libp2p-noise",
"version": "1.1.0-rc1", "version": "1.0.0",
"main": "dist/index.js", "main": "dist/index.js",
"types": "dist/index.d.ts", "types": "dist/index.d.ts",
"module": "lib/index.js", "module": "lib/index.js",
@ -20,6 +20,7 @@
"scripts": { "scripts": {
"prebuild": "rm -rf lib && rm -rf dist", "prebuild": "rm -rf lib && rm -rf dist",
"build": "yarn run build:node && yarn run build:web && yarn run build:types", "build": "yarn run build:node && yarn run build:web && yarn run build:types",
"bundle": "webpack --config webpack.bundle.config.js",
"build:node": "babel --no-babelrc --config-file ./babel.config.json src --copy-files -x .ts -d dist --source-maps", "build:node": "babel --no-babelrc --config-file ./babel.config.json src --copy-files -x .ts -d dist --source-maps",
"build:web": "babel --no-babelrc --config-file ./babel.web.config.json src --copy-files -x .ts -d lib --source-maps", "build:web": "babel --no-babelrc --config-file ./babel.web.config.json src --copy-files -x .ts -d lib --source-maps",
"build:types": "tsc --declaration --outDir dist --emitDeclarationOnly", "build:types": "tsc --declaration --outDir dist --emitDeclarationOnly",
@ -47,6 +48,7 @@
"@types/mocha": "^5.2.7", "@types/mocha": "^5.2.7",
"@typescript-eslint/eslint-plugin": "^2.6.0", "@typescript-eslint/eslint-plugin": "^2.6.0",
"@typescript-eslint/parser": "^2.6.0", "@typescript-eslint/parser": "^2.6.0",
"babel-loader": "^8.1.0",
"chai": "^4.2.0", "chai": "^4.2.0",
"eslint": "^6.6.0", "eslint": "^6.6.0",
"karma": "^4.4.1", "karma": "^4.4.1",
@ -60,10 +62,11 @@
"sinon": "^8.1.0", "sinon": "^8.1.0",
"ts-loader": "^6.2.1", "ts-loader": "^6.2.1",
"typescript": "^3.6.4", "typescript": "^3.6.4",
"webpack": "^4.41.5" "webpack": "^4.41.5",
"webpack-bundle-analyzer": "^3.6.1",
"webpack-cli": "^3.3.11"
}, },
"dependencies": { "dependencies": {
"@types/bn.js": "^4.11.6",
"bcrypto": "5.1.0", "bcrypto": "5.1.0",
"bn.js": "^5.0.0", "bn.js": "^5.0.0",
"buffer": "^5.4.3", "buffer": "^5.4.3",

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,5 +1,7 @@
import {Buffer} from "buffer"; import {Buffer} from "buffer";
import { AEAD, x25519, SHA256 } from 'bcrypto'; import AEAD from 'bcrypto/lib/js/aead';
import x25519 from 'bcrypto/lib/js/x25519';
import SHA256 from 'bcrypto/lib/js/sha256';
import {bytes, bytes32, uint32} from "../@types/basic"; import {bytes, bytes32, uint32} from "../@types/basic";
import {CipherState, MessageBuffer, SymmetricState} from "../@types/handshake"; import {CipherState, MessageBuffer, SymmetricState} from "../@types/handshake";

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};
} }
} }

View File

@ -1,4 +1,4 @@
import {x25519} from 'bcrypto'; import x25519 from 'bcrypto/lib/js/x25519';
import {Buffer} from "buffer"; import {Buffer} from "buffer";
import Wrap from 'it-pb-rpc'; import Wrap from 'it-pb-rpc';
import DuplexPair from 'it-pair/duplex'; import DuplexPair from 'it-pair/duplex';

View File

@ -1,7 +1,9 @@
import {HKDF, SHA256, x25519} from 'bcrypto'; import HKDF from 'bcrypto/lib/hkdf';
import x25519 from 'bcrypto/lib/js/x25519';
import SHA256 from 'bcrypto/lib/js/sha256';
import {Buffer} from "buffer"; import {Buffer} from "buffer";
import PeerId from "peer-id"; import PeerId from "peer-id";
import * as crypto from 'libp2p-crypto'; import {keys} from 'libp2p-crypto';
import {KeyPair} from "./@types/libp2p"; import {KeyPair} from "./@types/libp2p";
import {bytes, bytes32} from "./@types/basic"; import {bytes, bytes32} from "./@types/basic";
import {Hkdf, INoisePayload} from "./@types/handshake"; import {Hkdf, INoisePayload} from "./@types/handshake";
@ -91,7 +93,7 @@ export async function verifySignedPayload(
} }
const generatedPayload = getHandshakePayload(noiseStaticKey); const generatedPayload = getHandshakePayload(noiseStaticKey);
// Unmarshaling from PublicKey protobuf // Unmarshaling from PublicKey protobuf
const publicKey = crypto.keys.unmarshalPublicKey(identityKey); const publicKey = keys.unmarshalPublicKey(identityKey);
if (!publicKey.verify(generatedPayload, payload.identitySig)) { if (!publicKey.verify(generatedPayload, payload.identitySig)) {
throw new Error("Static key doesn't match to peer that signed payload!"); throw new Error("Static key doesn't match to peer that signed payload!");
} }

View File

@ -1,8 +1,9 @@
import * as crypto from 'libp2p-crypto'; import {keys} from 'libp2p-crypto';
import {KeyPair, PeerId} from "../src/@types/libp2p"; import {KeyPair} from "../src/@types/libp2p";
import PeerId from "peer-id";
export async function generateEd25519Keys() { export async function generateEd25519Keys() {
return await crypto.keys.generateKeyPair('ed25519'); return await keys.generateKeyPair('ed25519');
} }
export function getKeyPairFromPeerId(peerId: PeerId): KeyPair { export function getKeyPairFromPeerId(peerId: PeerId): KeyPair {

24
webpack.bundle.config.js Normal file
View File

@ -0,0 +1,24 @@
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = {
entry: "./src/index.ts",
mode: "production",
output: {
filename: "../bundle/bundle.js"
},
node: {
fs: "empty"
},
resolve: {
extensions: [".ts", ".js"],
},
module: {
rules: [
{test: /\.ts$/, exclude: [/node_modules/], use: {loader: "babel-loader", options: require("./babel.web.config")}}
],
},
plugins: [
new BundleAnalyzerPlugin()
]
};

View File

@ -1056,13 +1056,6 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/bn.js@^4.11.6":
version "4.11.6"
resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c"
integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==
dependencies:
"@types/node" "*"
"@types/chai@^4.2.4": "@types/chai@^4.2.4":
version "4.2.4" version "4.2.4"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.4.tgz#8936cffad3c96ec470a2dc26a38c3ba8b9b6f619" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.4.tgz#8936cffad3c96ec470a2dc26a38c3ba8b9b6f619"
@ -1098,6 +1091,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.3.tgz#65a8d9a6a0f6af55595a2d0020617959130d6495" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.3.tgz#65a8d9a6a0f6af55595a2d0020617959130d6495"
integrity sha512-QZ9CjUB3QoA3f2afw3utKlfRPhpmufB7jC2+oDhLWnXqoyx333fhKSQDLQu2EK7OE0a15X67eYiRAaJsHXrpMA== integrity sha512-QZ9CjUB3QoA3f2afw3utKlfRPhpmufB7jC2+oDhLWnXqoyx333fhKSQDLQu2EK7OE0a15X67eYiRAaJsHXrpMA==
"@types/node@^10.12.12":
version "10.17.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.2.tgz#41b5afbcde1a5a805302a4da3cf399499f1bbf64"
integrity sha512-sAh60KDol+MpwOr1RTK0+HgBEYejKsxdpmrOS1Wts5bI03dLzq8F7T0sRXDKeaEK8iWDlGfdzxrzg6vx/c5pNA==
"@typescript-eslint/eslint-plugin@^2.6.0": "@typescript-eslint/eslint-plugin@^2.6.0":
version "2.6.0" version "2.6.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.6.0.tgz#e82ed43fc4527b21bfe35c20a2d6e4ed49fc7957" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.6.0.tgz#e82ed43fc4527b21bfe35c20a2d6e4ed49fc7957"
@ -1585,13 +1583,14 @@ base@^0.11.1:
mixin-deep "^1.2.0" mixin-deep "^1.2.0"
pascalcase "^0.1.1" pascalcase "^0.1.1"
bcrypto@5.1.0: bcrypto@5.0.3:
version "5.1.0" version "5.0.3"
resolved "https://registry.yarnpkg.com/bcrypto/-/bcrypto-5.1.0.tgz#1ca3d0b1bd1ffe6bb18cfcf2a7d7fc19423b68e6" resolved "https://registry.yarnpkg.com/bcrypto/-/bcrypto-5.0.3.tgz#086b62d660e545c34ddf980fd4a5fc0001d4708b"
integrity sha512-WEs5g7WHdEdLLcsvhE7Z1AXv0G+hb+bJhSUYM7samFNrH051XhcFVWxAbAZDmIU1HWjpjhmQ+HqBar7UC/qrzQ== integrity sha512-wqATA9cenjBLDjih4Pey6H47G4RIpDzX4V3gvPTxsQkvVovYoERKyHR/BuUuxYllw5Xpi7novrogb/F/wN7xjA==
dependencies: dependencies:
bufio "~1.0.6" bufio "~1.0.6"
loady "~0.0.1" loady "~0.0.1"
nan "^2.14.0"
better-assert@~1.0.0: better-assert@~1.0.0:
version "1.0.2" version "1.0.2"
@ -1636,15 +1635,6 @@ bl@^4.0.0:
dependencies: dependencies:
readable-stream "^3.4.0" readable-stream "^3.4.0"
bl@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a"
integrity sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==
dependencies:
buffer "^5.5.0"
inherits "^2.0.4"
readable-stream "^3.4.0"
blakejs@^1.1.0: blakejs@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5"
@ -1660,6 +1650,13 @@ bluebird@^3.3.0, bluebird@^3.5.5:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
bn.js-typings@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/bn.js-typings/-/bn.js-typings-1.0.1.tgz#00faef56401850b763cee041c0728a9aaf091e7e"
integrity sha512-PdV3AEpI5A8mHCt3KgBobIJ+3rhoxxkRl8b0dCGDgGtJNYmN4KTPLHYq7xOSmKF1Kv06aZ5k8QhXbyG73IyhdQ==
dependencies:
"@types/node" "^10.12.12"
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.8, bn.js@^4.4.0: bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.8, bn.js@^4.4.0:
version "4.11.8" version "4.11.8"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
@ -1847,14 +1844,6 @@ buffer@^5.2.1, buffer@^5.4.3:
base64-js "^1.0.2" base64-js "^1.0.2"
ieee754 "^1.1.4" ieee754 "^1.1.4"
buffer@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.5.0.tgz#9c3caa3d623c33dd1c7ef584b89b88bf9c9bc1ce"
integrity sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==
dependencies:
base64-js "^1.0.2"
ieee754 "^1.1.4"
bufio@~1.0.6: bufio@~1.0.6:
version "1.0.6" version "1.0.6"
resolved "https://registry.yarnpkg.com/bufio/-/bufio-1.0.6.tgz#e0eb6d70b2efcc997b6f8872173540967f90fa4d" resolved "https://registry.yarnpkg.com/bufio/-/bufio-1.0.6.tgz#e0eb6d70b2efcc997b6f8872173540967f90fa4d"
@ -3306,7 +3295,7 @@ inflight@^1.0.4:
once "^1.3.0" once "^1.3.0"
wrappy "1" wrappy "1"
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4" version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@ -3385,7 +3374,7 @@ is-buffer@^1.1.5:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
is-buffer@^2.0.4, is-buffer@~2.0.3: is-buffer@~2.0.3:
version "2.0.4" version "2.0.4"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623"
integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
@ -3610,15 +3599,6 @@ it-length-prefixed@^3.0.0:
buffer "^5.4.3" buffer "^5.4.3"
varint "^5.0.0" varint "^5.0.0"
it-length-prefixed@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/it-length-prefixed/-/it-length-prefixed-3.0.1.tgz#8c4d829576f941eb17b94bc83ed0c3c78bf0a05a"
integrity sha512-QnfnFkpklDhWpyPQ2al6pdqmsQbwZAUpa7066e8S9RQxXo0s4o21ceqCG0n/0wdmvgfRSYsW5g2dYgchqtLZYw==
dependencies:
bl "^4.0.2"
buffer "^5.5.0"
varint "^5.0.0"
it-pair@^1.0.0: it-pair@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/it-pair/-/it-pair-1.0.0.tgz#b1add81f49af16a10b2939dbef7b1974fae87d6a" resolved "https://registry.yarnpkg.com/it-pair/-/it-pair-1.0.0.tgz#b1add81f49af16a10b2939dbef7b1974fae87d6a"
@ -3626,14 +3606,13 @@ it-pair@^1.0.0:
dependencies: dependencies:
get-iterator "^1.0.2" get-iterator "^1.0.2"
it-pb-rpc@^0.1.8: it-pb-rpc@^0.1.6:
version "0.1.8" version "0.1.6"
resolved "https://registry.yarnpkg.com/it-pb-rpc/-/it-pb-rpc-0.1.8.tgz#eed8ffdcba2a322a20a45c9db9ec5644499ccaf2" resolved "https://registry.yarnpkg.com/it-pb-rpc/-/it-pb-rpc-0.1.6.tgz#f6dba92f44a6ce5df8fc71ca08aefe472b552a02"
integrity sha512-YePzUUonithCTIdVKcOeQEn5mpipCg7ZoWsq7jfjXXtAS6gm6R7KzCe6YBV97i6bljU8hGllTG67FiGfweKNKg== integrity sha512-4srJH8iK976tlAEv0wBnud78hxjQsDvrl71lPG7zquNiaqZ3409oqzukC05f6z0UeYwi4M80Bm+gHy/642lJ/g==
dependencies: dependencies:
is-buffer "^2.0.4"
it-handshake "^1.0.1" it-handshake "^1.0.1"
it-length-prefixed "^3.0.1" it-length-prefixed "^3.0.0"
it-pipe@^1.1.0: it-pipe@^1.1.0:
version "1.1.0" version "1.1.0"