---
title: 使能sealing key
description: "机密虚拟机内提供硬件密钥封印功能（sealing key），每台服务器在出厂前会预置唯一、随机根密钥，即使相同的封印参数封印密钥结果也不同，本章节主要介绍如何使能硬件密钥封印功能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/250rc2/confidt/kunpengtee_16_0030.html
sourcePath: /source/zh/kunpengboostkithistory/250rc2/confidt/kunpengtee_16_0030.html
indexId: d0ce13cd0f92ae8b0b067911b3f15708e297932e62255f04c0bf9d7243cfcbef72
---
# 使能sealing key

机密虚拟机内提供硬件密钥封印功能（sealing key），每台服务器在出厂前会预置唯一、随机根密钥，即使相同的封印参数封印密钥结果也不同，本章节主要介绍如何使能硬件密钥封印功能。

本功能仅在cVM虚拟机内使能，Host侧不开放此功能。


1. 参照部署sealing key组件完成驱动和SDK的安装部署。
2. 在应用中通过如下接口获取sealing key。

```
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);
```


**表1 参数说明**

| 参数名称 | 说明 |
| --- | --- |
| alg | 入参，指定派生key时的算法。 当前版本仅支持SEALING\_HMAC\_SHA256。 |
| user\_param | 入参，缓冲区指针，用于存放用户参数，传入不同值，可派生不同密钥。 支持NULL值，表示用户不传参。 |
| user\_param\_len | 入参，用户参数的长度。 当前版本仅支持64字节长度或0。 |
| sealing\_key | 出参，缓冲区指针，用于存放派生结果sealing key，长度需不小于32字节。 当前版本派生的长度仅支持32。 |
| 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;
}
```


3. 编译DEMO代码，并执行。

```
gcc demo.c -o demo -lsealingkey
./demo
```
