预置许可(离线短码)
来源:生产部署包 userManual_Chinese/预置许可使用手册.pdf(VirboxLME-080000000000090D-2026.06.10)。
用于软锁在不能插 USB、不便传文件、或涉密不能带电子设备的环境里激活。用户手工抄短码,或用可联网设备扫码,兑换离线激活码。
版本
- 私有化授权中心不低于 2.23.0
- SDK 不低于 2.6.0.69374
- 许可激活工具不低于 1.0.1.69357
术语
| 术语 | 含义 |
|---|---|
| 预置许可模板 | 在私有化服务里创建。定义产品的许可信息。之后据此生成预置许可包和授权码。 |
预置许可包(.D2C) | 从私有化服务导出。含完整许可信息。随开发商产品发布。 |
| 授权码 | 按预置许可模板发布,发给最终用户,用来兑换离线激活码。 |
| 预置许可请求短码 | 在目标环境生成,含设备绑定所需硬件信息。用户凭它到用户许可中心兑换离线激活码。 |
| 预置许可请求二维码 | 短码的二维码,供可联网设备扫码。 |
| 离线激活码 | 在用户许可中心输入授权码和请求短码后生成,在离线环境完成激活。 |
| 离线解绑码 | 目标环境执行解绑后生成。上传到用户许可中心,清除绑定记录并释放同时绑定数。 |
| 离线解绑请求码 | 解绑码的二维码。 |
流程
- 开发商创建预置许可模板并导出预置许可包。
- 按该模板发布授权码,连同软件交给用户。
- 用户在离线环境生成请求短码,再用能连到私有化服务的设备或人工抄码兑换离线激活码,然后激活。
界面和 OpenAPI 都可以发布。
界面
- 新建产品。
- 新建授权码模板,写全许可信息。
- 在模板界面下载预置许可包,得到
*.D2C。集成进产品并随软件发布。没有成功下载预置许可包之前,不能签发预置授权码。 - 发布许可时选择「预置许可」,生成授权码并发给用户。
OpenAPI
开发者中心的 OpenAPI 手册有参数。主流程:
- 创建预置许可模板。创建后许可条件不能改。要改条款必须新建模板。
- 导出预置许可包。接口返回包内容,开发商写入文件并集成到软件。该接口不支持并发。每 10 秒最多成功获取一个预置包。同一模板多次导出的内容完全一致。
- 发布授权码。授权码里的许可条款也不能改,以模板为准。
预置授权码的扣点与标准授权码相同。在开发者中心 → 授权扣减记录查看。用户手册补充:发布时不扣点,授权码绑定后才扣点。
用户激活
许可激活工具:授权码/借阅码 → 激活 → 短码激活。先在「设置预置许可包目录」里加上预置许可包所在目录。
- 输入授权码。
- 生成并上传预置许可请求短码,兑换离线激活码。
- 输入离线激活码完成激活。
能连到私有化服务的设备可以扫码兑换。不能扫码时,抄录短码,用工具里的「兑换地址」打开用户许可中心网页兑换。
SDK 集成步骤:取得预置许可包完整路径 → 生成请求短码 → 用户在平台侧兑换离线激活码 → 用激活码完成激活。
SLM_UINT32 ret = slm_get_preset_pkg_path(lickey, search_dir, &pkg_path);
ret = slm_slock_c2d_bind_request(&short_c2d, ENUM_C2D_REQ_TYPE_SHORT_C2D_V3);
ret = slm_offline_bind_preset_pkg(lickey, actcode, preset_pkg_content, &err_msg);
示例:
- Runtime:
\API\C\Sample\sample_offline_bind_preset_pkg - RuntimeV2:
\API\C\SampleV2\sample_offline_bind_preset_pkg
用户解绑
许可激活工具:选择授权 → 离线解绑 → 确认后生成解绑信息 → 上传到用户许可中心,释放同时绑定数。可以扫码,也可以在用户许可中心手工抄码。
SDK:slm_enum_device(SLM_DEVICE_TYPE_SLOCK_LOCAL, ...) 枚举本地软锁,再 slm_slock_c2d_unbind_request 生成解绑信息,由用户上传到服务。示例与激活相同目录。
短码规则
请求短码含设备硬件信息。兑换离线激活码时,平台按短码记录绑定设备。
更新:
- 工具里点刷新,手动更新。
- 激活成功后自动更新。
- 连续激活失败 5 次后自动更新。
过期:
- 默认 24 小时。过期后状态为「已过期」,据此兑换的离线激活码也不能再用,要重新生成短码。
- 用户 24 小时内完不成时,可在用户工具里延长。开发商也必须在授权码配置里放宽短码过期限制。授权码限制不超过 24 小时,而本地设成 2 天,兑换会报错。
- 过期时间不要设太长,否则激活后软锁虚拟时钟偏差会变大。
惩罚:
- 连续失败每满 5 次,惩罚等级升一级。
- 惩罚时间按
3^n分钟递增,上限 24 小时。 - 进入惩罚后短码自动更新。惩罚时间内不能继续软锁离线激活。
- 激活成功后,累计失败次数清零。
模板与授权码
模板导出并发布后不能直接更新。要改数据区、许可类型、时间限制或其他许可功能,必须新建模板并重新导出预置许可包。旧包不会同步这些变更。
基于预置许可模板的授权码支持:在线绑定、在线解绑、离线绑定、离线解绑、离线短码激活。标准授权码模板不支持离线短码激活。
离线解绑码和离线激活码一一对应。同一设备用同一授权码再次生成新的离线激活码并绑定后,旧解绑码失效。上传旧码会失败,提示「离线解绑码与最新激活码不匹配,请使用最新的激活码重新绑定并解绑」。
常见问题
没有找到对应的预置许可包:导出的包不在用户工具查找目录。在「设置预置许可包目录」里手动加上该目录。
离线短码激活后登录报 0x13000021(认证错误):旧 SDK 不能登录这种软授权。把 SDK 升到 2.6.0.69374 或更高。
限制
不能用离线短码更新本机已经绑定的许可。模板创建后,许可详情和条款加密写进预置许可包;包一旦发布,后续内容更新不会进已发布的包。
要改许可内容:新建授权模板 → 发布新的预置许可包 → 替换旧包 → 重新激活。这是重新发布并重新激活,不是在旧包上增量更新。
时间跨度与标准绑定不同。标准授权码从首次绑定起算时间跨度。离线短码激活时,激活码里的时间是校准时间,SS 在本地绑定后把本地绑定时间设成绑定当时,因此本地可以使用超过私有化服务里所设时间跨度的许可。临时做法:用具体结束时间限制使用。