formating

This commit is contained in:
Jonas Roussel
2020-08-28 15:12:33 +02:00
parent 91f7776fd6
commit 76ba87d772
2 changed files with 23 additions and 6 deletions

View File

@ -156,7 +156,10 @@ class RSAAlgorithm extends JWTAlgorithm {
signer.init(false, params);
return signer.verifySignature(Uint8List.fromList(body), RSASignature(Uint8List.fromList(signature)));
final msg = Uint8List.fromList(body);
final sign = RSASignature(Uint8List.fromList(signature));
return signer.verifySignature(msg, sign);
} catch (ex) {
return false;
}

View File

@ -13,7 +13,8 @@ class JWT {
static JWT verify(String token, Key key) {
final parts = token.split('.');
final header = Map<String, dynamic>.from(jsonBase64.decode(base64Padded(parts[0])));
final rawHeader = jsonBase64.decode(base64Padded(parts[0]));
final header = Map<String, dynamic>.from(rawHeader);
if (header['typ'] != 'JWT') throw JWTInvalidError('not a jwt');
@ -28,7 +29,8 @@ class JWT {
throw JWTInvalidError('invalid signature');
}
final payload = Map<String, dynamic>.from(jsonBase64.decode(base64Padded(parts[1])));
final rawPayload = jsonBase64.decode(base64Padded(parts[1]));
final payload = Map<String, dynamic>.from(rawPayload);
if (payload.containsKey('exp')) {
final exp = DateTime.fromMillisecondsSinceEpoch(payload['exp'] * 1000);
@ -79,13 +81,25 @@ class JWT {
final header = {'alg': algorithm.name, 'typ': 'JWT'};
if (!noTimestamp) payload['iat'] = secondsSinceEpoch(DateTime.now());
if (expiresIn != null) payload['exp'] = secondsSinceEpoch(DateTime.now().add(expiresIn));
if (expiresIn != null) {
payload['exp'] = secondsSinceEpoch(DateTime.now().add(expiresIn));
}
if (audience != null) payload['aud'] = audience;
if (subject != null) payload['sub'] = subject;
if (issuer != null) payload['iss'] = issuer;
final body = base64Unpadded(jsonBase64.encode(header)) + '.' + base64Unpadded(jsonBase64.encode(payload));
final signature = base64Unpadded(base64Url.encode(algorithm.sign(key, utf8.encode(body))));
final b64Header = base64Unpadded(jsonBase64.encode(header));
final b64Payload = base64Unpadded(jsonBase64.encode(payload));
final body = '${b64Header}.${b64Payload}';
final signature = base64Unpadded(
base64Url.encode(
algorithm.sign(
key,
utf8.encode(body),
),
),
);
return body + '.' + signature;
}