key_setup.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. // Generated by IcedCoffeeScript 1.7.1-f
  2. (function() {
  3. var KeyInstall, KeySetup, a_json_parse, athrow, constants, fpeq, iced, keyring, keyset, log, make_esc, __iced_k, __iced_k_noop, _ref;
  4. iced = require('iced-runtime');
  5. __iced_k = __iced_k_noop = function() {};
  6. keyring = require('gpg-wrapper').keyring;
  7. constants = require('./constants').constants;
  8. log = require('./log');
  9. make_esc = require('iced-error').make_esc;
  10. keyset = require('../json/keyset');
  11. fpeq = require('pgp-utils').util.fpeq;
  12. _ref = require('iced-utils').util, athrow = _ref.athrow, a_json_parse = _ref.a_json_parse;
  13. KeyInstall = require('./key_install').KeyInstall;
  14. exports.KeySetup = KeySetup = (function() {
  15. function KeySetup(config) {
  16. this.config = config;
  17. }
  18. KeySetup.prototype.check_prepackaged_keyset = function(cb) {
  19. var a, b, body, err, esc, json, res, v, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  20. __iced_k = __iced_k_noop;
  21. ___iced_passed_deferral = iced.findDeferral(arguments);
  22. esc = make_esc(cb, "KeySetup::check_prepackaged_keyset");
  23. v = keyset.version;
  24. log.debug("+ KeySetup::check_prepackaged_key " + v);
  25. (function(_this) {
  26. return (function(__iced_k) {
  27. __iced_deferrals = new iced.Deferrals(__iced_k, {
  28. parent: ___iced_passed_deferral,
  29. filename: "/home/max/src/keybase/node-installer/src/key_setup.iced",
  30. funcname: "KeySetup.check_prepackaged_keyset"
  31. });
  32. _this.config.request("/sig/files/" + v + "/keyset.json", esc(__iced_deferrals.defer({
  33. assign_fn: (function() {
  34. return function() {
  35. res = arguments[0];
  36. return body = arguments[1];
  37. };
  38. })(),
  39. lineno: 21
  40. })));
  41. __iced_deferrals._fulfill();
  42. });
  43. })(this)((function(_this) {
  44. return function() {
  45. (function(__iced_k) {
  46. __iced_deferrals = new iced.Deferrals(__iced_k, {
  47. parent: ___iced_passed_deferral,
  48. filename: "/home/max/src/keybase/node-installer/src/key_setup.iced",
  49. funcname: "KeySetup.check_prepackaged_keyset"
  50. });
  51. a_json_parse(body, esc(__iced_deferrals.defer({
  52. assign_fn: (function() {
  53. return function() {
  54. return json = arguments[0];
  55. };
  56. })(),
  57. lineno: 22
  58. })));
  59. __iced_deferrals._fulfill();
  60. })(function() {
  61. var _ref1;
  62. err = (a = typeof json !== "undefined" && json !== null ? json.version : void 0) !== v ? new Error("Version mismatch; expected " + v + " but got " + a) : (a = typeof json !== "undefined" && json !== null ? (_ref1 = json.keys.code) != null ? _ref1.fingerprint : void 0 : void 0) == null ? (console.log(json), new Error("Fingerprint failure; none found in server version")) : !(fpeq(a, (b = keyset.keys.code.fingerprint))) ? new Error("Fingerprint mismatch; expected " + a + " but got " + b) : null;
  63. log.debug("- KeySetup::check_prepackaged_keyset " + v + " -> " + err);
  64. return cb(err);
  65. });
  66. };
  67. })(this));
  68. };
  69. KeySetup.prototype.install_prepackaged_keyset = function(cb) {
  70. var err, keys, ki, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  71. __iced_k = __iced_k_noop;
  72. ___iced_passed_deferral = iced.findDeferral(arguments);
  73. log.debug("+ Installing prepackaged keyset: v" + keyset.version);
  74. ki = new KeyInstall(this.config, keyset);
  75. (function(_this) {
  76. return (function(__iced_k) {
  77. __iced_deferrals = new iced.Deferrals(__iced_k, {
  78. parent: ___iced_passed_deferral,
  79. filename: "/home/max/src/keybase/node-installer/src/key_setup.iced",
  80. funcname: "KeySetup.install_prepackaged_keyset"
  81. });
  82. ki.run(__iced_deferrals.defer({
  83. assign_fn: (function() {
  84. return function() {
  85. return err = arguments[0];
  86. };
  87. })(),
  88. lineno: 41
  89. }));
  90. __iced_deferrals._fulfill();
  91. });
  92. })(this)((function(_this) {
  93. return function() {
  94. keys = ki.keys();
  95. keys.version = keyset.version;
  96. _this.config.set_keys(keys);
  97. log.debug("- Installed: -> " + err);
  98. return cb(err);
  99. };
  100. })(this));
  101. };
  102. KeySetup.prototype.find_keyset = function(version, cb) {
  103. var esc, found, found_code, keys, v, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  104. __iced_k = __iced_k_noop;
  105. ___iced_passed_deferral = iced.findDeferral(arguments);
  106. log.debug("+ KeySetup::find_keyset " + version);
  107. esc = make_esc(cb, "SetupKeyRunner::find_keyset");
  108. keys = {};
  109. found = false;
  110. found_code = false;
  111. (function(_this) {
  112. return (function(__iced_k) {
  113. __iced_deferrals = new iced.Deferrals(__iced_k, {
  114. parent: ___iced_passed_deferral,
  115. filename: "/home/max/src/keybase/node-installer/src/key_setup.iced",
  116. funcname: "KeySetup.find_keyset"
  117. });
  118. _this.find_key({
  119. which: 'code',
  120. version: version
  121. }, esc(__iced_deferrals.defer({
  122. assign_fn: (function(__slot_1) {
  123. return function() {
  124. __slot_1.code = arguments[0];
  125. return v = arguments[1];
  126. };
  127. })(keys),
  128. lineno: 56
  129. })));
  130. __iced_deferrals._fulfill();
  131. });
  132. })(this)((function(_this) {
  133. return function() {
  134. (function(__iced_k) {
  135. if (keys.code != null) {
  136. found_code = true;
  137. (function(__iced_k) {
  138. __iced_deferrals = new iced.Deferrals(__iced_k, {
  139. parent: ___iced_passed_deferral,
  140. filename: "/home/max/src/keybase/node-installer/src/key_setup.iced",
  141. funcname: "KeySetup.find_keyset"
  142. });
  143. _this.find_key({
  144. which: 'index',
  145. version: v
  146. }, esc(__iced_deferrals.defer({
  147. assign_fn: (function(__slot_1) {
  148. return function() {
  149. return __slot_1.index = arguments[0];
  150. };
  151. })(keys),
  152. lineno: 59
  153. })));
  154. __iced_deferrals._fulfill();
  155. })(function() {
  156. return __iced_k(keys.index != null ? (keys.version = v, _this.config.set_keys(keys), found = true) : void 0);
  157. });
  158. } else {
  159. return __iced_k();
  160. }
  161. })(function() {
  162. log.debug("- KeySetup::find_keys " + found + " " + (typeof v !== "undefined" && v !== null ? '@ version ' + v : ''));
  163. return cb(null, found, keys, found_code);
  164. });
  165. };
  166. })(this));
  167. };
  168. KeySetup.prototype.run = function(cb) {
  169. var esc, found, found_code, keys, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  170. __iced_k = __iced_k_noop;
  171. ___iced_passed_deferral = iced.findDeferral(arguments);
  172. log.debug("+ KeySetup::run");
  173. esc = make_esc(cb, "SetupKeyRunner::run");
  174. (function(_this) {
  175. return (function(__iced_k) {
  176. __iced_deferrals = new iced.Deferrals(__iced_k, {
  177. parent: ___iced_passed_deferral,
  178. filename: "/home/max/src/keybase/node-installer/src/key_setup.iced",
  179. funcname: "KeySetup.run"
  180. });
  181. _this.find_keyset(null, esc(__iced_deferrals.defer({
  182. assign_fn: (function() {
  183. return function() {
  184. found = arguments[0];
  185. keys = arguments[1];
  186. return found_code = arguments[2];
  187. };
  188. })(),
  189. lineno: 74
  190. })));
  191. __iced_deferrals._fulfill();
  192. });
  193. })(this)((function(_this) {
  194. return function() {
  195. (function(__iced_k) {
  196. if (!found && found_code) {
  197. (function(__iced_k) {
  198. if (!found) {
  199. (function(__iced_k) {
  200. __iced_deferrals = new iced.Deferrals(__iced_k, {
  201. parent: ___iced_passed_deferral,
  202. filename: "/home/max/src/keybase/node-installer/src/key_setup.iced",
  203. funcname: "KeySetup.run"
  204. });
  205. _this.find_keyset(keyset.version, esc(__iced_deferrals.defer({
  206. assign_fn: (function() {
  207. return function() {
  208. return found = arguments[0];
  209. };
  210. })(),
  211. lineno: 80
  212. })));
  213. __iced_deferrals._fulfill();
  214. })(__iced_k);
  215. } else {
  216. return __iced_k();
  217. }
  218. })(__iced_k);
  219. } else {
  220. return __iced_k();
  221. }
  222. })(function() {
  223. (function(__iced_k) {
  224. if (!found) {
  225. (function(__iced_k) {
  226. __iced_deferrals = new iced.Deferrals(__iced_k, {
  227. parent: ___iced_passed_deferral,
  228. filename: "/home/max/src/keybase/node-installer/src/key_setup.iced",
  229. funcname: "KeySetup.run"
  230. });
  231. _this.check_prepackaged_keyset(esc(__iced_deferrals.defer({
  232. lineno: 84
  233. })));
  234. __iced_deferrals._fulfill();
  235. })(function() {
  236. (function(__iced_k) {
  237. __iced_deferrals = new iced.Deferrals(__iced_k, {
  238. parent: ___iced_passed_deferral,
  239. filename: "/home/max/src/keybase/node-installer/src/key_setup.iced",
  240. funcname: "KeySetup.run"
  241. });
  242. _this.install_prepackaged_keyset(esc(__iced_deferrals.defer({
  243. lineno: 85
  244. })));
  245. __iced_deferrals._fulfill();
  246. })(__iced_k);
  247. });
  248. } else {
  249. return __iced_k();
  250. }
  251. })(function() {
  252. log.debug("- KeySetup::run (found=" + found + ")");
  253. return cb(null);
  254. });
  255. });
  256. };
  257. })(this));
  258. };
  259. KeySetup.prototype.find_key = function(_arg, cb) {
  260. var all_keys, em, err, key, m, msg, ret, uid, v, version, wanted_key, wanted_v, which, ___iced_passed_deferral, __iced_deferrals, __iced_k, _i, _j, _len, _len1, _ref1, _ref2;
  261. __iced_k = __iced_k_noop;
  262. ___iced_passed_deferral = iced.findDeferral(arguments);
  263. which = _arg.which, version = _arg.version;
  264. log.debug("+ KeySetup::find_latest_key " + which + "@" + version);
  265. em = constants.uid_email[which];
  266. err = key = null;
  267. all_keys = this.config.keyring_index().lookup().email.get(em);
  268. wanted_key = null;
  269. wanted_v = null;
  270. ret = null;
  271. for (_i = 0, _len = all_keys.length; _i < _len; _i++) {
  272. key = all_keys[_i];
  273. _ref1 = key.userids();
  274. for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
  275. uid = _ref1[_j];
  276. if (!((m = (_ref2 = uid.comment) != null ? _ref2.match(/^v(\d+)$/) : void 0))) {
  277. continue;
  278. }
  279. v = parseInt(m[1], 10);
  280. if ((version != null) && (v === version)) {
  281. wanted_key = key;
  282. wanted_v = v;
  283. break;
  284. } else if ((version == null) && ((wanted_v != null) || v > wanted_v)) {
  285. wanted_key = key;
  286. wanted_v = v;
  287. }
  288. }
  289. if ((version != null) && wanted_key) {
  290. break;
  291. }
  292. }
  293. (function(_this) {
  294. return (function(__iced_k) {
  295. if (wanted_key == null) {
  296. msg = "No " + which + "-signing key (" + em + ") in GPG keychain";
  297. if (version != null) {
  298. msg += " (at version " + version + ")";
  299. }
  300. return __iced_k(log.warn(msg));
  301. } else {
  302. ret = _this.config.master_ring().make_key({
  303. fingerprint: wanted_key.fingerprint(),
  304. username: wanted_key.emails()[0]
  305. });
  306. (function(__iced_k) {
  307. __iced_deferrals = new iced.Deferrals(__iced_k, {
  308. parent: ___iced_passed_deferral,
  309. filename: "/home/max/src/keybase/node-installer/src/key_setup.iced",
  310. funcname: "KeySetup.find_key"
  311. });
  312. ret.load(__iced_deferrals.defer({
  313. assign_fn: (function() {
  314. return function() {
  315. return err = arguments[0];
  316. };
  317. })(),
  318. lineno: 125
  319. }));
  320. __iced_deferrals._fulfill();
  321. })(function() {
  322. return __iced_k(err != null ? ret = null : void 0);
  323. });
  324. }
  325. });
  326. })(this)((function(_this) {
  327. return function() {
  328. log.debug("- KeySetup::find_latest_key " + which + "@" + version + " -> " + err + " / " + wanted_v + " / " + (key != null ? key.fingerprint() : void 0));
  329. return cb(err, ret, wanted_v);
  330. };
  331. })(this));
  332. };
  333. return KeySetup;
  334. })();
  335. }).call(this);