![]() |
Virbox SDK
2.1
|
函数 | |
SS_UINT32 SSAPI | slm_init (IN ST_INIT_PARAM *pst_init) |
Runtime API 初始化函数,调用所有 Runtime API 必须先调用此函数进行初始化 更多... | |
SS_UINT32 SSAPI | slm_find_license (IN SS_UINT32 license_id, IN INFO_FORMAT_TYPE format, OUT char **license_desc) |
查找许可信息(仅对硬件锁有效) 更多... | |
SS_UINT32 SSAPI | slm_get_cloud_token (OUT SS_CHAR **access_token) |
枚举已登录的用户 token 更多... | |
SS_UINT32 SSAPI | slm_login (IN const ST_LOGIN_PARAM *license_param, IN INFO_FORMAT_TYPE param_format, OUT SLM_HANDLE_INDEX *slm_handle, IN OUT void *auth) |
安全登录许可,用 JSON 传递参数,并且检查时间(是否到期或者是否早于开始时间)、次数、并发数是否归零, 如果有计数器,则永久性减少对应的计数器,对于网络锁则临时增加网络并发计数器。 更多... | |
SS_UINT32 SSAPI | slm_logout (SLM_HANDLE_INDEX slm_handle) |
许可登出,并且释放许可句柄等资源 更多... | |
SS_UINT32 SSAPI | slm_keep_alive (SLM_HANDLE_INDEX slm_handle) |
保持登录会话心跳,避免变为“僵尸句柄”。 更多... | |
SS_UINT32 SSAPI | slm_encrypt (IN SLM_HANDLE_INDEX slm_handle, IN SS_BYTE *inbuffer, OUT SS_BYTE *outbuffer, IN SS_UINT32 len) |
许可加密,相同的许可ID相同的开发者加密结果相同 更多... | |
SS_UINT32 SSAPI | slm_decrypt (IN SLM_HANDLE_INDEX slm_handle, IN SS_BYTE *inbuffer, OUT SS_BYTE *outbuffer, IN SS_UINT32 len) |
许可解密,相同的许可ID相同的开发者加密结果相同 更多... | |
SS_UINT32 SSAPI | slm_user_data_getsize (IN SLM_HANDLE_INDEX slm_handle, IN LIC_USER_DATA_TYPE type, OUT SS_UINT32 *pmem_size) |
获得许可的用户数据区大小 更多... | |
SS_UINT32 SSAPI | slm_user_data_read (IN SLM_HANDLE_INDEX slm_handle, IN LIC_USER_DATA_TYPE type, OUT SS_BYTE *readbuf, IN SS_UINT32 offset, IN SS_UINT32 len) |
读许可数据,可以读取 #PUB、#RAW 和 ROM 更多... | |
SS_UINT32 SSAPI | slm_user_data_write (IN SLM_HANDLE_INDEX slm_handle, IN SS_BYTE *writebuf, IN SS_UINT32 offset, IN SS_UINT32 len) |
写许可的读写数据区 ,数据区操作之前请先确认锁内读写区的大小,可以使用 slm_user_data_getsize 获得 更多... | |
SS_UINT32 SSAPI | slm_pub_data_getsize (IN SLM_HANDLE_INDEX slm_handle, IN SS_UINT32 license_id, OUT SS_UINT32 *pmem_size) |
获得指定许可的公开区数据区大小,需要登录 0号许可 更多... | |
SS_UINT32 SSAPI | slm_pub_data_read (IN SLM_HANDLE_INDEX slm_handle, IN SS_UINT32 license_id, OUT SS_BYTE *readbuf, IN SS_UINT32 offset, IN SS_UINT32 len) |
读取许可公开区,需要登录 0号许可 更多... | |
SS_UINT32 SSAPI | slm_get_info (IN SLM_HANDLE_INDEX slm_handle, IN INFO_TYPE type, IN INFO_FORMAT_TYPE format, OUT char **result) |
获取已登录许可的状态信息,例如许可信息、硬件锁信息等 更多... | |
SS_UINT32 SSAPI | slm_execute_static (IN SLM_HANDLE_INDEX slm_handle, IN const char *exfname, IN SS_BYTE *inbuf, IN SS_UINT32 insize, OUT SS_BYTE *poutbuf, IN SS_UINT32 outsize, OUT SS_UINT32 *pretsize) |
开发者自定义算法,锁内可执行算法,锁内静态代码执行(仅支持硬件锁), 由开发者调用 D2CAPI 库中的 d2c_add_pkg 签发可执行代码接口生成,提前将可执行算法下载到锁内 更多... | |
SS_UINT32 SSAPI | slm_execute_dynamic (IN SLM_HANDLE_INDEX slm_handle, IN SS_BYTE *exf_buffer, IN SS_UINT32 exf_size, IN SS_BYTE *inbuf, IN SS_UINT32 insize, OUT SS_BYTE *poutbuf, IN SS_UINT32 outsize, OUT SS_UINT32 *pretsize) |
开发者自定义算法,锁内可执行算法,锁内动态执行代码(仅支持硬件锁),在应用程序运行过程中下载到锁内进行执行 更多... | |
SS_UINT32 SSAPI | slm_mem_alloc (IN SLM_HANDLE_INDEX slm_handle, IN SS_UINT32 size, OUT SS_UINT32 *mem_id) |
Virbox许可服务 内存托管内存申请 更多... | |
SS_UINT32 SSAPI | slm_mem_free (IN SLM_HANDLE_INDEX slm_handle, IN SS_UINT32 mem_id) |
释放托管内存 更多... | |
SS_UINT32 SSAPI | slm_mem_read (IN SLM_HANDLE_INDEX slm_handle, IN SS_UINT32 mem_id, IN SS_UINT32 offset, IN SS_UINT32 len, IN SS_BYTE *readbuff, OUT SS_UINT32 *readlen) |
Virbox许可服务 内存托管读 更多... | |
SS_UINT32 SSAPI | slm_mem_write (IN SLM_HANDLE_INDEX slm_handle, IN SS_UINT32 mem_id, IN SS_UINT32 offset, IN SS_UINT32 len, IN SS_BYTE *writebuff, OUT SS_UINT32 *numberofbyteswritten) |
Virbox许可服务 内存托管内存写入 更多... | |
SS_UINT32 SSAPI | slm_is_debug (IN void *auth) |
检测是否正在调试 更多... | |
SS_UINT32 SSAPI | slm_get_cert (IN SLM_HANDLE_INDEX slm_handle, IN CERT_TYPE cert_type, OUT SS_BYTE *cert, IN SS_UINT32 cert_size, OUT SS_UINT32 *cert_len) |
通过证书类型,获取已登录许可的设备证书 更多... | |
SS_UINT32 SSAPI | slm_get_device_cert (IN SLM_HANDLE_INDEX slm_handle, OUT SS_BYTE *device_cert, IN SS_UINT32 buff_size, OUT SS_UINT32 *return_size) |
获取已登录的加密锁证书 更多... | |
SS_UINT32 SSAPI | slm_sign_by_device (IN SLM_HANDLE_INDEX slm_handle, IN SS_BYTE *verify_data, IN SS_UINT32 verify_data_size, OUT SS_BYTE *signature, IN SS_UINT32 signature_buf_size, OUT SS_UINT32 *signature_size) |
设备正版验证(仅支持硬件锁) 更多... | |
SS_UINT32 SSAPI | slm_adjust_time_request (IN SLM_HANDLE_INDEX slm_handle, OUT SS_BYTE rand[SLM_FIXTIME_RAND_LENGTH], OUT SS_UINT32 *lock_time, IN OUT SS_UINT32 *pc_time) |
获取时间修复数据,用于生成时钟校准请求 更多... | |
SS_UINT32 SSAPI | slm_led_control (IN SLM_HANDLE_INDEX slm_handle, IN ST_LED_CONTROL *led_ctrl) |
闪烁指示灯 更多... | |
SS_UINT32 SSAPI | slm_get_version (OUT SS_UINT32 *api_version, OUT SS_UINT32 *ss_version) |
获得 Runtime 库 和 Virbox许可服务 的版本信息. 更多... | |
void SSAPI | slm_free (IN void *buffer) |
释放API内分配堆区域 更多... | |
SS_UINT32 SSAPI | slm_update (IN char *d2c_pkg, OUT char **error_msg) |
将D2C包进行升级,d2c包 由 D2CAPI 生成 更多... | |
SS_UINT32 SSAPI | slm_update_ex (IN SS_BYTE *lock_sn, IN char *d2c_pkg, OUT char **error_msg) |
将D2C包进行升级,需指定加密锁唯一序列号,d2c包 由 D2CAPI 生成 更多... | |
SS_UINT32 SSAPI | slm_d2c_update_inside (IN char *lock_sn, IN char *inside_file) |
锁内短码升级,需指定加密锁唯一序列号,需锁内可执行算法配合(仅支持硬件锁) 更多... | |
SS_UINT32 SSAPI | slm_enum_device (OUT char **device_info) |
枚举本地锁信息 更多... | |
SS_UINT32 SSAPI | slm_enum_device_ex (IN INFO_FORMAT_TYPE format, OUT void **device_info) |
枚举本地锁信息,支持按返回值类型获取 更多... | |
SS_UINT32 SSAPI | slm_enum_license_id (IN const char *device_info, OUT char **license_ids) |
枚举指定设备下所有许可ID 更多... | |
SS_UINT32 SSAPI | slm_enum_license_id_ex (IN ST_DEV_INFO *device_info, IN INFO_FORMAT_TYPE format, OUT void **license_ids) |
枚举指定设备下所有许可ID,支持按返回值类型获取 更多... | |
SS_UINT32 SSAPI | slm_get_license_info (IN const char *device_info, IN SS_UINT32 license_id, OUT char **license_info) |
获取指定设备下指定许可的全部信息 更多... | |
SS_UINT32 SSAPI | slm_get_license_info_ex (IN ST_DEV_INFO *device_info, IN SS_UINT32 license_id, IN INFO_FORMAT_TYPE format, OUT void **license_info) |
获取指定设备下指定许可的全部信息,支持按返回值类型获取 更多... | |
SS_UINT32 SSAPI | slm_check_module (IN SLM_HANDLE_INDEX slm_handle, IN SS_UINT32 module_id) |
检查模块 更多... | |
SS_UINT32 SSAPI | slm_snippet_execute (IN SLM_HANDLE_INDEX slm_handle, IN SS_BYTE *snippet_code, IN SS_UINT32 code_size, IN SS_BYTE *input, IN SS_UINT32 input_size, OUT SS_BYTE *output, IN SS_UINT32 outbuf_size, OUT SS_UINT32 *output_size) |
碎片代码执行(开发者不必关心) 更多... | |
SS_UINT32 SSAPI | slm_get_developer_id (OUT SS_BYTE developer_id[SLM_DEVELOPER_ID_SIZE]) |
获取 Runtime 库对应的开发商ID 更多... | |
SS_UINT32 SSAPI | slm_license_sign (IN SLM_HANDLE_INDEX slm_handle, IN SS_BYTE *sign_data, IN SS_UINT32 sign_length, OUT SS_BYTE *signature, IN SS_UINT32 max_buf_size, OUT SS_UINT32 *signature_length) |
使用已登录的云许可进行签名(仅支持云锁) 更多... | |
SS_UINT32 SSAPI | slm_license_verify (IN SS_BYTE *sign_data, IN SS_UINT32 sign_length, IN SS_BYTE *signature, IN SS_UINT32 signature_length, OUT char **sign_info) |
对云许可签名后的数据进行验签(仅支持云锁) 更多... | |
const SS_CHAR *SSAPI | slm_error_format (IN SS_UINT32 error_code, IN SS_UINT32 language_id) |
通过错误码获得错误信息 更多... | |
SS_UINT32 SSAPI | slm_cleanup (void) |
反初始化函数,与 slm_init 对应 更多... | |
SS_UINT32 SSAPI | slm_extensions_config (IN const char *config) |
扩展配置接口 更多... | |
此文档是 Virbox Runtime 用户运行时库,包含许可访问,许可加密,锁内代码执行等接口
SS_UINT32 SSAPI slm_adjust_time_request | ( | IN SLM_HANDLE_INDEX | slm_handle, |
OUT SS_BYTE | rand[SLM_FIXTIME_RAND_LENGTH], | ||
OUT SS_UINT32 * | lock_time, | ||
IN OUT SS_UINT32 * | pc_time | ||
) |
获取时间修复数据,用于生成时钟校准请求
[in] | slm_handle | 许可句柄,由 slm_login 得到 |
[out] | rand | 随机数 |
[out] | lock_time | 锁时间 |
[in,out] | pc_time | PC时间,返回的PC时间(传入0则取当时时间) |
SS_UINT32 SSAPI slm_check_module | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_UINT32 | module_id | ||
) |
检查模块
[in] | slm_handle | 许可句柄,由 slm_login 得到 |
[in] | module_id | 模块ID,范围由(1 ~ 64) |
SS_UINT32 SSAPI slm_cleanup | ( | void | ) |
反初始化函数,与 slm_init 对应
SS_UINT32 SSAPI slm_d2c_update_inside | ( | IN char * | lock_sn, |
IN char * | inside_file | ||
) |
锁内短码升级,需指定加密锁唯一序列号,需锁内可执行算法配合(仅支持硬件锁)
[in] | lock_sn | 锁号(唯一序列号,十六进制字符串) |
[in] | inside_file | 锁内短码文件名 |
特别说明:短码激活方案使用较为复杂,需要写锁内代码的技术要求,若开发者需要使用此功能,可联系深思技术服务进行支持。
SS_UINT32 SSAPI slm_decrypt | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_BYTE * | inbuffer, | ||
OUT SS_BYTE * | outbuffer, | ||
IN SS_UINT32 | len | ||
) |
许可解密,相同的许可ID相同的开发者加密结果相同
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | inbuffer | 解密输入缓冲区,需要 16字节 对齐。最大不能超过 1520个字节。 |
[out] | outbuffer | 解密输出缓冲区,需要 16字节 对齐 |
[in] | len | 加密缓冲区大小,为 16 的整数倍。 |
SS_UINT32 SSAPI slm_encrypt | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_BYTE * | inbuffer, | ||
OUT SS_BYTE * | outbuffer, | ||
IN SS_UINT32 | len | ||
) |
许可加密,相同的许可ID相同的开发者加密结果相同
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | inbuffer | 加密输入缓冲区,需要 16字节 对齐,最大不能超过 1520个字节。 |
[out] | outbuffer | 加密输出缓冲区,需要 16字节 对齐 |
[in] | len | 加密缓冲区大小,为 16 的整数倍。 |
SS_UINT32 SSAPI slm_enum_device | ( | OUT char ** | device_info) |
枚举本地锁信息
[out] | device_info | 设备描述信息,不再使用时,需调用 slm_free 释放 |
SS_UINT32 SSAPI slm_enum_device_ex | ( | IN INFO_FORMAT_TYPE | format, |
OUT void ** | device_info | ||
) |
枚举本地锁信息,支持按返回值类型获取
[in] | format | 信息格式,参考 INFO_FORMAT_TYPE ,当前仅支持 JSON 和 STRUCT |
[out] | device_info | 设备描述信息,不再使用时,需调用 slm_free 释放 |
SS_UINT32 SSAPI slm_enum_license_id | ( | IN const char * | device_info, |
OUT char ** | license_ids | ||
) |
枚举指定设备下所有许可ID
[in] | device_info | 指定某个锁登陆 |
[out] | license_ids | 返回所有许可的ID数组,::JSON 格式,需要调用 slm_free 释放 license_ids |
SS_UINT32 SSAPI slm_enum_license_id_ex | ( | IN ST_DEV_INFO * | device_info, |
IN INFO_FORMAT_TYPE | format, | ||
OUT void ** | license_ids | ||
) |
枚举指定设备下所有许可ID,支持按返回值类型获取
[in] | device_info | 指定某个锁信息 |
[in] | format | 信息格式,参考 INFO_FORMAT_TYPE ,当前仅支持 JSON 和 STRUCT |
[out] | license_ids | 返回所有许可的ID数组,JSON格式,需要调用 slm_free 释放 license_ids |
const SS_CHAR* SSAPI slm_error_format | ( | IN SS_UINT32 | error_code, |
IN SS_UINT32 | language_id | ||
) |
通过错误码获得错误信息
[in] | error_code | 通过各 API 调用失败后返回的错误码值 |
[in] | language_id | 要返回字符串的语言,见 LANGUAGE_CHINESE_ASCII 等 |
SS_UINT32 SSAPI slm_execute_dynamic | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_BYTE * | exf_buffer, | ||
IN SS_UINT32 | exf_size, | ||
IN SS_BYTE * | inbuf, | ||
IN SS_UINT32 | insize, | ||
OUT SS_BYTE * | poutbuf, | ||
IN SS_UINT32 | outsize, | ||
OUT SS_UINT32 * | pretsize | ||
) |
开发者自定义算法,锁内可执行算法,锁内动态执行代码(仅支持硬件锁),在应用程序运行过程中下载到锁内进行执行
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | exf_buffer | 动态exf 算法缓冲区,由开发者调用 D2CAPI 库中的 gen_dynamic_code 接口生成的 D2C数据 |
[in] | exf_size | 动态exf 文件大小 |
[in] | inbuf | 要传给锁内可执行算法的数据,输入缓冲区 |
[in] | insize | 输入数据长度(最大支持缓冲区大小参考宏: SLM_MAX_INPUT_SIZE ) |
[out] | poutbuf | 锁内可执行算法的返回数据,输出缓存区 |
[in] | outsize | 输出缓存长度 |
[out] | pretsize | 实际返回缓存长度(最大支持缓冲区大小参考宏: SLM_MAX_OUTPUT_SIZE ) |
SS_UINT32 SSAPI slm_execute_static | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN const char * | exfname, | ||
IN SS_BYTE * | inbuf, | ||
IN SS_UINT32 | insize, | ||
OUT SS_BYTE * | poutbuf, | ||
IN SS_UINT32 | outsize, | ||
OUT SS_UINT32 * | pretsize | ||
) |
开发者自定义算法,锁内可执行算法,锁内静态代码执行(仅支持硬件锁), 由开发者调用 D2CAPI 库中的 d2c_add_pkg 签发可执行代码接口生成,提前将可执行算法下载到锁内
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | exfname | 锁内可执行算法的文件名 |
[in] | inbuf | 要传给锁内可执行算法的数据,输入缓冲区 |
[in] | insize | 输入数据长度(最大支持缓冲区大小参考宏: SLM_MAX_INPUT_SIZE ) |
[out] | poutbuf | 锁内可执行算法的返回数据,输出缓存区 |
[in] | outsize | 输出缓存长度 |
[out] | pretsize | 实际返回缓存长度(最大支持缓冲区大小参考宏: SLM_MAX_OUTPUT_SIZE ) |
许可绑定的好处:
SS_UINT32 SSAPI slm_extensions_config | ( | IN const char * | config) |
扩展配置接口
[in] | config | 配置参数( JSON )
|
SS_UINT32 SSAPI slm_find_license | ( | IN SS_UINT32 | license_id, |
IN INFO_FORMAT_TYPE | format, | ||
OUT char ** | license_desc | ||
) |
查找许可信息(仅对硬件锁有效)
[in] | license_id | 要查找的许可ID(0–0xFFFFFFFF) |
[in] | format | 参数格式,参考 INFO_FORMAT_TYPE ,目前仅支持 JSON 和 STRUCT |
[out] | license_desc | 许可描述信息的指针,格式由 format 指定,需调用 slm_free 释放 |
void SSAPI slm_free | ( | IN void * | buffer) |
释放API内分配堆区域
[in] | buffer | API 生成的堆 |
SS_UINT32 SSAPI slm_get_cert | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN CERT_TYPE | cert_type, | ||
OUT SS_BYTE * | cert, | ||
IN SS_UINT32 | cert_size, | ||
OUT SS_UINT32 * | cert_len | ||
) |
通过证书类型,获取已登录许可的设备证书
[in] | slm_handle | 许可句柄,由 slm_login 得到 |
[in] | cert_type | 证书类型,参考 CERT_TYPE |
[out] | cert | 证书缓冲区 |
[in] | cert_size | 缓冲区大小 |
[out] | cert_len | 返回的设备证书大小 |
SS_UINT32 SSAPI slm_get_cloud_token | ( | OUT SS_CHAR ** | access_token) |
SS_UINT32 SSAPI slm_get_developer_id | ( | OUT SS_BYTE | developer_id[SLM_DEVELOPER_ID_SIZE]) |
获取 Runtime 库对应的开发商ID
[out] | developer_id | 输出开发商ID,二进制数组 |
SS_UINT32 SSAPI slm_get_device_cert | ( | IN SLM_HANDLE_INDEX | slm_handle, |
OUT SS_BYTE * | device_cert, | ||
IN SS_UINT32 | buff_size, | ||
OUT SS_UINT32 * | return_size | ||
) |
SS_UINT32 SSAPI slm_get_info | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN INFO_TYPE | type, | ||
IN INFO_FORMAT_TYPE | format, | ||
OUT char ** | result | ||
) |
获取已登录许可的状态信息,例如许可信息、硬件锁信息等
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | type | 信息类型,参考 INFO_TYPE |
[in] | format | 信息格式,参考 INFO_FORMAT_TYPE ,当前仅支持 JSON 和 STRUCT |
[out] | result | 返回结果,如果函数返回成功,需要调用slm_free释放 |
SS_UINT32 SSAPI slm_get_license_info | ( | IN const char * | device_info, |
IN SS_UINT32 | license_id, | ||
OUT char ** | license_info | ||
) |
获取指定设备下指定许可的全部信息
[in] | device_info | 指定某个锁登陆 |
[in] | license_id | 指定许可ID |
[out] | license_info | 返回许可的信息 JSON 格式 等同于 slm_get_info 的 LICENSE_INFO |
SS_UINT32 SSAPI slm_get_license_info_ex | ( | IN ST_DEV_INFO * | device_info, |
IN SS_UINT32 | license_id, | ||
IN INFO_FORMAT_TYPE | format, | ||
OUT void ** | license_info | ||
) |
获取指定设备下指定许可的全部信息,支持按返回值类型获取
[in] | device_info | 指定某个锁登陆 |
[in] | format | 信息格式,参考 INFO_FORMAT_TYPE ,当前仅支持 JSON 和 STRUCT |
[in] | license_id | 指定许可ID |
[out] | license_info | 返回许可的信息 JSON 格式 等同于 slm_get_info 的 LICENSE_INFO |
SS_UINT32 SSAPI slm_get_version | ( | OUT SS_UINT32 * | api_version, |
OUT SS_UINT32 * | ss_version | ||
) |
获得 Runtime 库 和 Virbox许可服务 的版本信息.
[out] | api_version | API的版本(总是成功) |
[out] | ss_version | Virbox许可服务 的版本 |
SS_UINT32 SSAPI slm_init | ( | IN ST_INIT_PARAM * | pst_init) |
Runtime API 初始化函数,调用所有 Runtime API 必须先调用此函数进行初始化
[in] | pst_init | 初始化参数,见 ST_INIT_PARAM 结构声明 |
SS_UINT32 SSAPI slm_is_debug | ( | IN void * | auth) |
SS_UINT32 SSAPI slm_keep_alive | ( | SLM_HANDLE_INDEX | slm_handle) |
保持登录会话心跳,避免变为“僵尸句柄”。
[in] | slm_handle | 许可句柄值 |
SS_UINT32 SSAPI slm_led_control | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN ST_LED_CONTROL * | led_ctrl | ||
) |
闪烁指示灯
[in] | slm_handle | 许可句柄,由 slm_login 得到 |
[in] | led_ctrl | 闪灯控制结构( ST_LED_CONTROL ) |
SS_UINT32 SSAPI slm_license_sign | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_BYTE * | sign_data, | ||
IN SS_UINT32 | sign_length, | ||
OUT SS_BYTE * | signature, | ||
IN SS_UINT32 | max_buf_size, | ||
OUT SS_UINT32 * | signature_length | ||
) |
使用已登录的云许可进行签名(仅支持云锁)
[in] | slm_handle | 许可句柄,由 slm_login 得到 |
[in] | sign_data | 要签名的数据(最少16字节,最大64字节) |
[in] | sign_length | 要签名的数据长度 |
[out] | signature | 签名结果缓冲区 |
[in] | max_buf_size | 签名结果缓冲区大小 |
[out] | signature_length | 签名结果实际长度 |
SS_UINT32 SSAPI slm_license_verify | ( | IN SS_BYTE * | sign_data, |
IN SS_UINT32 | sign_length, | ||
IN SS_BYTE * | signature, | ||
IN SS_UINT32 | signature_length, | ||
OUT char ** | sign_info | ||
) |
对云许可签名后的数据进行验签(仅支持云锁)
[in] | sign_data | 要签名的数据(最少 16字节,最大 64字节) |
[in] | sign_length | 要签名的数据长度 |
[in] | signature | 签名结果数据 |
[in] | signature_length | 签名结果长度 |
[out] | sign_info | 签名数据信息,json结构,不再使用时,需要调用 slm_free 释放 |
SS_UINT32 SSAPI slm_login | ( | IN const ST_LOGIN_PARAM * | license_param, |
IN INFO_FORMAT_TYPE | param_format, | ||
OUT SLM_HANDLE_INDEX * | slm_handle, | ||
IN OUT void * | auth | ||
) |
安全登录许可,用 JSON 传递参数,并且检查时间(是否到期或者是否早于开始时间)、次数、并发数是否归零, 如果有计数器,则永久性减少对应的计数器,对于网络锁则临时增加网络并发计数器。
[in] | license_param | 登录许可描述参数,可以用来描述 licenseid,或者指定登录特性等。 |
[in] | param_format | 许可描述字符串类型,仅支持 #STRUCT(为确保安全,SDK版本号2.1.0.15128之后的许可登录将不再支持 json 登录的方法) |
[out] | slm_handle | 返回登录之后许可句柄index值,范围在 0-256 之间。 |
[out] | auth | 认证 login 函数返回是否正确,含有 ECC签名 和返回值加密,不使用可以填 NULL。 |
SS_UINT32 SSAPI slm_logout | ( | SLM_HANDLE_INDEX | slm_handle) |
许可登出,并且释放许可句柄等资源
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
SS_UINT32 SSAPI slm_mem_alloc | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_UINT32 | size, | ||
OUT SS_UINT32 * | mem_id | ||
) |
Virbox许可服务 内存托管内存申请
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | size | 申请内存大小,最大 SLM_MEM_MAX_SIZE 。 |
[out] | mem_id | 返回托管内存id |
用户可以把自己 APP 的一些敏感数据保存到 Virbox许可服务 的托管内存,比如帐号口令,数据库的帐号与密码,涉及到操作权限的临时数据放到 Virbox许可服务 内存托管里面。 另外一方面 APP 跟 Virbox许可服务 耦合度极大的提高,防止黑客脱离 Virbox许可服务 调试与运行。
内存托管的好处:
SS_UINT32 SSAPI slm_mem_free | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_UINT32 | mem_id | ||
) |
释放托管内存
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | mem_id | 托管内存id |
SS_UINT32 SSAPI slm_mem_read | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_UINT32 | mem_id, | ||
IN SS_UINT32 | offset, | ||
IN SS_UINT32 | len, | ||
IN SS_BYTE * | readbuff, | ||
OUT SS_UINT32 * | readlen | ||
) |
Virbox许可服务 内存托管读
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | mem_id | 托管内存id |
[in] | offset | 读取托管数据偏移 |
[in] | len | 读取托管数据长度 |
[out] | readbuff | 外部存储托管数据缓存 |
[out] | readlen | 返回实际读取长度 |
SS_UINT32 SSAPI slm_mem_write | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_UINT32 | mem_id, | ||
IN SS_UINT32 | offset, | ||
IN SS_UINT32 | len, | ||
IN SS_BYTE * | writebuff, | ||
OUT SS_UINT32 * | numberofbyteswritten | ||
) |
Virbox许可服务 内存托管内存写入
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | mem_id | 托管内存id |
[in] | offset | 托管数据偏移 |
[in] | len | 写入的托管数据长度 |
[in] | writebuff | 需要写入托管内存区域的数据缓存 |
[out] | numberofbyteswritten | 返回实际写的长度 |
SS_UINT32 SSAPI slm_pub_data_getsize | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_UINT32 | license_id, | ||
OUT SS_UINT32 * | pmem_size | ||
) |
获得指定许可的公开区数据区大小,需要登录 0号许可
[in] | slm_handle | 0号许可句柄值,其他许可句柄无法通过此方式得到公开区大小,由 slm_login 得到 |
[in] | license_id | 要获取数据区大小的 许可ID |
[out] | pmem_size | 返回数据区大小 |
SS_UINT32 SSAPI slm_pub_data_read | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_UINT32 | license_id, | ||
OUT SS_BYTE * | readbuf, | ||
IN SS_UINT32 | offset, | ||
IN SS_UINT32 | len | ||
) |
读取许可公开区,需要登录 0号许可
[in] | slm_handle | 0号许可 句柄值,其他许可句柄无法通过此方式得到公开区内容,由 slm_login 得到 |
[in] | license_id | 要获取数据区内容的 许可ID |
[out] | readbuf | 外部存储要读取数据区内容的缓冲区 |
[in] | offset | 要读取数据区的数据偏移 |
[in] | len | 外部存储缓冲区大小 |
SS_UINT32 SSAPI slm_sign_by_device | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_BYTE * | verify_data, | ||
IN SS_UINT32 | verify_data_size, | ||
OUT SS_BYTE * | signature, | ||
IN SS_UINT32 | signature_buf_size, | ||
OUT SS_UINT32 * | signature_size | ||
) |
设备正版验证(仅支持硬件锁)
[in] | slm_handle | 许可句柄,由 slm_login 得到 |
[in] | verify_data | 验证数据(必须以字符"SENSELOCK"(9字节)开头) |
[in] | verify_data_size | 验证数据大小,大小必须为 SLM_VERIFY_DATA_SIZE (41)个字节 |
[out] | signature | 返回的签名结果 |
[in] | signature_buf_size | 缓冲区大小 |
[out] | signature_size | 签名结果大小 |
SS_UINT32 SSAPI slm_snippet_execute | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_BYTE * | snippet_code, | ||
IN SS_UINT32 | code_size, | ||
IN SS_BYTE * | input, | ||
IN SS_UINT32 | input_size, | ||
OUT SS_BYTE * | output, | ||
IN SS_UINT32 | outbuf_size, | ||
OUT SS_UINT32 * | output_size | ||
) |
碎片代码执行(开发者不必关心)
[in] | slm_handle | 许可句柄 |
[in] | snippet_code | 碎片代码 |
[in] | code_size | 碎片代码大小 |
[in] | input | 输入数据 |
[in] | input_size | 输入数据长度 |
[out] | output | 输出缓冲区 |
[in] | outbuf_size | 输出缓冲区长度 |
[out] | output_size | 输出数据长度 |
SS_UINT32 SSAPI slm_update | ( | IN char * | d2c_pkg, |
OUT char ** | error_msg | ||
) |
将D2C包进行升级,d2c包 由 D2CAPI 生成
[in] | d2c_pkg | d2c文件数据 |
[out] | error_msg | 错误信息,需要调用slm_free释放 |
SS_UINT32 SSAPI slm_update_ex | ( | IN SS_BYTE * | lock_sn, |
IN char * | d2c_pkg, | ||
OUT char ** | error_msg | ||
) |
将D2C包进行升级,需指定加密锁唯一序列号,d2c包 由 D2CAPI 生成
[in] | lock_sn | 锁号(唯一序列号,十六进制字符串) |
[in] | d2c_pkg | d2c文件数据 |
[out] | error_msg | 错误信息,不使用需要调用 slm_free 释放 |
SS_UINT32 SSAPI slm_user_data_getsize | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN LIC_USER_DATA_TYPE | type, | ||
OUT SS_UINT32 * | pmem_size | ||
) |
获得许可的用户数据区大小
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | type | 用户数据区类型,类型定义见 LIC_USER_DATA_TYPE |
[out] | pmem_size | 返回用户数据区大小 |
SS_UINT32 SSAPI slm_user_data_read | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN LIC_USER_DATA_TYPE | type, | ||
OUT SS_BYTE * | readbuf, | ||
IN SS_UINT32 | offset, | ||
IN SS_UINT32 | len | ||
) |
读许可数据,可以读取 #PUB、#RAW 和 ROM
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | type | 用户数据区类型,参考 LIC_USER_DATA_TYPE |
[out] | readbuf | 用户数据区读取缓存区 |
[in] | offset | 读取的用户数据区的数据偏移 |
[in] | len | 外部使用的存储缓存区大小 |
SS_UINT32 SSAPI slm_user_data_write | ( | IN SLM_HANDLE_INDEX | slm_handle, |
IN SS_BYTE * | writebuf, | ||
IN SS_UINT32 | offset, | ||
IN SS_UINT32 | len | ||
) |
写许可的读写数据区 ,数据区操作之前请先确认锁内读写区的大小,可以使用 slm_user_data_getsize 获得
[in] | slm_handle | 许可句柄值,由 slm_login 得到 |
[in] | writebuf | 要写入的数据内容存区 |
[in] | offset | 加密锁内数据区的偏移,即锁内数据区的写入位置 |
[in] | len | 要写入数据的长度(数据最大长度 = min(slm_user_data_getsize, SLM_MAX_WRITE_SIZE) |