Struct windows_permissions::Sid[][src]

#[repr(C)]
pub struct Sid { /* fields omitted */ }
Expand description

A SID (Security Identifier) that can be used with Windows API calls.

Implementations

Create a new SID from raw parts

use windows_permissions::Sid;

let sid_8 = Sid::new([1, 2, 3, 4, 5, 6], &[1, 2, 3, 4, 5, 6, 7, 8]).unwrap();

assert_eq!(sid_8.id_authority(), &[1, 2, 3, 4, 5, 6]);
assert_eq!(sid_8.sub_authority_count(), 8);
assert_eq!(sid_8.sub_authorities(), &[1, 2, 3, 4, 5, 6, 7, 8]);

No more than 8 sub-authorities can be made using this function. If more are needed, you can parse SDDL or use a wrapper function directly.

use windows_permissions::Sid;

assert!(Sid::new([1, 2, 3, 4, 5, 6], &[1, 2, 3, 4, 5, 6, 7, 8]).is_ok());
assert!(Sid::new([1, 2, 3, 4, 5, 6], &[1, 2, 3, 4, 5, 6, 7, 8, 9]).is_err());

Create a new well-known SID

This is equivalent to calling wrappers::CreateWellKnownSid with None as the domain.

use windows_permissions::{Sid, LocalBox};
use winapi::um::winnt::WinWorldSid;

let win_world_sid = Sid::well_known_sid(WinWorldSid).unwrap();
let another_sid = "S-1-1-0".parse().unwrap();

assert_eq!(win_world_sid, another_sid);

Get the number of sub-authorities in the SID

use windows_permissions::{Sid, LocalBox};

let sid1: LocalBox<Sid> = "S-1-5-1".parse().unwrap();
let sid2: LocalBox<Sid> = "S-1-5-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15".parse().unwrap();

assert_eq!(sid1.sub_authority_count(), 1);
assert_eq!(sid2.sub_authority_count(), 15);

Get the ID authority of the SID

use windows_permissions::{Sid, LocalBox};

let sid1: LocalBox<Sid> = "S-1-5-12-62341".parse().unwrap();
let sid2: LocalBox<Sid> = "S-1-211111900160837-1".parse().unwrap();

assert_eq!(sid1.id_authority(), &[0, 0, 0, 0, 0, 5]);
assert_eq!(sid2.id_authority(), &[0xC0, 0x01, 0x51, 0xD1, 0x23, 0x45]);

Get a sub-authority of the SID if it is available

Returns None if the SID has too few sub-authorities.

use windows_permissions::{Sid, LocalBox};

let sid: LocalBox<Sid> = "S-1-5-12-62341".parse().unwrap();

assert_eq!(sid.sub_authority(0), Some(12));
assert_eq!(sid.sub_authority(1), Some(62341));
assert_eq!(sid.sub_authority(2), None);

Generate a list of the sub-authorities in the SID

Changes in the returned Vec are not reflected in the SID

Get the numeric value of an ID authority

use windows_permissions::Sid;

assert_eq!(
    Sid::id_auth_to_number([0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC]),
    0x123456789ABCu64
);

Trait Implementations

Formats the value using the given formatter. Read more

Formats the value using the given formatter. Read more

Performs the conversion.

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

Converts the given value to a String. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.