diff options
| author | David Lönnhager <david.l@mullvad.net> | 2025-02-25 17:51:07 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2025-03-06 00:09:17 +0100 |
| commit | fcc8ae39aa2bcd89a857cd16603019192bd3faf9 (patch) | |
| tree | 514b825b607c9c3005da82be5040390bef382b7c /mullvad-update/src/client | |
| parent | 2ac281969fde80ce9e2baa62092bd5d94884f6be (diff) | |
| download | mullvadvpn-fcc8ae39aa2bcd89a857cd16603019192bd3faf9.tar.xz mullvadvpn-fcc8ae39aa2bcd89a857cd16603019192bd3faf9.zip | |
Make meta tool build on Linux
Diffstat (limited to 'mullvad-update/src/client')
| -rw-r--r-- | mullvad-update/src/client/app.rs | 2 | ||||
| -rw-r--r-- | mullvad-update/src/client/verify.rs | 34 |
2 files changed, 5 insertions, 31 deletions
diff --git a/mullvad-update/src/client/app.rs b/mullvad-update/src/client/app.rs index decf8d932b..6b894dd201 100644 --- a/mullvad-update/src/client/app.rs +++ b/mullvad-update/src/client/app.rs @@ -1,3 +1,5 @@ +#![cfg(any(target_os = "macos", target_os = "windows"))] + //! This module implements the flow of downloading and verifying the app. use std::{ffi::OsString, path::PathBuf, time::Duration}; diff --git a/mullvad-update/src/client/verify.rs b/mullvad-update/src/client/verify.rs index 08738206ee..28a53f839d 100644 --- a/mullvad-update/src/client/verify.rs +++ b/mullvad-update/src/client/verify.rs @@ -1,8 +1,7 @@ use anyhow::Context; -use sha2::Digest; use tokio::{ fs, - io::{AsyncRead, AsyncReadExt, BufReader}, + io::{AsyncRead, BufReader}, }; use std::{future::Future, path::Path}; @@ -22,11 +21,6 @@ pub trait AppVerifier: 'static + Clone { #[derive(Clone)] pub struct Sha256Verifier; -impl Sha256Verifier { - /// Maximum number of bytes to read at a time - const BUF_SIZE: usize = 1024 * 1024; -} - impl AppVerifier for Sha256Verifier { /// The checksum type Parameters = [u8; 32]; @@ -49,34 +43,11 @@ impl AppVerifier for Sha256Verifier { } impl Sha256Verifier { - pub async fn generate_hash( - mut reader: impl AsyncRead + Unpin, - ) -> anyhow::Result<[u8; 32]> - { - let mut hasher = sha2::Sha256::new(); - - // Read data into hasher - let mut buffer = vec![0u8; Self::BUF_SIZE]; - loop { - let read_n = reader - .read(&mut buffer) - .await - .context("Error reading bin file")?; - if read_n == 0 { - // We're done - break; - } - hasher.update(&buffer[..read_n]); - } - - Ok(hasher.finalize().into()) - } - async fn verify_inner( reader: impl AsyncRead + Unpin, expected_hash: [u8; 32], ) -> anyhow::Result<()> { - let actual_hash = Self::generate_hash(reader).await?; + let actual_hash = crate::hash::checksum(reader).await?; // Verify that hash is correct if expected_hash != actual_hash { @@ -90,6 +61,7 @@ impl Sha256Verifier { #[cfg(test)] mod test { use rand::RngCore; + use sha2::Digest; use std::io::Cursor; use super::*; |
