diff --git a/Cargo.lock b/Cargo.lock index 8af87b3f..8983bbeb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2022,6 +2022,7 @@ name = "ironrdp-ainput" version = "0.1.0" dependencies = [ "bitflags 2.6.0", + "ironrdp-core", "ironrdp-dvc", "ironrdp-pdu", "num-derive", @@ -2093,6 +2094,7 @@ dependencies = [ name = "ironrdp-cliprdr-format" version = "0.1.0" dependencies = [ + "ironrdp-core", "ironrdp-pdu", "png", "thiserror", @@ -2196,6 +2198,7 @@ dependencies = [ "bmp", "byteorder", "expect-test", + "ironrdp-core", "ironrdp-error", "ironrdp-pdu", "lazy_static", @@ -2322,6 +2325,7 @@ name = "ironrdp-session" version = "0.1.0" dependencies = [ "ironrdp-connector", + "ironrdp-core", "ironrdp-displaycontrol", "ironrdp-dvc", "ironrdp-error", @@ -2355,6 +2359,7 @@ dependencies = [ "ironrdp-cliprdr", "ironrdp-cliprdr-format", "ironrdp-connector", + "ironrdp-core", "ironrdp-displaycontrol", "ironrdp-dvc", "ironrdp-fuzzing", @@ -2806,6 +2811,7 @@ name = "now-proto-pdu" version = "0.1.0" dependencies = [ "bitflags 2.6.0", + "ironrdp-core", "ironrdp-error", "ironrdp-pdu", ] diff --git a/crates/ironrdp-ainput/Cargo.toml b/crates/ironrdp-ainput/Cargo.toml index 2d1e5fd3..cc136776 100644 --- a/crates/ironrdp-ainput/Cargo.toml +++ b/crates/ironrdp-ainput/Cargo.toml @@ -22,6 +22,7 @@ bitflags.workspace = true num-derive.workspace = true # TODO: remove num-traits.workspace = true # TODO: remove +ironrdp-core.workspace = true [lints] workspace = true diff --git a/crates/ironrdp-ainput/src/lib.rs b/crates/ironrdp-ainput/src/lib.rs index e13bec0b..a7afe8fb 100644 --- a/crates/ironrdp-ainput/src/lib.rs +++ b/crates/ironrdp-ainput/src/lib.rs @@ -3,7 +3,7 @@ use ironrdp_dvc::DvcPduEncode; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{ensure_fixed_part_size, invalid_message_err, PduDecode, PduEncode, PduResult}; // Advanced Input channel as defined from Freerdp, [here]: // diff --git a/crates/ironrdp-cliprdr-format/Cargo.toml b/crates/ironrdp-cliprdr-format/Cargo.toml index 646c9164..e3362485 100644 --- a/crates/ironrdp-cliprdr-format/Cargo.toml +++ b/crates/ironrdp-cliprdr-format/Cargo.toml @@ -20,6 +20,7 @@ test = false ironrdp-pdu.workspace = true thiserror.workspace = true png = "0.17" +ironrdp-core.workspace = true [lints] workspace = true diff --git a/crates/ironrdp-cliprdr-format/src/bitmap.rs b/crates/ironrdp-cliprdr-format/src/bitmap.rs index 7f65e124..c05ba81a 100644 --- a/crates/ironrdp-cliprdr-format/src/bitmap.rs +++ b/crates/ironrdp-cliprdr-format/src/bitmap.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{cast_int, ensure_fixed_part_size, invalid_message_err, PduDecode, PduEncode, PduResult}; use thiserror::Error; diff --git a/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs b/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs index e6bc8a0e..1a34ab16 100644 --- a/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs +++ b/crates/ironrdp-cliprdr-native/src/windows/cliprdr_backend.rs @@ -1,11 +1,11 @@ use std::sync::mpsc as mpsc_sync; -use ironrdp_core::impl_as_any; use ironrdp_cliprdr::backend::CliprdrBackend; use ironrdp_cliprdr::pdu::{ ClipboardFormat, ClipboardGeneralCapabilityFlags, FileContentsRequest, FileContentsResponse, FormatDataRequest, FormatDataResponse, LockDataId, }; +use ironrdp_core::impl_as_any; use windows::Win32::Foundation::{HWND, LPARAM, WPARAM}; use windows::Win32::UI::WindowsAndMessaging::PostMessageW; diff --git a/crates/ironrdp-cliprdr/src/pdu/capabilities.rs b/crates/ironrdp-cliprdr/src/pdu/capabilities.rs index e98876b0..33849547 100644 --- a/crates/ironrdp-cliprdr/src/pdu/capabilities.rs +++ b/crates/ironrdp-cliprdr/src/pdu/capabilities.rs @@ -1,5 +1,5 @@ use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{ cast_int, cast_length, ensure_fixed_part_size, ensure_size, impl_pdu_pod, invalid_message_err, read_padding, write_padding, PduDecode, PduEncode, PduResult, diff --git a/crates/ironrdp-cliprdr/src/pdu/client_temporary_directory.rs b/crates/ironrdp-cliprdr/src/pdu/client_temporary_directory.rs index 31de8c7b..4041e774 100644 --- a/crates/ironrdp-cliprdr/src/pdu/client_temporary_directory.rs +++ b/crates/ironrdp-cliprdr/src/pdu/client_temporary_directory.rs @@ -1,6 +1,6 @@ use std::borrow::Cow; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::utils::{read_string_from_cursor, write_string_to_cursor, CharacterSet}; use ironrdp_pdu::{ cast_int, ensure_size, impl_pdu_borrowing, invalid_message_err, IntoOwnedPdu, PduDecode, PduEncode, PduResult, diff --git a/crates/ironrdp-cliprdr/src/pdu/file_contents.rs b/crates/ironrdp-cliprdr/src/pdu/file_contents.rs index 74b10c25..21dc13eb 100644 --- a/crates/ironrdp-cliprdr/src/pdu/file_contents.rs +++ b/crates/ironrdp-cliprdr/src/pdu/file_contents.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::utils::{combine_u64, split_u64}; use ironrdp_pdu::{ cast_int, ensure_size, impl_pdu_borrowing, invalid_message_err, IntoOwnedPdu, PduDecode, PduEncode, PduResult, diff --git a/crates/ironrdp-cliprdr/src/pdu/format_data/file_list.rs b/crates/ironrdp-cliprdr/src/pdu/format_data/file_list.rs index 9d934335..206e05c1 100644 --- a/crates/ironrdp-cliprdr/src/pdu/format_data/file_list.rs +++ b/crates/ironrdp-cliprdr/src/pdu/format_data/file_list.rs @@ -1,5 +1,5 @@ use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::utils::{combine_u64, decode_string, encode_string, split_u64, CharacterSet}; use ironrdp_pdu::{cast_length, ensure_fixed_part_size, impl_pdu_pod, write_padding, PduDecode, PduEncode, PduResult}; diff --git a/crates/ironrdp-cliprdr/src/pdu/format_data/metafile.rs b/crates/ironrdp-cliprdr/src/pdu/format_data/metafile.rs index 115e5dbd..176b62d6 100644 --- a/crates/ironrdp-cliprdr/src/pdu/format_data/metafile.rs +++ b/crates/ironrdp-cliprdr/src/pdu/format_data/metafile.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{ensure_fixed_part_size, ensure_size, PduDecode, PduEncode, PduResult}; bitflags! { diff --git a/crates/ironrdp-cliprdr/src/pdu/format_data/mod.rs b/crates/ironrdp-cliprdr/src/pdu/format_data/mod.rs index b3bef69f..78077738 100644 --- a/crates/ironrdp-cliprdr/src/pdu/format_data/mod.rs +++ b/crates/ironrdp-cliprdr/src/pdu/format_data/mod.rs @@ -9,7 +9,7 @@ pub use self::palette::*; #[rustfmt::skip] use std::borrow::Cow; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::utils::{read_string_from_cursor, to_utf16_bytes, CharacterSet}; use ironrdp_pdu::{ cast_int, ensure_fixed_part_size, ensure_size, impl_pdu_borrowing, IntoOwnedPdu, PduDecode, PduEncode, PduResult, diff --git a/crates/ironrdp-cliprdr/src/pdu/format_data/palette.rs b/crates/ironrdp-cliprdr/src/pdu/format_data/palette.rs index 30d0908c..6d84cd77 100644 --- a/crates/ironrdp-cliprdr/src/pdu/format_data/palette.rs +++ b/crates/ironrdp-cliprdr/src/pdu/format_data/palette.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{impl_pdu_pod, PduDecode, PduEncode, PduResult}; /// Represents `PALETTEENTRY` diff --git a/crates/ironrdp-cliprdr/src/pdu/format_list.rs b/crates/ironrdp-cliprdr/src/pdu/format_list.rs index 8b7cc3f2..ad865c5c 100644 --- a/crates/ironrdp-cliprdr/src/pdu/format_list.rs +++ b/crates/ironrdp-cliprdr/src/pdu/format_list.rs @@ -1,6 +1,6 @@ use std::borrow::Cow; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::utils::{read_string_from_cursor, to_utf16_bytes, write_string_to_cursor, CharacterSet}; use ironrdp_pdu::{ cast_int, ensure_size, impl_pdu_borrowing, impl_pdu_pod, invalid_message_err, IntoOwnedPdu, PduDecode, PduEncode, diff --git a/crates/ironrdp-cliprdr/src/pdu/lock.rs b/crates/ironrdp-cliprdr/src/pdu/lock.rs index c02172fb..6cee7e86 100644 --- a/crates/ironrdp-cliprdr/src/pdu/lock.rs +++ b/crates/ironrdp-cliprdr/src/pdu/lock.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{cast_int, ensure_fixed_part_size, impl_pdu_pod, PduDecode, PduEncode, PduResult}; use crate::pdu::PartialHeader; diff --git a/crates/ironrdp-cliprdr/src/pdu/mod.rs b/crates/ironrdp-cliprdr/src/pdu/mod.rs index 7b1dfd69..3a16dc76 100644 --- a/crates/ironrdp-cliprdr/src/pdu/mod.rs +++ b/crates/ironrdp-cliprdr/src/pdu/mod.rs @@ -17,7 +17,7 @@ pub use self::lock::*; #[rustfmt::skip] use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{ensure_fixed_part_size, invalid_message_err, PduDecode, PduEncode, PduResult}; use ironrdp_svc::SvcPduEncode; diff --git a/crates/ironrdp-pdu/src/cursor.rs b/crates/ironrdp-core/src/cursor.rs similarity index 60% rename from crates/ironrdp-pdu/src/cursor.rs rename to crates/ironrdp-core/src/cursor.rs index 697ccc76..41100392 100644 --- a/crates/ironrdp-pdu/src/cursor.rs +++ b/crates/ironrdp-core/src/cursor.rs @@ -1,5 +1,52 @@ -use crate::PduResult; +use core::fmt; +/// Error indicating that there are not enough bytes in the buffer to perform an operation. +#[derive(Copy, Eq, PartialEq, Clone, Debug)] +pub struct NotEnoughBytesError { + received: usize, + expected: usize, +} + +impl NotEnoughBytesError { + /// The number of bytes received. + #[must_use] + #[inline] + pub const fn received(&self) -> usize { + self.received + } + + /// The number of bytes expected. + #[must_use] + #[inline] + pub const fn expected(&self) -> usize { + self.expected + } +} + +impl fmt::Display for NotEnoughBytesError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "not enough bytes for operation: received {} bytes, expected {} bytes", + self.received, self.expected + ) + } +} + +#[cfg(feature = "std")] +impl std::error::Error for NotEnoughBytesError {} + +macro_rules! ensure_size { + (in: $buf:ident, size: $expected:expr) => {{ + let received = $buf.len(); + let expected = $expected; + if !(received >= expected) { + return Err(NotEnoughBytesError { received, expected }); + } + }}; +} + +/// A cursor for reading bytes from a buffer. #[derive(Clone, Debug)] pub struct ReadCursor<'a> { inner: &'a [u8], @@ -7,27 +54,32 @@ pub struct ReadCursor<'a> { } impl<'a> ReadCursor<'a> { + /// Create a new `ReadCursor` from a byte slice. #[inline] pub const fn new(bytes: &'a [u8]) -> Self { Self { inner: bytes, pos: 0 } } + /// Returns the number of bytes remaining. #[inline] #[track_caller] pub const fn len(&self) -> usize { self.inner.len() - self.pos } + /// Returns `true` if there are no bytes remaining. #[inline] pub const fn is_empty(&self) -> bool { self.len() == 0 } + /// Returns `true` if there are no bytes remaining. #[inline] pub const fn eof(&self) -> bool { self.is_empty() } + /// Returns a slice of the remaining bytes. #[inline] #[track_caller] pub fn remaining(&self) -> &'a [u8] { @@ -35,6 +87,7 @@ impl<'a> ReadCursor<'a> { &self.inner[idx..] } + /// Returns two cursors, one with the first `mid` bytes and the other with the remaining bytes. #[inline] #[track_caller] #[must_use] @@ -48,6 +101,9 @@ impl<'a> ReadCursor<'a> { (left, right) } + /// Returns two cursors, one with the first `mid` bytes and the other with the remaining bytes. + /// + /// The current cursor will be moved to the end. #[inline] #[track_caller] #[must_use] @@ -57,16 +113,19 @@ impl<'a> ReadCursor<'a> { res } + /// Return the inner byte slice. #[inline] pub const fn inner(&self) -> &[u8] { self.inner } + /// Returns the current position. #[inline] pub const fn pos(&self) -> usize { self.pos } + /// Read an array of `N` bytes. #[inline] #[track_caller] pub fn read_array(&mut self) -> [u8; N] { @@ -75,6 +134,7 @@ impl<'a> ReadCursor<'a> { bytes.try_into().expect("N-elements array") } + /// Read a slice of `n` bytes. #[inline] #[track_caller] pub fn read_slice(&mut self, n: usize) -> &'a [u8] { @@ -83,286 +143,335 @@ impl<'a> ReadCursor<'a> { bytes } + /// Read the remaining bytes. pub fn read_remaining(&mut self) -> &[u8] { self.read_slice(self.len()) } + /// Read a `u8`. #[inline] #[track_caller] pub fn read_u8(&mut self) -> u8 { self.read_array::<1>()[0] } + /// Try to read a `u8`. #[inline] - pub fn try_read_u8(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 1); + pub fn try_read_u8(&mut self) -> Result { + ensure_size!(in: self, size: 1); Ok(self.read_array::<1>()[0]) } + /// Read a `i16`. #[inline] #[track_caller] pub fn read_i16(&mut self) -> i16 { i16::from_le_bytes(self.read_array::<2>()) } + /// Read a `i16` in big-endian. #[inline] #[track_caller] pub fn read_i16_be(&mut self) -> i16 { i16::from_be_bytes(self.read_array::<2>()) } + /// Try to read a `i16`. #[inline] - pub fn try_read_i16(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 2); + pub fn try_read_i16(&mut self) -> Result { + ensure_size!(in: self, size: 2); Ok(i16::from_le_bytes(self.read_array::<2>())) } + /// Try to read a `i16` in big-endian. #[inline] - pub fn try_read_i16_be(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 2); + pub fn try_read_i16_be(&mut self) -> Result { + ensure_size!(in: self, size: 2); Ok(i16::from_be_bytes(self.read_array::<2>())) } + /// Read a `u16`. #[inline] #[track_caller] pub fn read_u16(&mut self) -> u16 { u16::from_le_bytes(self.read_array::<2>()) } + /// Read a `u16` in big-endian. #[inline] #[track_caller] pub fn read_u16_be(&mut self) -> u16 { u16::from_be_bytes(self.read_array::<2>()) } + /// Try to read a `u16`. #[inline] - pub fn try_read_u16(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 2); + pub fn try_read_u16(&mut self) -> Result { + ensure_size!(in: self, size: 2); Ok(u16::from_le_bytes(self.read_array::<2>())) } + /// Try to read a `u16` in big-endian. #[inline] - pub fn try_read_u16_be(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 2); + pub fn try_read_u16_be(&mut self) -> Result { + ensure_size!(in: self, size: 2); Ok(u16::from_be_bytes(self.read_array::<2>())) } + /// Read a `u32`. #[inline] #[track_caller] pub fn read_u32(&mut self) -> u32 { u32::from_le_bytes(self.read_array::<4>()) } + /// Read a `u32` in big-endian. #[inline] #[track_caller] pub fn read_u32_be(&mut self) -> u32 { u32::from_be_bytes(self.read_array::<4>()) } + /// Try to read a `u32`. #[inline] - pub fn try_read_u32(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 4); + pub fn try_read_u32(&mut self) -> Result { + ensure_size!(in: self, size: 4); Ok(u32::from_le_bytes(self.read_array::<4>())) } + /// Try to read a `u32` in big-endian. #[inline] - pub fn try_read_u32_be(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 4); + pub fn try_read_u32_be(&mut self) -> Result { + ensure_size!(in: self, size: 4); Ok(u32::from_be_bytes(self.read_array::<4>())) } + /// Read a `u64`. #[inline] #[track_caller] pub fn read_u64(&mut self) -> u64 { u64::from_le_bytes(self.read_array::<8>()) } + /// Read a `u64` in big-endian. #[inline] #[track_caller] pub fn read_u64_be(&mut self) -> u64 { u64::from_be_bytes(self.read_array::<8>()) } + /// Try to read a `u64`. #[inline] - pub fn try_read_u64(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 8); + pub fn try_read_u64(&mut self) -> Result { + ensure_size!(in: self, size: 8); Ok(u64::from_le_bytes(self.read_array::<8>())) } + /// Try to read a `u64` in big-endian. #[inline] - pub fn try_read_u64_be(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 8); + pub fn try_read_u64_be(&mut self) -> Result { + ensure_size!(in: self, size: 8); Ok(u64::from_be_bytes(self.read_array::<8>())) } + /// Read a `i32`. #[inline] pub fn read_i32(&mut self) -> i32 { i32::from_le_bytes(self.read_array::<4>()) } + /// Read a `i32` in big-endian. #[inline] pub fn read_i32_be(&mut self) -> i32 { i32::from_be_bytes(self.read_array::<4>()) } + /// Try to read a `i32`. #[inline] - pub fn try_read_i32(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 4); + pub fn try_read_i32(&mut self) -> Result { + ensure_size!(in: self, size: 4); Ok(i32::from_le_bytes(self.read_array::<4>())) } + /// Try to read a `i32` in big-endian. #[inline] - pub fn try_read_i32_be(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 4); + pub fn try_read_i32_be(&mut self) -> Result { + ensure_size!(in: self, size: 4); Ok(i32::from_be_bytes(self.read_array::<4>())) } + /// Read a `i64`. #[inline] pub fn read_i64(&mut self) -> i64 { i64::from_le_bytes(self.read_array::<8>()) } + /// Read a `i64` in big-endian. #[inline] pub fn read_i64_be(&mut self) -> i64 { i64::from_be_bytes(self.read_array::<8>()) } + /// Try to read a `i64`. #[inline] - pub fn try_read_i64(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 8); + pub fn try_read_i64(&mut self) -> Result { + ensure_size!(in: self, size: 8); Ok(i64::from_le_bytes(self.read_array::<8>())) } + /// Try to read a `i64` in big-endian. #[inline] - pub fn try_read_i64_be(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 8); + pub fn try_read_i64_be(&mut self) -> Result { + ensure_size!(in: self, size: 8); Ok(i64::from_be_bytes(self.read_array::<8>())) } + /// Read a `u128`. #[inline] pub fn read_u128(&mut self) -> u128 { u128::from_le_bytes(self.read_array::<16>()) } + /// Read a `u128` in big-endian. #[inline] pub fn read_u128_be(&mut self) -> u128 { u128::from_be_bytes(self.read_array::<16>()) } + /// Try to read a `u128`. #[inline] - pub fn try_read_u128(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 16); + pub fn try_read_u128(&mut self) -> Result { + ensure_size!(in: self, size: 16); Ok(u128::from_le_bytes(self.read_array::<16>())) } + /// Try to read a `u128` in big-endian. #[inline] - pub fn try_read_u128_be(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 16); + pub fn try_read_u128_be(&mut self) -> Result { + ensure_size!(in: self, size: 16); Ok(u128::from_be_bytes(self.read_array::<16>())) } + /// Peek at the next `N` bytes without consuming them. #[inline] #[track_caller] pub fn peek(&mut self) -> [u8; N] { self.inner[self.pos..self.pos + N].try_into().expect("N-elements array") } + /// Peek at the next `N` bytes without consuming them. #[inline] #[track_caller] pub fn peek_slice(&mut self, n: usize) -> &'a [u8] { &self.inner[self.pos..self.pos + n] } + /// Peek a `u8` without consuming it. #[inline] #[track_caller] pub fn peek_u8(&mut self) -> u8 { self.peek::<1>()[0] } + /// Try to peek a `u8` without consuming it. #[inline] - pub fn try_peek_u8(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 1); + pub fn try_peek_u8(&mut self) -> Result { + ensure_size!(in: self, size: 1); Ok(self.peek::<1>()[0]) } + /// Peek a `u16` without consuming it. #[inline] #[track_caller] pub fn peek_u16(&mut self) -> u16 { u16::from_le_bytes(self.peek::<2>()) } + /// Peek a big-endian `u16` without consuming it. #[inline] #[track_caller] pub fn peek_u16_be(&mut self) -> u16 { u16::from_be_bytes(self.peek::<2>()) } + /// Try to peek a `u16` without consuming it. #[inline] - pub fn try_peek_u16(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 2); + pub fn try_peek_u16(&mut self) -> Result { + ensure_size!(in: self, size: 2); Ok(u16::from_le_bytes(self.peek::<2>())) } + /// Try to peek a big-endian `u16` without consuming it. #[inline] - pub fn try_peek_u16_be(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 2); + pub fn try_peek_u16_be(&mut self) -> Result { + ensure_size!(in: self, size: 2); Ok(u16::from_be_bytes(self.peek::<2>())) } + /// Peek a `u32` without consuming it. #[inline] #[track_caller] pub fn peek_u32(&mut self) -> u32 { u32::from_le_bytes(self.peek::<4>()) } + /// Peek a big-endian `u32` without consuming it. #[inline] #[track_caller] pub fn peek_u32_be(&mut self) -> u32 { u32::from_be_bytes(self.peek::<4>()) } + /// Try to peek a `u32` without consuming it. #[inline] - pub fn try_peek_u32(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 4); + pub fn try_peek_u32(&mut self) -> Result { + ensure_size!(in: self, size: 4); Ok(u32::from_le_bytes(self.peek::<4>())) } + /// Try to peek a big-endian `u32` without consuming it. #[inline] - pub fn try_peek_u32_be(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 4); + pub fn try_peek_u32_be(&mut self) -> Result { + ensure_size!(in: self, size: 4); Ok(u32::from_be_bytes(self.peek::<4>())) } + /// Peek a `u64` without consuming it. #[inline] #[track_caller] pub fn peek_u64(&mut self) -> u64 { u64::from_le_bytes(self.peek::<8>()) } + /// Peek a big-endian `u64` without consuming it. #[inline] #[track_caller] pub fn peek_u64_be(&mut self) -> u64 { u64::from_be_bytes(self.peek::<8>()) } + /// Try to peek a `u64` without consuming it. #[inline] - pub fn try_peek_u64(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 8); + pub fn try_peek_u64(&mut self) -> Result { + ensure_size!(in: self, size: 8); Ok(u64::from_le_bytes(self.peek::<8>())) } + /// Try to peek a big-endian `u64` without consuming it. #[inline] - pub fn try_peek_u64_be(&mut self, ctx: &'static str) -> PduResult { - ensure_size!(ctx: ctx, in: self, size: 8); + pub fn try_peek_u64_be(&mut self) -> Result { + ensure_size!(in: self, size: 8); Ok(u64::from_be_bytes(self.peek::<8>())) } + /// Advance the cursor by `len` bytes. #[inline] #[track_caller] pub fn advance(&mut self, len: usize) { self.pos += len; } + /// Return a new cursor advanced by `len` bytes. #[inline] #[track_caller] #[must_use] @@ -373,12 +482,14 @@ impl<'a> ReadCursor<'a> { } } + /// Rewind the cursor by `len` bytes. #[inline] #[track_caller] pub fn rewind(&mut self, len: usize) { self.pos -= len; } + /// Return a new cursor rewinded by `len` bytes. #[inline] #[track_caller] #[must_use] @@ -400,6 +511,7 @@ impl std::io::Read for ReadCursor<'_> { } } +/// A cursor for writing bytes to a buffer. #[derive(Debug)] pub struct WriteCursor<'a> { inner: &'a mut [u8], @@ -407,27 +519,32 @@ pub struct WriteCursor<'a> { } impl<'a> WriteCursor<'a> { + /// Create a new `WriteCursor` from a mutable slice of bytes. #[inline] pub fn new(bytes: &'a mut [u8]) -> Self { Self { inner: bytes, pos: 0 } } + /// Returns the number of bytes remaining. #[inline] #[track_caller] pub const fn len(&self) -> usize { self.inner.len() - self.pos } + /// Returns `true` if there are no bytes remaining. #[inline] pub const fn is_empty(&self) -> bool { self.len() == 0 } + /// Returns `true` if there are no bytes remaining. #[inline] pub const fn eof(&self) -> bool { self.is_empty() } + /// Returns a slice of the remaining bytes. #[inline] #[track_caller] pub fn remaining(&self) -> &[u8] { @@ -435,6 +552,7 @@ impl<'a> WriteCursor<'a> { &self.inner[idx..] } + /// Returns a mutable slice of the remaining bytes. #[inline] #[track_caller] pub fn remaining_mut(&mut self) -> &mut [u8] { @@ -442,21 +560,25 @@ impl<'a> WriteCursor<'a> { &mut self.inner[idx..] } + /// Returns the innner byte slice. #[inline] pub const fn inner(&self) -> &[u8] { self.inner } + /// Returns the inner mutable byte slice. #[inline] pub fn inner_mut(&mut self) -> &mut [u8] { self.inner } + /// Returns the current position of the cursor. #[inline] pub const fn pos(&self) -> usize { self.pos } + /// Write an array of bytes to the buffer. #[inline] #[track_caller] pub fn write_array(&mut self, array: [u8; N]) { @@ -464,6 +586,7 @@ impl<'a> WriteCursor<'a> { self.pos += N; } + /// Write a slice of bytes to the buffer. #[inline] #[track_caller] pub fn write_slice(&mut self, slice: &[u8]) { @@ -472,102 +595,119 @@ impl<'a> WriteCursor<'a> { self.pos += n; } + /// Write a byte to the buffer. #[inline] #[track_caller] pub fn write_u8(&mut self, value: u8) { self.write_array(value.to_le_bytes()) } + /// Write a signed byte to the buffer. #[inline] #[track_caller] pub fn write_i8(&mut self, value: i8) { self.write_array(value.to_le_bytes()) } + /// Write a little-endian `u16` to the buffer. #[inline] #[track_caller] pub fn write_u16(&mut self, value: u16) { self.write_array(value.to_le_bytes()) } + /// Write a big-endian `u16` to the buffer. #[inline] #[track_caller] pub fn write_u16_be(&mut self, value: u16) { self.write_array(value.to_be_bytes()) } + /// Write a signed little-endian `i16` to the buffer. #[inline] #[track_caller] pub fn write_i16(&mut self, value: i16) { self.write_array(value.to_le_bytes()) } + /// Write a signed big-endian `i16` to the buffer. #[inline] #[track_caller] pub fn write_i16_be(&mut self, value: i16) { self.write_array(value.to_be_bytes()) } + /// Write a little-endian `u32` to the buffer. #[inline] #[track_caller] pub fn write_u32(&mut self, value: u32) { self.write_array(value.to_le_bytes()) } + /// Write a big-endian `u32` to the buffer. #[inline] #[track_caller] pub fn write_u32_be(&mut self, value: u32) { self.write_array(value.to_be_bytes()) } + /// Write a signed little-endian `i32` to the buffer. #[inline] #[track_caller] pub fn write_i32(&mut self, value: i32) { self.write_array(value.to_le_bytes()) } + /// Write a little-endian `u64` to the buffer. #[inline] #[track_caller] pub fn write_u64(&mut self, value: u64) { self.write_array(value.to_le_bytes()) } + /// Write a big-endian `u64` to the buffer. #[inline] #[track_caller] pub fn write_u64_be(&mut self, value: u64) { self.write_array(value.to_be_bytes()) } + /// Write a signed little-endian `i64` to the buffer. #[inline] #[track_caller] pub fn write_i64(&mut self, value: i64) { self.write_array(value.to_le_bytes()) } + /// Write a signed big-endian `i64` to the buffer. #[inline] #[track_caller] pub fn write_i64_be(&mut self, value: i64) { self.write_array(value.to_be_bytes()) } + /// Write a little-endian `u128` to the buffer. #[inline] #[track_caller] pub fn write_u128(&mut self, value: u128) { self.write_array(value.to_le_bytes()) } + /// Write a big-endian `u128` to the buffer. #[inline] #[track_caller] pub fn write_u128_be(&mut self, value: u128) { self.write_array(value.to_be_bytes()) } + /// Advance the cursor by `len` bytes. #[inline] #[track_caller] pub fn advance(&mut self, len: usize) { self.pos += len; } + /// Returns a new cursor advanced by `len` bytes. #[inline] #[track_caller] #[must_use] @@ -578,12 +718,14 @@ impl<'a> WriteCursor<'a> { } } + /// Rewind the cursor by `len` bytes. #[inline] #[track_caller] pub fn rewind(&mut self, len: usize) { self.pos -= len; } + /// Returns a new cursor rewinded by `len` bytes. #[inline] #[track_caller] #[must_use] diff --git a/crates/ironrdp-core/src/lib.rs b/crates/ironrdp-core/src/lib.rs index ac00a695..424f6463 100644 --- a/crates/ironrdp-core/src/lib.rs +++ b/crates/ironrdp-core/src/lib.rs @@ -11,10 +11,12 @@ extern crate alloc; mod macros; mod as_any; +mod cursor; // Flat API hierarchy of common traits and types pub use self::as_any::*; +pub use self::cursor::*; // Trait that can only be implemented within the current module pub(crate) mod private { diff --git a/crates/ironrdp-core/src/macros.rs b/crates/ironrdp-core/src/macros.rs index b7367994..e6cd6382 100644 --- a/crates/ironrdp-core/src/macros.rs +++ b/crates/ironrdp-core/src/macros.rs @@ -21,4 +21,3 @@ macro_rules! assert_impl { }; }; } - diff --git a/crates/ironrdp-displaycontrol/src/client.rs b/crates/ironrdp-displaycontrol/src/client.rs index deb1346f..bb7e1dcb 100644 --- a/crates/ironrdp-displaycontrol/src/client.rs +++ b/crates/ironrdp-displaycontrol/src/client.rs @@ -2,9 +2,9 @@ use crate::{ pdu::{DisplayControlCapabilities, DisplayControlMonitorLayout, DisplayControlPdu}, CHANNEL_NAME, }; -use ironrdp_core::impl_as_any; +use ironrdp_core::{impl_as_any, ReadCursor}; use ironrdp_dvc::{encode_dvc_messages, DvcClientProcessor, DvcMessage, DvcProcessor}; -use ironrdp_pdu::{cursor::ReadCursor, PduDecode, PduResult}; +use ironrdp_pdu::{PduDecode, PduResult}; use ironrdp_svc::{ChannelFlags, SvcMessage}; use tracing::debug; diff --git a/crates/ironrdp-displaycontrol/src/pdu/mod.rs b/crates/ironrdp-displaycontrol/src/pdu/mod.rs index 4ca1286e..46560286 100644 --- a/crates/ironrdp-displaycontrol/src/pdu/mod.rs +++ b/crates/ironrdp-displaycontrol/src/pdu/mod.rs @@ -2,8 +2,8 @@ //! //! [1]: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpedisp/d2954508-f487-48bc-8731-39743e0854a9 +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_dvc::DvcPduEncode; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; use ironrdp_pdu::{ensure_fixed_part_size, invalid_message_err, PduDecode, PduEncode, PduResult}; use tracing::warn; diff --git a/crates/ironrdp-dvc/src/client.rs b/crates/ironrdp-dvc/src/client.rs index 2981cbff..76ee41f4 100644 --- a/crates/ironrdp-dvc/src/client.rs +++ b/crates/ironrdp-dvc/src/client.rs @@ -7,9 +7,9 @@ use alloc::vec::Vec; use core::any::TypeId; use core::fmt; use ironrdp_core::impl_as_any; +use ironrdp_core::ReadCursor; use ironrdp_pdu as pdu; use ironrdp_svc::{ChannelFlags, CompressionCondition, SvcClientProcessor, SvcMessage, SvcProcessor}; -use pdu::cursor::ReadCursor; use pdu::gcc::ChannelName; use pdu::other_err; use pdu::PduDecode as _; diff --git a/crates/ironrdp-dvc/src/pdu.rs b/crates/ironrdp-dvc/src/pdu.rs index 1a5975e0..cca6d9f1 100644 --- a/crates/ironrdp-dvc/src/pdu.rs +++ b/crates/ironrdp-dvc/src/pdu.rs @@ -2,10 +2,9 @@ use alloc::format; use core::fmt; use crate::{DynamicChannelId, String, Vec}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{ - cast_length, - cursor::{ReadCursor, WriteCursor}, - ensure_fixed_part_size, ensure_size, invalid_message_err, unsupported_pdu_err, + cast_length, ensure_fixed_part_size, ensure_size, invalid_message_err, unsupported_pdu_err, utils::{checked_sum, encoded_str_len, read_string_from_cursor, strict_sum, write_string_to_cursor, CharacterSet}, PduDecode, PduEncode, PduError, PduResult, }; diff --git a/crates/ironrdp-dvc/src/server.rs b/crates/ironrdp-dvc/src/server.rs index 3301ef27..23c68bce 100644 --- a/crates/ironrdp-dvc/src/server.rs +++ b/crates/ironrdp-dvc/src/server.rs @@ -6,9 +6,9 @@ use alloc::boxed::Box; use alloc::vec::Vec; use core::fmt; use ironrdp_core::impl_as_any; +use ironrdp_core::ReadCursor; use ironrdp_pdu as pdu; use ironrdp_svc::{ChannelFlags, CompressionCondition, SvcMessage, SvcProcessor, SvcServerProcessor}; -use pdu::cursor::ReadCursor; use pdu::gcc::ChannelName; use pdu::PduDecode as _; use pdu::PduResult; diff --git a/crates/ironrdp-graphics/Cargo.toml b/crates/ironrdp-graphics/Cargo.toml index 3a127033..2cee70b4 100644 --- a/crates/ironrdp-graphics/Cargo.toml +++ b/crates/ironrdp-graphics/Cargo.toml @@ -20,6 +20,7 @@ bit_field = "0.10" bitflags.workspace = true bitvec = "1.0" byteorder.workspace = true # TODO: remove +ironrdp-core.workspace = true ironrdp-error.workspace = true ironrdp-pdu = { workspace = true, features = ["std"] } lazy_static.workspace = true # TODO: remove in favor of https://doc.rust-lang.org/std/sync/struct.OnceLock.html diff --git a/crates/ironrdp-graphics/src/pointer.rs b/crates/ironrdp-graphics/src/pointer.rs index 1502774a..862236d4 100644 --- a/crates/ironrdp-graphics/src/pointer.rs +++ b/crates/ironrdp-graphics/src/pointer.rs @@ -19,7 +19,7 @@ //! - andMask == 1, xorMask == 0(black color) -> Transparent pixel //! - andMask == 1, xorMask == 1(white color) -> Pixel is inverted -use ironrdp_pdu::cursor::ReadCursor; +use ironrdp_core::ReadCursor; use ironrdp_pdu::pointer::{ColorPointerAttribute, LargePointerAttribute, PointerAttribute}; use thiserror::Error; diff --git a/crates/ironrdp-graphics/src/rdp6/bitmap_stream/encoder.rs b/crates/ironrdp-graphics/src/rdp6/bitmap_stream/encoder.rs index 9e619ff3..c678f28b 100644 --- a/crates/ironrdp-graphics/src/rdp6/bitmap_stream/encoder.rs +++ b/crates/ironrdp-graphics/src/rdp6/bitmap_stream/encoder.rs @@ -1,5 +1,5 @@ +use ironrdp_core::WriteCursor; use ironrdp_pdu::bitmap::rdp6::{BitmapStreamHeader, ColorPlaneDefinition}; -use ironrdp_pdu::cursor::WriteCursor; use ironrdp_pdu::PduError; use thiserror::Error; diff --git a/crates/ironrdp-graphics/src/rdp6/rle.rs b/crates/ironrdp-graphics/src/rdp6/rle.rs index c0f8a0c0..36052e84 100644 --- a/crates/ironrdp-graphics/src/rdp6/rle.rs +++ b/crates/ironrdp-graphics/src/rdp6/rle.rs @@ -1,7 +1,7 @@ use std::io::{Read, Write}; use byteorder::ReadBytesExt; -use ironrdp_pdu::cursor::WriteCursor; +use ironrdp_core::WriteCursor; use thiserror::Error; /// Maximum possible segment size is 47 (run_length = 2, raw_bytes_count = 15), which is treated as diff --git a/crates/ironrdp-graphics/src/rle.rs b/crates/ironrdp-graphics/src/rle.rs index b938fe2d..6d6c9646 100644 --- a/crates/ironrdp-graphics/src/rle.rs +++ b/crates/ironrdp-graphics/src/rle.rs @@ -538,7 +538,7 @@ fn extract_run_length_mega_mega(src: &mut Buf<'_>) -> Result { } } -// TODO: use ironrdp_pdu::cursor::ReadCursor instead +// TODO: use ironrdp_core::ReadCursor instead struct Buf<'a> { inner: &'a [u8], pos: usize, @@ -584,7 +584,7 @@ impl<'a> Buf<'a> { } } -// TODO: use ironrdp_pdu::cursor::WriteCursor instead +// TODO: use ironrdp_core::WriteCursor instead struct BufMut<'a> { inner: &'a mut [u8], pos: usize, diff --git a/crates/ironrdp-pdu/Cargo.toml b/crates/ironrdp-pdu/Cargo.toml index ca044c70..5f1eb20b 100644 --- a/crates/ironrdp-pdu/Cargo.toml +++ b/crates/ironrdp-pdu/Cargo.toml @@ -17,12 +17,12 @@ doctest = false [features] default = [] -std = ["alloc", "ironrdp-error/std"] +std = ["alloc", "ironrdp-error/std", "ironrdp-core/std"] alloc = ["ironrdp-core/alloc", "ironrdp-error/alloc"] [dependencies] bitflags.workspace = true -ironrdp-core.workspace = true +ironrdp-core = { workspace = true, features = ["std"] } ironrdp-error.workspace = true tap = "1" diff --git a/crates/ironrdp-pdu/src/basic_output/bitmap.rs b/crates/ironrdp-pdu/src/basic_output/bitmap.rs index 6d4e68eb..e4bc7c7e 100644 --- a/crates/ironrdp-pdu/src/basic_output/bitmap.rs +++ b/crates/ironrdp-pdu/src/basic_output/bitmap.rs @@ -7,9 +7,9 @@ use std::fmt::{self, Debug}; use bitflags::bitflags; -use crate::cursor::ReadCursor; use crate::geometry::InclusiveRectangle; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const FIRST_ROW_SIZE_VALUE: u16 = 0; @@ -25,7 +25,7 @@ impl BitmapUpdateData<'_> { } impl BitmapUpdateData<'_> { - pub fn encode_header(rectangles: u16, dst: &mut crate::cursor::WriteCursor<'_>) -> PduResult<()> { + pub fn encode_header(rectangles: u16, dst: &mut WriteCursor<'_>) -> PduResult<()> { ensure_size!(in: dst, size: 2); dst.write_u16(BitmapFlags::BITMAP_UPDATE_TYPE.bits()); @@ -36,7 +36,7 @@ impl BitmapUpdateData<'_> { } impl PduEncode for BitmapUpdateData<'_> { - fn encode(&self, dst: &mut crate::cursor::WriteCursor<'_>) -> PduResult<()> { + fn encode(&self, dst: &mut WriteCursor<'_>) -> PduResult<()> { ensure_size!(in: dst, size: self.size()); if self.rectangles.len() > u16::MAX as usize { @@ -105,7 +105,7 @@ impl BitmapData<'_> { } impl PduEncode for BitmapData<'_> { - fn encode(&self, dst: &mut crate::cursor::WriteCursor<'_>) -> PduResult<()> { + fn encode(&self, dst: &mut WriteCursor<'_>) -> PduResult<()> { ensure_size!(in: dst, size: self.size()); let encoded_bitmap_data_length = self.encoded_bitmap_data_length(); @@ -241,7 +241,7 @@ impl<'de> PduDecode<'de> for CompressedDataHeader { } impl PduEncode for CompressedDataHeader { - fn encode(&self, dst: &mut crate::cursor::WriteCursor<'_>) -> PduResult<()> { + fn encode(&self, dst: &mut WriteCursor<'_>) -> PduResult<()> { ensure_fixed_part_size!(in: dst); if self.scan_width % 4 != 0 { diff --git a/crates/ironrdp-pdu/src/basic_output/bitmap/rdp6.rs b/crates/ironrdp-pdu/src/basic_output/bitmap/rdp6.rs index c89169e5..eefa3002 100644 --- a/crates/ironrdp-pdu/src/basic_output/bitmap/rdp6.rs +++ b/crates/ironrdp-pdu/src/basic_output/bitmap/rdp6.rs @@ -1,4 +1,5 @@ -use crate::{PduDecode, PduEncode, PduResult, ReadCursor, WriteCursor}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const NON_RLE_PADDING_SIZE: usize = 1; diff --git a/crates/ironrdp-pdu/src/basic_output/fast_path.rs b/crates/ironrdp-pdu/src/basic_output/fast_path.rs index ec7c720b..4ce53aab 100644 --- a/crates/ironrdp-pdu/src/basic_output/fast_path.rs +++ b/crates/ironrdp-pdu/src/basic_output/fast_path.rs @@ -9,10 +9,10 @@ use num_traits::{FromPrimitive, ToPrimitive}; use super::bitmap::BitmapUpdateData; use super::pointer::PointerUpdateData; use super::surface_commands::{SurfaceCommand, SURFACE_COMMAND_HEADER_SIZE}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::rdp::client_info::CompressionType; use crate::rdp::headers::{CompressionFlags, SHARE_DATA_HEADER_COMPRESSION_MASK}; use crate::{decode_cursor, per, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; /// Implements the Fast-Path RDP message header PDU. /// TS_FP_UPDATE_PDU diff --git a/crates/ironrdp-pdu/src/basic_output/pointer.rs b/crates/ironrdp-pdu/src/basic_output/pointer.rs index 0d9978c3..1fbd7161 100644 --- a/crates/ironrdp-pdu/src/basic_output/pointer.rs +++ b/crates/ironrdp-pdu/src/basic_output/pointer.rs @@ -1,5 +1,5 @@ -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; // Represents `TS_POINT16` described in [MS-RDPBCGR] 2.2.9.1.1.4.1 #[derive(Debug, Clone, Copy, PartialEq, Eq)] diff --git a/crates/ironrdp-pdu/src/basic_output/surface_commands.rs b/crates/ironrdp-pdu/src/basic_output/surface_commands.rs index 62240594..2bed63fe 100644 --- a/crates/ironrdp-pdu/src/basic_output/surface_commands.rs +++ b/crates/ironrdp-pdu/src/basic_output/surface_commands.rs @@ -5,9 +5,9 @@ use bitflags::bitflags; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::geometry::ExclusiveRectangle; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub const SURFACE_COMMAND_HEADER_SIZE: usize = 2; diff --git a/crates/ironrdp-pdu/src/ber.rs b/crates/ironrdp-pdu/src/ber.rs index 27ca681c..26d82c8f 100644 --- a/crates/ironrdp-pdu/src/ber.rs +++ b/crates/ironrdp-pdu/src/ber.rs @@ -1,7 +1,5 @@ -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduResult, -}; +use crate::PduResult; +use ironrdp_core::{ReadCursor, WriteCursor}; #[repr(u8)] #[allow(unused)] diff --git a/crates/ironrdp-pdu/src/codecs/rfx.rs b/crates/ironrdp-pdu/src/codecs/rfx.rs index 634c7634..d460d73c 100644 --- a/crates/ironrdp-pdu/src/codecs/rfx.rs +++ b/crates/ironrdp-pdu/src/codecs/rfx.rs @@ -8,10 +8,8 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; use thiserror::Error; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduBufferParsing, PduDecode, PduEncode, PduResult, -}; +use crate::{PduBufferParsing, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[rustfmt::skip] pub use self::data_messages::{ diff --git a/crates/ironrdp-pdu/src/gcc.rs b/crates/ironrdp-pdu/src/gcc.rs index d22ec906..583b9ed4 100644 --- a/crates/ironrdp-pdu/src/gcc.rs +++ b/crates/ironrdp-pdu/src/gcc.rs @@ -4,8 +4,8 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{decode, PduDecode, PduEncode, PduError, PduErrorKind, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub mod conference_create; diff --git a/crates/ironrdp-pdu/src/gcc/cluster_data.rs b/crates/ironrdp-pdu/src/gcc/cluster_data.rs index b4e6d0cc..4e12ca0d 100644 --- a/crates/ironrdp-pdu/src/gcc/cluster_data.rs +++ b/crates/ironrdp-pdu/src/gcc/cluster_data.rs @@ -5,8 +5,8 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const REDIRECTION_VERSION_MASK: u32 = 0x0000_003C; diff --git a/crates/ironrdp-pdu/src/gcc/conference_create.rs b/crates/ironrdp-pdu/src/gcc/conference_create.rs index 5437a371..05f74ba8 100644 --- a/crates/ironrdp-pdu/src/gcc/conference_create.rs +++ b/crates/ironrdp-pdu/src/gcc/conference_create.rs @@ -1,6 +1,6 @@ use super::{ClientGccBlocks, ServerGccBlocks}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{mcs, per, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const CONFERENCE_REQUEST_OBJECT_ID: [u8; 6] = [0, 0, 20, 124, 0, 1]; const CONFERENCE_REQUEST_CLIENT_TO_SERVER_H221_NON_STANDARD: &[u8; 4] = b"Duca"; diff --git a/crates/ironrdp-pdu/src/gcc/core_data/client.rs b/crates/ironrdp-pdu/src/gcc/core_data/client.rs index 1af6ac05..395f3412 100644 --- a/crates/ironrdp-pdu/src/gcc/core_data/client.rs +++ b/crates/ironrdp-pdu/src/gcc/core_data/client.rs @@ -4,9 +4,9 @@ use num_traits::{FromPrimitive, ToPrimitive}; use tap::Pipe as _; use super::{RdpVersion, VERSION_SIZE}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::nego::SecurityProtocol; use crate::{utils, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub const IME_FILE_NAME_SIZE: usize = 64; @@ -417,29 +417,26 @@ impl<'de> PduDecode<'de> for ClientCoreOptionalData { let mut optional_data = Self::default(); optional_data.post_beta2_color_depth = Some( - ColorDepth::from_u16(try_or_return!(src.try_read_u16("postBeta2ColorDepth"), optional_data)) + ColorDepth::from_u16(try_or_return!(src.try_read_u16(), optional_data)) .ok_or_else(|| invalid_message_err!("postBeta2ColorDepth", "invalid color depth"))?, ); - optional_data.client_product_id = Some(try_or_return!(src.try_read_u16("clientProductId"), optional_data)); - optional_data.serial_number = Some(try_or_return!(src.try_read_u32("serialNumber"), optional_data)); + optional_data.client_product_id = Some(try_or_return!(src.try_read_u16(), optional_data)); + optional_data.serial_number = Some(try_or_return!(src.try_read_u32(), optional_data)); optional_data.high_color_depth = Some( - HighColorDepth::from_u16(try_or_return!(src.try_read_u16("highColorDepth"), optional_data)) + HighColorDepth::from_u16(try_or_return!(src.try_read_u16(), optional_data)) .ok_or_else(|| invalid_message_err!("highColorDepth", "invalid color depth"))?, ); optional_data.supported_color_depths = Some( - SupportedColorDepths::from_bits(try_or_return!(src.try_read_u16("supportedColorDepths"), optional_data)) + SupportedColorDepths::from_bits(try_or_return!(src.try_read_u16(), optional_data)) .ok_or_else(|| invalid_message_err!("supportedColorDepths", "invalid supported color depths"))?, ); optional_data.early_capability_flags = Some( - ClientEarlyCapabilityFlags::from_bits(try_or_return!( - src.try_read_u16("earlyCapabilityFlags"), - optional_data - )) - .ok_or_else(|| invalid_message_err!("earlyCapabilityFlags", "invalid early capability flags"))?, + ClientEarlyCapabilityFlags::from_bits(try_or_return!(src.try_read_u16(), optional_data)) + .ok_or_else(|| invalid_message_err!("earlyCapabilityFlags", "invalid early capability flags"))?, ); if src.len() < DIG_PRODUCT_ID_SIZE { @@ -450,28 +447,23 @@ impl<'de> PduDecode<'de> for ClientCoreOptionalData { optional_data.dig_product_id = Some(utils::from_utf16_bytes(dig_product_id).trim_end_matches('\u{0}').into()); optional_data.connection_type = Some( - ConnectionType::from_u8(try_or_return!(src.try_read_u8("connectionType"), optional_data)) + ConnectionType::from_u8(try_or_return!(src.try_read_u8(), optional_data)) .ok_or_else(|| invalid_message_err!("connectionType", "invalid connection type"))?, ); - try_or_return!(src.try_read_u8("pad1octet"), optional_data); + try_or_return!(src.try_read_u8(), optional_data); optional_data.server_selected_protocol = Some( - SecurityProtocol::from_bits(try_or_return!( - src.try_read_u32("serverSelectedProtocol"), - optional_data - )) - .ok_or_else(|| invalid_message_err!("serverSelectedProtocol", "invalid security protocol"))?, + SecurityProtocol::from_bits(try_or_return!(src.try_read_u32(), optional_data)) + .ok_or_else(|| invalid_message_err!("serverSelectedProtocol", "invalid security protocol"))?, ); - optional_data.desktop_physical_width = - Some(try_or_return!(src.try_read_u32("desktopPhysicalWidth"), optional_data)); + optional_data.desktop_physical_width = Some(try_or_return!(src.try_read_u32(), optional_data)); // physical height must be present, if the physical width is present optional_data.desktop_physical_height = Some(src.read_u32()); - optional_data.desktop_orientation = Some(try_or_return!(src.try_read_u16("desktopOrientation"), optional_data)); - optional_data.desktop_scale_factor = - Some(try_or_return!(src.try_read_u32("desktopScaleFactor"), optional_data)); + optional_data.desktop_orientation = Some(try_or_return!(src.try_read_u16(), optional_data)); + optional_data.desktop_scale_factor = Some(try_or_return!(src.try_read_u32(), optional_data)); // device scale factor must be present, if the desktop scale factor is present optional_data.device_scale_factor = Some(src.read_u32()); diff --git a/crates/ironrdp-pdu/src/gcc/core_data/server.rs b/crates/ironrdp-pdu/src/gcc/core_data/server.rs index a7be0653..554e589a 100644 --- a/crates/ironrdp-pdu/src/gcc/core_data/server.rs +++ b/crates/ironrdp-pdu/src/gcc/core_data/server.rs @@ -2,9 +2,9 @@ use bitflags::bitflags; use tap::Pipe as _; use super::RdpVersion; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::nego::SecurityProtocol; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const CLIENT_REQUESTED_PROTOCOL_SIZE: usize = 4; const EARLY_CAPABILITY_FLAGS_SIZE: usize = 4; @@ -106,12 +106,12 @@ impl<'de> PduDecode<'de> for ServerCoreOptionalData { let mut optional_data = Self::default(); optional_data.client_requested_protocols = Some( - SecurityProtocol::from_bits(try_or_return!(src.try_read_u32("clientReqProtocols"), optional_data)) + SecurityProtocol::from_bits(try_or_return!(src.try_read_u32(), optional_data)) .ok_or_else(|| invalid_message_err!("clientReqProtocols", "invalid server security protocol"))?, ); optional_data.early_capability_flags = Some( - ServerEarlyCapabilityFlags::from_bits(try_or_return!(src.try_read_u32("earlyCapFlags"), optional_data)) + ServerEarlyCapabilityFlags::from_bits(try_or_return!(src.try_read_u32(), optional_data)) .ok_or_else(|| invalid_message_err!("earlyCapFlags", "invalid early capability flags"))?, ); diff --git a/crates/ironrdp-pdu/src/gcc/message_channel_data.rs b/crates/ironrdp-pdu/src/gcc/message_channel_data.rs index abe2edef..cb6d1435 100644 --- a/crates/ironrdp-pdu/src/gcc/message_channel_data.rs +++ b/crates/ironrdp-pdu/src/gcc/message_channel_data.rs @@ -1,5 +1,5 @@ -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const CLIENT_FLAGS_SIZE: usize = 4; const SERVER_MCS_MESSAGE_CHANNEL_ID_SIZE: usize = 2; diff --git a/crates/ironrdp-pdu/src/gcc/monitor_data.rs b/crates/ironrdp-pdu/src/gcc/monitor_data.rs index c48ae1ac..765e659c 100644 --- a/crates/ironrdp-pdu/src/gcc/monitor_data.rs +++ b/crates/ironrdp-pdu/src/gcc/monitor_data.rs @@ -1,6 +1,6 @@ use bitflags::bitflags; +use ironrdp_core::{ReadCursor, WriteCursor}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; pub const MONITOR_COUNT_SIZE: usize = 4; diff --git a/crates/ironrdp-pdu/src/gcc/monitor_extended_data.rs b/crates/ironrdp-pdu/src/gcc/monitor_extended_data.rs index fe794b19..bfeb922c 100644 --- a/crates/ironrdp-pdu/src/gcc/monitor_extended_data.rs +++ b/crates/ironrdp-pdu/src/gcc/monitor_extended_data.rs @@ -1,7 +1,7 @@ +use ironrdp_core::{ReadCursor, WriteCursor}; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; const MONITOR_COUNT_MAX: usize = 16; diff --git a/crates/ironrdp-pdu/src/gcc/multi_transport_channel_data.rs b/crates/ironrdp-pdu/src/gcc/multi_transport_channel_data.rs index 9b3162fe..4e9379a4 100644 --- a/crates/ironrdp-pdu/src/gcc/multi_transport_channel_data.rs +++ b/crates/ironrdp-pdu/src/gcc/multi_transport_channel_data.rs @@ -1,6 +1,6 @@ use bitflags::bitflags; +use ironrdp_core::{ReadCursor, WriteCursor}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; #[derive(Debug, Clone, PartialEq, Eq)] diff --git a/crates/ironrdp-pdu/src/gcc/network_data.rs b/crates/ironrdp-pdu/src/gcc/network_data.rs index 607c38b0..ca2f4038 100644 --- a/crates/ironrdp-pdu/src/gcc/network_data.rs +++ b/crates/ironrdp-pdu/src/gcc/network_data.rs @@ -1,3 +1,4 @@ +use ironrdp_core::{ReadCursor, WriteCursor}; use std::borrow::Cow; use std::{io, str}; @@ -5,7 +6,6 @@ use bitflags::bitflags; use num_integer::Integer; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; const CHANNELS_MAX: usize = 31; diff --git a/crates/ironrdp-pdu/src/gcc/security_data.rs b/crates/ironrdp-pdu/src/gcc/security_data.rs index 2fd3eb35..d86631b3 100644 --- a/crates/ironrdp-pdu/src/gcc/security_data.rs +++ b/crates/ironrdp-pdu/src/gcc/security_data.rs @@ -5,8 +5,8 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const CLIENT_ENCRYPTION_METHODS_SIZE: usize = 4; const CLIENT_EXT_ENCRYPTION_METHODS_SIZE: usize = 4; diff --git a/crates/ironrdp-pdu/src/geometry.rs b/crates/ironrdp-pdu/src/geometry.rs index 68e2d7cf..2fac8e42 100644 --- a/crates/ironrdp-pdu/src/geometry.rs +++ b/crates/ironrdp-pdu/src/geometry.rs @@ -1,7 +1,7 @@ use std::cmp::{max, min}; -use crate::cursor::ReadCursor; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub(crate) mod private { pub struct BaseRectangle { @@ -178,7 +178,7 @@ impl InclusiveRectangle { } impl PduEncode for InclusiveRectangle { - fn encode(&self, dst: &mut crate::cursor::WriteCursor<'_>) -> PduResult<()> { + fn encode(&self, dst: &mut WriteCursor<'_>) -> PduResult<()> { ensure_fixed_part_size!(in: dst); dst.write_u16(self.left); @@ -224,7 +224,7 @@ impl ExclusiveRectangle { } impl PduEncode for ExclusiveRectangle { - fn encode(&self, dst: &mut crate::cursor::WriteCursor<'_>) -> PduResult<()> { + fn encode(&self, dst: &mut WriteCursor<'_>) -> PduResult<()> { ensure_fixed_part_size!(in: dst); dst.write_u16(self.left); diff --git a/crates/ironrdp-pdu/src/input/fast_path.rs b/crates/ironrdp-pdu/src/input/fast_path.rs index 6686f0ac..ab65d438 100644 --- a/crates/ironrdp-pdu/src/input/fast_path.rs +++ b/crates/ironrdp-pdu/src/input/fast_path.rs @@ -3,10 +3,10 @@ use bitflags::bitflags; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::fast_path::EncryptionFlags; use crate::input::{MousePdu, MouseRelPdu, MouseXPdu}; use crate::{per, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; /// Implements the Fast-Path RDP message header PDU. #[derive(Debug, Clone, PartialEq, Eq)] diff --git a/crates/ironrdp-pdu/src/input/mod.rs b/crates/ironrdp-pdu/src/input/mod.rs index a3abe3e5..9e53d299 100644 --- a/crates/ironrdp-pdu/src/input/mod.rs +++ b/crates/ironrdp-pdu/src/input/mod.rs @@ -4,8 +4,8 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub mod fast_path; pub mod mouse; diff --git a/crates/ironrdp-pdu/src/input/mouse.rs b/crates/ironrdp-pdu/src/input/mouse.rs index c14922cf..980e3ca6 100644 --- a/crates/ironrdp-pdu/src/input/mouse.rs +++ b/crates/ironrdp-pdu/src/input/mouse.rs @@ -1,9 +1,7 @@ use bitflags::bitflags; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct MousePdu { diff --git a/crates/ironrdp-pdu/src/input/mouse_rel.rs b/crates/ironrdp-pdu/src/input/mouse_rel.rs index 8a03bdbc..9d97fee2 100644 --- a/crates/ironrdp-pdu/src/input/mouse_rel.rs +++ b/crates/ironrdp-pdu/src/input/mouse_rel.rs @@ -1,9 +1,7 @@ use bitflags::bitflags; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct MouseRelPdu { diff --git a/crates/ironrdp-pdu/src/input/mouse_x.rs b/crates/ironrdp-pdu/src/input/mouse_x.rs index 258818a2..edd1aa47 100644 --- a/crates/ironrdp-pdu/src/input/mouse_x.rs +++ b/crates/ironrdp-pdu/src/input/mouse_x.rs @@ -1,9 +1,7 @@ use bitflags::bitflags; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct MouseXPdu { diff --git a/crates/ironrdp-pdu/src/input/scan_code.rs b/crates/ironrdp-pdu/src/input/scan_code.rs index 06367d8b..c4103405 100644 --- a/crates/ironrdp-pdu/src/input/scan_code.rs +++ b/crates/ironrdp-pdu/src/input/scan_code.rs @@ -1,9 +1,7 @@ use bitflags::bitflags; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct ScanCodePdu { diff --git a/crates/ironrdp-pdu/src/input/sync.rs b/crates/ironrdp-pdu/src/input/sync.rs index c4012dcb..b2bbfb06 100644 --- a/crates/ironrdp-pdu/src/input/sync.rs +++ b/crates/ironrdp-pdu/src/input/sync.rs @@ -1,9 +1,7 @@ use bitflags::bitflags; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct SyncPdu { diff --git a/crates/ironrdp-pdu/src/input/unicode.rs b/crates/ironrdp-pdu/src/input/unicode.rs index 88fae86f..8edd3dc0 100644 --- a/crates/ironrdp-pdu/src/input/unicode.rs +++ b/crates/ironrdp-pdu/src/input/unicode.rs @@ -1,9 +1,7 @@ use bitflags::bitflags; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct UnicodePdu { diff --git a/crates/ironrdp-pdu/src/input/unused.rs b/crates/ironrdp-pdu/src/input/unused.rs index 5d8d97d1..9fff4711 100644 --- a/crates/ironrdp-pdu/src/input/unused.rs +++ b/crates/ironrdp-pdu/src/input/unused.rs @@ -1,7 +1,5 @@ -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct UnusedPdu; diff --git a/crates/ironrdp-pdu/src/lib.rs b/crates/ironrdp-pdu/src/lib.rs index 492b730b..6901dd11 100644 --- a/crates/ironrdp-pdu/src/lib.rs +++ b/crates/ironrdp-pdu/src/lib.rs @@ -5,18 +5,15 @@ #![allow(clippy::cast_sign_loss)] // FIXME: remove use core::fmt; +use ironrdp_core::{ReadCursor, WriteCursor}; -use cursor::WriteCursor; #[cfg(feature = "alloc")] use write_buf::WriteBuf; -use crate::cursor::ReadCursor; - #[macro_use] mod macros; pub mod codecs; -pub mod cursor; pub mod gcc; pub mod geometry; pub mod input; diff --git a/crates/ironrdp-pdu/src/macros.rs b/crates/ironrdp-pdu/src/macros.rs index 830907c8..c74b3799 100644 --- a/crates/ironrdp-pdu/src/macros.rs +++ b/crates/ironrdp-pdu/src/macros.rs @@ -232,7 +232,7 @@ macro_rules! impl_pdu_pod { } impl $crate::PduDecodeOwned for $pdu_ty { - fn decode_owned(src: &mut $crate::cursor::ReadCursor<'_>) -> $crate::PduResult { + fn decode_owned(src: &mut ReadCursor<'_>) -> $crate::PduResult { ::decode(src) } } @@ -246,7 +246,7 @@ macro_rules! impl_pdu_borrowing { pub type $owned_ty = $pdu_ty<'static>; impl $crate::PduDecodeOwned for $owned_ty { - fn decode_owned(src: &mut $crate::cursor::ReadCursor<'_>) -> $crate::PduResult { + fn decode_owned(src: &mut ReadCursor<'_>) -> $crate::PduResult { let pdu = <$pdu_ty $(<$($lt),+>)? as $crate::PduDecode>::decode(src)?; Ok($crate::IntoOwnedPdu::into_owned_pdu(pdu)) } diff --git a/crates/ironrdp-pdu/src/mcs.rs b/crates/ironrdp-pdu/src/mcs.rs index 584cff21..3af48b46 100644 --- a/crates/ironrdp-pdu/src/mcs.rs +++ b/crates/ironrdp-pdu/src/mcs.rs @@ -1,11 +1,11 @@ use std::borrow::Cow; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::gcc::{ChannelDef, ClientGccBlocks, ConferenceCreateRequest, ConferenceCreateResponse}; use crate::tpdu::{TpduCode, TpduHeader}; use crate::tpkt::TpktHeader; use crate::x224::{user_data_size, X224Pdu}; use crate::{per, IntoOwnedPdu, PduError, PduErrorExt as _, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; // T.125 MCS is defined in: // @@ -237,14 +237,14 @@ impl DomainMcsPdu { } fn read_mcspdu_header(src: &mut ReadCursor<'_>, ctx: &'static str) -> PduResult { - let choice = src.try_read_u8(ctx)?; + let choice = src.try_read_u8().map_err(|e| custom_err!(ctx, e))?; DomainMcsPdu::from_choice(choice) .ok_or_else(|| PduError::invalid_message(ctx, "domain-mcspdu", "unexpected application tag for CHOICE")) } fn peek_mcspdu_header(src: &mut ReadCursor<'_>, ctx: &'static str) -> PduResult { - let choice = src.try_peek_u8(ctx)?; + let choice = src.try_read_u8().map_err(|e| custom_err!(ctx, e))?; DomainMcsPdu::from_choice(choice) .ok_or_else(|| PduError::invalid_message(ctx, "domain-mcspdu", "unexpected application tag for CHOICE")) diff --git a/crates/ironrdp-pdu/src/nego.rs b/crates/ironrdp-pdu/src/nego.rs index 5884ea84..abe3fb91 100644 --- a/crates/ironrdp-pdu/src/nego.rs +++ b/crates/ironrdp-pdu/src/nego.rs @@ -5,11 +5,11 @@ use core::fmt; use bitflags::bitflags; use tap::prelude::*; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::tpdu::{TpduCode, TpduHeader}; use crate::tpkt::TpktHeader; use crate::x224::X224Pdu; use crate::{Pdu as _, PduError, PduErrorExt as _, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; bitflags! { /// A 32-bit, unsigned integer that contains flags indicating the supported security protocols. diff --git a/crates/ironrdp-pdu/src/padding.rs b/crates/ironrdp-pdu/src/padding.rs index cab7dd9c..8ce0d026 100644 --- a/crates/ironrdp-pdu/src/padding.rs +++ b/crates/ironrdp-pdu/src/padding.rs @@ -4,7 +4,7 @@ //! and message recipients should not assume padding has any particular //! value. -use crate::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; /// Writes zeroes using as few `write_u*` calls as possible. pub fn write(dst: &mut WriteCursor<'_>, mut n: usize) { diff --git a/crates/ironrdp-pdu/src/pcb.rs b/crates/ironrdp-pdu/src/pcb.rs index 8eca3998..dc212042 100644 --- a/crates/ironrdp-pdu/src/pcb.rs +++ b/crates/ironrdp-pdu/src/pcb.rs @@ -1,7 +1,7 @@ //! This module contains the RDP_PRECONNECTION_PDU_V1 and RDP_PRECONNECTION_PDU_V2 structures. -use crate::cursor::ReadCursor; use crate::{Pdu, PduDecode, PduEncode, PduError, PduErrorExt as _, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; /// Preconnection PDU version #[derive(Debug, Clone, Copy, PartialEq, Eq)] @@ -104,7 +104,7 @@ impl<'de> PduDecode<'de> for PreconnectionBlob { } impl PduEncode for PreconnectionBlob { - fn encode(&self, dst: &mut crate::cursor::WriteCursor<'_>) -> PduResult<()> { + fn encode(&self, dst: &mut WriteCursor<'_>) -> PduResult<()> { if self.v2_payload.is_some() && self.version == PcbVersion::V1 { return Err(PduError::invalid_message( Self::NAME, diff --git a/crates/ironrdp-pdu/src/per.rs b/crates/ironrdp-pdu/src/per.rs index a58cfcba..0602f8be 100644 --- a/crates/ironrdp-pdu/src/per.rs +++ b/crates/ironrdp-pdu/src/per.rs @@ -2,7 +2,7 @@ use core::fmt; -use crate::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub(crate) const CHOICE_SIZE: usize = 1; pub(crate) const ENUM_SIZE: usize = 1; diff --git a/crates/ironrdp-pdu/src/rdp.rs b/crates/ironrdp-pdu/src/rdp.rs index 301471c3..efc9f90e 100644 --- a/crates/ironrdp-pdu/src/rdp.rs +++ b/crates/ironrdp-pdu/src/rdp.rs @@ -2,13 +2,13 @@ use std::io; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::input::InputEventError; use crate::rdp::capability_sets::CapabilitySetsError; use crate::rdp::client_info::{ClientInfo, ClientInfoError}; use crate::rdp::headers::{BasicSecurityHeader, BasicSecurityHeaderFlags, ShareControlPduType, ShareDataPduType}; use crate::rdp::server_license::ServerLicenseError; use crate::{PduDecode, PduEncode, PduError, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub mod capability_sets; pub mod client_info; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets.rs b/crates/ironrdp-pdu/src/rdp/capability_sets.rs index c304525e..875e5827 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets.rs @@ -4,8 +4,8 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{decode, utils, PduDecode, PduEncode, PduError, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; mod bitmap; mod bitmap_cache; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap.rs index ac7c7ab4..1ea9ca0e 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap.rs @@ -3,8 +3,8 @@ mod tests; use bitflags::bitflags; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const BITMAP_LENGTH: usize = 24; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_cache.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_cache.rs index 9834b2ec..26f3e1be 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_cache.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_cache.rs @@ -3,8 +3,8 @@ mod tests; use bitflags::bitflags; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub const BITMAP_CACHE_ENTRIES_NUM: usize = 3; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_codecs.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_codecs.rs index ce4cd735..0a648b4d 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_codecs.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_codecs.rs @@ -5,9 +5,9 @@ use bitflags::bitflags; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::decode; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const RFX_ICAP_VERSION: u16 = 0x0100; const RFX_ICAP_TILE_SIZE: u16 = 0x40; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/brush.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/brush.rs index 2d703997..c3327618 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/brush.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/brush.rs @@ -4,8 +4,8 @@ mod tests; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const BRUSH_LENGTH: usize = 4; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/frame_acknowledge.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/frame_acknowledge.rs index 9cf8f8ae..1df71b8c 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/frame_acknowledge.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/frame_acknowledge.rs @@ -1,5 +1,5 @@ -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct FrameAcknowledge { diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/general.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/general.rs index af5a772a..af9b5d0d 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/general.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/general.rs @@ -5,8 +5,8 @@ use std::fmt; use bitflags::bitflags; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const GENERAL_LENGTH: usize = 20; pub const PROTOCOL_VER: u16 = 0x0200; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/glyph_cache.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/glyph_cache.rs index f16ccdc6..e45abc4d 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/glyph_cache.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/glyph_cache.rs @@ -4,8 +4,8 @@ mod tests; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub const GLYPH_CACHE_NUM: usize = 10; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/input.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/input.rs index 7c2d7f3b..8fd611dc 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/input.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/input.rs @@ -4,9 +4,9 @@ mod tests; use bitflags::bitflags; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::gcc::{KeyboardType, IME_FILE_NAME_SIZE}; use crate::{utils, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const INPUT_LENGTH: usize = 84; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/large_pointer.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/large_pointer.rs index c9fcc088..6d05ca92 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/large_pointer.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/large_pointer.rs @@ -1,7 +1,7 @@ use bitflags::bitflags; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, PartialEq, Eq, Clone)] pub struct LargePointer { diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/multifragment_update.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/multifragment_update.rs index 8d6104b0..10a6e32d 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/multifragment_update.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/multifragment_update.rs @@ -1,5 +1,5 @@ -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, PartialEq, Eq, Clone)] pub struct MultifragmentUpdate { diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/offscreen_bitmap_cache.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/offscreen_bitmap_cache.rs index 89a82738..8c019ec3 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/offscreen_bitmap_cache.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/offscreen_bitmap_cache.rs @@ -1,8 +1,8 @@ #[cfg(test)] mod tests; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const OFFSCREEN_BITMAP_CACHE_LENGTH: usize = 8; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/order.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/order.rs index fbd4ec00..223ba0f9 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/order.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/order.rs @@ -3,8 +3,8 @@ mod tests; use bitflags::bitflags; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const ORDER_LENGTH: usize = 84; const ORD_LEVEL_1_ORDERS: u16 = 1; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/pointer.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/pointer.rs index e5a9fa63..4966cd32 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/pointer.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/pointer.rs @@ -1,8 +1,8 @@ #[cfg(test)] mod tests; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const POINTER_LENGTH: usize = 6; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/sound.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/sound.rs index a7fd249c..83f33bf4 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/sound.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/sound.rs @@ -3,8 +3,8 @@ mod tests; use bitflags::bitflags; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const SOUND_LENGTH: usize = 4; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/surface_commands.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/surface_commands.rs index 405e176a..63271ef7 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/surface_commands.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/surface_commands.rs @@ -3,8 +3,8 @@ mod tests; use bitflags::bitflags; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const SURFACE_COMMANDS_LENGTH: usize = 8; diff --git a/crates/ironrdp-pdu/src/rdp/capability_sets/virtual_channel.rs b/crates/ironrdp-pdu/src/rdp/capability_sets/virtual_channel.rs index 5a2aa600..27e2766c 100644 --- a/crates/ironrdp-pdu/src/rdp/capability_sets/virtual_channel.rs +++ b/crates/ironrdp-pdu/src/rdp/capability_sets/virtual_channel.rs @@ -3,8 +3,8 @@ mod tests; use bitflags::bitflags; -use crate::cursor::WriteCursor; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const FLAGS_FIELD_SIZE: usize = 4; const CHUNK_SIZE_FIELD_SIZE: usize = 4; @@ -73,7 +73,7 @@ macro_rules! try_or_return { } impl<'de> PduDecode<'de> for VirtualChannel { - fn decode(src: &mut crate::cursor::ReadCursor<'de>) -> PduResult { + fn decode(src: &mut ReadCursor<'de>) -> PduResult { ensure_fixed_part_size!(in: src); let flags = VirtualChannelFlags::from_bits_truncate(src.read_u32()); @@ -83,7 +83,7 @@ impl<'de> PduDecode<'de> for VirtualChannel { chunk_size: None, }; - virtual_channel_pdu.chunk_size = Some(try_or_return!(src.try_read_u32("chunkSize"), virtual_channel_pdu)); + virtual_channel_pdu.chunk_size = Some(try_or_return!(src.try_read_u32(), virtual_channel_pdu)); Ok(virtual_channel_pdu) } diff --git a/crates/ironrdp-pdu/src/rdp/client_info.rs b/crates/ironrdp-pdu/src/rdp/client_info.rs index 96bf2780..b912a1cd 100644 --- a/crates/ironrdp-pdu/src/rdp/client_info.rs +++ b/crates/ironrdp-pdu/src/rdp/client_info.rs @@ -6,9 +6,9 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::utils::CharacterSet; use crate::{utils, PduDecode, PduEncode, PduError, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const RECONNECT_COOKIE_LEN: usize = 28; const TIMEZONE_INFO_NAME_LEN: usize = 64; diff --git a/crates/ironrdp-pdu/src/rdp/finalization_messages.rs b/crates/ironrdp-pdu/src/rdp/finalization_messages.rs index 44155304..a431e784 100644 --- a/crates/ironrdp-pdu/src/rdp/finalization_messages.rs +++ b/crates/ironrdp-pdu/src/rdp/finalization_messages.rs @@ -2,8 +2,8 @@ use bitflags::bitflags; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{gcc, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const SYNCHRONIZE_PDU_SIZE: usize = 2 + 2; const CONTROL_PDU_SIZE: usize = 2 + 2 + 4; diff --git a/crates/ironrdp-pdu/src/rdp/headers.rs b/crates/ironrdp-pdu/src/rdp/headers.rs index 1ee105f9..4f45d5ad 100644 --- a/crates/ironrdp-pdu/src/rdp/headers.rs +++ b/crates/ironrdp-pdu/src/rdp/headers.rs @@ -3,7 +3,6 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use crate::codecs::rfx::FrameAcknowledgePdu; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::input::InputEventPdu; use crate::rdp::capability_sets::{ClientConfirmActive, ServerDemandActive}; use crate::rdp::client_info; @@ -13,6 +12,7 @@ use crate::rdp::server_error_info::ServerSetErrorInfoPdu; use crate::rdp::session_info::SaveSessionInfoPdu; use crate::rdp::suppress_output::SuppressOutputPdu; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub const BASIC_SECURITY_HEADER_SIZE: usize = 4; pub const SHARE_DATA_HEADER_COMPRESSION_MASK: u8 = 0xF; diff --git a/crates/ironrdp-pdu/src/rdp/refresh_rectangle.rs b/crates/ironrdp-pdu/src/rdp/refresh_rectangle.rs index 4efe4b1a..306a7b39 100644 --- a/crates/ironrdp-pdu/src/rdp/refresh_rectangle.rs +++ b/crates/ironrdp-pdu/src/rdp/refresh_rectangle.rs @@ -1,6 +1,6 @@ -use crate::cursor::{ReadCursor, WriteCursor}; use crate::geometry::InclusiveRectangle; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; /// [2.2.11.2.1] Refresh Rect PDU Data (TS_REFRESH_RECT_PDU) /// diff --git a/crates/ironrdp-pdu/src/rdp/server_error_info.rs b/crates/ironrdp-pdu/src/rdp/server_error_info.rs index a9f685e7..8eb040cb 100644 --- a/crates/ironrdp-pdu/src/rdp/server_error_info.rs +++ b/crates/ironrdp-pdu/src/rdp/server_error_info.rs @@ -1,10 +1,8 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct ServerSetErrorInfoPdu(pub ErrorInfo); diff --git a/crates/ironrdp-pdu/src/rdp/server_license.rs b/crates/ironrdp-pdu/src/rdp/server_license.rs index 68d44ae0..3911de8a 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license.rs @@ -6,9 +6,9 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::rdp::headers::{BasicSecurityHeader, BasicSecurityHeaderFlags, BASIC_SECURITY_HEADER_SIZE}; use crate::{PduDecode, PduEncode, PduError, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[cfg(test)] mod tests; diff --git a/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request.rs b/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request.rs index a4ce2af3..1b537ec2 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/client_new_license_request.rs @@ -12,9 +12,9 @@ use super::{ PREAMBLE_SIZE, RANDOM_NUMBER_SIZE, UTF8_NULL_TERMINATOR_SIZE, }; use crate::crypto::rsa::encrypt_with_public_key; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::utils::{self, CharacterSet}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const LICENSE_REQUEST_STATIC_FIELDS_SIZE: usize = 20; diff --git a/crates/ironrdp-pdu/src/rdp/server_license/client_platform_challenge_response.rs b/crates/ironrdp-pdu/src/rdp/server_license/client_platform_challenge_response.rs index e96eabba..7195ce43 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/client_platform_challenge_response.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/client_platform_challenge_response.rs @@ -14,8 +14,8 @@ use super::{ BLOB_TYPE_SIZE, MAC_SIZE, PLATFORM_ID, PREAMBLE_SIZE, }; use crate::crypto::rc4::Rc4; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const RESPONSE_DATA_VERSION: u16 = 0x100; const RESPONSE_DATA_STATIC_FIELDS_SIZE: usize = 8; diff --git a/crates/ironrdp-pdu/src/rdp/server_license/licensing_error_message.rs b/crates/ironrdp-pdu/src/rdp/server_license/licensing_error_message.rs index f941573f..310e7fb7 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/licensing_error_message.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/licensing_error_message.rs @@ -6,13 +6,13 @@ use num_traits::{FromPrimitive, ToPrimitive}; use super::{BlobHeader, BlobType, LicenseHeader, PreambleFlags, PreambleVersion, BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE}; use crate::{ - cursor::{ReadCursor, WriteCursor}, rdp::{ headers::{BasicSecurityHeader, BasicSecurityHeaderFlags, BASIC_SECURITY_HEADER_SIZE}, server_license::PreambleType, }, PduDecode, PduEncode, PduResult, }; +use ironrdp_core::{ReadCursor, WriteCursor}; const ERROR_CODE_SIZE: usize = 4; const STATE_TRANSITION_SIZE: usize = 4; diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request.rs index 8f4cf5ca..81e970c6 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request.rs @@ -9,10 +9,8 @@ use super::{ BlobHeader, BlobType, LicenseHeader, PreambleType, ServerLicenseError, BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE, KEY_EXCHANGE_ALGORITHM_RSA, RANDOM_NUMBER_SIZE, UTF16_NULL_TERMINATOR_SIZE, UTF8_NULL_TERMINATOR_SIZE, }; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - utils, PduDecode, PduEncode, PduResult, -}; +use crate::{utils, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const CERT_VERSION_FIELD_SIZE: usize = 4; const KEY_EXCHANGE_FIELD_SIZE: usize = 4; diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs index b2050ee2..b44abedb 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_license_request/cert.rs @@ -1,8 +1,6 @@ use super::{BlobHeader, BlobType, KEY_EXCHANGE_ALGORITHM_RSA}; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub const SIGNATURE_ALGORITHM_RSA: u32 = 1; pub const PROP_CERT_NO_BLOBS_SIZE: usize = 8; diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_platform_challenge.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_platform_challenge.rs index 664c5fd2..47bd0900 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_platform_challenge.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_platform_challenge.rs @@ -2,10 +2,8 @@ mod test; use super::{BlobHeader, BlobType, LicenseHeader, PreambleType, BLOB_LENGTH_SIZE, BLOB_TYPE_SIZE, MAC_SIZE}; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const CONNECT_FLAGS_FIELD_SIZE: usize = 4; diff --git a/crates/ironrdp-pdu/src/rdp/server_license/server_upgrade_license.rs b/crates/ironrdp-pdu/src/rdp/server_license/server_upgrade_license.rs index 9c1f7028..99d92761 100644 --- a/crates/ironrdp-pdu/src/rdp/server_license/server_upgrade_license.rs +++ b/crates/ironrdp-pdu/src/rdp/server_license/server_upgrade_license.rs @@ -6,9 +6,9 @@ use super::{ BLOB_TYPE_SIZE, MAC_SIZE, UTF16_NULL_TERMINATOR_SIZE, UTF8_NULL_TERMINATOR_SIZE, }; use crate::crypto::rc4::Rc4; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::utils::CharacterSet; use crate::{utils, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const NEW_LICENSE_INFO_STATIC_FIELDS_SIZE: usize = 20; diff --git a/crates/ironrdp-pdu/src/rdp/session_info.rs b/crates/ironrdp-pdu/src/rdp/session_info.rs index a48f5828..cf03e66a 100644 --- a/crates/ironrdp-pdu/src/rdp/session_info.rs +++ b/crates/ironrdp-pdu/src/rdp/session_info.rs @@ -4,8 +4,8 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduError, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[cfg(test)] mod tests; diff --git a/crates/ironrdp-pdu/src/rdp/session_info/logon_extended.rs b/crates/ironrdp-pdu/src/rdp/session_info/logon_extended.rs index ff20a532..75399b97 100644 --- a/crates/ironrdp-pdu/src/rdp/session_info/logon_extended.rs +++ b/crates/ironrdp-pdu/src/rdp/session_info/logon_extended.rs @@ -2,10 +2,8 @@ use bitflags::bitflags; use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; -use crate::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, PduEncode, PduResult, -}; +use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const LOGON_EX_LENGTH_FIELD_SIZE: usize = 2; const LOGON_EX_FLAGS_FIELD_SIZE: usize = 4; diff --git a/crates/ironrdp-pdu/src/rdp/session_info/logon_info.rs b/crates/ironrdp-pdu/src/rdp/session_info/logon_info.rs index 18e11d8a..498bee8c 100644 --- a/crates/ironrdp-pdu/src/rdp/session_info/logon_info.rs +++ b/crates/ironrdp-pdu/src/rdp/session_info/logon_info.rs @@ -1,7 +1,5 @@ -use crate::{ - cursor::{ReadCursor, WriteCursor}, - utils, PduDecode, PduEncode, PduResult, -}; +use crate::{utils, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const DOMAIN_NAME_SIZE_FIELD_SIZE: usize = 4; const DOMAIN_NAME_SIZE_V1: usize = 52; diff --git a/crates/ironrdp-pdu/src/rdp/suppress_output.rs b/crates/ironrdp-pdu/src/rdp/suppress_output.rs index 3b9b5eb1..2e3c30d7 100644 --- a/crates/ironrdp-pdu/src/rdp/suppress_output.rs +++ b/crates/ironrdp-pdu/src/rdp/suppress_output.rs @@ -1,6 +1,6 @@ -use crate::cursor::{ReadCursor, WriteCursor}; use crate::geometry::InclusiveRectangle; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[repr(u8)] #[derive(Debug, PartialEq, Eq, Clone)] diff --git a/crates/ironrdp-pdu/src/rdp/vc.rs b/crates/ironrdp-pdu/src/rdp/vc.rs index 5d625ef2..34fc358d 100644 --- a/crates/ironrdp-pdu/src/rdp/vc.rs +++ b/crates/ironrdp-pdu/src/rdp/vc.rs @@ -8,8 +8,8 @@ use std::{io, str}; use bitflags::bitflags; use thiserror::Error; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduError, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const CHANNEL_PDU_HEADER_SIZE: usize = 8; diff --git a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx.rs b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx.rs index 3b7fb8bf..21e72521 100644 --- a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx.rs +++ b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx.rs @@ -12,8 +12,8 @@ pub use graphics_messages::{ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive as _, ToPrimitive as _}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub enum ServerPdu { diff --git a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages.rs b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages.rs index b2ae7388..944c9a96 100644 --- a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages.rs +++ b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages.rs @@ -17,8 +17,8 @@ pub use server::{ }; use super::RDP_GFX_HEADER_SIZE; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; const CAPABILITY_SET_HEADER_SIZE: usize = 8; diff --git a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs index 0ce966b2..576e76ed 100644 --- a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs +++ b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/avc_messages.rs @@ -3,9 +3,9 @@ use std::fmt::Debug; use bit_field::BitField; use bitflags::bitflags; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::geometry::InclusiveRectangle; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct QuantQuality { diff --git a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/client.rs b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/client.rs index 8f1ef5e1..42a036d7 100644 --- a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/client.rs +++ b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/client.rs @@ -1,6 +1,6 @@ use super::CapabilitySet; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct CapabilitiesAdvertisePdu(pub Vec); diff --git a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/server.rs b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/server.rs index 9656c9da..e58a3440 100644 --- a/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/server.rs +++ b/crates/ironrdp-pdu/src/rdp/vc/dvc/gfx/graphics_messages/server.rs @@ -5,10 +5,10 @@ use num_derive::{FromPrimitive, ToPrimitive}; use num_traits::{FromPrimitive, ToPrimitive}; use super::{CapabilitySet, Color, Point, RDP_GFX_HEADER_SIZE}; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::gcc::Monitor; use crate::geometry::InclusiveRectangle; use crate::{decode_cursor, PduDecode, PduEncode, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub(crate) const RESET_GRAPHICS_PDU_SIZE: usize = 340; diff --git a/crates/ironrdp-pdu/src/tpdu.rs b/crates/ironrdp-pdu/src/tpdu.rs index 1f3e26b3..2c2363c8 100644 --- a/crates/ironrdp-pdu/src/tpdu.rs +++ b/crates/ironrdp-pdu/src/tpdu.rs @@ -1,6 +1,6 @@ -use crate::cursor::{ReadCursor, WriteCursor}; use crate::tpkt::TpktHeader; use crate::{PduError, PduErrorExt as _, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; /// TPDU type used during X.224 messages exchange #[derive(Copy, Clone, Debug, PartialEq, Eq)] diff --git a/crates/ironrdp-pdu/src/tpkt.rs b/crates/ironrdp-pdu/src/tpkt.rs index e7c37ff6..d374ebeb 100644 --- a/crates/ironrdp-pdu/src/tpkt.rs +++ b/crates/ironrdp-pdu/src/tpkt.rs @@ -1,5 +1,5 @@ -use crate::cursor::{ReadCursor, WriteCursor}; use crate::{PduError, PduErrorExt as _, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; /// TPKT header /// diff --git a/crates/ironrdp-pdu/src/utils.rs b/crates/ironrdp-pdu/src/utils.rs index 456c50b2..0fc177ed 100644 --- a/crates/ironrdp-pdu/src/utils.rs +++ b/crates/ironrdp-pdu/src/utils.rs @@ -4,8 +4,8 @@ use std::fmt::Debug; use std::mem::size_of; use std::ops::Add; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::PduResult; +use ironrdp_core::{ReadCursor, WriteCursor}; pub fn split_u64(value: u64) -> (u32, u32) { let bytes = value.to_le_bytes(); diff --git a/crates/ironrdp-pdu/src/x224.rs b/crates/ironrdp-pdu/src/x224.rs index e39fee56..09233358 100644 --- a/crates/ironrdp-pdu/src/x224.rs +++ b/crates/ironrdp-pdu/src/x224.rs @@ -1,9 +1,9 @@ use std::borrow::Cow; -use crate::cursor::{ReadCursor, WriteCursor}; use crate::tpdu::{TpduCode, TpduHeader}; use crate::tpkt::TpktHeader; use crate::{IntoOwnedPdu, Pdu, PduDecode, PduEncode, PduError, PduErrorExt as _, PduResult}; +use ironrdp_core::{ReadCursor, WriteCursor}; pub trait X224Pdu<'de>: Sized { const X224_NAME: &'static str; diff --git a/crates/ironrdp-rdpdr/src/lib.rs b/crates/ironrdp-rdpdr/src/lib.rs index 1b0ac2e7..24abd9a2 100644 --- a/crates/ironrdp-rdpdr/src/lib.rs +++ b/crates/ironrdp-rdpdr/src/lib.rs @@ -9,7 +9,7 @@ extern crate tracing; use ironrdp_core::impl_as_any; -use ironrdp_pdu::cursor::ReadCursor; +use ironrdp_core::ReadCursor; use ironrdp_pdu::gcc::ChannelName; use ironrdp_pdu::{decode_cursor, other_err, PduResult}; use ironrdp_svc::{CompressionCondition, SvcClientProcessor, SvcMessage, SvcProcessor}; diff --git a/crates/ironrdp-rdpdr/src/pdu/efs.rs b/crates/ironrdp-rdpdr/src/pdu/efs.rs index 25e36384..e2dc142d 100644 --- a/crates/ironrdp-rdpdr/src/pdu/efs.rs +++ b/crates/ironrdp-rdpdr/src/pdu/efs.rs @@ -7,7 +7,7 @@ use std::fmt::{Debug, Display}; use std::mem::size_of; use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::utils::{decode_string, encoded_str_len, from_utf16_bytes, write_string_to_cursor, CharacterSet}; use ironrdp_pdu::{ cast_length, ensure_fixed_part_size, ensure_size, invalid_message_err, read_padding, unsupported_pdu_err, diff --git a/crates/ironrdp-rdpdr/src/pdu/esc.rs b/crates/ironrdp-rdpdr/src/pdu/esc.rs index 5aa58100..c79aad30 100644 --- a/crates/ironrdp-rdpdr/src/pdu/esc.rs +++ b/crates/ironrdp-rdpdr/src/pdu/esc.rs @@ -8,7 +8,7 @@ pub mod rpce; use std::mem::size_of; use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::utils::{ encoded_multistring_len, read_multistring_from_cursor, write_multistring_to_cursor, CharacterSet, }; diff --git a/crates/ironrdp-rdpdr/src/pdu/esc/ndr.rs b/crates/ironrdp-rdpdr/src/pdu/esc/ndr.rs index 66e28925..37d48dce 100644 --- a/crates/ironrdp-rdpdr/src/pdu/esc/ndr.rs +++ b/crates/ironrdp-rdpdr/src/pdu/esc/ndr.rs @@ -23,7 +23,7 @@ use std::mem::size_of; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::utils::{self, CharacterSet}; use ironrdp_pdu::{ensure_size, invalid_message_err, PduResult}; diff --git a/crates/ironrdp-rdpdr/src/pdu/esc/rpce.rs b/crates/ironrdp-rdpdr/src/pdu/esc/rpce.rs index 8132038b..56a6b69b 100644 --- a/crates/ironrdp-rdpdr/src/pdu/esc/rpce.rs +++ b/crates/ironrdp-rdpdr/src/pdu/esc/rpce.rs @@ -4,7 +4,7 @@ use std::mem::size_of; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::utils::CharacterSet; use ironrdp_pdu::{cast_length, ensure_size, invalid_message_err, PduEncode, PduError, PduResult}; diff --git a/crates/ironrdp-rdpdr/src/pdu/mod.rs b/crates/ironrdp-rdpdr/src/pdu/mod.rs index 227a714f..f0ca30e0 100644 --- a/crates/ironrdp-rdpdr/src/pdu/mod.rs +++ b/crates/ironrdp-rdpdr/src/pdu/mod.rs @@ -1,7 +1,7 @@ use std::fmt::{self, Display}; use std::mem::size_of; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{ensure_size, invalid_message_err, unsupported_pdu_err, PduDecode, PduEncode, PduError, PduResult}; use ironrdp_svc::SvcPduEncode; diff --git a/crates/ironrdp-rdpsnd/src/client.rs b/crates/ironrdp-rdpsnd/src/client.rs index dfa83e29..e0d254b2 100644 --- a/crates/ironrdp-rdpsnd/src/client.rs +++ b/crates/ironrdp-rdpsnd/src/client.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; use ironrdp_core::impl_as_any; -use ironrdp_pdu::cursor::ReadCursor; +use ironrdp_core::ReadCursor; use ironrdp_pdu::gcc::ChannelName; use ironrdp_pdu::{cast_length, other_err, PduDecode, PduResult}; use ironrdp_svc::{CompressionCondition, SvcClientProcessor, SvcMessage, SvcProcessor}; diff --git a/crates/ironrdp-rdpsnd/src/pdu/mod.rs b/crates/ironrdp-rdpsnd/src/pdu/mod.rs index fcbb1b40..480bd64a 100644 --- a/crates/ironrdp-rdpsnd/src/pdu/mod.rs +++ b/crates/ironrdp-rdpsnd/src/pdu/mod.rs @@ -6,7 +6,7 @@ use std::borrow::Cow; use std::fmt; use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{ cast_length, custom_err, ensure_fixed_part_size, ensure_size, invalid_message_err, read_padding, write_padding, PduDecode, PduEncode, PduError, PduResult, diff --git a/crates/ironrdp-rdpsnd/src/server.rs b/crates/ironrdp-rdpsnd/src/server.rs index f9a95cd7..a2446040 100644 --- a/crates/ironrdp-rdpsnd/src/server.rs +++ b/crates/ironrdp-rdpsnd/src/server.rs @@ -1,5 +1,5 @@ use ironrdp_core::impl_as_any; -use ironrdp_pdu::cursor::ReadCursor; +use ironrdp_core::ReadCursor; use ironrdp_pdu::gcc::ChannelName; use ironrdp_pdu::{other_err, PduDecode, PduResult}; use ironrdp_svc::{CompressionCondition, SvcMessage, SvcProcessor, SvcProcessorMessages, SvcServerProcessor}; diff --git a/crates/ironrdp-server/src/encoder/bitmap.rs b/crates/ironrdp-server/src/encoder/bitmap.rs index 402f061b..17c618c6 100644 --- a/crates/ironrdp-server/src/encoder/bitmap.rs +++ b/crates/ironrdp-server/src/encoder/bitmap.rs @@ -1,7 +1,7 @@ +use ironrdp_core::WriteCursor; use ironrdp_graphics::image_processing::PixelFormat; use ironrdp_graphics::rdp6::{ABgrChannels, ARgbChannels, BgrAChannels, BitmapStreamEncoder, RgbAChannels}; use ironrdp_pdu::bitmap::{self, BitmapData, BitmapUpdateData, Compression}; -use ironrdp_pdu::cursor::WriteCursor; use ironrdp_pdu::geometry::InclusiveRectangle; use ironrdp_pdu::{invalid_message_err, PduEncode, PduError}; diff --git a/crates/ironrdp-server/src/encoder/mod.rs b/crates/ironrdp-server/src/encoder/mod.rs index a8b6eb68..31372f6f 100644 --- a/crates/ironrdp-server/src/encoder/mod.rs +++ b/crates/ironrdp-server/src/encoder/mod.rs @@ -4,7 +4,7 @@ pub(crate) mod rfx; use std::{cmp, mem}; use anyhow::{Context, Result}; -use ironrdp_pdu::cursor::WriteCursor; +use ironrdp_core::WriteCursor; use ironrdp_pdu::fast_path::{EncryptionFlags, FastPathHeader, FastPathUpdatePdu, Fragmentation, UpdateCode}; use ironrdp_pdu::geometry::ExclusiveRectangle; use ironrdp_pdu::pointer::{ColorPointerAttribute, Point16, PointerAttribute, PointerPositionAttribute}; diff --git a/crates/ironrdp-session/Cargo.toml b/crates/ironrdp-session/Cargo.toml index 08b69d5e..ed619fdd 100644 --- a/crates/ironrdp-session/Cargo.toml +++ b/crates/ironrdp-session/Cargo.toml @@ -24,6 +24,7 @@ ironrdp-graphics.workspace = true ironrdp-pdu = { workspace = true, features = ["std"] } ironrdp-displaycontrol.workspace = true tracing.workspace = true +ironrdp-core.workspace = true [lints] workspace = true diff --git a/crates/ironrdp-session/src/fast_path.rs b/crates/ironrdp-session/src/fast_path.rs index 664044b3..e992098a 100644 --- a/crates/ironrdp-session/src/fast_path.rs +++ b/crates/ironrdp-session/src/fast_path.rs @@ -1,11 +1,11 @@ use std::rc::Rc; +use ironrdp_core::ReadCursor; use ironrdp_graphics::image_processing::PixelFormat; use ironrdp_graphics::pointer::{DecodedPointer, PointerBitmapTarget}; use ironrdp_graphics::rdp6::BitmapStreamDecoder; use ironrdp_graphics::rle::RlePixelFormat; use ironrdp_pdu::codecs::rfx::FrameAcknowledgePdu; -use ironrdp_pdu::cursor::ReadCursor; use ironrdp_pdu::fast_path::{FastPathHeader, FastPathUpdate, FastPathUpdatePdu, Fragmentation}; use ironrdp_pdu::geometry::{InclusiveRectangle, Rectangle as _}; use ironrdp_pdu::pointer::PointerUpdateData; diff --git a/crates/ironrdp-svc/src/lib.rs b/crates/ironrdp-svc/src/lib.rs index 37661534..8b6c4f57 100644 --- a/crates/ironrdp-svc/src/lib.rs +++ b/crates/ironrdp-svc/src/lib.rs @@ -16,10 +16,10 @@ use std::marker::PhantomData; use bitflags::bitflags; use ironrdp_core::assert_obj_safe; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::gcc::{ChannelName, ChannelOptions}; use ironrdp_pdu::write_buf::WriteBuf; use ironrdp_pdu::{mcs, PduResult}; -use pdu::cursor::{ReadCursor, WriteCursor}; use pdu::gcc::ChannelDef; use pdu::rdp::vc::ChannelControlFlags; use pdu::{decode_cursor, encode_buf, PduEncode}; diff --git a/crates/ironrdp-testsuite-core/Cargo.toml b/crates/ironrdp-testsuite-core/Cargo.toml index 1b686d68..c55133db 100644 --- a/crates/ironrdp-testsuite-core/Cargo.toml +++ b/crates/ironrdp-testsuite-core/Cargo.toml @@ -18,6 +18,7 @@ harness = true [dependencies] array-concat = "0.5" expect-test = "1" +ironrdp-core.workspace = true ironrdp-pdu.workspace = true lazy_static.workspace = true # TODO: remove in favor of https://doc.rust-lang.org/std/sync/struct.OnceLock.html now-proto-pdu.workspace = true diff --git a/crates/ironrdp-testsuite-core/src/macros.rs b/crates/ironrdp-testsuite-core/src/macros.rs index 5e52e832..d31add2d 100644 --- a/crates/ironrdp-testsuite-core/src/macros.rs +++ b/crates/ironrdp-testsuite-core/src/macros.rs @@ -128,7 +128,7 @@ macro_rules! mcs_encode_decode_test { let expected = $encoded_pdu; let mut encoded = vec![0; expected.len()]; - let mut cursor = ::ironrdp_pdu::cursor::WriteCursor::new(&mut encoded); + let mut cursor = ::ironrdp_core::WriteCursor::new(&mut encoded); pdu.mcs_body_encode(&mut cursor).unwrap(); $crate::assert_eq_hex!(encoded, expected); @@ -141,7 +141,7 @@ macro_rules! mcs_encode_decode_test { let encoded = $encoded_pdu; let expected = $pdu; - let mut cursor = ::ironrdp_pdu::cursor::ReadCursor::new(&encoded); + let mut cursor = ::ironrdp_core::ReadCursor::new(&encoded); let decoded = McsPdu::mcs_body_decode(&mut cursor, encoded.len()).unwrap(); let _ = expected == decoded; // type inference trick diff --git a/crates/ironrdp-testsuite-core/src/now_proto.rs b/crates/ironrdp-testsuite-core/src/now_proto.rs index 58b93d5d..aac75002 100644 --- a/crates/ironrdp-testsuite-core/src/now_proto.rs +++ b/crates/ironrdp-testsuite-core/src/now_proto.rs @@ -1,7 +1,7 @@ //! Various test utilities use expect_test::Expect; -use ironrdp_pdu::cursor::ReadCursor; +use ironrdp_core::ReadCursor; use ironrdp_pdu::PduDecode as _; use now_proto_pdu::NowMessage; diff --git a/crates/ironrdp-testsuite-core/tests/dvc/mod.rs b/crates/ironrdp-testsuite-core/tests/dvc/mod.rs index 5e243e54..bc2456d7 100644 --- a/crates/ironrdp-testsuite-core/tests/dvc/mod.rs +++ b/crates/ironrdp-testsuite-core/tests/dvc/mod.rs @@ -1,14 +1,12 @@ +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_dvc::pdu::ClosePdu; use ironrdp_dvc::pdu::DataPdu; use ironrdp_dvc::pdu::{CapabilitiesRequestPdu, CapabilitiesResponsePdu, CapsVersion}; use ironrdp_dvc::pdu::{CreateRequestPdu, CreateResponsePdu, CreationStatus}; use ironrdp_dvc::pdu::{DataFirstPdu, FieldType}; use ironrdp_dvc::pdu::{DrdynvcClientPdu, DrdynvcDataPdu, DrdynvcServerPdu}; +use ironrdp_pdu::PduDecode; use ironrdp_pdu::PduEncode; -use ironrdp_pdu::{ - cursor::{ReadCursor, WriteCursor}, - PduDecode, -}; use std::sync::OnceLock; // TODO: This likely generalizes to many tests and can thus be reused outside of this module. diff --git a/crates/ironrdp-testsuite-core/tests/now_proto/status.rs b/crates/ironrdp-testsuite-core/tests/now_proto/status.rs index 310385af..7fb46bf8 100644 --- a/crates/ironrdp-testsuite-core/tests/now_proto/status.rs +++ b/crates/ironrdp-testsuite-core/tests/now_proto/status.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode as _, PduEncode as _}; use now_proto_pdu::{NowSeverity, NowStatus, NowStatusCode}; diff --git a/crates/ironrdp-testsuite-core/tests/pdu/gcc.rs b/crates/ironrdp-testsuite-core/tests/pdu/gcc.rs index ed8cbcbc..c257b94d 100644 --- a/crates/ironrdp-testsuite-core/tests/pdu/gcc.rs +++ b/crates/ironrdp-testsuite-core/tests/pdu/gcc.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::ReadCursor; +use ironrdp_core::ReadCursor; use ironrdp_pdu::gcc::*; use ironrdp_pdu::{decode, encode_vec, PduEncode, PduErrorKind}; use ironrdp_testsuite_core::cluster_data::*; diff --git a/crates/ironrdp-testsuite-core/tests/pdu/gfx.rs b/crates/ironrdp-testsuite-core/tests/pdu/gfx.rs index 10e3e35e..ff9a4f69 100644 --- a/crates/ironrdp-testsuite-core/tests/pdu/gfx.rs +++ b/crates/ironrdp-testsuite-core/tests/pdu/gfx.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::ReadCursor; +use ironrdp_core::ReadCursor; use ironrdp_pdu::{decode, decode_cursor, encode_vec, PduEncode}; use ironrdp_testsuite_core::gfx::*; use ironrdp_testsuite_core::graphics_messages::*; diff --git a/crates/ironrdp-testsuite-core/tests/pdu/input.rs b/crates/ironrdp-testsuite-core/tests/pdu/input.rs index 4a6d55ce..f5f2eae0 100644 --- a/crates/ironrdp-testsuite-core/tests/pdu/input.rs +++ b/crates/ironrdp-testsuite-core/tests/pdu/input.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::ReadCursor; +use ironrdp_core::ReadCursor; use ironrdp_pdu::input::fast_path::{FastPathInput, FastPathInputEvent}; use ironrdp_pdu::input::mouse::PointerFlags; use ironrdp_pdu::input::MousePdu; diff --git a/crates/ironrdp-testsuite-core/tests/pdu/mcs.rs b/crates/ironrdp-testsuite-core/tests/pdu/mcs.rs index 29a14487..4c8df72e 100644 --- a/crates/ironrdp-testsuite-core/tests/pdu/mcs.rs +++ b/crates/ironrdp-testsuite-core/tests/pdu/mcs.rs @@ -5,7 +5,7 @@ use ironrdp_testsuite_core::mcs::*; use ironrdp_testsuite_core::mcs_encode_decode_test; fn mcs_decode<'de, T: McsPdu<'de>>(src: &'de [u8]) -> ironrdp_pdu::PduResult { - let mut cursor = ironrdp_pdu::cursor::ReadCursor::new(src); + let mut cursor = ironrdp_core::ReadCursor::new(src); T::mcs_body_decode(&mut cursor, src.len()) } diff --git a/crates/ironrdp-testsuite-core/tests/pdu/x224.rs b/crates/ironrdp-testsuite-core/tests/pdu/x224.rs index 288b203d..30c05f59 100644 --- a/crates/ironrdp-testsuite-core/tests/pdu/x224.rs +++ b/crates/ironrdp-testsuite-core/tests/pdu/x224.rs @@ -1,5 +1,5 @@ use expect_test::expect; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::nego::{ ConnectionConfirm, ConnectionRequest, Cookie, FailureCode, NegoRequestData, RequestFlags, ResponseFlags, RoutingToken, SecurityProtocol, diff --git a/crates/now-proto-pdu/Cargo.toml b/crates/now-proto-pdu/Cargo.toml index 5492242d..502f4484 100644 --- a/crates/now-proto-pdu/Cargo.toml +++ b/crates/now-proto-pdu/Cargo.toml @@ -17,12 +17,13 @@ test = false [dependencies] bitflags = "2" +ironrdp-core.workspace = true ironrdp-error = { path = "../ironrdp-error" } ironrdp-pdu = { path = "../ironrdp-pdu" } [features] default = ["std"] -std = ["ironrdp-error/std", "ironrdp-pdu/std"] +std = ["ironrdp-error/std", "ironrdp-pdu/std", "ironrdp-core/std"] [lints] -workspace = true \ No newline at end of file +workspace = true diff --git a/crates/now-proto-pdu/src/core/buffer.rs b/crates/now-proto-pdu/src/core/buffer.rs index 470bf2df..9eedebf4 100644 --- a/crates/now-proto-pdu/src/core/buffer.rs +++ b/crates/now-proto-pdu/src/core/buffer.rs @@ -2,7 +2,7 @@ use alloc::vec::Vec; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::VarU32; diff --git a/crates/now-proto-pdu/src/core/header.rs b/crates/now-proto-pdu/src/core/header.rs index 611145f9..9f100eb1 100644 --- a/crates/now-proto-pdu/src/core/header.rs +++ b/crates/now-proto-pdu/src/core/header.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; #[derive(Debug, Clone, Copy, PartialEq, Eq)] diff --git a/crates/now-proto-pdu/src/core/number.rs b/crates/now-proto-pdu/src/core/number.rs index 0e7699d4..226a27ad 100644 --- a/crates/now-proto-pdu/src/core/number.rs +++ b/crates/now-proto-pdu/src/core/number.rs @@ -1,5 +1,5 @@ //! Variable-length number types. -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduError, PduResult}; /// Variable-length encoded u16. diff --git a/crates/now-proto-pdu/src/core/status.rs b/crates/now-proto-pdu/src/core/status.rs index 276e47e2..58128722 100644 --- a/crates/now-proto-pdu/src/core/status.rs +++ b/crates/now-proto-pdu/src/core/status.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduError, PduResult}; /// Error or status severity. diff --git a/crates/now-proto-pdu/src/core/string.rs b/crates/now-proto-pdu/src/core/string.rs index bc0548c1..701410a2 100644 --- a/crates/now-proto-pdu/src/core/string.rs +++ b/crates/now-proto-pdu/src/core/string.rs @@ -2,7 +2,7 @@ use alloc::string::String; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::VarU32; diff --git a/crates/now-proto-pdu/src/exec/abort.rs b/crates/now-proto-pdu/src/exec/abort.rs index 3e2afb1c..ebe5238c 100644 --- a/crates/now-proto-pdu/src/exec/abort.rs +++ b/crates/now-proto-pdu/src/exec/abort.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass, NowStatus}; diff --git a/crates/now-proto-pdu/src/exec/batch.rs b/crates/now-proto-pdu/src/exec/batch.rs index b6761b1e..7996de6a 100644 --- a/crates/now-proto-pdu/src/exec/batch.rs +++ b/crates/now-proto-pdu/src/exec/batch.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass, NowVarStr}; diff --git a/crates/now-proto-pdu/src/exec/cancel_req.rs b/crates/now-proto-pdu/src/exec/cancel_req.rs index cf1e4b87..6f4204fa 100644 --- a/crates/now-proto-pdu/src/exec/cancel_req.rs +++ b/crates/now-proto-pdu/src/exec/cancel_req.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass}; diff --git a/crates/now-proto-pdu/src/exec/cancel_rsp.rs b/crates/now-proto-pdu/src/exec/cancel_rsp.rs index 0882039a..82d3fe78 100644 --- a/crates/now-proto-pdu/src/exec/cancel_rsp.rs +++ b/crates/now-proto-pdu/src/exec/cancel_rsp.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass, NowStatus}; diff --git a/crates/now-proto-pdu/src/exec/capset.rs b/crates/now-proto-pdu/src/exec/capset.rs index 1940017d..5fdb7029 100644 --- a/crates/now-proto-pdu/src/exec/capset.rs +++ b/crates/now-proto-pdu/src/exec/capset.rs @@ -1,6 +1,6 @@ use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass}; diff --git a/crates/now-proto-pdu/src/exec/data.rs b/crates/now-proto-pdu/src/exec/data.rs index 4552b9f0..b8b5c5ab 100644 --- a/crates/now-proto-pdu/src/exec/data.rs +++ b/crates/now-proto-pdu/src/exec/data.rs @@ -1,6 +1,6 @@ use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass, NowVarBuf}; diff --git a/crates/now-proto-pdu/src/exec/mod.rs b/crates/now-proto-pdu/src/exec/mod.rs index dd142662..fd030cb2 100644 --- a/crates/now-proto-pdu/src/exec/mod.rs +++ b/crates/now-proto-pdu/src/exec/mod.rs @@ -12,7 +12,7 @@ mod run; mod shell; mod win_ps; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduEncode, PduResult}; use crate::NowHeader; diff --git a/crates/now-proto-pdu/src/exec/process.rs b/crates/now-proto-pdu/src/exec/process.rs index 7202947a..9bc38ada 100644 --- a/crates/now-proto-pdu/src/exec/process.rs +++ b/crates/now-proto-pdu/src/exec/process.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass, NowVarStr}; diff --git a/crates/now-proto-pdu/src/exec/pwsh.rs b/crates/now-proto-pdu/src/exec/pwsh.rs index 73cfc1c0..c4e41d18 100644 --- a/crates/now-proto-pdu/src/exec/pwsh.rs +++ b/crates/now-proto-pdu/src/exec/pwsh.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowExecWinPsFlags, NowHeader, NowMessage, NowMessageClass, NowVarStr}; diff --git a/crates/now-proto-pdu/src/exec/result.rs b/crates/now-proto-pdu/src/exec/result.rs index 735e8531..a7a79f6b 100644 --- a/crates/now-proto-pdu/src/exec/result.rs +++ b/crates/now-proto-pdu/src/exec/result.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass, NowStatus}; diff --git a/crates/now-proto-pdu/src/exec/run.rs b/crates/now-proto-pdu/src/exec/run.rs index 2b97cc53..1d15efa4 100644 --- a/crates/now-proto-pdu/src/exec/run.rs +++ b/crates/now-proto-pdu/src/exec/run.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass, NowVarStr}; diff --git a/crates/now-proto-pdu/src/exec/shell.rs b/crates/now-proto-pdu/src/exec/shell.rs index cbfc45dc..f8c4a277 100644 --- a/crates/now-proto-pdu/src/exec/shell.rs +++ b/crates/now-proto-pdu/src/exec/shell.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass, NowVarStr}; diff --git a/crates/now-proto-pdu/src/exec/win_ps.rs b/crates/now-proto-pdu/src/exec/win_ps.rs index 596b97bf..460ccb6b 100644 --- a/crates/now-proto-pdu/src/exec/win_ps.rs +++ b/crates/now-proto-pdu/src/exec/win_ps.rs @@ -1,6 +1,6 @@ use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowExecMsgKind, NowHeader, NowMessage, NowMessageClass, NowVarStr}; diff --git a/crates/now-proto-pdu/src/message.rs b/crates/now-proto-pdu/src/message.rs index 51e86bfd..e2cef3fb 100644 --- a/crates/now-proto-pdu/src/message.rs +++ b/crates/now-proto-pdu/src/message.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowExecMessage, NowHeader, NowMessageClass, NowSessionMessage, NowSystemMessage}; diff --git a/crates/now-proto-pdu/src/session/lock.rs b/crates/now-proto-pdu/src/session/lock.rs index 1718856b..ec6a8b64 100644 --- a/crates/now-proto-pdu/src/session/lock.rs +++ b/crates/now-proto-pdu/src/session/lock.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowHeader, NowMessage, NowMessageClass, NowSessionMessage, NowSessionMessageKind}; diff --git a/crates/now-proto-pdu/src/session/logoff.rs b/crates/now-proto-pdu/src/session/logoff.rs index 87be111b..a6dc44cd 100644 --- a/crates/now-proto-pdu/src/session/logoff.rs +++ b/crates/now-proto-pdu/src/session/logoff.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowHeader, NowMessage, NowMessageClass, NowSessionMessage, NowSessionMessageKind}; diff --git a/crates/now-proto-pdu/src/session/mod.rs b/crates/now-proto-pdu/src/session/mod.rs index fa96c541..1a614f2c 100644 --- a/crates/now-proto-pdu/src/session/mod.rs +++ b/crates/now-proto-pdu/src/session/mod.rs @@ -3,7 +3,7 @@ mod logoff; mod msg_box_req; mod msg_box_rsp; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduEncode, PduResult}; use crate::NowHeader; diff --git a/crates/now-proto-pdu/src/session/msg_box_req.rs b/crates/now-proto-pdu/src/session/msg_box_req.rs index 0db0b3c5..da8608c8 100644 --- a/crates/now-proto-pdu/src/session/msg_box_req.rs +++ b/crates/now-proto-pdu/src/session/msg_box_req.rs @@ -1,7 +1,7 @@ use alloc::string::String; use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowHeader, NowMessage, NowMessageClass, NowSessionMessage, NowSessionMessageKind, NowVarStr}; diff --git a/crates/now-proto-pdu/src/session/msg_box_rsp.rs b/crates/now-proto-pdu/src/session/msg_box_rsp.rs index ca565723..0b144cad 100644 --- a/crates/now-proto-pdu/src/session/msg_box_rsp.rs +++ b/crates/now-proto-pdu/src/session/msg_box_rsp.rs @@ -1,4 +1,4 @@ -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode, PduEncode, PduResult}; use crate::{NowHeader, NowMessage, NowMessageClass, NowSessionMessage, NowSessionMessageKind}; diff --git a/crates/now-proto-pdu/src/system/mod.rs b/crates/now-proto-pdu/src/system/mod.rs index ca0a3203..a23d8cef 100644 --- a/crates/now-proto-pdu/src/system/mod.rs +++ b/crates/now-proto-pdu/src/system/mod.rs @@ -1,6 +1,6 @@ mod shutdown; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduEncode, PduResult}; use crate::NowHeader; diff --git a/crates/now-proto-pdu/src/system/shutdown.rs b/crates/now-proto-pdu/src/system/shutdown.rs index bf9f1753..4f6d3ceb 100644 --- a/crates/now-proto-pdu/src/system/shutdown.rs +++ b/crates/now-proto-pdu/src/system/shutdown.rs @@ -1,6 +1,6 @@ use bitflags::bitflags; -use ironrdp_pdu::cursor::{ReadCursor, WriteCursor}; +use ironrdp_core::{ReadCursor, WriteCursor}; use ironrdp_pdu::{PduDecode as _, PduEncode, PduResult}; use crate::{system::NowSystemMessageKind, NowHeader, NowMessage, NowMessageClass, NowSystemMessage, NowVarStr};