Commit graph

518 commits

Author SHA1 Message Date
codedust
ed32b0d46e fix: workaround for RangeError in browser runtime base64url
Fixes RangeError in base64url.ts when encrypting large Uint8Arrays

String.fromCharCode.apply causes a RangeError for large Uint8Arrays
(> ~500kB). This happens, e.g., when encrypting larger files.

See this gist to reproduce the bug (select a large file and see the
browser console):
https://gist.github.com/codedust/88c8af3b2acd782e72ffbe0c3c8bf5af

Error message in Firefox:
```
Uncaught (in promise) RangeError: too many arguments provided for a
function call (in base64url.js:8:62)
    encode http://localhost:8000/jose/runtime/base64url.js:8
    encrypt http://localhost:8000/jose/jwe/flattened/encrypt.js:143
```

Error message in Chromium:
```
Uncaught (in promise) RangeError: Maximum call stack size exceeded
    at encode (base64url.js:8)
    at FlattenedEncrypt.encrypt (encrypt.js:143)
    at async CompactEncrypt.encrypt (encrypt.js:23)
    at async jwe_test ((index):55)
```

Solution: Apply String.fromCharCode.apply in chunks of 32768 bytes,
see https://stackoverflow.com/a/12713326
2021-01-10 14:33:30 +01:00
Filip Skokan
a6fcd416ea build: update dev deps 2021-01-10 14:32:43 +01:00
Filip Skokan
3ebe3756fe style: use <> type casting syntax in embedded.ts 2021-01-10 14:32:36 +01:00
Filip Skokan
f362f6fde1 refactor: rename combinedHeader in embedded.ts 2021-01-10 14:32:27 +01:00
Filip Skokan
2ec9ba5d58 ci: reenable ff latest 2020-12-30 14:04:22 +01:00
Filip Skokan
6a6923b19a chore: discussion links with category preselected 2020-12-30 10:33:55 +01:00
Filip Skokan
71d35a7d0e docs: update unsecured jwt docs 2020-12-29 10:27:29 +01:00
Filip Skokan
3dcee918e8 docs: update readme.md 2020-12-29 10:11:20 +01:00
Filip Skokan
b024f96c57 ci: pause ff84 in ci 2020-12-22 19:45:37 +01:00
Filip Skokan
c886f77c6a refactor: catch and rethrow atob invalid inputs as TypeError
resolves #134
2020-12-22 19:24:16 +01:00
Filip Skokan
1bad86bc2e docs: update docs 2020-12-21 19:03:10 +01:00
Filip Skokan
5745a6af42 docs: reword decodeProtectedHeader 2020-12-17 23:40:20 +01:00
Filip Skokan
2d58cbcf12 refactor: check general jws sign recipients length 2020-12-17 19:02:07 +01:00
Filip Skokan
626d91f201 refactor: iv and cek generators are not async 2020-12-17 19:02:07 +01:00
Filip Skokan
ad2808860e chore: update package.json keywords 2020-12-17 13:45:56 +01:00
Filip Skokan
5a51a0ef5f docs: re-run generate 2020-12-17 13:45:16 +01:00
Filip Skokan
6abd2ef962 lint: lint with upgraded deps 2020-12-17 13:42:02 +01:00
Filip Skokan
0abc02f433 chore: update dev deps 2020-12-17 13:41:40 +01:00
Filip Skokan
a9b6ea9078 chore(release): 3.5.0 2020-12-17 12:29:05 +01:00
Filip Skokan
9369f73d6c docs: include new features 2020-12-17 12:27:35 +01:00
Filip Skokan
16dea9ec7d feat: added JWE General JSON Serialization decryption 2020-12-17 12:18:13 +01:00
Filip Skokan
f511889936 refactor: form flattened jws explicitly in general verify 2020-12-17 12:08:35 +01:00
Filip Skokan
47d7001c02 test: deflake different payload produce test 2020-12-16 19:10:50 +01:00
Filip Skokan
7d2fd14ca1 chore(release): 3.4.0 2020-12-16 18:45:02 +01:00
Filip Skokan
a10d61f3f5 ci: remove github actions NODE_OPTIONS 2020-12-16 18:43:35 +01:00
Filip Skokan
0e9e6e79cf refactor: remove workaround for a bugged v15.2.x webcrypto 2020-12-16 18:43:35 +01:00
Filip Skokan
4e1ede4dbb docs: include new features 2020-12-16 18:43:35 +01:00
Filip Skokan
6fb862cf12 feat: added JWS General JSON Serialization signing
resolves #129
2020-12-16 18:43:35 +01:00
Filip Skokan
60bcd51e75 docs: update docs for GetKeyFunction 2020-12-16 18:29:30 +01:00
Filip Skokan
fa29d68cfd feat: added utility function for decoding token's protected header 2020-12-16 18:29:30 +01:00
Filip Skokan
55b77810d0 feat: added JWS General JSON Serialization verification
resolves #129
2020-12-16 18:29:05 +01:00
Filip Skokan
40791dab34 ci: update github action targets 2020-12-16 11:36:18 +01:00
Filip Skokan
cfd2d261ca lint: prettier over the type casting syntax 2020-12-16 11:36:18 +01:00
Filip Skokan
55e8bfed32 style: use <> type casting syntax 2020-12-16 11:11:34 +01:00
Filip Skokan
00b372e0f8 chore: github templates, discussions, etc 2020-12-15 17:30:38 +01:00
Filip Skokan
3f3f4ae97b chore: github templates, discussions, etc 2020-12-15 16:42:08 +01:00
Filip Skokan
31662eff98 chore: update package.json description 2020-12-15 12:12:32 +01:00
Filip Skokan
41e8afc0ce chore(release): 3.3.2 2020-12-14 16:43:16 +01:00
Filip Skokan
175f273819 fix(typescript): ref dom lib via triple-slash to fix some compile issues
closes #126
2020-12-14 16:41:59 +01:00
Filip Skokan
e4bf481ba1
docs: one more FAQ 2020-12-13 10:20:30 +01:00
Filip Skokan
23061a2178 build: fix release dist file exclusion 2020-12-06 19:50:28 +01:00
Filip Skokan
4fecada4ef chore(release): 3.3.1 2020-12-06 18:20:10 +01:00
Filip Skokan
1c3e116976 fix: botched v3.3.0 release 2020-12-06 18:18:54 +01:00
Filip Skokan
28976a2039 chore(release): 3.3.0 2020-12-06 18:04:18 +01:00
Filip Skokan
5163116ca1 feat: support recognizing proprietary crit header parameters
closes #123
2020-12-06 17:54:38 +01:00
Filip Skokan
dade1fdab9 chore: cleanup package.json 2020-12-06 17:54:38 +01:00
Filip Skokan
691b44ad47 fix: reject JWTs with b64: false
As per https://tools.ietf.org/html/rfc7797 abstract

This specification updates RFC 7519 by stating that JSON Web Tokens
(JWTs) MUST NOT use the unencoded payload option defined by this
specification.
2020-12-06 17:54:32 +01:00
Filip Skokan
ee6d725103 chore(release): 3.2.0 2020-12-02 10:00:42 +01:00
Filip Skokan
205529fc54 style: upgrade typescript-eslint and resolve lint issues 2020-12-01 14:57:43 +01:00
Filip Skokan
e72af2742e test: add coverage for generate key pair options 2020-12-01 12:12:24 +01:00