[rkp] Implement main steps to generate certificate request
This cl implements the main steps required to generate a
certificate request within the RKP HAL. The DICE chain will be
included once retrieved in the service VM.
Bug: 299256925
Test: atest rialto_test
Change-Id: Ia2055e13d3f5e31617bde01851059764d814f25e
diff --git a/rialto/tests/test.rs b/rialto/tests/test.rs
index c9d68ed..6a6dcf4 100644
--- a/rialto/tests/test.rs
+++ b/rialto/tests/test.rs
@@ -22,12 +22,14 @@
binder::{ParcelFileDescriptor, ProcessState},
};
use anyhow::{bail, Context, Result};
+use ciborium::value::Value;
use log::info;
use service_vm_comm::{
EcdsaP256KeyPair, GenerateCertificateRequestParams, Request, Response, VmType,
};
use service_vm_manager::ServiceVm;
use std::fs::File;
+use std::io;
use std::panic;
use std::path::PathBuf;
use vmclient::VmInstance;
@@ -101,11 +103,24 @@
info!("Received response: {response:?}.");
match response {
- Response::GenerateCertificateRequest(_) => Ok(()),
+ Response::GenerateCertificateRequest(csr) => check_csr(csr),
_ => bail!("Incorrect response type: {response:?}"),
}
}
+/// TODO(b/300625792): Check the CSR with libhwtrust once the CSR is complete.
+fn check_csr(csr: Vec<u8>) -> Result<()> {
+ let mut reader = io::Cursor::new(csr);
+ let csr: Value = ciborium::from_reader(&mut reader)?;
+ match csr {
+ Value::Array(arr) => {
+ assert_eq!(4, arr.len());
+ }
+ _ => bail!("Incorrect CSR format: {csr:?}"),
+ }
+ Ok(())
+}
+
fn start_service_vm(vm_type: VmType) -> Result<ServiceVm> {
android_logger::init_once(
android_logger::Config::default().with_tag("rialto").with_min_level(log::Level::Debug),