Implement and integrate the verification token handler.
This CL implements a background task handler which for now, runs
a thread to retrieve verification tokens. This CL also integrates
this handler with the enforcement module, in order to allow operations
to receive verification tokens.
Bug: 171503362, 171503128
Test: TBD
Change-Id: I2ed0742043095dafb3b5cb7581ca3a2a70929ecc
diff --git a/keystore2/src/keystore2_main.rs b/keystore2/src/keystore2_main.rs
index 7391f37..8607eef 100644
--- a/keystore2/src/keystore2_main.rs
+++ b/keystore2/src/keystore2_main.rs
@@ -16,9 +16,12 @@
use binder::Interface;
use keystore2::apc::ApcManager;
+use keystore2::background_task_handler::Message;
+use keystore2::globals::{BACKGROUND_TASK_HANDLER, ENFORCEMENTS};
use keystore2::service::KeystoreService;
use log::{error, info};
use std::panic;
+use std::sync::mpsc::channel;
static KS2_SERVICE_NAME: &str = "android.system.keystore2";
static APC_SERVICE_NAME: &str = "android.security.apc";
@@ -50,6 +53,14 @@
panic!("Must specify a working directory.");
}
+ // initialize the channel via which the enforcement module and background task handler module
+ // communicate, and hand over the sender and receiver ends to the respective objects.
+ let (sender, receiver) = channel::<Message>();
+ ENFORCEMENTS.set_sender_to_bth(sender);
+ BACKGROUND_TASK_HANDLER.start_bth(receiver).unwrap_or_else(|e| {
+ panic!("Failed to start background task handler because of {:?}.", e);
+ });
+
info!("Starting thread pool now.");
binder::ProcessState::start_thread_pool();