Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ class KeysManagerBloc extends Bloc<KeysManagerEvent, KeysManagerState> {
Stream<KeysManagerState> _mapShowPrivateKeyToState(
ShowPrivateKey event) async* {
final String _privateKeyStr = _rsaKeyHelper
.encodePrivateKeyToPemPKCS1(event._asymmetricKeyPair.privateKey);
.encodePrivateKeyToPemPKCS1(event._asymmetricKeyPair.privateKey as RSAPrivateKey);
yield ShowingPrivateKey(_privateKeyStr);
}

Stream<KeysManagerState> _mapShowPublicKeyToState(
ShowPublicKey event) async* {
final String _publicKeyStr = _rsaKeyHelper
.encodePublicKeyToPemPKCS1(event._asymmetricKeyPair.publicKey);
.encodePublicKeyToPemPKCS1(event._asymmetricKeyPair.publicKey as RSAPublicKey);
yield ShowingPublicKey(_publicKeyStr);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import 'package:pointycastle/api.dart';
class EncryptionScreen extends StatefulWidget {
final AsymmetricKeyPair _asymmetricKeyPair;
const EncryptionScreen(
{Key key, @required AsymmetricKeyPair asymmetricKeyPair})
{Key? key, required AsymmetricKeyPair asymmetricKeyPair})
: assert(asymmetricKeyPair != null),
_asymmetricKeyPair = asymmetricKeyPair,
super(key: key);
Expand Down Expand Up @@ -133,7 +133,7 @@ class _EncryptionScreenState extends State<EncryptionScreen> {
onPressed: () {
_encryptionBloc.add(
EncryptString(_textController.text.trim(),
widget._asymmetricKeyPair.publicKey),
widget._asymmetricKeyPair.publicKey as RSAPublicKey),
);
},
),
Expand Down Expand Up @@ -182,7 +182,7 @@ class _EncryptionScreenState extends State<EncryptionScreen> {
onPressed: () {
_encryptionBloc.add(
DecryptString(
encryptedString, widget._asymmetricKeyPair.privateKey),
encryptedString, widget._asymmetricKeyPair.privateKey as RSAPrivateKey),
);
},
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

class HomeScreen extends StatelessWidget {
const HomeScreen({Key key}) : super(key: key);
const HomeScreen({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
Expand Down
58 changes: 29 additions & 29 deletions example/bloc_encryption/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7,84 +7,84 @@ packages:
name: asn1lib
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.1"
version: "1.0.0"
async:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
source: hosted
version: "2.5.0-nullsafety.1"
version: "2.5.0"
bloc:
dependency: transitive
description:
name: bloc
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.0"
version: "7.0.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0-nullsafety.1"
version: "2.1.0"
characters:
dependency: transitive
description:
name: characters
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0-nullsafety.3"
version: "1.1.0"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0-nullsafety.1"
version: "1.2.0"
clock:
dependency: transitive
description:
name: clock
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0-nullsafety.1"
version: "1.1.0"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.dartlang.org"
source: hosted
version: "1.15.0-nullsafety.3"
version: "1.15.0"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
version: "1.0.2"
equatable:
dependency: "direct main"
description:
name: equatable
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.5"
version: "2.0.0"
fading_edge_scrollview:
dependency: transitive
description:
name: fading_edge_scrollview
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.4"
version: "2.0.0"
fake_async:
dependency: transitive
description:
name: fake_async
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0-nullsafety.1"
version: "1.2.0"
flutter:
dependency: "direct main"
description: flutter
Expand All @@ -96,7 +96,7 @@ packages:
name: flutter_bloc
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.6"
version: "7.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
Expand All @@ -108,49 +108,49 @@ packages:
name: marquee
url: "https://pub.dartlang.org"
source: hosted
version: "1.6.1"
version: "2.0.0"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.10-nullsafety.1"
version: "0.12.10"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0-nullsafety.3"
version: "1.3.0"
nested:
dependency: transitive
description:
name: nested
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.4"
version: "1.0.0"
path:
dependency: transitive
description:
name: path
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0-nullsafety.1"
version: "1.8.0"
pointycastle:
dependency: "direct main"
description:
name: pointycastle
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "3.0.1"
provider:
dependency: transitive
description:
name: provider
url: "https://pub.dartlang.org"
source: hosted
version: "4.3.2+2"
version: "5.0.0"
rsa_encrypt:
dependency: "direct main"
description:
Expand All @@ -169,56 +169,56 @@ packages:
name: source_span
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0-nullsafety.2"
version: "1.8.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.dartlang.org"
source: hosted
version: "1.10.0-nullsafety.1"
version: "1.10.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0-nullsafety.1"
version: "2.1.0"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0-nullsafety.1"
version: "1.1.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0-nullsafety.1"
version: "1.2.0"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.19-nullsafety.2"
version: "0.2.19"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0-nullsafety.3"
version: "1.3.0"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0-nullsafety.3"
version: "2.1.0"
sdks:
dart: ">=2.10.0-110 <2.11.0"
dart: ">=2.12.0 <3.0.0"
flutter: ">=1.16.0"
12 changes: 6 additions & 6 deletions example/bloc_encryption/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1

environment:
sdk: ">=2.7.0 <3.0.0"
sdk: '>=2.12.0 <3.0.0'

dependencies:
flutter:
sdk: flutter
rsa_encrypt:
path: ../../
cupertino_icons: ^1.0.0
equatable: ^1.2.5
flutter_bloc: ^6.0.6
marquee: ^1.6.1
pointycastle: ^2.0.0
cupertino_icons: ^1.0.2
equatable: ^2.0.0
flutter_bloc: ^7.0.0
marquee: ^2.0.0
pointycastle: ^3.0.1

dev_dependencies:
flutter_test:
Expand Down
32 changes: 16 additions & 16 deletions lib/rsa_encrypt.dart
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class RsaKeyHelper {
/// parameters ANY DEFINED BY algorithm OPTIONAL
/// }
RSAPublicKey parsePublicKeyFromPem(pemString) {
List<int> publicKeyDER = decodePEM(pemString);
final Uint8List publicKeyDER = decodePEM(pemString);
var asn1Parser = new ASN1Parser(publicKeyDER);
var topLevelSeq = asn1Parser.nextObject() as ASN1Sequence;

Expand All @@ -67,8 +67,8 @@ class RsaKeyHelper {
} else {
var publicKeyBitString = topLevelSeq.elements[1];

var publicKeyAsn = new ASN1Parser(publicKeyBitString.contentBytes());
ASN1Sequence publicKeySeq = publicKeyAsn.nextObject();
var publicKeyAsn = new ASN1Parser(publicKeyBitString.contentBytes()!);
ASN1Sequence publicKeySeq = publicKeyAsn.nextObject() as ASN1Sequence;
modulus = publicKeySeq.elements[0] as ASN1Integer;
exponent = publicKeySeq.elements[1] as ASN1Integer;
}
Expand Down Expand Up @@ -101,7 +101,7 @@ class RsaKeyHelper {
/// Given a base64 encoded PEM [String] with correct headers and footers, return a
/// [RSAPrivateKey]
RSAPrivateKey parsePrivateKeyFromPem(pemString) {
List<int> privateKeyDER = decodePEM(pemString);
final Uint8List privateKeyDER = decodePEM(pemString);
var asn1Parser = new ASN1Parser(privateKeyDER);
var topLevelSeq = asn1Parser.nextObject() as ASN1Sequence;

Expand All @@ -110,7 +110,7 @@ class RsaKeyHelper {
if (topLevelSeq.elements.length == 3) {
var privateKey = topLevelSeq.elements[2];

asn1Parser = new ASN1Parser(privateKey.contentBytes());
asn1Parser = new ASN1Parser(privateKey.contentBytes()!);
var pkSeq = asn1Parser.nextObject() as ASN1Sequence;

modulus = pkSeq.elements[1] as ASN1Integer;
Expand All @@ -133,7 +133,7 @@ class RsaKeyHelper {
return rsaPrivateKey;
}

List<int> decodePEM(String pem) {
Uint8List decodePEM(String pem) {
return base64.decode(removePemHeaderAndFooter(pem));
}

Expand Down Expand Up @@ -189,16 +189,16 @@ class RsaKeyHelper {
var topLevel = new ASN1Sequence();

var version = ASN1Integer(BigInt.from(0));
var modulus = ASN1Integer(privateKey.n);
var publicExponent = ASN1Integer(privateKey.exponent);
var privateExponent = ASN1Integer(privateKey.privateExponent);
var p = ASN1Integer(privateKey.p);
var q = ASN1Integer(privateKey.q);
var dP = privateKey.privateExponent % (privateKey.p - BigInt.from(1));
var modulus = ASN1Integer(privateKey.n!);
var publicExponent = ASN1Integer(privateKey.exponent!);
var privateExponent = ASN1Integer(privateKey.privateExponent!);
var p = ASN1Integer(privateKey.p!);
var q = ASN1Integer(privateKey.q!);
var dP = privateKey.privateExponent! % (privateKey.p! - BigInt.from(1));
var exp1 = ASN1Integer(dP);
var dQ = privateKey.privateExponent % (privateKey.q - BigInt.from(1));
var dQ = privateKey.privateExponent! % (privateKey.q! - BigInt.from(1));
var exp2 = ASN1Integer(dQ);
var iQ = privateKey.q.modInverse(privateKey.p);
var iQ = privateKey.q!.modInverse(privateKey.p!);
var co = ASN1Integer(iQ);

topLevel.add(version);
Expand All @@ -222,8 +222,8 @@ class RsaKeyHelper {
String encodePublicKeyToPemPKCS1(RSAPublicKey publicKey) {
var topLevel = new ASN1Sequence();

topLevel.add(ASN1Integer(publicKey.modulus));
topLevel.add(ASN1Integer(publicKey.exponent));
topLevel.add(ASN1Integer(publicKey.modulus!));
topLevel.add(ASN1Integer(publicKey.exponent!));

var dataBase64 = base64.encode(topLevel.encodedBytes);
return """-----BEGIN RSA PUBLIC KEY-----\r\n$dataBase64\r\n-----END RSA PUBLIC KEY-----""";
Expand Down
Loading