@pagopa/io-react-native-jwt 0.4.1 → 0.6.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.
- package/README.md +14 -0
- package/android/src/main/java/com/pagopa/ioreactnativejwt/IoReactNativeJwtModule.kt +35 -15
- package/ios/IoReactNativeJwt.mm +6 -0
- package/ios/IoReactNativeJwt.swift +63 -0
- package/lib/commonjs/index.js +42 -125
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/jwe/index.js +41 -0
- package/lib/commonjs/jwe/index.js.map +1 -0
- package/lib/commonjs/jwk/index.js +54 -0
- package/lib/commonjs/jwk/index.js.map +1 -0
- package/lib/commonjs/jwt/index.js +217 -0
- package/lib/commonjs/jwt/index.js.map +1 -0
- package/lib/commonjs/{jwt_claims_set.js → jwt/jwt_claims_set.js} +2 -2
- package/lib/commonjs/jwt/jwt_claims_set.js.map +1 -0
- package/lib/commonjs/{produce.js → jwt/produce.js} +2 -2
- package/lib/commonjs/jwt/produce.js.map +1 -0
- package/lib/commonjs/{sign.js → jwt/sign.js} +4 -4
- package/lib/commonjs/jwt/sign.js.map +1 -0
- package/lib/commonjs/{unsecured.js → jwt/unsecured.js} +2 -2
- package/lib/commonjs/jwt/unsecured.js.map +1 -0
- package/lib/commonjs/types.js +63 -0
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/errors.js +50 -1
- package/lib/commonjs/utils/errors.js.map +1 -1
- package/lib/module/index.js +6 -111
- package/lib/module/index.js.map +1 -1
- package/lib/module/jwe/index.js +35 -0
- package/lib/module/jwe/index.js.map +1 -0
- package/lib/module/jwk/index.js +47 -0
- package/lib/module/jwk/index.js.map +1 -0
- package/lib/module/jwt/index.js +138 -0
- package/lib/module/jwt/index.js.map +1 -0
- package/lib/module/{jwt_claims_set.js → jwt/jwt_claims_set.js} +2 -2
- package/lib/module/jwt/jwt_claims_set.js.map +1 -0
- package/lib/module/{produce.js → jwt/produce.js} +2 -2
- package/lib/module/jwt/produce.js.map +1 -0
- package/lib/module/{sign.js → jwt/sign.js} +4 -4
- package/lib/module/jwt/sign.js.map +1 -0
- package/lib/module/{unsecured.js → jwt/unsecured.js} +2 -2
- package/lib/module/jwt/unsecured.js.map +1 -0
- package/lib/module/types.js +56 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/errors.js +46 -0
- package/lib/module/utils/errors.js.map +1 -1
- package/lib/typescript/index.d.ts +6 -89
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/jwe/index.d.ts +32 -0
- package/lib/typescript/jwe/index.d.ts.map +1 -0
- package/lib/typescript/jwk/index.d.ts +30 -0
- package/lib/typescript/jwk/index.d.ts.map +1 -0
- package/lib/typescript/jwt/index.d.ts +102 -0
- package/lib/typescript/jwt/index.d.ts.map +1 -0
- package/lib/typescript/{jwt_claims_set.d.ts → jwt/jwt_claims_set.d.ts} +1 -1
- package/lib/typescript/jwt/jwt_claims_set.d.ts.map +1 -0
- package/lib/typescript/{produce.d.ts → jwt/produce.d.ts} +1 -1
- package/lib/typescript/jwt/produce.d.ts.map +1 -0
- package/lib/typescript/{sign.d.ts → jwt/sign.d.ts} +1 -1
- package/lib/typescript/jwt/sign.d.ts.map +1 -0
- package/lib/typescript/{unsecured.d.ts → jwt/unsecured.d.ts} +1 -1
- package/lib/typescript/jwt/unsecured.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +348 -46
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils/errors.d.ts +37 -0
- package/lib/typescript/utils/errors.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/index.tsx +6 -116
- package/src/jwe/index.ts +45 -0
- package/src/jwk/index.ts +51 -0
- package/src/jwt/index.ts +148 -0
- package/src/{jwt_claims_set.ts → jwt/jwt_claims_set.ts} +3 -3
- package/src/{produce.ts → jwt/produce.ts} +3 -3
- package/src/{sign.ts → jwt/sign.ts} +5 -5
- package/src/{unsecured.ts → jwt/unsecured.ts} +3 -3
- package/src/types.ts +67 -48
- package/src/utils/errors.ts +49 -0
- package/lib/commonjs/jwt_claims_set.js.map +0 -1
- package/lib/commonjs/produce.js.map +0 -1
- package/lib/commonjs/sign.js.map +0 -1
- package/lib/commonjs/unsecured.js.map +0 -1
- package/lib/module/jwt_claims_set.js.map +0 -1
- package/lib/module/produce.js.map +0 -1
- package/lib/module/sign.js.map +0 -1
- package/lib/module/unsecured.js.map +0 -1
- package/lib/typescript/jwt_claims_set.d.ts.map +0 -1
- package/lib/typescript/produce.d.ts.map +0 -1
- package/lib/typescript/sign.d.ts.map +0 -1
- package/lib/typescript/unsecured.d.ts.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { IoReactNativeJwt } from '../utils/proxy';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The EncryptJwe class is used to build and encrypt Flattened JWE objects.
|
|
5
|
+
*
|
|
6
|
+
* @example Usage
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const jwe = await new EncryptJwe(
|
|
10
|
+
* new TextEncoder().encode('It’s a dangerous business, Frodo, going out your door.', { alg: 'RSA-OAEP-256', enc: 'A256GCM' }),
|
|
11
|
+
* )
|
|
12
|
+
* .encrypt(publicKey)
|
|
13
|
+
*
|
|
14
|
+
* console.log(jwe)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class EncryptJwe {
|
|
18
|
+
/** @param plaintext String representation of the plaintext to encrypt. */
|
|
19
|
+
/** @param header JWE header with alg and enc parameters. */
|
|
20
|
+
constructor(plaintext, header) {
|
|
21
|
+
this._plaintext = plaintext;
|
|
22
|
+
this._protectedHeader = header;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Encrypts and resolves the value of the Flattened JWE object.
|
|
27
|
+
*
|
|
28
|
+
* @param key Public Key or Secret to encrypt the JWE with. See
|
|
29
|
+
*/
|
|
30
|
+
async encrypt(key) {
|
|
31
|
+
let jwe = await IoReactNativeJwt.enc(this._plaintext, this._protectedHeader, key);
|
|
32
|
+
return jwe;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["IoReactNativeJwt","EncryptJwe","constructor","plaintext","header","_plaintext","_protectedHeader","encrypt","key","jwe","enc"],"sourceRoot":"../../../src","sources":["jwe/index.ts"],"mappings":"AACA,SAASA,gBAAgB,QAAQ,gBAAgB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,CAAC;EAItB;EACA;EACAC,WAAWA,CACTC,SAAiB,EACjBC,MAA0D,EAC1D;IACA,IAAI,CAACC,UAAU,GAAGF,SAAS;IAC3B,IAAI,CAACG,gBAAgB,GAAGF,MAAM;EAChC;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMG,OAAOA,CAACC,GAAQ,EAAmB;IACvC,IAAIC,GAAG,GAAG,MAAMT,gBAAgB,CAACU,GAAG,CAClC,IAAI,CAACL,UAAU,EACf,IAAI,CAACC,gBAAgB,EACrBE,GACF,CAAC;IACD,OAAOC,GAAG;EACZ;AACF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { IoReactNativeJwt } from '../utils/proxy';
|
|
2
|
+
import { WithJWKS } from '../types';
|
|
3
|
+
import { JWKSetInvalid } from '../utils/errors';
|
|
4
|
+
import { decode } from '..';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Calculate JWK thumbprint
|
|
8
|
+
*
|
|
9
|
+
* @example Get JWK thumbprint
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const jwk: JWK = {
|
|
13
|
+
* crv: 'P-256',
|
|
14
|
+
* kty: 'EC',
|
|
15
|
+
* x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
|
|
16
|
+
* y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
|
|
17
|
+
* };
|
|
18
|
+
|
|
19
|
+
* const thumbprint = await thumbprint(jwk)
|
|
20
|
+
*
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @param jwk JSON Web Key
|
|
24
|
+
*/
|
|
25
|
+
export const thumbprint = jwk => IoReactNativeJwt.thumbprint(jwk);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Returns a JSON Web Key Set (JWKS) downloaded from a remote endpoint,
|
|
29
|
+
* that is, for example, an OAuth 2.0 or OIDC jwks_uri.
|
|
30
|
+
*
|
|
31
|
+
* @param url URL string to fetch the JSON Web Key Set from.
|
|
32
|
+
* @param appFetch fetch function (optional)
|
|
33
|
+
*/
|
|
34
|
+
export const getRemoteJWKSet = async function (url) {
|
|
35
|
+
let appFetch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : fetch;
|
|
36
|
+
let response = await appFetch(url);
|
|
37
|
+
if (response.status === 200) {
|
|
38
|
+
const jwt = await response.text();
|
|
39
|
+
const {
|
|
40
|
+
payload
|
|
41
|
+
} = await decode(jwt);
|
|
42
|
+
const parsedPayload = WithJWKS.parse(payload);
|
|
43
|
+
return parsedPayload.jwks.keys;
|
|
44
|
+
}
|
|
45
|
+
throw new JWKSetInvalid(`Unable to obtain JWKSet from given url. Response status: ${response.status}`);
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["IoReactNativeJwt","WithJWKS","JWKSetInvalid","decode","thumbprint","jwk","getRemoteJWKSet","url","appFetch","arguments","length","undefined","fetch","response","status","jwt","text","payload","parsedPayload","parse","jwks","keys"],"sourceRoot":"../../../src","sources":["jwk/index.ts"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,gBAAgB;AACjD,SAASC,QAAQ,QAAa,UAAU;AACxC,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,MAAM,QAAQ,IAAI;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAIC,GAAQ,IACjCL,gBAAgB,CAACI,UAAU,CAACC,GAAG,CAAC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAG,eAAAA,CAC7BC,GAAW,EAEQ;EAAA,IADnBC,QAA8B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGG,KAAK;EAEtC,IAAIC,QAAQ,GAAG,MAAML,QAAQ,CAACD,GAAG,CAAC;EAElC,IAAIM,QAAQ,CAACC,MAAM,KAAK,GAAG,EAAE;IAC3B,MAAMC,GAAG,GAAG,MAAMF,QAAQ,CAACG,IAAI,CAAC,CAAC;IACjC,MAAM;MAAEC;IAAQ,CAAC,GAAG,MAAMd,MAAM,CAACY,GAAG,CAAC;IACrC,MAAMG,aAAa,GAAGjB,QAAQ,CAACkB,KAAK,CAACF,OAAO,CAAC;IAC7C,OAAOC,aAAa,CAACE,IAAI,CAACC,IAAI;EAChC;EAEA,MAAM,IAAInB,aAAa,CACpB,4DAA2DW,QAAQ,CAACC,MAAO,EAC9E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import jwtPayload from './jwt_claims_set';
|
|
2
|
+
import { JWKNotFound, JWSSignatureVerificationFailed } from '../utils/errors';
|
|
3
|
+
import { IoReactNativeJwt } from '../utils/proxy';
|
|
4
|
+
import { SignJWT } from './sign';
|
|
5
|
+
import { getKtyFromAlg } from '../algorithms';
|
|
6
|
+
export * from './produce';
|
|
7
|
+
export * from './sign';
|
|
8
|
+
export * from './unsecured';
|
|
9
|
+
export { derToJose } from '../utils/asn1';
|
|
10
|
+
export { encodeBase64, decodeBase64 } from '../utils/base64';
|
|
11
|
+
export { sha256ToBase64 } from '../hash';
|
|
12
|
+
/**
|
|
13
|
+
* Decode the JWT without validation.
|
|
14
|
+
*
|
|
15
|
+
* @example Usage with a public JWK encoded RSA key
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* const jwt =
|
|
19
|
+
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
20
|
+
*
|
|
21
|
+
* const { payload, protectedHeader } = await decode(jwt)
|
|
22
|
+
*
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @param jwt JSON Web Token value (encoded as JWS).
|
|
26
|
+
*/
|
|
27
|
+
export const decode = token => SignJWT.decode(token);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Verifies the JWS signature
|
|
31
|
+
*
|
|
32
|
+
* @example Usage with a public JWK encoded RSA key
|
|
33
|
+
*
|
|
34
|
+
* ```js
|
|
35
|
+
* const jwk = {
|
|
36
|
+
* crv: 'P-256',
|
|
37
|
+
* kty: 'EC',
|
|
38
|
+
* x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
|
|
39
|
+
* y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
|
|
40
|
+
* }
|
|
41
|
+
* const jwt =
|
|
42
|
+
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
43
|
+
*
|
|
44
|
+
* const isSignatureValid = await verify(jwt, jwk)
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @param jwt JSON Web Token value (encoded as JWS).
|
|
48
|
+
* @param key Public key to verify the JWT in JWK format.
|
|
49
|
+
*/
|
|
50
|
+
export const isSignatureValid = (token, jwk) => IoReactNativeJwt.verify(token, jwk);
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Verifies the JWT format (to be a JWS Compact format), verifies the JWS signature, validates the
|
|
54
|
+
* JWT Claims Set.
|
|
55
|
+
*
|
|
56
|
+
* @example Usage with a public JWK encoded RSA key
|
|
57
|
+
*
|
|
58
|
+
* ```js
|
|
59
|
+
* const jwk = {
|
|
60
|
+
* crv: 'P-256',
|
|
61
|
+
* kty: 'EC',
|
|
62
|
+
* x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
|
|
63
|
+
* y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
|
|
64
|
+
* }
|
|
65
|
+
* const jwt =
|
|
66
|
+
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
67
|
+
*
|
|
68
|
+
* const { payload, protectedHeader } = await verify(jwt, jwk, {
|
|
69
|
+
* typ: 'entity-statement+jwt',
|
|
70
|
+
* requiredClaims: ['iss', 'sub', 'metadata'],
|
|
71
|
+
* })
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* * @example Usage with a JWKSet
|
|
75
|
+
*
|
|
76
|
+
* ```js
|
|
77
|
+
* const wellKnownUrl = 'https://example.com/.well-known/openid-federation';
|
|
78
|
+
* const jwks = await getRemoteJWKSet(wellKnownUrl);
|
|
79
|
+
*
|
|
80
|
+
* const jwt =
|
|
81
|
+
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
82
|
+
*
|
|
83
|
+
* const { payload, protectedHeader } = await verify(jwt, jwks, {
|
|
84
|
+
* typ: 'entity-statement+jwt',
|
|
85
|
+
* requiredClaims: ['iss', 'sub', 'metadata'],
|
|
86
|
+
* })
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @param jwt JSON Web Token value (encoded as JWS).
|
|
90
|
+
* @param key Public key to verify the JWT in JWK format or JWKS (array of JWK).
|
|
91
|
+
* @param options JWT Decryption and JWT Claims Set validation options.
|
|
92
|
+
*/
|
|
93
|
+
export const verify = async function (token, jwk) {
|
|
94
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
95
|
+
const {
|
|
96
|
+
protectedHeader,
|
|
97
|
+
payload
|
|
98
|
+
} = await decode(token);
|
|
99
|
+
const selectedJwk = Array.isArray(jwk) ? getJwkFromHeader(protectedHeader, jwk) : jwk;
|
|
100
|
+
const signatureIsValid = await isSignatureValid(token, selectedJwk);
|
|
101
|
+
if (signatureIsValid) {
|
|
102
|
+
const verifiedPayload = jwtPayload(protectedHeader, payload, options);
|
|
103
|
+
return {
|
|
104
|
+
payload: verifiedPayload,
|
|
105
|
+
protectedHeader
|
|
106
|
+
};
|
|
107
|
+
} else {
|
|
108
|
+
throw new JWSSignatureVerificationFailed();
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Given the header of a JWT return the corresponding key from a JWKS.
|
|
114
|
+
*
|
|
115
|
+
* It uses the "alg" (JWS Algorithm) Header Parameter to determine the right JWK "kty" (Key Type),
|
|
116
|
+
* then proceeds to match the JWK "kid" (Key ID) with one found in the JWS Header Parameters (if
|
|
117
|
+
* there is one).
|
|
118
|
+
* Only a single public key must match the selection process.
|
|
119
|
+
*
|
|
120
|
+
* @param header JWT header
|
|
121
|
+
* @param jwks Json Web Key Set (JWKS)
|
|
122
|
+
*
|
|
123
|
+
*/
|
|
124
|
+
export const getJwkFromHeader = (header, jwks) => {
|
|
125
|
+
const {
|
|
126
|
+
alg,
|
|
127
|
+
kid
|
|
128
|
+
} = header;
|
|
129
|
+
if (alg && kid) {
|
|
130
|
+
const kty = getKtyFromAlg(alg);
|
|
131
|
+
const filteredJwks = jwks.find(el => el.kty === kty && el.kid === kid);
|
|
132
|
+
if (filteredJwks) {
|
|
133
|
+
return filteredJwks;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
throw new JWKNotFound(`No JWKs found that match alg:${alg} and kid:${kid}`);
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jwtPayload","JWKNotFound","JWSSignatureVerificationFailed","IoReactNativeJwt","SignJWT","getKtyFromAlg","derToJose","encodeBase64","decodeBase64","sha256ToBase64","decode","token","isSignatureValid","jwk","verify","options","arguments","length","undefined","protectedHeader","payload","selectedJwk","Array","isArray","getJwkFromHeader","signatureIsValid","verifiedPayload","header","jwks","alg","kid","kty","filteredJwks","find","el"],"sourceRoot":"../../../src","sources":["jwt/index.ts"],"mappings":"AAKA,OAAOA,UAAU,MAAM,kBAAkB;AACzC,SAASC,WAAW,EAAEC,8BAA8B,QAAQ,iBAAiB;AAC7E,SAASC,gBAAgB,QAAQ,gBAAgB;AACjD,SAASC,OAAO,QAAQ,QAAQ;AAEhC,SAASC,aAAa,QAAQ,eAAe;AAE7C,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,YAAY,EAAEC,YAAY,QAAQ,iBAAiB;AAC5D,SAASC,cAAc,QAAQ,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAIC,KAAa,IAAsBP,OAAO,CAACM,MAAM,CAACC,KAAK,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAACD,KAAa,EAAEE,GAAQ,KACtDV,gBAAgB,CAACW,MAAM,CAACH,KAAK,EAAEE,GAAG,CAAC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,GAAG,eAAAA,CACpBH,KAAa,EACbE,GAAgB,EAEa;EAAA,IAD7BE,OAAoC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEzC,MAAM;IAAEG,eAAe;IAAEC;EAAQ,CAAC,GAAG,MAAMV,MAAM,CAACC,KAAK,CAAC;EAExD,MAAMU,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACV,GAAG,CAAC,GAClCW,gBAAgB,CAACL,eAAe,EAAEN,GAAG,CAAC,GACtCA,GAAG;EAEP,MAAMY,gBAAgB,GAAG,MAAMb,gBAAgB,CAACD,KAAK,EAAEU,WAAW,CAAC;EACnE,IAAII,gBAAgB,EAAE;IACpB,MAAMC,eAAe,GAAG1B,UAAU,CAACmB,eAAe,EAAEC,OAAO,EAAEL,OAAO,CAAC;IACrE,OAAO;MAAEK,OAAO,EAAEM,eAAe;MAAEP;IAAgB,CAAC;EACtD,CAAC,MAAM;IACL,MAAM,IAAIjB,8BAA8B,CAAC,CAAC;EAC5C;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMsB,gBAAgB,GAAGA,CAC9BG,MAA2B,EAC3BC,IAAW,KACH;EACR,MAAM;IAAEC,GAAG;IAAEC;EAAI,CAAC,GAAGH,MAAM;EAC3B,IAAIE,GAAG,IAAIC,GAAG,EAAE;IACd,MAAMC,GAAG,GAAG1B,aAAa,CAACwB,GAAG,CAAC;IAC9B,MAAMG,YAAY,GAAGJ,IAAI,CAACK,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACH,GAAG,KAAKA,GAAG,IAAIG,EAAE,CAACJ,GAAG,KAAKA,GAAG,CAAC;IAExE,IAAIE,YAAY,EAAE;MAChB,OAAOA,YAAY;IACrB;EACF;EAEA,MAAM,IAAI/B,WAAW,CAAE,gCAA+B4B,GAAI,YAAWC,GAAI,EAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* This code comes from https://github.com/panva/jose
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { JWTClaimValidationFailed, JWTExpired } from '
|
|
6
|
-
import secs, { epoch } from '
|
|
5
|
+
import { JWTClaimValidationFailed, JWTExpired } from '../utils/errors';
|
|
6
|
+
import secs, { epoch } from '../utils/secs';
|
|
7
7
|
const normalizeTyp = value => value.toLowerCase().replace(/^application\//, '');
|
|
8
8
|
const checkAudiencePresence = (audPayload, audOption) => {
|
|
9
9
|
if (typeof audPayload === 'string') {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["JWTClaimValidationFailed","JWTExpired","secs","epoch","normalizeTyp","value","toLowerCase","replace","checkAudiencePresence","audPayload","audOption","includes","Array","isArray","some","Set","prototype","has","bind","protectedHeader","payload","options","arguments","length","undefined","typ","requiredClaims","issuer","subject","audience","maxTokenAge","push","claim","reverse","iss","sub","aud","tolerance","clockTolerance","TypeError","currentDate","now","Date","iat","nbf","exp","age","max"],"sourceRoot":"../../../src","sources":["jwt/jwt_claims_set.ts"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isObject","secs","epoch","ProduceJWT","constructor","payload","TypeError","_payload","setIssuer","issuer","iss","setSubject","subject","sub","setAudience","audience","aud","setJti","jwtId","jti","setNotBefore","input","nbf","Date","setExpirationTime","exp","setIssuedAt","iat"],"sourceRoot":"../../../src","sources":["jwt/produce.ts"],"mappings":"AACA,OAAOA,QAAQ,MAAM,oBAAoB;AACzC,OAAOC,IAAI,IAAIC,KAAK,QAAQ,eAAe;;AAE3C;AACA,OAAO,MAAMC,UAAU,CAAC;EAGtB;EACAC,WAAWA,CAACC,OAAmB,EAAE;IAC/B,IAAI,CAACL,QAAQ,CAACK,OAAO,CAAC,EAAE;MACtB,MAAM,IAAIC,SAAS,CAAC,kCAAkC,CAAC;IACzD;IACA,IAAI,CAACC,QAAQ,GAAGF,OAAO;EACzB;;EAEA;AACF;AACA;AACA;AACA;EACEG,SAASA,CAACC,MAAc,EAAE;IACxB,IAAI,CAACF,QAAQ,GAAG;MAAE,GAAG,IAAI,CAACA,QAAQ;MAAEG,GAAG,EAAED;IAAO,CAAC;IACjD,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACEE,UAAUA,CAACC,OAAe,EAAE;IAC1B,IAAI,CAACL,QAAQ,GAAG;MAAE,GAAG,IAAI,CAACA,QAAQ;MAAEM,GAAG,EAAED;IAAQ,CAAC;IAClD,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACEE,WAAWA,CAACC,QAA2B,EAAE;IACvC,IAAI,CAACR,QAAQ,GAAG;MAAE,GAAG,IAAI,CAACA,QAAQ;MAAES,GAAG,EAAED;IAAS,CAAC;IACnD,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACEE,MAAMA,CAACC,KAAa,EAAE;IACpB,IAAI,CAACX,QAAQ,GAAG;MAAE,GAAG,IAAI,CAACA,QAAQ;MAAEY,GAAG,EAAED;IAAM,CAAC;IAChD,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEE,YAAYA,CAACC,KAAsB,EAAE;IACnC,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,IAAI,CAACd,QAAQ,GAAG;QAAE,GAAG,IAAI,CAACA,QAAQ;QAAEe,GAAG,EAAED;MAAM,CAAC;IAClD,CAAC,MAAM;MACL,IAAI,CAACd,QAAQ,GAAG;QACd,GAAG,IAAI,CAACA,QAAQ;QAChBe,GAAG,EAAEpB,KAAK,CAAC,IAAIqB,IAAI,CAAC,CAAC,CAAC,GAAGtB,IAAI,CAACoB,KAAK;MACrC,CAAC;IACH;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEG,iBAAiBA,CAACH,KAAsB,EAAE;IACxC,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,IAAI,CAACd,QAAQ,GAAG;QAAE,GAAG,IAAI,CAACA,QAAQ;QAAEkB,GAAG,EAAEJ;MAAM,CAAC;IAClD,CAAC,MAAM;MACL,IAAI,CAACd,QAAQ,GAAG;QACd,GAAG,IAAI,CAACA,QAAQ;QAChBkB,GAAG,EAAEvB,KAAK,CAAC,IAAIqB,IAAI,CAAC,CAAC,CAAC,GAAGtB,IAAI,CAACoB,KAAK;MACrC,CAAC;IACH;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEK,WAAWA,CAACL,KAAc,EAAE;IAC1B,IAAI,OAAOA,KAAK,KAAK,WAAW,EAAE;MAChC,IAAI,CAACd,QAAQ,GAAG;QAAE,GAAG,IAAI,CAACA,QAAQ;QAAEoB,GAAG,EAAEzB,KAAK,CAAC,IAAIqB,IAAI,CAAC,CAAC;MAAE,CAAC;IAC9D,CAAC,MAAM;MACL,IAAI,CAAChB,QAAQ,GAAG;QAAE,GAAG,IAAI,CAACA,QAAQ;QAAEoB,GAAG,EAAEN;MAAM,CAAC;IAClD;IACA,OAAO,IAAI;EACb;AACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { JOSENotSupported, JWSInvalid, JWTInvalid } from '
|
|
1
|
+
import { JOSENotSupported, JWSInvalid, JWTInvalid } from '../utils/errors';
|
|
2
2
|
import { ProduceJWT } from './produce';
|
|
3
|
-
import { decodeBase64, encodeBase64, removePadding } from '
|
|
4
|
-
import { isAlgSupported } from '
|
|
5
|
-
import { derToJose } from '
|
|
3
|
+
import { decodeBase64, encodeBase64, removePadding } from '../utils/base64';
|
|
4
|
+
import { isAlgSupported } from '../algorithms';
|
|
5
|
+
import { derToJose } from '../utils/asn1';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* The SignJWT class is used to build and sign Compact JWS formatted JSON Web Tokens.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["JOSENotSupported","JWSInvalid","JWTInvalid","ProduceJWT","decodeBase64","encodeBase64","removePadding","isAlgSupported","derToJose","SignJWT","setProtectedHeader","protectedHeader","alg","_protectedHeader","toSign","JSON","stringify","payload","_payload","appendSignature","jwtWithoutSignature","signature","jwtDecoded","decodeJwtWithoutSignature","header","encodedJws","encodedHeader","encodedPayload","length","split","decoded","parse","decodedPayload","decode","jwt"],"sourceRoot":"../../../src","sources":["jwt/sign.ts"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { JWTInvalid } from '
|
|
1
|
+
import { JWTInvalid } from '../utils/errors';
|
|
2
2
|
import jwtPayload from './jwt_claims_set';
|
|
3
3
|
import { ProduceJWT } from './produce';
|
|
4
|
-
import { decodeBase64, encodeBase64 } from '
|
|
4
|
+
import { decodeBase64, encodeBase64 } from '../utils/base64';
|
|
5
5
|
/**
|
|
6
6
|
* The UnsecuredJWT class is a utility for dealing with `{ "alg": "none" }` Unsecured JWTs.
|
|
7
7
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["JWTInvalid","jwtPayload","ProduceJWT","decodeBase64","encodeBase64","UnsecuredJWT","encode","header","JSON","stringify","alg","payload","_payload","decode","jwt","options","encodedHeader","encodedPayload","signature","length","split","decoded","parse","Error","decodePayload","decodedPayload"],"sourceRoot":"../../../src","sources":["jwt/unsecured.ts"],"mappings":"AAMA,SAASA,UAAU,QAAQ,iBAAiB;AAC5C,OAAOC,UAAU,MAAM,kBAAkB;AACzC,SAASC,UAAU,QAAQ,WAAW;AACtC,SAASC,YAAY,EAAEC,YAAY,QAAQ,iBAAiB;AAO5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,SAASH,UAAU,CAAC;EAC3C;EACAI,MAAMA,CAAA,EAAW;IACf,MAAMC,MAAM,GAAGH,YAAY,CAACI,IAAI,CAACC,SAAS,CAAC;MAAEC,GAAG,EAAE;IAAO,CAAC,CAAC,CAAC;IAC5D,MAAMC,OAAO,GAAGP,YAAY,CAACI,IAAI,CAACC,SAAS,CAAC,IAAI,CAACG,QAAQ,CAAC,CAAC;IAE3D,OAAQ,GAAEL,MAAO,IAAGI,OAAQ,GAAE;EAChC;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOE,MAAMA,CACXC,GAAW,EACXC,OAAqC,EACpB;IACjB,IAAI,OAAOD,GAAG,KAAK,QAAQ,EAAE;MAC3B,MAAM,IAAId,UAAU,CAAC,gCAAgC,CAAC;IACxD;IACA,MAAM;MACJ,CAAC,EAAEgB,aAAa;MAChB,CAAC,EAAEC,cAAc;MACjB,CAAC,EAAEC,SAAS;MACZC;IACF,CAAC,GAAGL,GAAG,CAACM,KAAK,CAAC,GAAG,CAAC;IAElB,IAAID,MAAM,KAAK,CAAC,IAAID,SAAS,KAAK,EAAE,IAAI,CAACD,cAAc,EAAE;MACvD,MAAM,IAAIjB,UAAU,CAAC,uBAAuB,CAAC;IAC/C;IAEA,IAAIO,MAA2B;IAC/B,IAAI;MACF,IAAIc,OAAO,GAAGlB,YAAY,CAACa,aAAc,CAAC;MAC1CT,MAAM,GAAGC,IAAI,CAACc,KAAK,CAACD,OAAO,CAAC;MAC5B,IAAId,MAAM,CAACG,GAAG,KAAK,MAAM,EAAE,MAAM,IAAIa,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,MAAM;MACN,MAAM,IAAIvB,UAAU,CAAC,uBAAuB,CAAC;IAC/C;IAEA,IAAIW,OAAO,GAAGN,YAAY,CAACmB,aAAa,CAACP,cAAc,EAAEF,OAAO,CAAC;IAEjE,OAAO;MAAEJ,OAAO;MAAEJ;IAAO,CAAC;EAC5B;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOiB,aAAaA,CAClBV,GAAW,EACXC,OAAqC,EACzB;IACZ,IAAI,OAAOD,GAAG,KAAK,QAAQ,EAAE;MAC3B,MAAM,IAAId,UAAU,CAAC,gCAAgC,CAAC;IACxD;IACA,MAAM;MAAE,CAAC,EAAEiB,cAAc;MAAEE;IAAO,CAAC,GAAGL,GAAG,CAACM,KAAK,CAAC,GAAG,CAAC;IAEpD,IAAID,MAAM,KAAK,CAAC,IAAIF,cAAc,KAAK,EAAE,EAAE;MACzC,MAAM,IAAIjB,UAAU,CAAC,uBAAuB,CAAC;IAC/C;IAEA,IAAIyB,cAAc,GAAGtB,YAAY,CAACc,cAAe,CAAC;IAClD,MAAMN,OAAO,GAAGV,UAAU,CAAC,CAAC,CAAC,EAAEO,IAAI,CAACc,KAAK,CAACG,cAAc,CAAC,EAAEV,OAAO,CAAC;IAEnE,OAAOJ,OAAO;EAChB;AACF"}
|
package/lib/module/types.js
CHANGED
|
@@ -1,2 +1,58 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
1
2
|
|
|
3
|
+
/** Recognized JWS Header Parameters, any other Header Members may also be present. */
|
|
4
|
+
|
|
5
|
+
/** Recognized Compact JWS Header Parameters, any other Header Members may also be present. */
|
|
6
|
+
|
|
7
|
+
/** Recognized JWE Header Parameters, any other Header members may also be present. */
|
|
8
|
+
|
|
9
|
+
/** Recognized JWT Claims Set members, any other members may also be present. */
|
|
10
|
+
|
|
11
|
+
/** JWT Claims Set verification options. */
|
|
12
|
+
|
|
13
|
+
export const JWK = z.object({
|
|
14
|
+
'alg': z.string().optional(),
|
|
15
|
+
'crv': z.string().optional(),
|
|
16
|
+
'd': z.string().optional(),
|
|
17
|
+
'dp': z.string().optional(),
|
|
18
|
+
'dq': z.string().optional(),
|
|
19
|
+
'e': z.string().optional(),
|
|
20
|
+
/** JWK "ext" (Extractable) Parameter. */
|
|
21
|
+
'ext': z.boolean().optional(),
|
|
22
|
+
'k': z.string().optional(),
|
|
23
|
+
/** JWK "key_ops" (Key Operations) Parameter. */
|
|
24
|
+
'key_ops': z.array(z.string()).optional(),
|
|
25
|
+
/** JWK "kid" (Key ID) Parameter. */
|
|
26
|
+
'kid': z.string().optional(),
|
|
27
|
+
/** JWK "kty" (Key Type) Parameter.
|
|
28
|
+
* This attribute is required to discriminate the
|
|
29
|
+
* type of EC/RSA algorithm */
|
|
30
|
+
'kty': z.string(),
|
|
31
|
+
'n': z.string().optional(),
|
|
32
|
+
'oth': z.array(z.object({
|
|
33
|
+
d: z.string().optional(),
|
|
34
|
+
r: z.string().optional(),
|
|
35
|
+
t: z.string().optional()
|
|
36
|
+
})).optional(),
|
|
37
|
+
'p': z.string().optional(),
|
|
38
|
+
'q': z.string().optional(),
|
|
39
|
+
'qi': z.string().optional(),
|
|
40
|
+
/** JWK "use" (Public Key Use) Parameter. */
|
|
41
|
+
'use': z.string().optional(),
|
|
42
|
+
'x': z.string().optional(),
|
|
43
|
+
'y': z.string().optional(),
|
|
44
|
+
/** JWK "x5c" (X.509 Certificate Chain) Parameter. */
|
|
45
|
+
'x5c': z.array(z.string()).optional(),
|
|
46
|
+
/** JWK "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter. */
|
|
47
|
+
'x5t': z.string().optional(),
|
|
48
|
+
/** "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Parameter. */
|
|
49
|
+
'x5t#S256': z.string().optional(),
|
|
50
|
+
/** JWK "x5u" (X.509 URL) Parameter. */
|
|
51
|
+
'x5u': z.string().optional()
|
|
52
|
+
});
|
|
53
|
+
export const WithJWKS = z.object({
|
|
54
|
+
jwks: z.object({
|
|
55
|
+
keys: z.array(JWK)
|
|
56
|
+
})
|
|
57
|
+
});
|
|
2
58
|
//# sourceMappingURL=types.js.map
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":""}
|
|
1
|
+
{"version":3,"names":["z","JWK","object","string","optional","boolean","array","d","r","t","WithJWKS","jwks","keys"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"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"}
|
|
@@ -197,4 +197,50 @@ export class JWSSignatureVerificationFailed extends JOSEError {
|
|
|
197
197
|
code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';
|
|
198
198
|
message = 'signature verification failed';
|
|
199
199
|
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* An error subclass thrown when a JWE is invalid.
|
|
203
|
+
*
|
|
204
|
+
* @example Checking thrown error is this one using a stable error code
|
|
205
|
+
*
|
|
206
|
+
* ```js
|
|
207
|
+
* if (err.code === 'ERR_JWE_INVALID') {
|
|
208
|
+
* // ...
|
|
209
|
+
* }
|
|
210
|
+
* ```
|
|
211
|
+
*
|
|
212
|
+
* @example Checking thrown error is this one using `instanceof`
|
|
213
|
+
*
|
|
214
|
+
* ```js
|
|
215
|
+
* if (err instanceof errors.JWEInvalid) {
|
|
216
|
+
* // ...
|
|
217
|
+
* }
|
|
218
|
+
* ```
|
|
219
|
+
*/
|
|
220
|
+
export class JWEInvalid extends JOSEError {
|
|
221
|
+
static get code() {
|
|
222
|
+
return 'ERR_JWE_INVALID';
|
|
223
|
+
}
|
|
224
|
+
code = 'ERR_JWE_INVALID';
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* An error subclass thrown when a JWKSet is invalid.
|
|
229
|
+
*/
|
|
230
|
+
export class JWKSetInvalid extends JOSEError {
|
|
231
|
+
static get code() {
|
|
232
|
+
return 'ERR_JWKS_INVALID';
|
|
233
|
+
}
|
|
234
|
+
code = 'ERR_JWKS_INVALID';
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* An error subclass thrown when a JWK is not found.
|
|
239
|
+
*/
|
|
240
|
+
export class JWKNotFound extends JOSEError {
|
|
241
|
+
static get code() {
|
|
242
|
+
return 'ERR_JWK_NOT_FOUND';
|
|
243
|
+
}
|
|
244
|
+
code = 'ERR_JWK_NOT_FOUND';
|
|
245
|
+
}
|
|
200
246
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["JOSEError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","JWTClaimValidationFailed","claim","arguments","length","undefined","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWTInvalid","JWSInvalid","JWSSignatureVerificationFailed"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["JOSEError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","JWTClaimValidationFailed","claim","arguments","length","undefined","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWTInvalid","JWSInvalid","JWSSignatureVerificationFailed","JWEInvalid","JWKSetInvalid","JWKNotFound"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
|
|
@@ -1,93 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
1
|
+
export * from './jwe/index';
|
|
2
|
+
export * from './jwt/index';
|
|
3
|
+
export * from './jwk/index';
|
|
4
|
+
export * from './jwt/produce';
|
|
5
|
+
export * from './jwt/sign';
|
|
6
|
+
export * from './jwt/unsecured';
|
|
5
7
|
export { derToJose } from './utils/asn1';
|
|
6
8
|
export { encodeBase64, decodeBase64 } from './utils/base64';
|
|
7
9
|
export { sha256ToBase64 } from './hash';
|
|
8
|
-
/**
|
|
9
|
-
* Decode the JWT without validation.
|
|
10
|
-
*
|
|
11
|
-
* @example Usage with a public JWK encoded RSA key
|
|
12
|
-
*
|
|
13
|
-
* ```js
|
|
14
|
-
* const jwt =
|
|
15
|
-
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
16
|
-
*
|
|
17
|
-
* const { payload, protectedHeader } = await decode(jwt)
|
|
18
|
-
*
|
|
19
|
-
* ```
|
|
20
|
-
*
|
|
21
|
-
* @param jwt JSON Web Token value (encoded as JWS).
|
|
22
|
-
*/
|
|
23
|
-
export declare const decode: (token: string) => JWTDecodeResult;
|
|
24
|
-
/**
|
|
25
|
-
* Verifies the JWS signature
|
|
26
|
-
*
|
|
27
|
-
* @example Usage with a public JWK encoded RSA key
|
|
28
|
-
*
|
|
29
|
-
* ```js
|
|
30
|
-
* const jwk = {
|
|
31
|
-
* crv: 'P-256',
|
|
32
|
-
* kty: 'EC',
|
|
33
|
-
* x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
|
|
34
|
-
* y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
|
|
35
|
-
* }
|
|
36
|
-
* const jwt =
|
|
37
|
-
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
38
|
-
*
|
|
39
|
-
* const isSignatureValid = await verify(jwt, jwk)
|
|
40
|
-
* ```
|
|
41
|
-
*
|
|
42
|
-
* @param jwt JSON Web Token value (encoded as JWS).
|
|
43
|
-
* @param key Public key to verify the JWT in JWK format.
|
|
44
|
-
*/
|
|
45
|
-
export declare const isSignatureValid: (token: string, jwk: JWK) => Promise<boolean>;
|
|
46
|
-
/**
|
|
47
|
-
* Verifies the JWT format (to be a JWS Compact format), verifies the JWS signature, validates the
|
|
48
|
-
* JWT Claims Set.
|
|
49
|
-
*
|
|
50
|
-
* @example Usage with a public JWK encoded RSA key
|
|
51
|
-
*
|
|
52
|
-
* ```js
|
|
53
|
-
* const jwk = {
|
|
54
|
-
* crv: 'P-256',
|
|
55
|
-
* kty: 'EC',
|
|
56
|
-
* x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
|
|
57
|
-
* y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
|
|
58
|
-
* }
|
|
59
|
-
* const jwt =
|
|
60
|
-
* 'eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImtpZCI6IkVDIzEiLCJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0LyIsInN1YiI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvIiwibWV0YWRhdGEiOnsiZXVkaV93YWxsZXRfcHJvdmlkZXIiOnsiandrcyI6W3siY3J2IjoiUC0yNTYiLCJrdHkiOiJFQyIsIngiOiJxckpyajNBZl9CNTdzYk9JUnJjQk03YnI3d09jOHluajdsSEZQVGVmZlVrIiwieSI6IjFIMGNXRHlHZ3ZVOHcta1BLVV94eWNPQ1VOVDJvMGJ3c2xJUXRuUFU2aU0iLCJraWQiOiJFQyMxIn1dLCJ0b2tlbl9lbmRwb2ludCI6Imh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvdG9rZW4iLCJhc2NfdmFsdWVzX3N1cHBvcnRlZCI6WyJodHRwczovL2lvLWQtd2FsbGV0LWl0LmF6dXJld2Vic2l0ZXMubmV0L0xvQS9iYXNpYyIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL21lZGl1bSIsImh0dHBzOi8vaW8tZC13YWxsZXQtaXQuYXp1cmV3ZWJzaXRlcy5uZXQvTG9BL2hpZ2h0Il0sImdyYW50X3R5cGVzX3N1cHBvcnRlZCI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Y2xpZW50LWFzc2VydGlvbi10eXBlOmp3dC1rZXktYXR0ZXN0YXRpb24iXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9tZXRob2RzX3N1cHBvcnRlZCI6WyJwcml2YXRlX2tleV9qd3QiXSwidG9rZW5fZW5kcG9pbnRfYXV0aF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2IiwiRVMyNTZLIiwiRVMzODQiLCJFUzUxMiIsIlJTMjU2IiwiUlMzODQiLCJSUzUxMiIsIlBTMjU2IiwiUFMzODQiLCJQUzUxMiJdfSwiZmVkZXJhdGlvbl9lbnRpdHkiOnsib3JnYW5pemF0aW9uX25hbWUiOiJQYWdvUGEgUy5wLkEuIiwiaG9tZXBhZ2VfdXJpIjoiaHR0cHM6Ly9pby5pdGFsaWEuaXQvIiwicG9saWN5X3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L3ByaXZhY3ktcG9saWN5LyIsInRvc191cmkiOiJodHRwczovL2lvLml0YWxpYS5pdC9wcml2YWN5LXBvbGljeS8iLCJsb2dvX3VyaSI6Imh0dHBzOi8vaW8uaXRhbGlhLml0L2Fzc2V0cy9pbWcvaW8taXQtbG9nby13aGl0ZS5zdmcifX0sImlhdCI6MTY4OTIzNjYzNSwiZXhwIjoxNjg5MjQwMjM1fQ.6wA0M6rNYNSFN_EylzMA6ElAibW7FVSZyoLNEkHU5c_RKuiNenT08YIMvbysYautLZotUedEMP5xCyNpY34x6Q'
|
|
61
|
-
*
|
|
62
|
-
* const { payload, protectedHeader } = await verify(jwt, jwk, {
|
|
63
|
-
* typ: 'entity-statement+jwt',
|
|
64
|
-
* requiredClaims: ['iss', 'sub', 'metadata'],
|
|
65
|
-
* })
|
|
66
|
-
* ```
|
|
67
|
-
*
|
|
68
|
-
* @param jwt JSON Web Token value (encoded as JWS).
|
|
69
|
-
* @param key Public key to verify the JWT in JWK format.
|
|
70
|
-
* @param options JWT Decryption and JWT Claims Set validation options.
|
|
71
|
-
*/
|
|
72
|
-
export declare const verify: (token: string, jwk: JWK, options?: JWTClaimVerificationOptions) => Promise<JWTDecodeResult>;
|
|
73
|
-
/**
|
|
74
|
-
* Calculate JWK thumbprint
|
|
75
|
-
*
|
|
76
|
-
* @example Get JWK thumbprint
|
|
77
|
-
*
|
|
78
|
-
* ```js
|
|
79
|
-
* const jwk: JWK = {
|
|
80
|
-
* crv: 'P-256',
|
|
81
|
-
* kty: 'EC',
|
|
82
|
-
* x: 'qrJrj3Af_B57sbOIRrcBM7br7wOc8ynj7lHFPTeffUk',
|
|
83
|
-
* y: '1H0cWDyGgvU8w-kPKU_xycOCUNT2o0bwslIQtnPU6iM',
|
|
84
|
-
* };
|
|
85
|
-
|
|
86
|
-
* const thumbprint = await thumbprint(jwk)
|
|
87
|
-
*
|
|
88
|
-
* ```
|
|
89
|
-
*
|
|
90
|
-
* @param jwk JSON Web Key
|
|
91
|
-
*/
|
|
92
|
-
export declare const thumbprint: (jwk: JWK) => Promise<string>;
|
|
93
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { JWEHeaderParameters, JWK } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* The EncryptJwe class is used to build and encrypt Flattened JWE objects.
|
|
4
|
+
*
|
|
5
|
+
* @example Usage
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const jwe = await new EncryptJwe(
|
|
9
|
+
* new TextEncoder().encode('It’s a dangerous business, Frodo, going out your door.', { alg: 'RSA-OAEP-256', enc: 'A256GCM' }),
|
|
10
|
+
* )
|
|
11
|
+
* .encrypt(publicKey)
|
|
12
|
+
*
|
|
13
|
+
* console.log(jwe)
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare class EncryptJwe {
|
|
17
|
+
private _plaintext;
|
|
18
|
+
private _protectedHeader;
|
|
19
|
+
/** @param plaintext String representation of the plaintext to encrypt. */
|
|
20
|
+
/** @param header JWE header with alg and enc parameters. */
|
|
21
|
+
constructor(plaintext: String, header: JWEHeaderParameters & {
|
|
22
|
+
alg: string;
|
|
23
|
+
enc: string;
|
|
24
|
+
});
|
|
25
|
+
/**
|
|
26
|
+
* Encrypts and resolves the value of the Flattened JWE object.
|
|
27
|
+
*
|
|
28
|
+
* @param key Public Key or Secret to encrypt the JWE with. See
|
|
29
|
+
*/
|
|
30
|
+
encrypt(key: JWK): Promise<string>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jwe/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAGzD;;;;;;;;;;;;;GAaG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAsD;IAE9E,0EAA0E;IAC1E,4DAA4D;gBAE1D,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,mBAAmB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAM5D;;;;OAIG;IACG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;CAQzC"}
|