lib/app.jsView |
---|
6 | 6 … | var pull = require('pull-stream') |
7 | 7 … | var multicb = require('multicb') |
8 | 8 … | var paramap = require('pull-paramap') |
9 | 9 … | var Contacts = require('ssb-contact') |
| 10 … | +var PrivateBox = require('private-box') |
10 | 11 … | var About = require('./about') |
11 | 12 … | var Follows = require('./follows') |
12 | 13 … | var Serve = require('./serve') |
13 | 14 … | var Render = require('./render') |
103 | 104 … | var logPrefix = '[' + pkg.name + ']' |
104 | 105 … | App.prototype.log = console.log.bind(console, logPrefix) |
105 | 106 … | App.prototype.error = console.error.bind(console, logPrefix) |
106 | 107 … | |
107 | | -App.prototype.unboxMsg = function (msg, cb) { |
| 108 … | +App.prototype.unboxContentWithKey = function (content, key, cb) { |
| 109 … | + if (!key) return this.unboxContent(content, cb) |
| 110 … | + var data |
| 111 … | + try { |
| 112 … | + var contentBuf = new Buffer(content.replace(/\.box.*$/, ''), 'base64') |
| 113 … | + var keyBuf = new Buffer(key, 'base64') |
|
| 114 … | + console.error(key, keyBuf.length) |
| 115 … | + data = PrivateBox.multibox_open_body(contentBuf, keyBuf) |
| 116 … | + if (!data) return cb(new Error('failed to decrypt')) |
| 117 … | + data = JSON.parse(data.toString('utf8')) |
| 118 … | + } catch(e) { |
| 119 … | + return cb(new Error(e.stack || e)) |
| 120 … | + } |
| 121 … | + cb(null, data) |
| 122 … | +} |
| 123 … | + |
| 124 … | +App.prototype.unboxMsgWithKey = function (msg, key, cb) { |
108 | 125 … | var self = this |
109 | 126 … | var c = msg && msg.value && msg.value.content |
110 | 127 … | if (typeof c !== 'string') cb(null, msg) |
111 | | - else self.unboxContent(c, function (err, content) { |
| 128 … | + else self.unboxContentWithKey(c, key, function (err, content) { |
112 | 129 … | if (err) { |
113 | 130 … | self.error('unbox:', err) |
114 | 131 … | return cb(null, msg) |
115 | 132 … | } else if (!content) { |
124 | 141 … | cb(null, m) |
125 | 142 … | }) |
126 | 143 … | } |
127 | 144 … | |
| 145 … | +App.prototype.unboxMsg = function (msg, cb) { |
| 146 … | + return this.unboxMsgWithKey(msg, null, cb) |
| 147 … | +} |
| 148 … | + |
128 | 149 … | App.prototype.search = function (opts) { |
129 | 150 … | var fsearch = this.sbot.fulltext && this.sbot.fulltext.search |
130 | 151 … | if (fsearch) return fsearch(opts) |
131 | 152 … | var search = this.sbot.search && this.sbot.search.query |