sddl 0.0.3

a library to parse and analyse SDDL Strings
//! ![GitHub License](https://img.shields.io/github/license/janstarke/sddl)
//! [![Crates.io Version](https://img.shields.io/crates/v/sddl)](https://crates.io/crates/sddl)
//! 
//! `sddl` is a library created to forensically analyze Windows Security Descriptors
//! 
//! # Usage example
//! 
//! ```rust
//! use std::io::Cursor;
//! use binrw::BinReaderExt;
//! use sddl::{ControlFlags, SecurityDescriptor};
//! 
//! let mut binary_data = Cursor::new([0x01, 0x00, 0x14, 0xb0, 0x90, 0x00, 0x00,
//!     0x00, 0xa0, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
//!     0x00, 0x02, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x80, 0x14,
//!     0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
//!     0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x60, 0x00, 0x04, 0x00, 0x00,
//!     0x00, 0x00, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x02, 0x00,
//!     0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x00, 0x00, 0x00, 0x21, 0x02, 0x00,
//!     0x00, 0x00, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x02, 0x00,
//!     0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00,
//!     0x00, 0x00, 0x03, 0x14, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x01, 0x00,
//!     0x00, 0x00, 0x00, 0x00, 0x05, 0x12, 0x00, 0x00, 0x00, 0x00, 0x03, 0x14,
//!     0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
//!     0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
//!     0x05, 0x20, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00,
//!     0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00,
//!     0x00]);
//! let security_descriptor: SecurityDescriptor = binary_data.read_le().unwrap();
//! println!("{:?}", security_descriptor.flags());
//! assert!(security_descriptor.flags().contains(ControlFlags::DiscretionaryAclPresent));
//! assert!(security_descriptor.flags().contains(ControlFlags::SystemAclPresent));
//! assert!(security_descriptor.flags().contains(ControlFlags::DiscretionaryAclProtected));
//! assert!(security_descriptor.flags().contains(ControlFlags::SystemAclProtected));
//! assert!(security_descriptor.flags().contains(ControlFlags::SelfRelative));
//! 
//! assert_eq!(security_descriptor.sacl_as_sddl_string().unwrap(), "S:P(AU;FA;GR;;;WD)".to_string());
//! assert_eq!(security_descriptor.dacl_as_sddl_string().unwrap(), "(A;CIOI;GRGX;;;BU)(A;CIOI;GA;;;BA)(A;CIOI;GA;;;SY)(A;CIOI;GA;;;CO)".to_string());
//! ``` 
mod control_flags;
mod security_descriptor;
mod sid;
mod sid_identifier_authority;
mod acl;
mod ace;
mod ace_header;
mod access_mask;
mod guid;
mod offset;
mod sddl_h;

pub use control_flags::*;
pub use security_descriptor::*;
pub use sid::*;
pub use sid_identifier_authority::*;
pub use acl::*;
pub use ace::*;
pub use ace_header::*;
pub use access_mask::*;
pub use guid::*;
pub(crate) use offset::*;