SM2密钥分享

typedef struct {
	SM2_KEY key;
	size_t index;
	size_t total_cnt;
} SM2_KEY_SHARE;

SM2密钥份额结构SM2_KEY_SHARE包含:分享的密钥份额key、份额编号index和总份额数量total_cnt

int sm2_key_split(const SM2_KEY *key, size_t recover_cnt, size_t total_cnt, SM2_KEY_SHARE *shares);

以待分享密钥key、恢复所需的份额阈值数量recover_cnt和总份额数量total_cnt作为输入,计算密钥分享值并写入到份额结构数组shares结构中。函数执行成功返回1,失败返回-1。

int sm2_key_recover(SM2_KEY *key, const SM2_KEY_SHARE *shares, size_t shares_cnt);

以份额结构数组shares和数量shares_cnt作为输入,计算密钥分享值并写入到SM2密钥结构key结构中。函数执行成功返回1,失败返回-1。

int sm2_key_share_encrypt_to_file(const SM2_KEY_SHARE *share, const char *pass, const char *path_prefix);
int sm2_key_share_decrypt_from_file(SM2_KEY_SHARE *share, const char *pass, const char *file);

实现SM2密钥分享信息在份额结构和文件格式间的相互转换。函数执行成功返回1,失败返回-1。