keymanager.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672
  1. // Generated by IcedCoffeeScript 1.7.1-c
  2. (function() {
  3. var ASP, BufferOutStream, E, KeyManager, PackageJson, StatusParser, constants, env, iced, init_env, log, make_esc, make_scrypt_progress_hook, master_ring, __iced_k, __iced_k_noop, _ref;
  4. iced = require('iced-runtime').iced;
  5. __iced_k = __iced_k_noop = function() {};
  6. constants = require('./constants').constants;
  7. make_esc = require('iced-error').make_esc;
  8. PackageJson = require('./package').PackageJson;
  9. master_ring = require('./keyring').master_ring;
  10. _ref = require('./env'), env = _ref.env, init_env = _ref.init_env;
  11. BufferOutStream = require('iced-spawn').BufferOutStream;
  12. ASP = require('pgp-utils').util.ASP;
  13. E = require('./err').E;
  14. make_scrypt_progress_hook = require('./util').make_scrypt_progress_hook;
  15. StatusParser = require('./gpg').StatusParser;
  16. log = require('./log');
  17. exports.KeyManager = KeyManager = (function() {
  18. function KeyManager(_arg) {
  19. this.username = _arg.username, this.config = _arg.config, this.passphrase = _arg.passphrase, this.ring = _arg.ring, this.tsenc = _arg.tsenc, this.key = _arg.key, this.fingerprint = _arg.fingerprint;
  20. this.ring || (this.ring = master_ring());
  21. this.key = null;
  22. this.lib = {
  23. KeyManager: require('kbpgp').KeyManager,
  24. Encryptor: require('triplesec').Encryptor
  25. };
  26. }
  27. KeyManager.generate = function(_arg, cb) {
  28. var config, err, km, passphrase, ring, username, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  29. __iced_k = __iced_k_noop;
  30. ___iced_passed_deferral = iced.findDeferral(arguments);
  31. username = _arg.username, config = _arg.config, passphrase = _arg.passphrase, ring = _arg.ring;
  32. username || (username = env().get_username());
  33. config || (config = constants.keygen);
  34. ring || (ring = master_ring());
  35. km = new KeyManager({
  36. username: username,
  37. config: config,
  38. passphrase: passphrase,
  39. ring: ring
  40. });
  41. (function(_this) {
  42. return (function(__iced_k) {
  43. __iced_deferrals = new iced.Deferrals(__iced_k, {
  44. parent: ___iced_passed_deferral,
  45. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  46. funcname: "KeyManager.generate"
  47. });
  48. km._gen(__iced_deferrals.defer({
  49. assign_fn: (function() {
  50. return function() {
  51. return err = arguments[0];
  52. };
  53. })(),
  54. lineno: 33
  55. }));
  56. __iced_deferrals._fulfill();
  57. });
  58. })(this)((function(_this) {
  59. return function() {
  60. if (typeof err !== "undefined" && err !== null) {
  61. km = null;
  62. }
  63. return cb(err, km);
  64. };
  65. })(this));
  66. };
  67. KeyManager.prototype._gen = function(cb) {
  68. var args, email, err, esc, fingerprint, h, kc, out, script, status_parser, stderr, stdin, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  69. __iced_k = __iced_k_noop;
  70. ___iced_passed_deferral = iced.findDeferral(arguments);
  71. esc = make_esc(cb, "KeyGen::Gen");
  72. h = constants.canonical_host;
  73. email = this.username + ("@" + h);
  74. script = ["%echo generating", "Key-Type: RSA", "Key-Length: " + this.config.master.bits, "Key-Usage: sign,auth", "Subkey-Type: RSA", "Subkey-Length: " + this.config.subkey.bits, "Subkey-Usage: encrypt", "Name-Real: " + h + "/" + this.username, "Name-Email: " + email, "Expire-date: " + this.config.expire, "Passphrase: " + this.passphrase, "%commit"];
  75. stdin = script.join("\n");
  76. args = ["--batch", "--gen-key", "--keyid-format", "long", "--status-fd", '2'];
  77. stderr = new BufferOutStream();
  78. (function(_this) {
  79. return (function(__iced_k) {
  80. __iced_deferrals = new iced.Deferrals(__iced_k, {
  81. parent: ___iced_passed_deferral,
  82. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  83. funcname: "KeyManager._gen"
  84. });
  85. _this.ring.gpg({
  86. args: args,
  87. stdin: stdin,
  88. stderr: stderr,
  89. secret: true
  90. }, __iced_deferrals.defer({
  91. assign_fn: (function() {
  92. return function() {
  93. err = arguments[0];
  94. return out = arguments[1];
  95. };
  96. })(),
  97. lineno: 60
  98. }));
  99. __iced_deferrals._fulfill();
  100. });
  101. })(this)((function(_this) {
  102. return function() {
  103. (function(__iced_k) {
  104. if (typeof err !== "undefined" && err !== null) {
  105. return __iced_k(log.warn(stderr.data().toString()));
  106. } else {
  107. status_parser = (new StatusParser).parse({
  108. buf: stderr.data()
  109. });
  110. (function(__iced_k) {
  111. if (((kc = status_parser.lookup('KEY_CREATED')) != null) && kc.length >= 2) {
  112. fingerprint = kc[1];
  113. _this.key = _this.ring.make_key({
  114. fingerprint: fingerprint,
  115. secret: true
  116. });
  117. (function(__iced_k) {
  118. __iced_deferrals = new iced.Deferrals(__iced_k, {
  119. parent: ___iced_passed_deferral,
  120. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  121. funcname: "KeyManager._gen"
  122. });
  123. _this.key.load(esc(__iced_deferrals.defer({
  124. lineno: 68
  125. })));
  126. __iced_deferrals._fulfill();
  127. })(__iced_k);
  128. } else {
  129. return __iced_k(err = new E.GenerateError("Failed to parse output of key generation"));
  130. }
  131. })(__iced_k);
  132. }
  133. })(function() {
  134. return cb(err);
  135. });
  136. };
  137. })(this));
  138. };
  139. KeyManager.prototype._load = function(cb) {
  140. var err, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  141. __iced_k = __iced_k_noop;
  142. ___iced_passed_deferral = iced.findDeferral(arguments);
  143. this.key = this.ring.make_key({
  144. fingerprint: this.fingerprint,
  145. secret: true
  146. });
  147. (function(_this) {
  148. return (function(__iced_k) {
  149. __iced_deferrals = new iced.Deferrals(__iced_k, {
  150. parent: ___iced_passed_deferral,
  151. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  152. funcname: "KeyManager._load"
  153. });
  154. _this.key.load(__iced_deferrals.defer({
  155. assign_fn: (function() {
  156. return function() {
  157. return err = arguments[0];
  158. };
  159. })(),
  160. lineno: 77
  161. }));
  162. __iced_deferrals._fulfill();
  163. });
  164. })(this)((function(_this) {
  165. return function() {
  166. return cb(err);
  167. };
  168. })(this));
  169. };
  170. KeyManager.load = function(opts, cb) {
  171. var err, km, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  172. __iced_k = __iced_k_noop;
  173. ___iced_passed_deferral = iced.findDeferral(arguments);
  174. km = new KeyManager(opts);
  175. (function(_this) {
  176. return (function(__iced_k) {
  177. __iced_deferrals = new iced.Deferrals(__iced_k, {
  178. parent: ___iced_passed_deferral,
  179. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  180. funcname: "KeyManager.load"
  181. });
  182. km._load(__iced_deferrals.defer({
  183. assign_fn: (function() {
  184. return function() {
  185. return err = arguments[0];
  186. };
  187. })(),
  188. lineno: 84
  189. }));
  190. __iced_deferrals._fulfill();
  191. });
  192. })(this)((function(_this) {
  193. return function() {
  194. if (typeof err !== "undefined" && err !== null) {
  195. km = null;
  196. }
  197. return cb(err, km);
  198. };
  199. })(this));
  200. };
  201. KeyManager.prototype.load_public = function(cb) {
  202. var err, pubkey, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  203. __iced_k = __iced_k_noop;
  204. ___iced_passed_deferral = iced.findDeferral(arguments);
  205. pubkey = this.ring.make_key({
  206. fingerprint: this.key.fingerprint(),
  207. secret: false
  208. });
  209. (function(_this) {
  210. return (function(__iced_k) {
  211. __iced_deferrals = new iced.Deferrals(__iced_k, {
  212. parent: ___iced_passed_deferral,
  213. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  214. funcname: "KeyManager.load_public"
  215. });
  216. pubkey.load(__iced_deferrals.defer({
  217. assign_fn: (function() {
  218. return function() {
  219. return err = arguments[0];
  220. };
  221. })(),
  222. lineno: 92
  223. }));
  224. __iced_deferrals._fulfill();
  225. });
  226. })(this)((function(_this) {
  227. return function() {
  228. if (typeof err === "undefined" || err === null) {
  229. _this.pubkey = pubkey;
  230. }
  231. return cb(err, pubkey);
  232. };
  233. })(this));
  234. };
  235. KeyManager.prototype.get_tsenc = function() {
  236. if (!this.tsenc) {
  237. this.tsenc = new this.lib.Encryptor({
  238. key: new Buffer(this.passphrase, 'utf8')
  239. });
  240. }
  241. return this.tsenc;
  242. };
  243. KeyManager.prototype.import_from_pgp = function(cb) {
  244. var err, raw, warnings, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  245. __iced_k = __iced_k_noop;
  246. ___iced_passed_deferral = iced.findDeferral(arguments);
  247. raw = this.key.key_data().toString('utf8');
  248. (function(_this) {
  249. return (function(__iced_k) {
  250. __iced_deferrals = new iced.Deferrals(__iced_k, {
  251. parent: ___iced_passed_deferral,
  252. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  253. funcname: "KeyManager.import_from_pgp"
  254. });
  255. _this.lib.KeyManager.import_from_armored_pgp({
  256. raw: raw
  257. }, __iced_deferrals.defer({
  258. assign_fn: (function(__slot_1) {
  259. return function() {
  260. err = arguments[0];
  261. __slot_1.km = arguments[1];
  262. return warnings = arguments[2];
  263. };
  264. })(_this),
  265. lineno: 107
  266. }));
  267. __iced_deferrals._fulfill();
  268. });
  269. })(this)((function(_this) {
  270. return function() {
  271. _this.warn("Export to P3SKB format", warnings);
  272. return cb(err);
  273. };
  274. })(this));
  275. };
  276. KeyManager.prototype.unlock_pgp = function(_arg, cb) {
  277. var err, esc, passphrase, prompter, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  278. __iced_k = __iced_k_noop;
  279. ___iced_passed_deferral = iced.findDeferral(arguments);
  280. passphrase = _arg.passphrase, prompter = _arg.prompter;
  281. esc = make_esc(cb, "KeyManager::unlock_pgp");
  282. passphrase || (passphrase = this.passphrase);
  283. (function(_this) {
  284. return (function(__iced_k) {
  285. if (_this.km.is_pgp_locked()) {
  286. (function(__iced_k) {
  287. if (passphrase == null) {
  288. (function(__iced_k) {
  289. __iced_deferrals = new iced.Deferrals(__iced_k, {
  290. parent: ___iced_passed_deferral,
  291. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  292. funcname: "KeyManager.unlock_pgp"
  293. });
  294. prompter(esc(__iced_deferrals.defer({
  295. assign_fn: (function() {
  296. return function() {
  297. return passphrase = arguments[0];
  298. };
  299. })(),
  300. lineno: 118
  301. })));
  302. __iced_deferrals._fulfill();
  303. })(function() {
  304. return __iced_k(_this.passphrase = passphrase);
  305. });
  306. } else {
  307. return __iced_k();
  308. }
  309. })(function() {
  310. (function(__iced_k) {
  311. __iced_deferrals = new iced.Deferrals(__iced_k, {
  312. parent: ___iced_passed_deferral,
  313. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  314. funcname: "KeyManager.unlock_pgp"
  315. });
  316. _this.km.unlock_pgp({
  317. passphrase: passphrase
  318. }, __iced_deferrals.defer({
  319. assign_fn: (function() {
  320. return function() {
  321. return err = arguments[0];
  322. };
  323. })(),
  324. lineno: 120
  325. }));
  326. __iced_deferrals._fulfill();
  327. })(__iced_k);
  328. });
  329. } else {
  330. return __iced_k();
  331. }
  332. });
  333. })(this)((function(_this) {
  334. return function() {
  335. return cb(err);
  336. };
  337. })(this));
  338. };
  339. KeyManager.prototype.sign_and_export = function(cb) {
  340. var esc, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  341. __iced_k = __iced_k_noop;
  342. ___iced_passed_deferral = iced.findDeferral(arguments);
  343. esc = make_esc(cb, "KeyManager::sign_and_export");
  344. (function(_this) {
  345. return (function(__iced_k) {
  346. __iced_deferrals = new iced.Deferrals(__iced_k, {
  347. parent: ___iced_passed_deferral,
  348. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  349. funcname: "KeyManager.sign_and_export"
  350. });
  351. _this.km.sign({}, esc(__iced_deferrals.defer({
  352. lineno: 127
  353. })));
  354. __iced_deferrals._fulfill();
  355. });
  356. })(this)((function(_this) {
  357. return function() {
  358. (function(__iced_k) {
  359. __iced_deferrals = new iced.Deferrals(__iced_k, {
  360. parent: ___iced_passed_deferral,
  361. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  362. funcname: "KeyManager.sign_and_export"
  363. });
  364. _this.km.export_private_to_server({
  365. tsenc: _this.get_tsenc()
  366. }, esc(__iced_deferrals.defer({
  367. assign_fn: (function(__slot_1) {
  368. return function() {
  369. return __slot_1.p3skb = arguments[0];
  370. };
  371. })(_this),
  372. lineno: 128
  373. })));
  374. __iced_deferrals._fulfill();
  375. })(function() {
  376. return cb(null);
  377. });
  378. };
  379. })(this));
  380. };
  381. KeyManager.prototype.export_to_p3skb = function(_arg, cb) {
  382. var esc, prompter, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  383. __iced_k = __iced_k_noop;
  384. ___iced_passed_deferral = iced.findDeferral(arguments);
  385. prompter = _arg.prompter;
  386. esc = make_esc(cb, "KeyManager::encrypt_to_p3skb");
  387. (function(_this) {
  388. return (function(__iced_k) {
  389. __iced_deferrals = new iced.Deferrals(__iced_k, {
  390. parent: ___iced_passed_deferral,
  391. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  392. funcname: "KeyManager.export_to_p3skb"
  393. });
  394. _this.import_from_pgp(esc(__iced_deferrals.defer({
  395. lineno: 135
  396. })));
  397. __iced_deferrals._fulfill();
  398. });
  399. })(this)((function(_this) {
  400. return function() {
  401. (function(__iced_k) {
  402. __iced_deferrals = new iced.Deferrals(__iced_k, {
  403. parent: ___iced_passed_deferral,
  404. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  405. funcname: "KeyManager.export_to_p3skb"
  406. });
  407. _this.unlock_pgp({
  408. prompter: prompter
  409. }, esc(__iced_deferrals.defer({
  410. lineno: 136
  411. })));
  412. __iced_deferrals._fulfill();
  413. })(function() {
  414. (function(__iced_k) {
  415. __iced_deferrals = new iced.Deferrals(__iced_k, {
  416. parent: ___iced_passed_deferral,
  417. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  418. funcname: "KeyManager.export_to_p3skb"
  419. });
  420. _this.sign_and_export(esc(__iced_deferrals.defer({
  421. lineno: 137
  422. })));
  423. __iced_deferrals._fulfill();
  424. })(function() {
  425. return cb(null, _this.p3skb);
  426. });
  427. });
  428. };
  429. })(this));
  430. };
  431. KeyManager.prototype.set_passphrase = function(p) {
  432. this.passphrase = p;
  433. return this.tsenc = null;
  434. };
  435. KeyManager.import_from_p3skb = function(_arg, cb) {
  436. var err, km, passphrase, prompter, raw, ring, tsenc, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  437. __iced_k = __iced_k_noop;
  438. ___iced_passed_deferral = iced.findDeferral(arguments);
  439. raw = _arg.raw, ring = _arg.ring, tsenc = _arg.tsenc, passphrase = _arg.passphrase, prompter = _arg.prompter;
  440. km = new KeyManager({
  441. ring: ring,
  442. tsenc: tsenc,
  443. passphrase: passphrase
  444. });
  445. (function(_this) {
  446. return (function(__iced_k) {
  447. __iced_deferrals = new iced.Deferrals(__iced_k, {
  448. parent: ___iced_passed_deferral,
  449. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  450. funcname: "KeyManager.import_from_p3skb"
  451. });
  452. km._import_from_p3skb({
  453. raw: raw,
  454. prompter: prompter
  455. }, __iced_deferrals.defer({
  456. assign_fn: (function() {
  457. return function() {
  458. return err = arguments[0];
  459. };
  460. })(),
  461. lineno: 150
  462. }));
  463. __iced_deferrals._fulfill();
  464. });
  465. })(this)((function(_this) {
  466. return function() {
  467. if (typeof err !== "undefined" && err !== null) {
  468. km = null;
  469. }
  470. return cb(err, km);
  471. };
  472. })(this));
  473. };
  474. KeyManager.prototype.warn = function(what, warnings) {
  475. var w, _i, _len, _ref1, _results;
  476. if (warnings != null) {
  477. _ref1 = warnings.warnings();
  478. _results = [];
  479. for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
  480. w = _ref1[_i];
  481. _results.push(log.warn("" + what + ": " + w));
  482. }
  483. return _results;
  484. }
  485. };
  486. KeyManager.prototype.save_to_ring = function(_arg, cb) {
  487. var esc, key_data, passphrase, ring, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  488. __iced_k = __iced_k_noop;
  489. ___iced_passed_deferral = iced.findDeferral(arguments);
  490. passphrase = _arg.passphrase, ring = _arg.ring;
  491. esc = make_esc(cb, "KeyManager::save_to_ring");
  492. if (ring != null) {
  493. this.ring = ring;
  494. }
  495. if (passphrase != null) {
  496. this.set_passphrase(passphrase);
  497. }
  498. (function(_this) {
  499. return (function(__iced_k) {
  500. __iced_deferrals = new iced.Deferrals(__iced_k, {
  501. parent: ___iced_passed_deferral,
  502. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  503. funcname: "KeyManager.save_to_ring"
  504. });
  505. _this.km.sign({}, esc(__iced_deferrals.defer({
  506. lineno: 167
  507. })));
  508. __iced_deferrals._fulfill();
  509. });
  510. })(this)((function(_this) {
  511. return function() {
  512. (function(__iced_k) {
  513. __iced_deferrals = new iced.Deferrals(__iced_k, {
  514. parent: ___iced_passed_deferral,
  515. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  516. funcname: "KeyManager.save_to_ring"
  517. });
  518. _this.km.export_pgp_private_to_client({
  519. passphrase: _this.passphrase
  520. }, esc(__iced_deferrals.defer({
  521. assign_fn: (function() {
  522. return function() {
  523. return key_data = arguments[0];
  524. };
  525. })(),
  526. lineno: 168
  527. })));
  528. __iced_deferrals._fulfill();
  529. })(function() {
  530. _this.key = _this.ring.make_key({
  531. key_data: key_data,
  532. fingerprint: _this.km.get_pgp_fingerprint().toString('hex'),
  533. secret: true
  534. });
  535. (function(__iced_k) {
  536. __iced_deferrals = new iced.Deferrals(__iced_k, {
  537. parent: ___iced_passed_deferral,
  538. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  539. funcname: "KeyManager.save_to_ring"
  540. });
  541. _this.key.save(esc(__iced_deferrals.defer({
  542. lineno: 174
  543. })));
  544. __iced_deferrals._fulfill();
  545. })(function() {
  546. return cb(null);
  547. });
  548. });
  549. };
  550. })(this));
  551. };
  552. KeyManager.prototype._import_from_p3skb = function(_arg, cb) {
  553. var asp, err, esc, prompter, raw, warnings, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  554. __iced_k = __iced_k_noop;
  555. ___iced_passed_deferral = iced.findDeferral(arguments);
  556. raw = _arg.raw, prompter = _arg.prompter;
  557. esc = make_esc(cb, "KeyManager::_import_from_p3skb");
  558. err = null;
  559. (function(_this) {
  560. return (function(__iced_k) {
  561. __iced_deferrals = new iced.Deferrals(__iced_k, {
  562. parent: ___iced_passed_deferral,
  563. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  564. funcname: "KeyManager._import_from_p3skb"
  565. });
  566. _this.lib.KeyManager.import_from_p3skb({
  567. raw: raw
  568. }, esc(__iced_deferrals.defer({
  569. assign_fn: (function(__slot_1) {
  570. return function() {
  571. __slot_1.km = arguments[0];
  572. return warnings = arguments[1];
  573. };
  574. })(_this),
  575. lineno: 182
  576. })));
  577. __iced_deferrals._fulfill();
  578. });
  579. })(this)((function(_this) {
  580. return function() {
  581. _this.warn("Import from P3SKB format", warnings);
  582. (function(__iced_k) {
  583. if (_this.km.is_p3skb_locked()) {
  584. (function(__iced_k) {
  585. if ((_this.passphrase == null) && (prompter != null)) {
  586. (function(__iced_k) {
  587. __iced_deferrals = new iced.Deferrals(__iced_k, {
  588. parent: ___iced_passed_deferral,
  589. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  590. funcname: "KeyManager._import_from_p3skb"
  591. });
  592. prompter(esc(__iced_deferrals.defer({
  593. assign_fn: (function(__slot_1) {
  594. return function() {
  595. return __slot_1.passphrase = arguments[0];
  596. };
  597. })(_this),
  598. lineno: 186
  599. })));
  600. __iced_deferrals._fulfill();
  601. })(__iced_k);
  602. } else {
  603. return __iced_k();
  604. }
  605. })(function() {
  606. (function(__iced_k) {
  607. if (!_this.passphrase) {
  608. return __iced_k(err = new E.MissingPwError("No passphrase given"));
  609. } else {
  610. asp = new ASP({
  611. progress_hook: make_scrypt_progress_hook()
  612. });
  613. (function(__iced_k) {
  614. __iced_deferrals = new iced.Deferrals(__iced_k, {
  615. parent: ___iced_passed_deferral,
  616. filename: "/Users/max/src/keybase/node-client/src/keymanager.iced",
  617. funcname: "KeyManager._import_from_p3skb"
  618. });
  619. _this.km.unlock_p3skb({
  620. asp: asp,
  621. tsenc: _this.get_tsenc()
  622. }, esc(__iced_deferrals.defer({
  623. lineno: 191
  624. })));
  625. __iced_deferrals._fulfill();
  626. })(__iced_k);
  627. }
  628. })(__iced_k);
  629. });
  630. } else {
  631. return __iced_k();
  632. }
  633. })(function() {
  634. return cb(err);
  635. });
  636. };
  637. })(this));
  638. };
  639. return KeyManager;
  640. })();
  641. }).call(this);