[service-vm] Add more context when reading value as bytes failed

Test: atest rialto_test
Change-Id: I1ecec1a6fadd7cb16b83727e5d219da5f22ff0eb
diff --git a/service_vm/comm/src/csr.rs b/service_vm/comm/src/csr.rs
index 5e1cbad..17c69bd 100644
--- a/service_vm/comm/src/csr.rs
+++ b/service_vm/comm/src/csr.rs
@@ -19,6 +19,7 @@
 use alloc::vec::Vec;
 use ciborium::Value;
 use coset::{self, CborSerializable, CoseError};
+use log::error;
 
 /// Represents a CSR sent from the client VM to the service VM for attestation.
 #[derive(Clone, Debug, Eq, PartialEq)]
@@ -52,8 +53,8 @@
             return Err(CoseError::UnexpectedItem("array", "array with 2 items"));
         }
         Ok(Self {
-            signed_csr_payload: try_as_bytes(arr.remove(1))?,
-            dice_cert_chain: try_as_bytes(arr.remove(0))?,
+            signed_csr_payload: try_as_bytes(arr.remove(1), "signed_csr_payload")?,
+            dice_cert_chain: try_as_bytes(arr.remove(0), "dice_cert_chain")?,
         })
     }
 }
@@ -91,17 +92,19 @@
             return Err(CoseError::UnexpectedItem("array", "array with 2 items"));
         }
         Ok(Self {
-            challenge: try_as_bytes(arr.remove(1))?,
-            public_key: try_as_bytes(arr.remove(0))?,
+            challenge: try_as_bytes(arr.remove(1), "challenge")?,
+            public_key: try_as_bytes(arr.remove(0), "public_key")?,
         })
     }
 }
 
-fn try_as_bytes(v: Value) -> coset::Result<Vec<u8>> {
+fn try_as_bytes(v: Value, context: &str) -> coset::Result<Vec<u8>> {
     if let Value::Bytes(data) = v {
         Ok(data)
     } else {
-        Err(CoseError::UnexpectedItem(cbor_value_type(&v), "bytes"))
+        let v_type = cbor_value_type(&v);
+        error!("The provided value type '{v_type}' is not of type 'bytes': {context}");
+        Err(CoseError::UnexpectedItem(v_type, "bytes"))
     }
 }