@pagopa/io-react-native-jwt 0.4.1
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/LICENSE +20 -0
- package/README.md +145 -0
- package/android/build.gradle +97 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/com/pagopa/ioreactnativejwt/IoReactNativeJwtModule.kt +114 -0
- package/android/src/main/java/com/pagopa/ioreactnativejwt/IoReactNativeJwtPackage.kt +17 -0
- package/android/src/main/java/com/pagopa/ioreactnativejwt/Utils.kt +95 -0
- package/ios/ASN1DERParsing.swift +226 -0
- package/ios/IoReactNativeJwt-Bridging-Header.h +2 -0
- package/ios/IoReactNativeJwt.mm +28 -0
- package/ios/IoReactNativeJwt.swift +156 -0
- package/ios/IoReactNativeJwt.xcodeproj/project.pbxproj +283 -0
- package/lib/commonjs/algorithms.js +39 -0
- package/lib/commonjs/algorithms.js.map +1 -0
- package/lib/commonjs/hash.js +17 -0
- package/lib/commonjs/hash.js.map +1 -0
- package/lib/commonjs/index.js +194 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/jwt_claims_set.js +112 -0
- package/lib/commonjs/jwt_claims_set.js.map +1 -0
- package/lib/commonjs/produce.js +140 -0
- package/lib/commonjs/produce.js.map +1 -0
- package/lib/commonjs/sign.js +159 -0
- package/lib/commonjs/sign.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/unsecured.js +118 -0
- package/lib/commonjs/unsecured.js.map +1 -0
- package/lib/commonjs/utils/asn1.js +37 -0
- package/lib/commonjs/utils/asn1.js.map +1 -0
- package/lib/commonjs/utils/base64.js +43 -0
- package/lib/commonjs/utils/base64.js.map +1 -0
- package/lib/commonjs/utils/errors.js +214 -0
- package/lib/commonjs/utils/errors.js.map +1 -0
- package/lib/commonjs/utils/is_object.js +23 -0
- package/lib/commonjs/utils/is_object.js.map +1 -0
- package/lib/commonjs/utils/proxy.js +17 -0
- package/lib/commonjs/utils/proxy.js.map +1 -0
- package/lib/commonjs/utils/secs.js +61 -0
- package/lib/commonjs/utils/secs.js.map +1 -0
- package/lib/module/algorithms.js +29 -0
- package/lib/module/algorithms.js.map +1 -0
- package/lib/module/hash.js +11 -0
- package/lib/module/hash.js.map +1 -0
- package/lib/module/index.js +115 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/jwt_claims_set.js +103 -0
- package/lib/module/jwt_claims_set.js.map +1 -0
- package/lib/module/produce.js +131 -0
- package/lib/module/produce.js.map +1 -0
- package/lib/module/sign.js +153 -0
- package/lib/module/sign.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/unsecured.js +110 -0
- package/lib/module/unsecured.js.map +1 -0
- package/lib/module/utils/asn1.js +31 -0
- package/lib/module/utils/asn1.js.map +1 -0
- package/lib/module/utils/base64.js +36 -0
- package/lib/module/utils/base64.js.map +1 -0
- package/lib/module/utils/errors.js +200 -0
- package/lib/module/utils/errors.js.map +1 -0
- package/lib/module/utils/is_object.js +17 -0
- package/lib/module/utils/is_object.js.map +1 -0
- package/lib/module/utils/proxy.js +10 -0
- package/lib/module/utils/proxy.js.map +1 -0
- package/lib/module/utils/secs.js +53 -0
- package/lib/module/utils/secs.js.map +1 -0
- package/lib/typescript/algorithms.d.ts +5 -0
- package/lib/typescript/algorithms.d.ts.map +1 -0
- package/lib/typescript/hash.d.ts +5 -0
- package/lib/typescript/hash.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +93 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/jwt_claims_set.d.ts +4 -0
- package/lib/typescript/jwt_claims_set.d.ts.map +1 -0
- package/lib/typescript/produce.d.ts +55 -0
- package/lib/typescript/produce.d.ts.map +1 -0
- package/lib/typescript/sign.d.ts +61 -0
- package/lib/typescript/sign.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +172 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/lib/typescript/unsecured.d.ts +64 -0
- package/lib/typescript/unsecured.d.ts.map +1 -0
- package/lib/typescript/utils/asn1.d.ts +2 -0
- package/lib/typescript/utils/asn1.d.ts.map +1 -0
- package/lib/typescript/utils/base64.d.ts +4 -0
- package/lib/typescript/utils/base64.d.ts.map +1 -0
- package/lib/typescript/utils/errors.d.ts +157 -0
- package/lib/typescript/utils/errors.d.ts.map +1 -0
- package/lib/typescript/utils/is_object.d.ts +2 -0
- package/lib/typescript/utils/is_object.d.ts.map +1 -0
- package/lib/typescript/utils/proxy.d.ts +2 -0
- package/lib/typescript/utils/proxy.d.ts.map +1 -0
- package/lib/typescript/utils/secs.d.ts +4 -0
- package/lib/typescript/utils/secs.d.ts.map +1 -0
- package/package.json +170 -0
- package/pagopa-io-react-native-jwt.podspec +44 -0
- package/src/algorithms.ts +46 -0
- package/src/hash.ts +10 -0
- package/src/index.tsx +120 -0
- package/src/jwt_claims_set.ts +194 -0
- package/src/produce.ts +109 -0
- package/src/sign.ts +180 -0
- package/src/types.ts +203 -0
- package/src/unsecured.ts +127 -0
- package/src/utils/asn1.ts +36 -0
- package/src/utils/base64.ts +37 -0
- package/src/utils/errors.ts +206 -0
- package/src/utils/is_object.ts +20 -0
- package/src/utils/proxy.ts +15 -0
- package/src/utils/secs.ts +58 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.supportedAlgorithms = exports.isAlgSupported = exports.getKtyFromAlg = exports.getCoordinateOctetLength = void 0;
|
|
7
|
+
var _errors = require("./utils/errors");
|
|
8
|
+
const supportedAlgorithms = ['RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512', 'ES256', 'ES384', 'ES512'];
|
|
9
|
+
exports.supportedAlgorithms = supportedAlgorithms;
|
|
10
|
+
const isAlgSupported = alg => supportedAlgorithms.includes(alg.toUpperCase());
|
|
11
|
+
exports.isAlgSupported = isAlgSupported;
|
|
12
|
+
const getKtyFromAlg = alg => {
|
|
13
|
+
switch (alg.slice(0, 2)) {
|
|
14
|
+
case 'RS':
|
|
15
|
+
case 'PS':
|
|
16
|
+
return 'RSA';
|
|
17
|
+
case 'ES':
|
|
18
|
+
return 'EC';
|
|
19
|
+
default:
|
|
20
|
+
throw new _errors.JOSENotSupported('Unsupported "alg" value for a JSON Web Key Set');
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// Coordinates length in bytes: bits/8
|
|
25
|
+
exports.getKtyFromAlg = getKtyFromAlg;
|
|
26
|
+
const getCoordinateOctetLength = alg => {
|
|
27
|
+
switch (alg.slice(2, 5)) {
|
|
28
|
+
case '256':
|
|
29
|
+
return 32;
|
|
30
|
+
case '384':
|
|
31
|
+
return 48;
|
|
32
|
+
case '512':
|
|
33
|
+
return 66;
|
|
34
|
+
default:
|
|
35
|
+
throw new _errors.JOSENotSupported('Unsupported "alg" value for a JSON Web Key Set');
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.getCoordinateOctetLength = getCoordinateOctetLength;
|
|
39
|
+
//# sourceMappingURL=algorithms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_errors","require","supportedAlgorithms","exports","isAlgSupported","alg","includes","toUpperCase","getKtyFromAlg","slice","JOSENotSupported","getCoordinateOctetLength"],"sourceRoot":"../../src","sources":["algorithms.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEO,MAAMC,mBAAmB,GAAG,CACjC,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,CACR;AAACC,OAAA,CAAAD,mBAAA,GAAAA,mBAAA;AAEK,MAAME,cAAc,GAAIC,GAAW,IACxCH,mBAAmB,CAACI,QAAQ,CAACD,GAAG,CAACE,WAAW,CAAC,CAAC,CAAC;AAACJ,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAE3C,MAAMI,aAAa,GAAIH,GAAW,IAAK;EAC5C,QAAQA,GAAG,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACrB,KAAK,IAAI;IACT,KAAK,IAAI;MACP,OAAO,KAAK;IACd,KAAK,IAAI;MACP,OAAO,IAAI;IACb;MACE,MAAM,IAAIC,wBAAgB,CACxB,gDACF,CAAC;EACL;AACF,CAAC;;AAED;AAAAP,OAAA,CAAAK,aAAA,GAAAA,aAAA;AACO,MAAMG,wBAAwB,GAAIN,GAAW,IAAK;EACvD,QAAQA,GAAG,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACrB,KAAK,KAAK;MACR,OAAO,EAAE;IACX,KAAK,KAAK;MACR,OAAO,EAAE;IACX,KAAK,KAAK;MACR,OAAO,EAAE;IACX;MACE,MAAM,IAAIC,wBAAgB,CACxB,gDACF,CAAC;EACL;AACF,CAAC;AAACP,OAAA,CAAAQ,wBAAA,GAAAA,wBAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.sha256ToBase64 = void 0;
|
|
7
|
+
var _base = require("./utils/base64");
|
|
8
|
+
var _proxy = require("./utils/proxy");
|
|
9
|
+
/**
|
|
10
|
+
* Return base64 encoded SHA256 hash of input string
|
|
11
|
+
*/
|
|
12
|
+
const sha256ToBase64 = async toHash => {
|
|
13
|
+
let hash = await _proxy.IoReactNativeJwt.sha256(toHash);
|
|
14
|
+
return (0, _base.removePadding)(hash);
|
|
15
|
+
};
|
|
16
|
+
exports.sha256ToBase64 = sha256ToBase64;
|
|
17
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_base","require","_proxy","sha256ToBase64","toHash","hash","IoReactNativeJwt","sha256","removePadding","exports"],"sourceRoot":"../../src","sources":["hash.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACO,MAAME,cAAc,GAAG,MAAOC,MAAc,IAAsB;EACvE,IAAIC,IAAI,GAAG,MAAMC,uBAAgB,CAACC,MAAM,CAACH,MAAM,CAAC;EAChD,OAAO,IAAAI,mBAAa,EAACH,IAAI,CAAC;AAC5B,CAAC;AAACI,OAAA,CAAAN,cAAA,GAAAA,cAAA"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
decode: true,
|
|
8
|
+
isSignatureValid: true,
|
|
9
|
+
verify: true,
|
|
10
|
+
thumbprint: true,
|
|
11
|
+
derToJose: true,
|
|
12
|
+
encodeBase64: true,
|
|
13
|
+
decodeBase64: true,
|
|
14
|
+
sha256ToBase64: true
|
|
15
|
+
};
|
|
16
|
+
exports.decode = void 0;
|
|
17
|
+
Object.defineProperty(exports, "decodeBase64", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () {
|
|
20
|
+
return _base.decodeBase64;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports, "derToJose", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () {
|
|
26
|
+
return _asn.derToJose;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(exports, "encodeBase64", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () {
|
|
32
|
+
return _base.encodeBase64;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
exports.isSignatureValid = void 0;
|
|
36
|
+
Object.defineProperty(exports, "sha256ToBase64", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _hash.sha256ToBase64;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
exports.verify = exports.thumbprint = void 0;
|
|
43
|
+
var _jwt_claims_set = _interopRequireDefault(require("./jwt_claims_set"));
|
|
44
|
+
var _errors = require("./utils/errors");
|
|
45
|
+
var _proxy = require("./utils/proxy");
|
|
46
|
+
var _sign = require("./sign");
|
|
47
|
+
Object.keys(_sign).forEach(function (key) {
|
|
48
|
+
if (key === "default" || key === "__esModule") return;
|
|
49
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
50
|
+
if (key in exports && exports[key] === _sign[key]) return;
|
|
51
|
+
Object.defineProperty(exports, key, {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function () {
|
|
54
|
+
return _sign[key];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
var _produce = require("./produce");
|
|
59
|
+
Object.keys(_produce).forEach(function (key) {
|
|
60
|
+
if (key === "default" || key === "__esModule") return;
|
|
61
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
62
|
+
if (key in exports && exports[key] === _produce[key]) return;
|
|
63
|
+
Object.defineProperty(exports, key, {
|
|
64
|
+
enumerable: true,
|
|
65
|
+
get: function () {
|
|
66
|
+
return _produce[key];
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
var _unsecured = require("./unsecured");
|
|
71
|
+
Object.keys(_unsecured).forEach(function (key) {
|
|
72
|
+
if (key === "default" || key === "__esModule") return;
|
|
73
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
74
|
+
if (key in exports && exports[key] === _unsecured[key]) return;
|
|
75
|
+
Object.defineProperty(exports, key, {
|
|
76
|
+
enumerable: true,
|
|
77
|
+
get: function () {
|
|
78
|
+
return _unsecured[key];
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
var _asn = require("./utils/asn1");
|
|
83
|
+
var _base = require("./utils/base64");
|
|
84
|
+
var _hash = require("./hash");
|
|
85
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
86
|
+
/**
|
|
87
|
+
* Decode the JWT without validation.
|
|
88
|
+
*
|
|
89
|
+
* @example Usage with a public JWK encoded RSA key
|
|
90
|
+
*
|
|
91
|
+
* ```js
|
|
92
|
+
* const jwt =
|
|
93
|
+
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
94
|
+
*
|
|
95
|
+
* const { payload, protectedHeader } = await decode(jwt)
|
|
96
|
+
*
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @param jwt JSON Web Token value (encoded as JWS).
|
|
100
|
+
*/
|
|
101
|
+
const decode = token => _sign.SignJWT.decode(token);
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Verifies the JWS signature
|
|
105
|
+
*
|
|
106
|
+
* @example Usage with a public JWK encoded RSA key
|
|
107
|
+
*
|
|
108
|
+
* ```js
|
|
109
|
+
* const jwk = {
|
|
110
|
+
* crv: 'P-256',
|
|
111
|
+
* kty: 'EC',
|
|
112
|
+
* x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
|
|
113
|
+
* y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
|
|
114
|
+
* }
|
|
115
|
+
* const jwt =
|
|
116
|
+
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
117
|
+
*
|
|
118
|
+
* const isSignatureValid = await verify(jwt, jwk)
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* @param jwt JSON Web Token value (encoded as JWS).
|
|
122
|
+
* @param key Public key to verify the JWT in JWK format.
|
|
123
|
+
*/
|
|
124
|
+
exports.decode = decode;
|
|
125
|
+
const isSignatureValid = (token, jwk) => _proxy.IoReactNativeJwt.verify(token, jwk);
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Verifies the JWT format (to be a JWS Compact format), verifies the JWS signature, validates the
|
|
129
|
+
* JWT Claims Set.
|
|
130
|
+
*
|
|
131
|
+
* @example Usage with a public JWK encoded RSA key
|
|
132
|
+
*
|
|
133
|
+
* ```js
|
|
134
|
+
* const jwk = {
|
|
135
|
+
* crv: 'P-256',
|
|
136
|
+
* kty: 'EC',
|
|
137
|
+
* x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
|
|
138
|
+
* y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
|
|
139
|
+
* }
|
|
140
|
+
* const jwt =
|
|
141
|
+
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
142
|
+
*
|
|
143
|
+
* const { payload, protectedHeader } = await verify(jwt, jwk, {
|
|
144
|
+
* typ: 'entity-statement+jwt',
|
|
145
|
+
* requiredClaims: ['iss', 'sub', 'metadata'],
|
|
146
|
+
* })
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @param jwt JSON Web Token value (encoded as JWS).
|
|
150
|
+
* @param key Public key to verify the JWT in JWK format.
|
|
151
|
+
* @param options JWT Decryption and JWT Claims Set validation options.
|
|
152
|
+
*/
|
|
153
|
+
exports.isSignatureValid = isSignatureValid;
|
|
154
|
+
const verify = async function (token, jwk) {
|
|
155
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
156
|
+
const {
|
|
157
|
+
protectedHeader,
|
|
158
|
+
payload
|
|
159
|
+
} = await decode(token);
|
|
160
|
+
const signatureIsValid = await isSignatureValid(token, jwk);
|
|
161
|
+
if (signatureIsValid) {
|
|
162
|
+
const verifiedPayload = (0, _jwt_claims_set.default)(protectedHeader, payload, options);
|
|
163
|
+
return {
|
|
164
|
+
payload: verifiedPayload,
|
|
165
|
+
protectedHeader
|
|
166
|
+
};
|
|
167
|
+
} else {
|
|
168
|
+
throw new _errors.JWSSignatureVerificationFailed();
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Calculate JWK thumbprint
|
|
174
|
+
*
|
|
175
|
+
* @example Get JWK thumbprint
|
|
176
|
+
*
|
|
177
|
+
* ```js
|
|
178
|
+
* const jwk: JWK = {
|
|
179
|
+
* crv: 'P-256',
|
|
180
|
+
* kty: 'EC',
|
|
181
|
+
* x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
|
|
182
|
+
* y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
|
|
183
|
+
* };
|
|
184
|
+
|
|
185
|
+
* const thumbprint = await thumbprint(jwk)
|
|
186
|
+
*
|
|
187
|
+
* ```
|
|
188
|
+
*
|
|
189
|
+
* @param jwk JSON Web Key
|
|
190
|
+
*/
|
|
191
|
+
exports.verify = verify;
|
|
192
|
+
const thumbprint = jwk => _proxy.IoReactNativeJwt.thumbprint(jwk);
|
|
193
|
+
exports.thumbprint = thumbprint;
|
|
194
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_jwt_claims_set","_interopRequireDefault","require","_errors","_proxy","_sign","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_produce","_unsecured","_asn","_base","_hash","obj","__esModule","default","decode","token","SignJWT","isSignatureValid","jwk","IoReactNativeJwt","verify","options","arguments","length","undefined","protectedHeader","payload","signatureIsValid","verifiedPayload","jwtPayload","JWSSignatureVerificationFailed","thumbprint"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _errors = require("./utils/errors");
|
|
8
|
+
var _secs = _interopRequireWildcard(require("./utils/secs"));
|
|
9
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
10
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
11
|
+
/*
|
|
12
|
+
* This code comes from https://github.com/panva/jose
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const normalizeTyp = value => value.toLowerCase().replace(/^application\//, '');
|
|
16
|
+
const checkAudiencePresence = (audPayload, audOption) => {
|
|
17
|
+
if (typeof audPayload === 'string') {
|
|
18
|
+
return audOption.includes(audPayload);
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(audPayload)) {
|
|
21
|
+
/*
|
|
22
|
+
* Each principal intended to process the JWT MUST
|
|
23
|
+
* identify itself with a value in the audience claim
|
|
24
|
+
*/
|
|
25
|
+
return audOption.some(Set.prototype.has.bind(new Set(audPayload)));
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
};
|
|
29
|
+
var _default = function _default(protectedHeader, payload) {
|
|
30
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
31
|
+
const {
|
|
32
|
+
typ
|
|
33
|
+
} = options;
|
|
34
|
+
if (typ && (typeof protectedHeader.typ !== 'string' || normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {
|
|
35
|
+
throw new _errors.JWTClaimValidationFailed('unexpected "typ" JWT header value', 'typ', 'check_failed');
|
|
36
|
+
}
|
|
37
|
+
const {
|
|
38
|
+
requiredClaims = [],
|
|
39
|
+
issuer,
|
|
40
|
+
subject,
|
|
41
|
+
audience,
|
|
42
|
+
maxTokenAge
|
|
43
|
+
} = options;
|
|
44
|
+
if (maxTokenAge !== undefined) requiredClaims.push('iat');
|
|
45
|
+
if (audience !== undefined) requiredClaims.push('aud');
|
|
46
|
+
if (subject !== undefined) requiredClaims.push('sub');
|
|
47
|
+
if (issuer !== undefined) requiredClaims.push('iss');
|
|
48
|
+
for (const claim of new Set(requiredClaims.reverse())) {
|
|
49
|
+
if (!(claim in payload)) {
|
|
50
|
+
throw new _errors.JWTClaimValidationFailed(`missing required "${claim}" claim`, claim, 'missing');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (issuer && !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {
|
|
54
|
+
throw new _errors.JWTClaimValidationFailed('unexpected "iss" claim value', 'iss', 'check_failed');
|
|
55
|
+
}
|
|
56
|
+
if (subject && payload.sub !== subject) {
|
|
57
|
+
throw new _errors.JWTClaimValidationFailed('unexpected "sub" claim value', 'sub', 'check_failed');
|
|
58
|
+
}
|
|
59
|
+
if (audience && !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {
|
|
60
|
+
throw new _errors.JWTClaimValidationFailed('unexpected "aud" claim value', 'aud', 'check_failed');
|
|
61
|
+
}
|
|
62
|
+
let tolerance;
|
|
63
|
+
switch (typeof options.clockTolerance) {
|
|
64
|
+
case 'string':
|
|
65
|
+
tolerance = (0, _secs.default)(options.clockTolerance);
|
|
66
|
+
break;
|
|
67
|
+
case 'number':
|
|
68
|
+
tolerance = options.clockTolerance;
|
|
69
|
+
break;
|
|
70
|
+
case 'undefined':
|
|
71
|
+
tolerance = 0;
|
|
72
|
+
break;
|
|
73
|
+
default:
|
|
74
|
+
throw new TypeError('Invalid clockTolerance option type');
|
|
75
|
+
}
|
|
76
|
+
const {
|
|
77
|
+
currentDate
|
|
78
|
+
} = options;
|
|
79
|
+
const now = (0, _secs.epoch)(currentDate || new Date());
|
|
80
|
+
if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {
|
|
81
|
+
throw new _errors.JWTClaimValidationFailed('"iat" claim must be a number', 'iat', 'invalid');
|
|
82
|
+
}
|
|
83
|
+
if (payload.nbf !== undefined) {
|
|
84
|
+
if (typeof payload.nbf !== 'number') {
|
|
85
|
+
throw new _errors.JWTClaimValidationFailed('"nbf" claim must be a number', 'nbf', 'invalid');
|
|
86
|
+
}
|
|
87
|
+
if (payload.nbf > now + tolerance) {
|
|
88
|
+
throw new _errors.JWTClaimValidationFailed('"nbf" claim timestamp check failed', 'nbf', 'check_failed');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (payload.exp !== undefined) {
|
|
92
|
+
if (typeof payload.exp !== 'number') {
|
|
93
|
+
throw new _errors.JWTClaimValidationFailed('"exp" claim must be a number', 'exp', 'invalid');
|
|
94
|
+
}
|
|
95
|
+
if (payload.exp <= now - tolerance) {
|
|
96
|
+
throw new _errors.JWTExpired('"exp" claim timestamp check failed', 'exp', 'check_failed');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (maxTokenAge) {
|
|
100
|
+
const age = now - payload.iat;
|
|
101
|
+
const max = typeof maxTokenAge === 'number' ? maxTokenAge : (0, _secs.default)(maxTokenAge);
|
|
102
|
+
if (age - tolerance > max) {
|
|
103
|
+
throw new _errors.JWTExpired('"iat" claim timestamp check failed (too far in the past)', 'iat', 'check_failed');
|
|
104
|
+
}
|
|
105
|
+
if (age < 0 - tolerance) {
|
|
106
|
+
throw new _errors.JWTClaimValidationFailed('"iat" claim timestamp check failed (it should be in the past)', 'iat', 'check_failed');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return payload;
|
|
110
|
+
};
|
|
111
|
+
exports.default = _default;
|
|
112
|
+
//# sourceMappingURL=jwt_claims_set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_errors","require","_secs","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","normalizeTyp","value","toLowerCase","replace","checkAudiencePresence","audPayload","audOption","includes","Array","isArray","some","Set","bind","_default","protectedHeader","payload","options","arguments","length","undefined","typ","JWTClaimValidationFailed","requiredClaims","issuer","subject","audience","maxTokenAge","push","claim","reverse","iss","sub","aud","tolerance","clockTolerance","secs","TypeError","currentDate","now","epoch","Date","iat","nbf","exp","JWTExpired","age","max","exports"],"sourceRoot":"../../src","sources":["jwt_claims_set.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ProduceJWT = void 0;
|
|
7
|
+
var _is_object = _interopRequireDefault(require("./utils/is_object"));
|
|
8
|
+
var _secs = _interopRequireWildcard(require("./utils/secs"));
|
|
9
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
10
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
/** Generic class for JWT producing. */
|
|
13
|
+
class ProduceJWT {
|
|
14
|
+
/** @param payload The JWT Claims Set object. */
|
|
15
|
+
constructor(payload) {
|
|
16
|
+
if (!(0, _is_object.default)(payload)) {
|
|
17
|
+
throw new TypeError('JWT Claims Set MUST be an object');
|
|
18
|
+
}
|
|
19
|
+
this._payload = payload;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Set "iss" (Issuer) Claim.
|
|
24
|
+
*
|
|
25
|
+
* @param issuer "Issuer" Claim value to set on the JWT Claims Set.
|
|
26
|
+
*/
|
|
27
|
+
setIssuer(issuer) {
|
|
28
|
+
this._payload = {
|
|
29
|
+
...this._payload,
|
|
30
|
+
iss: issuer
|
|
31
|
+
};
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Set "sub" (Subject) Claim.
|
|
37
|
+
*
|
|
38
|
+
* @param subject "sub" (Subject) Claim value to set on the JWT Claims Set.
|
|
39
|
+
*/
|
|
40
|
+
setSubject(subject) {
|
|
41
|
+
this._payload = {
|
|
42
|
+
...this._payload,
|
|
43
|
+
sub: subject
|
|
44
|
+
};
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Set "aud" (Audience) Claim.
|
|
50
|
+
*
|
|
51
|
+
* @param audience "aud" (Audience) Claim value to set on the JWT Claims Set.
|
|
52
|
+
*/
|
|
53
|
+
setAudience(audience) {
|
|
54
|
+
this._payload = {
|
|
55
|
+
...this._payload,
|
|
56
|
+
aud: audience
|
|
57
|
+
};
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Set "jti" (JWT ID) Claim.
|
|
63
|
+
*
|
|
64
|
+
* @param jwtId "jti" (JWT ID) Claim value to set on the JWT Claims Set.
|
|
65
|
+
*/
|
|
66
|
+
setJti(jwtId) {
|
|
67
|
+
this._payload = {
|
|
68
|
+
...this._payload,
|
|
69
|
+
jti: jwtId
|
|
70
|
+
};
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Set "nbf" (Not Before) Claim.
|
|
76
|
+
*
|
|
77
|
+
* @param input "nbf" (Not Before) Claim value to set on the JWT Claims Set. When number is passed
|
|
78
|
+
* that is used as a value, when string is passed it is resolved to a time span and added to the
|
|
79
|
+
* current timestamp.
|
|
80
|
+
*/
|
|
81
|
+
setNotBefore(input) {
|
|
82
|
+
if (typeof input === 'number') {
|
|
83
|
+
this._payload = {
|
|
84
|
+
...this._payload,
|
|
85
|
+
nbf: input
|
|
86
|
+
};
|
|
87
|
+
} else {
|
|
88
|
+
this._payload = {
|
|
89
|
+
...this._payload,
|
|
90
|
+
nbf: (0, _secs.epoch)(new Date()) + (0, _secs.default)(input)
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Set "exp" (Expiration Time) Claim.
|
|
98
|
+
*
|
|
99
|
+
* @param input "exp" (Expiration Time) Claim value to set on the JWT Claims Set. When number is
|
|
100
|
+
* passed that is used as a value, when string is passed it is resolved to a time span and added
|
|
101
|
+
* to the current timestamp.
|
|
102
|
+
*/
|
|
103
|
+
setExpirationTime(input) {
|
|
104
|
+
if (typeof input === 'number') {
|
|
105
|
+
this._payload = {
|
|
106
|
+
...this._payload,
|
|
107
|
+
exp: input
|
|
108
|
+
};
|
|
109
|
+
} else {
|
|
110
|
+
this._payload = {
|
|
111
|
+
...this._payload,
|
|
112
|
+
exp: (0, _secs.epoch)(new Date()) + (0, _secs.default)(input)
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return this;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Set "iat" (Issued At) Claim.
|
|
120
|
+
*
|
|
121
|
+
* @param input "iat" (Issued At) Claim value to set on the JWT Claims Set. Default is current
|
|
122
|
+
* timestamp.
|
|
123
|
+
*/
|
|
124
|
+
setIssuedAt(input) {
|
|
125
|
+
if (typeof input === 'undefined') {
|
|
126
|
+
this._payload = {
|
|
127
|
+
...this._payload,
|
|
128
|
+
iat: (0, _secs.epoch)(new Date())
|
|
129
|
+
};
|
|
130
|
+
} else {
|
|
131
|
+
this._payload = {
|
|
132
|
+
...this._payload,
|
|
133
|
+
iat: input
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.ProduceJWT = ProduceJWT;
|
|
140
|
+
//# sourceMappingURL=produce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_is_object","_interopRequireDefault","require","_secs","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ProduceJWT","constructor","payload","isObject","TypeError","_payload","setIssuer","issuer","iss","setSubject","subject","sub","setAudience","audience","aud","setJti","jwtId","jti","setNotBefore","input","nbf","epoch","Date","secs","setExpirationTime","exp","setIssuedAt","iat","exports"],"sourceRoot":"../../src","sources":["produce.ts"],"mappings":"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"}
|