@astronautlabs/jwt 1.1.1 → 1.1.2

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 (141) hide show
  1. package/dist/jest.config.d.ts +3 -0
  2. package/dist/jest.config.js +9 -0
  3. package/dist/jest.config.js.map +1 -0
  4. package/dist/{browser → src/browser}/base64url.d.ts +4 -4
  5. package/dist/{browser → src/browser}/base64url.js +14 -17
  6. package/dist/src/browser/base64url.js.map +1 -0
  7. package/dist/{browser/webcrypto-jwt.test.d.ts → src/browser/browser-engine.test.d.ts} +1 -1
  8. package/dist/{browser/webcrypto-jwt.test.js → src/browser/browser-engine.test.js} +6 -6
  9. package/dist/src/browser/browser-engine.test.js.map +1 -0
  10. package/dist/{browser → src/browser}/index.d.ts +5 -5
  11. package/dist/{browser → src/browser}/index.js +24 -20
  12. package/dist/src/browser/index.js.map +1 -0
  13. package/dist/{browser → src/browser}/utils.d.ts +6 -6
  14. package/dist/src/browser/utils.js +21 -0
  15. package/dist/src/browser/utils.js.map +1 -0
  16. package/dist/{browser → src/browser}/webcrypto-jwt.d.ts +22 -22
  17. package/dist/src/browser/webcrypto-jwt.js +313 -0
  18. package/dist/src/browser/webcrypto-jwt.js.map +1 -0
  19. package/dist/{common → src/common}/expiry.d.ts +1 -1
  20. package/dist/{common → src/common}/expiry.js +23 -24
  21. package/dist/src/common/expiry.js.map +1 -0
  22. package/dist/{common → src/common}/index.d.ts +2 -2
  23. package/dist/{common → src/common}/index.js +18 -14
  24. package/dist/src/common/index.js.map +1 -0
  25. package/dist/{common → src/common}/interface.d.ts +39 -39
  26. package/dist/{common → src/common}/interface.js +2 -2
  27. package/dist/src/common/interface.js.map +1 -0
  28. package/dist/{engine.test.d.ts → src/engine.test.d.ts} +10 -10
  29. package/dist/src/engine.test.js +199 -0
  30. package/dist/src/engine.test.js.map +1 -0
  31. package/dist/{fixtures → src/fixtures}/es256.fixture.d.ts +6 -6
  32. package/dist/src/fixtures/es256.fixture.js +24 -0
  33. package/dist/src/fixtures/es256.fixture.js.map +1 -0
  34. package/dist/{fixtures → src/fixtures}/hs256.fixture.d.ts +7 -7
  35. package/dist/src/fixtures/hs256.fixture.js +11 -0
  36. package/dist/src/fixtures/hs256.fixture.js.map +1 -0
  37. package/dist/{fixtures → src/fixtures}/hs384.fixture.d.ts +6 -6
  38. package/dist/{fixtures → src/fixtures}/hs384.fixture.js +9 -9
  39. package/dist/src/fixtures/hs384.fixture.js.map +1 -0
  40. package/dist/{fixtures → src/fixtures}/hs512.fixture.d.ts +6 -6
  41. package/dist/{fixtures → src/fixtures}/hs512.fixture.js +9 -9
  42. package/dist/src/fixtures/hs512.fixture.js.map +1 -0
  43. package/dist/{fixtures → src/fixtures}/rs256.fixture.d.ts +6 -6
  44. package/dist/src/fixtures/rs256.fixture.js +80 -0
  45. package/dist/src/fixtures/rs256.fixture.js.map +1 -0
  46. package/dist/{fixtures → src/fixtures}/rs512.fixture.d.ts +6 -6
  47. package/dist/src/fixtures/rs512.fixture.js +80 -0
  48. package/dist/src/fixtures/rs512.fixture.js.map +1 -0
  49. package/dist/{index.d.ts → src/index.d.ts} +3 -3
  50. package/dist/{index.js → src/index.js} +20 -17
  51. package/dist/src/index.js.map +1 -0
  52. package/dist/{node → src/node}/index.d.ts +16 -16
  53. package/dist/src/node/index.js +113 -0
  54. package/dist/src/node/index.js.map +1 -0
  55. package/dist/{node/engine.test.d.ts → src/node/node-engine.test.d.ts} +1 -1
  56. package/dist/{node/engine.test.js → src/node/node-engine.test.js} +6 -6
  57. package/dist/src/node/node-engine.test.js.map +1 -0
  58. package/dist/src/polyfills.test.d.ts +0 -0
  59. package/dist/src/polyfills.test.js +8 -0
  60. package/dist/src/polyfills.test.js.map +1 -0
  61. package/dist/tsconfig.tsbuildinfo +1 -0
  62. package/dist.esm/jest.config.js +7 -0
  63. package/dist.esm/jest.config.js.map +1 -0
  64. package/dist.esm/src/browser/base64url.js +11 -0
  65. package/dist.esm/src/browser/base64url.js.map +1 -0
  66. package/dist.esm/src/browser/browser-engine.test.js +4 -0
  67. package/dist.esm/src/browser/browser-engine.test.js.map +1 -0
  68. package/dist.esm/src/browser/index.js +7 -0
  69. package/dist.esm/src/browser/index.js.map +1 -0
  70. package/dist.esm/src/browser/utils.js +17 -0
  71. package/dist.esm/src/browser/utils.js.map +1 -0
  72. package/dist.esm/src/browser/webcrypto-jwt.js +309 -0
  73. package/dist.esm/src/browser/webcrypto-jwt.js.map +1 -0
  74. package/dist.esm/src/common/expiry.js +21 -0
  75. package/dist.esm/src/common/expiry.js.map +1 -0
  76. package/dist.esm/src/common/index.js +3 -0
  77. package/dist.esm/src/common/index.js.map +1 -0
  78. package/dist.esm/src/common/interface.js +2 -0
  79. package/{dist → dist.esm/src}/common/interface.js.map +1 -1
  80. package/dist.esm/src/engine.test.js +163 -0
  81. package/dist.esm/src/engine.test.js.map +1 -0
  82. package/dist.esm/src/fixtures/es256.fixture.js +21 -0
  83. package/dist.esm/src/fixtures/es256.fixture.js.map +1 -0
  84. package/dist.esm/src/fixtures/hs256.fixture.js +8 -0
  85. package/dist.esm/src/fixtures/hs256.fixture.js.map +1 -0
  86. package/dist.esm/src/fixtures/hs384.fixture.js +7 -0
  87. package/dist.esm/src/fixtures/hs384.fixture.js.map +1 -0
  88. package/dist.esm/src/fixtures/hs512.fixture.js +7 -0
  89. package/dist.esm/src/fixtures/hs512.fixture.js.map +1 -0
  90. package/dist.esm/src/fixtures/rs256.fixture.js +77 -0
  91. package/dist.esm/src/fixtures/rs256.fixture.js.map +1 -0
  92. package/dist.esm/src/fixtures/rs512.fixture.js +77 -0
  93. package/dist.esm/src/fixtures/rs512.fixture.js.map +1 -0
  94. package/dist.esm/src/index.js +4 -0
  95. package/dist.esm/src/index.js.map +1 -0
  96. package/dist.esm/src/node/index.js +91 -0
  97. package/dist.esm/src/node/index.js.map +1 -0
  98. package/dist.esm/src/node/node-engine.test.js +4 -0
  99. package/dist.esm/src/node/node-engine.test.js.map +1 -0
  100. package/dist.esm/src/polyfills.test.js +8 -0
  101. package/dist.esm/src/polyfills.test.js.map +1 -0
  102. package/dist.esm/tsconfig.esm.tsbuildinfo +1 -0
  103. package/package.json +55 -46
  104. package/src/browser/webcrypto-jwt.ts +3 -3
  105. package/src/engine.test.ts +137 -140
  106. package/src/node/index.ts +1 -1
  107. package/src/polyfills.test.ts +7 -0
  108. package/tsconfig.esm.json +7 -0
  109. package/tsconfig.json +2 -1
  110. package/dist/browser/base64url.js.map +0 -1
  111. package/dist/browser/index.js.map +0 -1
  112. package/dist/browser/utils.js +0 -24
  113. package/dist/browser/utils.js.map +0 -1
  114. package/dist/browser/webcrypto-jwt.js +0 -385
  115. package/dist/browser/webcrypto-jwt.js.map +0 -1
  116. package/dist/browser/webcrypto-jwt.test.js.map +0 -1
  117. package/dist/common/expiry.js.map +0 -1
  118. package/dist/common/index.js.map +0 -1
  119. package/dist/engine.test.js +0 -313
  120. package/dist/engine.test.js.map +0 -1
  121. package/dist/fixtures/es256.fixture.js +0 -10
  122. package/dist/fixtures/es256.fixture.js.map +0 -1
  123. package/dist/fixtures/hs256.fixture.js +0 -11
  124. package/dist/fixtures/hs256.fixture.js.map +0 -1
  125. package/dist/fixtures/hs384.fixture.js.map +0 -1
  126. package/dist/fixtures/hs512.fixture.js.map +0 -1
  127. package/dist/fixtures/rs256.fixture.js +0 -10
  128. package/dist/fixtures/rs256.fixture.js.map +0 -1
  129. package/dist/fixtures/rs512.fixture.js +0 -10
  130. package/dist/fixtures/rs512.fixture.js.map +0 -1
  131. package/dist/index.js.map +0 -1
  132. package/dist/node/engine.test.js.map +0 -1
  133. package/dist/node/index.js +0 -144
  134. package/dist/node/index.js.map +0 -1
  135. package/dist/test.d.ts +0 -1
  136. package/dist/test.js +0 -9
  137. package/dist/test.js.map +0 -1
  138. package/karma.conf.ts +0 -48
  139. package/src/test.ts +0 -7
  140. /package/src/browser/{webcrypto-jwt.test.ts → browser-engine.test.ts} +0 -0
  141. /package/src/node/{engine.test.ts → node-engine.test.ts} +0 -0
@@ -0,0 +1,3 @@
1
+ import type { Config } from 'jest';
2
+ declare const config: Config;
3
+ export default config;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ts_jest_1 = require("ts-jest");
4
+ const config = Object.assign({ collectCoverage: true, coverageDirectory: "coverage", coverageProvider: "v8", extensionsToTreatAsEsm: [".ts"], roots: ["src/node"], testMatch: ["**/*.test.ts"], watchman: false }, (0, ts_jest_1.createDefaultPreset)({
5
+ tsconfig: './tsconfig.esm.json',
6
+ useESM: true
7
+ }));
8
+ exports.default = config;
9
+ //# sourceMappingURL=jest.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":";;AACA,qCAA8C;AAE9C,MAAM,MAAM,mBACR,eAAe,EAAE,IAAI,EACrB,iBAAiB,EAAE,UAAU,EAC7B,gBAAgB,EAAE,IAAI,EACtB,sBAAsB,EAAE,CAAC,KAAK,CAAC,EAC/B,KAAK,EAAE,CAAE,UAAU,CAAE,EACrB,SAAS,EAAE,CAAC,cAAc,CAAC,EAC3B,QAAQ,EAAE,KAAK,IACZ,IAAA,6BAAmB,EAAC;IACnB,QAAQ,EAAE,qBAAqB;IAC/B,MAAM,EAAE,IAAI;CACf,CAAC,CACL,CAAC;AAEF,kBAAe,MAAM,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare class Base64URL {
2
- static stringify(a: any): string;
3
- static parse(s: any): Uint8Array;
4
- }
1
+ export declare class Base64URL {
2
+ static stringify(a: any): string;
3
+ static parse(s: any): Uint8Array<any>;
4
+ }
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Base64URL = void 0;
4
- var Base64URL = /** @class */ (function () {
5
- function Base64URL() {
6
- }
7
- Base64URL.stringify = function (a) {
8
- var base64string = btoa(String.fromCharCode.apply(0, a));
9
- return base64string.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
10
- };
11
- Base64URL.parse = function (s) {
12
- s = s.replace(/-/g, '+').replace(/_/g, '/').replace(/\s/g, '');
13
- return new Uint8Array(Array.prototype.map.call(atob(s), function (c) { return c.charCodeAt(0); }));
14
- };
15
- return Base64URL;
16
- }());
17
- exports.Base64URL = Base64URL;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Base64URL = void 0;
4
+ class Base64URL {
5
+ static stringify(a) {
6
+ let base64string = btoa(String.fromCharCode.apply(0, a));
7
+ return base64string.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
8
+ }
9
+ static parse(s) {
10
+ s = s.replace(/-/g, '+').replace(/_/g, '/').replace(/\s/g, '');
11
+ return new Uint8Array(Array.prototype.map.call(atob(s), c => c.charCodeAt(0)));
12
+ }
13
+ }
14
+ exports.Base64URL = Base64URL;
18
15
  //# sourceMappingURL=base64url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64url.js","sourceRoot":"","sources":["../../../src/browser/base64url.ts"],"names":[],"mappings":";;;AACA,MAAa,SAAS;IACX,MAAM,CAAC,SAAS,CAAC,CAAC;QACrB,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClF,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;CACJ;AAVD,8BAUC"}
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,6 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var engine_test_1 = require("../engine.test");
4
- var index_1 = require("./index");
5
- (0, engine_test_1.engineTest)('WebCryptoJWT', index_1.JWT);
6
- //# sourceMappingURL=webcrypto-jwt.test.js.map
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const engine_test_1 = require("../engine.test");
4
+ const index_1 = require("./index");
5
+ (0, engine_test_1.engineTest)('WebCryptoJWT', index_1.JWT);
6
+ //# sourceMappingURL=browser-engine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-engine.test.js","sourceRoot":"","sources":["../../../src/browser/browser-engine.test.ts"],"names":[],"mappings":";;AAAA,gDAA4C;AAC5C,mCAA8B;AAE9B,IAAA,wBAAU,EAAC,cAAc,EAAE,WAAG,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { JWTEngine } from '../common';
2
- export * from '../common';
3
- export * from './webcrypto-jwt';
4
- export declare function createJWTEngine(): JWTEngine;
5
- export declare const JWT: JWTEngine;
1
+ import { JWTEngine } from '../common';
2
+ export * from '../common';
3
+ export * from './webcrypto-jwt';
4
+ export declare function createJWTEngine(): JWTEngine;
5
+ export declare const JWT: JWTEngine;
@@ -1,21 +1,25 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.JWT = exports.createJWTEngine = void 0;
14
- var webcrypto_jwt_1 = require("./webcrypto-jwt");
15
- __exportStar(require("../common"), exports);
16
- __exportStar(require("./webcrypto-jwt"), exports);
17
- function createJWTEngine() { return new webcrypto_jwt_1.WebCryptoJWT(); }
18
- exports.createJWTEngine = createJWTEngine;
19
- ;
20
- exports.JWT = createJWTEngine();
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.JWT = void 0;
18
+ exports.createJWTEngine = createJWTEngine;
19
+ const webcrypto_jwt_1 = require("./webcrypto-jwt");
20
+ __exportStar(require("../common"), exports);
21
+ __exportStar(require("./webcrypto-jwt"), exports);
22
+ function createJWTEngine() { return new webcrypto_jwt_1.WebCryptoJWT(); }
23
+ ;
24
+ exports.JWT = createJWTEngine();
21
25
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,0CAA4E;AAH5E,mDAA+C;AAC/C,4CAA0B;AAC1B,kDAAgC;AAChC,SAAgB,eAAe,KAAiB,OAAO,IAAI,4BAAY,EAAE,CAAC,CAAC,CAAC;AAAA,CAAC;AAChE,QAAA,GAAG,GAAG,eAAe,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
- export declare class Utils {
2
- static isString(s: any): boolean;
3
- static utf8ToUint8Array(str: any): Uint8Array;
4
- static isFunction(fn: any): boolean;
5
- static isObject(arg: any): boolean;
6
- }
1
+ export declare class Utils {
2
+ static isString(s: any): s is string;
3
+ static utf8ToUint8Array(str: any): Uint8Array<any>;
4
+ static isFunction(fn: any): boolean;
5
+ static isObject(arg: any): boolean;
6
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Utils = void 0;
4
+ const base64url_1 = require("./base64url");
5
+ class Utils {
6
+ static isString(s) {
7
+ return typeof s === 'string';
8
+ }
9
+ static utf8ToUint8Array(str) {
10
+ str = btoa(unescape(encodeURIComponent(str)));
11
+ return base64url_1.Base64URL.parse(str);
12
+ }
13
+ static isFunction(fn) {
14
+ return typeof fn === 'function';
15
+ }
16
+ static isObject(arg) {
17
+ return arg !== null && typeof arg === 'object';
18
+ }
19
+ }
20
+ exports.Utils = Utils;
21
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/browser/utils.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,MAAa,KAAK;IACP,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,GAAG;QAC9B,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO,qBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,EAAE;QACvB,OAAO,OAAO,EAAE,KAAK,UAAU,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,GAAG;QACtB,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;IACnD,CAAC;CACJ;AAjBD,sBAiBC"}
@@ -1,22 +1,22 @@
1
- import { JWTEngine, EncodeOptions, Token, DecodeOptions } from "../common/interface";
2
- export declare class WebCryptoJWT implements JWTEngine {
3
- private subtleCrypto?;
4
- constructor(subtleCrypto?: SubtleCrypto);
5
- decodeUntrusted(token: string): Promise<Token>;
6
- private findSubtleCrypto;
7
- encode(payload: Record<string, any>, options: EncodeOptions): Promise<Token>;
8
- validate(string: string, options: DecodeOptions): Promise<Token>;
9
- private algorithmOf;
10
- private str2ab;
11
- /**
12
- * Adapted from https://chromium.googlesource.com/chromium/blink/+/master/LayoutTests/crypto/subtle/hmac/sign-verify.html
13
- *
14
- * @param token
15
- * @param secret
16
- * @param alg
17
- */
18
- private _verify;
19
- private _sign;
20
- private _decode;
21
- private _decodeBase64URL;
22
- }
1
+ import { JWTEngine, EncodeOptions, Token, DecodeOptions } from "../common/interface";
2
+ export declare class WebCryptoJWT implements JWTEngine {
3
+ private subtleCrypto?;
4
+ constructor(subtleCrypto?: SubtleCrypto);
5
+ decodeUntrusted(token: string): Promise<Token>;
6
+ private findSubtleCrypto;
7
+ encode(payload: Record<string, any>, options: EncodeOptions): Promise<Token>;
8
+ validate(string: string, options: DecodeOptions): Promise<Token>;
9
+ private algorithmOf;
10
+ private str2ab;
11
+ /**
12
+ * Adapted from https://chromium.googlesource.com/chromium/blink/+/master/LayoutTests/crypto/subtle/hmac/sign-verify.html
13
+ *
14
+ * @param token
15
+ * @param secret
16
+ * @param alg
17
+ */
18
+ private _verify;
19
+ private _sign;
20
+ private _decode;
21
+ private _decodeBase64URL;
22
+ }
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ // Originally from https://github.com/pose/webcrypto-jwt
3
+ // (C) Copyright (c) 2015 Alberto Pose albertopose@gmail.com
4
+ // Used under the terms of the MIT License (https://github.com/pose/webcrypto-jwt/blob/master/LICENSE.md)
5
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
+ return new (P || (P = Promise))(function (resolve, reject) {
8
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
12
+ });
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.WebCryptoJWT = void 0;
16
+ const base64url_1 = require("./base64url");
17
+ const utils_1 = require("./utils");
18
+ const common_1 = require("../common");
19
+ const ALGORITHMS = {
20
+ none: {},
21
+ HS256: {
22
+ importKey: {
23
+ name: 'HMAC',
24
+ hash: 'SHA-256'
25
+ },
26
+ operation: {
27
+ name: 'HMAC',
28
+ hash: 'SHA-256'
29
+ }
30
+ },
31
+ HS384: {
32
+ importKey: {
33
+ name: 'HMAC',
34
+ hash: 'SHA-384'
35
+ },
36
+ operation: {
37
+ name: 'HMAC',
38
+ hash: 'SHA-384'
39
+ }
40
+ },
41
+ HS512: {
42
+ importKey: {
43
+ name: 'HMAC',
44
+ hash: 'SHA-512'
45
+ },
46
+ operation: {
47
+ name: 'HMAC',
48
+ hash: 'SHA-512'
49
+ }
50
+ },
51
+ RS256: {
52
+ importKey: {
53
+ name: 'RSASSA-PKCS1-v1_5',
54
+ hash: 'SHA-256'
55
+ },
56
+ operation: {
57
+ name: 'RSASSA-PKCS1-v1_5',
58
+ hash: 'SHA-256'
59
+ }
60
+ },
61
+ RS512: {
62
+ importKey: {
63
+ name: 'RSASSA-PKCS1-v1_5',
64
+ hash: 'SHA-512'
65
+ },
66
+ operation: {
67
+ name: 'RSASSA-PKCS1-v1_5',
68
+ hash: 'SHA-512'
69
+ }
70
+ },
71
+ ES256: {
72
+ importKey: {
73
+ name: 'ECDSA',
74
+ namedCurve: 'P-256'
75
+ },
76
+ operation: {
77
+ name: 'ECDSA',
78
+ namedCurve: 'P-256',
79
+ hash: 'SHA-256'
80
+ }
81
+ }
82
+ };
83
+ class WebCryptoJWT {
84
+ constructor(subtleCrypto) {
85
+ this.subtleCrypto = subtleCrypto;
86
+ if (!subtleCrypto)
87
+ this.findSubtleCrypto();
88
+ }
89
+ decodeUntrusted(token) {
90
+ return __awaiter(this, void 0, void 0, function* () {
91
+ let decodedToken = this._decode(token);
92
+ return {
93
+ claims: decodedToken.payload,
94
+ header: decodedToken.header,
95
+ string: token
96
+ };
97
+ });
98
+ }
99
+ findSubtleCrypto() {
100
+ if ('crypto' in window)
101
+ this.subtleCrypto = crypto.subtle || crypto['webkitSubtle'];
102
+ if (!this.subtleCrypto && 'msCrypto' in window)
103
+ this.subtleCrypto = window['msCrypto'].Subtle;
104
+ }
105
+ encode(payload, options) {
106
+ return __awaiter(this, void 0, void 0, function* () {
107
+ let string = yield this._sign(payload, options.secretOrKey, this.algorithmOf(options));
108
+ return {
109
+ string,
110
+ header: this._decode(string).header,
111
+ claims: payload
112
+ };
113
+ });
114
+ }
115
+ validate(string, options) {
116
+ return __awaiter(this, void 0, void 0, function* () {
117
+ var _a;
118
+ let decodedToken = this._decode(string);
119
+ let algorithm = this.algorithmOf(options);
120
+ let secretOrKey = options.secretOrKey;
121
+ let claims = decodedToken.payload;
122
+ // Signature must match
123
+ if (decodedToken.header.alg !== algorithm)
124
+ throw new Error(`Cannot validate JWT '${string}': Token has incorrect algorithm`);
125
+ if (algorithm !== 'none' && !(yield this._verify(decodedToken, secretOrKey, algorithm)))
126
+ throw new Error(`Cannot validate JWT '${string}': Invalid signature`);
127
+ // Algorithm must match
128
+ // Expiration
129
+ try {
130
+ (0, common_1.validateExpiry)(claims.exp, options.now, (_a = options.validate) === null || _a === void 0 ? void 0 : _a.exp);
131
+ }
132
+ catch (e) {
133
+ throw new Error(`Cannot validate JWT '${string}': ${e.message}`);
134
+ }
135
+ return {
136
+ string,
137
+ header: decodedToken.header,
138
+ claims: decodedToken.payload
139
+ };
140
+ });
141
+ }
142
+ algorithmOf(options) {
143
+ return options.algorithm || 'HS256';
144
+ }
145
+ str2ab(str) {
146
+ const buf = new ArrayBuffer(str.length);
147
+ const bufView = new Uint8Array(buf);
148
+ for (let i = 0, strLen = str.length; i < strLen; i++) {
149
+ bufView[i] = str.charCodeAt(i);
150
+ }
151
+ return buf;
152
+ }
153
+ /**
154
+ * Adapted from https://chromium.googlesource.com/chromium/blink/+/master/LayoutTests/crypto/subtle/hmac/sign-verify.html
155
+ *
156
+ * @param token
157
+ * @param secret
158
+ * @param alg
159
+ */
160
+ _verify(token, secret, alg) {
161
+ return __awaiter(this, void 0, void 0, function* () {
162
+ if (alg === 'none')
163
+ return true;
164
+ let importAlgorithm = ALGORITHMS[alg];
165
+ if (!importAlgorithm)
166
+ throw new Error(`Algorithm ${alg} is not supported`);
167
+ let keyFormat;
168
+ let secretBuf;
169
+ let encoder = new TextEncoder();
170
+ // TODO Test utf8ToUint8Array function
171
+ if (secret.includes('-----BEGIN PUBLIC KEY-----')) {
172
+ secretBuf = this.str2ab(atob(secret
173
+ .replace(/^-----BEGIN PUBLIC KEY-----\n/, '')
174
+ .replace(/\n-----END PUBLIC KEY-----/, '')
175
+ .replace(/\n/g, '')));
176
+ keyFormat = 'spki';
177
+ }
178
+ else if (secret.includes('-----BEGIN RSA PUBLIC KEY-----')) {
179
+ throw new Error(`PKCS#1 keys are not supported. `
180
+ + `Please convert the key to PKCS#8 instead: `
181
+ + `openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in pkcs1.key -out pkcs8.key`);
182
+ }
183
+ else {
184
+ secretBuf = encoder.encode(secret).buffer;
185
+ keyFormat = 'raw';
186
+ }
187
+ let key;
188
+ if (!this.subtleCrypto)
189
+ throw new Error(`Not supported: No Subtle Crypto support`);
190
+ try {
191
+ key = yield this.subtleCrypto.importKey(keyFormat, secretBuf, importAlgorithm.importKey, false, ['verify']);
192
+ }
193
+ catch (e) {
194
+ let identifier = `jwtUncaughtError${Math.floor(10000 + Math.random() * 10000)}`;
195
+ console.error(`JWT.verify(): Caught error while importing ${alg} key: format=${keyFormat}, importAlgorithm: ${JSON.stringify(importAlgorithm.importKey)}.`);
196
+ console.error(e);
197
+ if (typeof window !== 'undefined') {
198
+ window[identifier] = e;
199
+ console.error(`To aid in debugging, this error was saved to ${identifier}`);
200
+ }
201
+ throw e;
202
+ }
203
+ let partialToken = `${token.encodedHeader}.${token.encodedPayload}`;
204
+ let signaturePart = token.signature;
205
+ // TODO Test utf8ToUint8Array function
206
+ let messageAsUint8Array = encoder.encode(partialToken);
207
+ // TODO Test utf8ToUint8Array function
208
+ let signatureAsUint8Array = base64url_1.Base64URL.parse(signaturePart);
209
+ if (!this.subtleCrypto)
210
+ throw new Error(`Not supported: No Subtle Crypto support`);
211
+ try {
212
+ return yield this.subtleCrypto.verify(importAlgorithm.operation, key, signatureAsUint8Array, messageAsUint8Array);
213
+ }
214
+ catch (e) {
215
+ console.error(`JWT.verify(): Caught error while verifying token:`);
216
+ console.error(e);
217
+ throw e;
218
+ }
219
+ });
220
+ }
221
+ ;
222
+ _sign(payload, secret, alg) {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ let importAlgorithm = ALGORITHMS[alg];
225
+ if (!importAlgorithm)
226
+ throw new Error(`Algorithm '${alg}' is not supported`);
227
+ let payloadAsJSON = JSON.stringify(payload);
228
+ let header = { alg: alg, typ: 'JWT' };
229
+ let headerAsJSON = JSON.stringify(header);
230
+ let partialToken = base64url_1.Base64URL.stringify(utils_1.Utils.utf8ToUint8Array(headerAsJSON)) + '.' +
231
+ base64url_1.Base64URL.stringify(utils_1.Utils.utf8ToUint8Array(payloadAsJSON));
232
+ if (alg === 'none')
233
+ return `${partialToken}.`;
234
+ let keyFormat = 'raw';
235
+ let encoder = new TextEncoder();
236
+ let secretBuf;
237
+ // TODO Test utf8ToUint8Array function
238
+ if (secret.includes('-----BEGIN RSA PRIVATE KEY-----')) {
239
+ throw new Error(`PKCS#1 keys are not supported. Please convert the key to PKCS#8 instead: openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in pkcs1.key -out pkcs8.key`);
240
+ }
241
+ else if (secret.includes('-----BEGIN PRIVATE KEY-----')) {
242
+ secretBuf = this.str2ab(atob(secret
243
+ .replace(/^-----BEGIN PRIVATE KEY-----\n/, '')
244
+ .replace(/\n-----END PRIVATE KEY-----/, '')
245
+ .replace(/\n/g, '')));
246
+ keyFormat = 'pkcs8';
247
+ }
248
+ else {
249
+ secretBuf = encoder.encode(secret).buffer;
250
+ }
251
+ if (!this.subtleCrypto)
252
+ throw new Error(`Not supported: No Subtle Crypto support`);
253
+ let key;
254
+ try {
255
+ key = yield this.subtleCrypto.importKey(keyFormat, secretBuf, importAlgorithm.importKey, false, ['sign']);
256
+ }
257
+ catch (e) {
258
+ console.error(`JWT.sign(): Caught error while importing ${alg} key: format=${keyFormat}, importAlgorithm: ${JSON.stringify(importAlgorithm.importKey)}`);
259
+ console.error(e);
260
+ throw e;
261
+ }
262
+ let messageAsUint8Array = utils_1.Utils.utf8ToUint8Array(partialToken);
263
+ if (!this.subtleCrypto)
264
+ throw new Error(`Not supported: No Subtle Crypto support`);
265
+ let signature;
266
+ try {
267
+ signature = yield this.subtleCrypto.sign(importAlgorithm.operation, key, messageAsUint8Array);
268
+ }
269
+ catch (e) {
270
+ console.error(`JWT.sign(): Caught error while signing token:`);
271
+ console.error(e);
272
+ throw e;
273
+ }
274
+ // TODO Test
275
+ let signatureAsBase64 = base64url_1.Base64URL.stringify(new Uint8Array(signature));
276
+ let token = `${partialToken}.${signatureAsBase64}`;
277
+ return token;
278
+ });
279
+ }
280
+ ;
281
+ _decode(token) {
282
+ let parts = token.split('.');
283
+ if (parts.length !== 3)
284
+ throw new Error(`Invalid token '${token}': must have 3 parts separated by '.'`);
285
+ return {
286
+ encodedHeader: parts[0],
287
+ encodedPayload: parts[1],
288
+ signature: parts[2],
289
+ header: JSON.parse(this._decodeBase64URL(parts[0])),
290
+ payload: JSON.parse(this._decodeBase64URL(parts[1])),
291
+ };
292
+ }
293
+ ;
294
+ _decodeBase64URL(string) {
295
+ string = string.replace(/-/g, '+').replace(/_/g, '/');
296
+ switch (string.length % 4) {
297
+ case 0:
298
+ break;
299
+ case 2:
300
+ string += '==';
301
+ break;
302
+ case 3:
303
+ string += '=';
304
+ break;
305
+ default:
306
+ throw new Error(`Illegal Base64URL string '${string}'`);
307
+ }
308
+ // TODO Use shim or document incompatible browsers
309
+ return decodeURIComponent(escape(atob(string)));
310
+ }
311
+ }
312
+ exports.WebCryptoJWT = WebCryptoJWT;
313
+ //# sourceMappingURL=webcrypto-jwt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webcrypto-jwt.js","sourceRoot":"","sources":["../../../src/browser/webcrypto-jwt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare function validateExpiry(exp: number, now: number, policy: 'ignore' | 'when-present' | 'force'): void;
1
+ export declare function validateExpiry(exp: number, now: number, policy: 'ignore' | 'when-present' | 'force'): void;
@@ -1,25 +1,24 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateExpiry = void 0;
4
- function validateExpiry(exp, now, policy) {
5
- // Define acceptable policies
6
- var supportedPolicies = [
7
- 'when-present', 'force', 'ignore'
8
- ];
9
- // Set defaults
10
- policy = policy || 'when-present';
11
- now = now || Date.now();
12
- if (!supportedPolicies.includes(policy))
13
- throw new Error("Unsupported 'exp' validation strategy '".concat(policy, "'"));
14
- if (policy !== 'ignore') {
15
- if (typeof exp !== 'undefined') {
16
- if (exp * 1000 < now)
17
- throw new Error("Token is expired");
18
- }
19
- else if (policy === 'force') {
20
- throw new Error("Non-expiring tokens are not acceptable");
21
- }
22
- }
23
- }
24
- exports.validateExpiry = validateExpiry;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateExpiry = validateExpiry;
4
+ function validateExpiry(exp, now, policy) {
5
+ // Define acceptable policies
6
+ const supportedPolicies = [
7
+ 'when-present', 'force', 'ignore'
8
+ ];
9
+ // Set defaults
10
+ policy = policy || 'when-present';
11
+ now = now || Date.now();
12
+ if (!supportedPolicies.includes(policy))
13
+ throw new Error(`Unsupported 'exp' validation strategy '${policy}'`);
14
+ if (policy !== 'ignore') {
15
+ if (typeof exp !== 'undefined') {
16
+ if (exp * 1000 < now)
17
+ throw new Error(`Token is expired`);
18
+ }
19
+ else if (policy === 'force') {
20
+ throw new Error(`Non-expiring tokens are not acceptable`);
21
+ }
22
+ }
23
+ }
25
24
  //# sourceMappingURL=expiry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expiry.js","sourceRoot":"","sources":["../../../src/common/expiry.ts"],"names":[],"mappings":";;AAAA,wCAwBC;AAxBD,SAAgB,cAAc,CAAC,GAAY,EAAE,GAAY,EAAE,MAA4C;IAEnG,6BAA6B;IAE7B,MAAM,iBAAiB,GAAG;QACtB,cAAc,EAAE,OAAO,EAAE,QAAQ;KACpC,CAAC;IAEF,eAAe;IAEf,MAAM,GAAG,MAAM,IAAI,cAAc,CAAC;IAClC,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAExB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,GAAG,CAAC,CAAC;IAEzE,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG;gBAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -1,2 +1,2 @@
1
- export * from './interface';
2
- export * from './expiry';
1
+ export * from './interface';
2
+ export * from './expiry';