[rkpvm] Move requests module to a separate library
To facilitate the testing later.
No code change in this cl.
Bug: 301068421
Test: atest rialto_test
Change-Id: Iec5b56f08ae462d83dad1e97cd0031fe16eb3189
diff --git a/service_vm/requests/src/api.rs b/service_vm/requests/src/api.rs
new file mode 100644
index 0000000..eae0370
--- /dev/null
+++ b/service_vm/requests/src/api.rs
@@ -0,0 +1,39 @@
+// Copyright 2023, The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! This module contains the main API for the request processing module.
+
+use crate::rkp;
+use alloc::vec::Vec;
+use diced_open_dice::DiceArtifacts;
+use service_vm_comm::{Request, Response};
+
+/// Processes a request and returns the corresponding response.
+/// This function serves as the entry point for the request processing
+/// module.
+pub fn process_request(request: Request, dice_artifacts: &dyn DiceArtifacts) -> Response {
+ match request {
+ Request::Reverse(v) => Response::Reverse(reverse(v)),
+ Request::GenerateEcdsaP256KeyPair => rkp::generate_ecdsa_p256_key_pair(dice_artifacts)
+ .map_or_else(Response::Err, Response::GenerateEcdsaP256KeyPair),
+ Request::GenerateCertificateRequest(p) => {
+ rkp::generate_certificate_request(p, dice_artifacts)
+ .map_or_else(Response::Err, Response::GenerateCertificateRequest)
+ }
+ }
+}
+
+fn reverse(payload: Vec<u8>) -> Vec<u8> {
+ payload.into_iter().rev().collect()
+}