Skip to content

Commit 290c801

Browse files
author
Fabian Wiles
committed
fixup! feat: remove jsrsasign dependancy
1 parent 77cb37a commit 290c801

File tree

4 files changed

+16
-95
lines changed

4 files changed

+16
-95
lines changed

projects/lib/src/token-validation/jwks-validation-handler.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -107,15 +107,14 @@ export class JwksValidationHandler extends AbstractValidationHandler {
107107
return Promise.reject(error);
108108
}
109109

110-
const pem = jwkToPem(key)
111-
try{
110+
const pem = jwkToPem(key);
111+
try {
112112
jwt.verify(
113113
params.idToken,
114114
pem,
115115
{algorithms: this.allowedAlgorithms, clockTolerance: this.gracePeriodInSec}
116-
)
117-
}
118-
catch(err) {
116+
);
117+
} catch (err) {
119118
return Promise.reject('Signature not valid');
120119
}
121120
return Promise.resolve();
@@ -132,11 +131,12 @@ export class JwksValidationHandler extends AbstractValidationHandler {
132131
}
133132
}
134133

135-
calcHash(valueToHash: string, algorithm: string): string {
136-
let hashAlg = new rs.KJUR.crypto.MessageDigest({ alg: algorithm });
137-
let result = hashAlg.digestString(valueToHash);
138-
let byteArrayAsString = this.toByteArrayAsString(result);
139-
return byteArrayAsString;
134+
async calcHash(valueToHash: string, algorithm: string): Promise<string> {
135+
const encoder = new TextEncoder();
136+
const valueAsBytes = encoder.encode(valueToHash);
137+
const resultBytes = await window.crypto.subtle.digest(algorithm, valueAsBytes);
138+
// the returned bytes are encoded as UTF-16
139+
return String.fromCharCode.apply(null, new Uint16Array(resultBytes));
140140
}
141141

142142
toByteArrayAsString(hexString: string) {

projects/lib/src/token-validation/null-validation-handler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export class NullValidationHandler implements ValidationHandler {
88
validateSignature(validationParams: ValidationParams): Promise<any> {
99
return Promise.resolve(null);
1010
}
11-
validateAtHash(validationParams: ValidationParams): boolean {
12-
return true;
11+
validateAtHash(validationParams: ValidationParams): Promise<boolean> {
12+
return Promise.resolve(true);
1313
}
1414
}

projects/lib/src/token-validation/validation-handler.js

Lines changed: 0 additions & 79 deletions
This file was deleted.

projects/lib/src/token-validation/validation-handler.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export abstract class ValidationHandler {
2222
/**
2323
* Validates the at_hash in an id_token against the received access_token.
2424
*/
25-
public abstract validateAtHash(validationParams: ValidationParams): boolean;
25+
public abstract validateAtHash(validationParams: ValidationParams): Promise<boolean>;
2626
}
2727

2828
/**
@@ -39,10 +39,10 @@ export abstract class AbstractValidationHandler implements ValidationHandler {
3939
/**
4040
* Validates the at_hash in an id_token against the received access_token.
4141
*/
42-
validateAtHash(params: ValidationParams): boolean {
42+
async validateAtHash(params: ValidationParams): Promise<boolean> {
4343
let hashAlg = this.inferHashAlgorithm(params.idTokenHeader);
4444

45-
let tokenHash = this.calcHash(params.accessToken, hashAlg); // sha256(accessToken, { asString: true });
45+
let tokenHash = await this.calcHash(params.accessToken, hashAlg); // sha256(accessToken, { asString: true });
4646

4747
let leftMostHalf = tokenHash.substr(0, tokenHash.length / 2);
4848

@@ -85,5 +85,5 @@ export abstract class AbstractValidationHandler implements ValidationHandler {
8585
* @param valueToHash
8686
* @param algorithm
8787
*/
88-
protected abstract calcHash(valueToHash: string, algorithm: string): string;
88+
protected abstract calcHash(valueToHash: string, algorithm: string): Promise<string>;
8989
}

0 commit comments

Comments
 (0)