@atproto/jwk 0.1.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.
Files changed (60) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE.txt +7 -0
  3. package/dist/alg.d.ts +3 -0
  4. package/dist/alg.d.ts.map +1 -0
  5. package/dist/alg.js +90 -0
  6. package/dist/alg.js.map +1 -0
  7. package/dist/errors.d.ts +24 -0
  8. package/dist/errors.d.ts.map +1 -0
  9. package/dist/errors.js +62 -0
  10. package/dist/errors.js.map +1 -0
  11. package/dist/index.d.ts +11 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +27 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/jwk.d.ts +2424 -0
  16. package/dist/jwk.d.ts.map +1 -0
  17. package/dist/jwk.js +112 -0
  18. package/dist/jwk.js.map +1 -0
  19. package/dist/jwks.d.ts +1770 -0
  20. package/dist/jwks.d.ts.map +1 -0
  21. package/dist/jwks.js +12 -0
  22. package/dist/jwks.js.map +1 -0
  23. package/dist/jwt-decode.d.ts +6 -0
  24. package/dist/jwt-decode.d.ts.map +1 -0
  25. package/dist/jwt-decode.js +20 -0
  26. package/dist/jwt-decode.js.map +1 -0
  27. package/dist/jwt-verify.d.ts +20 -0
  28. package/dist/jwt-verify.d.ts.map +1 -0
  29. package/dist/jwt-verify.js +3 -0
  30. package/dist/jwt-verify.js.map +1 -0
  31. package/dist/jwt.d.ts +1785 -0
  32. package/dist/jwt.d.ts.map +1 -0
  33. package/dist/jwt.js +150 -0
  34. package/dist/jwt.js.map +1 -0
  35. package/dist/key.d.ts +38 -0
  36. package/dist/key.d.ts.map +1 -0
  37. package/dist/key.js +131 -0
  38. package/dist/key.js.map +1 -0
  39. package/dist/keyset.d.ts +41 -0
  40. package/dist/keyset.d.ts.map +1 -0
  41. package/dist/keyset.js +234 -0
  42. package/dist/keyset.js.map +1 -0
  43. package/dist/util.d.ts +48 -0
  44. package/dist/util.d.ts.map +1 -0
  45. package/dist/util.js +143 -0
  46. package/dist/util.js.map +1 -0
  47. package/package.json +38 -0
  48. package/src/alg.ts +98 -0
  49. package/src/errors.ts +56 -0
  50. package/src/index.ts +10 -0
  51. package/src/jwk.ts +141 -0
  52. package/src/jwks.ts +15 -0
  53. package/src/jwt-decode.ts +27 -0
  54. package/src/jwt-verify.ts +22 -0
  55. package/src/jwt.ts +173 -0
  56. package/src/key.ts +93 -0
  57. package/src/keyset.ts +240 -0
  58. package/src/util.ts +181 -0
  59. package/tsconfig.build.json +8 -0
  60. package/tsconfig.json +4 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwk.d.ts","sourceRoot":"","sources":["../src/jwk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,cAAc,wGASzB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYxB,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0B1B,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASzB,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASlC,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO1B,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK1B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI9B,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAOpB,CAAA;AAEF,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAE3C,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtB,CAAA;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE8C,CAAA"}
package/dist/jwk.js ADDED
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jwkPubSchema = exports.jwkValidator = exports.jwkSchema = exports.jwkUnknownKeySchema = exports.jwkSymKeySchema = exports.jwkOkpKeySchema = exports.jwkEcSecp256k1KeySchema = exports.jwkEcKeySchema = exports.jwkRsaKeySchema = exports.jwkBaseSchema = exports.keyUsageSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.keyUsageSchema = zod_1.z.enum([
6
+ 'sign',
7
+ 'verify',
8
+ 'encrypt',
9
+ 'decrypt',
10
+ 'wrapKey',
11
+ 'unwrapKey',
12
+ 'deriveKey',
13
+ 'deriveBits',
14
+ ]);
15
+ /**
16
+ * The "use" and "key_ops" JWK members SHOULD NOT be used together;
17
+ * however, if both are used, the information they convey MUST be
18
+ * consistent. Applications should specify which of these members they
19
+ * use, if either is to be used by the application.
20
+ *
21
+ * @todo Actually check that "use" and "key_ops" are consistent when both are present.
22
+ * @see {@link https://datatracker.ietf.org/doc/html/rfc7517#section-4.3}
23
+ */
24
+ exports.jwkBaseSchema = zod_1.z.object({
25
+ kty: zod_1.z.string().min(1),
26
+ alg: zod_1.z.string().min(1).optional(),
27
+ kid: zod_1.z.string().min(1).optional(),
28
+ ext: zod_1.z.boolean().optional(),
29
+ use: zod_1.z.enum(['sig', 'enc']).optional(),
30
+ key_ops: zod_1.z.array(exports.keyUsageSchema).optional(),
31
+ x5c: zod_1.z.array(zod_1.z.string()).optional(), // X.509 Certificate Chain
32
+ x5t: zod_1.z.string().min(1).optional(), // X.509 Certificate SHA-1 Thumbprint
33
+ 'x5t#S256': zod_1.z.string().min(1).optional(), // X.509 Certificate SHA-256 Thumbprint
34
+ x5u: zod_1.z.string().url().optional(), // X.509 URL
35
+ });
36
+ /**
37
+ * @todo: properly implement this
38
+ */
39
+ exports.jwkRsaKeySchema = exports.jwkBaseSchema.extend({
40
+ kty: zod_1.z.literal('RSA'),
41
+ alg: zod_1.z
42
+ .enum(['RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512'])
43
+ .optional(),
44
+ n: zod_1.z.string().min(1), // Modulus
45
+ e: zod_1.z.string().min(1), // Exponent
46
+ d: zod_1.z.string().min(1).optional(), // Private Exponent
47
+ p: zod_1.z.string().min(1).optional(), // First Prime Factor
48
+ q: zod_1.z.string().min(1).optional(), // Second Prime Factor
49
+ dp: zod_1.z.string().min(1).optional(), // First Factor CRT Exponent
50
+ dq: zod_1.z.string().min(1).optional(), // Second Factor CRT Exponent
51
+ qi: zod_1.z.string().min(1).optional(), // First CRT Coefficient
52
+ oth: zod_1.z
53
+ .array(zod_1.z.object({
54
+ r: zod_1.z.string().optional(),
55
+ d: zod_1.z.string().optional(),
56
+ t: zod_1.z.string().optional(),
57
+ }))
58
+ .nonempty()
59
+ .optional(), // Other Primes Info
60
+ });
61
+ exports.jwkEcKeySchema = exports.jwkBaseSchema.extend({
62
+ kty: zod_1.z.literal('EC'),
63
+ alg: zod_1.z.enum(['ES256', 'ES384', 'ES512']).optional(),
64
+ crv: zod_1.z.enum(['P-256', 'P-384', 'P-521']),
65
+ x: zod_1.z.string().min(1),
66
+ y: zod_1.z.string().min(1),
67
+ d: zod_1.z.string().min(1).optional(), // ECC Private Key
68
+ });
69
+ exports.jwkEcSecp256k1KeySchema = exports.jwkBaseSchema.extend({
70
+ kty: zod_1.z.literal('EC'),
71
+ alg: zod_1.z.enum(['ES256K']).optional(),
72
+ crv: zod_1.z.enum(['secp256k1']),
73
+ x: zod_1.z.string().min(1),
74
+ y: zod_1.z.string().min(1),
75
+ d: zod_1.z.string().min(1).optional(), // ECC Private Key
76
+ });
77
+ exports.jwkOkpKeySchema = exports.jwkBaseSchema.extend({
78
+ kty: zod_1.z.literal('OKP'),
79
+ alg: zod_1.z.enum(['EdDSA']).optional(),
80
+ crv: zod_1.z.enum(['Ed25519', 'Ed448']),
81
+ x: zod_1.z.string().min(1),
82
+ d: zod_1.z.string().min(1).optional(), // ECC Private Key
83
+ });
84
+ exports.jwkSymKeySchema = exports.jwkBaseSchema.extend({
85
+ kty: zod_1.z.literal('oct'), // Octet Sequence (used to represent symmetric keys)
86
+ alg: zod_1.z.enum(['HS256', 'HS384', 'HS512']).optional(),
87
+ k: zod_1.z.string(), // Key Value (base64url encoded)
88
+ });
89
+ exports.jwkUnknownKeySchema = exports.jwkBaseSchema.extend({
90
+ kty: zod_1.z
91
+ .string()
92
+ .refine((v) => v !== 'RSA' && v !== 'EC' && v !== 'OKP' && v !== 'oct'),
93
+ });
94
+ exports.jwkSchema = zod_1.z.union([
95
+ exports.jwkUnknownKeySchema,
96
+ exports.jwkRsaKeySchema,
97
+ exports.jwkEcKeySchema,
98
+ exports.jwkEcSecp256k1KeySchema,
99
+ exports.jwkOkpKeySchema,
100
+ exports.jwkSymKeySchema,
101
+ ]);
102
+ exports.jwkValidator = exports.jwkSchema
103
+ .refine((k) => k.use != null || k.key_ops != null, 'use or key_ops required')
104
+ .refine((k) => !k.use ||
105
+ !k.key_ops ||
106
+ k.key_ops.every((o) => k.use === 'sig'
107
+ ? o === 'sign' || o === 'verify'
108
+ : o === 'encrypt' || o === 'decrypt'), 'use and key_ops must be consistent');
109
+ exports.jwkPubSchema = exports.jwkValidator
110
+ .refine((k) => k.kid != null, 'kid is required')
111
+ .refine((k) => !('k' in k) && !('d' in k), 'private key not allowed');
112
+ //# sourceMappingURL=jwk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwk.js","sourceRoot":"","sources":["../src/jwk.ts"],"names":[],"mappings":"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"}