Replace js-sha256 dependency with @noble/hashes in Keycloak JS (#30667)

Closes #15769

Signed-off-by: Stephan Schreiber <schreibse@gmail.com>
This commit is contained in:
Stephan Schreiber 2024-06-25 06:44:17 -05:00 committed by GitHub
parent b07ba763bd
commit dada291b46
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 13 additions and 12 deletions

View file

@ -78,7 +78,7 @@
"shx": "^0.3.4" "shx": "^0.3.4"
}, },
"dependencies": { "dependencies": {
"js-sha256": "^0.11.0", "@noble/hashes": "^1.4.0",
"jwt-decode": "^4.0.0" "jwt-decode": "^4.0.0"
} }
} }

View file

@ -39,7 +39,7 @@ function defineOptions({
file: path.join(targetDir, `${file}.mjs`), file: path.join(targetDir, `${file}.mjs`),
}, },
], ],
external: ["js-sha256", "jwt-decode"], external: ["@noble/hashes", "jwt-decode"],
}, },
// Legacy Universal Module Definition, or “UMD”, with inlined dependencies. // Legacy Universal Module Definition, or “UMD”, with inlined dependencies.
{ {

View file

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
import sha256 from 'js-sha256'; import { sha256 } from '@noble/hashes/sha256';
import { jwtDecode } from 'jwt-decode'; import { jwtDecode } from 'jwt-decode';
if (typeof Promise === 'undefined') { if (typeof Promise === 'undefined') {
@ -382,7 +382,7 @@ function Keycloak (config) {
} }
// hash codeVerifier, then encode as url-safe base64 without padding // hash codeVerifier, then encode as url-safe base64 without padding
const hashBytes = new Uint8Array(sha256.arrayBuffer(codeVerifier)); const hashBytes = sha256(codeVerifier);
const encodedHash = bytesToBase64(hashBytes) const encodedHash = bytesToBase64(hashBytes)
.replace(/\+/g, '-') .replace(/\+/g, '-')
.replace(/\//g, '_') .replace(/\//g, '_')

View file

@ -356,9 +356,9 @@ importers:
js/libs/keycloak-js: js/libs/keycloak-js:
dependencies: dependencies:
js-sha256: '@noble/hashes':
specifier: ^0.11.0 specifier: ^1.4.0
version: 0.11.0 version: 1.4.0
jwt-decode: jwt-decode:
specifier: ^4.0.0 specifier: ^4.0.0
version: 4.0.0 version: 4.0.0
@ -1073,6 +1073,10 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
'@noble/hashes@1.4.0':
resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==}
engines: {node: '>= 16'}
'@nodelib/fs.scandir@2.1.5': '@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
@ -3361,9 +3365,6 @@ packages:
jquery@3.7.1: jquery@3.7.1:
resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==}
js-sha256@0.11.0:
resolution: {integrity: sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==}
js-tokens@4.0.0: js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@ -5571,6 +5572,8 @@ snapshots:
react: 18.3.1 react: 18.3.1
react-dom: 18.3.1(react@18.3.1) react-dom: 18.3.1(react@18.3.1)
'@noble/hashes@1.4.0': {}
'@nodelib/fs.scandir@2.1.5': '@nodelib/fs.scandir@2.1.5':
dependencies: dependencies:
'@nodelib/fs.stat': 2.0.5 '@nodelib/fs.stat': 2.0.5
@ -8196,8 +8199,6 @@ snapshots:
jquery@3.7.1: {} jquery@3.7.1: {}
js-sha256@0.11.0: {}
js-tokens@4.0.0: {} js-tokens@4.0.0: {}
js-tokens@9.0.0: {} js-tokens@9.0.0: {}