diff --git a/CHANGELOG.md b/CHANGELOG.md index 87ad3f9..45567d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,3 +22,7 @@ ## 1.1.1 (2023-04-24) - Fix s2k iterated produce key + +## 1.1.2 (2023-05-11) +- Pass ParametersWithIV to cipher in SKESK packet +- Refactor session key encryption diff --git a/lib/src/packet/key/session_key.dart b/lib/src/packet/key/session_key.dart index 7dafce2..3aa7c2c 100644 --- a/lib/src/packet/key/session_key.dart +++ b/lib/src/packet/key/session_key.dart @@ -19,7 +19,9 @@ class SessionKey { SessionKey(this.key, [this.symmetric = SymmetricAlgorithm.aes256]); - factory SessionKey.produceKey([SymmetricAlgorithm symmetric = SymmetricAlgorithm.aes256]) { + factory SessionKey.produceKey([ + SymmetricAlgorithm symmetric = SymmetricAlgorithm.aes256, + ]) { return SessionKey(Helper.generateEncryptionKey(symmetric), symmetric); } diff --git a/lib/src/type/message.dart b/lib/src/type/message.dart index c7c6109..98ea31c 100644 --- a/lib/src/type/message.dart +++ b/lib/src/type/message.dart @@ -37,8 +37,10 @@ class Message { final List verifications; - Message(this.packetList, [final Iterable verifications = const []]) - : verifications = verifications.toList(growable: false); + Message( + this.packetList, [ + final Iterable verifications = const [], + ]) : verifications = verifications.toList(growable: false); factory Message.fromArmored(final String armored) { final armor = Armor.decode(armored); @@ -87,7 +89,8 @@ class Message { ])); LiteralDataPacket? get literalData { - final packets = unwrapCompressed().packetList.whereType(); + final packets = + unwrapCompressed().packetList.whereType(); return packets.isNotEmpty ? packets.elementAt(0) : null; } @@ -104,10 +107,13 @@ class Message { } /// Gets the key IDs of the keys to which the session key is encrypted - Iterable get encryptionKeyIDs => - unwrapCompressed().packetList.whereType().map((packet) => packet.publicKeyID); + Iterable get encryptionKeyIDs => unwrapCompressed() + .packetList + .whereType() + .map((packet) => packet.publicKeyID); - Iterable get signaturePackets => unwrapCompressed().packetList.whereType(); + Iterable get signaturePackets => + unwrapCompressed().packetList.whereType(); /// Returns ASCII armored text of message String armor() => Armor.encode(ArmorType.message, packetList.encode()); @@ -220,7 +226,8 @@ class Message { final List verificationKeys, { final DateTime? date, }) async { - final literalDataPackets = unwrapCompressed().packetList.whereType(); + final literalDataPackets = + unwrapCompressed().packetList.whereType(); if (literalDataPackets.isEmpty) { throw StateError('No literal data packet to verify.'); } @@ -251,7 +258,8 @@ class Message { final pkeskPackets = await Future.wait( encryptionKeys.map( (key) async => PublicKeyEncryptedSessionKeyPacket.encryptSessionKey( - await key.getEncryptionKeyPacket(), sessionKey + await key.getEncryptionKeyPacket(), + sessionKey, ), ), ); @@ -366,7 +374,8 @@ class Message { }) async { final sessionKeys = []; if (decryptionKeys.isNotEmpty) { - final pkeskPackets = packetList.whereType(); + final pkeskPackets = + packetList.whereType(); for (final pkesk in pkeskPackets) { for (final key in decryptionKeys) { final keyPacket = await key.getDecryptionKeyPacket(); diff --git a/pubspec.yaml b/pubspec.yaml index e9487a6..7bc8ffd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,13 +1,13 @@ name: dart_pg description: Dart PG (Dart Privacy Guard) - The OpenPGP implementation in Dart language. -version: 1.1.1 +version: 1.1.2 homepage: https://github.com/nguyennv/dart_pg environment: - sdk: '>=2.18.4 <3.0.0' + sdk: '>=2.19.0 <3.0.0' dependencies: - crypto: ^3.0.2 + crypto: ^3.0.3 fixnum: ^1.1.0 pinenacl: ^0.5.1 pointycastle: ^3.7.3