2018-01-07 16:24:43 +00:00

36 lines
836 B
JavaScript

'use strict'
const debug = require('debug')
const waterfall = require('async/waterfall')
const support = require('../support')
const crypto = require('./crypto')
const log = debug('libp2p:secio')
log.error = debug('libp2p:secio:error')
// step 2. Exchange
// -- exchange (signed) ephemeral keys. verify signatures.
module.exports = function exchange (state, cb) {
log('2. exchange - start')
log('2. exchange - writing exchange')
waterfall([
(cb) => crypto.createExchange(state, cb),
(ex, cb) => {
support.write(state, ex)
support.read(state.shake, cb)
},
(msg, cb) => {
log('2. exchange - reading exchange')
crypto.verify(state, msg, cb)
},
(cb) => crypto.generateKeys(state, cb)
], (err) => {
if (err) { return cb(err) }
log('2. exchange - finish')
cb()
})
}