From c352dc0212b35a1345a0ed86bc482145c5924ce4 Mon Sep 17 00:00:00 2001 From: EETagent Date: Fri, 11 Nov 2022 19:56:30 +0100 Subject: [PATCH] feat: decrypt portfolio --- core/src/services/candidate_service.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/src/services/candidate_service.rs b/core/src/services/candidate_service.rs index 3b4e944..98dcb26 100644 --- a/core/src/services/candidate_service.rs +++ b/core/src/services/candidate_service.rs @@ -218,6 +218,26 @@ impl CandidateService { Ok(()) } + pub async fn get_portfolio(candidate_id: i32, db: &DbConn) -> Result, ServiceError> { + let Ok(candidate) = Query::find_candidate_by_id(db, candidate_id).await else { + return Err(ServiceError::DbError); + }; + + let Some(candidate) = candidate else { + return Err(ServiceError::UserNotFound); + }; + + let candidate_public_key = candidate.public_key; + + let path = Path::new(&candidate_id.to_string()).join("PORTFOLIO.zip"); + + let Ok(buffer) = crypto::decrypt_file_with_private_key_as_buffer(path, &candidate_public_key).await else { + return Err(ServiceError::CryptoDecryptFailed); + }; + + Ok(buffer) + } + async fn decrypt_private_key( candidate: candidate::Model, password: String,