[cbor] Add parse_value_array func for slice to value array conversion

This util function can be used to parse the DICE chain in other
projects like secretkeeper later.

Test: atest libservice_vm_requests.test
Change-Id: I93744be489dfcdb6cb43972629b576280a52fd02
diff --git a/libs/cborutil/src/lib.rs b/libs/cborutil/src/lib.rs
index 6e834f1..4d308c1 100644
--- a/libs/cborutil/src/lib.rs
+++ b/libs/cborutil/src/lib.rs
@@ -21,7 +21,7 @@
 use alloc::string::String;
 use alloc::vec::Vec;
 use ciborium::value::{Integer, Value};
-use coset::{CoseError, CoseKey, Label, Result};
+use coset::{CborSerializable, CoseError, CoseKey, Label, Result};
 use log::error;
 use serde::{de::DeserializeOwned, Serialize};
 
@@ -43,6 +43,11 @@
     }
 }
 
+/// Parses the given CBOR-encoded byte slice as a value array.
+pub fn parse_value_array(data: &[u8], context: &'static str) -> Result<Vec<Value>> {
+    value_to_array(Value::from_slice(data)?, context)
+}
+
 /// Converts the provided value `v` to a value array.
 pub fn value_to_array(v: Value, context: &'static str) -> Result<Vec<Value>> {
     v.into_array().map_err(|e| to_unexpected_item_error(&e, "array", context))