Virbox SDK  2.1
结构体 | 宏定义 | 类型定义 | 枚举 | 函数
E:/new_work/branches/ss_v2.0/include_out/d2c.h 文件参考

SLM许可远程升级头文件. 更多...

#include "ss_define.h"

浏览源代码.

结构体

struct  _SNIPPET_CODE_CONTEXT
 

宏定义

#define MAX_ACCOUNT_NAME_LENGTH   64
 
#define D2C_GUID_LENGTH   37
 
#define FIXTIME_RAND_LENGTH   8
 
#define SNIPPET_SEED_LENGTH   32
 
#define ACCESS_READ   0x01
 
#define ACCESS_WRITE_DELETE   0x02
 
#define ACCESS_USE   0x04
 
#define ACCESS_WRITE_DELETE_RU   0x08
 
#define ACCESS_ENTRY_READ   0x10
 
#define ACCESS_ENTRY_WRITE_DELETE   0x20
 
#define ACCESS_ENTRY_USE   0x40
 
#define ACCESS_ENTRY_WRITE_DELETE_RU   0x80
 
#define PKI_CA_TYPE_SYSTEM   0
 
#define PKI_CA_TYPE_DEVELOPER   1
 
#define PKI_CA_TYPE_DEVICE   2
 
#define PKI_CA_TYPE_ACCOUNT   3
 
#define PKI_CA_TYPE_ROOT   0x80
 
#define CTRL_PIN_MIN_SIZE   8
 
#define CTRL_PIN_MAX_SIZE   255
 

类型定义

typedef struct
_D2C_HANDLE_INTERNAL * 
D2C_HANDLE
 
typedef struct
_MASTER_HANDLE_INTERNAL * 
MASTER_HANDLE
 
typedef enum _SIGN_TYPE SIGN_TYPE
 
typedef enum _D2C_HASH_ALGO D2C_HASH_ALGO
 
typedef enum _ACCOUNT_TYPE ACCOUNT_TYPE
 
typedef struct
_SNIPPET_CODE_CONTEXT 
SNIPPET_CODE_CONTEXT
 

枚举

enum  _SIGN_TYPE { SIGN_TYPE_CERT = 1, SIGN_TYPE_SEED = 2 }
 
enum  _D2C_HASH_ALGO { D2C_HASH_ALGO_SHA1 = 1, D2C_HASH_ALGO_SHA256 = 2 }
 
enum  _ACCOUNT_TYPE { ACCOUNT_TYPE_NONE = 0, ACCOUNT_TYPE_USB = 1, ACCOUNT_TYPE_EMAIL = 2, ACCOUNT_TYPE_PHONE = 3 }
 

函数

SS_UINT32 SSAPI master_open (OUT MASTER_HANDLE *device_handle)
 打开签发设备(开发锁) 更多...
 
SS_UINT32 SSAPI master_close (IN MASTER_HANDLE device_handle)
 关闭签发设备(开发锁) 更多...
 
SS_UINT32 SSAPI master_get_developer_id (IN MASTER_HANDLE device_handle, OUT SS_BYTE *developer_id)
 获取开发锁开发商ID 更多...
 
SS_UINT32 SSAPI master_get_root_count (IN MASTER_HANDLE device_handle, OUT SS_UINT32 *count)
 获取开发商锁内所有的根证书数量 更多...
 
SS_UINT32 SSAPI master_get_ca_cert (IN MASTER_HANDLE device_handle, IN SS_BYTE ca_type, OUT SS_BYTE *ca_cert, IN SS_UINT32 cert_bufsize, OUT SS_UINT32 *cert_size)
 通过证书类型,获取开发锁 CA 证书 更多...
 
SS_UINT32 SSAPI master_get_ca_cert_ex (IN MASTER_HANDLE device_handle, IN SS_BYTE ca_type, IN SS_UINT32 root_index, OUT SS_BYTE *ca_cert, IN SS_UINT32 cert_bufsize, OUT SS_UINT32 *cert_size)
 通过证书类型,获取开发锁 CA 证书 更多...
 
SS_UINT32 SSAPI master_get_root_ca (IN MASTER_HANDLE device_handle, OUT SS_BYTE *root_ca, IN SS_UINT32 root_bufsize, OUT SS_UINT32 *root_size)
 获取开发锁 Virbox Root CA 证书 更多...
 
SS_UINT32 SSAPI master_get_device_ca (IN MASTER_HANDLE device_handle, OUT SS_BYTE *device_ca, IN SS_UINT32 device_bufsize, OUT SS_UINT32 *device_size)
 获取开发锁设备 CA 证书 更多...
 
SS_UINT32 SSAPI master_get_developer_ca (IN MASTER_HANDLE device_handle, OUT SS_BYTE *developer_ca, IN SS_UINT32 ca_bufsize, OUT SS_UINT32 *ca_size)
 获取开发锁开发者 CA 证书 更多...
 
SS_UINT32 SSAPI master_get_developer_cert (IN MASTER_HANDLE device_handle, OUT SS_BYTE *developer_cert, IN SS_UINT32 cert_bufsize, OUT SS_UINT32 *cert_size)
 获取开发锁开发者证书 更多...
 
SS_UINT32 SSAPI master_get_developer_cert_ex (IN MASTER_HANDLE device_handle, IN SS_UINT32 root_index, OUT SS_BYTE *developer_cert, IN SS_UINT32 cert_bufsize, OUT SS_UINT32 *cert_size)
 根据根证书索引,获取开发锁开发者证书(扩展接口) 更多...
 
SS_UINT32 SSAPI master_verify_ca (IN MASTER_HANDLE device_handle, IN SS_BOOL store, IN SS_BYTE ca_type, IN SS_BYTE *ca_cert, IN SS_UINT32 ca_len)
 验证开发锁 CA 证书 更多...
 
SS_UINT32 SSAPI master_verify_ca_ex (IN MASTER_HANDLE device_handle, IN SS_BOOL store, IN SS_BYTE ca_type, IN SS_UINT32 root_index, IN SS_BYTE *ca_cert, IN SS_UINT32 ca_len)
 验证开发锁CA证书(扩展接口) 更多...
 
SS_UINT32 SSAPI master_get_seedkey (IN MASTER_HANDLE device_handle, OUT SS_BYTE *key, IN SS_UINT32 max_key_len, OUT SS_UINT32 *key_len)
 获取签发设备的种子码密钥(种子码公钥) 更多...
 
SS_UINT32 SSAPI master_get_info (IN MASTER_HANDLE device_handle, IN SS_BYTE type, OUT char **info)
 获取开发锁设备信息 更多...
 
SS_UINT32 SSAPI master_heap_free (IN void *buf)
 释放内存 更多...
 
SS_UINT32 SSAPI master_pin_change (IN MASTER_HANDLE device_handle, IN SS_BYTE pin_index, IN SS_BYTE *old_pin, IN SS_UINT32 old_pin_len, IN SS_BYTE *new_pin, IN SS_UINT32 new_pin_len, IN SS_BYTE *hash)
 修改开发商开发锁 PIN 码 更多...
 
SS_UINT32 SSAPI master_pin_verify (IN MASTER_HANDLE device_handle, IN SS_BYTE pin_index, IN SS_BYTE *pin, IN SS_UINT32 pin_len)
 验证开发锁 PIN 码 更多...
 
SS_UINT32 SSAPI master_pin_is_verified (MASTER_HANDLE device_handle)
 确认 PIN 码是否验证通过 更多...
 
SS_UINT32 SSAPI master_pin_enable (MASTER_HANDLE device_handle)
 启用开发锁 PIN 码 更多...
 
SS_UINT32 SSAPI master_pin_disable (MASTER_HANDLE device_handle)
 禁用开发锁 PIN 码 更多...
 
SS_UINT32 SSAPI master_pin_deauth (MASTER_HANDLE device_handle)
 清除 PIN 权限 更多...
 
SS_UINT32 SSAPI d2c_lic_new (IN MASTER_HANDLE device_handle, OUT D2C_HANDLE *d2c_license, IN ACCOUNT_TYPE account_type, IN SS_BYTE *account_id, IN SS_UINT32 account_size, IN SS_BYTE *cert, IN SS_UINT32 cert_size)
 创建 D2C 句柄,用于签发许可 更多...
 
SS_UINT32 SSAPI d2c_file_new (IN MASTER_HANDLE device_handle, OUT D2C_HANDLE *d2c_file, IN SIGN_TYPE sign_type, IN SS_BYTE *param, IN SS_UINT32 param_size)
 创建D2C句柄,用于签发非许可类型升级包,例如签发文件 更多...
 
SS_UINT32 SSAPI d2c_add_developer_cert (D2C_HANDLE d2c_handle, SS_BYTE *cert, SS_UINT32 cert_len)
 增加开发者证书链(不需要再调用了,保留仅为兼容性) 更多...
 
SS_UINT32 SSAPI gen_dynamic_code (IN MASTER_HANDLE device_handle, IN SIGN_TYPE sign_type, IN SS_BYTE *param, IN SS_UINT32 param_size, IN SS_BYTE *exec_code, IN SS_UINT32 code_size, IN SS_UINT32 *bound_info, IN SS_UINT32 bound_size, OUT SS_BYTE *pkg, IN SS_UINT32 max_pkg_len, OUT SS_UINT32 *pkg_len)
 签发动态代码 更多...
 
SS_UINT32 SSAPI d2c_add_pkg (IN D2C_HANDLE d2c_file, IN SS_CHAR *param, IN SS_CHAR *opr_desc)
 根据描述,生成升级包,并添加升级包到 D2C,针对非许可项内容的升级 更多...
 
SS_UINT32 SSAPI d2c_add_lic (IN D2C_HANDLE d2c_license, IN SS_CHAR *param, IN SS_CHAR *opr_desc, OUT SS_CHAR guid[D2C_GUID_LENGTH])
 根据描述,生成升级包,并添加升级包到D2C,针对许可项内容的升级 更多...
 
SS_UINT32 SSAPI d2c_get (IN D2C_HANDLE d2c_handle, OUT SS_CHAR *d2c_buf, IN SS_UINT32 max_buf_len, OUT SS_UINT32 *out_len)
 从 D2C 句柄中获取 D2C 流,可保存为 .d2c 文件用于升级 更多...
 
const SS_CHAR * d2c_get_pkg_desc (IN D2C_HANDLE d2c_handle, IN SS_UINT32 index)
 获得开发者自定义的 D2C 操作描述 更多...
 
SS_UINT32 SSAPI d2c_delete (IN D2C_HANDLE d2c_handle)
 删除 D2C 句柄 更多...
 
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, OUT SS_BYTE *sign, IN SS_UINT32 max_sign_len, OUT SS_UINT32 *sign_len)
 D2C 签名 (开发者不必关心) 更多...
 
SS_UINT32 SSAPI d2c_encrypt (IN SS_BYTE *certs, IN SS_UINT32 certs_len, IN const SS_BYTE *plain, IN SS_UINT32 plain_len, OUT SS_BYTE *cipher, IN SS_UINT32 max_cipher_len, OUT SS_UINT32 *cipher_len)
 D2C加密 (开发者不必关心) 更多...
 
SS_UINT32 SSAPI get_snippet_seed (IN MASTER_HANDLE master, IN SS_UINT32 license_id, OUT SS_BYTE snippet_seed[SNIPPET_SEED_LENGTH])
 获取碎片代码种子(开发者不必关心) 更多...
 
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, OUT SS_BYTE *snippet_code, IN SS_UINT32 snippet_buf_size, OUT SS_UINT32 *snippet_size)
 生成碎片代码(开发者不必关心) 更多...
 
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, OUT SS_BYTE *snippet_code, IN SS_UINT32 snippet_bufsize, OUT SS_UINT32 *snippet_size)
 获取生成碎片代码请求(开发者不必关心) 更多...
 
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)
 使用开发锁进行许可加密(开发者不必关心) 更多...
 

详细描述

SLM许可远程升级头文件.

可以对许可增、更新、删除、锁定、解除锁定等操作;增、删、改写文件操作;修正锁内虚拟时钟;签发动态代码包。

使用流程:

前提,调用master_open打开开发锁,用于签发d2c包

- 签发许可
第一步,调用 d2c_lic_new 创建d2c句柄
第二步,调用 d2c_add_lic 添加许可条款
第三步,调用 d2c_add_developer_cert 向D2C中添加设备证书链
第四步,调用 d2c_get 获取最终的d2c信息,可将结果直接通过ss_lm_update提供的接口升级到锁内,
     或者保存为*.d2c的文件异步方式升级到锁内。
- 签发文件
第一步,调用 d2c_file_seed_new 创建d2c句柄
第二步,调用 d2c_add_pkg 添加文件内容
第三步,调用 d2c_add_developer_cert 向D2C中添加设备证书链
第四步,调用 d2c_get 获取最终的d2c信息,可将结果直接通过ss_lm_update提供的接口升级到锁内,
    或者保存为*.d2c的文件异步方式升级到锁内。
最后,调用 d2c_delete 释放句柄,调用master_close关闭开发锁

D2C操作较为复杂,详细使用方法可通过Virbox SDK提供的Samples进行学习
版本
2.2.0
日期
2014-2018

在文件 d2c.h 中定义.

宏定义说明

#define ACCESS_ENTRY_READ   0x10

文件Entry可读

在文件 d2c.h56 行定义.

#define ACCESS_ENTRY_USE   0x40

文件Entry可使用(针对密钥文件)

在文件 d2c.h60 行定义.

#define ACCESS_ENTRY_WRITE_DELETE   0x20

文件Entry可修改删除

在文件 d2c.h58 行定义.

#define ACCESS_ENTRY_WRITE_DELETE_RU   0x80

文件可远程升级

在文件 d2c.h62 行定义.

#define ACCESS_READ   0x01

锁内文件权限定义:文件开发者可读

在文件 d2c.h47 行定义.

#define ACCESS_USE   0x04

锁内文件权限定义:文件开发者可使用(针对密钥文件)

在文件 d2c.h51 行定义.

#define ACCESS_WRITE_DELETE   0x02

锁内文件权限定义:文件开发者可修改删除

在文件 d2c.h49 行定义.

#define ACCESS_WRITE_DELETE_RU   0x08

锁内文件权限定义:文件开发者可远程升级

在文件 d2c.h53 行定义.

#define CTRL_PIN_MAX_SIZE   255

开发锁PIN码最大长度

在文件 d2c.h78 行定义.

#define CTRL_PIN_MIN_SIZE   8

开发锁PIN码最小长度

在文件 d2c.h76 行定义.

#define D2C_GUID_LENGTH   37

账户GUID的长度

在文件 d2c.h40 行定义.

#define FIXTIME_RAND_LENGTH   8

修复时钟的随机数长度

在文件 d2c.h42 行定义.

#define MAX_ACCOUNT_NAME_LENGTH   64

签发给账户许可的账户名最大长度

在文件 d2c.h38 行定义.

#define PKI_CA_TYPE_ACCOUNT   3

账户证书

在文件 d2c.h71 行定义.

#define PKI_CA_TYPE_DEVELOPER   1

开发者CA

在文件 d2c.h67 行定义.

#define PKI_CA_TYPE_DEVICE   2

硬件设备CA

在文件 d2c.h69 行定义.

#define PKI_CA_TYPE_ROOT   0x80

根证书

在文件 d2c.h73 行定义.

#define PKI_CA_TYPE_SYSTEM   0

系统级别CA

在文件 d2c.h65 行定义.

#define SNIPPET_SEED_LENGTH   32

碎片代码种子大小

在文件 d2c.h44 行定义.

类型定义说明

账户类型,指定给特定的签发对象

typedef struct _D2C_HANDLE_INTERNAL* D2C_HANDLE

D2C Developer2Customer的句柄

在文件 d2c.h81 行定义.

D2C包的签名哈希类型

typedef struct _MASTER_HANDLE_INTERNAL* MASTER_HANDLE

控制锁的句柄

在文件 d2c.h84 行定义.

typedef enum _SIGN_TYPE SIGN_TYPE

D2C包的签发类型(SIGN_TYPE)

碎片代码种子结构(开发者不必关心)

枚举类型说明

账户类型,指定给特定的签发对象

枚举值
ACCOUNT_TYPE_NONE 

签给非账户(硬件锁锁设备)

ACCOUNT_TYPE_USB 

签给在线账户(硬件锁锁号作为匿名账户)

ACCOUNT_TYPE_EMAIL 

签给邮箱账户(暂不支持)

ACCOUNT_TYPE_PHONE 

签给手机账户(暂不支持)

在文件 d2c.h107 行定义.

D2C包的签名哈希类型

枚举值
D2C_HASH_ALGO_SHA1 

哈希算法为:SHA-1

D2C_HASH_ALGO_SHA256 

哈希算法为:SHA-256

在文件 d2c.h97 行定义.

enum _SIGN_TYPE

D2C包的签发类型(SIGN_TYPE)

枚举值
SIGN_TYPE_CERT 

D2C由证书签发,签发给指定用户锁

SIGN_TYPE_SEED 

D2C由种子码签发(暂不支持签发许可),签发给所有用户锁

在文件 d2c.h87 行定义.