btc.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. // Generated by IcedCoffeeScript 1.7.1-c
  2. (function() {
  3. var ACCTYPES, ArgumentParser, Base, C, Command, CryptocurrencySigGen, E, PackageJson, S, ST, User, add_option_dict, assert, bitcoyne, dict_union, fs, iced, log, make_esc, prompt_remote_name, prompt_yn, proofs, req, session, util, __iced_k, __iced_k_noop, _ref,
  4. __hasProp = {}.hasOwnProperty,
  5. __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
  6. __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
  7. iced = require('iced-runtime').iced;
  8. __iced_k = __iced_k_noop = function() {};
  9. Base = require('./base').Base;
  10. log = require('../log');
  11. ArgumentParser = require('argparse').ArgumentParser;
  12. add_option_dict = require('./argparse').add_option_dict;
  13. C = require('../constants').constants;
  14. ST = C.signature_types;
  15. ACCTYPES = C.allowed_cryptocurrency_types;
  16. PackageJson = require('../package').PackageJson;
  17. E = require('../err').E;
  18. make_esc = require('iced-error').make_esc;
  19. _ref = require('../prompter'), prompt_yn = _ref.prompt_yn, prompt_remote_name = _ref.prompt_remote_name;
  20. User = require('../user').User;
  21. req = require('../req').req;
  22. assert = require('assert');
  23. session = require('../session');
  24. S = require('../services');
  25. dict_union = require('../util').dict_union;
  26. util = require('util');
  27. fs = require('fs');
  28. proofs = require('keybase-proofs');
  29. bitcoyne = require('bitcoyne');
  30. CryptocurrencySigGen = require('../sigs').CryptocurrencySigGen;
  31. exports.Command = Command = (function(_super) {
  32. __extends(Command, _super);
  33. function Command() {
  34. return Command.__super__.constructor.apply(this, arguments);
  35. }
  36. Command.prototype.OPTS = {
  37. f: {
  38. alias: 'force',
  39. action: 'storeTrue',
  40. help: 'force overwrite, revoking any old addresses'
  41. }
  42. };
  43. Command.prototype.use_session = function() {
  44. return true;
  45. };
  46. Command.prototype.needs_configuration = function() {
  47. return true;
  48. };
  49. Command.prototype.add_subcommand_parser = function(scp) {
  50. var name, opts, sub;
  51. opts = {
  52. aliases: ['bitcoin'],
  53. help: "add a signed cryptocurrency address to your profile"
  54. };
  55. name = "btc";
  56. sub = scp.addParser(name, opts);
  57. add_option_dict(sub, this.OPTS);
  58. sub.addArgument(["btc"], {
  59. nargs: 1,
  60. help: "the address to sign and publicly post"
  61. });
  62. return opts.aliases.concat([name]);
  63. };
  64. Command.prototype.parse_args = function(cb) {
  65. var err, ret, _ref1, _ref2;
  66. _ref1 = bitcoyne.address.check(this.argv.btc[0]), err = _ref1[0], ret = _ref1[1];
  67. if (err != null) {
  68. err = new E.BadCryptocurrencyAddressError("Bad BTC address: " + err.message);
  69. } else if ((ret != null ? ret.version : void 0) == null) {
  70. err = new E.BadCryptocurrencyAddressError("Bad BTC address; no type found");
  71. } else if (!(_ref2 = ret.version, __indexOf.call(ACCTYPES, _ref2) >= 0)) {
  72. err = new E.UnsupportedCryptocurrencyAddressError("Only support bitcoin addresses at current");
  73. } else {
  74. this.address_version = ret.version;
  75. }
  76. return cb(err);
  77. };
  78. Command.prototype.check_exists = function(cb) {
  79. var address_types, addresses, c, err, link, links, m, ok, prompt, ___iced_passed_deferral, __iced_deferrals, __iced_k, _ref1, _ref2;
  80. __iced_k = __iced_k_noop;
  81. ___iced_passed_deferral = iced.findDeferral(arguments);
  82. address_types = ((_ref1 = this.me.sig_chain) != null ? (_ref2 = _ref1.table) != null ? _ref2.get(ST.CRYPTOCURRENCY) : void 0 : void 0) || null;
  83. links = (function() {
  84. var _i, _len, _results;
  85. _results = [];
  86. for (_i = 0, _len = ACCTYPES.length; _i < _len; _i++) {
  87. c = ACCTYPES[_i];
  88. if ((link = address_types != null ? address_types.get(c) : void 0) != null) {
  89. _results.push(link);
  90. }
  91. }
  92. return _results;
  93. })();
  94. addresses = (function() {
  95. var _i, _len, _results;
  96. _results = [];
  97. for (_i = 0, _len = links.length; _i < _len; _i++) {
  98. link = links[_i];
  99. _results.push(link.body().cryptocurrency.address);
  100. }
  101. return _results;
  102. })();
  103. (function(_this) {
  104. return (function(__iced_k) {
  105. if (!addresses.length) {
  106. return __iced_k(err = null);
  107. } else {
  108. (function(__iced_k) {
  109. var _ref3;
  110. if (_ref3 = _this.argv.btc[0], __indexOf.call(addresses, _ref3) >= 0) {
  111. return __iced_k(err = new E.DuplicateError("you've already signed BTC address '" + _this.argv.btc[0] + "'"));
  112. } else {
  113. (function(__iced_k) {
  114. if (!_this.argv.force) {
  115. if (addresses.length === 1) {
  116. prompt = "You already have registered address " + addresses[0] + "; revoke and proceed?";
  117. } else {
  118. prompt = "You already have registered addresses [" + (addresses.join(',')) + "]; revoke and proceed?";
  119. }
  120. (function(__iced_k) {
  121. __iced_deferrals = new iced.Deferrals(__iced_k, {
  122. parent: ___iced_passed_deferral,
  123. filename: "/home/max/src/keybase/node-client/src/command/btc.iced",
  124. funcname: "Command.check_exists"
  125. });
  126. prompt_yn({
  127. prompt: prompt,
  128. defval: false
  129. }, __iced_deferrals.defer({
  130. assign_fn: (function() {
  131. return function() {
  132. err = arguments[0];
  133. return ok = arguments[1];
  134. };
  135. })(),
  136. lineno: 81
  137. }));
  138. __iced_deferrals._fulfill();
  139. })(function() {
  140. return __iced_k(err != null ? void 0 : !ok ? (m = addresses.length === 1 ? 'Address already exists' : "Addresses already exist", err = new E.ProofExistsError(m)) : void 0);
  141. });
  142. } else {
  143. return __iced_k();
  144. }
  145. })(__iced_k);
  146. }
  147. })(__iced_k);
  148. }
  149. });
  150. })(this)((function(_this) {
  151. return function() {
  152. if (typeof err === "undefined" || err === null) {
  153. _this.revoke_sig_ids = (function() {
  154. var _i, _len, _results;
  155. _results = [];
  156. for (_i = 0, _len = links.length; _i < _len; _i++) {
  157. link = links[_i];
  158. _results.push(link.sig_id());
  159. }
  160. return _results;
  161. })();
  162. }
  163. return cb(err);
  164. };
  165. })(this));
  166. };
  167. Command.prototype.allocate_proof_gen = function(cb) {
  168. var arg, cryptocurrency, err, klass, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  169. __iced_k = __iced_k_noop;
  170. ___iced_passed_deferral = iced.findDeferral(arguments);
  171. klass = CryptocurrencySigGen;
  172. cryptocurrency = {
  173. address: this.argv.btc[0],
  174. type: 'bitcoin'
  175. };
  176. arg = {
  177. revoke_sig_ids: this.revoke_sig_ids,
  178. cryptocurrency: cryptocurrency
  179. };
  180. (function(_this) {
  181. return (function(__iced_k) {
  182. __iced_deferrals = new iced.Deferrals(__iced_k, {
  183. parent: ___iced_passed_deferral,
  184. filename: "/home/max/src/keybase/node-client/src/command/btc.iced",
  185. funcname: "Command.allocate_proof_gen"
  186. });
  187. _this.me.gen_sig_base({
  188. klass: klass,
  189. arg: arg
  190. }, __iced_deferrals.defer({
  191. assign_fn: (function(__slot_1) {
  192. return function() {
  193. err = arguments[0];
  194. return __slot_1.gen = arguments[1];
  195. };
  196. })(_this),
  197. lineno: 100
  198. }));
  199. __iced_deferrals._fulfill();
  200. });
  201. })(this)((function(_this) {
  202. return function() {
  203. return cb(err);
  204. };
  205. })(this));
  206. };
  207. Command.prototype.run = function(cb) {
  208. var esc, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  209. __iced_k = __iced_k_noop;
  210. ___iced_passed_deferral = iced.findDeferral(arguments);
  211. esc = make_esc(cb, "Command::run");
  212. (function(_this) {
  213. return (function(__iced_k) {
  214. __iced_deferrals = new iced.Deferrals(__iced_k, {
  215. parent: ___iced_passed_deferral,
  216. filename: "/home/max/src/keybase/node-client/src/command/btc.iced",
  217. funcname: "Command.run"
  218. });
  219. _this.parse_args(esc(__iced_deferrals.defer({
  220. lineno: 107
  221. })));
  222. __iced_deferrals._fulfill();
  223. });
  224. })(this)((function(_this) {
  225. return function() {
  226. (function(__iced_k) {
  227. __iced_deferrals = new iced.Deferrals(__iced_k, {
  228. parent: ___iced_passed_deferral,
  229. filename: "/home/max/src/keybase/node-client/src/command/btc.iced",
  230. funcname: "Command.run"
  231. });
  232. session.login(esc(__iced_deferrals.defer({
  233. lineno: 108
  234. })));
  235. __iced_deferrals._fulfill();
  236. })(function() {
  237. (function(__iced_k) {
  238. __iced_deferrals = new iced.Deferrals(__iced_k, {
  239. parent: ___iced_passed_deferral,
  240. filename: "/home/max/src/keybase/node-client/src/command/btc.iced",
  241. funcname: "Command.run"
  242. });
  243. User.load_me({
  244. secret: true
  245. }, esc(__iced_deferrals.defer({
  246. assign_fn: (function(__slot_1) {
  247. return function() {
  248. return __slot_1.me = arguments[0];
  249. };
  250. })(_this),
  251. lineno: 109
  252. })));
  253. __iced_deferrals._fulfill();
  254. })(function() {
  255. (function(__iced_k) {
  256. __iced_deferrals = new iced.Deferrals(__iced_k, {
  257. parent: ___iced_passed_deferral,
  258. filename: "/home/max/src/keybase/node-client/src/command/btc.iced",
  259. funcname: "Command.run"
  260. });
  261. _this.check_exists(esc(__iced_deferrals.defer({
  262. lineno: 110
  263. })));
  264. __iced_deferrals._fulfill();
  265. })(function() {
  266. (function(__iced_k) {
  267. __iced_deferrals = new iced.Deferrals(__iced_k, {
  268. parent: ___iced_passed_deferral,
  269. filename: "/home/max/src/keybase/node-client/src/command/btc.iced",
  270. funcname: "Command.run"
  271. });
  272. _this.allocate_proof_gen(esc(__iced_deferrals.defer({
  273. lineno: 111
  274. })));
  275. __iced_deferrals._fulfill();
  276. })(function() {
  277. (function(__iced_k) {
  278. __iced_deferrals = new iced.Deferrals(__iced_k, {
  279. parent: ___iced_passed_deferral,
  280. filename: "/home/max/src/keybase/node-client/src/command/btc.iced",
  281. funcname: "Command.run"
  282. });
  283. _this.gen.run(esc(__iced_deferrals.defer({
  284. lineno: 112
  285. })));
  286. __iced_deferrals._fulfill();
  287. })(function() {
  288. log.info("Success!");
  289. return cb(null);
  290. });
  291. });
  292. });
  293. });
  294. });
  295. };
  296. })(this));
  297. };
  298. return Command;
  299. })(Base);
  300. }).call(this);