diff --git a/lib/json_web_signature.dart b/lib/json_web_signature.dart index e8b499d..9fc36d9 100644 --- a/lib/json_web_signature.dart +++ b/lib/json_web_signature.dart @@ -13,7 +13,7 @@ import 'package:crypto/crypto.dart'; class JsonWebSignatureEncoder extends Converter,String> { const JsonWebSignatureEncoder(); @override - String convert(List payload, {Map header, String secret}) { + String convert(List payload, {Map? header, required String secret}) { //print(jsonEncode(header)); final msg = '${base64Url.encode(jsonEncode(header).codeUnits)}.${base64Url.encode(payload)}'; return "${msg}.${_signMessage(msg, secret)}"; @@ -29,11 +29,11 @@ class JsonWebSignatureDecoder extends Converter>{ bool isValid(String input, String secret) { final parts = input.split('.'), - header = parts[0], - payload = parts[1], - signature = parts[2]; + header = parts[0] as List, + payload = parts[1] as List, + signature = parts[2] as List; - return _verifyParts(header, payload, signature, secret); + return _verifyParts(header as String, payload as String, signature as String, secret); } bool _verifyParts(String header, String payload, String signature, String secret) { @@ -41,14 +41,14 @@ class JsonWebSignatureDecoder extends Converter>{ } @override - List convert(String input, {String secret}) { + List convert(String input, {required String secret}) { final parts = input.split('.'), - header = parts[0], - payload = parts[1], - signature = parts[2]; + header = parts[0] as List, + payload = parts[1] as List, + signature = parts[2] as List; - if (_verifyParts(header, payload, signature, secret)) { - return base64Url.decode(payload); + if (_verifyParts(header as String, payload as String, signature as String, secret)) { + return base64Url.decode(payload as String); } else { throw new ArgumentError("Invalid signature"); } @@ -60,10 +60,10 @@ class JsonWebSignatureDecoder extends Converter>{ * JSON Web Signature codec. */ class JsonWebSignatureCodec extends Codec,String> { - final Map _header; - final String _secret; + final Map? _header; + final String? _secret; - const JsonWebSignatureCodec({Map header, String secret}) : + const JsonWebSignatureCodec({Map? header, String? secret}) : _header = header, _secret = secret; @@ -74,18 +74,18 @@ class JsonWebSignatureCodec extends Codec,String> { JsonWebSignatureDecoder get decoder => const JsonWebSignatureDecoder(); @override - String encode(List payload, {Map header, String secret}) { + String encode(List payload, {Map? header, String? secret}) { return encoder.convert(payload, header: (header != null ? header : _header), - secret: (secret != null ? secret : _secret)); + secret: (secret != null ? secret : _secret!)); } @override - List decode(String input, {String secret}) { - return decoder.convert(input, secret: (secret != null ? secret : _secret)); + List decode(String input, {String? secret}) { + return decoder.convert(input, secret: (secret != null ? secret : _secret!)); } - bool isValid(String input, {String secret}) { - return decoder.isValid(input, secret != null ? secret : _secret); + bool isValid(String input, {String? secret}) { + return decoder.isValid(input, secret != null ? secret : _secret!); } } diff --git a/lib/json_web_token.dart b/lib/json_web_token.dart index e8de2cd..f86e840 100644 --- a/lib/json_web_token.dart +++ b/lib/json_web_token.dart @@ -17,7 +17,7 @@ class JsonWebTokenEncoder extends Converter { const JsonWebTokenEncoder(); @override - String convert(Map payload, {Map header, String secret}) { + String convert(Map? payload, {Map? header, required String secret}) { return _JWS_ENCODER.convert(jsonEncode(payload).codeUnits, header: header, secret: secret); } } @@ -26,7 +26,7 @@ class JsonWebTokenEncoder extends Converter { /** * JSON Web Signature decoder. */ -class JsonWebTokenDecoder extends Converter { +class JsonWebTokenDecoder extends Converter { static const _JWS_DECODER = const JsonWebSignatureDecoder(); const JsonWebTokenDecoder(); @@ -34,7 +34,7 @@ class JsonWebTokenDecoder extends Converter { bool isValid(String input, String secret) => _JWS_DECODER.isValid(input, secret); @override - Map convert(String token, {Map header, String secret}) { + Map? convert(String token, {Map? header, required String secret}) { // return JSON.decode(new String.fromCharCodes(_JWS_DECODER.convert(token, secret: secret))); return jsonDecode(new String.fromCharCodes(_JWS_DECODER.convert(token, secret: secret))); } @@ -44,16 +44,16 @@ class JsonWebTokenDecoder extends Converter { /** * JSON Web Token codec. */ -class JsonWebTokenCodec extends Codec { +class JsonWebTokenCodec extends Codec { static const _DEFAULT_HEADER = const { 'typ': 'JWT', 'alg': 'HS256' }; final Map _header; - final String _secret; + final String? _secret; - const JsonWebTokenCodec({Map header, String secret}) : + const JsonWebTokenCodec({Map? header, String? secret}) : _header = header != null ? header : _DEFAULT_HEADER, _secret = secret; @@ -64,17 +64,17 @@ class JsonWebTokenCodec extends Codec { JsonWebTokenDecoder get decoder => const JsonWebTokenDecoder(); @override - String encode(Map payload, {Map header, String secret}) { + String encode(Map? payload, {Map? header, String? secret}) { return encoder.convert(payload, header: (header != null ? header : _header), - secret: (secret != null ? secret : _secret)); + secret: (secret != null ? secret : _secret!)); } @override - Map decode(String input, {String secret}) { - return decoder.convert(input, secret: (secret != null ? secret : _secret)); + Map? decode(String input, {String? secret}) { + return decoder.convert(input, secret: (secret != null ? secret : _secret!)); } - bool isValid(String input, {String secret}) { - return decoder.isValid(input, secret != null ? secret : _secret); + bool isValid(String input, {String? secret}) { + return decoder.isValid(input, secret != null ? secret : _secret!); } } diff --git a/pubspec.yaml b/pubspec.yaml index 742b55d..69701ba 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,11 +5,11 @@ description: JSON Web Token implemented as a standard Dart codec. homepage: https://github.com/bsjung/start_jwt environment: - sdk: ">=2.0.0-dev.65 <3.0.0" + sdk: '>=2.12.0 <3.0.0' dependencies: - crypto: ^2.1.4 - cryptoutils: ^0.4.0 + crypto: ^3.0.1 + cryptoutils: ^0.5.0 dev_dependencies: - test: ^1.0.0 + test: ^1.17.8