source: azure_iot_hub_f767zi/trunk/azure_iot_sdk/provisioning_client/adapters/hsm_client_data.h@ 457

Last change on this file since 457 was 457, checked in by coas-nagasima, 4 years ago

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 3.6 KB
Line 
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>
9extern "C" {
10#else
11#include <stddef.h>
12#endif /* __cplusplus */
13
14typedef void* HSM_CLIENT_HANDLE;
15
16typedef HSM_CLIENT_HANDLE (*HSM_CLIENT_CREATE)();
17typedef void (*HSM_CLIENT_DESTROY)(HSM_CLIENT_HANDLE handle);
18
19// TPM
20typedef int (*HSM_CLIENT_ACTIVATE_IDENTITY_KEY)(HSM_CLIENT_HANDLE handle, const unsigned char* key, size_t key_len);
21typedef int (*HSM_CLIENT_GET_ENDORSEMENT_KEY)(HSM_CLIENT_HANDLE handle, unsigned char** key, size_t* key_len);
22typedef int (*HSM_CLIENT_GET_STORAGE_ROOT_KEY)(HSM_CLIENT_HANDLE handle, unsigned char** key, size_t* key_len);
23typedef 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
26typedef char* (*HSM_CLIENT_GET_CERTIFICATE)(HSM_CLIENT_HANDLE handle);
27typedef char* (*HSM_CLIENT_GET_ALIAS_KEY)(HSM_CLIENT_HANDLE handle);
28typedef char* (*HSM_CLIENT_GET_COMMON_NAME)(HSM_CLIENT_HANDLE handle);
29
30// Edge
31typedef char* (*HSM_CLIENT_GET_TRUST_BUNDLE)(HSM_CLIENT_HANDLE handle);
32
33// Symmetrical Keys
34typedef char* (*HSM_CLIENT_GET_SYMMETRICAL_KEY)(HSM_CLIENT_HANDLE handle);
35typedef char* (*HSM_CLIENT_GET_REGISTRATION_NAME)(HSM_CLIENT_HANDLE handle);
36typedef int (*HSM_CLIENT_SET_SYMMETRICAL_KEY_INFO)(HSM_CLIENT_HANDLE handle, const char* reg_name, const char* symm_key);
37
38typedef 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
49typedef 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
60typedef 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
69typedef 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
79extern int initialize_hsm_system();
80extern void deinitialize_hsm_system();
81
82extern const HSM_CLIENT_TPM_INTERFACE* hsm_client_tpm_interface();
83extern const HSM_CLIENT_X509_INTERFACE* hsm_client_x509_interface();
84extern const HSM_CLIENT_KEY_INTERFACE* hsm_client_key_interface();
85
86extern int hsm_client_x509_init();
87extern void hsm_client_x509_deinit();
88extern int hsm_client_tpm_init();
89extern void hsm_client_tpm_deinit();
90
91#ifdef HSM_TYPE_HTTP_EDGE
92extern int hsm_client_http_edge_init();
93extern void hsm_client_http_edge_deinit(void);
94extern 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
Note: See TracBrowser for help on using the repository browser.