jose 5.9.6 → 6.0.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 (291) hide show
  1. package/README.md +21 -19
  2. package/dist/types/index.d.ts +5 -5
  3. package/dist/types/jwe/compact/decrypt.d.ts +4 -4
  4. package/dist/types/jwe/compact/encrypt.d.ts +4 -4
  5. package/dist/types/jwe/flattened/decrypt.d.ts +4 -4
  6. package/dist/types/jwe/flattened/encrypt.d.ts +6 -6
  7. package/dist/types/jwe/general/decrypt.d.ts +4 -4
  8. package/dist/types/jwe/general/encrypt.d.ts +7 -7
  9. package/dist/types/jwk/embedded.d.ts +2 -2
  10. package/dist/types/jwk/thumbprint.d.ts +5 -5
  11. package/dist/types/jwks/local.d.ts +2 -2
  12. package/dist/types/jwks/remote.d.ts +104 -25
  13. package/dist/types/jws/compact/sign.d.ts +4 -4
  14. package/dist/types/jws/compact/verify.d.ts +4 -4
  15. package/dist/types/jws/flattened/sign.d.ts +4 -4
  16. package/dist/types/jws/flattened/verify.d.ts +4 -4
  17. package/dist/types/jws/general/sign.d.ts +6 -6
  18. package/dist/types/jws/general/verify.d.ts +4 -4
  19. package/dist/types/jwt/decrypt.d.ts +5 -5
  20. package/dist/types/jwt/encrypt.d.ts +4 -4
  21. package/dist/types/jwt/produce.d.ts +3 -3
  22. package/dist/types/jwt/sign.d.ts +3 -3
  23. package/dist/types/jwt/unsecured.d.ts +5 -5
  24. package/dist/types/jwt/verify.d.ts +5 -5
  25. package/dist/types/key/export.d.ts +10 -12
  26. package/dist/types/key/generate_key_pair.d.ts +10 -11
  27. package/dist/types/key/generate_secret.d.ts +6 -9
  28. package/dist/types/key/import.d.ts +20 -27
  29. package/dist/types/types.d.ts +38 -59
  30. package/dist/types/util/decode_jwt.d.ts +2 -2
  31. package/dist/types/util/decode_protected_header.d.ts +2 -2
  32. package/dist/types/util/errors.d.ts +6 -6
  33. package/dist/{browser → webapi}/index.js +2 -2
  34. package/dist/{node/esm → webapi}/jwe/flattened/decrypt.js +8 -4
  35. package/dist/{node/esm → webapi}/jwe/flattened/encrypt.js +7 -3
  36. package/dist/{node/esm → webapi}/jwe/general/encrypt.js +8 -3
  37. package/dist/{node/esm → webapi}/jwk/thumbprint.js +18 -8
  38. package/dist/{node/esm → webapi}/jwks/local.js +4 -6
  39. package/dist/{node/esm → webapi}/jwks/remote.js +34 -6
  40. package/dist/{node/esm → webapi}/jws/flattened/sign.js +7 -5
  41. package/dist/{browser → webapi}/jws/flattened/verify.js +8 -14
  42. package/dist/{browser → webapi}/jwt/unsecured.js +1 -1
  43. package/dist/{node/esm → webapi}/key/export.js +2 -3
  44. package/dist/{browser/runtime/generate.js → webapi/key/generate_key_pair.js} +5 -54
  45. package/dist/webapi/key/generate_secret.js +40 -0
  46. package/dist/{browser → webapi}/key/import.js +9 -7
  47. package/dist/{node/esm → webapi}/lib/aesgcmkw.js +3 -3
  48. package/dist/{browser/runtime → webapi/lib}/aeskw.js +9 -16
  49. package/dist/{browser/runtime → webapi/lib}/asn1.js +25 -17
  50. package/dist/{browser/runtime → webapi/lib}/base64url.js +17 -9
  51. package/dist/{browser → webapi}/lib/buffer_utils.js +4 -19
  52. package/dist/{browser → webapi}/lib/cek.js +1 -2
  53. package/dist/{browser/runtime → webapi/lib}/check_cek_length.js +1 -2
  54. package/dist/{browser → webapi}/lib/check_iv_length.js +1 -2
  55. package/dist/webapi/lib/check_key_type.js +126 -0
  56. package/dist/{node/esm → webapi}/lib/crypto_key.js +11 -23
  57. package/dist/{browser/runtime → webapi/lib}/decrypt.js +26 -10
  58. package/dist/{node/esm → webapi}/lib/decrypt_key_management.js +22 -24
  59. package/dist/{browser/runtime → webapi/lib}/digest.js +1 -3
  60. package/dist/webapi/lib/ecdhes.js +46 -0
  61. package/dist/{browser/runtime → webapi/lib}/encrypt.js +8 -10
  62. package/dist/{node/esm → webapi}/lib/encrypt_key_management.js +26 -23
  63. package/dist/webapi/lib/get_sign_verify_key.js +12 -0
  64. package/dist/{node/esm → webapi}/lib/is_disjoint.js +1 -2
  65. package/dist/{browser → webapi}/lib/is_jwk.js +1 -1
  66. package/dist/webapi/lib/is_key_like.js +14 -0
  67. package/dist/{browser → webapi}/lib/is_object.js +2 -2
  68. package/dist/{node/esm → webapi}/lib/iv.js +1 -2
  69. package/dist/{browser/runtime → webapi/lib}/jwk_to_key.js +4 -10
  70. package/dist/webapi/lib/key_to_jwk.js +27 -0
  71. package/dist/webapi/lib/normalize_key.js +164 -0
  72. package/dist/webapi/lib/pbes2kw.js +37 -0
  73. package/dist/webapi/lib/rsaes.js +24 -0
  74. package/dist/{browser/runtime → webapi/lib}/sign.js +1 -3
  75. package/dist/{browser/runtime → webapi/lib}/subtle_dsa.js +5 -4
  76. package/dist/{browser → webapi}/lib/validate_algorithms.js +1 -2
  77. package/dist/{node/esm → webapi}/lib/validate_crit.js +3 -4
  78. package/dist/{browser/runtime → webapi/lib}/verify.js +1 -3
  79. package/dist/{node/esm → webapi}/util/base64url.js +1 -1
  80. package/package.json +36 -219
  81. package/dist/browser/jwe/compact/encrypt.js +0 -26
  82. package/dist/browser/jwe/flattened/decrypt.js +0 -161
  83. package/dist/browser/jwe/flattened/encrypt.js +0 -153
  84. package/dist/browser/jwe/general/encrypt.js +0 -174
  85. package/dist/browser/jwk/thumbprint.js +0 -53
  86. package/dist/browser/jwks/local.js +0 -121
  87. package/dist/browser/jwks/remote.js +0 -139
  88. package/dist/browser/jws/compact/sign.js +0 -17
  89. package/dist/browser/jws/flattened/sign.js +0 -81
  90. package/dist/browser/jws/general/sign.js +0 -67
  91. package/dist/browser/jwt/encrypt.js +0 -68
  92. package/dist/browser/jwt/produce.js +0 -75
  93. package/dist/browser/jwt/sign.js +0 -20
  94. package/dist/browser/key/export.js +0 -12
  95. package/dist/browser/key/generate_key_pair.js +0 -4
  96. package/dist/browser/key/generate_secret.js +0 -4
  97. package/dist/browser/lib/aesgcmkw.js +0 -16
  98. package/dist/browser/lib/check_key_type.js +0 -77
  99. package/dist/browser/lib/check_p2s.js +0 -6
  100. package/dist/browser/lib/crypto_key.js +0 -152
  101. package/dist/browser/lib/decrypt_key_management.js +0 -129
  102. package/dist/browser/lib/encrypt_key_management.js +0 -89
  103. package/dist/browser/lib/format_pem.js +0 -4
  104. package/dist/browser/lib/is_disjoint.js +0 -22
  105. package/dist/browser/lib/iv.js +0 -20
  106. package/dist/browser/lib/validate_crit.js +0 -34
  107. package/dist/browser/package.json +0 -1
  108. package/dist/browser/runtime/bogus.js +0 -6
  109. package/dist/browser/runtime/ecdhes.js +0 -47
  110. package/dist/browser/runtime/fetch_jwks.js +0 -34
  111. package/dist/browser/runtime/get_sign_verify_key.js +0 -24
  112. package/dist/browser/runtime/is_key_like.js +0 -8
  113. package/dist/browser/runtime/key_to_jwk.js +0 -21
  114. package/dist/browser/runtime/normalize_key.js +0 -68
  115. package/dist/browser/runtime/pbes2kw.js +0 -51
  116. package/dist/browser/runtime/random.js +0 -2
  117. package/dist/browser/runtime/rsaes.js +0 -37
  118. package/dist/browser/runtime/runtime.js +0 -1
  119. package/dist/browser/runtime/subtle_rsaes.js +0 -12
  120. package/dist/browser/runtime/timing_safe_equal.js +0 -19
  121. package/dist/browser/runtime/webcrypto.js +0 -2
  122. package/dist/browser/util/base64url.js +0 -3
  123. package/dist/browser/util/errors.js +0 -114
  124. package/dist/browser/util/runtime.js +0 -2
  125. package/dist/node/cjs/index.js +0 -69
  126. package/dist/node/cjs/jwe/compact/decrypt.js +0 -30
  127. package/dist/node/cjs/jwe/compact/encrypt.js +0 -31
  128. package/dist/node/cjs/jwe/flattened/decrypt.js +0 -164
  129. package/dist/node/cjs/jwe/flattened/encrypt.js +0 -165
  130. package/dist/node/cjs/jwe/general/decrypt.js +0 -34
  131. package/dist/node/cjs/jwe/general/encrypt.js +0 -186
  132. package/dist/node/cjs/jwk/embedded.js +0 -20
  133. package/dist/node/cjs/jwk/thumbprint.js +0 -57
  134. package/dist/node/cjs/jwks/local.js +0 -125
  135. package/dist/node/cjs/jwks/remote.js +0 -152
  136. package/dist/node/cjs/jws/compact/sign.js +0 -22
  137. package/dist/node/cjs/jws/compact/verify.js +0 -24
  138. package/dist/node/cjs/jws/flattened/sign.js +0 -88
  139. package/dist/node/cjs/jws/flattened/verify.js +0 -125
  140. package/dist/node/cjs/jws/general/sign.js +0 -77
  141. package/dist/node/cjs/jws/general/verify.js +0 -27
  142. package/dist/node/cjs/jwt/decrypt.js +0 -26
  143. package/dist/node/cjs/jwt/encrypt.js +0 -79
  144. package/dist/node/cjs/jwt/produce.js +0 -80
  145. package/dist/node/cjs/jwt/sign.js +0 -25
  146. package/dist/node/cjs/jwt/unsecured.js +0 -36
  147. package/dist/node/cjs/jwt/verify.js +0 -18
  148. package/dist/node/cjs/key/export.js +0 -17
  149. package/dist/node/cjs/key/generate_key_pair.js +0 -7
  150. package/dist/node/cjs/key/generate_secret.js +0 -7
  151. package/dist/node/cjs/key/import.js +0 -51
  152. package/dist/node/cjs/lib/aesgcmkw.js +0 -20
  153. package/dist/node/cjs/lib/buffer_utils.js +0 -60
  154. package/dist/node/cjs/lib/cek.js +0 -23
  155. package/dist/node/cjs/lib/check_iv_length.js +0 -10
  156. package/dist/node/cjs/lib/check_key_type.js +0 -80
  157. package/dist/node/cjs/lib/check_p2s.js +0 -9
  158. package/dist/node/cjs/lib/crypto_key.js +0 -156
  159. package/dist/node/cjs/lib/decrypt_key_management.js +0 -131
  160. package/dist/node/cjs/lib/encrypt_key_management.js +0 -91
  161. package/dist/node/cjs/lib/epoch.js +0 -3
  162. package/dist/node/cjs/lib/invalid_key_input.js +0 -34
  163. package/dist/node/cjs/lib/is_disjoint.js +0 -24
  164. package/dist/node/cjs/lib/is_jwk.js +0 -19
  165. package/dist/node/cjs/lib/is_object.js +0 -19
  166. package/dist/node/cjs/lib/iv.js +0 -23
  167. package/dist/node/cjs/lib/jwt_claims_set.js +0 -106
  168. package/dist/node/cjs/lib/private_symbols.js +0 -4
  169. package/dist/node/cjs/lib/secs.js +0 -57
  170. package/dist/node/cjs/lib/validate_algorithms.js +0 -13
  171. package/dist/node/cjs/lib/validate_crit.js +0 -36
  172. package/dist/node/cjs/runtime/aeskw.js +0 -55
  173. package/dist/node/cjs/runtime/asn1.js +0 -54
  174. package/dist/node/cjs/runtime/base64url.js +0 -20
  175. package/dist/node/cjs/runtime/cbc_tag.js +0 -11
  176. package/dist/node/cjs/runtime/check_cek_length.js +0 -37
  177. package/dist/node/cjs/runtime/check_key_length.js +0 -18
  178. package/dist/node/cjs/runtime/ciphers.js +0 -8
  179. package/dist/node/cjs/runtime/decrypt.js +0 -103
  180. package/dist/node/cjs/runtime/digest.js +0 -5
  181. package/dist/node/cjs/runtime/dsa_digest.js +0 -25
  182. package/dist/node/cjs/runtime/ecdhes.js +0 -70
  183. package/dist/node/cjs/runtime/encrypt.js +0 -80
  184. package/dist/node/cjs/runtime/fetch_jwks.js +0 -45
  185. package/dist/node/cjs/runtime/generate.js +0 -101
  186. package/dist/node/cjs/runtime/get_named_curve.js +0 -61
  187. package/dist/node/cjs/runtime/get_sign_verify_key.js +0 -31
  188. package/dist/node/cjs/runtime/hmac_digest.js +0 -16
  189. package/dist/node/cjs/runtime/is_key_like.js +0 -11
  190. package/dist/node/cjs/runtime/is_key_object.js +0 -4
  191. package/dist/node/cjs/runtime/jwk_to_key.js +0 -10
  192. package/dist/node/cjs/runtime/key_to_jwk.js +0 -36
  193. package/dist/node/cjs/runtime/node_key.js +0 -106
  194. package/dist/node/cjs/runtime/normalize_key.js +0 -3
  195. package/dist/node/cjs/runtime/pbes2kw.js +0 -48
  196. package/dist/node/cjs/runtime/random.js +0 -5
  197. package/dist/node/cjs/runtime/rsaes.js +0 -71
  198. package/dist/node/cjs/runtime/runtime.js +0 -3
  199. package/dist/node/cjs/runtime/sign.js +0 -19
  200. package/dist/node/cjs/runtime/timing_safe_equal.js +0 -5
  201. package/dist/node/cjs/runtime/verify.js +0 -31
  202. package/dist/node/cjs/runtime/webcrypto.js +0 -9
  203. package/dist/node/cjs/util/base64url.js +0 -6
  204. package/dist/node/cjs/util/decode_jwt.js +0 -35
  205. package/dist/node/cjs/util/decode_protected_header.js +0 -37
  206. package/dist/node/cjs/util/errors.js +0 -117
  207. package/dist/node/cjs/util/runtime.js +0 -4
  208. package/dist/node/esm/index.js +0 -30
  209. package/dist/node/esm/jwe/compact/decrypt.js +0 -27
  210. package/dist/node/esm/jwe/general/decrypt.js +0 -31
  211. package/dist/node/esm/jwk/embedded.js +0 -17
  212. package/dist/node/esm/jws/compact/verify.js +0 -21
  213. package/dist/node/esm/jws/flattened/verify.js +0 -122
  214. package/dist/node/esm/jws/general/verify.js +0 -24
  215. package/dist/node/esm/jwt/decrypt.js +0 -23
  216. package/dist/node/esm/jwt/unsecured.js +0 -32
  217. package/dist/node/esm/jwt/verify.js +0 -15
  218. package/dist/node/esm/key/generate_key_pair.js +0 -4
  219. package/dist/node/esm/key/generate_secret.js +0 -4
  220. package/dist/node/esm/key/import.js +0 -45
  221. package/dist/node/esm/lib/buffer_utils.js +0 -51
  222. package/dist/node/esm/lib/cek.js +0 -20
  223. package/dist/node/esm/lib/check_iv_length.js +0 -8
  224. package/dist/node/esm/lib/check_key_type.js +0 -77
  225. package/dist/node/esm/lib/check_p2s.js +0 -6
  226. package/dist/node/esm/lib/epoch.js +0 -1
  227. package/dist/node/esm/lib/invalid_key_input.js +0 -31
  228. package/dist/node/esm/lib/is_jwk.js +0 -13
  229. package/dist/node/esm/lib/is_object.js +0 -16
  230. package/dist/node/esm/lib/jwt_claims_set.js +0 -104
  231. package/dist/node/esm/lib/private_symbols.js +0 -1
  232. package/dist/node/esm/lib/secs.js +0 -55
  233. package/dist/node/esm/lib/validate_algorithms.js +0 -11
  234. package/dist/node/esm/package.json +0 -1
  235. package/dist/node/esm/runtime/aeskw.js +0 -50
  236. package/dist/node/esm/runtime/asn1.js +0 -46
  237. package/dist/node/esm/runtime/base64url.js +0 -14
  238. package/dist/node/esm/runtime/cbc_tag.js +0 -8
  239. package/dist/node/esm/runtime/check_cek_length.js +0 -35
  240. package/dist/node/esm/runtime/check_key_length.js +0 -16
  241. package/dist/node/esm/runtime/ciphers.js +0 -6
  242. package/dist/node/esm/runtime/decrypt.js +0 -101
  243. package/dist/node/esm/runtime/digest.js +0 -3
  244. package/dist/node/esm/runtime/dsa_digest.js +0 -22
  245. package/dist/node/esm/runtime/ecdhes.js +0 -64
  246. package/dist/node/esm/runtime/encrypt.js +0 -78
  247. package/dist/node/esm/runtime/fetch_jwks.js +0 -43
  248. package/dist/node/esm/runtime/generate.js +0 -97
  249. package/dist/node/esm/runtime/get_named_curve.js +0 -58
  250. package/dist/node/esm/runtime/get_sign_verify_key.js +0 -28
  251. package/dist/node/esm/runtime/hmac_digest.js +0 -13
  252. package/dist/node/esm/runtime/is_key_like.js +0 -8
  253. package/dist/node/esm/runtime/is_key_object.js +0 -2
  254. package/dist/node/esm/runtime/jwk_to_key.js +0 -8
  255. package/dist/node/esm/runtime/key_to_jwk.js +0 -34
  256. package/dist/node/esm/runtime/node_key.js +0 -103
  257. package/dist/node/esm/runtime/normalize_key.js +0 -1
  258. package/dist/node/esm/runtime/pbes2kw.js +0 -43
  259. package/dist/node/esm/runtime/random.js +0 -1
  260. package/dist/node/esm/runtime/rsaes.js +0 -66
  261. package/dist/node/esm/runtime/runtime.js +0 -1
  262. package/dist/node/esm/runtime/sign.js +0 -17
  263. package/dist/node/esm/runtime/timing_safe_equal.js +0 -3
  264. package/dist/node/esm/runtime/verify.js +0 -29
  265. package/dist/node/esm/runtime/webcrypto.js +0 -5
  266. package/dist/node/esm/util/decode_jwt.js +0 -32
  267. package/dist/node/esm/util/decode_protected_header.js +0 -34
  268. package/dist/node/esm/util/runtime.js +0 -2
  269. package/dist/types/util/runtime.d.ts +0 -3
  270. /package/dist/{browser → webapi}/jwe/compact/decrypt.js +0 -0
  271. /package/dist/{node/esm → webapi}/jwe/compact/encrypt.js +0 -0
  272. /package/dist/{browser → webapi}/jwe/general/decrypt.js +0 -0
  273. /package/dist/{browser → webapi}/jwk/embedded.js +0 -0
  274. /package/dist/{node/esm → webapi}/jws/compact/sign.js +0 -0
  275. /package/dist/{browser → webapi}/jws/compact/verify.js +0 -0
  276. /package/dist/{node/esm → webapi}/jws/general/sign.js +0 -0
  277. /package/dist/{browser → webapi}/jws/general/verify.js +0 -0
  278. /package/dist/{browser → webapi}/jwt/decrypt.js +0 -0
  279. /package/dist/{node/esm → webapi}/jwt/encrypt.js +0 -0
  280. /package/dist/{node/esm → webapi}/jwt/produce.js +0 -0
  281. /package/dist/{node/esm → webapi}/jwt/sign.js +0 -0
  282. /package/dist/{browser → webapi}/jwt/verify.js +0 -0
  283. /package/dist/{browser/runtime → webapi/lib}/check_key_length.js +0 -0
  284. /package/dist/{browser → webapi}/lib/epoch.js +0 -0
  285. /package/dist/{browser → webapi}/lib/invalid_key_input.js +0 -0
  286. /package/dist/{browser → webapi}/lib/jwt_claims_set.js +0 -0
  287. /package/dist/{browser → webapi}/lib/private_symbols.js +0 -0
  288. /package/dist/{browser → webapi}/lib/secs.js +0 -0
  289. /package/dist/{browser → webapi}/util/decode_jwt.js +0 -0
  290. /package/dist/{browser → webapi}/util/decode_protected_header.js +0 -0
  291. /package/dist/{node/esm → webapi}/util/errors.js +0 -0
@@ -1,125 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.flattenedVerify = flattenedVerify;
4
- const base64url_js_1 = require("../../runtime/base64url.js");
5
- const verify_js_1 = require("../../runtime/verify.js");
6
- const errors_js_1 = require("../../util/errors.js");
7
- const buffer_utils_js_1 = require("../../lib/buffer_utils.js");
8
- const is_disjoint_js_1 = require("../../lib/is_disjoint.js");
9
- const is_object_js_1 = require("../../lib/is_object.js");
10
- const check_key_type_js_1 = require("../../lib/check_key_type.js");
11
- const validate_crit_js_1 = require("../../lib/validate_crit.js");
12
- const validate_algorithms_js_1 = require("../../lib/validate_algorithms.js");
13
- const is_jwk_js_1 = require("../../lib/is_jwk.js");
14
- const import_js_1 = require("../../key/import.js");
15
- async function flattenedVerify(jws, key, options) {
16
- if (!(0, is_object_js_1.default)(jws)) {
17
- throw new errors_js_1.JWSInvalid('Flattened JWS must be an object');
18
- }
19
- if (jws.protected === undefined && jws.header === undefined) {
20
- throw new errors_js_1.JWSInvalid('Flattened JWS must have either of the "protected" or "header" members');
21
- }
22
- if (jws.protected !== undefined && typeof jws.protected !== 'string') {
23
- throw new errors_js_1.JWSInvalid('JWS Protected Header incorrect type');
24
- }
25
- if (jws.payload === undefined) {
26
- throw new errors_js_1.JWSInvalid('JWS Payload missing');
27
- }
28
- if (typeof jws.signature !== 'string') {
29
- throw new errors_js_1.JWSInvalid('JWS Signature missing or incorrect type');
30
- }
31
- if (jws.header !== undefined && !(0, is_object_js_1.default)(jws.header)) {
32
- throw new errors_js_1.JWSInvalid('JWS Unprotected Header incorrect type');
33
- }
34
- let parsedProt = {};
35
- if (jws.protected) {
36
- try {
37
- const protectedHeader = (0, base64url_js_1.decode)(jws.protected);
38
- parsedProt = JSON.parse(buffer_utils_js_1.decoder.decode(protectedHeader));
39
- }
40
- catch {
41
- throw new errors_js_1.JWSInvalid('JWS Protected Header is invalid');
42
- }
43
- }
44
- if (!(0, is_disjoint_js_1.default)(parsedProt, jws.header)) {
45
- throw new errors_js_1.JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');
46
- }
47
- const joseHeader = {
48
- ...parsedProt,
49
- ...jws.header,
50
- };
51
- const extensions = (0, validate_crit_js_1.default)(errors_js_1.JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);
52
- let b64 = true;
53
- if (extensions.has('b64')) {
54
- b64 = parsedProt.b64;
55
- if (typeof b64 !== 'boolean') {
56
- throw new errors_js_1.JWSInvalid('The "b64" (base64url-encode payload) Header Parameter must be a boolean');
57
- }
58
- }
59
- const { alg } = joseHeader;
60
- if (typeof alg !== 'string' || !alg) {
61
- throw new errors_js_1.JWSInvalid('JWS "alg" (Algorithm) Header Parameter missing or invalid');
62
- }
63
- const algorithms = options && (0, validate_algorithms_js_1.default)('algorithms', options.algorithms);
64
- if (algorithms && !algorithms.has(alg)) {
65
- throw new errors_js_1.JOSEAlgNotAllowed('"alg" (Algorithm) Header Parameter value not allowed');
66
- }
67
- if (b64) {
68
- if (typeof jws.payload !== 'string') {
69
- throw new errors_js_1.JWSInvalid('JWS Payload must be a string');
70
- }
71
- }
72
- else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {
73
- throw new errors_js_1.JWSInvalid('JWS Payload must be a string or an Uint8Array instance');
74
- }
75
- let resolvedKey = false;
76
- if (typeof key === 'function') {
77
- key = await key(parsedProt, jws);
78
- resolvedKey = true;
79
- (0, check_key_type_js_1.checkKeyTypeWithJwk)(alg, key, 'verify');
80
- if ((0, is_jwk_js_1.isJWK)(key)) {
81
- key = await (0, import_js_1.importJWK)(key, alg);
82
- }
83
- }
84
- else {
85
- (0, check_key_type_js_1.checkKeyTypeWithJwk)(alg, key, 'verify');
86
- }
87
- const data = (0, buffer_utils_js_1.concat)(buffer_utils_js_1.encoder.encode(jws.protected ?? ''), buffer_utils_js_1.encoder.encode('.'), typeof jws.payload === 'string' ? buffer_utils_js_1.encoder.encode(jws.payload) : jws.payload);
88
- let signature;
89
- try {
90
- signature = (0, base64url_js_1.decode)(jws.signature);
91
- }
92
- catch {
93
- throw new errors_js_1.JWSInvalid('Failed to base64url decode the signature');
94
- }
95
- const verified = await (0, verify_js_1.default)(alg, key, signature, data);
96
- if (!verified) {
97
- throw new errors_js_1.JWSSignatureVerificationFailed();
98
- }
99
- let payload;
100
- if (b64) {
101
- try {
102
- payload = (0, base64url_js_1.decode)(jws.payload);
103
- }
104
- catch {
105
- throw new errors_js_1.JWSInvalid('Failed to base64url decode the payload');
106
- }
107
- }
108
- else if (typeof jws.payload === 'string') {
109
- payload = buffer_utils_js_1.encoder.encode(jws.payload);
110
- }
111
- else {
112
- payload = jws.payload;
113
- }
114
- const result = { payload };
115
- if (jws.protected !== undefined) {
116
- result.protectedHeader = parsedProt;
117
- }
118
- if (jws.header !== undefined) {
119
- result.unprotectedHeader = jws.header;
120
- }
121
- if (resolvedKey) {
122
- return { ...result, key };
123
- }
124
- return result;
125
- }
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GeneralSign = void 0;
4
- const sign_js_1 = require("../flattened/sign.js");
5
- const errors_js_1 = require("../../util/errors.js");
6
- class IndividualSignature {
7
- parent;
8
- protectedHeader;
9
- unprotectedHeader;
10
- options;
11
- key;
12
- constructor(sig, key, options) {
13
- this.parent = sig;
14
- this.key = key;
15
- this.options = options;
16
- }
17
- setProtectedHeader(protectedHeader) {
18
- if (this.protectedHeader) {
19
- throw new TypeError('setProtectedHeader can only be called once');
20
- }
21
- this.protectedHeader = protectedHeader;
22
- return this;
23
- }
24
- setUnprotectedHeader(unprotectedHeader) {
25
- if (this.unprotectedHeader) {
26
- throw new TypeError('setUnprotectedHeader can only be called once');
27
- }
28
- this.unprotectedHeader = unprotectedHeader;
29
- return this;
30
- }
31
- addSignature(...args) {
32
- return this.parent.addSignature(...args);
33
- }
34
- sign(...args) {
35
- return this.parent.sign(...args);
36
- }
37
- done() {
38
- return this.parent;
39
- }
40
- }
41
- class GeneralSign {
42
- _payload;
43
- _signatures = [];
44
- constructor(payload) {
45
- this._payload = payload;
46
- }
47
- addSignature(key, options) {
48
- const signature = new IndividualSignature(this, key, options);
49
- this._signatures.push(signature);
50
- return signature;
51
- }
52
- async sign() {
53
- if (!this._signatures.length) {
54
- throw new errors_js_1.JWSInvalid('at least one signature must be added');
55
- }
56
- const jws = {
57
- signatures: [],
58
- payload: '',
59
- };
60
- for (let i = 0; i < this._signatures.length; i++) {
61
- const signature = this._signatures[i];
62
- const flattened = new sign_js_1.FlattenedSign(this._payload);
63
- flattened.setProtectedHeader(signature.protectedHeader);
64
- flattened.setUnprotectedHeader(signature.unprotectedHeader);
65
- const { payload, ...rest } = await flattened.sign(signature.key, signature.options);
66
- if (i === 0) {
67
- jws.payload = payload;
68
- }
69
- else if (jws.payload !== payload) {
70
- throw new errors_js_1.JWSInvalid('inconsistent use of JWS Unencoded Payload (RFC7797)');
71
- }
72
- jws.signatures.push(rest);
73
- }
74
- return jws;
75
- }
76
- }
77
- exports.GeneralSign = GeneralSign;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generalVerify = generalVerify;
4
- const verify_js_1 = require("../flattened/verify.js");
5
- const errors_js_1 = require("../../util/errors.js");
6
- const is_object_js_1 = require("../../lib/is_object.js");
7
- async function generalVerify(jws, key, options) {
8
- if (!(0, is_object_js_1.default)(jws)) {
9
- throw new errors_js_1.JWSInvalid('General JWS must be an object');
10
- }
11
- if (!Array.isArray(jws.signatures) || !jws.signatures.every(is_object_js_1.default)) {
12
- throw new errors_js_1.JWSInvalid('JWS Signatures missing or incorrect type');
13
- }
14
- for (const signature of jws.signatures) {
15
- try {
16
- return await (0, verify_js_1.flattenedVerify)({
17
- header: signature.header,
18
- payload: jws.payload,
19
- protected: signature.protected,
20
- signature: signature.signature,
21
- }, key, options);
22
- }
23
- catch {
24
- }
25
- }
26
- throw new errors_js_1.JWSSignatureVerificationFailed();
27
- }
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.jwtDecrypt = jwtDecrypt;
4
- const decrypt_js_1 = require("../jwe/compact/decrypt.js");
5
- const jwt_claims_set_js_1 = require("../lib/jwt_claims_set.js");
6
- const errors_js_1 = require("../util/errors.js");
7
- async function jwtDecrypt(jwt, key, options) {
8
- const decrypted = await (0, decrypt_js_1.compactDecrypt)(jwt, key, options);
9
- const payload = (0, jwt_claims_set_js_1.default)(decrypted.protectedHeader, decrypted.plaintext, options);
10
- const { protectedHeader } = decrypted;
11
- if (protectedHeader.iss !== undefined && protectedHeader.iss !== payload.iss) {
12
- throw new errors_js_1.JWTClaimValidationFailed('replicated "iss" claim header parameter mismatch', payload, 'iss', 'mismatch');
13
- }
14
- if (protectedHeader.sub !== undefined && protectedHeader.sub !== payload.sub) {
15
- throw new errors_js_1.JWTClaimValidationFailed('replicated "sub" claim header parameter mismatch', payload, 'sub', 'mismatch');
16
- }
17
- if (protectedHeader.aud !== undefined &&
18
- JSON.stringify(protectedHeader.aud) !== JSON.stringify(payload.aud)) {
19
- throw new errors_js_1.JWTClaimValidationFailed('replicated "aud" claim header parameter mismatch', payload, 'aud', 'mismatch');
20
- }
21
- const result = { payload, protectedHeader };
22
- if (typeof key === 'function') {
23
- return { ...result, key: decrypted.key };
24
- }
25
- return result;
26
- }
@@ -1,79 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EncryptJWT = void 0;
4
- const encrypt_js_1 = require("../jwe/compact/encrypt.js");
5
- const buffer_utils_js_1 = require("../lib/buffer_utils.js");
6
- const produce_js_1 = require("./produce.js");
7
- class EncryptJWT extends produce_js_1.ProduceJWT {
8
- _cek;
9
- _iv;
10
- _keyManagementParameters;
11
- _protectedHeader;
12
- _replicateIssuerAsHeader;
13
- _replicateSubjectAsHeader;
14
- _replicateAudienceAsHeader;
15
- setProtectedHeader(protectedHeader) {
16
- if (this._protectedHeader) {
17
- throw new TypeError('setProtectedHeader can only be called once');
18
- }
19
- this._protectedHeader = protectedHeader;
20
- return this;
21
- }
22
- setKeyManagementParameters(parameters) {
23
- if (this._keyManagementParameters) {
24
- throw new TypeError('setKeyManagementParameters can only be called once');
25
- }
26
- this._keyManagementParameters = parameters;
27
- return this;
28
- }
29
- setContentEncryptionKey(cek) {
30
- if (this._cek) {
31
- throw new TypeError('setContentEncryptionKey can only be called once');
32
- }
33
- this._cek = cek;
34
- return this;
35
- }
36
- setInitializationVector(iv) {
37
- if (this._iv) {
38
- throw new TypeError('setInitializationVector can only be called once');
39
- }
40
- this._iv = iv;
41
- return this;
42
- }
43
- replicateIssuerAsHeader() {
44
- this._replicateIssuerAsHeader = true;
45
- return this;
46
- }
47
- replicateSubjectAsHeader() {
48
- this._replicateSubjectAsHeader = true;
49
- return this;
50
- }
51
- replicateAudienceAsHeader() {
52
- this._replicateAudienceAsHeader = true;
53
- return this;
54
- }
55
- async encrypt(key, options) {
56
- const enc = new encrypt_js_1.CompactEncrypt(buffer_utils_js_1.encoder.encode(JSON.stringify(this._payload)));
57
- if (this._replicateIssuerAsHeader) {
58
- this._protectedHeader = { ...this._protectedHeader, iss: this._payload.iss };
59
- }
60
- if (this._replicateSubjectAsHeader) {
61
- this._protectedHeader = { ...this._protectedHeader, sub: this._payload.sub };
62
- }
63
- if (this._replicateAudienceAsHeader) {
64
- this._protectedHeader = { ...this._protectedHeader, aud: this._payload.aud };
65
- }
66
- enc.setProtectedHeader(this._protectedHeader);
67
- if (this._iv) {
68
- enc.setInitializationVector(this._iv);
69
- }
70
- if (this._cek) {
71
- enc.setContentEncryptionKey(this._cek);
72
- }
73
- if (this._keyManagementParameters) {
74
- enc.setKeyManagementParameters(this._keyManagementParameters);
75
- }
76
- return enc.encrypt(key, options);
77
- }
78
- }
79
- exports.EncryptJWT = EncryptJWT;
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProduceJWT = void 0;
4
- const epoch_js_1 = require("../lib/epoch.js");
5
- const is_object_js_1 = require("../lib/is_object.js");
6
- const secs_js_1 = require("../lib/secs.js");
7
- function validateInput(label, input) {
8
- if (!Number.isFinite(input)) {
9
- throw new TypeError(`Invalid ${label} input`);
10
- }
11
- return input;
12
- }
13
- class ProduceJWT {
14
- _payload;
15
- constructor(payload = {}) {
16
- if (!(0, is_object_js_1.default)(payload)) {
17
- throw new TypeError('JWT Claims Set MUST be an object');
18
- }
19
- this._payload = payload;
20
- }
21
- setIssuer(issuer) {
22
- this._payload = { ...this._payload, iss: issuer };
23
- return this;
24
- }
25
- setSubject(subject) {
26
- this._payload = { ...this._payload, sub: subject };
27
- return this;
28
- }
29
- setAudience(audience) {
30
- this._payload = { ...this._payload, aud: audience };
31
- return this;
32
- }
33
- setJti(jwtId) {
34
- this._payload = { ...this._payload, jti: jwtId };
35
- return this;
36
- }
37
- setNotBefore(input) {
38
- if (typeof input === 'number') {
39
- this._payload = { ...this._payload, nbf: validateInput('setNotBefore', input) };
40
- }
41
- else if (input instanceof Date) {
42
- this._payload = { ...this._payload, nbf: validateInput('setNotBefore', (0, epoch_js_1.default)(input)) };
43
- }
44
- else {
45
- this._payload = { ...this._payload, nbf: (0, epoch_js_1.default)(new Date()) + (0, secs_js_1.default)(input) };
46
- }
47
- return this;
48
- }
49
- setExpirationTime(input) {
50
- if (typeof input === 'number') {
51
- this._payload = { ...this._payload, exp: validateInput('setExpirationTime', input) };
52
- }
53
- else if (input instanceof Date) {
54
- this._payload = { ...this._payload, exp: validateInput('setExpirationTime', (0, epoch_js_1.default)(input)) };
55
- }
56
- else {
57
- this._payload = { ...this._payload, exp: (0, epoch_js_1.default)(new Date()) + (0, secs_js_1.default)(input) };
58
- }
59
- return this;
60
- }
61
- setIssuedAt(input) {
62
- if (typeof input === 'undefined') {
63
- this._payload = { ...this._payload, iat: (0, epoch_js_1.default)(new Date()) };
64
- }
65
- else if (input instanceof Date) {
66
- this._payload = { ...this._payload, iat: validateInput('setIssuedAt', (0, epoch_js_1.default)(input)) };
67
- }
68
- else if (typeof input === 'string') {
69
- this._payload = {
70
- ...this._payload,
71
- iat: validateInput('setIssuedAt', (0, epoch_js_1.default)(new Date()) + (0, secs_js_1.default)(input)),
72
- };
73
- }
74
- else {
75
- this._payload = { ...this._payload, iat: validateInput('setIssuedAt', input) };
76
- }
77
- return this;
78
- }
79
- }
80
- exports.ProduceJWT = ProduceJWT;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SignJWT = void 0;
4
- const sign_js_1 = require("../jws/compact/sign.js");
5
- const errors_js_1 = require("../util/errors.js");
6
- const buffer_utils_js_1 = require("../lib/buffer_utils.js");
7
- const produce_js_1 = require("./produce.js");
8
- class SignJWT extends produce_js_1.ProduceJWT {
9
- _protectedHeader;
10
- setProtectedHeader(protectedHeader) {
11
- this._protectedHeader = protectedHeader;
12
- return this;
13
- }
14
- async sign(key, options) {
15
- const sig = new sign_js_1.CompactSign(buffer_utils_js_1.encoder.encode(JSON.stringify(this._payload)));
16
- sig.setProtectedHeader(this._protectedHeader);
17
- if (Array.isArray(this._protectedHeader?.crit) &&
18
- this._protectedHeader.crit.includes('b64') &&
19
- this._protectedHeader.b64 === false) {
20
- throw new errors_js_1.JWTInvalid('JWTs MUST NOT use unencoded payload');
21
- }
22
- return sig.sign(key, options);
23
- }
24
- }
25
- exports.SignJWT = SignJWT;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnsecuredJWT = void 0;
4
- const base64url = require("../runtime/base64url.js");
5
- const buffer_utils_js_1 = require("../lib/buffer_utils.js");
6
- const errors_js_1 = require("../util/errors.js");
7
- const jwt_claims_set_js_1 = require("../lib/jwt_claims_set.js");
8
- const produce_js_1 = require("./produce.js");
9
- class UnsecuredJWT extends produce_js_1.ProduceJWT {
10
- encode() {
11
- const header = base64url.encode(JSON.stringify({ alg: 'none' }));
12
- const payload = base64url.encode(JSON.stringify(this._payload));
13
- return `${header}.${payload}.`;
14
- }
15
- static decode(jwt, options) {
16
- if (typeof jwt !== 'string') {
17
- throw new errors_js_1.JWTInvalid('Unsecured JWT must be a string');
18
- }
19
- const { 0: encodedHeader, 1: encodedPayload, 2: signature, length } = jwt.split('.');
20
- if (length !== 3 || signature !== '') {
21
- throw new errors_js_1.JWTInvalid('Invalid Unsecured JWT');
22
- }
23
- let header;
24
- try {
25
- header = JSON.parse(buffer_utils_js_1.decoder.decode(base64url.decode(encodedHeader)));
26
- if (header.alg !== 'none')
27
- throw new Error();
28
- }
29
- catch {
30
- throw new errors_js_1.JWTInvalid('Invalid Unsecured JWT');
31
- }
32
- const payload = (0, jwt_claims_set_js_1.default)(header, base64url.decode(encodedPayload), options);
33
- return { payload, header };
34
- }
35
- }
36
- exports.UnsecuredJWT = UnsecuredJWT;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.jwtVerify = jwtVerify;
4
- const verify_js_1 = require("../jws/compact/verify.js");
5
- const jwt_claims_set_js_1 = require("../lib/jwt_claims_set.js");
6
- const errors_js_1 = require("../util/errors.js");
7
- async function jwtVerify(jwt, key, options) {
8
- const verified = await (0, verify_js_1.compactVerify)(jwt, key, options);
9
- if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {
10
- throw new errors_js_1.JWTInvalid('JWTs MUST NOT use unencoded payload');
11
- }
12
- const payload = (0, jwt_claims_set_js_1.default)(verified.protectedHeader, verified.payload, options);
13
- const result = { payload, protectedHeader: verified.protectedHeader };
14
- if (typeof key === 'function') {
15
- return { ...result, key: verified.key };
16
- }
17
- return result;
18
- }
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.exportSPKI = exportSPKI;
4
- exports.exportPKCS8 = exportPKCS8;
5
- exports.exportJWK = exportJWK;
6
- const asn1_js_1 = require("../runtime/asn1.js");
7
- const asn1_js_2 = require("../runtime/asn1.js");
8
- const key_to_jwk_js_1 = require("../runtime/key_to_jwk.js");
9
- async function exportSPKI(key) {
10
- return (0, asn1_js_1.toSPKI)(key);
11
- }
12
- async function exportPKCS8(key) {
13
- return (0, asn1_js_2.toPKCS8)(key);
14
- }
15
- async function exportJWK(key) {
16
- return (0, key_to_jwk_js_1.default)(key);
17
- }
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateKeyPair = generateKeyPair;
4
- const generate_js_1 = require("../runtime/generate.js");
5
- async function generateKeyPair(alg, options) {
6
- return (0, generate_js_1.generateKeyPair)(alg, options);
7
- }
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateSecret = generateSecret;
4
- const generate_js_1 = require("../runtime/generate.js");
5
- async function generateSecret(alg, options) {
6
- return (0, generate_js_1.generateSecret)(alg, options);
7
- }
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.importSPKI = importSPKI;
4
- exports.importX509 = importX509;
5
- exports.importPKCS8 = importPKCS8;
6
- exports.importJWK = importJWK;
7
- const base64url_js_1 = require("../runtime/base64url.js");
8
- const asn1_js_1 = require("../runtime/asn1.js");
9
- const jwk_to_key_js_1 = require("../runtime/jwk_to_key.js");
10
- const errors_js_1 = require("../util/errors.js");
11
- const is_object_js_1 = require("../lib/is_object.js");
12
- async function importSPKI(spki, alg, options) {
13
- if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {
14
- throw new TypeError('"spki" must be SPKI formatted string');
15
- }
16
- return (0, asn1_js_1.fromSPKI)(spki, alg, options);
17
- }
18
- async function importX509(x509, alg, options) {
19
- if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {
20
- throw new TypeError('"x509" must be X.509 formatted string');
21
- }
22
- return (0, asn1_js_1.fromX509)(x509, alg, options);
23
- }
24
- async function importPKCS8(pkcs8, alg, options) {
25
- if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {
26
- throw new TypeError('"pkcs8" must be PKCS#8 formatted string');
27
- }
28
- return (0, asn1_js_1.fromPKCS8)(pkcs8, alg, options);
29
- }
30
- async function importJWK(jwk, alg) {
31
- if (!(0, is_object_js_1.default)(jwk)) {
32
- throw new TypeError('JWK must be an object');
33
- }
34
- alg ||= jwk.alg;
35
- switch (jwk.kty) {
36
- case 'oct':
37
- if (typeof jwk.k !== 'string' || !jwk.k) {
38
- throw new TypeError('missing "k" (Key Value) Parameter value');
39
- }
40
- return (0, base64url_js_1.decode)(jwk.k);
41
- case 'RSA':
42
- if (jwk.oth !== undefined) {
43
- throw new errors_js_1.JOSENotSupported('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');
44
- }
45
- case 'EC':
46
- case 'OKP':
47
- return (0, jwk_to_key_js_1.default)({ ...jwk, alg });
48
- default:
49
- throw new errors_js_1.JOSENotSupported('Unsupported "kty" (Key Type) Parameter value');
50
- }
51
- }
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wrap = wrap;
4
- exports.unwrap = unwrap;
5
- const encrypt_js_1 = require("../runtime/encrypt.js");
6
- const decrypt_js_1 = require("../runtime/decrypt.js");
7
- const base64url_js_1 = require("../runtime/base64url.js");
8
- async function wrap(alg, key, cek, iv) {
9
- const jweAlgorithm = alg.slice(0, 7);
10
- const wrapped = await (0, encrypt_js_1.default)(jweAlgorithm, cek, key, iv, new Uint8Array(0));
11
- return {
12
- encryptedKey: wrapped.ciphertext,
13
- iv: (0, base64url_js_1.encode)(wrapped.iv),
14
- tag: (0, base64url_js_1.encode)(wrapped.tag),
15
- };
16
- }
17
- async function unwrap(alg, key, encryptedKey, iv, tag) {
18
- const jweAlgorithm = alg.slice(0, 7);
19
- return (0, decrypt_js_1.default)(jweAlgorithm, key, encryptedKey, iv, tag, new Uint8Array(0));
20
- }
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decoder = exports.encoder = void 0;
4
- exports.concat = concat;
5
- exports.p2s = p2s;
6
- exports.uint64be = uint64be;
7
- exports.uint32be = uint32be;
8
- exports.lengthAndInput = lengthAndInput;
9
- exports.concatKdf = concatKdf;
10
- const digest_js_1 = require("../runtime/digest.js");
11
- exports.encoder = new TextEncoder();
12
- exports.decoder = new TextDecoder();
13
- const MAX_INT32 = 2 ** 32;
14
- function concat(...buffers) {
15
- const size = buffers.reduce((acc, { length }) => acc + length, 0);
16
- const buf = new Uint8Array(size);
17
- let i = 0;
18
- for (const buffer of buffers) {
19
- buf.set(buffer, i);
20
- i += buffer.length;
21
- }
22
- return buf;
23
- }
24
- function p2s(alg, p2sInput) {
25
- return concat(exports.encoder.encode(alg), new Uint8Array([0]), p2sInput);
26
- }
27
- function writeUInt32BE(buf, value, offset) {
28
- if (value < 0 || value >= MAX_INT32) {
29
- throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);
30
- }
31
- buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);
32
- }
33
- function uint64be(value) {
34
- const high = Math.floor(value / MAX_INT32);
35
- const low = value % MAX_INT32;
36
- const buf = new Uint8Array(8);
37
- writeUInt32BE(buf, high, 0);
38
- writeUInt32BE(buf, low, 4);
39
- return buf;
40
- }
41
- function uint32be(value) {
42
- const buf = new Uint8Array(4);
43
- writeUInt32BE(buf, value);
44
- return buf;
45
- }
46
- function lengthAndInput(input) {
47
- return concat(uint32be(input.length), input);
48
- }
49
- async function concatKdf(secret, bits, value) {
50
- const iterations = Math.ceil((bits >> 3) / 32);
51
- const res = new Uint8Array(iterations * 32);
52
- for (let iter = 0; iter < iterations; iter++) {
53
- const buf = new Uint8Array(4 + secret.length + value.length);
54
- buf.set(uint32be(iter + 1));
55
- buf.set(secret, 4);
56
- buf.set(value, 4 + secret.length);
57
- res.set(await (0, digest_js_1.default)('sha256', buf), iter * 32);
58
- }
59
- return res.slice(0, bits >> 3);
60
- }