{
  "slug": "fernet-token",
  "name": "gizza-ai/fernet-token",
  "version": "0.1.0",
  "title": "Fernet Token Generator — create & decrypt Fernet tokens online — gizza.ai",
  "description": "Create and read Fernet tokens (AES-128-CBC + HMAC-SHA256) in your browser: generate a key, encrypt to a url-safe token, decrypt with optional TTL. No upload.",
  "tags": [
    "fernet",
    "fernet token",
    "symmetric encryption",
    "aes-128-cbc",
    "hmac-sha256",
    "token",
    "ttl",
    "privacy"
  ],
  "category": "security",
  "urls": {
    "page": "https://gizza.ai/tools/fernet-token/",
    "markdown": "https://gizza.ai/tools/fernet-token/index.md",
    "descriptor": "https://gizza.ai/tools/fernet-token/tool.json",
    "deep_link_example": "https://gizza.ai/tools/fernet-token/?text=Text%20to%20encrypt%2C%20or%20a%20Fernet%20token%20to%20decrypt&key=Leave%20blank%20when%20encrypting%20to%20generate%20a%20fresh%20key&mode=encrypt&ttl=0"
  },
  "cli": "gizza tool fernet-token \"Text to encrypt, or a Fernet token to decrypt\"",
  "tool": {
    "description": "Create, read, or inspect Fernet symmetric tokens (AES-128-CBC + HMAC-SHA256 with an embedded timestamp). encrypt turns text into a url-safe token (blank key = generate one); decrypt verifies and reads it back, with optional TTL; inspect shows the token structure without the key.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "key": {
          "description": "The Fernet key: url-safe base64 of 32 bytes. Required for decrypt. On encrypt, leave blank to generate a fresh key (returned in the response).",
          "type": "string"
        },
        "mode": {
          "default": "encrypt",
          "description": "encrypt (default) turns text into a Fernet token; decrypt reads a token back into text; inspect shows a token's structure (version, timestamp, IV, sizes) without the key, and validates the HMAC if a key is given.",
          "enum": [
            "encrypt",
            "decrypt",
            "inspect"
          ],
          "type": "string"
        },
        "text": {
          "description": "On encrypt: the text to protect. On decrypt: the Fernet token to read.",
          "type": "string"
        },
        "ttl": {
          "default": 0,
          "description": "Decrypt only: max token age in seconds. 0 (default) disables the age check; a positive value rejects tokens older than this (or with a future timestamp).",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "text"
      ],
      "type": "object"
    }
  }
}