Skip to content

Modern License Key Verification Design: Transition RSA‑512 ==> Ed25519 #627

@RealRaven2000

Description

@RealRaven2000

Modern License Verification: RSA → Ed25519 Migration

Background:
Current licenses: <product>-<email>:<expiry>;<RSA_encrypted_blob>

  • Verified by decrypting the encrypted part and comparing to the readable payload.
  • Checks expiry and Thunderbird identity.
  • Problem: RSA‑512 is insecure; private key can be derived → old licenses are forgeable.

Proposed Solution:

  • Switch to Ed25519 signatures.
  • Keep payload format unchanged (<product>-<email>:<expiry>;<signature>).
  • Verification steps:
    1. Split at ;
    2. Verify signature over the readable part
    3. Check expiry and email

Migration Strategy:

  1. Dual verification: Ed25519 preferred, fallback to RSA‑512 for legacy licenses.
  2. Issue new licenses with Ed25519 only.
  3. Gradually phase out RSA‑512 by prompting users to exchange old keys.

Local License Generator Requirements:

  • Standalone script for generating licenses locally.
  • Fast enough for Fastspring’s execution limits (<10s).
  • Uses Ed25519 signing for deterministic, secure output.
  • No external dependencies.

Add-on Integration:

  • New ed25519.mjs.js module handles verification.
  • Licenser.mjs.js updated to use Ed25519 while keeping RSA fallback temporarily.
  • Fully open-source; only the public key is shipped.

Benefits:

  • Secure, modern cryptography.
  • Short, fixed-size signatures (~88 chars Base64).
  • Backwards-compatible migration.
  • Fast local generation, minimal impact on existing workflow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions