From 0dacba12596a7a8696cc2ad94f435d38bfdedcd3 Mon Sep 17 00:00:00 2001 From: Airyzz <36567925+Airyzz@users.noreply.github.com> Date: Wed, 21 Oct 2026 19:23:02 +1030 Subject: [PATCH] change to use new pgp public key --- public-key.asc | 9 ++++++++ src/cli.rs | 3 +++ src/command.rs | 1 + src/command/install_utils.rs | 6 +++++ src/command/verify.rs | 43 ++++++++++++++++++++++++++++++++++++ src/config.rs | 23 +------------------ src/main.rs | 5 +++++ 7 files changed, 68 insertions(+), 22 deletions(-) create mode 100644 public-key.asc create mode 100644 src/command/verify.rs diff --git a/public-key.asc b/public-key.asc new file mode 100644 index 0000000..0390766 --- /dev/null +++ b/public-key.asc @@ -0,0 +1,9 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEas3osBYJKwYBBAHaRw8BAQdALOec4NqCqGHROt56oATD/RSPgutQUqTecSxz +QBI5eAG0IWNvbW1ldC5jaGF0IDxjb250YWN0QGNvbW1ldC5jaGF0PoiTBBMWCgA7 +FiEECvDGdkMZIcK28HeHAb6sN2i0EZUFAmrN6LACGwMFCwkIBwICIgIGFQoJCAsC +BBYCAwECHgcCF4AACgkQAb6sN2i0EZVlgQD/frVCSbJY+2HKm7yE1gPkRJCHPrOw +xvuyjUoOfhf87UEBANc6JyWZb11r7DX5WeUz75VcLMzDXMzWcVkpBCXrd0sG +=e/bE +-----END PGP PUBLIC KEY BLOCK----- diff --git a/src/cli.rs b/src/cli.rs index 7831d71..447df28 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -11,4 +11,7 @@ pub struct Args { #[arg(short, long, default_value_t = false)] pub prerelease: bool, + + #[arg(short, long, default_value = None)] + pub signature: Option, } diff --git a/src/command.rs b/src/command.rs index 90b1de1..72ad9cf 100644 --- a/src/command.rs +++ b/src/command.rs @@ -1,2 +1,3 @@ mod install_utils; pub mod installer; +pub mod verify; diff --git a/src/command/install_utils.rs b/src/command/install_utils.rs index 3ee0446..635789f 100644 --- a/src/command/install_utils.rs +++ b/src/command/install_utils.rs @@ -38,6 +38,7 @@ pub async fn fetch_info( .per_page(100) .send() .await?; + for release in releases.items.iter() { if use_prereleases == false && release.prerelease { continue; @@ -138,6 +139,11 @@ pub fn verify_release(download: &ReleaseDownload) -> bool { } }; + info!( + "Public key: {:#?}", + public_key.details.users.first().unwrap().id + ); + let (signature, _headers) = match DetachedSignature::from_armor_single(Cursor::new(download.signature.clone())) { Ok(sig) => sig, diff --git a/src/command/verify.rs b/src/command/verify.rs new file mode 100644 index 0000000..954e781 --- /dev/null +++ b/src/command/verify.rs @@ -0,0 +1,43 @@ +use log::info; + +use crate::{ + cli::Args, + command::install_utils::{verify_release, ReleaseDownload}, +}; + +pub fn verify(args: Args, set_text: F) -> bool +where + F: Fn(&str) -> (), +{ + info!("Starting installation"); + + set_text("Verifying release"); + + if let Some(file) = args.build { + let bytes = std::fs::read(&file).unwrap(); + + if let Some(sig) = args.signature { + let sig = std::fs::read(&sig).unwrap(); + + let file = ReleaseDownload { + signature: sig, + binary: bytes, + }; + + set_text("Read files"); + + if verify_release(&file) == false { + set_text("Failed to verify release..."); + return false; + } else { + set_text("Verified release!") + } + } else { + set_text("No signature") + } + } else { + set_text("No file to verify") + } + + return false; +} diff --git a/src/config.rs b/src/config.rs index 44fa2c1..a856818 100644 --- a/src/config.rs +++ b/src/config.rs @@ -10,25 +10,4 @@ pub const WINDOWS_SIGNATURE_NAME: &str = "commet-windows.zip.asc"; pub const WINDOWS_EXE_NAME: &str = "commet.exe"; pub const WINDOWS_SHORTCUT_NAME: &str = "Commet.lnk"; -pub const PUBLIC_KEY: &str = "-----BEGIN PGP PUBLIC KEY BLOCK----- - -xiYEaVcZBRudW9w7efKKX9fRmwwQ8VSGeBDxPR/L1ZiorA99Ja93y80cQ29tbWV0 -IDxjb250YWN0QGNvbW1ldC5jaGF0PsKCBBMbCAAuBQJpVxkFFiEEdJSx+k46noJT -sEiwnYIftF7A4aoCGwECHgEBCwEVARYBJwIZAQAKCRCdgh+0XsDhqiE1sVz/Q146 -a/XQm2yeA+QJ4KuD+YY7j1zUl8gNZGJtl4LfvzMlEgrl9Tt8r6FP35mlRhKl+XSG -GwMpXUeHJwxvCM4mBGlXGQUbia8Ea3sb8PNFMjxgTF+gjCOBou6vMn8dCux6QEqs -fSDCwCcEGBsIAJMFAmlXGQUCGwIWIQR0lLH6TjqeglOwSLCdgh+0XsDhqnIgBBkb -CAAdBQJpVxkFFiEExdz0cdzyrZo8ihAhUfYeLD/fY80ACgkQUfYeLD/fY812w6BM -9avvCNSTmyogmsYLBpUb5XxaSe+3J6WhwBHyblaodZ2dlJg+npi1qRnMxvz+jTyQ -ctgmD24jtS2EbXlkCQkACgkQnYIftF7A4aqUviQ+fo2mEwweefVoqGuu2Tx/04B2 -RY6FOKYsZL4qnEEO8lW7MoLXhVev8QHxmA6TQae8KZKbh8MXdCHW/cA3ZwjOOARp -VxkFEgorBgEEAZdVAQUBAQdAQatH56zW5TzNugWIsK1UGACqdQ/FCFcG/KT5LDiW -TDwDAQgHwnQEGBsIACAFAmlXGQUCGwwWIQR0lLH6TjqeglOwSLCdgh+0XsDhqgAK -CRCdgh+0XsDhqg1ipzJFtQCftqPRNvYPq96xFw3SAAE3CpAfHi+gwOk3BM7FmMxV -COa2WMfqY9EZxYWMwsbF6wZMdI2w3TLbo68MCc4zBGlXGQUWCSsGAQQB2kcPAQEH -QKcpVnktGVrHWHShUhp2Xb/nX6bQfy57gCe8zQ4Kzp0fwnQEGBsIACAFAmlXGQUC -GyAWIQR0lLH6TjqeglOwSLCdgh+0XsDhqgAKCRCdgh+0XsDhqkolM/gHzXSWM9t5 -menzfZtegZnLPZ+n/zufzXdidzGa1K88juIrgoUjGZYJXnPHOJKm8qBXbLBscDkc -SHrEquc3Cw== -=wnah ------END PGP PUBLIC KEY BLOCK-----"; +pub const PUBLIC_KEY: &str = include_str!("../public-key.asc"); diff --git a/src/main.rs b/src/main.rs index 1edd7be..0f0a5ef 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,6 +45,11 @@ fn main() { prompt = "Update Commet"; } + if args.command == "verify" { + command::verify::verify(args, |s| info!("{}", s)); + return; + } + let content = content.replace("${BUTTON_PROMPT}", prompt); web_view::builder()