1 | // Copyright (c) Microsoft. All rights reserved.
|
---|
2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
---|
3 |
|
---|
4 | #ifndef HSM_CLIENT_DATA_H
|
---|
5 | #define HSM_CLIENT_DATA_H
|
---|
6 |
|
---|
7 | #ifdef __cplusplus
|
---|
8 | #include <cstddef>
|
---|
9 | extern "C" {
|
---|
10 | #else
|
---|
11 | #include <stddef.h>
|
---|
12 | #endif /* __cplusplus */
|
---|
13 |
|
---|
14 | typedef void* HSM_CLIENT_HANDLE;
|
---|
15 |
|
---|
16 | typedef HSM_CLIENT_HANDLE (*HSM_CLIENT_CREATE)();
|
---|
17 | typedef void (*HSM_CLIENT_DESTROY)(HSM_CLIENT_HANDLE handle);
|
---|
18 |
|
---|
19 | // TPM
|
---|
20 | typedef int (*HSM_CLIENT_ACTIVATE_IDENTITY_KEY)(HSM_CLIENT_HANDLE handle, const unsigned char* key, size_t key_len);
|
---|
21 | typedef int (*HSM_CLIENT_GET_ENDORSEMENT_KEY)(HSM_CLIENT_HANDLE handle, unsigned char** key, size_t* key_len);
|
---|
22 | typedef int (*HSM_CLIENT_GET_STORAGE_ROOT_KEY)(HSM_CLIENT_HANDLE handle, unsigned char** key, size_t* key_len);
|
---|
23 | typedef int (*HSM_CLIENT_SIGN_WITH_IDENTITY)(HSM_CLIENT_HANDLE handle, const unsigned char* data, size_t data_len, unsigned char** key, size_t* key_len);
|
---|
24 |
|
---|
25 | // x509
|
---|
26 | typedef char* (*HSM_CLIENT_GET_CERTIFICATE)(HSM_CLIENT_HANDLE handle);
|
---|
27 | typedef char* (*HSM_CLIENT_GET_ALIAS_KEY)(HSM_CLIENT_HANDLE handle);
|
---|
28 | typedef char* (*HSM_CLIENT_GET_COMMON_NAME)(HSM_CLIENT_HANDLE handle);
|
---|
29 |
|
---|
30 | // Edge
|
---|
31 | typedef char* (*HSM_CLIENT_GET_TRUST_BUNDLE)(HSM_CLIENT_HANDLE handle);
|
---|
32 |
|
---|
33 | // Symmetrical Keys
|
---|
34 | typedef char* (*HSM_CLIENT_GET_SYMMETRICAL_KEY)(HSM_CLIENT_HANDLE handle);
|
---|
35 | typedef char* (*HSM_CLIENT_GET_REGISTRATION_NAME)(HSM_CLIENT_HANDLE handle);
|
---|
36 | typedef int (*HSM_CLIENT_SET_SYMMETRICAL_KEY_INFO)(HSM_CLIENT_HANDLE handle, const char* reg_name, const char* symm_key);
|
---|
37 |
|
---|
38 | typedef struct HSM_CLIENT_TPM_INTERFACE_TAG
|
---|
39 | {
|
---|
40 | HSM_CLIENT_CREATE hsm_client_tpm_create;
|
---|
41 | HSM_CLIENT_DESTROY hsm_client_tpm_destroy;
|
---|
42 |
|
---|
43 | HSM_CLIENT_ACTIVATE_IDENTITY_KEY hsm_client_activate_identity_key;
|
---|
44 | HSM_CLIENT_GET_ENDORSEMENT_KEY hsm_client_get_ek;
|
---|
45 | HSM_CLIENT_GET_STORAGE_ROOT_KEY hsm_client_get_srk;
|
---|
46 | HSM_CLIENT_SIGN_WITH_IDENTITY hsm_client_sign_with_identity;
|
---|
47 | } HSM_CLIENT_TPM_INTERFACE;
|
---|
48 |
|
---|
49 | typedef struct HSM_CLIENT_X509_INTERFACE_TAG
|
---|
50 | {
|
---|
51 | HSM_CLIENT_CREATE hsm_client_x509_create;
|
---|
52 | HSM_CLIENT_DESTROY hsm_client_x509_destroy;
|
---|
53 |
|
---|
54 | HSM_CLIENT_GET_CERTIFICATE hsm_client_get_cert;
|
---|
55 | HSM_CLIENT_GET_ALIAS_KEY hsm_client_get_key;
|
---|
56 | HSM_CLIENT_GET_COMMON_NAME hsm_client_get_common_name;
|
---|
57 | } HSM_CLIENT_X509_INTERFACE;
|
---|
58 |
|
---|
59 | #ifdef HSM_TYPE_HTTP_EDGE
|
---|
60 | typedef struct HSM_CLIENT_HTTP_EDGE_INTERFACE_TAG
|
---|
61 | {
|
---|
62 | HSM_CLIENT_CREATE hsm_client_http_edge_create;
|
---|
63 | HSM_CLIENT_DESTROY hsm_client_http_edge_destroy;
|
---|
64 | HSM_CLIENT_SIGN_WITH_IDENTITY hsm_client_sign_with_identity;
|
---|
65 | HSM_CLIENT_GET_TRUST_BUNDLE hsm_client_get_trust_bundle;
|
---|
66 | } HSM_CLIENT_HTTP_EDGE_INTERFACE;
|
---|
67 | #endif
|
---|
68 |
|
---|
69 | typedef struct HSM_CLIENT_KEY_INTERFACE_TAG
|
---|
70 | {
|
---|
71 | HSM_CLIENT_CREATE hsm_client_key_create;
|
---|
72 | HSM_CLIENT_DESTROY hsm_client_key_destroy;
|
---|
73 |
|
---|
74 | HSM_CLIENT_GET_SYMMETRICAL_KEY hsm_client_get_symm_key;
|
---|
75 | HSM_CLIENT_GET_REGISTRATION_NAME hsm_client_get_registration_name;
|
---|
76 | HSM_CLIENT_SET_SYMMETRICAL_KEY_INFO hsm_client_set_symm_key_info;
|
---|
77 | } HSM_CLIENT_KEY_INTERFACE;
|
---|
78 |
|
---|
79 | extern int initialize_hsm_system();
|
---|
80 | extern void deinitialize_hsm_system();
|
---|
81 |
|
---|
82 | extern const HSM_CLIENT_TPM_INTERFACE* hsm_client_tpm_interface();
|
---|
83 | extern const HSM_CLIENT_X509_INTERFACE* hsm_client_x509_interface();
|
---|
84 | extern const HSM_CLIENT_KEY_INTERFACE* hsm_client_key_interface();
|
---|
85 |
|
---|
86 | extern int hsm_client_x509_init();
|
---|
87 | extern void hsm_client_x509_deinit();
|
---|
88 | extern int hsm_client_tpm_init();
|
---|
89 | extern void hsm_client_tpm_deinit();
|
---|
90 |
|
---|
91 | #ifdef HSM_TYPE_HTTP_EDGE
|
---|
92 | extern int hsm_client_http_edge_init();
|
---|
93 | extern void hsm_client_http_edge_deinit(void);
|
---|
94 | extern const HSM_CLIENT_HTTP_EDGE_INTERFACE* hsm_client_http_edge_interface();
|
---|
95 | #endif
|
---|
96 |
|
---|
97 | #ifdef __cplusplus
|
---|
98 | }
|
---|
99 | #endif /* __cplusplus */
|
---|
100 |
|
---|
101 | #endif // HSM_CLIENT_DATA_H
|
---|