Merge "Revert "dice: add sign and encode with CoseSign1"" into main
diff --git a/libs/dice/open_dice/Android.bp b/libs/dice/open_dice/Android.bp
index 75f70c3..1870ab6 100644
--- a/libs/dice/open_dice/Android.bp
+++ b/libs/dice/open_dice/Android.bp
@@ -75,7 +75,6 @@
     defaults: ["libdiced_open_dice_test_defaults"],
     rustlibs: [
         "libdiced_open_dice",
-        "libcoset",
     ],
 }
 
@@ -84,7 +83,6 @@
     defaults: ["libdiced_open_dice_test_defaults"],
     rustlibs: [
         "libdiced_open_dice_nostd",
-        "libcoset_nostd",
     ],
 }
 
@@ -148,7 +146,6 @@
         "--allowlist-function=DiceKdf",
         "--allowlist-function=DiceKeypairFromSeed",
         "--allowlist-function=DiceSign",
-        "--allowlist-function=DiceCoseSignAndEncodeSign1",
         "--allowlist-function=DiceVerify",
         "--allowlist-function=DiceGenerateCertificate",
 
diff --git a/libs/dice/open_dice/bindgen/dice/dice.h b/libs/dice/open_dice/bindgen/dice/dice.h
index e6d5131..47fe911 100644
--- a/libs/dice/open_dice/bindgen/dice/dice.h
+++ b/libs/dice/open_dice/bindgen/dice/dice.h
@@ -16,4 +16,3 @@
 
 #include <dice/dice.h>
 #include <dice/ops.h>
-#include <dice/ops/trait/cose.h>
diff --git a/libs/dice/open_dice/bindgen/dice/rules.mk b/libs/dice/open_dice/bindgen/dice/rules.mk
index e9c4b81..0ea5c7c 100644
--- a/libs/dice/open_dice/bindgen/dice/rules.mk
+++ b/libs/dice/open_dice/bindgen/dice/rules.mk
@@ -39,7 +39,6 @@
 	DiceKdf \
 	DiceKeypairFromSeed \
 	DiceSign \
-	DiceCoseSignAndEncodeSign1 \
 	DiceVerify \
 	DiceGenerateCertificate \
 
diff --git a/libs/dice/open_dice/src/lib.rs b/libs/dice/open_dice/src/lib.rs
index 33fb65c..4d05255 100644
--- a/libs/dice/open_dice/src/lib.rs
+++ b/libs/dice/open_dice/src/lib.rs
@@ -43,11 +43,9 @@
 };
 pub use error::{DiceError, Result};
 pub use ops::{
-    derive_cdi_leaf_priv, generate_certificate, hash, kdf, keypair_from_seed, sign,
-    sign_cose_sign1, sign_cose_sign1_with_cdi_leaf_priv, verify,
+    derive_cdi_leaf_priv, generate_certificate, hash, kdf, keypair_from_seed, sign, verify,
 };
 pub use retry::{
     retry_bcc_format_config_descriptor, retry_bcc_main_flow, retry_dice_main_flow,
-    retry_generate_certificate, retry_sign_cose_sign1, retry_sign_cose_sign1_with_cdi_leaf_priv,
-    OwnedDiceArtifacts,
+    retry_generate_certificate, OwnedDiceArtifacts,
 };
diff --git a/libs/dice/open_dice/src/ops.rs b/libs/dice/open_dice/src/ops.rs
index 2014118..41951bf 100644
--- a/libs/dice/open_dice/src/ops.rs
+++ b/libs/dice/open_dice/src/ops.rs
@@ -23,8 +23,8 @@
 use crate::error::{check_result, DiceError, Result};
 use alloc::{vec, vec::Vec};
 use open_dice_cbor_bindgen::{
-    DiceCoseSignAndEncodeSign1, DiceGenerateCertificate, DiceHash, DiceKdf, DiceKeypairFromSeed,
-    DicePrincipal, DiceSign, DiceVerify,
+    DiceGenerateCertificate, DiceHash, DiceKdf, DiceKeypairFromSeed, DicePrincipal, DiceSign,
+    DiceVerify,
 };
 use std::ptr;
 
@@ -114,7 +114,7 @@
     Ok(private_key)
 }
 
-/// Signs the `message` with the given `private_key` using `DiceSign`.
+/// Signs the `message` with the give `private_key` using `DiceSign`.
 pub fn sign(message: &[u8], private_key: &[u8; PRIVATE_KEY_SIZE]) -> Result<Vec<u8>> {
     let mut signature = vec![0u8; VM_KEY_ALGORITHM.signature_size()];
     check_result(
@@ -136,58 +136,6 @@
     Ok(signature)
 }
 
-/// Signs the `message` with the given `private_key` and places a `CoseSign1` encoded
-/// object in `encoded_signature`. Uses `DiceCoseSignAndEncodeSign1`.
-///
-/// Returns the actual size of encoded_signature on success.
-pub fn sign_cose_sign1(
-    message: &[u8],
-    aad: &[u8],
-    private_key: &[u8; PRIVATE_KEY_SIZE],
-    encoded_signature: &mut [u8],
-) -> Result<usize> {
-    let mut encoded_signature_actual_size = 0;
-
-    check_result(
-        // SAFETY: The function writes to `encoded_signature` and `encoded_signature_actual_size`
-        // within the given bounds. It only reads `message`, `aad`, and `private_key` within their
-        // given bounds.
-        //
-        // The first argument is a pointer to a valid |DiceContext_| object for multi-alg open-dice
-        // and a null pointer otherwise.
-        unsafe {
-            DiceCoseSignAndEncodeSign1(
-                context(),
-                message.as_ptr(),
-                message.len(),
-                aad.as_ptr(),
-                aad.len(),
-                private_key.as_ptr(),
-                encoded_signature.len(),
-                encoded_signature.as_mut_ptr(),
-                &mut encoded_signature_actual_size,
-            )
-        },
-        encoded_signature_actual_size,
-    )?;
-    Ok(encoded_signature_actual_size)
-}
-
-/// Signs the `message` with a private key derived from the given `dice_artifacts`
-/// CDI Attest. On success, places a `CoseSign1` encoded object in `encoded_signature`.
-/// Uses `DiceCoseSignAndEncodeSign1`.
-///
-/// Returns the actual size of encoded_signature on success.
-pub fn sign_cose_sign1_with_cdi_leaf_priv(
-    message: &[u8],
-    aad: &[u8],
-    dice_artifacts: &dyn DiceArtifacts,
-    encoded_signature: &mut [u8],
-) -> Result<usize> {
-    let private_key = derive_cdi_leaf_priv(dice_artifacts)?;
-    sign_cose_sign1(message, aad, private_key.as_array(), encoded_signature)
-}
-
 /// Verifies the `signature` of the `message` with the given `public_key` using `DiceVerify`.
 pub fn verify(message: &[u8], signature: &[u8], public_key: &[u8]) -> Result<()> {
     if signature.len() != VM_KEY_ALGORITHM.signature_size()
diff --git a/libs/dice/open_dice/src/retry.rs b/libs/dice/open_dice/src/retry.rs
index cf36bc0..803673d 100644
--- a/libs/dice/open_dice/src/retry.rs
+++ b/libs/dice/open_dice/src/retry.rs
@@ -20,10 +20,9 @@
 use crate::bcc::{bcc_format_config_descriptor, bcc_main_flow, DiceConfigValues};
 use crate::dice::{
     dice_main_flow, Cdi, CdiValues, DiceArtifacts, InputValues, CDI_SIZE, PRIVATE_KEY_SEED_SIZE,
-    PRIVATE_KEY_SIZE,
 };
 use crate::error::{DiceError, Result};
-use crate::ops::{generate_certificate, sign_cose_sign1, sign_cose_sign1_with_cdi_leaf_priv};
+use crate::ops::generate_certificate;
 use alloc::vec::Vec;
 #[cfg(feature = "serde_derive")]
 use serde_derive::{Deserialize, Serialize};
@@ -145,28 +144,3 @@
         )
     })
 }
-
-/// Signs a message with the given private key and returns the signature
-/// as an encoded CoseSign1 object.
-pub fn retry_sign_cose_sign1(
-    message: &[u8],
-    aad: &[u8],
-    private_key: &[u8; PRIVATE_KEY_SIZE],
-) -> Result<Vec<u8>> {
-    retry_with_measured_buffer(|encoded_signature| {
-        sign_cose_sign1(message, aad, private_key, encoded_signature)
-    })
-}
-
-/// Signs a message with the given the private key derived from the
-/// CDI Attest of the given `dice_artifacts` and returns the signature
-/// as an encoded CoseSign1 object.
-pub fn retry_sign_cose_sign1_with_cdi_leaf_priv(
-    message: &[u8],
-    aad: &[u8],
-    dice_artifacts: &dyn DiceArtifacts,
-) -> Result<Vec<u8>> {
-    retry_with_measured_buffer(|encoded_signature| {
-        sign_cose_sign1_with_cdi_leaf_priv(message, aad, dice_artifacts, encoded_signature)
-    })
-}
diff --git a/libs/dice/open_dice/tests/api_test.rs b/libs/dice/open_dice/tests/api_test.rs
index b0c2ca7..d3a91ff 100644
--- a/libs/dice/open_dice/tests/api_test.rs
+++ b/libs/dice/open_dice/tests/api_test.rs
@@ -17,13 +17,10 @@
 #[cfg(test)]
 mod tests {
     use diced_open_dice::{
-        derive_cdi_certificate_id, derive_cdi_private_key_seed, hash, kdf, keypair_from_seed,
-        retry_sign_cose_sign1, retry_sign_cose_sign1_with_cdi_leaf_priv, sign, verify,
-        DiceArtifacts, PrivateKey, CDI_SIZE, HASH_SIZE, ID_SIZE, PRIVATE_KEY_SEED_SIZE,
+        derive_cdi_certificate_id, derive_cdi_private_key_seed, hash, kdf, keypair_from_seed, sign,
+        verify, CDI_SIZE, HASH_SIZE, ID_SIZE, PRIVATE_KEY_SEED_SIZE,
     };
 
-    use coset::{CborSerializable, CoseSign1};
-
     // This test initialization is only required for the trusty test harness.
     #[cfg(feature = "trusty")]
     test::init!();
@@ -69,7 +66,7 @@
         0x94, 0xd8, 0x8c, 0xa8,
     ];
 
-    const EXPECTED_CDI_ATTEST: &[u8; CDI_SIZE] = &[
+    const EXPECTED_CDI_ATTEST: &[u8] = &[
         0xfa, 0x3c, 0x2f, 0x58, 0x37, 0xf5, 0x8e, 0x96, 0x16, 0x09, 0xf5, 0x22, 0xa1, 0xf1, 0xba,
         0xaa, 0x19, 0x95, 0x01, 0x79, 0x2e, 0x60, 0x56, 0xaf, 0xf6, 0x41, 0xe7, 0xff, 0x48, 0xf5,
         0x3a, 0x08,
@@ -104,85 +101,6 @@
 
     #[test]
     fn hash_derive_sign_verify() {
-        let (pub_key, priv_key) = get_test_key_pair();
-
-        let mut signature = sign(b"MyMessage", priv_key.as_array()).unwrap();
-        assert_eq!(&signature, EXPECTED_SIGNATURE);
-        assert!(verify(b"MyMessage", &signature, &pub_key).is_ok());
-        assert!(verify(b"MyMessage_fail", &signature, &pub_key).is_err());
-        signature[0] += 1;
-        assert!(verify(b"MyMessage", &signature, &pub_key).is_err());
-    }
-
-    #[test]
-    fn sign_cose_sign1_verify() {
-        let (pub_key, priv_key) = get_test_key_pair();
-
-        let signature_res = retry_sign_cose_sign1(b"MyMessage", b"MyAad", priv_key.as_array());
-        assert!(signature_res.is_ok());
-        let signature = signature_res.unwrap();
-        let cose_sign1_res = CoseSign1::from_slice(&signature);
-        assert!(cose_sign1_res.is_ok());
-        let mut cose_sign1 = cose_sign1_res.unwrap();
-
-        let mut verify_result =
-            cose_sign1.verify_signature(b"MyAad", |sign, data| verify(data, sign, &pub_key));
-        assert!(verify_result.is_ok());
-
-        verify_result =
-            cose_sign1.verify_signature(b"BadAad", |sign, data| verify(data, sign, &pub_key));
-        assert!(verify_result.is_err());
-
-        // if we modify the signature, the payload should no longer verify
-        cose_sign1.signature.push(0xAA);
-        verify_result =
-            cose_sign1.verify_signature(b"MyAad", |sign, data| verify(data, sign, &pub_key));
-        assert!(verify_result.is_err());
-    }
-
-    struct TestArtifactsForSigning {}
-
-    impl DiceArtifacts for TestArtifactsForSigning {
-        fn cdi_attest(&self) -> &[u8; CDI_SIZE] {
-            EXPECTED_CDI_ATTEST
-        }
-
-        fn cdi_seal(&self) -> &[u8; CDI_SIZE] {
-            unimplemented!("no test functionality depends on this")
-        }
-
-        fn bcc(&self) -> Option<&[u8]> {
-            unimplemented!("no test functionality depends on this")
-        }
-    }
-
-    #[test]
-    fn sign_cose_sign1_with_cdi_leaf_priv_verify() {
-        let dice = TestArtifactsForSigning {};
-
-        let signature_res = retry_sign_cose_sign1_with_cdi_leaf_priv(b"MyMessage", b"MyAad", &dice);
-        assert!(signature_res.is_ok());
-        let signature = signature_res.unwrap();
-        let cose_sign1_res = CoseSign1::from_slice(&signature);
-        assert!(cose_sign1_res.is_ok());
-        let mut cose_sign1 = cose_sign1_res.unwrap();
-
-        let mut verify_result = cose_sign1
-            .verify_signature(b"MyAad", |sign, data| verify(data, sign, EXPECTED_PUB_KEY));
-        assert!(verify_result.is_ok());
-
-        verify_result = cose_sign1
-            .verify_signature(b"BadAad", |sign, data| verify(data, sign, EXPECTED_PUB_KEY));
-        assert!(verify_result.is_err());
-
-        // if we modify the signature, the payload should no longer verify
-        cose_sign1.signature.push(0xAA);
-        verify_result = cose_sign1
-            .verify_signature(b"MyAad", |sign, data| verify(data, sign, EXPECTED_PUB_KEY));
-        assert!(verify_result.is_err());
-    }
-
-    fn get_test_key_pair() -> (Vec<u8>, PrivateKey) {
         let seed = hash(b"MySeedString").unwrap();
         assert_eq!(seed, EXPECTED_SEED);
         let cdi_attest = &seed[..CDI_SIZE];
@@ -193,7 +111,11 @@
         let (pub_key, priv_key) = keypair_from_seed(cdi_private_key_seed.as_array()).unwrap();
         assert_eq!(&pub_key, EXPECTED_PUB_KEY);
         assert_eq!(priv_key.as_array(), EXPECTED_PRIV_KEY);
-
-        (pub_key, priv_key)
+        let mut signature = sign(b"MyMessage", priv_key.as_array()).unwrap();
+        assert_eq!(&signature, EXPECTED_SIGNATURE);
+        assert!(verify(b"MyMessage", &signature, &pub_key).is_ok());
+        assert!(verify(b"MyMessage_fail", &signature, &pub_key).is_err());
+        signature[0] += 1;
+        assert!(verify(b"MyMessage", &signature, &pub_key).is_err());
     }
 }
diff --git a/libs/dice/open_dice/tests/rules.mk b/libs/dice/open_dice/tests/rules.mk
index 83a6bff..a9d332c 100644
--- a/libs/dice/open_dice/tests/rules.mk
+++ b/libs/dice/open_dice/tests/rules.mk
@@ -23,7 +23,6 @@
 
 MODULE_LIBRARY_DEPS += \
 	packages/modules/Virtualization/libs/dice/open_dice \
-	$(call FIND_CRATE,coset) \
 
 MODULE_RUST_TESTS := true