@hyperdivision/pin-peer v1.4.0
pin-peer
Verify a secure connection using a manual PIN
Usage
const pin = require('pin-peer')
var outOfBandPin // this would normally be communicated somehow
const t = transport()
const i = pin.initiator(transportStreamA, function (verify) {
return verify(null, outOfBandPin)
})
const r = pin.responder(transportStreamB)
r.once('pin', (pin) => {
outOfBandPin = pin
})
// Hook up transportStreamA and transportStreamBAPI
const initiatorStream = pin.initiator(rawStream, onverifypin(verify(err, enteredPin)), prolouge = '')
If the pin is incorrect the initiatorStream is closed immediately.
enteredPin must be a Base32 encoded string.
prolouge can be an arbitrary string that was used to find the other peer.
This doesn't add security to the encryption key, but does ensure both parties
have the same view of how anything that happened prior to the noise handshake.
const bool = initiatorStream.secure
Boolean indicating whether the secure handshake has completed
initiatorStream.once('secure', function () {})
Emitted once the handshaking has completed
const responderStream = pin.responder(rawStream, prolouge = '')
If the initiator did not accept the pin the responderStream is closed immediately.
prolouge can be an arbitrary string that was used to find the other peer.
This doesn't add security to the encryption key, but does ensure both parties
have the same view of how anything that happened prior to the noise handshake.
responderStream.once('pin', pinStr)
Emitted when the pin is ready
const pinStr = responderStream.pin
null until the pin is ready. Encoded as a Base32 string
Install
npm install pin-peer