jose 4.3.6 → 4.4.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 +1 -0
- package/dist/browser/index.js +1 -0
- package/dist/browser/jwks/local.js +101 -0
- package/dist/browser/jwks/remote.js +15 -82
- package/dist/browser/lib/aesgcmkw.js +2 -2
- package/dist/browser/lib/crypto_key.js +7 -7
- package/dist/browser/lib/decrypt_key_management.js +2 -2
- package/dist/browser/lib/encrypt_key_management.js +6 -4
- package/dist/browser/runtime/aeskw.js +1 -1
- package/dist/browser/runtime/asn1.js +21 -20
- package/dist/browser/runtime/decrypt.js +3 -3
- package/dist/browser/runtime/digest.js +1 -1
- package/dist/browser/runtime/ecdhes.js +8 -9
- package/dist/browser/runtime/encrypt.js +3 -3
- package/dist/browser/runtime/generate.js +7 -7
- package/dist/browser/runtime/get_sign_verify_key.js +1 -1
- package/dist/browser/runtime/jwk_to_key.js +4 -4
- package/dist/browser/runtime/pbes2kw.js +4 -4
- package/dist/browser/runtime/sign.js +1 -1
- package/dist/browser/runtime/subtle_dsa.js +7 -6
- package/dist/browser/runtime/verify.js +1 -1
- package/dist/node/cjs/index.js +3 -1
- package/dist/node/cjs/jwks/local.js +107 -0
- package/dist/node/cjs/jwks/remote.js +14 -81
- package/dist/node/cjs/lib/aesgcmkw.js +2 -2
- package/dist/node/cjs/lib/crypto_key.js +7 -7
- package/dist/node/cjs/lib/decrypt_key_management.js +2 -2
- package/dist/node/cjs/lib/encrypt_key_management.js +6 -4
- package/dist/node/cjs/runtime/aeskw.js +4 -5
- package/dist/node/cjs/runtime/check_cek_length.js +2 -2
- package/dist/node/cjs/runtime/decrypt.js +3 -3
- package/dist/node/cjs/runtime/ecdhes.js +7 -7
- package/dist/node/cjs/runtime/encrypt.js +3 -3
- package/dist/node/cjs/runtime/generate.js +2 -2
- package/dist/node/cjs/runtime/get_named_curve.js +2 -2
- package/dist/node/cjs/runtime/get_sign_verify_key.js +1 -2
- package/dist/node/cjs/runtime/jwk_to_key.js +1 -1
- package/dist/node/cjs/runtime/key_to_jwk.js +1 -1
- package/dist/node/cjs/runtime/node_key.js +2 -2
- package/dist/node/cjs/runtime/pbes2kw.js +6 -6
- package/dist/node/cjs/runtime/verify.js +1 -1
- package/dist/node/esm/index.js +1 -0
- package/dist/node/esm/jwks/local.js +101 -0
- package/dist/node/esm/jwks/remote.js +15 -82
- package/dist/node/esm/lib/aesgcmkw.js +2 -2
- package/dist/node/esm/lib/crypto_key.js +7 -7
- package/dist/node/esm/lib/decrypt_key_management.js +2 -2
- package/dist/node/esm/lib/encrypt_key_management.js +6 -4
- package/dist/node/esm/runtime/aeskw.js +5 -6
- package/dist/node/esm/runtime/check_cek_length.js +2 -2
- package/dist/node/esm/runtime/decrypt.js +3 -3
- package/dist/node/esm/runtime/ecdhes.js +7 -7
- package/dist/node/esm/runtime/encrypt.js +3 -3
- package/dist/node/esm/runtime/generate.js +2 -2
- package/dist/node/esm/runtime/get_named_curve.js +2 -2
- package/dist/node/esm/runtime/get_sign_verify_key.js +2 -3
- package/dist/node/esm/runtime/jwk_to_key.js +1 -1
- package/dist/node/esm/runtime/key_to_jwk.js +1 -1
- package/dist/node/esm/runtime/node_key.js +2 -2
- package/dist/node/esm/runtime/pbes2kw.js +6 -6
- package/dist/node/esm/runtime/verify.js +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/jwks/local.d.ts +9 -0
- package/dist/types/types.d.ts +4 -1
- package/package.json +1 -1
- package/dist/node/cjs/runtime/secret_key.js +0 -14
- package/dist/node/esm/runtime/secret_key.js +0 -11
|
@@ -6,7 +6,7 @@ import { setCurve } from './get_named_curve.js';
|
|
|
6
6
|
import { setModulusLength } from './check_modulus_length.js';
|
|
7
7
|
import Asn1SequenceEncoder from './asn1_sequence_encoder.js';
|
|
8
8
|
const [major, minor] = process.version
|
|
9
|
-
.
|
|
9
|
+
.slice(1)
|
|
10
10
|
.split('.')
|
|
11
11
|
.map((str) => parseInt(str, 10));
|
|
12
12
|
const jwkImportSupported = major >= 16 || (major === 15 && minor >= 12);
|
|
@@ -8,7 +8,7 @@ import isKeyObject from './is_key_object.js';
|
|
|
8
8
|
import invalidKeyInput from '../lib/invalid_key_input.js';
|
|
9
9
|
import { types } from './is_key_like.js';
|
|
10
10
|
const [major, minor] = process.version
|
|
11
|
-
.
|
|
11
|
+
.slice(1)
|
|
12
12
|
.split('.')
|
|
13
13
|
.map((str) => parseInt(str, 10));
|
|
14
14
|
const jwkExportSupported = major >= 16 || (major === 15 && minor >= 9);
|
|
@@ -3,7 +3,7 @@ import getNamedCurve from './get_named_curve.js';
|
|
|
3
3
|
import { JOSENotSupported } from '../util/errors.js';
|
|
4
4
|
import checkModulusLength from './check_modulus_length.js';
|
|
5
5
|
const [major, minor] = process.version
|
|
6
|
-
.
|
|
6
|
+
.slice(1)
|
|
7
7
|
.split('.')
|
|
8
8
|
.map((str) => parseInt(str, 10));
|
|
9
9
|
const electron = 'electron' in process.versions;
|
|
@@ -38,7 +38,7 @@ export default function keyForCrypto(alg, key) {
|
|
|
38
38
|
case rsaPssParams && 'PS512':
|
|
39
39
|
if (key.asymmetricKeyType === 'rsa-pss') {
|
|
40
40
|
const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails;
|
|
41
|
-
const length = parseInt(alg.
|
|
41
|
+
const length = parseInt(alg.slice(-3), 10);
|
|
42
42
|
if (hashAlgorithm !== undefined &&
|
|
43
43
|
(hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm)) {
|
|
44
44
|
throw new TypeError(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${alg}`);
|
|
@@ -27,17 +27,17 @@ function getPassword(key, alg) {
|
|
|
27
27
|
export const encrypt = async (alg, key, cek, p2c = Math.floor(Math.random() * 2049) + 2048, p2s = random(new Uint8Array(16))) => {
|
|
28
28
|
checkP2s(p2s);
|
|
29
29
|
const salt = concatSalt(alg, p2s);
|
|
30
|
-
const keylen = parseInt(alg.
|
|
30
|
+
const keylen = parseInt(alg.slice(13, 16), 10) >> 3;
|
|
31
31
|
const password = getPassword(key, alg);
|
|
32
|
-
const derivedKey = await pbkdf2(password, salt, p2c, keylen, `sha${alg.
|
|
33
|
-
const encryptedKey = await wrap(alg.
|
|
32
|
+
const derivedKey = await pbkdf2(password, salt, p2c, keylen, `sha${alg.slice(8, 11)}`);
|
|
33
|
+
const encryptedKey = await wrap(alg.slice(-6), derivedKey, cek);
|
|
34
34
|
return { encryptedKey, p2c, p2s: base64url(p2s) };
|
|
35
35
|
};
|
|
36
36
|
export const decrypt = async (alg, key, encryptedKey, p2c, p2s) => {
|
|
37
37
|
checkP2s(p2s);
|
|
38
38
|
const salt = concatSalt(alg, p2s);
|
|
39
|
-
const keylen = parseInt(alg.
|
|
39
|
+
const keylen = parseInt(alg.slice(13, 16), 10) >> 3;
|
|
40
40
|
const password = getPassword(key, alg);
|
|
41
|
-
const derivedKey = await pbkdf2(password, salt, p2c, keylen, `sha${alg.
|
|
42
|
-
return unwrap(alg.
|
|
41
|
+
const derivedKey = await pbkdf2(password, salt, p2c, keylen, `sha${alg.slice(8, 11)}`);
|
|
42
|
+
return unwrap(alg.slice(-6), derivedKey, encryptedKey);
|
|
43
43
|
};
|
|
@@ -5,7 +5,7 @@ import nodeKey from './node_key.js';
|
|
|
5
5
|
import sign from './sign.js';
|
|
6
6
|
import getVerifyKey from './get_sign_verify_key.js';
|
|
7
7
|
const [major, minor] = process.version
|
|
8
|
-
.
|
|
8
|
+
.slice(1)
|
|
9
9
|
.split('.')
|
|
10
10
|
.map((str) => parseInt(str, 10));
|
|
11
11
|
const oneShotCallbackSupported = major >= 16 || (major === 15 && minor >= 13);
|
package/dist/types/index.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export { SignJWT } from './jwt/sign';
|
|
|
27
27
|
export { EncryptJWT } from './jwt/encrypt';
|
|
28
28
|
export { calculateJwkThumbprint } from './jwk/thumbprint';
|
|
29
29
|
export { EmbeddedJWK } from './jwk/embedded';
|
|
30
|
+
export { createLocalJWKSet } from './jwks/local';
|
|
30
31
|
export { createRemoteJWKSet } from './jwks/remote';
|
|
31
32
|
export type { RemoteJWKSetOptions } from './jwks/remote';
|
|
32
33
|
export { UnsecuredJWT } from './jwt/unsecured';
|
|
@@ -42,4 +43,4 @@ export type { GenerateKeyPairResult, GenerateKeyPairOptions } from './key/genera
|
|
|
42
43
|
export { generateSecret } from './key/generate_secret';
|
|
43
44
|
export type { GenerateSecretOptions } from './key/generate_secret';
|
|
44
45
|
export * as base64url from './util/base64url';
|
|
45
|
-
export type { KeyLike, JWK, FlattenedJWSInput, GeneralJWSInput, FlattenedJWS, GeneralJWS, JoseHeaderParameters, JWSHeaderParameters, JWEKeyManagementHeaderParameters, FlattenedJWE, GeneralJWE, JWEHeaderParameters, CritOption, DeflateOption, DecryptOptions, EncryptOptions, JWTClaimVerificationOptions, VerifyOptions, SignOptions, JWTPayload, DeflateFunction, InflateFunction, FlattenedDecryptResult, GeneralDecryptResult, CompactDecryptResult, FlattenedVerifyResult, GeneralVerifyResult, CompactVerifyResult, JWTVerifyResult, JWTDecryptResult, ResolvedKey, CompactJWEHeaderParameters, CompactJWSHeaderParameters, JWTHeaderParameters, } from './types';
|
|
46
|
+
export type { KeyLike, JWK, FlattenedJWSInput, GeneralJWSInput, FlattenedJWS, GeneralJWS, JoseHeaderParameters, JWSHeaderParameters, JWEKeyManagementHeaderParameters, FlattenedJWE, GeneralJWE, JWEHeaderParameters, CritOption, DeflateOption, DecryptOptions, EncryptOptions, JWTClaimVerificationOptions, VerifyOptions, SignOptions, JWTPayload, DeflateFunction, InflateFunction, FlattenedDecryptResult, GeneralDecryptResult, CompactDecryptResult, FlattenedVerifyResult, GeneralVerifyResult, CompactVerifyResult, JWTVerifyResult, JWTDecryptResult, ResolvedKey, CompactJWEHeaderParameters, CompactJWSHeaderParameters, JWTHeaderParameters, JSONWebKeySet, } from './types';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { KeyLike, JWSHeaderParameters, JSONWebKeySet, FlattenedJWSInput, GetKeyFunction } from '../types';
|
|
2
|
+
export declare function isJWKSLike(jwks: unknown): jwks is JSONWebKeySet;
|
|
3
|
+
export declare class LocalJWKSet {
|
|
4
|
+
protected _jwks?: JSONWebKeySet;
|
|
5
|
+
private _cached;
|
|
6
|
+
constructor(jwks: unknown);
|
|
7
|
+
getKey(protectedHeader: JWSHeaderParameters, token: FlattenedJWSInput): Promise<KeyLike>;
|
|
8
|
+
}
|
|
9
|
+
export declare function createLocalJWKSet(jwks: JSONWebKeySet): GetKeyFunction<JWSHeaderParameters, FlattenedJWSInput>;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -262,9 +262,12 @@ export interface CompactJWSHeaderParameters extends JWSHeaderParameters {
|
|
|
262
262
|
alg: string
|
|
263
263
|
}
|
|
264
264
|
export interface JWTHeaderParameters extends CompactJWSHeaderParameters {
|
|
265
|
-
b64?:
|
|
265
|
+
b64?: true
|
|
266
266
|
}
|
|
267
267
|
export interface CompactJWEHeaderParameters extends JWEHeaderParameters {
|
|
268
268
|
alg: string
|
|
269
269
|
enc: string
|
|
270
270
|
}
|
|
271
|
+
export interface JSONWebKeySet {
|
|
272
|
+
keys: JWK[]
|
|
273
|
+
}
|
package/package.json
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const crypto_1 = require("crypto");
|
|
4
|
-
function getSecretKey(key) {
|
|
5
|
-
let keyObject;
|
|
6
|
-
if (key instanceof Uint8Array) {
|
|
7
|
-
keyObject = (0, crypto_1.createSecretKey)(key);
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
keyObject = key;
|
|
11
|
-
}
|
|
12
|
-
return keyObject;
|
|
13
|
-
}
|
|
14
|
-
exports.default = getSecretKey;
|