$ npm install @hyperdivision/pin-peerpin-peerVerify a secure connection using a manual PIN
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 transportStreamB
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.secureBoolean 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.pinnull until the pin is ready. Encoded as a Base32 string
npm install pin-peer