Keystore 2.0: Provide confirmation token to operation.

This patch connects the APC manager to the enforment module and
ultimately to the operation, so that the confirmation token can be
delivered to operations that require it.

Also fix a bug in apc_compat.rs.

Test: CtsVerifier
Change-Id: I69b6b08b10f51d255c2d70da3a6354b04f0ce801
diff --git a/keystore2/src/operation.rs b/keystore2/src/operation.rs
index 97bab77..18ea19f 100644
--- a/keystore2/src/operation.rs
+++ b/keystore2/src/operation.rs
@@ -429,18 +429,25 @@
         let km_op: Box<dyn IKeyMintOperation> =
             self.km_op.get_interface().context("In finish: Failed to get KeyMintOperation.")?;
 
-        let (hat, tst) = self
+        let (hat, tst, confirmation_token) = self
             .auth_info
             .lock()
             .unwrap()
             .before_finish()
             .context("In finish: Trying to get auth tokens.")?;
 
+        let in_params = confirmation_token.map(|token| KeyParameterArray {
+            params: vec![KmParam {
+                tag: Tag::CONFIRMATION_TOKEN,
+                value: KmParamValue::Blob(token),
+            }],
+        });
+
         let output = self
             .update_outcome(
                 &mut *outcome,
                 map_km_error(km_op.finish(
-                    None,
+                    in_params.as_ref(),
                     input,
                     signature,
                     hat.as_ref(),