diff --git a/rust/Cargo.lock b/rust/Cargo.lock index ea944a76..991dbb2b 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -182,7 +182,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.18", + "syn", ] [[package]] @@ -340,7 +340,7 @@ checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn", ] [[package]] @@ -678,7 +678,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn", ] [[package]] @@ -765,9 +765,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.60" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" +checksum = "907a61bd0f64c2f29cd1cf1dc34d05176426a3f504a78010f08416ddb7b13708" dependencies = [ "unicode-ident", ] @@ -838,9 +838,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.28" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -971,7 +971,7 @@ checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn", ] [[package]] @@ -1077,20 +1077,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "1.0.109" +version = "2.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "1726efe18f42ae774cc644f330953a5e7b3c3003d3edcecf18850fe9d4dd9afb" dependencies = [ "proc-macro2", "quote", @@ -1124,7 +1113,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn", ] [[package]] @@ -1154,7 +1143,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn", ] [[package]] @@ -1392,9 +1381,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "zerocopy" -version = "0.6.1" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332f188cc1bcf1fe1064b8c58d150f497e697f49774aa846f2dc949d9a25f236" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "byteorder", "zerocopy-derive", @@ -1402,11 +1391,11 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.3.2" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6505e6815af7de1746a08f69c69606bb45695a17149517680f3b2149713b19a3" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] diff --git a/rust/pv/Cargo.toml b/rust/pv/Cargo.toml index 3dfd7a84..886a9d7b 100644 --- a/rust/pv/Cargo.toml +++ b/rust/pv/Cargo.toml @@ -13,7 +13,7 @@ openssl = "0.10.49" serde = { version = "1.0.139", features = ["derive"] } thiserror = "1.0.33" utils = {path = "../utils"} -zerocopy = "0.6" +zerocopy = { version="0.7", features = ["derive"] } openssl_extensions = { path = "openssl_extensions" } pv_core = { path = "../pv_core" } diff --git a/rust/pv/src/brcb.rs b/rust/pv/src/brcb.rs index 8f4bba98..8886238e 100644 --- a/rust/pv/src/brcb.rs +++ b/rust/pv/src/brcb.rs @@ -11,7 +11,7 @@ use std::{ use crate::{assert_size, static_assert, Error, Result, PAGESIZE}; use log::debug; use pv_core::request::MagicValue; -use zerocopy::{AsBytes, BigEndian, FromBytes, U32, U64}; +use zerocopy::{AsBytes, BigEndian, FromBytes, FromZeroes, U32, U64}; /// Struct containing all SE-header tags. /// @@ -142,7 +142,7 @@ impl BootHdrTags { } #[repr(C)] -#[derive(Debug, Clone, FromBytes)] +#[derive(Debug, Clone, FromBytes, FromZeroes)] struct BootHdrHead { magic: U64, version: U32, diff --git a/rust/pv/src/req.rs b/rust/pv/src/req.rs index f54b9a5c..0dc952a4 100644 --- a/rust/pv/src/req.rs +++ b/rust/pv/src/req.rs @@ -14,7 +14,7 @@ use openssl::hash::{hash, MessageDigest}; use openssl::pkey::{PKey, PKeyRef, Private, Public}; use pv_core::request::{RequestMagic, RequestVersion}; use std::convert::TryInto; -use zerocopy::{AsBytes, BigEndian, FromBytes, U32}; +use zerocopy::{AsBytes, BigEndian, FromBytes, FromZeroes, U32}; /// Encrypt a _secret_ using self and a given private key. pub trait Encrypt { @@ -310,7 +310,7 @@ ecdh_from!(Public); /// Representation of the shared parts of the request header. /// Used by [`ReqEncrCtx`] #[repr(C)] -#[derive(Debug, Copy, Clone, AsBytes, FromBytes)] +#[derive(Debug, Copy, Clone, AsBytes, FromBytes, FromZeroes)] struct RequestHdr { magic: [u8; 8], rqvn: U32, diff --git a/rust/pv_core/Cargo.toml b/rust/pv_core/Cargo.toml index 3d0efb10..6165400d 100644 --- a/rust/pv_core/Cargo.toml +++ b/rust/pv_core/Cargo.toml @@ -11,7 +11,7 @@ libc = "0.2.49" log = { version = "0.4.6", features = ["std", "release_max_level_debug"] } thiserror = "1.0.33" utils = {path = "../utils"} -zerocopy = "0.6" +zerocopy = {version = "0.7", features = ["derive"]} serde = { version = "1.0.139", features = ["derive"]} byteorder = "1.3" diff --git a/rust/pv_core/src/utils.rs b/rust/pv_core/src/utils.rs index 0952af07..3f67ff17 100644 --- a/rust/pv_core/src/utils.rs +++ b/rust/pv_core/src/utils.rs @@ -10,7 +10,7 @@ use std::{ io::{Read, Write}, path::Path, }; -use zerocopy::{AsBytes, BigEndian, FromBytes, U64}; +use zerocopy::{AsBytes, BigEndian, FromBytes, FromZeroes, U64}; /// Trait that describes bitflags, represented by `T`. pub trait Flags: From + for<'a> From<&'a T> { @@ -32,7 +32,7 @@ pub trait Flags: From + for<'a> From<&'a T> { /// /// Wraps an u64 to set/get individual bits #[repr(C)] -#[derive(Debug, Clone, Copy, Default, AsBytes, FromBytes)] +#[derive(Debug, Clone, Copy, Default, AsBytes, FromZeroes, FromBytes)] pub struct Msb0Flags64(U64); impl Flags for Msb0Flags64 { #[track_caller] @@ -74,7 +74,7 @@ impl From<&u64> for Msb0Flags64 { /// /// Wraps an u64 to set/get individual bits #[repr(C)] -#[derive(Debug, Clone, Copy, Default, AsBytes, FromBytes)] +#[derive(Debug, Clone, Copy, Default, AsBytes, FromZeroes, FromBytes)] pub struct Lsb0Flags64(U64); impl Flags for Lsb0Flags64 { #[track_caller] diff --git a/rust/pv_core/src/uvdevice/ffi.rs b/rust/pv_core/src/uvdevice/ffi.rs index 706e77d5..d70e7d19 100644 --- a/rust/pv_core/src/uvdevice/ffi.rs +++ b/rust/pv_core/src/uvdevice/ffi.rs @@ -3,7 +3,7 @@ // Copyright IBM Corp. 2023 use crate::{assert_size, static_assert}; -use zerocopy::{AsBytes, FromBytes}; +use zerocopy::{AsBytes, FromBytes, FromZeroes}; pub const UVIO_ATT_ARCB_MAX_LEN: usize = 0x100000; pub const UVIO_ATT_MEASUREMENT_MAX_LEN: usize = 0x8000; @@ -55,7 +55,7 @@ assert_size!(uvio_ioctl_cb, 0x40); /// Note that bit 0 (UVIO_IOCTL_UVDEV_INFO_NR) is always zero for `supp_uv_cmds` /// as there is no corresponding UV-call. #[repr(C)] -#[derive(Debug, Copy, Clone, AsBytes, FromBytes)] +#[derive(Debug, Copy, Clone, AsBytes, FromZeroes, FromBytes)] pub struct uvio_uvdev_info { pub supp_uvio_cmds: u64, pub supp_uv_cmds: u64, @@ -84,7 +84,7 @@ pub const UVIO_ATT_UID_LEN: usize = 0x10; /// UV will return invalid command rc. /// Obviously all numbers are in BIG-endian! #[repr(C)] -#[derive(Debug, AsBytes, FromBytes)] +#[derive(Debug, AsBytes, FromZeroes, FromBytes)] pub struct uvio_attest { pub arcb_addr: u64, //in pub meas_addr: u64, //out diff --git a/rust/pv_core/src/uvdevice/info.rs b/rust/pv_core/src/uvdevice/info.rs index 33b40af8..fd2057c0 100644 --- a/rust/pv_core/src/uvdevice/info.rs +++ b/rust/pv_core/src/uvdevice/info.rs @@ -9,7 +9,7 @@ use crate::{ Result, }; use std::fmt::Display; -use zerocopy::{AsBytes, FromBytes}; +use zerocopy::{AsBytes, FromZeroes}; /// Information of supported functions by the uvdevice /// diff --git a/rust/pv_core/src/uvdevice/secret.rs b/rust/pv_core/src/uvdevice/secret.rs index 4ec3c20b..2c2dc993 100644 --- a/rust/pv_core/src/uvdevice/secret.rs +++ b/rust/pv_core/src/uvdevice/secret.rs @@ -17,7 +17,7 @@ use std::{ slice::Iter, vec::IntoIter, }; -use zerocopy::{AsBytes, FromBytes, U16, U32}; +use zerocopy::{AsBytes, FromBytes, FromZeroes, U16, U32}; /// _List Secrets_ Ultravisor command. /// @@ -331,7 +331,7 @@ where /// A secret in a [`SecretList`] #[repr(C)] -#[derive(Debug, PartialEq, Eq, AsBytes, FromBytes, Serialize)] +#[derive(Debug, PartialEq, Eq, AsBytes, FromZeroes, FromBytes, Serialize)] pub struct SecretEntry { #[serde(serialize_with = "ser_u16")] index: U16,