diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2024-10-17 09:32:54 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2024-10-17 12:59:04 +0200 |
| commit | 1ba1e04ad65755be6fe43fc813222d3b8ba8fd86 (patch) | |
| tree | e91859fb98b6436541b6ac5e6765a7d1546dda28 | |
| parent | 36ce4bf88d701bded43fcfbd69a6148dd214c461 (diff) | |
| download | mullvadvpn-1ba1e04ad65755be6fe43fc813222d3b8ba8fd86.tar.xz mullvadvpn-1ba1e04ad65755be6fe43fc813222d3b8ba8fd86.zip | |
Refactor post_quantum_secrets to not take an enable-bool
| -rw-r--r-- | talpid-tunnel-config-client/src/lib.rs | 62 |
1 files changed, 30 insertions, 32 deletions
diff --git a/talpid-tunnel-config-client/src/lib.rs b/talpid-tunnel-config-client/src/lib.rs index ab47c13be7..7a7b428fc6 100644 --- a/talpid-tunnel-config-client/src/lib.rs +++ b/talpid-tunnel-config-client/src/lib.rs @@ -89,20 +89,24 @@ pub async fn request_ephemeral_peer_with( mut client: RelayConfigService, parent_pubkey: PublicKey, ephemeral_pubkey: PublicKey, - enable_post_quantum: bool, + enable_quantum_resistant: bool, enable_daita: bool, ) -> Result<EphemeralPeer, Error> { - let (pq_request, kem_secrets) = post_quantum_secrets(enable_post_quantum).await; - let daita = Some(proto::DaitaRequestV1 { - activate_daita: enable_daita, - }); + let (pq_request, kem_secrets) = if enable_quantum_resistant { + let (pq_request, kem_secrets) = post_quantum_secrets().await; + (Some(pq_request), Some(kem_secrets)) + } else { + (None, None) + }; let response = client .register_peer_v1(proto::EphemeralPeerRequestV1 { wg_parent_pubkey: parent_pubkey.as_bytes().to_vec(), wg_ephemeral_peer_pubkey: ephemeral_pubkey.as_bytes().to_vec(), post_quantum: pq_request, - daita, + daita: Some(proto::DaitaRequestV1 { + activate_daita: enable_daita, + }), }) .await .map_err(Error::GrpcError)?; @@ -175,34 +179,28 @@ pub async fn request_ephemeral_peer( .await } -async fn post_quantum_secrets( - enable_post_quantum: bool, -) -> ( - Option<PostQuantumRequestV1>, - Option<(classic_mceliece_rust::SecretKey<'static>, ml_kem::Keypair)>, +async fn post_quantum_secrets() -> ( + PostQuantumRequestV1, + (classic_mceliece_rust::SecretKey<'static>, ml_kem::Keypair), ) { - if enable_post_quantum { - let (cme_kem_pubkey, cme_kem_secret) = classic_mceliece::generate_keys().await; - let ml_kem_keypair = ml_kem::keypair(); + let (cme_kem_pubkey, cme_kem_secret) = classic_mceliece::generate_keys().await; + let ml_kem_keypair = ml_kem::keypair(); - ( - Some(proto::PostQuantumRequestV1 { - kem_pubkeys: vec![ - proto::KemPubkeyV1 { - algorithm_name: classic_mceliece::ALGORITHM_NAME.to_owned(), - key_data: cme_kem_pubkey.as_array().to_vec(), - }, - proto::KemPubkeyV1 { - algorithm_name: ml_kem::ALGORITHM_NAME.to_owned(), - key_data: ml_kem_keypair.encapsulation_key(), - }, - ], - }), - Some((cme_kem_secret, ml_kem_keypair)), - ) - } else { - (None, None) - } + ( + proto::PostQuantumRequestV1 { + kem_pubkeys: vec![ + proto::KemPubkeyV1 { + algorithm_name: classic_mceliece::ALGORITHM_NAME.to_owned(), + key_data: cme_kem_pubkey.as_array().to_vec(), + }, + proto::KemPubkeyV1 { + algorithm_name: ml_kem::ALGORITHM_NAME.to_owned(), + key_data: ml_kem_keypair.encapsulation_key(), + }, + ], + }, + (cme_kem_secret, ml_kem_keypair), + ) } /// Performs `dst = dst ^ src`. |
