Virbox SDK  2.1
E:/new_work/branches/ss_v2.0/include_out/d2c.h
浏览该文件的文档.
1 
31 #ifndef _D2C_H
32 #define _D2C_H
33 
34 #include "ss_define.h"
35 
36 
38 #define MAX_ACCOUNT_NAME_LENGTH 64
39 
40 #define D2C_GUID_LENGTH 37
41 
42 #define FIXTIME_RAND_LENGTH 8
43 
44 #define SNIPPET_SEED_LENGTH 32
45 
47 #define ACCESS_READ 0x01
48 
49 #define ACCESS_WRITE_DELETE 0x02
50 
51 #define ACCESS_USE 0x04
52 
53 #define ACCESS_WRITE_DELETE_RU 0x08
54 
56 #define ACCESS_ENTRY_READ 0x10
57 
58 #define ACCESS_ENTRY_WRITE_DELETE 0x20
59 
60 #define ACCESS_ENTRY_USE 0x40
61 
62 #define ACCESS_ENTRY_WRITE_DELETE_RU 0x80
63 
65 #define PKI_CA_TYPE_SYSTEM 0
66 
67 #define PKI_CA_TYPE_DEVELOPER 1
68 
69 #define PKI_CA_TYPE_DEVICE 2
70 
71 #define PKI_CA_TYPE_ACCOUNT 3
72 
73 #define PKI_CA_TYPE_ROOT 0x80
74 
76 #define CTRL_PIN_MIN_SIZE 8
77 
78 #define CTRL_PIN_MAX_SIZE 255
79 
81 typedef struct _D2C_HANDLE_INTERNAL* D2C_HANDLE;
82 
84 typedef struct _MASTER_HANDLE_INTERNAL* MASTER_HANDLE;
85 
87 typedef enum _SIGN_TYPE
88 {
93 
94 } SIGN_TYPE;
95 
97 typedef enum _D2C_HASH_ALGO
98 {
103 
104 } D2C_HASH_ALGO;
105 
107 typedef enum _ACCOUNT_TYPE
108 {
117 
118 } ACCOUNT_TYPE;
119 
121 typedef struct _SNIPPET_CODE_CONTEXT
122 {
124  SS_UINT32 version;
126  SS_UINT32 code_id;
128  SS_UINT32 license_id;
130  SS_BYTE key[32];
134 
141 #ifdef __cplusplus
142 extern "C" {
143 #endif
144 
152  SS_UINT32 SSAPI master_open(OUT MASTER_HANDLE* device_handle);
153 
160  SS_UINT32 SSAPI master_close(IN MASTER_HANDLE device_handle);
161 
189  SS_UINT32 SSAPI master_get_developer_id(IN MASTER_HANDLE device_handle, OUT SS_BYTE *developer_id);
190 
199  SS_UINT32 SSAPI master_get_root_count(IN MASTER_HANDLE device_handle, OUT SS_UINT32 *count);
200 
228  SS_UINT32 SSAPI master_get_ca_cert(IN MASTER_HANDLE device_handle, IN SS_BYTE ca_type,
229  OUT SS_BYTE *ca_cert, IN SS_UINT32 cert_bufsize, OUT SS_UINT32 *cert_size);
230 
231 
244  SS_UINT32 SSAPI master_get_ca_cert_ex(IN MASTER_HANDLE device_handle, IN SS_BYTE ca_type, IN SS_UINT32 root_index,
245  OUT SS_BYTE *ca_cert, IN SS_UINT32 cert_bufsize, OUT SS_UINT32 *cert_size);
246 
256  SS_UINT32 SSAPI master_get_root_ca(IN MASTER_HANDLE device_handle,
257  OUT SS_BYTE *root_ca, IN SS_UINT32 root_bufsize, OUT SS_UINT32 *root_size);
258 
268  SS_UINT32 SSAPI master_get_device_ca(IN MASTER_HANDLE device_handle,
269  OUT SS_BYTE *device_ca, IN SS_UINT32 device_bufsize, OUT SS_UINT32 *device_size);
270 
280  SS_UINT32 SSAPI master_get_developer_ca(IN MASTER_HANDLE device_handle,
281  OUT SS_BYTE *developer_ca, IN SS_UINT32 ca_bufsize, OUT SS_UINT32 *ca_size);
282 
292  SS_UINT32 SSAPI master_get_developer_cert(IN MASTER_HANDLE device_handle,
293  OUT SS_BYTE *developer_cert, IN SS_UINT32 cert_bufsize, OUT SS_UINT32 *cert_size);
294 
305  SS_UINT32 SSAPI master_get_developer_cert_ex(IN MASTER_HANDLE device_handle, IN SS_UINT32 root_index,
306  OUT SS_BYTE* developer_cert, IN SS_UINT32 cert_bufsize, OUT SS_UINT32* cert_size);
337  SS_UINT32 SSAPI master_verify_ca(IN MASTER_HANDLE device_handle, IN SS_BOOL store,
338  IN SS_BYTE ca_type, IN SS_BYTE *ca_cert, IN SS_UINT32 ca_len);
339 
351  SS_UINT32 SSAPI master_verify_ca_ex(IN MASTER_HANDLE device_handle, IN SS_BOOL store,
352  IN SS_BYTE ca_type, IN SS_UINT32 root_index, IN SS_BYTE *ca_cert, IN SS_UINT32 ca_len);
353 
362  SS_UINT32 SSAPI master_get_seedkey(
363  IN MASTER_HANDLE device_handle,
364  OUT SS_BYTE* key,
365  IN SS_UINT32 max_key_len,
366  OUT SS_UINT32* key_len
367  );
368 
388  SS_UINT32 SSAPI master_get_info(IN MASTER_HANDLE device_handle, IN SS_BYTE type, OUT char **info);
389 
396  SS_UINT32 SSAPI master_heap_free(IN void *buf);
397 
414  SS_UINT32 SSAPI master_pin_change(
415  IN MASTER_HANDLE device_handle,
416  IN SS_BYTE pin_index,
417  IN SS_BYTE *old_pin,
418  IN SS_UINT32 old_pin_len,
419  IN SS_BYTE *new_pin,
420  IN SS_UINT32 new_pin_len,
421  IN SS_BYTE *hash
422  );
423 
435  SS_UINT32 SSAPI master_pin_verify(
436  IN MASTER_HANDLE device_handle,
437  IN SS_BYTE pin_index,
438  IN SS_BYTE *pin,
439  IN SS_UINT32 pin_len
440  );
441 
449  SS_UINT32 SSAPI master_pin_is_verified(MASTER_HANDLE device_handle);
450 
457  SS_UINT32 SSAPI master_pin_enable(MASTER_HANDLE device_handle);
458 
465  SS_UINT32 SSAPI master_pin_disable(MASTER_HANDLE device_handle);
466 
473  SS_UINT32 SSAPI master_pin_deauth(MASTER_HANDLE device_handle);
474 
475 
489  SS_UINT32 SSAPI d2c_lic_new(
490  IN MASTER_HANDLE device_handle,
491  OUT D2C_HANDLE* d2c_license,
492  IN ACCOUNT_TYPE account_type,
493  IN SS_BYTE* account_id,
494  IN SS_UINT32 account_size,
495  IN SS_BYTE* cert,
496  IN SS_UINT32 cert_size
497  );
498 
520  SS_UINT32 SSAPI d2c_file_new(
521  IN MASTER_HANDLE device_handle,
522  OUT D2C_HANDLE* d2c_file,
523  IN SIGN_TYPE sign_type,
524  IN SS_BYTE* param,
525  IN SS_UINT32 param_size
526  );
527 
536  SS_UINT32 SSAPI d2c_add_developer_cert(D2C_HANDLE d2c_handle, SS_BYTE* cert, SS_UINT32 cert_len);
537 
564  SS_UINT32 SSAPI gen_dynamic_code(
565  IN MASTER_HANDLE device_handle,
566  IN SIGN_TYPE sign_type,
567  IN SS_BYTE* param,
568  IN SS_UINT32 param_size,
569  IN SS_BYTE* exec_code,
570  IN SS_UINT32 code_size,
571  IN SS_UINT32* bound_info,
572  IN SS_UINT32 bound_size,
573  OUT SS_BYTE* pkg,
574  IN SS_UINT32 max_pkg_len,
575  OUT SS_UINT32* pkg_len
576  );
577 
626  SS_UINT32 SSAPI d2c_add_pkg(
627  IN D2C_HANDLE d2c_file,
628  IN SS_CHAR* param,
629  IN SS_CHAR* opr_desc
630  );
631 
682  SS_UINT32 SSAPI d2c_add_lic(
683  IN D2C_HANDLE d2c_license,
684  IN SS_CHAR* param,
685  IN SS_CHAR* opr_desc,
686  OUT SS_CHAR guid[D2C_GUID_LENGTH]
687  );
688 
706  SS_UINT32 SSAPI d2c_get(
707  IN D2C_HANDLE d2c_handle,
708  OUT SS_CHAR* d2c_buf,
709  IN SS_UINT32 max_buf_len,
710  OUT SS_UINT32* out_len
711  );
712 
719  const SS_CHAR* d2c_get_pkg_desc(
720  IN D2C_HANDLE d2c_handle,
721  IN SS_UINT32 index
722  );
723 
730  SS_UINT32 SSAPI d2c_delete(
731  IN D2C_HANDLE d2c_handle
732  );
733 
747  SS_UINT32 SSAPI d2c_sign(IN MASTER_HANDLE master_handle, D2C_HASH_ALGO hash_algo, IN SS_UINT32 root_index, IN SS_BYTE* data_in, IN SS_UINT32 data_len,
748  OUT SS_BYTE* sign, IN SS_UINT32 max_sign_len, OUT SS_UINT32* sign_len);
749 
761  SS_UINT32 SSAPI d2c_encrypt(IN SS_BYTE* certs, IN SS_UINT32 certs_len, IN const SS_BYTE* plain, IN SS_UINT32 plain_len,
762  OUT SS_BYTE* cipher, IN SS_UINT32 max_cipher_len, OUT SS_UINT32* cipher_len);
763 
771  SS_UINT32 SSAPI get_snippet_seed(IN MASTER_HANDLE master, IN SS_UINT32 license_id, OUT SS_BYTE snippet_seed[SNIPPET_SEED_LENGTH]);
772 
784  SS_UINT32 SSAPI gen_snippet_code(IN MASTER_HANDLE master, IN SS_UINT32 license_id, IN const SS_BYTE* evx_code, IN SS_UINT32 evx_size,
785  OUT SS_BYTE* snippet_code, IN SS_UINT32 snippet_buf_size, OUT SS_UINT32* snippet_size);
786 
797  SS_UINT32 SSAPI gen_snippet_code_with_key(IN const SNIPPET_CODE_CONTEXT* sc_ctx, IN const SS_BYTE* evx, IN SS_UINT32 evx_size,
798  OUT SS_BYTE* snippet_code, IN SS_UINT32 snippet_bufsize, OUT SS_UINT32* snippet_size);
799 
809  SS_UINT32 SSAPI license_encrypt(IN MASTER_HANDLE master, IN SS_UINT32 license_id, IN const SS_BYTE* plain, IN SS_UINT32 len, OUT SS_BYTE* cipher);
810 
811 #ifdef __cplusplus
812 }
813 #endif
814 
819 #endif // _D2C_H