密钥管理模块
在密态数据库创建CMK的语法中
CREATE CLIENT MASTER KEY client_master_key_name WITH (KEY_STORE = key_store_name, KEY_PATH = "key_path_value", ALGORITHM = algorithm_type);
KEY_STORE用来选择对应的密钥管理工具/服务
为了密钥管理模块的可扩展性,使用了回调函数对不同工具/服务的逻辑进行各自的实现,对外提供创建删除以及加解密CEK的接口。
代码逻辑流程如下:
/* 注册CMK实体管理模块 */
CmkemErrCode reg_all_cmk_entity_manager()
{
#ifdef ENABLE_GS_KTOOL
if (reg_cmke_manager_gs_ktool_main() < 0) {
goto err_with_unlock;
}
#endif
#ifdef ENABLE_HUAWEI_KMS
if (reg_cmke_manager_huwei_kms_main() < 0) {
goto err_with_unlock;
}
#endif
#ifdef ENABLE_LOCAL_KMS
if (reg_cmke_manager_local_kms_main() < 0