keybase-proofs 2.3.33 → 2.3.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 2.3.34 (2026-09-22)
2
+
3
+ - Remove web of trust proof classes.
4
+ - Various parsing and schema verification fixes.
5
+
1
6
  ## 2.3.33 (2026-06-02)
2
7
 
3
8
  - Fix Twitter search query. We must not search for Keybase.io anymore when
package/Makefile CHANGED
@@ -48,7 +48,6 @@ $(BUILD_STAMP): \
48
48
  lib/track.js \
49
49
  lib/wallet.js \
50
50
  lib/web_service.js \
51
- lib/wot.js \
52
51
  lib/update_passphrase_hash.js \
53
52
  lib/update_settings.js \
54
53
  lib/util.js
package/lib/alloc.js CHANGED
@@ -1,6 +1,6 @@
1
- // Generated by IcedCoffeeScript 108.0.12
1
+ // Generated by IcedCoffeeScript 108.0.11
2
2
  (function() {
3
- var Announcement, Auth, Cryptocurrency, Device, Eldest, PGPUpdate, PerUserKey, Revoke, Sibkey, Stellar, Subkey, Track, Untrack, UpdatePassphraseHash, UpdateSettings, alloc, base, get_klass, lookup_tab, team, team_hidden, web_service, wot, _ref;
3
+ var Announcement, Auth, Cryptocurrency, Device, Eldest, PGPUpdate, PerUserKey, Revoke, Sibkey, Stellar, Subkey, Track, Untrack, UpdatePassphraseHash, UpdateSettings, alloc, base, get_klass, get_own, lookup_tab, team, team_hidden, web_service, _ref;
4
4
 
5
5
  web_service = require('./web_service');
6
6
 
@@ -34,12 +34,12 @@
34
34
 
35
35
  UpdateSettings = require('./update_settings').UpdateSettings;
36
36
 
37
+ get_own = require('./util').get_own;
38
+
37
39
  team = require('./team');
38
40
 
39
41
  team_hidden = require('./team_hidden');
40
42
 
41
- wot = require('./wot');
42
-
43
43
  lookup_tab = {
44
44
  "web_service_binding.twitter": web_service.TwitterBinding,
45
45
  "web_service_binding.facebook": web_service.FacebookBinding,
@@ -82,15 +82,13 @@
82
82
  "team.delete_up_pointer": team.DeleteUpPointer,
83
83
  "team.kbfs": team.KBFS,
84
84
  "team.settings": team.Settings,
85
- "team.bot_settings": team.BotSettings,
86
- "wot.vouch": wot.Vouch,
87
- "wot.react": wot.React
85
+ "team.bot_settings": team.BotSettings
88
86
  };
89
87
 
90
88
  get_klass = function(type, extra_lookup_tab) {
91
89
  var err, klass;
92
90
  err = klass = null;
93
- if (!(((klass = extra_lookup_tab != null ? extra_lookup_tab[type] : void 0) != null) || ((klass = lookup_tab[type]) != null))) {
91
+ if (!(((extra_lookup_tab != null) && ((klass = get_own(extra_lookup_tab, type)) != null)) || ((klass = get_own(lookup_tab, type)) != null))) {
94
92
  err = new Error("Unknown proof class: " + type);
95
93
  }
96
94
  return [err, klass];
package/lib/main.js CHANGED
@@ -2,7 +2,7 @@
2
2
  (function() {
3
3
  var k, m, mods, v, _i, _len;
4
4
 
5
- mods = [require('./web_service'), require('./b64extract'), require('./util'), require('./alloc'), require('./alloc3'), require('./constants'), require('./base'), require('./track'), require('./auth'), require('./update_passphrase_hash'), require('./update_settings'), require('./device'), require('./revoke'), require('./cryptocurrency'), require('./per_user_key'), require('./wallet'), require('./subkey'), require('./sibkey'), require('./eldest'), require('./pgp_update'), require('./announcement'), require('./scrapers/twitter'), require('./scrapers/facebook'), require('./scrapers/base'), require('./scrapers/github'), require('./scrapers/reddit'), require('./scrapers/generic_web_site'), require('./scrapers/dns'), require('./scrapers/coinbase'), require('./scrapers/hackernews'), require('./scrapers/generic_social'), require('./errors'), require('./wot')];
5
+ mods = [require('./web_service'), require('./b64extract'), require('./util'), require('./alloc'), require('./alloc3'), require('./constants'), require('./base'), require('./track'), require('./auth'), require('./update_passphrase_hash'), require('./update_settings'), require('./device'), require('./revoke'), require('./cryptocurrency'), require('./per_user_key'), require('./wallet'), require('./subkey'), require('./sibkey'), require('./eldest'), require('./pgp_update'), require('./announcement'), require('./scrapers/twitter'), require('./scrapers/facebook'), require('./scrapers/base'), require('./scrapers/github'), require('./scrapers/reddit'), require('./scrapers/generic_web_site'), require('./scrapers/dns'), require('./scrapers/coinbase'), require('./scrapers/hackernews'), require('./scrapers/generic_social'), require('./errors')];
6
6
 
7
7
  for (_i = 0, _len = mods.length; _i < _len; _i++) {
8
8
  m = mods[_i];
@@ -20,6 +20,4 @@
20
20
 
21
21
  exports.schema = require('./schema3');
22
22
 
23
- exports.wot = require('./wot');
24
-
25
23
  }).call(this);
package/lib/parse3.js CHANGED
@@ -1,6 +1,6 @@
1
- // Generated by IcedCoffeeScript 108.0.12
1
+ // Generated by IcedCoffeeScript 108.0.11
2
2
  (function() {
3
- var bufeq_fast, constants, is_dict, is_hex, is_int, pack, unpack, unpack_strict,
3
+ var bufeq_fast, constants, decode_hex, is_dict, is_hex, is_int, pack, unpack, unpack_strict,
4
4
  __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; };
5
5
 
6
6
  unpack = require('purepack').unpack;
@@ -45,13 +45,27 @@
45
45
  return typeof s === 'number' && (n !== Infinity) && (n === s) && n >= 0;
46
46
  };
47
47
 
48
+ exports.decode_hex = decode_hex = function(s) {
49
+ var buf;
50
+ if (typeof s !== 'string') {
51
+ return null;
52
+ }
53
+ buf = Buffer.from(s, 'hex');
54
+ if (buf.toString('hex') !== s.toLowerCase()) {
55
+ return null;
56
+ }
57
+ return buf;
58
+ };
59
+
48
60
  exports.is_hex = is_hex = function(h, l) {
49
61
  if (h == null) {
50
62
  return false;
51
63
  }
52
64
  if (typeof h === 'string') {
53
- h = Buffer.from(h, 'hex');
54
- } else if (!Buffer.isBuffer) {
65
+ if ((h = decode_hex(h)) == null) {
66
+ return false;
67
+ }
68
+ } else if (!Buffer.isBuffer(h)) {
55
69
  return false;
56
70
  }
57
71
  return h.length === l;
@@ -167,12 +181,13 @@
167
181
  };
168
182
 
169
183
  exports.unhex = function(b) {
184
+ var h;
170
185
  if (b == null) {
171
186
  return null;
172
187
  } else if (Buffer.isBuffer(b)) {
173
188
  return b;
174
- } else if (typeof b === 'string') {
175
- return Buffer.from(b, 'hex');
189
+ } else if (typeof b === 'string' && ((h = decode_hex(b)) != null)) {
190
+ return h;
176
191
  } else {
177
192
  throw new Error("bad binary or hex string");
178
193
  }
package/lib/schema3.js CHANGED
@@ -1,16 +1,22 @@
1
- // Generated by IcedCoffeeScript 108.0.12
1
+ // Generated by IcedCoffeeScript 108.0.11
2
2
  (function() {
3
- var Array, Binary, Bool, ChainType, Dict, Int, KID, LinkType, Node, Object, Or, Path, PtkType, Seqno, String, StringEnum, Struct, Time, Value, mkerr, parse,
3
+ var Array, Binary, Bool, ChainType, Dict, Int, KID, LinkType, Node, Object, Or, Path, PtkType, Seqno, String, StringEnum, Struct, Time, Value, get_own, has_own, is_reserved_key_name, mkerr, parse, _ref,
4
4
  __hasProp = {}.hasOwnProperty,
5
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
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
7
 
8
8
  parse = require('./parse3');
9
9
 
10
+ _ref = require('./util'), has_own = _ref.has_own, get_own = _ref.get_own;
11
+
10
12
  mkerr = function(path, err) {
11
13
  return new Error("At " + (path.toString()) + ": " + err);
12
14
  };
13
15
 
16
+ is_reserved_key_name = function(k) {
17
+ return k === '__proto__';
18
+ };
19
+
14
20
  Path = (function() {
15
21
  function Path(v) {
16
22
  this._v = v || [];
@@ -84,7 +90,7 @@
84
90
  return null;
85
91
  }
86
92
  if (obj == null) {
87
- mkerr(path, "value cannot be null");
93
+ return mkerr(path, "value cannot be null");
88
94
  }
89
95
  return checker._check({
90
96
  path: path,
@@ -100,15 +106,20 @@
100
106
  __extends(Dict, _super);
101
107
 
102
108
  function Dict(_arg) {
103
- var keys;
109
+ var k, keys;
104
110
  keys = _arg.keys;
111
+ for (k in keys) {
112
+ if (is_reserved_key_name(k)) {
113
+ throw new Error("schema key name is not allowed: " + k);
114
+ }
115
+ }
105
116
  this._keys = keys;
106
117
  this._allow_extra_keys = false;
107
118
  Dict.__super__.constructor.apply(this, arguments);
108
119
  }
109
120
 
110
121
  Dict.prototype._check = function(_arg) {
111
- var checker, err, k, new_path, obj, path, v, _ref;
122
+ var checker, err, k, new_path, obj, path, v, _ref1;
112
123
  path = _arg.path, obj = _arg.obj;
113
124
  if (!parse.is_dict(obj)) {
114
125
  return mkerr(path, "need a dictionary");
@@ -116,7 +127,10 @@
116
127
  for (k in obj) {
117
128
  v = obj[k];
118
129
  new_path = path.extend(k);
119
- if ((checker = this._keys[k]) == null) {
130
+ if (is_reserved_key_name(k)) {
131
+ return mkerr(new_path, "key name is not allowed");
132
+ }
133
+ if ((checker = get_own(this._keys, k)) == null) {
120
134
  if (this._allow_extra_keys) {
121
135
  continue;
122
136
  }
@@ -130,11 +144,11 @@
130
144
  return err;
131
145
  }
132
146
  }
133
- _ref = this._keys;
134
- for (k in _ref) {
135
- v = _ref[k];
147
+ _ref1 = this._keys;
148
+ for (k in _ref1) {
149
+ v = _ref1[k];
136
150
  new_path = path.extend(k);
137
- if ((obj[k] == null) && !v.is_optional()) {
151
+ if (!has_own(obj, k) && !v.is_optional()) {
138
152
  return mkerr(new_path, "key is missing but is mandatory");
139
153
  }
140
154
  }
@@ -142,12 +156,12 @@
142
156
  };
143
157
 
144
158
  Dict.prototype.debug_localize = function(obj) {
145
- var k, ret, v, _ref;
159
+ var k, ret, v, _ref1;
146
160
  ret = {};
147
- _ref = this._keys;
148
- for (k in _ref) {
149
- v = _ref[k];
150
- if (obj[k] != null) {
161
+ _ref1 = this._keys;
162
+ for (k in _ref1) {
163
+ v = _ref1[k];
164
+ if (has_own(obj, k)) {
151
165
  ret[v._name || k] = v.debug_localize(obj[k]);
152
166
  }
153
167
  }
@@ -155,6 +169,9 @@
155
169
  };
156
170
 
157
171
  Dict.prototype.set_key = function(k, v) {
172
+ if (is_reserved_key_name(k)) {
173
+ throw new Error("schema key name is not allowed: " + k);
174
+ }
158
175
  return this._keys[k] = v;
159
176
  };
160
177
 
@@ -282,7 +299,7 @@
282
299
  var bot, obj, path;
283
300
  path = _arg.path, obj = _arg.obj;
284
301
  if (this._convert && typeof obj === 'string') {
285
- obj = Buffer.from(obj, 'hex');
302
+ obj = parse.decode_hex(obj);
286
303
  }
287
304
  if (!(Buffer.isBuffer(obj) && obj.length === this._len)) {
288
305
  return [mkerr(path, "value needs to be buffer of length " + this._len), null];
@@ -297,12 +314,12 @@
297
314
  };
298
315
 
299
316
  Binary.prototype._check = function(_arg) {
300
- var err, obj, path, _, _ref;
317
+ var err, obj, path, _, _ref1;
301
318
  path = _arg.path, obj = _arg.obj;
302
- _ref = this._convert_and_check({
319
+ _ref1 = this._convert_and_check({
303
320
  path: path,
304
321
  obj: obj
305
- }), err = _ref[0], _ = _ref[1];
322
+ }), err = _ref1[0], _ = _ref1[1];
306
323
  return err;
307
324
  };
308
325
 
@@ -321,17 +338,17 @@
321
338
  }
322
339
 
323
340
  KID.prototype._check = function(_arg) {
324
- var err, obj, path, typ, _ref, _ref1;
341
+ var err, obj, path, typ, _ref1, _ref2;
325
342
  path = _arg.path, obj = _arg.obj;
326
- _ref = this._convert_and_check({
343
+ _ref1 = this._convert_and_check({
327
344
  path: path,
328
345
  obj: obj
329
- }), err = _ref[0], obj = _ref[1];
346
+ }), err = _ref1[0], obj = _ref1[1];
330
347
  if (err != null) {
331
348
  return err;
332
349
  }
333
350
  typ = this._encryption ? [0x21] : [0x20, 0x01, 0x11, 0x13, 0x16];
334
- if ((obj[0] !== 0x01) || (_ref1 = obj[1], __indexOf.call(typ, _ref1) < 0) || (obj.slice(-1)[0] !== 0x0a)) {
351
+ if ((obj[0] !== 0x01) || (_ref2 = obj[1], __indexOf.call(typ, _ref2) < 0) || (obj.slice(-1)[0] !== 0x0a)) {
335
352
  return mkerr(path, "value must be a KID" + (this._encryption ? ' (for encryption)' : ''));
336
353
  }
337
354
  return null;
@@ -431,12 +448,12 @@
431
448
  }
432
449
 
433
450
  String.prototype._check = function(_arg) {
434
- var max_length, obj, path, _ref;
451
+ var max_length, obj, path, _ref1;
435
452
  path = _arg.path, obj = _arg.obj;
436
453
  if (typeof obj !== 'string' || obj.length === 0) {
437
454
  return mkerr(path, "value must be a string");
438
455
  }
439
- if ((max_length = (_ref = this._args) != null ? _ref.max_length : void 0) != null) {
456
+ if ((max_length = (_ref1 = this._args) != null ? _ref1.max_length : void 0) != null) {
440
457
  if (obj.length > max_length) {
441
458
  return mkerr(path, "value length needs to be < " + max_length);
442
459
  }
@@ -457,6 +474,9 @@
457
474
  this._values = {};
458
475
  for (_i = 0, _len = values.length; _i < _len; _i++) {
459
476
  v = values[_i];
477
+ if (is_reserved_key_name(v)) {
478
+ throw new Error("enum value is not allowed: " + v);
479
+ }
460
480
  this._values[v] = true;
461
481
  }
462
482
  }
@@ -467,7 +487,7 @@
467
487
  if (typeof obj !== 'string') {
468
488
  return mkerr(path, "value must be a string");
469
489
  }
470
- if (!this._values[obj]) {
490
+ if (!has_own(this._values, obj)) {
471
491
  return mkerr(path, "unknown enum value (" + obj + ")");
472
492
  }
473
493
  return null;
@@ -567,13 +587,13 @@
567
587
  }
568
588
 
569
589
  Or.prototype._check = function(_arg) {
570
- var obj, ok, path, t, _i, _len, _ref;
590
+ var obj, ok, path, t, _i, _len, _ref1;
571
591
  path = _arg.path, obj = _arg.obj;
572
592
  ok = false;
573
- _ref = this._terms;
574
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
575
- t = _ref[_i];
576
- if (!(t.check(obj))) {
593
+ _ref1 = this._terms;
594
+ for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
595
+ t = _ref1[_i];
596
+ if (!(!t.check(obj))) {
577
597
  continue;
578
598
  }
579
599
  ok = true;
@@ -113,7 +113,7 @@
113
113
  return (function(__iced_k) {
114
114
  __iced_deferrals = new iced.Deferrals(__iced_k, {
115
115
  parent: ___iced_passed_deferral,
116
- filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/proofs/src/scrapers/twitter.iced",
116
+ filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/keybase-proofs/src/scrapers/twitter.iced",
117
117
  funcname: "TwitterScraper.hunt2"
118
118
  });
119
119
  _this._get_body_api({
@@ -174,7 +174,7 @@
174
174
  };
175
175
 
176
176
  TwitterScraper.prototype.users_lookup = function(_arg, cb) {
177
- var batch_size, cursor_wait, dict, done, err, i, identifier, ids, include_entities, input_list, j, json, key, query, r, rc, res, responses, screen_names, u, ___iced_passed_deferral, __iced_deferrals, __iced_k;
177
+ var batch_size, cursor_wait, done, err, i, identifier, ids, include_entities, input_list, j, json, key, map, query, r, rc, res, responses, screen_names, u, ___iced_passed_deferral, __iced_deferrals, __iced_k;
178
178
  __iced_k = __iced_k_noop;
179
179
  ___iced_passed_deferral = iced.findDeferral(arguments);
180
180
  ids = _arg.ids, screen_names = _arg.screen_names, cursor_wait = _arg.cursor_wait, include_entities = _arg.include_entities;
@@ -222,7 +222,7 @@
222
222
  (function(__iced_k) {
223
223
  __iced_deferrals = new iced.Deferrals(__iced_k, {
224
224
  parent: ___iced_passed_deferral,
225
- filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/proofs/src/scrapers/twitter.iced",
225
+ filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/keybase-proofs/src/scrapers/twitter.iced",
226
226
  funcname: "TwitterScraper.users_lookup"
227
227
  });
228
228
  _this._get_body_api({
@@ -265,7 +265,7 @@
265
265
  (function(__iced_k) {
266
266
  __iced_deferrals = new iced.Deferrals(__iced_k, {
267
267
  parent: ___iced_passed_deferral,
268
- filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/proofs/src/scrapers/twitter.iced",
268
+ filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/keybase-proofs/src/scrapers/twitter.iced",
269
269
  funcname: "TwitterScraper.users_lookup"
270
270
  });
271
271
  setTimeout(__iced_deferrals.defer({
@@ -294,16 +294,16 @@
294
294
  return function() {
295
295
  var _i, _j, _len, _len1;
296
296
  if (responses != null ? responses.length : void 0) {
297
- dict = {};
297
+ map = new Map;
298
298
  key = ids != null ? "id_str" : "screen_name";
299
299
  for (_i = 0, _len = responses.length; _i < _len; _i++) {
300
300
  r = responses[_i];
301
- dict[r[key]] = r;
301
+ map.set(String(r[key]), r);
302
302
  }
303
303
  res = [];
304
304
  for (i = _j = 0, _len1 = input_list.length; _j < _len1; i = ++_j) {
305
305
  identifier = input_list[i];
306
- res[i] = dict[identifier] || null;
306
+ res[i] = map.get(String(identifier)) || null;
307
307
  }
308
308
  }
309
309
  return cb(err, res);
@@ -351,7 +351,7 @@
351
351
  (function(__iced_k) {
352
352
  __iced_deferrals = new iced.Deferrals(__iced_k, {
353
353
  parent: ___iced_passed_deferral,
354
- filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/proofs/src/scrapers/twitter.iced",
354
+ filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/keybase-proofs/src/scrapers/twitter.iced",
355
355
  funcname: "TwitterScraper.get_follower_ids"
356
356
  });
357
357
  _this._get_body_api({
@@ -397,7 +397,7 @@
397
397
  (function(__iced_k) {
398
398
  __iced_deferrals = new iced.Deferrals(__iced_k, {
399
399
  parent: ___iced_passed_deferral,
400
- filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/proofs/src/scrapers/twitter.iced",
400
+ filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/keybase-proofs/src/scrapers/twitter.iced",
401
401
  funcname: "TwitterScraper.get_follower_ids"
402
402
  });
403
403
  setTimeout(__iced_deferrals.defer({
@@ -518,7 +518,7 @@
518
518
  return (function(__iced_k) {
519
519
  __iced_deferrals = new iced.Deferrals(__iced_k, {
520
520
  parent: ___iced_passed_deferral,
521
- filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/proofs/src/scrapers/twitter.iced",
521
+ filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/keybase-proofs/src/scrapers/twitter.iced",
522
522
  funcname: "TwitterScraper.check_status"
523
523
  });
524
524
  _this._get_url_body({
@@ -605,7 +605,7 @@
605
605
  return (function(__iced_k) {
606
606
  __iced_deferrals = new iced.Deferrals(__iced_k, {
607
607
  parent: ___iced_passed_deferral,
608
- filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/proofs/src/scrapers/twitter.iced",
608
+ filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/keybase-proofs/src/scrapers/twitter.iced",
609
609
  funcname: "TwitterScraper._get_bearer_token"
610
610
  });
611
611
  bt.get(__iced_deferrals.defer({
@@ -637,7 +637,7 @@
637
637
  return (function(__iced_k) {
638
638
  __iced_deferrals = new iced.Deferrals(__iced_k, {
639
639
  parent: ___iced_passed_deferral,
640
- filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/proofs/src/scrapers/twitter.iced",
640
+ filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/keybase-proofs/src/scrapers/twitter.iced",
641
641
  funcname: "TwitterScraper._get_body_api"
642
642
  });
643
643
  _this._get_bearer_token(__iced_deferrals.defer({
@@ -670,7 +670,7 @@
670
670
  (function(__iced_k) {
671
671
  __iced_deferrals = new iced.Deferrals(__iced_k, {
672
672
  parent: ___iced_passed_deferral,
673
- filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/proofs/src/scrapers/twitter.iced",
673
+ filename: "/Users/michal/SourceCode/keybase/go/src/github.com/keybase/keybase-proofs/src/scrapers/twitter.iced",
674
674
  funcname: "TwitterScraper._get_body_api"
675
675
  });
676
676
  _this._get_url_body(args, __iced_deferrals.defer({
package/lib/util.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // Generated by IcedCoffeeScript 108.0.11
2
2
  (function() {
3
- var Lock, bufeq_secure, constants, crypto, json_secure_compare, json_stringify_sorted, pack, v2_sig_type_from_sig_type, _ref;
3
+ var Lock, bufeq_secure, constants, crypto, get_own, has_own, json_secure_compare, json_stringify_sorted, pack, v2_sig_type_from_sig_type, _has_own, _ref;
4
4
 
5
5
  constants = require('./constants').constants;
6
6
 
@@ -10,6 +10,20 @@
10
10
 
11
11
  pack = require('purepack').pack;
12
12
 
13
+ _has_own = {}.constructor.prototype.hasOwnProperty;
14
+
15
+ exports.has_own = has_own = function(o, k) {
16
+ return _has_own.call(o, k);
17
+ };
18
+
19
+ exports.get_own = get_own = function(o, k) {
20
+ if (_has_own.call(o, k)) {
21
+ return o[k];
22
+ } else {
23
+ return void 0;
24
+ }
25
+ };
26
+
13
27
  exports.json_secure_compare = json_secure_compare = function(a, b) {
14
28
  var err, o1, o2, x, _ref1;
15
29
  _ref1 = (function() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keybase-proofs",
3
- "version": "2.3.33",
3
+ "version": "2.3.34",
4
4
  "description": "Publicly-verifiable proofs of identity",
5
5
  "main": "lib/main.js",
6
6
  "scripts": {
package/src/alloc.iced CHANGED
@@ -15,9 +15,9 @@ base = require './base'
15
15
  {PGPUpdate} = require './pgp_update'
16
16
  {UpdatePassphraseHash} = require './update_passphrase_hash'
17
17
  {UpdateSettings} = require './update_settings'
18
+ {get_own} = require './util'
18
19
  team = require './team'
19
20
  team_hidden = require './team_hidden'
20
- wot = require './wot'
21
21
 
22
22
  #=======================================================
23
23
 
@@ -65,15 +65,13 @@ lookup_tab = {
65
65
  "team.kbfs" : team.KBFS
66
66
  "team.settings" : team.Settings
67
67
  "team.bot_settings" : team.BotSettings
68
- "wot.vouch" : wot.Vouch
69
- "wot.react" : wot.React
70
68
  }
71
69
 
72
70
  #--------------------------------------------
73
71
 
74
72
  get_klass = (type, extra_lookup_tab) ->
75
73
  err = klass = null
76
- unless (klass = extra_lookup_tab?[type])? or (klass = lookup_tab[type])?
74
+ unless (extra_lookup_tab? and (klass = get_own(extra_lookup_tab, type))?) or (klass = get_own(lookup_tab, type))?
77
75
  err = new Error "Unknown proof class: #{type}"
78
76
  [err, klass]
79
77
 
@@ -44,6 +44,8 @@ exports.constants = constants =
44
44
  kbfs : "team.kbfs"
45
45
  settings : "team.settings"
46
46
  bot_settings : "team.bot_settings"
47
+ # wot proofs are deprecated, but constants must remain available to kbweb
48
+ # because of existing signatures.
47
49
  wot :
48
50
  vouch : "wot.vouch"
49
51
  react : "wot.react"
@@ -83,6 +85,8 @@ exports.constants = constants =
83
85
  bot_settings: 48
84
86
  wallet :
85
87
  stellar : 15
88
+ # wot proofs are deprecated, but constants must remain available to kbweb
89
+ # because of existing signatures.
86
90
  wot :
87
91
  vouch : 16
88
92
  vouch_with_revoke : 17
package/src/main.iced CHANGED
@@ -32,7 +32,6 @@ mods = [
32
32
  require('./scrapers/hackernews')
33
33
  require('./scrapers/generic_social')
34
34
  require('./errors')
35
- require('./wot')
36
35
  ]
37
36
 
38
37
  for m in mods
@@ -44,4 +43,3 @@ exports.team = require('./team')
44
43
  exports.team_hidden = require('./team_hidden')
45
44
  exports.sig3 = require('./sig3')
46
45
  exports.schema = require('./schema3')
47
- exports.wot = require('./wot')
package/src/parse3.iced CHANGED
@@ -15,10 +15,16 @@ exports.is_kid = (h) -> is_hex(h,35)
15
15
  exports.is_int = is_int = (s) ->
16
16
  n = Math.floor Number s
17
17
  return typeof(s) is 'number' and (n isnt Infinity) and (n is s) and n >= 0
18
+ exports.decode_hex = decode_hex = (s) ->
19
+ return null unless typeof(s) is 'string'
20
+ buf = Buffer.from s, 'hex'
21
+ return null unless buf.toString('hex') is s.toLowerCase()
22
+ buf
18
23
  exports.is_hex = is_hex = (h, l) ->
19
24
  return false unless h?
20
- if typeof(h) is 'string' then h = Buffer.from(h, 'hex')
21
- else if not Buffer.isBuffer then return false
25
+ if typeof(h) is 'string'
26
+ return false unless (h = decode_hex(h))?
27
+ else if not Buffer.isBuffer(h) then return false
22
28
  return (h.length is l)
23
29
  exports.is_seqno = (s) ->
24
30
  return false unless s?
@@ -75,6 +81,6 @@ exports.is_chain_type = (x) ->
75
81
  exports.unhex = (b) ->
76
82
  if not b? then null
77
83
  else if Buffer.isBuffer(b) then b
78
- else if typeof(b) is 'string' then Buffer.from(b, 'hex')
84
+ else if typeof(b) is 'string' and (h = decode_hex(b))? then h
79
85
  else throw new Error "bad binary or hex string"
80
86