@atproto/jwk 0.5.0 → 0.7.0-next.0

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/dist/keyset.d.ts CHANGED
@@ -1,15 +1,13 @@
1
- import { Jwks, JwksPub } from './jwks.js';
1
+ import { PrivateKeyUsage } from './jwk.js';
2
+ import { JwksPub } from './jwks.js';
2
3
  import { VerifyOptions, VerifyResult } from './jwt-verify.js';
3
4
  import { JwtHeader, JwtPayload, SignedJwt } from './jwt.js';
4
- import { Key } from './key.js';
5
- import { DeepReadonly, Override } from './util.js';
6
- export type JwtSignHeader = Override<JwtHeader, Pick<KeySearch, 'alg' | 'kid'>>;
5
+ import { ActivityCheckOptions, Key, KeyMatchOptions } from './key.js';
6
+ import { Override } from './util.js';
7
+ export type { ActivityCheckOptions, KeyMatchOptions };
8
+ export type FindKeyOptions = KeyMatchOptions & ActivityCheckOptions;
9
+ export type JwtSignHeader = Override<JwtHeader, Pick<FindKeyOptions, 'alg' | 'kid'>>;
7
10
  export type JwtPayloadGetter<P = JwtPayload> = (header: JwtHeader, key: Key) => P | PromiseLike<P>;
8
- export type KeySearch = {
9
- use?: 'sig' | 'enc';
10
- kid?: string | string[];
11
- alg?: string | string[];
12
- };
13
11
  export declare class Keyset<K extends Key = Key> implements Iterable<K> {
14
12
  /**
15
13
  * The preferred algorithms to use when signing a JWT using this keyset.
@@ -27,18 +25,387 @@ export declare class Keyset<K extends Key = Key> implements Iterable<K> {
27
25
  preferredSigningAlgorithms?: readonly string[]);
28
26
  get size(): number;
29
27
  get signAlgorithms(): readonly string[];
30
- get publicJwks(): DeepReadonly<JwksPub>;
31
- get privateJwks(): DeepReadonly<Jwks>;
28
+ get publicJwks(): Readonly<{
29
+ keys: readonly (Readonly<{
30
+ kty: "RSA";
31
+ n: string;
32
+ e: string;
33
+ alg?: "RS256" | "RS384" | "RS512" | "PS256" | "PS384" | "PS512" | undefined;
34
+ kid?: string | undefined;
35
+ use?: "sig" | "enc" | undefined;
36
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
37
+ x5c?: string[] | undefined;
38
+ x5t?: string | undefined;
39
+ 'x5t#S256'?: string | undefined;
40
+ x5u?: string | undefined;
41
+ ext?: boolean | undefined;
42
+ iat?: number | undefined;
43
+ exp?: number | undefined;
44
+ nbf?: number | undefined;
45
+ revoked?: {
46
+ revoked_at: number;
47
+ reason?: string | undefined;
48
+ } | undefined;
49
+ d?: string | undefined;
50
+ p?: string | undefined;
51
+ q?: string | undefined;
52
+ dp?: string | undefined;
53
+ dq?: string | undefined;
54
+ qi?: string | undefined;
55
+ oth?: {
56
+ d?: string | undefined;
57
+ r?: string | undefined;
58
+ t?: string | undefined;
59
+ }[] | undefined;
60
+ } & {
61
+ kid: NonNullable<unknown>;
62
+ } & {
63
+ d?: never;
64
+ }> | Readonly<{
65
+ kty: "EC";
66
+ crv: "P-256" | "P-384" | "P-521";
67
+ x: string;
68
+ y: string;
69
+ alg?: "ES256" | "ES384" | "ES512" | undefined;
70
+ kid?: string | undefined;
71
+ use?: "sig" | "enc" | undefined;
72
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
73
+ x5c?: string[] | undefined;
74
+ x5t?: string | undefined;
75
+ 'x5t#S256'?: string | undefined;
76
+ x5u?: string | undefined;
77
+ ext?: boolean | undefined;
78
+ iat?: number | undefined;
79
+ exp?: number | undefined;
80
+ nbf?: number | undefined;
81
+ revoked?: {
82
+ revoked_at: number;
83
+ reason?: string | undefined;
84
+ } | undefined;
85
+ d?: string | undefined;
86
+ } & {
87
+ kid: NonNullable<unknown>;
88
+ } & {
89
+ d?: never;
90
+ }> | Readonly<{
91
+ kty: "EC";
92
+ crv: "secp256k1";
93
+ x: string;
94
+ y: string;
95
+ alg?: "ES256K" | undefined;
96
+ kid?: string | undefined;
97
+ use?: "sig" | "enc" | undefined;
98
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
99
+ x5c?: string[] | undefined;
100
+ x5t?: string | undefined;
101
+ 'x5t#S256'?: string | undefined;
102
+ x5u?: string | undefined;
103
+ ext?: boolean | undefined;
104
+ iat?: number | undefined;
105
+ exp?: number | undefined;
106
+ nbf?: number | undefined;
107
+ revoked?: {
108
+ revoked_at: number;
109
+ reason?: string | undefined;
110
+ } | undefined;
111
+ d?: string | undefined;
112
+ } & {
113
+ kid: NonNullable<unknown>;
114
+ } & {
115
+ d?: never;
116
+ }> | Readonly<{
117
+ kty: "OKP";
118
+ crv: "Ed25519" | "Ed448";
119
+ x: string;
120
+ alg?: "EdDSA" | undefined;
121
+ kid?: string | undefined;
122
+ use?: "sig" | "enc" | undefined;
123
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
124
+ x5c?: string[] | undefined;
125
+ x5t?: string | undefined;
126
+ 'x5t#S256'?: string | undefined;
127
+ x5u?: string | undefined;
128
+ ext?: boolean | undefined;
129
+ iat?: number | undefined;
130
+ exp?: number | undefined;
131
+ nbf?: number | undefined;
132
+ revoked?: {
133
+ revoked_at: number;
134
+ reason?: string | undefined;
135
+ } | undefined;
136
+ d?: string | undefined;
137
+ } & {
138
+ kid: NonNullable<unknown>;
139
+ } & {
140
+ d?: never;
141
+ }>)[];
142
+ }>;
143
+ get privateJwks(): Readonly<{
144
+ keys: readonly (Readonly<{
145
+ kty: "RSA";
146
+ n: string;
147
+ e: string;
148
+ alg?: "RS256" | "RS384" | "RS512" | "PS256" | "PS384" | "PS512" | undefined;
149
+ kid?: string | undefined;
150
+ use?: "sig" | "enc" | undefined;
151
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
152
+ x5c?: string[] | undefined;
153
+ x5t?: string | undefined;
154
+ 'x5t#S256'?: string | undefined;
155
+ x5u?: string | undefined;
156
+ ext?: boolean | undefined;
157
+ iat?: number | undefined;
158
+ exp?: number | undefined;
159
+ nbf?: number | undefined;
160
+ revoked?: {
161
+ revoked_at: number;
162
+ reason?: string | undefined;
163
+ } | undefined;
164
+ d?: string | undefined;
165
+ p?: string | undefined;
166
+ q?: string | undefined;
167
+ dp?: string | undefined;
168
+ dq?: string | undefined;
169
+ qi?: string | undefined;
170
+ oth?: {
171
+ d?: string | undefined;
172
+ r?: string | undefined;
173
+ t?: string | undefined;
174
+ }[] | undefined;
175
+ } & {
176
+ d: NonNullable<unknown>;
177
+ }> | Readonly<{
178
+ kty: "EC";
179
+ crv: "P-256" | "P-384" | "P-521";
180
+ x: string;
181
+ y: string;
182
+ alg?: "ES256" | "ES384" | "ES512" | undefined;
183
+ kid?: string | undefined;
184
+ use?: "sig" | "enc" | undefined;
185
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
186
+ x5c?: string[] | undefined;
187
+ x5t?: string | undefined;
188
+ 'x5t#S256'?: string | undefined;
189
+ x5u?: string | undefined;
190
+ ext?: boolean | undefined;
191
+ iat?: number | undefined;
192
+ exp?: number | undefined;
193
+ nbf?: number | undefined;
194
+ revoked?: {
195
+ revoked_at: number;
196
+ reason?: string | undefined;
197
+ } | undefined;
198
+ d?: string | undefined;
199
+ } & {
200
+ d: NonNullable<unknown>;
201
+ }> | Readonly<{
202
+ kty: "EC";
203
+ crv: "secp256k1";
204
+ x: string;
205
+ y: string;
206
+ alg?: "ES256K" | undefined;
207
+ kid?: string | undefined;
208
+ use?: "sig" | "enc" | undefined;
209
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
210
+ x5c?: string[] | undefined;
211
+ x5t?: string | undefined;
212
+ 'x5t#S256'?: string | undefined;
213
+ x5u?: string | undefined;
214
+ ext?: boolean | undefined;
215
+ iat?: number | undefined;
216
+ exp?: number | undefined;
217
+ nbf?: number | undefined;
218
+ revoked?: {
219
+ revoked_at: number;
220
+ reason?: string | undefined;
221
+ } | undefined;
222
+ d?: string | undefined;
223
+ } & {
224
+ d: NonNullable<unknown>;
225
+ }> | Readonly<{
226
+ kty: "OKP";
227
+ crv: "Ed25519" | "Ed448";
228
+ x: string;
229
+ alg?: "EdDSA" | undefined;
230
+ kid?: string | undefined;
231
+ use?: "sig" | "enc" | undefined;
232
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
233
+ x5c?: string[] | undefined;
234
+ x5t?: string | undefined;
235
+ 'x5t#S256'?: string | undefined;
236
+ x5u?: string | undefined;
237
+ ext?: boolean | undefined;
238
+ iat?: number | undefined;
239
+ exp?: number | undefined;
240
+ nbf?: number | undefined;
241
+ revoked?: {
242
+ revoked_at: number;
243
+ reason?: string | undefined;
244
+ } | undefined;
245
+ d?: string | undefined;
246
+ } & {
247
+ d: NonNullable<unknown>;
248
+ }> | Readonly<{
249
+ kty: "oct";
250
+ k: string;
251
+ alg?: "HS256" | "HS384" | "HS512" | undefined;
252
+ kid?: string | undefined;
253
+ use?: "sig" | "enc" | undefined;
254
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
255
+ x5c?: string[] | undefined;
256
+ x5t?: string | undefined;
257
+ 'x5t#S256'?: string | undefined;
258
+ x5u?: string | undefined;
259
+ ext?: boolean | undefined;
260
+ iat?: number | undefined;
261
+ exp?: number | undefined;
262
+ nbf?: number | undefined;
263
+ revoked?: {
264
+ revoked_at: number;
265
+ reason?: string | undefined;
266
+ } | undefined;
267
+ } & {
268
+ d: NonNullable<unknown>;
269
+ }> | Readonly<{
270
+ kty: "RSA";
271
+ n: string;
272
+ e: string;
273
+ alg?: "RS256" | "RS384" | "RS512" | "PS256" | "PS384" | "PS512" | undefined;
274
+ kid?: string | undefined;
275
+ use?: "sig" | "enc" | undefined;
276
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
277
+ x5c?: string[] | undefined;
278
+ x5t?: string | undefined;
279
+ 'x5t#S256'?: string | undefined;
280
+ x5u?: string | undefined;
281
+ ext?: boolean | undefined;
282
+ iat?: number | undefined;
283
+ exp?: number | undefined;
284
+ nbf?: number | undefined;
285
+ revoked?: {
286
+ revoked_at: number;
287
+ reason?: string | undefined;
288
+ } | undefined;
289
+ d?: string | undefined;
290
+ p?: string | undefined;
291
+ q?: string | undefined;
292
+ dp?: string | undefined;
293
+ dq?: string | undefined;
294
+ qi?: string | undefined;
295
+ oth?: {
296
+ d?: string | undefined;
297
+ r?: string | undefined;
298
+ t?: string | undefined;
299
+ }[] | undefined;
300
+ } & {
301
+ k: NonNullable<unknown>;
302
+ }> | Readonly<{
303
+ kty: "EC";
304
+ crv: "P-256" | "P-384" | "P-521";
305
+ x: string;
306
+ y: string;
307
+ alg?: "ES256" | "ES384" | "ES512" | undefined;
308
+ kid?: string | undefined;
309
+ use?: "sig" | "enc" | undefined;
310
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
311
+ x5c?: string[] | undefined;
312
+ x5t?: string | undefined;
313
+ 'x5t#S256'?: string | undefined;
314
+ x5u?: string | undefined;
315
+ ext?: boolean | undefined;
316
+ iat?: number | undefined;
317
+ exp?: number | undefined;
318
+ nbf?: number | undefined;
319
+ revoked?: {
320
+ revoked_at: number;
321
+ reason?: string | undefined;
322
+ } | undefined;
323
+ d?: string | undefined;
324
+ } & {
325
+ k: NonNullable<unknown>;
326
+ }> | Readonly<{
327
+ kty: "EC";
328
+ crv: "secp256k1";
329
+ x: string;
330
+ y: string;
331
+ alg?: "ES256K" | undefined;
332
+ kid?: string | undefined;
333
+ use?: "sig" | "enc" | undefined;
334
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
335
+ x5c?: string[] | undefined;
336
+ x5t?: string | undefined;
337
+ 'x5t#S256'?: string | undefined;
338
+ x5u?: string | undefined;
339
+ ext?: boolean | undefined;
340
+ iat?: number | undefined;
341
+ exp?: number | undefined;
342
+ nbf?: number | undefined;
343
+ revoked?: {
344
+ revoked_at: number;
345
+ reason?: string | undefined;
346
+ } | undefined;
347
+ d?: string | undefined;
348
+ } & {
349
+ k: NonNullable<unknown>;
350
+ }> | Readonly<{
351
+ kty: "OKP";
352
+ crv: "Ed25519" | "Ed448";
353
+ x: string;
354
+ alg?: "EdDSA" | undefined;
355
+ kid?: string | undefined;
356
+ use?: "sig" | "enc" | undefined;
357
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
358
+ x5c?: string[] | undefined;
359
+ x5t?: string | undefined;
360
+ 'x5t#S256'?: string | undefined;
361
+ x5u?: string | undefined;
362
+ ext?: boolean | undefined;
363
+ iat?: number | undefined;
364
+ exp?: number | undefined;
365
+ nbf?: number | undefined;
366
+ revoked?: {
367
+ revoked_at: number;
368
+ reason?: string | undefined;
369
+ } | undefined;
370
+ d?: string | undefined;
371
+ } & {
372
+ k: NonNullable<unknown>;
373
+ }> | Readonly<{
374
+ kty: "oct";
375
+ k: string;
376
+ alg?: "HS256" | "HS384" | "HS512" | undefined;
377
+ kid?: string | undefined;
378
+ use?: "sig" | "enc" | undefined;
379
+ key_ops?: ("verify" | "encrypt" | "wrapKey" | "sign" | "decrypt" | "unwrapKey" | "deriveKey" | "deriveBits")[] | undefined;
380
+ x5c?: string[] | undefined;
381
+ x5t?: string | undefined;
382
+ 'x5t#S256'?: string | undefined;
383
+ x5u?: string | undefined;
384
+ ext?: boolean | undefined;
385
+ iat?: number | undefined;
386
+ exp?: number | undefined;
387
+ nbf?: number | undefined;
388
+ revoked?: {
389
+ revoked_at: number;
390
+ reason?: string | undefined;
391
+ } | undefined;
392
+ } & {
393
+ k: NonNullable<unknown>;
394
+ }>)[];
395
+ }>;
32
396
  has(kid: string): boolean;
33
- get(search: KeySearch): K;
34
- list(search: KeySearch): Generator<K>;
35
- findPrivateKey({ kid, alg, use }: KeySearch): {
397
+ get(options: FindKeyOptions): K;
398
+ find(options: FindKeyOptions): K | undefined;
399
+ list<O extends FindKeyOptions>(options: O): Generator<K, void, unknown>;
400
+ findPrivateKey({ kid, alg, usage, ...options }: FindKeyOptions & {
401
+ usage: PrivateKeyUsage;
402
+ }): {
36
403
  key: Key;
37
404
  alg: string;
38
405
  };
39
406
  [Symbol.iterator](): IterableIterator<K>;
40
407
  createJwt({ alg: sAlg, kid: sKid, ...header }: JwtSignHeader, payload: JwtPayload | JwtPayloadGetter): Promise<SignedJwt>;
41
- verifyJwt<C extends string = never>(token: SignedJwt, options?: VerifyOptions<C>): Promise<VerifyResult<C> & {
408
+ verifyJwt<C extends string = never>(token: SignedJwt, options?: ActivityCheckOptions & VerifyOptions<C>): Promise<VerifyResult<C> & {
42
409
  key: K;
43
410
  }>;
44
411
  toJSON(): JwksPub;
@@ -1 +1 @@
1
- {"version":3,"file":"keyset.d.ts","sourceRoot":"","sources":["../src/keyset.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EACL,YAAY,EACZ,QAAQ,EAMT,MAAM,WAAW,CAAA;AAElB,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAA;AAE/E,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,UAAU,IAAI,CAC7C,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,GAAG,KACL,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;AAEvB,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CACxB,CAAA;AAKD,qBAAa,MAAM,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC;IAK3D;;;;OAIG;aACa,0BAA0B,EAAE,SAAS,MAAM,EAAE;IAT/D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;gBAGjC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC;IAChD;;;;OAIG;IACa,0BAA0B,GAAE,SAAS,MAAM,EAetD;IAmBP,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IACI,cAAc,IAAI,SAAS,MAAM,EAAE,CAWtC;IAED,IACI,UAAU,IAAI,YAAY,CAAC,OAAO,CAAC,CAItC;IAED,IACI,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC,CAIpC;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,CAAC;IAWxB,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;IAwBtC,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,SAAS,GAAG;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAwCvE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAIlC,SAAS,CACb,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,aAAa,EAClD,OAAO,EAAE,UAAU,GAAG,gBAAgB,GACrC,OAAO,CAAC,SAAS,CAAC;IAmBf,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,EACtC,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG;QAAE,GAAG,EAAE,CAAC,CAAA;KAAE,CAAC;IAyBxC,MAAM,IAAI,OAAO;CAIlB"}
1
+ {"version":3,"file":"keyset.d.ts","sourceRoot":"","sources":["../src/keyset.ts"],"names":[],"mappings":"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"}