Skip to main content

LicenseBlock

Struct LicenseBlock 

Source
pub struct LicenseBlock {
    pub license_id: [u8; 16],
    pub licensee_hash: [u8; 32],
    pub issued_at: u64,
    pub expires_at: u64,
    pub flags: u8,
    pub seat_limit: u16,
    pub query_limit: u32,
    pub custom_terms: Vec<u8>,
}
Expand description

Commercial license block

Fields§

§license_id: [u8; 16]

Unique license identifier (UUID as 16 bytes)

§licensee_hash: [u8; 32]

SHA-256 hash of licensee identifier

§issued_at: u64

Issue timestamp (Unix epoch seconds)

§expires_at: u64

Expiration timestamp (Unix epoch seconds, 0 = never)

§flags: u8

License flags

§seat_limit: u16

Maximum concurrent seats (0 = unlimited)

§query_limit: u32

Maximum queries (0 = unlimited)

§custom_terms: Vec<u8>

Custom terms (optional, serialized)

Implementations§

Source§

impl LicenseBlock

Source

pub fn new(license_id: [u8; 16], licensee_hash: [u8; 32]) -> Self

Create a new license block

Source

pub fn with_expiration(self, expires_at: u64) -> Self

Set expiration timestamp

Source

pub fn with_seat_limit(self, limit: u16) -> Self

Set seat limit

Source

pub fn with_query_limit(self, limit: u32) -> Self

Set query limit

Source

pub fn with_watermark(self) -> Self

Mark as watermarked

Source

pub fn with_revocable(self) -> Self

Mark as revocable

Source

pub fn with_transferable(self) -> Self

Mark as transferable

Source

pub fn with_custom_terms(self, terms: Vec<u8>) -> Self

Set custom terms

Source

pub fn size(&self) -> usize

Total serialized size

Source

pub fn to_bytes(&self) -> Vec<u8>

Serialize to bytes

Format:

  • license_id (16 bytes)
  • licensee_hash (32 bytes)
  • issued_at (8 bytes, LE)
  • expires_at (8 bytes, LE)
  • flags (1 byte)
  • seat_limit (2 bytes, LE)
  • query_limit (4 bytes, LE)
  • custom_terms_len (4 bytes, LE) – added for deserialization
  • custom_terms (variable)
Source

pub fn from_bytes(buf: &[u8]) -> Result<Self>

Deserialize from bytes

§Errors

Returns error if buffer is too small or malformed.

Source

pub const fn is_expiration_enforced(&self) -> bool

Check if expiration is enforced

Source

pub const fn is_seats_enforced(&self) -> bool

Check if seat limit is enforced

Source

pub const fn is_query_limited(&self) -> bool

Check if query limit is enforced

Source

pub const fn is_watermarked(&self) -> bool

Check if watermarked

Source

pub const fn is_revocable(&self) -> bool

Check if revocable

Source

pub const fn is_transferable(&self) -> bool

Check if transferable

Source

pub fn verify(&self) -> Result<()>

Verify the license is currently valid

§Errors

Returns error if license has expired.

Source

pub fn license_id_string(&self) -> String

Get license ID as UUID string

Trait Implementations§

Source§

impl Clone for LicenseBlock

Source§

fn clone(&self) -> LicenseBlock

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LicenseBlock

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for LicenseBlock

Source§

fn eq(&self, other: &LicenseBlock) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for LicenseBlock

Source§

impl StructuralPartialEq for LicenseBlock

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,