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
| SDK | Yêu cầu | Thư viện dùng kèm | Khoá thiết bị |
|---|---|---|---|
| C++ | C++17, CMake, vcpkg | libsodium, libcurl, nlohmann/json | Trên Windows được niêm phong bằng DPAPI |
| C# | .NET 8 trở lên | BouncyCastle | Trên Windows được niêm phong bằng DPAPI |
| Python | Python 3.9 trở lên | cryptography | Lư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:
- 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. - Gọi
activatevới key của khách khi chạy lần đầu, hoặcloginnếu ứng dụng dùng tài khoản. - Gửi
heartbeatkhi phần mềm đang chạy, giữa hai lần chờ số giâynextCheckIntrả 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_response | Câu trả lời không có chữ ký |
unknown_key | Chữ ký bằng khoá mà bản build này không tin |
invalid_response_signature | Chữ ký sai, nội dung đã bị sửa |
stale_response | Câ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,redeemvàtransferkhô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_limitedcó ký, hoặc 429, 503 không ký: mọi lượt gọi, theoRetry-Aftertố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,
activatevàheartbeattrả 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ànullkhi Chế độ chỉ online đang bật. Hàmverify_offline/VerifyOfflinetrả 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/CheckUpdatesAsyncchỉ 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á.