05/22 Update license_service.py with public key
This commit is contained in:
@@ -1,30 +1,5 @@
|
|||||||
"""
|
"""
|
||||||
TechDesk License Service — offline RSA-signed key validation.
|
TechDesk License Service — offline RSA-signed key validation.
|
||||||
|
|
||||||
Key format: TDESK-<payload_b64>.<signature_b64>
|
|
||||||
|
|
||||||
payload_b64 = base64url( UTF-8 JSON bytes )
|
|
||||||
signature_b64 = base64url( RSA-SHA256 signature of those bytes )
|
|
||||||
|
|
||||||
JSON payload fields:
|
|
||||||
customer — company name
|
|
||||||
email — contact email
|
|
||||||
tier — "community" | "business" | "enterprise"
|
|
||||||
issued_at — ISO date (YYYY-MM-DD)
|
|
||||||
expires_at — ISO date (YYYY-MM-DD)
|
|
||||||
|
|
||||||
The public key below is the matching counterpart to the private key in
|
|
||||||
license_server/private_key.pem. Replace the placeholder with the real key
|
|
||||||
after running license_server/generate_keys.py for the first time.
|
|
||||||
|
|
||||||
Public key replacement steps:
|
|
||||||
1. cd license_server && python generate_keys.py
|
|
||||||
2. Copy the full contents of license_server/public_key.pem
|
|
||||||
3. Replace the PUBLIC_KEY_PEM constant below with the copied text
|
|
||||||
4. Restart the TechDesk app
|
|
||||||
|
|
||||||
The public key can only verify signatures — it cannot forge them.
|
|
||||||
It is safe to embed in the application and ship to customers.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import base64
|
import base64
|
||||||
@@ -34,10 +9,14 @@ from datetime import date, datetime
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# ── Replace this with the output of license_server/generate_keys.py ──────────
|
|
||||||
# After running generate_keys.py, copy the full contents of public_key.pem here.
|
|
||||||
PUBLIC_KEY_PEM = """-----BEGIN PUBLIC KEY-----
|
PUBLIC_KEY_PEM = """-----BEGIN PUBLIC KEY-----
|
||||||
REPLACE_WITH_REAL_PUBLIC_KEY_FROM_license_server/generate_keys.py
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxAMwjewlFaHpP+e69jM8
|
||||||
|
2I630u4B66kHcnqen2bxK65CZxvTBlLy2k/sm4zVVFyX0nf/9bDDio0UUTJrKWsp
|
||||||
|
kWV91Ag6FbvMgiJixfg5cZmpOd/abMs2OXAT/GZY+TLoszduchLLbkZjfDlhJzlt
|
||||||
|
D0MmAU9IY+zm9kW/YLWujFE37CFAfMLkDasQ7ZKKqjzQH6jOi8MoccI5zk8GlpoA
|
||||||
|
zlppk4dyQejmVDIXItg/0WVxaUa26tFafpU1RROlOKsw1lFXlWRQkc/uuJCdM943
|
||||||
|
PX0y1ZCCoNuOKofTIeBT506V7oM4g0rHGmD7esQJsz2S5E2rLetyLwcMKNjzo4a4
|
||||||
|
dwIDAQAB
|
||||||
-----END PUBLIC KEY-----"""
|
-----END PUBLIC KEY-----"""
|
||||||
|
|
||||||
# ── Tier → feature set mapping ───────────────────────────────────────────────
|
# ── Tier → feature set mapping ───────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user