/*
 * Copyright 2022 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.
 */

//! Handles the use of DICE (via diced / IDiceNode) for accessing our VM's unique secret.

use android_security_dice::aidl::android::security::dice::IDiceNode::IDiceNode;
use android_security_dice::binder::{wait_for_interface, Strong};
use anyhow::{Context, Result};

#[derive(Clone)]
pub struct Dice {
    node: Strong<dyn IDiceNode>,
}

impl Dice {
    pub fn new() -> Result<Self> {
        let dice_service = wait_for_interface::<dyn IDiceNode>("android.security.dice.IDiceNode")
            .context("No IDiceNode service")?;
        Ok(Self { node: dice_service })
    }

    pub fn get_sealing_cdi(&self) -> Result<Vec<u8>> {
        let input_values = [];
        let bcc_handover = self.node.derive(&input_values).context("Failed to retrieve CDI")?;
        Ok(bcc_handover.cdiSeal.to_vec())
    }
}
