chore: update deps to latest versions

I've tried to make the minimum amount of changes necessary for this,
since the underlying crypto libraries only support node Buffers or
BufferLists there doesn't seem a lot of point in doing lots of
conversions between Uint8Arrays and Buffers.

BREAKING CHANGES:

- All deps use Uint8Arrays in place of node Buffers
This commit is contained in:
achingbrain 2020-08-11 11:41:10 +01:00
parent f1b92a9f1b
commit 1a6490d829
4 changed files with 19959 additions and 16 deletions

19940
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -38,7 +38,7 @@
"sinon": "^8.1.0" "sinon": "^8.1.0"
}, },
"dependencies": { "dependencies": {
"bcrypto": "5.1.0", "bcrypto": "^5.2.0",
"buffer": "^5.4.3", "buffer": "^5.4.3",
"debug": "^4.1.1", "debug": "^4.1.1",
"it-buffer": "^0.1.1", "it-buffer": "^0.1.1",
@ -46,9 +46,10 @@
"it-pair": "^1.0.0", "it-pair": "^1.0.0",
"it-pb-rpc": "^0.1.8", "it-pb-rpc": "^0.1.8",
"it-pipe": "^1.1.0", "it-pipe": "^1.1.0",
"libp2p-crypto": "^0.17.6", "libp2p-crypto": "^0.18.0",
"peer-id": "^0.13.5", "peer-id": "^0.14.0",
"protobufjs": "6.8.8" "protobufjs": "^6.10.1",
"uint8arrays": "^1.1.0"
}, },
"resolutions": { "resolutions": {
"bn.js": "4.4.0" "bn.js": "4.4.0"

View File

@ -8,6 +8,7 @@ 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'
import { pb } from './proto/payload' import { pb } from './proto/payload'
import uint8ArrayEquals from 'uint8arrays/equals'
const NoiseHandshakePayloadProto = pb.NoiseHandshakePayload const NoiseHandshakePayloadProto = pb.NoiseHandshakePayload
@ -37,12 +38,12 @@ export async function getPayload (
} }
export function createHandshakePayload ( export function createHandshakePayload (
libp2pPublicKey: bytes, libp2pPublicKey: Uint8Array,
signedPayload: bytes, signedPayload: Uint8Array,
earlyData?: bytes earlyData?: Uint8Array
): bytes { ): bytes {
const payloadInit = NoiseHandshakePayloadProto.create({ const payloadInit = NoiseHandshakePayloadProto.create({
identityKey: libp2pPublicKey, identityKey: Buffer.from(libp2pPublicKey),
identitySig: signedPayload, identitySig: signedPayload,
data: earlyData || null data: earlyData || null
}) })
@ -51,7 +52,7 @@ export function createHandshakePayload (
} }
export async function signPayload (peerId: PeerId, payload: bytes): Promise<bytes> { export async function signPayload (peerId: PeerId, payload: bytes): Promise<bytes> {
return await peerId.privKey.sign(payload) return Buffer.from(await peerId.privKey.sign(payload))
} }
export async function getPeerIdFromPayload (payload: pb.INoiseHandshakePayload): Promise<PeerId> { export async function getPeerIdFromPayload (payload: pb.INoiseHandshakePayload): Promise<PeerId> {
@ -68,9 +69,9 @@ export function getHandshakePayload (publicKey: bytes): bytes {
return Buffer.concat([Buffer.from('noise-libp2p-static-key:'), publicKey]) return Buffer.concat([Buffer.from('noise-libp2p-static-key:'), publicKey])
} }
async function isValidPeerId (peerId: bytes, publicKeyProtobuf: bytes) { async function isValidPeerId (peerId: Uint8Array, publicKeyProtobuf: bytes) {
const generatedPeerId = await PeerId.createFromPubKey(publicKeyProtobuf) const generatedPeerId = await PeerId.createFromPubKey(publicKeyProtobuf)
return generatedPeerId.id.equals(peerId) return uint8ArrayEquals(generatedPeerId.id, peerId)
} }
/** /**

View File

@ -6,6 +6,7 @@ import sinon from 'sinon'
import BufferList from 'bl' import BufferList from 'bl'
import { randomBytes } from 'libp2p-crypto' import { randomBytes } from 'libp2p-crypto'
import { Buffer } from 'buffer' import { Buffer } from 'buffer'
import uint8ArrayEquals from 'uint8arrays/equals'
import { Noise } from '../src' import { Noise } from '../src'
import { XXHandshake } from '../src/handshake-xx' import { XXHandshake } from '../src/handshake-xx'
@ -123,7 +124,7 @@ describe('Noise', () => {
const wrappedOutbound = Wrap(outbound.conn) const wrappedOutbound = Wrap(outbound.conn)
const largePlaintext = randomBytes(100000) const largePlaintext = randomBytes(100000)
wrappedOutbound.writeLP(largePlaintext) wrappedOutbound.writeLP(Buffer.from(largePlaintext))
const response = await wrappedInbound.read(100000) const response = await wrappedInbound.read(100000)
expect(response.length).equals(largePlaintext.length) expect(response.length).equals(largePlaintext.length)
@ -203,7 +204,7 @@ describe('Noise', () => {
const noiseInit = new Noise(staticKeysInitiator.privateKey) const noiseInit = new Noise(staticKeysInitiator.privateKey)
const staticKeysResponder = generateKeypair() const staticKeysResponder = generateKeypair()
const noiseResp = new Noise(staticKeysResponder.privateKey, undefined, false) const noiseResp = new Noise(staticKeysResponder.privateKey, undefined)
const xxSpy = sandbox.spy(noiseInit, 'performXXFallbackHandshake') const xxSpy = sandbox.spy(noiseInit, 'performXXFallbackHandshake')
// Prepare key cache for noise pipes // Prepare key cache for noise pipes
@ -232,7 +233,7 @@ describe('Noise', () => {
it.skip('Initiator starts with XX (pipes disabled), responder has enabled noise pipes', async () => { it.skip('Initiator starts with XX (pipes disabled), responder has enabled noise pipes', async () => {
try { try {
const staticKeysInitiator = generateKeypair() const staticKeysInitiator = generateKeypair()
const noiseInit = new Noise(staticKeysInitiator.privateKey, undefined, false) const noiseInit = new Noise(staticKeysInitiator.privateKey, undefined)
const staticKeysResponder = generateKeypair() const staticKeysResponder = generateKeypair()
const noiseResp = new Noise(staticKeysResponder.privateKey) const noiseResp = new Noise(staticKeysResponder.privateKey)
@ -323,8 +324,8 @@ describe('Noise', () => {
const response = await wrappedInbound.readLP() const response = await wrappedInbound.readLP()
expect(response.toString()).equal('test v2') expect(response.toString()).equal('test v2')
assert(inbound.remotePeer.marshalPubKey().equals(localPeer.marshalPubKey())) assert(uint8ArrayEquals(inbound.remotePeer.marshalPubKey(), localPeer.marshalPubKey()))
assert(outbound.remotePeer.marshalPubKey().equals(remotePeer.marshalPubKey())) assert(uint8ArrayEquals(outbound.remotePeer.marshalPubKey(), remotePeer.marshalPubKey()))
} catch (e) { } catch (e) {
assert(false, e.message) assert(false, e.message)
} }