Skip to content

Commit 1f94bc6

Browse files
committed
v1.3.1 (719)
1 parent 565c40e commit 1f94bc6

File tree

1,414 files changed

+125654
-63197
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,414 files changed

+125654
-63197
lines changed

.package.resolved

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"pins" : [
3+
{
4+
"identity" : "appauth-ios-for-olvid",
5+
"kind" : "remoteSourceControl",
6+
"location" : "https://github.com/olvid-io/AppAuth-iOS-for-Olvid",
7+
"state" : {
8+
"branch" : "targetfix",
9+
"revision" : "0d90e24667c4a1fd9a84edb27ce966cc395f1314"
10+
}
11+
},
12+
{
13+
"identity" : "joseswift-for-olvid",
14+
"kind" : "remoteSourceControl",
15+
"location" : "https://github.com/olvid-io/JOSESwift-for-Olvid",
16+
"state" : {
17+
"branch" : "targetfix",
18+
"revision" : "a1cd4c990da61c86e5bb4cd7605e2d372cc10c72"
19+
}
20+
}
21+
],
22+
"version" : 2
23+
}

.tuist-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.18.0
1+
3.33.4

CHANGELOG.en.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,69 @@
11
# Changelog
22

3+
## [1.3.1 (719)] - 2023-12-11
4+
5+
- Bugfix release
6+
7+
## [1.3 (716)] - 2023-12-08
8+
9+
- Secure calls are now available on macOS!
10+
- The secure calls feature has a fresh new aesthetic, designed to enhance visual appeal across all devices and orientations.
11+
- Introducing a revamped interface for editing the nickname and custom photo of contacts or groups.
12+
- Enjoy the convenience of inviting all group members simultaneously with the new "Invite All" option.
13+
- Resolves an issue on macOS related to file imports using AirDrop.
14+
- Addresses various bugs concerning keycloak-managed users when the keycloak server is inaccessible.
15+
- Resolves a crash that occurred on certain iPhones when rotating the screen during an active discussion.
16+
- Fixes a bug that hindered secure calls from functioning when the device's local time was incorrect.
17+
- Various other minor bug fixes.
18+
19+
## [1.2 (709)] - 2023-10-25
20+
21+
- It is now possible to subscribe to the multi-device while adding a new device.
22+
- Fixes localization issues.
23+
- Fixes a bug sometimes provoking a crash in the background.
24+
- Fixes a few issues concerning groups (including enterprise managed groups).
25+
- Several fixes improving the multi-device experience.
26+
27+
## [1.1 (705)] - 2023-10-15
28+
29+
- Fully redesigned invitation tab!
30+
- Improves the onboarding process.
31+
- Fixes the authorization screen request access to the microphone.
32+
- Fixes an issue sometimes preventing to receive a code during an invitation process.
33+
34+
## [1.0 (703)] - 2023-10-10
35+
36+
- This is a major update! Welcome to Olvid v1.0 ;-)
37+
- You can now use the same profile on multiple devices simultaneously!
38+
- Start a conversation on your iPhone, continue it on your Mac, finish it on your iPad.
39+
- All your contacts, groups, and settings stay synchronized across all your devices.
40+
- Add a new contact on the go thanks to your iPhone, discuss with them from any device.
41+
- All your conversations stay end-to-end secured (end-to-end encrypted and end-to-end authenticated) across all your devices and those of your contacts.
42+
- Adding a new device to your list of devices is done in seconds thanks to a new, completely redesigned, secure, onboarding process!
43+
- Changing phone is now also done in seconds if you still have your old device at hand.
44+
45+
## [0.12.12 (694)] - 2023-09-15
46+
47+
- Ready for iOS 17!
48+
- You can drag and drop files from (and to) the discussion screen under iPadOS.
49+
- Fixes various typos in French.
50+
- Fixes an issue sometimes preventing a backup to be restored.
51+
- Fixes an issue sometimes preventing the finalization of the download of certain attachments.
52+
- Fixes a bug preventing copy/paste of text in the compose view.
53+
- Fixes an issue preventing a profile from taking advantage of another profile's permission to emit secure calls.
54+
- The list of trust origins is now displayed on a separate screen.
55+
- Adds an advanced setting allowing you to download missing profile pictures for contacts, groups, and personal profiles.
56+
57+
## [0.12.11 (669)] - 2023-07-19
58+
59+
- Fixes a bug preventing certain copy/paste in the composition field.
60+
- Updates the UI of the contact sheet.
61+
62+
## [0.12.10 (666)] - 2023-07-11
63+
64+
- Fixes a bug preventing the download of attachments under iOS 17 beta 3.
65+
- Other minor bugfixes
66+
367
## [0.12.9 (661)] - 2023-05-22
468

569
- Improves the new group protocol to prevent situations were group pending members would never become full members. Basically, Olvid works even better than before.

CHANGELOG.fr.md

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,69 @@
11
# Changelog
22

3+
## [1.3.1 (719)] - 2023-12-11
4+
5+
- Bugfix
6+
7+
## [1.3 (716)] - 2023-12-08
8+
9+
- Les appels sécurisés sont désormais disponibles sur macOS !
10+
- Les interfaces des appels sécurisés ont été repensées pour s'adapter à tous les écrans et orientations.
11+
- Introduction d'une nouvelle interface permettant de modifier le surnom et la photo personnalisée d'un contact ou d'un groupe.
12+
- Il est désormais possible d'inviter tous les membres d'un groupe en une seule fois pour des discussions privées individuelles.
13+
- Correction d'une erreur sous macOS lors de l'importation d'un fichier via AirDrop.
14+
- Résolution de plusieurs bugs liés aux utilisateurs gérés par Keycloak lorsque le serveur Keycloak n'est pas accessible.
15+
- Correction d'un crash sur certains iPhone lors de la rotation de l'écran.
16+
- Correction d'un bug empêchant les appels sécurisés de fonctionner lorsque l'heure locale de l'appareil est incorrecte.
17+
- Diverses autres corrections mineures.
18+
19+
## [1.2 (709)] - 2023-10-25
20+
21+
- Il est possible de souscrire un abonnement au moment de l'ajout d'un nouvel appareil.
22+
- Corrige des erreurs de traduction.
23+
- Corrige une erreur pouvant provoquer un crash de l'app en arrière plan.
24+
- Corrige un certain nombre de bug concernant les groupes (y compris les groupes administrés par annuaire).
25+
- Plusieurs corrections afin d'améliorer l'expérience en multi-appareils.
26+
27+
## [1.1 (705)] - 2023-10-15
28+
29+
- Nouveau tab d'invitations !
30+
- Améliore le processus d'onboarding.
31+
- Corrige l'écran d'autorisation à l'occasion de la demande de micro.
32+
- Corrige un bug empêchant parfois d'arriver au terme d'une invitation.
33+
34+
## [1.0 (703)] - 2023-10-10
35+
36+
- Mise à jour majeure ! Bienvenue à Olvid v1.0 ;-)
37+
- Vous pouvez maintenant utiliser votre profil sur plusieurs appareils simultanément !
38+
- Commencez une discussion sur votre iPhone, continuez-la sur votre Mac, terminez-la sur votre iPad.
39+
- Tous vos contacts, groupes et paramètres restent synchronisés entre tous vos appareils.
40+
- Ajoutez un nouveau contact depuis votre iPhone, discutez ensuite depuis n’importe lequel de vos appareils.
41+
- Vos conversations restent sécurisées de bout en bout (chiffrées de bout en bout et authentifiées de bout en bout) entre tous vos appareils et ceux de vos contacts.
42+
- Ajouter un nouvel appareil à votre liste d’appareils ne demande que quelques secondes grâce à un nouveau processus « d’onboarding » sécurisé complètement revu !
43+
- Changer de téléphone ne demande que quelques secondes si vous avez encore votre ancien appareil sous la main.
44+
45+
## [0.12.12 (694)] - 2023-09-15
46+
47+
- Tout est prêt pour iOS 17 !
48+
- Il est possible de faire un glisser-déposer depuis (et vers) la vue de discussion sur iPadOS.
49+
- Corrige de nombreuses erreurs dans les textes français.
50+
- Corrige un bug empêchant parfois une sauvegarde d'être restaurée.
51+
- Corrige un bug empêchant parfois l'accès à une pièce jointe après son téléchargement.
52+
- Corrige un bug empêchant le copier/coller de certains liens dans la zone de composition.
53+
- Corrige un bug empêchant un profil de profiter du droit d'appeler d'un autre profil.
54+
- La liste des origines de confiance est maintenant affichée sur un écran séparé.
55+
- Un paramètre avancé permet de télécharger les photos de profil manquantes pour les contacts, groupes et profils personnels.
56+
57+
## [0.12.11 (669)] - 2023-07-19
58+
59+
- Corrige un bug empêchant le copier/coller de certains liens dans la zone de composition.
60+
- Amélioration de l'interface de la fiche contact.
61+
62+
## [0.12.10 (666)] - 2023-07-11
63+
64+
- Corrige un bug empêchant le téléchargement de pièces jointes sous iOS 17 beta 3
65+
- Autres corrections de bug mineurs
66+
367
## [0.12.9 (661)] - 2023-05-22
468

569
- Améliore le protocole concernant les nouveaux groupes afin de limiter les situations où des membres en attente de deviennent jamais membre à part entière. Bref, ça marche encore mieux qu'avant.
@@ -136,7 +200,7 @@
136200
- Corrige un problème rencontré sous iOS 16 concernant les autorisations systématiques demandées au moment de faire un copier/coller.
137201
- Corrige un bug empêchant l'affichage de certaines notifications d'appel manqué.
138202
- Le démarrage d'Olvid est encore plus rapide qu'avant.
139-
- Afin de ne jamais rater un appel sécurisé, vous avez maintenant la possibilité d'accorder l'accès au micro pendant l'onboarding.
203+
- Afin de ne jamais raté un appel sécurisé, vous avez maintenant la possibilité d'accorder l'accès au micro pendant l'onboarding.
140204

141205
## [0.11.1 (564)] - 2022-09-22
142206

Engine/JWS/JWS/JWSUtil.swift

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,13 @@
1919

2020
import Foundation
2121
import JOSESwift
22+
import ObvEncoder
23+
import OlvidUtils
2224

23-
public struct ObvJWKSet {
24-
25+
public struct ObvJWKSet: ObvErrorMaker {
26+
27+
public static let errorDomain = "ObvJWKSet"
28+
2529
fileprivate let jWKSet: JWKSet
2630

2731
public init(data: Data) throws {
@@ -38,6 +42,37 @@ public struct ObvJWKSet {
3842
}
3943

4044

45+
/// We make `ObvJWKSet` conform to `ObvCodable` since this type is used within the engine's protocol messages.
46+
extension ObvJWKSet: ObvFailableCodable {
47+
48+
public func obvEncode() throws -> ObvEncoder.ObvEncoded {
49+
guard let obvJWKSetAsJSONData = self.jsonData() else {
50+
assertionFailure()
51+
throw Self.makeError(message: "Could not encode ObvJWKSet")
52+
}
53+
return obvJWKSetAsJSONData.obvEncode()
54+
}
55+
56+
57+
public init?(_ obvEncoded: ObvEncoded) {
58+
59+
guard let obvJWKSetAsJSONData = Data(obvEncoded) else {
60+
assertionFailure()
61+
return nil
62+
}
63+
64+
do {
65+
try self.init(data: obvJWKSetAsJSONData)
66+
} catch {
67+
assertionFailure(error.localizedDescription)
68+
return nil
69+
}
70+
71+
}
72+
73+
}
74+
75+
4176
public struct ObvJWK: Equatable {
4277

4378
private static let errorDomain = "ObvJWK"
@@ -84,6 +119,35 @@ public struct ObvJWK: Equatable {
84119
}
85120

86121

122+
/// We make `ObvJWK` conform to `ObvCodable` since this type is used within the engine's protocol messages.
123+
extension ObvJWK: ObvFailableCodable {
124+
125+
public func obvEncode() throws -> ObvEncoder.ObvEncoded {
126+
let jsonData = try self.jsonEncode()
127+
return jsonData.obvEncode()
128+
}
129+
130+
131+
public init?(_ obvEncoded: ObvEncoded) {
132+
133+
guard let jsonData = Data(obvEncoded) else {
134+
assertionFailure()
135+
return nil
136+
}
137+
138+
guard let obvJWK = try? Self.jsonDecode(rawObvJWK: jsonData) else {
139+
assertionFailure()
140+
return nil
141+
}
142+
143+
self = obvJWK
144+
145+
}
146+
147+
}
148+
149+
150+
87151
public final class JWSUtil {
88152

89153
private static let errorDomain = "JWSUtil"

Engine/ObvBackupManager/ObvBackupManager/CoreData/Backup.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Olvid for iOS
3-
* Copyright © 2019-2022 Olvid SAS
3+
* Copyright © 2019-2023 Olvid SAS
44
*
55
* This file is part of Olvid for iOS.
66
*

Engine/ObvBackupManager/ObvBackupManager/CoreData/BackupKey.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Olvid for iOS
3-
* Copyright © 2019-2022 Olvid SAS
3+
* Copyright © 2019-2023 Olvid SAS
44
*
55
* This file is part of Olvid for iOS.
66
*

Engine/ObvBackupManager/ObvBackupManager/ObvBackupDelegateManager.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,4 @@ final class ObvBackupDelegateManager {
3333
weak var contextCreator: ObvCreateContextDelegate!
3434
weak var notificationDelegate: ObvNotificationDelegate!
3535

36-
37-
3836
}

Engine/ObvBackupManager/ObvBackupManager/ObvBackupManagerImplementation.swift

Lines changed: 12 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -269,13 +269,13 @@ extension ObvBackupManagerImplementation: ObvBackupDelegate {
269269

270270
let fullBackup = try FullBackup(allInternalJsonAndIdentifier: allInternalDataForBackup)
271271

272-
// Create and compress the full backup
272+
// Create the full backup
273273

274-
let possiblyCompressedFullBackupData = try fullBackup.computeData(flowId: backupRequestIdentifier, doCompressData: ObvConstants.compressBackupedData, log: log)
274+
let fullBackupData = try fullBackup.computeData(flowId: backupRequestIdentifier, log: log)
275275

276-
os_log("The compressed full backup is made of %d bytes within flow %{public}@", log: log, type: .info, possiblyCompressedFullBackupData.count, backupRequestIdentifier.description)
276+
os_log("The full backup is made of %d bytes within flow %{public}@", log: log, type: .info, fullBackupData.count, backupRequestIdentifier.description)
277277

278-
return try await createPersistedBackup(forExport: forExport, backupRequestIdentifier: backupRequestIdentifier, possiblyCompressedFullBackupData: possiblyCompressedFullBackupData)
278+
return try await createPersistedBackup(forExport: forExport, backupRequestIdentifier: backupRequestIdentifier, fullBackupData: fullBackupData)
279279

280280
}
281281

@@ -436,7 +436,7 @@ extension ObvBackupManagerImplementation: ObvBackupDelegate {
436436
throw BackupRestoreError.backupDataDecryptionFailed
437437
}
438438

439-
os_log("The backup data was successfully decrypted for backup request identified by %{public}@. We can decompress this data.", log: log, type: .info, backupRequestIdentifier.description)
439+
os_log("The backup data was successfully decrypted for backup request identified by %{public}@", log: log, type: .info, backupRequestIdentifier.description)
440440

441441
let fullBackup: FullBackup
442442
do {
@@ -579,7 +579,7 @@ extension ObvBackupManagerImplementation: ObvBackupDelegate {
579579
extension ObvBackupManagerImplementation {
580580

581581

582-
private func createPersistedBackup(forExport: Bool, backupRequestIdentifier: FlowIdentifier, possiblyCompressedFullBackupData: Data) async throws -> (backupKeyUid: UID, version: Int, encryptedContent: Data) {
582+
private func createPersistedBackup(forExport: Bool, backupRequestIdentifier: FlowIdentifier, fullBackupData: Data) async throws -> (backupKeyUid: UID, version: Int, encryptedContent: Data) {
583583

584584
assert(!Thread.isMainThread)
585585

@@ -605,11 +605,11 @@ extension ObvBackupManagerImplementation {
605605
throw Self.makeError(message: "Could not find any backup key for ongoing backup")
606606
}
607607

608-
// At this point we have a compressed backup and the appropriate keys. We can encrypt the backup.
608+
// At this point we have a backup and the appropriate keys. We can encrypt the backup.
609609

610-
os_log("Encrypting the compressed full backup for backupRequestIdentifier %{public}@", log: log, type: .info, backupRequestIdentifier.description)
610+
os_log("Encrypting the full backup for backupRequestIdentifier %{public}@", log: log, type: .info, backupRequestIdentifier.description)
611611

612-
let encryptedBackup = PublicKeyEncryption.encrypt(possiblyCompressedFullBackupData, using: derivedKeysForBackup.publicKeyForEncryption, and: prng)
612+
let encryptedBackup = PublicKeyEncryption.encrypt(fullBackupData, using: derivedKeysForBackup.publicKeyForEncryption, and: prng)
613613
let macOfEncryptedBackup = try MAC.compute(forData: encryptedBackup, withKey: derivedKeysForBackup.macKey)
614614
let authenticatedEncryptedBackup = EncryptedData(data: encryptedBackup.raw + macOfEncryptedBackup)
615615

@@ -922,7 +922,7 @@ fileprivate struct FullBackup: Codable {
922922
return result
923923
}
924924

925-
func computeData(flowId: FlowIdentifier, doCompressData: Bool, log: OSLog) throws -> Data {
925+
func computeData(flowId: FlowIdentifier, log: OSLog) throws -> Data {
926926

927927
// Create the full backup content
928928

@@ -931,42 +931,10 @@ fileprivate struct FullBackup: Codable {
931931
let jsonEncoder = JSONEncoder()
932932
let fullBackupData = try jsonEncoder.encode(self)
933933

934-
if doCompressData {
935-
936-
// Compress the full backup content
937-
938-
os_log("Compressing the %d bytes full backup content within flow %{public}@", log: log, type: .info, fullBackupData.count, flowId.description)
939-
940-
let compressedFullBackupData = try compressFullBackupContent(fullBackupData)
941-
942-
return compressedFullBackupData
943-
944-
} else {
945-
946-
return fullBackupData
947-
948-
}
949-
950-
}
951-
952-
953-
private func compressFullBackupContent(_ fullBackupContent: Data) throws -> Data {
954-
955-
// See https://developer.apple.com/documentation/accelerate/compressing_and_decompressing_data_with_buffer_compression
956-
// We use a method working under iOS 11+. Under iOS 13+, we could use simpler APIs.
957-
958-
var sourceBuffer = [UInt8](fullBackupContent)
959-
let destinationBuffer = UnsafeMutablePointer<UInt8>.allocate(capacity: fullBackupContent.count)
960-
let algorithm = COMPRESSION_ZLIB
961-
let compressedSize = compression_encode_buffer(destinationBuffer, fullBackupContent.count, &sourceBuffer, fullBackupContent.count, nil, algorithm)
962-
guard compressedSize > 0 else {
963-
throw ObvBackupManagerImplementation.makeError(message: "Compression failed")
964-
}
965-
let compressedFullBackupData = Data(bytes: destinationBuffer, count: compressedSize)
966-
return compressedFullBackupData
934+
return fullBackupData
967935

968936
}
969-
937+
970938

971939
private static func decompressCompressedBackupContent(_ compressedFullBackupData: Data) async throws -> Data {
972940

0 commit comments

Comments
 (0)