keybase-proofs 2.3.34 → 2.3.35
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 +4 -0
- package/lib/base.js +64 -62
- package/lib/subkey.js +16 -14
- package/package.json +7 -2
- package/src/base.iced +6 -3
- package/src/subkey.iced +6 -4
- package/.github/workflows/ci.yml +0 -37
- package/.z-scratch/codex-session-01a08545-90c5-73c0-b2c2-68d94481fb63.md +0 -9075
- package/CONTRIBUTORS.md +0 -5
- package/Makefile +0 -69
- package/teams_sample.cson +0 -211
- package/test/files/alloc.iced +0 -40
- package/test/files/auth.iced +0 -132
- package/test/files/b64.iced +0 -58
- package/test/files/errsan.iced +0 -13
- package/test/files/expand.iced +0 -128
- package/test/files/generic_social.iced +0 -67
- package/test/files/parse3.iced +0 -61
- package/test/files/per_user_key.iced +0 -74
- package/test/files/schema3.iced +0 -258
- package/test/files/sibkey.iced +0 -60
- package/test/files/team.iced +0 -118
- package/test/files/team_hidden.iced +0 -321
- package/test/files/util.iced +0 -55
- package/test/files/v2.iced +0 -410
- package/test/files/wallet.iced +0 -110
- package/test/run.iced +0 -1
- package/test_scraper.iced +0 -49
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
{sig3,alloc_v3,team_hidden,errors,constants} = require '../../'
|
|
2
|
-
{EncKeyManager,KeyManager} = require('kbpgp').kb
|
|
3
|
-
{make_esc} = require 'iced-error'
|
|
4
|
-
{new_sig_arg_v3} = require './util'
|
|
5
|
-
{prng} = require 'crypto'
|
|
6
|
-
{pack,unpack} = require 'purepack'
|
|
7
|
-
parse = require '../../lib/parse3'
|
|
8
|
-
pgp_utils = require('pgp-utils')
|
|
9
|
-
{unix_time} = pgp_utils.util
|
|
10
|
-
|
|
11
|
-
twiddle = (b) -> b[0] ^= 1
|
|
12
|
-
twiddle_hex = (b) ->
|
|
13
|
-
buf = Buffer.from(b, 'hex')
|
|
14
|
-
twiddle buf
|
|
15
|
-
buf.toString('hex')
|
|
16
|
-
|
|
17
|
-
_to_check_params = (a) ->
|
|
18
|
-
return {
|
|
19
|
-
user : a.user
|
|
20
|
-
seqno : a.seqno
|
|
21
|
-
prev : a.prev
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
seed_check = (ptk) -> ptk.seed_check = { h : prng(32), v : 1 }
|
|
25
|
-
|
|
26
|
-
exports.test_generate_team_hidden_rotate = (T,cb) ->
|
|
27
|
-
esc = make_esc cb
|
|
28
|
-
await gen { T }, esc defer { km, ret, arg }
|
|
29
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, esc defer()
|
|
30
|
-
cb null, ret
|
|
31
|
-
|
|
32
|
-
exports.test_generate_team_hidden_rotate_with_implicit_admin = (T,cb) ->
|
|
33
|
-
esc = make_esc cb
|
|
34
|
-
admin = {
|
|
35
|
-
id : prng(16)
|
|
36
|
-
seqno : 20
|
|
37
|
-
chain_type : 3
|
|
38
|
-
}
|
|
39
|
-
f = (arg) -> arg.team.admin = admin
|
|
40
|
-
await gen { T, f }, esc defer { km, ret, arg }
|
|
41
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, esc defer ret
|
|
42
|
-
T.equal ret.objs.inner.team.admin, admin, "admin is right"
|
|
43
|
-
cb null
|
|
44
|
-
|
|
45
|
-
gen = ({T,f},cb) ->
|
|
46
|
-
esc = make_esc cb
|
|
47
|
-
await KeyManager.generate {}, esc defer km
|
|
48
|
-
ptk = { generation : 10, ptk_type : constants.ptk_types.reader }
|
|
49
|
-
arg = new_sig_arg_v3 { mk_prev : true, km }
|
|
50
|
-
arg.per_team_keys = [ ptk ]
|
|
51
|
-
arg.team = { id : prng(16) }
|
|
52
|
-
await EncKeyManager.generate {}, esc defer ptk.enc_km
|
|
53
|
-
await KeyManager.generate {}, esc defer ptk.sig_km
|
|
54
|
-
seed_check ptk
|
|
55
|
-
f? arg
|
|
56
|
-
obj = new team_hidden.RotateKey arg
|
|
57
|
-
await obj.generate {}, esc defer ret
|
|
58
|
-
cb null, {ret, km, arg }
|
|
59
|
-
|
|
60
|
-
exports.test_head = (T,cb) ->
|
|
61
|
-
esc = make_esc cb
|
|
62
|
-
f = (arg) ->
|
|
63
|
-
arg.seqno = 1
|
|
64
|
-
arg.prev = null
|
|
65
|
-
await gen { T, f }, esc defer { km, ret, arg }
|
|
66
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, esc defer()
|
|
67
|
-
cb null
|
|
68
|
-
|
|
69
|
-
exports.test_many_ptks = (T,cb) ->
|
|
70
|
-
esc = make_esc cb
|
|
71
|
-
await KeyManager.generate {}, esc defer km
|
|
72
|
-
arg = new_sig_arg_v3 { mk_prev : true, km }
|
|
73
|
-
arg.team = { id : prng(16) }
|
|
74
|
-
arg.per_team_keys = []
|
|
75
|
-
constants.ptk_types.bot = 999
|
|
76
|
-
constants.ptk_types.admin = 9999
|
|
77
|
-
for i in Object.values(constants.ptk_types)
|
|
78
|
-
ptk = { generation : 10, ptk_type : i }
|
|
79
|
-
await EncKeyManager.generate {}, esc defer ptk.enc_km
|
|
80
|
-
await KeyManager.generate {}, esc defer ptk.sig_km
|
|
81
|
-
seed_check ptk
|
|
82
|
-
arg.per_team_keys.push ptk
|
|
83
|
-
obj = new team_hidden.RotateKey arg
|
|
84
|
-
await obj.generate {}, esc defer ret
|
|
85
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, esc defer { objs }
|
|
86
|
-
T.equal objs.inner.per_team_keys.length, 3, "3 ptks"
|
|
87
|
-
|
|
88
|
-
arg.per_team_keys[0].ptk_type = 0
|
|
89
|
-
arg.per_team_keys[1].ptk_type = 0
|
|
90
|
-
await obj.generate {}, esc defer ret
|
|
91
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
92
|
-
T.assert err?, "got an error back if repeating the type"
|
|
93
|
-
T.equal err.message, "Repeated PTK type 0 not allowed", "right message"
|
|
94
|
-
|
|
95
|
-
arg.per_team_keys[1].ptk_type = 100
|
|
96
|
-
await obj.generate {}, esc defer ret
|
|
97
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
98
|
-
T.assert err?, "got an error back if using a bad PTK type"
|
|
99
|
-
T.equal err.message, "At inner.b.k.1.t: value must be a PTK type"
|
|
100
|
-
|
|
101
|
-
cb null
|
|
102
|
-
|
|
103
|
-
exports.test_generate_verify_team_hidden_rotate = (T,cb) ->
|
|
104
|
-
esc = make_esc cb
|
|
105
|
-
await gen { T }, esc defer {ret, km, arg }
|
|
106
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, esc defer { objs }
|
|
107
|
-
await KeyManager.generate {}, esc defer km2
|
|
108
|
-
await alloc_v3 { km : km2, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
109
|
-
T.assert err?, "got an error"
|
|
110
|
-
T.equal err.message, "Signature failed to verify", "right error message"
|
|
111
|
-
|
|
112
|
-
arg.user.local.uid = twiddle_hex arg.user.local.uid
|
|
113
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
114
|
-
T.assert err?, "got an error"
|
|
115
|
-
T.equal err.message, "bad UID", "got the wrong UID"
|
|
116
|
-
arg.user.local.uid = twiddle_hex arg.user.local.uid
|
|
117
|
-
|
|
118
|
-
arg.user.local.eldest_seqno++
|
|
119
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
120
|
-
T.assert err?, "got an error"
|
|
121
|
-
T.equal err.message, "bad eldest_seqno", "got the wrong eldest"
|
|
122
|
-
arg.user.local.eldest_seqno--
|
|
123
|
-
|
|
124
|
-
twiddle arg.prev
|
|
125
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
126
|
-
T.assert err?, "got an error"
|
|
127
|
-
T.assert (err instanceof errors.BadPrevError), "right error type"
|
|
128
|
-
twiddle arg.prev
|
|
129
|
-
|
|
130
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg), now : unix_time()+1000000 }, defer err
|
|
131
|
-
T.assert err?, "got an error"
|
|
132
|
-
T.assert (err instanceof errors.ClockSkewError), "right error type"
|
|
133
|
-
|
|
134
|
-
inner_armored = ret.armored.inner
|
|
135
|
-
inner = unpack(Buffer.from(ret.armored.inner, "base64"))
|
|
136
|
-
inner.c++
|
|
137
|
-
ret.armored.inner = pack(inner).toString('base64')
|
|
138
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
139
|
-
T.assert err?, "got an error ack"
|
|
140
|
-
T.equal err.message, "outer's body hash doesn't match inner link", "right message"
|
|
141
|
-
ret.armored.inner = inner_armored
|
|
142
|
-
|
|
143
|
-
cb null
|
|
144
|
-
|
|
145
|
-
exports.test_bad_encoding = (T,cb) ->
|
|
146
|
-
esc = make_esc cb
|
|
147
|
-
await KeyManager.generate {}, esc defer km
|
|
148
|
-
ptk = { generation : 10, ptk_type : constants.ptk_types.reader }
|
|
149
|
-
arg = new_sig_arg_v3 { mk_prev : true, km }
|
|
150
|
-
arg.per_team_keys = [ ptk ]
|
|
151
|
-
arg.team = { id : prng(16) }
|
|
152
|
-
await EncKeyManager.generate {}, esc defer ptk.enc_km
|
|
153
|
-
await KeyManager.generate {}, esc defer ptk.sig_km
|
|
154
|
-
seed_check ptk
|
|
155
|
-
obj = new team_hidden.RotateKey arg
|
|
156
|
-
await obj.generate {}, esc defer ret
|
|
157
|
-
s = ret.armored.inner
|
|
158
|
-
n = 30
|
|
159
|
-
ret.armored.inner = s[0...n] + " " + s[n...]
|
|
160
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
161
|
-
T.assert err?, "error"
|
|
162
|
-
T.equal err.message, "non-canonical base64-encoding in inner", "right message"
|
|
163
|
-
cb null
|
|
164
|
-
|
|
165
|
-
exports.test_bad_outer = (T,cb) ->
|
|
166
|
-
esc = make_esc cb
|
|
167
|
-
run = (f, msg, cb) ->
|
|
168
|
-
await KeyManager.generate {}, esc defer km
|
|
169
|
-
ptk = { generation : 10, ptk_type : constants.ptk_types.reader }
|
|
170
|
-
arg = new_sig_arg_v3 { mk_prev : true, km }
|
|
171
|
-
arg.per_team_keys = [ ptk ]
|
|
172
|
-
arg.team = { id : prng(16) }
|
|
173
|
-
await EncKeyManager.generate {}, esc defer ptk.enc_km
|
|
174
|
-
await KeyManager.generate {}, esc defer ptk.sig_km
|
|
175
|
-
ptk.seed_check = { h : prng(32), v : 1 }
|
|
176
|
-
obj = new team_hidden.RotateKey arg
|
|
177
|
-
obj._generate_outer = ({inner}) ->
|
|
178
|
-
ret = (new sig3.OuterLink {
|
|
179
|
-
version: obj._version()
|
|
180
|
-
seqno : obj.seqno
|
|
181
|
-
prev : parse.unhex(obj.prev)
|
|
182
|
-
inner_hash : obj._hash(inner)
|
|
183
|
-
link_type : obj._v_link_type_v3()
|
|
184
|
-
chain_type : obj._v_chain_type_v3()
|
|
185
|
-
ignore_if_unsupported : obj.ignore_if_unsupported
|
|
186
|
-
}).encode()
|
|
187
|
-
f ret
|
|
188
|
-
ret
|
|
189
|
-
await obj.generate {}, esc defer ret
|
|
190
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
191
|
-
T.assert err?, "error"
|
|
192
|
-
T.equal err.message, msg, "right message"
|
|
193
|
-
cb null
|
|
194
|
-
|
|
195
|
-
await run ((v) -> v.push "foo"), "At outer: need an array with 8 fields", defer()
|
|
196
|
-
await run ((v) -> v.pop()), "At outer: need an array with 8 fields", defer()
|
|
197
|
-
await run ((v) -> v[0]++), "At outer.0: must be set to value 3", defer()
|
|
198
|
-
await run ((v) -> v[1] = ["hi"]), "At outer.1: value must be a seqno (sequence number)", defer()
|
|
199
|
-
await run ((v) -> v[2] = Buffer.alloc(33)), "At outer.2: value needs to be buffer of length 32", defer()
|
|
200
|
-
await run ((v) -> v[3] = Buffer.alloc(33)), "At outer.3: value needs to be buffer of length 32", defer()
|
|
201
|
-
await run ((v) -> v[4] = 1000), "At outer.4: value must be a valid link type", defer()
|
|
202
|
-
await run ((v) -> v[5] = 1000), "At outer.5: value must be a valid chain type", defer()
|
|
203
|
-
await run ((v) -> v[5] = 3), "bad chain/link type combo", defer()
|
|
204
|
-
|
|
205
|
-
cb null
|
|
206
|
-
|
|
207
|
-
exports.test_bad_inner = (T,cb) ->
|
|
208
|
-
|
|
209
|
-
esc = make_esc cb
|
|
210
|
-
ptk = { generation : 10, ptk_type : constants.ptk_types.reader }
|
|
211
|
-
await KeyManager.generate {}, esc defer km
|
|
212
|
-
await EncKeyManager.generate {}, esc defer ptk.enc_km
|
|
213
|
-
await KeyManager.generate {}, esc defer ptk.sig_km
|
|
214
|
-
seed_check ptk
|
|
215
|
-
|
|
216
|
-
run = (f, msg, cb) ->
|
|
217
|
-
arg = new_sig_arg_v3 { mk_prev : true, km }
|
|
218
|
-
arg.per_team_keys = [ ptk ]
|
|
219
|
-
arg.team = { id : prng(16), admin : { id : prng(16), seqno : 19, chain_type : 3 } }
|
|
220
|
-
obj = new team_hidden.RotateKey arg
|
|
221
|
-
obj._generate_inner = (opts, cb) ->
|
|
222
|
-
await obj._generate_inner_impl opts, defer err, json
|
|
223
|
-
f json
|
|
224
|
-
cb err, json
|
|
225
|
-
await obj.generate {}, esc defer ret
|
|
226
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
227
|
-
T.assert err?, "error"
|
|
228
|
-
T.equal err.message, msg, "right message"
|
|
229
|
-
cb null
|
|
230
|
-
|
|
231
|
-
await run ((o) -> o.c = "blah"), "At inner.c: value must be a UTC timestamp", defer()
|
|
232
|
-
await run ((o) -> o.e = Buffer.alloc(13)), "At inner.e: value needs to be buffer of length 16", defer()
|
|
233
|
-
await run ((o) -> o.m = [1]), "At inner.m: need a dictionary", defer()
|
|
234
|
-
await run ((o) -> o.m.c = [1]), "At inner.m.c: value must be a UTC timestamp", defer()
|
|
235
|
-
await run ((o) -> o.m.h = Buffer.alloc(40)), "At inner.m.h: value needs to be buffer of length 32", defer()
|
|
236
|
-
await run ((o) -> o.m.s = -1), "At inner.m.s: value must be a seqno (sequence number)", defer()
|
|
237
|
-
await run ((o) -> delete o.s), "At inner.s: key is missing but is mandatory", defer()
|
|
238
|
-
await run ((o) -> o.s.e = "foo"), "At inner.s.e: value must be a seqno (sequence number)", defer()
|
|
239
|
-
await run ((o) -> o.s.e++), "bad eldest_seqno", defer()
|
|
240
|
-
await run ((o) -> o.s.k = Buffer.alloc(30)), "At inner.s.k: value needs to be buffer of length 35", defer()
|
|
241
|
-
await run ((o) -> o.s.u = [1]), "At inner.s.u: value needs to be buffer of length 16", defer()
|
|
242
|
-
await run ((o) -> o.s.u = Buffer.alloc(16)), "bad UID", defer()
|
|
243
|
-
await run ((o) -> o.p.h = Buffer.alloc(30)), "At inner.p.h: value needs to be buffer of length 32", defer()
|
|
244
|
-
await run ((o) -> o.p.s = {}), "At inner.p.s: value must be a seqno (sequence number)", defer()
|
|
245
|
-
await run ((o) -> o.i.d = 10), "At inner.i.d: value must be a string", defer()
|
|
246
|
-
await run ((o) -> o.i.v = 10), "At inner.i.v: value must be a string", defer()
|
|
247
|
-
await run ((o) -> o.x = 10), "At inner.x: key is not supported", defer()
|
|
248
|
-
await run ((o) -> o.i.x = 10), "At inner.i.x: key is not supported", defer()
|
|
249
|
-
await run ((o) -> o.m.x = 10), "At inner.m.x: key is not supported", defer()
|
|
250
|
-
await run ((o) -> o.t.i = 10), "At inner.t.i: value needs to be buffer of length 16", defer()
|
|
251
|
-
await run ((o) -> o.t = 10), "At inner.t: need a dictionary", defer()
|
|
252
|
-
await run ((o) -> o.b.k[0].x = 10), "At inner.b.k.0.x: key is not supported", defer()
|
|
253
|
-
await run ((o) -> o.b.k[0].s = Buffer.alloc(32)), "At inner.b.k.0.s: value needs to be buffer of length 35" , defer()
|
|
254
|
-
await run ((o) -> o.b.k[0].e = Buffer.alloc(32)), "At inner.b.k.0.e: value needs to be buffer of length 35" , defer()
|
|
255
|
-
await run ((o) -> o.b.k[0].g = Buffer.alloc(3)), "At inner.b.k.0.g: value must be a seqno (sequence number)" , defer()
|
|
256
|
-
await run ((o) -> o.b.k[0].a = 4), "At inner.b.k.0.a: must be set to value 1" , defer()
|
|
257
|
-
await run ((o) -> o.t.a = 10), "At inner.t.a: need a dictionary", defer()
|
|
258
|
-
await run ((o) -> o.t.a.i = 10), "At inner.t.a.i: value needs to be buffer of length 16", defer()
|
|
259
|
-
await run ((o) -> o.t.a.t = 4), "At inner.t.a.t: value must be a valid chain type", defer()
|
|
260
|
-
await run ((o) -> o.t.a.s = "f"), "At inner.t.a.s: value must be a seqno (sequence number)", defer()
|
|
261
|
-
|
|
262
|
-
cb null
|
|
263
|
-
|
|
264
|
-
exports.test_bad_reverse_sig = (T,cb) ->
|
|
265
|
-
esc = make_esc cb
|
|
266
|
-
await KeyManager.generate {}, esc defer km
|
|
267
|
-
ptk = { generation : 10, ptk_type : constants.ptk_types.reader }
|
|
268
|
-
arg = new_sig_arg_v3 { mk_prev : true, km }
|
|
269
|
-
arg.per_team_keys = [ ptk ]
|
|
270
|
-
arg.team = { id : prng(16) }
|
|
271
|
-
await EncKeyManager.generate {}, esc defer ptk.enc_km
|
|
272
|
-
await KeyManager.generate {}, esc defer ptk.sig_km
|
|
273
|
-
seed_check ptk
|
|
274
|
-
obj = new team_hidden.RotateKey arg
|
|
275
|
-
|
|
276
|
-
# Hack - instead of assigning the right reverse sig, assign a twiddled
|
|
277
|
-
# signature (with one bit off).
|
|
278
|
-
obj._v_reverse_sign = ({inner, outer}, cb) ->
|
|
279
|
-
esc = make_esc cb
|
|
280
|
-
for k,i in obj.per_team_keys
|
|
281
|
-
await obj._sign { sig_eng : k.sig_km.make_sig_eng(), outer }, esc defer sig
|
|
282
|
-
twiddle sig
|
|
283
|
-
inner.b.k[i].r = sig
|
|
284
|
-
outer = obj._generate_outer { inner }
|
|
285
|
-
cb null, { inner, outer }
|
|
286
|
-
|
|
287
|
-
await obj.generate {}, esc defer ret
|
|
288
|
-
await alloc_v3 { km, armored : ret.armored, check_params : _to_check_params(arg) }, defer err
|
|
289
|
-
T.assert err?, "got an error"
|
|
290
|
-
T.equal err.message, "Signature failed to verify", "right error"
|
|
291
|
-
T.assert (err.stack.indexOf("_v_verify_reverse_sig") > 0), "we find a reverse sig in the stack"
|
|
292
|
-
cb null
|
|
293
|
-
|
|
294
|
-
exports.test_schema_localize = (T, cb) ->
|
|
295
|
-
esc = make_esc cb
|
|
296
|
-
await gen { T }, esc defer { km, ret, arg }
|
|
297
|
-
[err, outer_obj] = sig3.OuterLink.decode ret.raw.outer
|
|
298
|
-
T.no_error err
|
|
299
|
-
|
|
300
|
-
obj = new team_hidden.RotateKey {}
|
|
301
|
-
await obj.decode_inner { json: ret.raw.inner, outer_obj }, esc defer()
|
|
302
|
-
localized = obj.get_schema().debug_localize(ret.raw.inner)
|
|
303
|
-
|
|
304
|
-
for f in ['ctime', 'entropy', 'merkle_root', 'signer', 'parent_chain_tail', 'client_info', 'team', 'body']
|
|
305
|
-
T.assert localized[f]?, "looking for field #{f}"
|
|
306
|
-
for f in ['ctime', 'hash_meta', 'seqno']
|
|
307
|
-
T.assert localized.merkle_root?[f]?, "looking for field merkle_root.#{f}"
|
|
308
|
-
for f in ['eldest_seqno', 'kid', 'uid']
|
|
309
|
-
T.assert localized.signer?[f]?, "looking for field signer.#{f}"
|
|
310
|
-
for f in ['tail', 'seqno', 'chain_type']
|
|
311
|
-
T.assert localized.parent_chain_tail?[f]?, "looking for field parent_chain_tail.#{f}"
|
|
312
|
-
for f in ['description', 'version']
|
|
313
|
-
T.assert localized.client_info?[f]?, "looking for field client_info.#{f}"
|
|
314
|
-
for f in ['team_id', 'is_implicit', 'is_public']
|
|
315
|
-
T.assert localized.team?[f]?, "looking for field team.#{f}"
|
|
316
|
-
T.assert localized.body?.keys?, "looking for localized.body.keys"
|
|
317
|
-
for k in localized.body?.keys ? []
|
|
318
|
-
for f in ['appkey_derivation_version', 'seed_check', 'encryption_kid', 'generation', 'reverse_sig', 'signing_kid', 'ptk_type']
|
|
319
|
-
T.assert k[f]?, "looking for field body.keys.#{f}"
|
|
320
|
-
|
|
321
|
-
cb null
|
package/test/files/util.iced
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
{prng} = require 'crypto'
|
|
2
|
-
{constants} = require '../..'
|
|
3
|
-
pgp_utils = require('pgp-utils')
|
|
4
|
-
{unix_time} = pgp_utils.util
|
|
5
|
-
{KeyManager} = require('kbpgp').kb
|
|
6
|
-
{make_esc} = require 'iced-error'
|
|
7
|
-
|
|
8
|
-
exports.new_uid = new_uid = () -> Buffer.concat([ prng(15), Buffer.from([0x19])]).toString('hex')
|
|
9
|
-
exports.new_sig_id = new_sig_id = () -> Buffer.concat([ prng(32), Buffer.from([0x22])]).toString('hex')
|
|
10
|
-
exports.new_username = new_username = () -> "u_" + prng(5).toString('hex')
|
|
11
|
-
exports.new_payload_hash = new_payload_hash = () -> prng(32).toString('hex')
|
|
12
|
-
|
|
13
|
-
exports.skip = 1
|
|
14
|
-
|
|
15
|
-
exports.new_sig_arg = new_sig_arg = ({km}) ->
|
|
16
|
-
arg =
|
|
17
|
-
user :
|
|
18
|
-
local :
|
|
19
|
-
uid : new_uid()
|
|
20
|
-
username : new_username()
|
|
21
|
-
host : "keybase.io"
|
|
22
|
-
sig_eng : km.make_sig_eng()
|
|
23
|
-
seqno : 0
|
|
24
|
-
seq_type : constants.seq_types.PUBLIC
|
|
25
|
-
prev : null
|
|
26
|
-
|
|
27
|
-
exports.new_sig_arg_v3 = new_sig_arg_v3 = ({km, mk_prev, eldest_seqno, seqno, parent_chain_tail}) ->
|
|
28
|
-
arg =
|
|
29
|
-
user :
|
|
30
|
-
local :
|
|
31
|
-
uid : new_uid()
|
|
32
|
-
eldest_seqno : eldest_seqno or 1
|
|
33
|
-
sig_eng : km.make_sig_eng()
|
|
34
|
-
seqno : seqno or 7
|
|
35
|
-
prev : (if mk_prev then prng(32) else null)
|
|
36
|
-
parent_chain_tail : (parent_chain_tail or {
|
|
37
|
-
hash : prng(32)
|
|
38
|
-
seqno : 10
|
|
39
|
-
chain_type : constants.seq_types.SEMIPRIVATE
|
|
40
|
-
})
|
|
41
|
-
client :
|
|
42
|
-
name : "go darwin"
|
|
43
|
-
version : "4.1.0"
|
|
44
|
-
ctime : unix_time()
|
|
45
|
-
ignore_if_unsupported : false
|
|
46
|
-
merkle_root :
|
|
47
|
-
ctime : unix_time() - 10
|
|
48
|
-
hash_meta : "db951e27435ec22ac266f6880dcedeb6f57cbed28f014a0f774a54b932fcb153"
|
|
49
|
-
seqno : 4768147
|
|
50
|
-
|
|
51
|
-
exports.new_km_and_sig_arg = (opts, cb) ->
|
|
52
|
-
esc = make_esc cb
|
|
53
|
-
await KeyManager.generate {}, esc defer km
|
|
54
|
-
arg = new_sig_arg { km }
|
|
55
|
-
cb null, arg
|