diff --git a/src/data/state.rs b/src/data/state.rs index 9467487..6e8b215 100644 --- a/src/data/state.rs +++ b/src/data/state.rs @@ -171,13 +171,7 @@ impl State { } }; - let (blocks, whitelists, listeners, mut private_key) = try_join!(f1, f2, f3, f4)?; - - let private_key: RSAPrivateKey = web::block(move || { - private_key.precompute(); - Ok(private_key) as Result<_, std::convert::Infallible> - }) - .await?; + let (blocks, whitelists, listeners, private_key) = try_join!(f1, f2, f3, f4)?; let public_key = private_key.to_public_key(); let listeners = Arc::new(RwLock::new(listeners)); diff --git a/src/db.rs b/src/db.rs index 7ffbffc..82e04cd 100644 --- a/src/db.rs +++ b/src/db.rs @@ -152,7 +152,11 @@ impl Db { if let Some(row) = rows.into_iter().next() { let key_str: String = row.get(0); - return Ok(Some(KeyExt::from_pem_pkcs8(&key_str)?)); + // precomputation happens when constructing a private key, so it should be on the + // threadpool + let key = actix_web::web::block(move || KeyExt::from_pem_pkcs8(&key_str)).await?; + + return Ok(Some(key)); } Ok(None)