机密虚机内提供硬件密钥派生功能(sealing key),每台服务器在出厂前会预置唯一、随机根密钥,即使相同的派生参数派生密钥结果也不同,本章节主要介绍如何使能硬件密钥派生功能。
本功能仅在cVM虚拟机内使能,Host侧不开放此功能。
int get_sealing_key(SEALING_KEY_ALG alg, uint8_t* user_param, uint32_t user_param_len, uint8_t* sealing_key, uint32_t key_len);
参数名称 |
说明 |
---|---|
alg |
|
user_param |
|
user_param_len |
|
sealing_key |
|
key_len |
入参,指定sealing_key的长度。 |
参考代码示例如下。
#include <stdint.h> #include <stdio.h> #include "sealing_key.h" int main(int argc, char *argv[]) { uint8_t sealing_key[SEALING_KEY_LEN] = {0}; uint8_t user_param[64] = {0}; if (get_sealing_key(SEALING_HMAC_SHA256, user_param, 64, sealing_key, SEALING_KEY_LEN) != 0) { printf("failed to get sealing key\n"); return -1; } for (int i = 0; i < SEALING_KEY_LEN; i++) { printf("%02x ", sealing_key[i]); } printf("\n"); return 0; }
gcc demo.c -o demo -lsealingkey ./demo