diff --git a/CHANGELOG.md b/CHANGELOG.md index 30932a8..ee157f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Bugfixes - return handshake remote peer from secureOutbound +- fix browser usage of buffer ## [1.0.0-rc.8] - 2019-03-05 diff --git a/src/utils.ts b/src/utils.ts index 6bd7bdd..a4004f9 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -58,9 +58,9 @@ export async function getPeerIdFromPayload(payload: pb.INoiseHandshakePayload): return await PeerId.createFromPubKey(Buffer.from(payload.identityKey as Uint8Array)); } -export async function decodePayload(payload: bytes): Promise { +export async function decodePayload(payload: bytes|Uint8Array): Promise { return NoiseHandshakePayloadProto.toObject( - NoiseHandshakePayloadProto.decode(payload) + NoiseHandshakePayloadProto.decode(Buffer.from(payload)) ) as INoisePayload; } @@ -85,19 +85,16 @@ export async function verifySignedPayload( payload: pb.INoiseHandshakePayload, remotePeer: PeerId ): Promise { - - if (!(await isValidPeerId(remotePeer.id, Buffer.from(payload.identityKey as Uint8Array)))) { + const identityKey = Buffer.from(payload.identityKey as Uint8Array); + if (!(await isValidPeerId(remotePeer.id, identityKey))) { throw new Error("Peer ID doesn't match libp2p public key."); } - const generatedPayload = getHandshakePayload(noiseStaticKey); - // Unmarshaling from PublicKey protobuf - const publicKey = crypto.keys.unmarshalPublicKey(payload.identityKey); + const publicKey = crypto.keys.unmarshalPublicKey(identityKey); if (!publicKey.verify(generatedPayload, payload.identitySig)) { throw new Error("Static key doesn't match to peer that signed payload!"); } - return remotePeer; }