Skip to content

Commit 76d2441

Browse files
YadongQilijinxia
authored andcommitted
DM: Generate vRPMB key when creating UOS
Generate virtual RPMB key and pass it to HV when creating UOS. Signed-off-by: Qi Yadong <yadong.qi@intel.com> Acked-by: Zhu Bing <bing.zhu@intel.com>
1 parent b6bec54 commit 76d2441

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed

devicemodel/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ SRCS += core/vmmapi.c
103103
SRCS += core/mptbl.c
104104
SRCS += core/main.c
105105
SRCS += core/hugetlb.c
106+
SRCS += core/vrpmb.c
106107

107108
# arch
108109
SRCS += arch/x86/pm.c

devicemodel/core/vrpmb.c

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* Copyright (c) 2018 Intel Corporation
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
*
14+
* THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
15+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17+
* ARE DISCLAIMED. IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
18+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24+
* SUCH DAMAGE.
25+
*
26+
*/
27+
28+
#include <stdlib.h>
29+
#include <stdbool.h>
30+
#include <stdio.h>
31+
#include <string.h>
32+
#include <assert.h>
33+
#include <unistd.h>
34+
#include <openssl/rand.h>
35+
36+
#include "types.h"
37+
#include "vrpmb.h"
38+
#include "acrn_common.h"
39+
40+
struct key_material {
41+
uint8_t key[RPMB_KEY_LEN];
42+
bool initialized;
43+
};
44+
45+
static struct key_material vrkey = { .initialized = false };
46+
47+
int get_vrpmb_key(uint8_t *out, size_t size)
48+
{
49+
if (!out) {
50+
fprintf(stderr, "%s: Invalid output pointer\n", __func__);
51+
return 0;
52+
}
53+
54+
assert(size == RPMB_KEY_LEN);
55+
56+
if ( vrkey.initialized == false ) {
57+
/* FIXME: Currently the transport path is not ready, so
58+
* use fixed key(all 0) for temporary solution.
59+
*/
60+
memset(vrkey.key, 0, RPMB_KEY_LEN);
61+
}
62+
63+
memcpy(out, vrkey.key, size);
64+
return 1;
65+
}

devicemodel/include/vrpmb.h

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright (c) 2018 Intel Corporation
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
*
14+
* THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
15+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17+
* ARE DISCLAIMED. IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
18+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24+
* SUCH DAMAGE.
25+
*
26+
*/
27+
28+
#ifndef _VRPMB_
29+
#define _VRPMB_
30+
31+
#define RPMB_KEY_LEN 64
32+
33+
int get_vrpmb_key(uint8_t *out, size_t size);
34+
35+
#endif /* _VRPMB_ */

0 commit comments

Comments
 (0)