Giao thức CLV1 đã công khaiĐọc đặc tả
Mục lục thư viện

Thư viện tài liệuTích hợp

SDK C++, C# và Python

Ba SDK native cho phần mềm desktop và công cụ dòng lệnh. Chúng nói cùng giao thức CLV1.1 với SDK JavaScript: máy ký mọi request, ứng dụng của bạn ký mọi câu trả lời, token offline và manifest cập nhật được kiểm ngay trên máy.

4 phút đọc

Chọn SDK

SDKYêu cầuThư viện dùng kèmKhoá thiết bị
C++C++17, CMake, vcpkglibsodium, libcurl, nlohmann/jsonTrên Windows được niêm phong bằng DPAPI
C#.NET 8 trở lênBouncyCastleTrên Windows được niêm phong bằng DPAPI
PythonPython 3.9 trở lêncryptographyLưu trong file chỉ người dùng hiện tại đọc được

Cả ba vượt qua cùng một bộ test vector với server, và có bài kiểm thử chạy chúng với API thật.

Ba bước tích hợp

Trang Tích hợp › Kết nối phần mềm của ứng dụng có mã mẫu cho từng ngôn ngữ, với App ID và khoá công khai đã điền sẵn, và dự án mẫu tải về chạy được ngay. Bước nào cũng giống nhau:

  1. Tạo client với địa chỉ API, App ID, khoá công khai của ứng dụng, mô tả máy (default_device, ClavisDevice.Default) và khoá thiết bị được lưu lại giữa các lần chạy.
  2. Gọi activate với key của khách khi chạy lần đầu, hoặc login nếu ứng dụng dùng tài khoản.
  3. Gửi heartbeat khi phần mềm đang chạy, giữa hai lần chờ số giây nextCheckIn trả về. Phiên hết hạn sau 60 phút không có heartbeat.
from clavisauh import ClavisClient, ClavisError, default_device, load_or_create_device_key

clavis = ClavisClient(
    base_url="https://api.example.com",
    app_id="app_…",
    app_public_keys=["<khoá công khai>"],
    device=default_device(),
    device_key=load_or_create_device_key("~/.myapp/device.key"),
)
try:
    grant = clavis.activate(license_key)
except ClavisError as err:
    print("Bị từ chối:", err.code)

Khi câu trả lời không đáng tin

Mọi câu trả lời phải mang chữ ký của ứng dụng, đúng request vừa gửi và không lệch quá 60 giây. Nếu không, SDK ném lỗi xác minh với một trong các mã:

MãÝ nghĩa
unsigned_responseCâu trả lời không có chữ ký
unknown_keyChữ ký bằng khoá mà bản build này không tin
invalid_response_signatureChữ ký sai, nội dung đã bị sửa
stale_responseCâu trả lời quá cũ hoặc quá mới

Hãy coi các lỗi này như không có câu trả lời. Sau câu trả lời hợp lệ kế tiếp, SDK tự báo số lần sai về Protect 24/7 (tín hiệu chữ ký giả).

Thử lại và nhịp heartbeat

SDK tự thử lại, với thời gian chờ tăng dần và ngẫu nhiên, mặc định thêm hai lần. maxRetries đổi số lần đó, đặt 0 là tắt. fallbackUrls liệt kê các địa chỉ khác của cùng server, thử lần lượt. Các tên này và nextCheckIn bên dưới viết theo cách của từng ngôn ngữ.

  • Không có trả lời, hoặc trang lỗi 5xx không ký: chỉ các lượt gọi an toàn khi lặp (init, activate, login, heartbeat, variables, kiểm tra cập nhật, logout, báo cáo). trial, register, redeem và transfer không bao giờ được gửi lại sau khi mất câu trả lời, vì có thể chúng đã chạy xong.
  • rate_limited có ký, hoặc 429, 503 không ký: mọi lượt gọi, theo Retry-After tối đa 30 giây.

Chỉ chữ ký đã xác minh mới đổi được trạng thái license.

nextCheckIn trả số giây cần chờ trước heartbeat kế tiếp: nextCheckSeconds có ký của server, cộng thêm phần chênh tối đa một phần năm, cố định theo từng máy, để hàng nghìn bản không gọi cùng lúc.

Token offline và cập nhật

  • Trên mọi gói, activate và heartbeat trả token offline, mặc định dùng được 7 ngày. Trên Premium, gói license đặt thời hạn. Token chỉ là null khi Chế độ chỉ online đang bật. Hàm verify_offline / VerifyOffline trả nội dung token khi nó còn hạn và đúng máy này. Token chép sang máy khác, đồng hồ bị lùi, hay license đã bị thu hồi đều bị từ chối. Máy chưa nghe tin thu hồi vẫn chạy offline tới khi token hết hạn.
  • check_updates / CheckUpdatesAsync chỉ trả manifest phát hành khi nó được ký bằng khoá của ứng dụng và còn mới; hàm tải file từ chối file có sha256 không khớp.

Xoay khoá ký

Truyền mọi khoá công khai mà bản build tin vào danh sách khoá (app_public_keys, AppPublicKeys). Khi chuẩn bị khoá mới ở bảng Khoá ký, phát hành một bản build mang cả hai khoá trước, rồi mới kích hoạt khoá mới. Xem Khoá ký và xoay vòng khoá.

Liên quan

Bạn cần giúp gì?

Câu hỏi thường gặp

ClavisAUH là gì?

Dịch vụ bản quyền và xác thực cho phần mềm desktop: license key, khoá thiết bị, đăng nhập người dùng và phản hồi có chữ ký. Tất cả quản lý trên một dashboard

Vì sao kẻ crack không làm giả được server?

SDK chỉ tin câu trả lời ký bằng khoá bí mật của ứng dụng. Khoá đó không bao giờ rời server của chúng tôi, nên server giả không ký được và bị từ chối

Trong file chạy của tôi có gì?

Mã ứng dụng và khoá công khai. Không có bí mật nào, vì mỗi thiết bị tự tạo cặp khoá riêng ở lần chạy đầu

Có chạy được khi offline không?

Có. Mọi gói đều có token offline có chữ ký dùng được 7 ngày, ứng dụng tự kiểm tra tại máy. Premium cho bạn chọn bao lâu. License đã thu hồi vẫn có thể chạy offline trong khoảng đó, trừ khi Chế độ chỉ online đang bật

Hỗ trợ những ngôn ngữ nào?

Hiện có JavaScript và TypeScript. Tiếp theo là C++, C# và Python, cùng một giao thức công khai

Gói Basic có miễn phí thật không?

Có. Không giới hạn thời gian, không cần thẻ. Cần nhiều hơn thì lên Premium

Liên hệ