LicenseValidator

Struct LicenseValidator 

Source
pub struct LicenseValidator { /* private fields */ }
Expand description

Validator for checking license constraints against runtime context.

The validator performs comprehensive checking of all license constraints and produces detailed validation results suitable for logging and application logic.

§Example

use rust_license_key::validator::LicenseValidator;
use rust_license_key::models::ValidationContext;
use rust_license_key::crypto::PublicKey;
use semver::Version;

// Create validator with the embedded public key
// let public_key = PublicKey::from_base64("...").unwrap();
// let validator = LicenseValidator::new(public_key);

// Set up the validation context
// let context = ValidationContext::new()
//     .with_hostname("myserver.example.com")
//     .with_software_version(Version::new(1, 2, 3))
//     .with_feature("premium");

// Validate the license
// let result = validator.validate_json(&license_json, &context).unwrap();
// if result.is_valid {
//     println!("License is valid for {} more days", result.days_remaining().unwrap_or(i64::MAX));
// }

Implementations§

Source§

impl LicenseValidator

Source

pub fn new(public_key: PublicKey) -> Self

Creates a new validator with the given public key.

§Arguments
  • public_key - The publisher’s public key for signature verification.
Source

pub fn from_public_key_base64(public_key_base64: &str) -> Result<Self>

Creates a new validator from a base64-encoded public key.

§Arguments
  • public_key_base64 - The base64-encoded public key string.
Source

pub fn validate_json( &self, license_json: &str, context: &ValidationContext, ) -> Result<ValidationResult>

Validates a license from a JSON string.

This is the primary validation method. It:

  1. Parses and verifies the license signature.
  2. Checks all constraints against the provided context.
  3. Returns a comprehensive validation result.
§Arguments
  • license_json - The JSON string containing the signed license.
  • context - The runtime context to validate against.
§Returns

A ValidationResult indicating whether the license is valid and providing detailed information about any failures.

Source

pub fn validate_payload( &self, payload: &LicensePayload, context: &ValidationContext, ) -> ValidationResult

Validates a license payload directly.

Use this when you already have a parsed and verified payload. This method assumes the signature has already been verified.

§Arguments
  • payload - The license payload to validate.
  • context - The runtime context to validate against.
§Returns

A ValidationResult with detailed status information.

Source

pub fn parser(&self) -> &LicenseParser

Returns a reference to the underlying parser.

Trait Implementations§

Source§

impl Clone for LicenseValidator

Source§

fn clone(&self) -> LicenseValidator

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 LicenseValidator

Source§

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

Formats the value using the given formatter. Read more

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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