[453] | 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
|
---|