[dice] Move format_condig_descriptor to diced_open_dice

Test: atest diced_utils_test diced_sample_inputs_test \
diced_test diced_vendor_test diced_open_dice_cbor_test \
diced_client_test
Test: m pvmfw_img microdroid_manager
Test: atest microdroid_manager_test vmbase_example.integration_test
Bug: 267575445

Change-Id: Iba7f775c1d1a3070c119da546edad38c2bbf67ac
diff --git a/diced/src/lib.rs b/diced/src/lib.rs
index 50e0e96..9e70ace 100644
--- a/diced/src/lib.rs
+++ b/diced/src/lib.rs
@@ -36,6 +36,7 @@
 use keystore2_selinux as selinux;
 use libc::uid_t;
 use permission::Permission;
+use std::ffi::CString;
 use std::sync::Arc;
 
 /// A DiceNode backend implementation.
@@ -97,11 +98,12 @@
 }
 
 fn client_input_values(uid: uid_t) -> Result<BinderInputValues> {
+    let desc = CString::new(format!("{}", uid)).unwrap();
     Ok(BinderInputValues {
         codeHash: [0; dice::HASH_SIZE],
         config: BinderConfig {
-            desc: dice::bcc::format_config_descriptor(Some(&format!("{}", uid)), None, false)
-                .context("In client_input_values: failed to format config descriptor")?,
+            desc: dice::retry_bcc_format_config_descriptor(Some(desc.as_c_str()), None, true)
+                .unwrap(),
         },
         authorityHash: [0; dice::HASH_SIZE],
         authorityDescriptor: None,