offline-license-validator 0.1.1

Offline license validation library using Ed25519 signatures
Documentation
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};

/// License payload structure
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicensePayload {
    pub hwid: String,
    pub issued_at: DateTime<Utc>,
    pub expires_at: DateTime<Utc>,
    pub license_type: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub metadata: Option<serde_json::Value>,
}

/// License validation result
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidLicenseInfo {
    pub license_type: String,
    pub issued_at: DateTime<Utc>,
    pub expires_at: DateTime<Utc>,
    pub hwid: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub metadata: Option<serde_json::Value>,
}

impl From<LicensePayload> for ValidLicenseInfo {
    fn from(payload: LicensePayload) -> Self {
        ValidLicenseInfo {
            license_type: payload.license_type,
            issued_at: payload.issued_at,
            expires_at: payload.expires_at,
            hwid: payload.hwid,
            metadata: payload.metadata,
        }
    }
}