Move away from openssl

This commit is contained in:
Lncvrt committed 2026-04-19 16:00:06 -07:00
1 parent c3cee9c927
commit 8ca82777cc
2 files changed
+26 -17

No files matched your search

+2 -1
View File
@@ -31,12 +31,13 @@ tauri-plugin-notification = "2.3.3"
sha2 = "0.11.0"
tauri-plugin-clipboard-manager = "2.3.2"
tauri-plugin-prevent-default = "5.0.0"
openssl = { version = "0.10.78", features = ["vendored"] }
base64 = "0.22.1"
tauri-plugin-http = "2.5.8"
dashmap = "6.1.0"
tauri-plugin-store = "2.4.2"
hex = "0.4.3"
ed25519-dalek = { version = "2.2.0", features = ["pkcs8"] }
pem = "3.0.6"
[target.'cfg(any(target_os = "windows", target_os = "linux"))'.dependencies]
sysinfo = "0.38.4"
+24 -16
View File
@@ -1,8 +1,9 @@
use base64::{Engine as _, engine::general_purpose};
use base64::Engine;
use dashmap::DashMap;
use ed25519_dalek::pkcs8::DecodePublicKey;
use ed25519_dalek::{Signature, Verifier, VerifyingKey};
use futures_util::stream::StreamExt;
use openssl::pkey::PKey;
use openssl::sign::Verifier;
use pem::parse;
use sha2::{Digest, Sha512};
use std::fs;
use std::path::Path;
@@ -509,24 +510,31 @@ fn launch_game(
#[tauri::command]
fn verify_signature(body: String, signature: String, public_key: String) -> bool {
let Ok(pem) = general_purpose::STANDARD.decode(public_key) else {
return false;
};
let Ok(pubkey) = PKey::public_key_from_pem(&pem) else {
return false;
};
let Ok(sig) = general_purpose::STANDARD.decode(signature) else {
let Ok(pubkey_pem_bytes) = base64::engine::general_purpose::STANDARD.decode(public_key) else {
return false;
};
let mut verifier = match Verifier::new_without_digest(&pubkey) {
Ok(v) => v,
Err(_) => return false,
let Ok(sig_bytes) = base64::engine::general_purpose::STANDARD.decode(signature) else {
return false;
};
verifier
.verify_oneshot(&sig, body.as_bytes())
.unwrap_or(false)
let Ok(pubkey_pem) = String::from_utf8(pubkey_pem_bytes) else {
return false;
};
let Ok(parsed) = parse(pubkey_pem) else {
return false;
};
let Ok(pubkey) = VerifyingKey::from_public_key_der(&parsed.contents()) else {
return false;
};
let Ok(sig) = Signature::from_slice(&sig_bytes) else {
return false;
};
pubkey.verify(body.as_bytes(), &sig).is_ok()
}
#[tauri::command]