From 2a54eae0495ec08cb3221e40ec1551810d8a6ba5 Mon Sep 17 00:00:00 2001 From: QuentinArguillere Date: Thu, 18 Aug 2022 11:48:01 +0200 Subject: [PATCH] Add Post quantum ZRTP support, encryption section to the call stats. Add zrtp_key_agreements_suites for post quantum in the factory rc --- Classes/LinphoneCoreSettingsStore.m | 5 ++- Classes/LinphoneUI/UIConfirmationDialog.m | 3 ++ Classes/SettingsView.m | 12 +++++- .../Voip/Views/Fragments/CallStatsView.swift | 36 ++++++++++++++++-- Resources/images/post_quantum_secure@3x.png | Bin 0 -> 14135 bytes Resources/linphonerc-factory | 1 + Settings/InAppSettings.bundle/Call.plist | 24 ++++++++++++ 7 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 Resources/images/post_quantum_secure@3x.png diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index b3f81f914..7f6bffecc 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -27,6 +27,7 @@ #include #include + @implementation LinphoneCoreSettingsStore - (id)init { @@ -493,7 +494,7 @@ val = "None"; break; } - [self setCString:val forKey:@"media_encryption_preference"]; + [self setCString:val forKey:linphone_core_get_post_quantum_available() ? @"media_encryption_preference_pq_enabled" : @"media_encryption_preference"]; [self setInteger:linphone_core_get_upload_bandwidth(LC) forKey:@"upload_bandwidth_preference"]; [self setInteger:linphone_core_get_download_bandwidth(LC) forKey:@"download_bandwidth_preference"]; [self setBool:linphone_core_adaptive_rate_control_enabled(LC) forKey:@"adaptive_rate_control_preference"]; @@ -1027,7 +1028,7 @@ [LinphoneCoreSettingsStore parsePortRange:video_port_preference minPort:&videoMinPort maxPort:&videoMaxPort]; linphone_core_set_video_port_range(LC, videoMinPort, videoMaxPort); - NSString *menc = [self stringForKey:@"media_encryption_preference"]; + NSString *menc = [self stringForKey:linphone_core_get_post_quantum_available() ? @"media_encryption_preference_pq_enabled" : @"media_encryption_preference"]; if (menc && [menc compare:@"SRTP"] == NSOrderedSame) linphone_core_set_media_encryption(LC, LinphoneMediaEncryptionSRTP); else if (menc && [menc compare:@"ZRTP"] == NSOrderedSame) diff --git a/Classes/LinphoneUI/UIConfirmationDialog.m b/Classes/LinphoneUI/UIConfirmationDialog.m index 6c8be2e3b..43d4955d3 100644 --- a/Classes/LinphoneUI/UIConfirmationDialog.m +++ b/Classes/LinphoneUI/UIConfirmationDialog.m @@ -48,6 +48,9 @@ [[UIColor colorWithPatternImage:[UIImage imageNamed:@"color_A.png"]] CGColor]; dialog.cancelButton.layer.borderColor = [[UIColor colorWithPatternImage:[UIImage imageNamed:@"color_F.png"]] CGColor]; + if (linphone_core_get_post_quantum_available()) { + [dialog.securityImage setImage:[UIImage imageNamed:@"post_quantum_secure.png"]]; + } return dialog; } diff --git a/Classes/SettingsView.m b/Classes/SettingsView.m index 3cd70aa67..3698ea617 100644 --- a/Classes/SettingsView.m +++ b/Classes/SettingsView.m @@ -555,11 +555,12 @@ void update_hash_cbs(LinphoneAccountCreator *creator, LinphoneAccountCreatorStat return [[IASKSpecifier alloc] initWithSpecifier:dict]; } } else { - if ([[specifier key] isEqualToString:@"media_encryption_preference"]) { + BOOL pq_available = linphone_core_get_post_quantum_available(); + if ([[specifier key] isEqualToString:pq_available ? @"media_encryption_preference_pq_enabled" : @"media_encryption_preference"]) { NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:[specifier specifierDict]]; if (!linphone_core_media_encryption_supported(LC, LinphoneMediaEncryptionZRTP)) { NSMutableArray *titles = [NSMutableArray arrayWithArray:[dict objectForKey:@"Titles"]]; - [titles removeObject:@"ZRTP"]; + [titles removeObject:pq_available ? @"ZRTP" : @"ZRTP Post Quantum"]; [dict setObject:titles forKey:@"Titles"]; NSMutableArray *values = [NSMutableArray arrayWithArray:[dict objectForKey:@"Values"]]; [values removeObject:@"ZRTP"]; @@ -641,6 +642,13 @@ void update_hash_cbs(LinphoneAccountCreator *creator, LinphoneAccountCreatorStat } if (!linphone_core_sip_transport_supported(LC, LinphoneTransportTls)) { [hiddenKeys addObject:@"media_encryption_preference"]; + [hiddenKeys addObject:@"media_encryption_preference_pq_enabled"]; + } else { + if (linphone_core_get_post_quantum_available()) { + [hiddenKeys addObject:@"media_encryption_preference"]; + } else { + [hiddenKeys addObject:@"media_encryption_preference_pq_enabled"]; + } } if (!linphone_core_ldap_available(LC)) { diff --git a/Classes/Swift/Voip/Views/Fragments/CallStatsView.swift b/Classes/Swift/Voip/Views/Fragments/CallStatsView.swift index 0c10ae3e1..eb3f47718 100644 --- a/Classes/Swift/Voip/Views/Fragments/CallStatsView.swift +++ b/Classes/Swift/Voip/Views/Fragments/CallStatsView.swift @@ -24,9 +24,9 @@ import linphonesw // Layout constants let side_margins = 10.0 - let margin_top = 50 + let margin_top = 25 let corner_radius = 20.0 - let audio_video_margin = 20 + let audio_video_margin = 13 init(superView:UIView, callData:CallData, marginTop:CGFloat, above:UIView, onDismissAction : @escaping ()->Void) { super.init(frame:.zero) @@ -50,9 +50,20 @@ import linphonesw let model = CallStatisticsData(call: callData.call) + let encryptionTitle = StyledLabel(VoipTheme.call_stats_font_title,NSLocalizedString("Encryption", comment: "")) + addSubview(encryptionTitle) + encryptionTitle.matchParentSideBorders().alignParentTop(withMargin: margin_top).done() + + let encryptionStats = StyledLabel(VoipTheme.call_stats_font) + + encryptionStats.numberOfLines = 0 + addSubview(encryptionStats) + encryptionStats.matchParentSideBorders().alignUnder(view: encryptionTitle).done() + + let audioTitle = StyledLabel(VoipTheme.call_stats_font_title,NSLocalizedString("Audio", comment: "")) addSubview(audioTitle) - audioTitle.matchParentSideBorders().alignParentTop(withMargin: margin_top).done() + audioTitle.alignUnder(view: encryptionStats, withMargin:audio_video_margin).matchParentSideBorders().done() let audioStats = StyledLabel(VoipTheme.call_stats_font) @@ -86,6 +97,25 @@ import linphonesw stats += "\n\($0.getTypeTitle())\($0.value.value ?? "n/a")" } videoStats.text = stats + + if let lc = model.call.core { + stats = "" + switch (lc.mediaEncryption) { + case MediaEncryption.None: stats += "\nNone" + case MediaEncryption.SRTP: stats += "\nSRTP" + case MediaEncryption.DTLS: stats += "\nDTLS" + case MediaEncryption.ZRTP: + if let callstats = model.call.audioStats { + stats += (model.call.audioStats?.isZrtpKeyAgreementAlgoPostQuantum ?? false) ?"\nZRTP" : "\nPost Quantum ZRTP" + stats += "\nCipher algorithm: \(callstats.zrtpCipherAlgo)" + stats += "\nKey agreement algorithm: \(callstats.zrtpKeyAgreementAlgo)" + stats += "\nHash algorithm: \(callstats.zrtpHashAlgo)" + stats += "\nAuth tag algorithm: \(callstats.zrtpAuthTagAlgo)" + stats += "\nSas algorithm: \(callstats.zrtpSasAlgo)" + } + } + encryptionStats.text = stats + } } } diff --git a/Resources/images/post_quantum_secure@3x.png b/Resources/images/post_quantum_secure@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..58693333587bd2297a029793d9287314845f5cf7 GIT binary patch literal 14135 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 Hv`79wLpyp< literal 0 HcmV?d00001 diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory index fde4f8242..d1c8531d2 100644 --- a/Resources/linphonerc-factory +++ b/Resources/linphonerc-factory @@ -31,6 +31,7 @@ accept_early_media=0 [sip] deliver_imdn=1 linphone_specs=groupchat,lime +zrtp_key_agreements_suites=MS_ZRTP_KEY_AGREEMENT_K255_KYB512 [misc] version_check_url_root=https://linphone.org/releases diff --git a/Settings/InAppSettings.bundle/Call.plist b/Settings/InAppSettings.bundle/Call.plist index 2ce526c4a..c3488da92 100644 --- a/Settings/InAppSettings.bundle/Call.plist +++ b/Settings/InAppSettings.bundle/Call.plist @@ -142,6 +142,30 @@ DTLS + + DefaultValue + None + Key + media_encryption_preference_pq_enabled + Title + Media Encryption + Titles + + None + SRTP + ZRTP Post Quantum + DTLS + + Type + PSMultiValueSpecifier + Values + + None + SRTP + ZRTP + DTLS + + DefaultValue