Virbox SDK  2.1
E:/new_work/branches/ss_v2.0/include_out/ss_lm_runtime.h
浏览该文件的文档.
1 
19 #ifndef __SS_LM_RUMTIME_H__
20 #define __SS_LM_RUMTIME_H__
21 #include "ss_define.h"
22 #include "ss_error.h"
23 
24 #ifdef _MSC_VER
25 #pragma comment(linker, "/defaultlib:ws2_32.lib")
26 #pragma comment(linker, "/defaultlib:iphlpapi.lib")
27 #pragma comment(linker, "/defaultlib:psapi.lib")
28 #pragma comment(linker, "/defaultlib:Shlwapi.lib")
29 #pragma comment(lib, "rpcrt4.lib")
30 
31 
32 #if _MSC_VER >= 1900 // 1900是VS2015的版本号,解决静态库在VS2015下编译失败的问题
33 #pragma comment(linker, "/defaultlib:legacy_stdio_definitions.lib")
34 #endif // MSC_VER
35 
36 #endif//???
37 
39 #define LED_COLOR_BLUE 0
40 
41 #define LED_COLOR_RED 1
42 
44 #define LED_STATE_CLOSE 0
45 
46 #define LED_STATE_OPEN 1
47 
48 #define LED_STATE_SHRINK 2
49 
51 typedef SS_UINT32 (SSAPI *SS_CALL_BACK)(SS_UINT32 message,void* wparam,void* lparam);
52 
53 //============================================================
54 // Virbox许可服务 回调消息 message 类型
55 //============================================================
57 #define SS_ANTI_INFORMATION 0x0101
58 
59 #define SS_ANTI_WARNING 0x0102
60 
61 #define SS_ANTI_EXCEPTION 0x0103
62 
63 #define SS_ANTI_IDLE 0x0104
64 
66 #define SS_MSG_SERVICE_START 0x0200
67 
68 #define SS_MSG_SERVICE_STOP 0x0201
69 
70 #define SS_MSG_LOCK_AVAILABLE 0x0202
71 
72 #define SS_MSG_LOCK_UNAVAILABLE 0x0203
73 
74 
75 //============================================================
76 // 回调消息类型:警告类型SS_ANTI_WARNING的值 wparam 参数
77 //============================================================
79 #define SS_ANTI_PATCH_INJECT 0x0201
80 
81 #define SS_ANTI_MODULE_INVALID 0x0202
82 
83 #define SS_ANTI_ATTACH_FOUND 0x0203
84 
85 #define SS_ANTI_THREAD_INVALID 0x0204
86 
87 #define SS_ANTI_THREAD_ERROR 0x0205
88 
89 #define SS_ANTI_CRC_ERROR 0x0206
90 
91 #define SS_ANTI_DEBUGGER_FOUND 0x0207
92 //=============================================================
93 
95 #define SLM_FIXTIME_RAND_LENGTH 8
96 
98 #define SLM_CALLBACK_VERSION02 0x02
99 
101 #define SLM_MEM_MAX_SIZE 2048
102 
104 #define SLM_MAX_INPUT_SIZE 1758
105 
106 #define SLM_MAX_OUTPUT_SIZE 1758
107 
109 #define SLM_MAX_USER_CRYPT_SIZE 1520
110 
112 #define SLM_MAX_USER_DATA_SIZE 2048
113 
115 #define SLM_MAX_WRITE_SIZE 1904
116 
118 #define SLM_VERIFY_DEVICE_PREFIX "SENSELOCK"
119 
121 #define SLM_VERIFY_DATA_SIZE 41
122 
124 #define SLM_LOCK_SN_LENGTH 16
125 
127 #define SLM_DEVELOPER_ID_SIZE 8
128 
130 #define SLM_MAX_SERVER_NAME 32
131 
133 #define SLM_MAX_ACCESS_TOKEN_LENGTH 64
134 
136 #define SLM_MAX_CLOUD_SERVER_LENGTH 100
137 
139 #define SLM_SNIPPET_SEED_LENGTH 32
140 
142 #define SLM_DEV_PASSWORD_LENGTH 16
143 
145 #define SLM_CLOUD_MAX_USER_GUID_SIZE 128
146 
148 #define SLM_GUID_LENGTH 16
149 
151 #define SLM_FILE_TYPE_BINARY 0
152 
153 #define SLM_FILE_TYPE_EXECUTIVE 1
154 
155 #define SLM_FILE_TYPE_KEY 2
156 
158 #define SLM_FILE_PRIVILEGE_FLAG_READ 0x01
159 
160 #define SLM_FILE_PRIVILEGE_FLAG_WRITE 0x02
161 
162 #define SLM_FILE_PRIVILEGE_FLAG_USE 0x04
163 
164 #define SLM_FILE_PRIVILEGE_FLAG_UPDATE 0x08
165 
167 #define SLM_FILE_PRIVILEGE_FLAG_ENTRY_READ 0x10
168 
169 #define SLM_FILE_PRIVILEGE_FLAG_ENTRY_WRITE 0x20
170 
171 #define SLM_FILE_PRIVILEGE_FLAG_ENTRY_USE 0x40
172 
173 #define SLM_FILE_PRIVILEGE_FLAG_ENTRY_UPDATE 0x80
174 
175 
176 
178 #define SLM_LOGIN_MODE_AUTO 0x0000
179 
180 #define SLM_LOGIN_MODE_LOCAL_DONGLE 0x0001
181 
182 #define SLM_LOGIN_MODE_REMOTE_DONGLE 0x0002
183 
184 #define SLM_LOGIN_MODE_CLOUD 0x0004
185 
186 #define SLM_LOGIN_MODE_LOCAL_SLOCK 0x0008
187 
188 #define SLM_LOGIN_MODE_REMOTE_SLOCK 0x0010
189 
191 #define SLM_LOGIN_FLAG_FIND_ALL 0x0001
192 
193 #define SLM_LOGIN_FLAG_VERSION 0x0004
194 
195 #define SLM_LOGIN_FLAG_LOCKSN 0x0008
196 
197 #define SLM_LOGIN_FLAG_SERVER 0x0010
198 
199 #define SLM_LOGIN_FLAG_SNIPPET 0x0020
200 
201 
203 #define LANGUAGE_CHINESE_ASCII 0x0001
204 
205 #define LANGUAGE_ENGLISH_ASCII 0x0002
206 
207 #define LANGUAGE_TRADITIONAL_CHINESE_ASCII 0x0003
208 
210 #define SLM_INIT_FLAG_NOTIFY 0x01
211 
213 #define SLM_MAC_SIZE 6
214 
215 #define SLM_MAX_CPU_INFO_SIZE 128
216 
217 #define SLM_MAX_BIOS_INFO_SIZE 128
218 
219 #define SLM_MAX_SESSION_ID_SIZE 32
220 
221 
223 typedef unsigned int SLM_HANDLE_INDEX;
224 
226 typedef enum _INFO_TYPE
227 {
236 } INFO_TYPE;
237 
239 typedef enum _LIC_USER_DATA_TYPE
240 {
242  ROM = 0,
244  RAW = 1,
246  PUB = 2
248 
250 typedef enum _ENUM_DESC_TYPE
251 {
252  ENUM_DESC_LOCAL_DONGLE = 0,
253  ENUM_DESC_REMOTE_DONGLE = 1,
254  ENUM_DESC_CLOUD = 2,
255  ENUM_DESC_SMART_OFFLINE = 3,
256  ENUM_DESC_LOCAL_SLOCK = 4,
257  ENUM_DESC_REMOTE_SLOCK = 5,
259 
261 typedef struct _ST_LED_CONTROL
262 {
264  SS_UINT32 index;
266  SS_UINT32 state;
268  SS_UINT32 interval;
270 
272 typedef struct _ST_INIT_PARAM
273 {
275  SS_UINT32 version;
277  SS_UINT32 flag;
281  SS_UINT32 timeout;
284 } ST_INIT_PARAM;
285 
287 typedef struct _ST_LOGIN_PARAM
288 {
290  SS_UINT32 size;
292  SS_UINT32 license_id;
294  SS_UINT32 timeout;
296  SS_UINT32 login_mode;
298  SS_UINT32 login_flag;
312 
314 typedef struct _ST_LOCK_INFO
315 {
317  SS_UINT32 size;
319  SS_UINT8 device_type;
321  SS_UINT8 device_mode;
323  SS_UINT16 res;
325  SS_UINT8 lmfirm_version[4];
327  SS_UINT32 h5firm_version;
329  SS_UINT32 hardware_version;
331  SS_UINT32 manufacture_date;
333  SS_UINT32 total_space;
335  SS_UINT32 available_space;
337  SS_UINT32 protocol;
339  SS_UINT32 slave_addr;
341  SS_UINT32 clock;
343  SS_UINT32 clock_type;
345  SS_UINT32 drop_times;
349  SS_BYTE user_info[128];
351  SS_BYTE inner_info[128];
352 } ST_LOCK_INFO;
353 
355 typedef struct _ST_SESSION_INFO
356 {
358  SS_UINT32 size;
360  SS_UINT32 license_id;
361  union
362  {
363  SS_BYTE sn[SLM_LOCK_SN_LENGTH];
364  SS_BYTE user_guid[SLM_GUID_LENGTH];
365  };
367  SS_UINT32 app_time_out;
369  SS_UINT32 app_process_id;
371  SS_UINT8 mac[SLM_MAC_SIZE];
372  char session_id[SLM_MAX_SESSION_ID_SIZE];
378 
380 typedef struct _ST_SLM_LICENSE_INFO
381 {
383  SS_UINT32 size;
385  SS_UINT32 lic_ver;
387  SS_BYTE flag[4];
391  SS_UINT32 lic_id;
393  SS_UINT32 start_time;
395  SS_UINT32 end_time;
397  SS_UINT32 span_time;
399  SS_UINT32 time_stamp;
401  SS_UINT16 serial;
403  SS_UINT16 concurrency;
405  SS_UINT32 count;
407  SS_UINT64 module_bit;
409  SS_UINT32 lock_time;
411  SS_UINT32 first_use_time;
413  SS_UINT32 curr_count;
415  SS_UINT32 offline_period;
417  SS_UINT32 bind_node;
419  SS_UINT32 max_bind_node;
421  SS_UINT32 raw_size;
423  SS_UINT32 rom_size;
425  SS_UINT32 pub_size;
427 
429 typedef struct _ST_FILE_INFO
430 {
432  SS_BYTE validate;
434  SS_BYTE type;
436  SS_UINT16 pri;
438  SS_UINT32 size;
440  SS_UINT32 time;
442  SS_BYTE name[16];
443 } ST_FILE_INFO;
444 
446 typedef struct _ST_FILE_INFO_LIST
447 {
449  SS_UINT32 version;
450  SS_UINT32 count;
451  ST_FILE_INFO info[1];
453 
455 typedef struct _ST_DEV_INFO
456 {
458  SS_UINT16 desc_type;
460  SS_UINT16 firm_type;
461  SS_BYTE developer_id[SLM_DEVELOPER_ID_SIZE];
462  union
463  {
464  struct
465  {
466  SS_CHAR cloud_server[114];
467  SS_CHAR user_token[48];
468  SS_BYTE user_guid[SLM_GUID_LENGTH];
469  } cloud, smart_offline; // 云锁/智能离线
470 
471  struct
472  {
473  SS_BYTE serial[SLM_LOCK_SN_LENGTH];
474  SS_CHAR ip[64];
475  SS_UINT16 port;
476  SS_CHAR host_name[SLM_MAX_SERVER_NAME];
477  // reserved
478  } h5; // 硬件锁
479 
480  struct
481  {
482  SS_BYTE user_guid[SLM_GUID_LENGTH];
483  SS_CHAR ip[64];
484  SS_UINT16 port;
485  //SS_BYTE reserved[114 - 16 - 32];
486  SS_CHAR host_name[SLM_MAX_SERVER_NAME];
487  // reserved for remote slock
488  SS_CHAR account_name[64];
489  } slock; // 软锁
490  };
491 
492 } ST_DEV_INFO;
493 
495 typedef struct _ST_ENUM_DEVICE
496 {
497  ST_DEV_INFO dev_info;
498  ST_LOCK_INFO lock_info;
500 
502 typedef struct _ST_DEV_INFO_LIST
503 {
504  SS_UINT32 version; // 当前为1
505  SS_UINT32 count;
506  ST_ENUM_DEVICE info[1];
508 
510 typedef struct _ST_LICENSE_IDS
511 {
512  SS_UINT32 count;
513  SS_UINT32 lic_ids[1];
515 
522 #ifdef __cplusplus
523 extern "C" {
524 #endif
525 
534 SS_UINT32 SSAPI slm_init(IN ST_INIT_PARAM* pst_init);
535 
546 SS_UINT32 SSAPI slm_find_license(
547  IN SS_UINT32 license_id,
548  IN INFO_FORMAT_TYPE format,
549  OUT char** license_desc
550  );
551 
552 
559 SS_UINT32 SSAPI slm_get_cloud_token(OUT SS_CHAR** access_token);
560 
620 SS_UINT32 SSAPI slm_login(
621  IN const ST_LOGIN_PARAM* license_param,
622  IN INFO_FORMAT_TYPE param_format,
623  OUT SLM_HANDLE_INDEX * slm_handle,
624  IN OUT void* auth
625  );
626 
635 SS_UINT32 SSAPI slm_logout(SLM_HANDLE_INDEX slm_handle);
636 
687 SS_UINT32 SSAPI slm_keep_alive(SLM_HANDLE_INDEX slm_handle);
688 
734 SS_UINT32 SSAPI slm_encrypt(
735  IN SLM_HANDLE_INDEX slm_handle,
736  IN SS_BYTE* inbuffer,
737  OUT SS_BYTE* outbuffer,
738  IN SS_UINT32 len
739  );
740 
756 SS_UINT32 SSAPI slm_decrypt(
757  IN SLM_HANDLE_INDEX slm_handle,
758  IN SS_BYTE* inbuffer,
759  OUT SS_BYTE* outbuffer,
760  IN SS_UINT32 len
761  );
762 
771 SS_UINT32 SSAPI slm_user_data_getsize(
772  IN SLM_HANDLE_INDEX slm_handle,
773  IN LIC_USER_DATA_TYPE type,
774  OUT SS_UINT32* pmem_size
775  );
776 
809 SS_UINT32 SSAPI slm_user_data_read(
810  IN SLM_HANDLE_INDEX slm_handle,
811  IN LIC_USER_DATA_TYPE type,
812  OUT SS_BYTE* readbuf,
813  IN SS_UINT32 offset,
814  IN SS_UINT32 len
815  );
816 
847 SS_UINT32 SSAPI slm_user_data_write(
848  IN SLM_HANDLE_INDEX slm_handle,
849  IN SS_BYTE* writebuf,
850  IN SS_UINT32 offset,
851  IN SS_UINT32 len
852  );
853 
865 SS_UINT32 SSAPI slm_pub_data_getsize(
866  IN SLM_HANDLE_INDEX slm_handle,
867  IN SS_UINT32 license_id,
868  OUT SS_UINT32* pmem_size
869  );
870 
908 SS_UINT32 SSAPI slm_pub_data_read(
909  IN SLM_HANDLE_INDEX slm_handle,
910  IN SS_UINT32 license_id,
911  OUT SS_BYTE* readbuf,
912  IN SS_UINT32 offset,
913  IN SS_UINT32 len
914  );
915 
1005 SS_UINT32 SSAPI slm_get_info(
1006  IN SLM_HANDLE_INDEX slm_handle,
1007  IN INFO_TYPE type,
1008  IN INFO_FORMAT_TYPE format,
1009  OUT char** result
1010  );
1011 
1052 SS_UINT32 SSAPI slm_execute_static(
1053  IN SLM_HANDLE_INDEX slm_handle,
1054  IN const char* exfname,
1055  IN SS_BYTE* inbuf,
1056  IN SS_UINT32 insize,
1057  OUT SS_BYTE* poutbuf,
1058  IN SS_UINT32 outsize,
1059  OUT SS_UINT32* pretsize
1060  );
1061 
1100 SS_UINT32 SSAPI slm_execute_dynamic(
1101  IN SLM_HANDLE_INDEX slm_handle,
1102  IN SS_BYTE* exf_buffer,
1103  IN SS_UINT32 exf_size,
1104  IN SS_BYTE* inbuf,
1105  IN SS_UINT32 insize,
1106  OUT SS_BYTE* poutbuf,
1107  IN SS_UINT32 outsize,
1108  OUT SS_UINT32* pretsize
1109  );
1110 
1171 SS_UINT32 SSAPI slm_mem_alloc(
1172  IN SLM_HANDLE_INDEX slm_handle,
1173  IN SS_UINT32 size,
1174  OUT SS_UINT32* mem_id
1175  );
1176 
1188 SS_UINT32 SSAPI slm_mem_free(
1189  IN SLM_HANDLE_INDEX slm_handle,
1190  IN SS_UINT32 mem_id
1191  );
1192 
1208 SS_UINT32 SSAPI slm_mem_read(
1209  IN SLM_HANDLE_INDEX slm_handle,
1210  IN SS_UINT32 mem_id,
1211  IN SS_UINT32 offset,
1212  IN SS_UINT32 len,
1213  IN SS_BYTE* readbuff,
1214  OUT SS_UINT32* readlen
1215  );
1216 
1232 SS_UINT32 SSAPI slm_mem_write(
1233  IN SLM_HANDLE_INDEX slm_handle,
1234  IN SS_UINT32 mem_id,
1235  IN SS_UINT32 offset,
1236  IN SS_UINT32 len,
1237  IN SS_BYTE* writebuff,
1238  OUT SS_UINT32* numberofbyteswritten
1239  );
1240 
1248 SS_UINT32 SSAPI slm_is_debug(IN void *auth);
1249 
1264 SS_UINT32 SSAPI slm_get_cert(
1265  IN SLM_HANDLE_INDEX slm_handle,
1266  IN CERT_TYPE cert_type,
1267  OUT SS_BYTE* cert,
1268  IN SS_UINT32 cert_size,
1269  OUT SS_UINT32* cert_len
1270  );
1271 
1282 SS_UINT32 SSAPI slm_get_device_cert(
1283  IN SLM_HANDLE_INDEX slm_handle,
1284  OUT SS_BYTE* device_cert,
1285  IN SS_UINT32 buff_size,
1286  OUT SS_UINT32* return_size
1287  );
1288 
1320 SS_UINT32 SSAPI slm_sign_by_device(
1321  IN SLM_HANDLE_INDEX slm_handle,
1322  IN SS_BYTE* verify_data,
1323  IN SS_UINT32 verify_data_size,
1324  OUT SS_BYTE* signature,
1325  IN SS_UINT32 signature_buf_size,
1326  OUT SS_UINT32* signature_size
1327  );
1328 
1337 SS_UINT32 SSAPI slm_adjust_time_request(
1338  IN SLM_HANDLE_INDEX slm_handle,
1339  OUT SS_BYTE rand[SLM_FIXTIME_RAND_LENGTH],
1340  OUT SS_UINT32* lock_time,
1341  IN OUT SS_UINT32* pc_time
1342  );
1343 
1368 SS_UINT32 SSAPI slm_led_control(
1369  IN SLM_HANDLE_INDEX slm_handle,
1370  IN ST_LED_CONTROL* led_ctrl
1371  );
1372 
1379 SS_UINT32 SSAPI slm_get_version(
1380  OUT SS_UINT32* api_version,
1381  OUT SS_UINT32* ss_version
1382  );
1383 
1388 void SSAPI slm_free(
1389  IN void* buffer
1390  );
1391 
1405 SS_UINT32 SSAPI slm_update(
1406  IN char* d2c_pkg,
1407  OUT char** error_msg
1408  );
1409 
1425 SS_UINT32 SSAPI slm_update_ex(
1426  IN SS_BYTE* lock_sn,
1427  IN char* d2c_pkg,
1428  OUT char** error_msg
1429  );
1430 
1468 SS_UINT32 SSAPI slm_d2c_update_inside(
1469  IN char* lock_sn,
1470  IN char* inside_file
1471  );
1472 
1483 SS_UINT32 SSAPI slm_enum_device(
1484  OUT char** device_info
1485  );
1486 
1501 SS_UINT32 SSAPI slm_enum_device_ex(
1502  IN INFO_FORMAT_TYPE format,
1503  OUT void **device_info
1504  );
1505 
1517 SS_UINT32 SSAPI slm_enum_license_id(
1518  IN const char *device_info,
1519  OUT char **license_ids
1520  );
1521 
1534 SS_UINT32 SSAPI slm_enum_license_id_ex(
1535  IN ST_DEV_INFO *device_info,
1536  IN INFO_FORMAT_TYPE format,
1537  OUT void **license_ids
1538  );
1539 
1593 SS_UINT32 SSAPI slm_get_license_info(
1594  IN const char *device_info,
1595  IN SS_UINT32 license_id,
1596  OUT char **license_info
1597  );
1598 
1649 SS_UINT32 SSAPI slm_get_license_info_ex(
1650  IN ST_DEV_INFO *device_info,
1651  IN SS_UINT32 license_id,
1652  IN INFO_FORMAT_TYPE format,
1653  OUT void **license_info
1654  );
1655 
1662 SS_UINT32 SSAPI slm_check_module(IN SLM_HANDLE_INDEX slm_handle, IN SS_UINT32 module_id);
1663 
1677 SS_UINT32 SSAPI slm_snippet_execute(
1678  IN SLM_HANDLE_INDEX slm_handle,
1679  IN SS_BYTE* snippet_code,
1680  IN SS_UINT32 code_size,
1681  IN SS_BYTE* input,
1682  IN SS_UINT32 input_size,
1683  OUT SS_BYTE* output,
1684  IN SS_UINT32 outbuf_size,
1685  OUT SS_UINT32* output_size
1686  );
1687 
1694 SS_UINT32 SSAPI slm_get_developer_id(OUT SS_BYTE developer_id[SLM_DEVELOPER_ID_SIZE]);
1695 
1708 SS_UINT32 SSAPI slm_license_sign(
1709  IN SLM_HANDLE_INDEX slm_handle,
1710  IN SS_BYTE *sign_data,
1711  IN SS_UINT32 sign_length,
1712  OUT SS_BYTE *signature,
1713  IN SS_UINT32 max_buf_size,
1714  OUT SS_UINT32 *signature_length
1715  );
1716 
1740 SS_UINT32 SSAPI slm_license_verify(
1741  IN SS_BYTE *sign_data,
1742  IN SS_UINT32 sign_length,
1743  IN SS_BYTE *signature,
1744  IN SS_UINT32 signature_length,
1745  OUT char **sign_info
1746  );
1747 
1755 const SS_CHAR * SSAPI slm_error_format(
1756  IN SS_UINT32 error_code,
1757  IN SS_UINT32 language_id
1758  );
1759 
1767 SS_UINT32 SSAPI slm_cleanup(void);
1768 
1777 SS_UINT32 SSAPI slm_extensions_config(IN const char *config);
1778 
1779 #ifdef __cplusplus
1780 };
1781 #endif //__cplusplus
1782 
1788 #endif // #ifndef __SS_LM_RUMTIME_H__
1789