API参考
载入中...
搜索中...
未找到
app_opt.h
1/*
2 * This file is part of the openHiTLS project.
3 *
4 * openHiTLS is licensed under the Mulan PSL v2.
5 * You can use this software according to the terms and conditions of the Mulan PSL v2.
6 * You may obtain a copy of Mulan PSL v2 at:
7 *
8 * http://license.coscl.org.cn/MulanPSL2
9 *
10 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13 * See the Mulan PSL v2 for more details.
14 */
15
16#ifndef HITLS_APP_OPT_H
17#define HITLS_APP_OPT_H
18
19#include <stdint.h>
20#include "bsl_uio.h"
21#include "bsl_types.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27#define HILTS_APP_FORMAT_UNDEF 0
28#define HITLS_APP_FORMAT_PEM BSL_FORMAT_PEM // 1
29#define HITLS_APP_FORMAT_ASN1 BSL_FORMAT_ASN1 // 2
30#define HITLS_APP_FORMAT_TEXT 3
31#define HITLS_APP_FORMAT_BASE64 4
32#define HITLS_APP_FORMAT_HEX 5
33#define HITLS_APP_FORMAT_BINARY 6
34#define HITLS_APP_SHAKE128_SIZE 16
35#define HITLS_APP_SHAKE256_SIZE 32
36#define HITLS_APP_PROV_ENUM \
37 HITLS_APP_OPT_PROVIDER, \
38 HITLS_APP_OPT_PROVIDER_PATH, \
39 HITLS_APP_OPT_PROVIDER_ATTR \
40
41#define HITLS_APP_PROV_OPTIONS \
42 {"provider", HITLS_APP_OPT_PROVIDER, HITLS_APP_OPT_VALUETYPE_STRING, \
43 "Specify the cryptographic service provider"}, \
44 {"provider-path", HITLS_APP_OPT_PROVIDER_PATH, HITLS_APP_OPT_VALUETYPE_STRING, \
45 "Set the path to the cryptographic service provider"}, \
46 {"provider-attr", HITLS_APP_OPT_PROVIDER_ATTR, HITLS_APP_OPT_VALUETYPE_STRING, \
47 "Set additional attributes for the cryptographic service provider"} \
48
49#define HITLS_APP_PROV_CASES(optType, provider) \
50 switch (optType) { \
51 case HITLS_APP_OPT_PROVIDER: \
52 (provider)->providerName = HITLS_APP_OptGetValueStr(); \
53 break; \
54 case HITLS_APP_OPT_PROVIDER_PATH: \
55 (provider)->providerPath = HITLS_APP_OptGetValueStr(); \
56 break; \
57 case HITLS_APP_OPT_PROVIDER_ATTR: \
58 (provider)->providerAttr = HITLS_APP_OptGetValueStr(); \
59 break; \
60 default: \
61 break; \
62 }
63
64typedef enum {
65 HITLS_APP_OPT_VALUETYPE_NONE = 0,
66 HITLS_APP_OPT_VALUETYPE_NO_VALUE = 1,
67 HITLS_APP_OPT_VALUETYPE_IN_FILE,
68 HITLS_APP_OPT_VALUETYPE_OUT_FILE,
69 HITLS_APP_OPT_VALUETYPE_STRING,
70 HITLS_APP_OPT_VALUETYPE_PARAMTERS,
71 HITLS_APP_OPT_VALUETYPE_DIR,
72 HITLS_APP_OPT_VALUETYPE_INT,
73 HITLS_APP_OPT_VALUETYPE_UINT,
74 HITLS_APP_OPT_VALUETYPE_POSITIVE_INT,
75 HITLS_APP_OPT_VALUETYPE_LONG,
76 HITLS_APP_OPT_VALUETYPE_ULONG,
77 HITLS_APP_OPT_VALUETYPE_FMT_PEMDER,
78 HITLS_APP_OPT_VALUETYPE_FMT_ANY,
79 HITLS_APP_OPT_VALUETYPE_MAX,
80} HITLS_ValueType;
81
82typedef enum {
83 HITLS_APP_OPT_VALUECLASS_NONE = 0,
84 HITLS_APP_OPT_VALUECLASS_NO_VALUE = 1,
85 HITLS_APP_OPT_VALUECLASS_STR,
86 HITLS_APP_OPT_VALUECLASS_DIR,
87 HITLS_APP_OPT_VALUECLASS_INT,
88 HITLS_APP_OPT_VALUECLASS_LONG,
89 HITLS_APP_OPT_VALUECLASS_FMT,
90 HITLS_APP_OPT_VALUECLASS_MAX,
91} HITLS_ValueClass;
92
93typedef enum {
94 HITLS_APP_OPT_ERR = -1,
95 HITLS_APP_OPT_EOF = 0,
96 HITLS_APP_OPT_PARAM = HITLS_APP_OPT_EOF,
97 HITLS_APP_OPT_HELP = 1,
98} HITLS_OptChoice;
99
100typedef struct {
101 const char *name; // option name
102 const int optType; // option type
103 int valueType; // options with parameters(type)
104 const char *help; // description of this option
106
117int32_t HITLS_APP_OptBegin(int32_t argc, char **argv, const HITLS_CmdOption *opts);
118
127int32_t HITLS_APP_OptNext(void);
128
129
138void HITLS_APP_OptEnd(void);
139
148void HITLS_APP_OptHelpPrint(const HITLS_CmdOption *opts);
149
158int32_t HITLS_APP_GetRestOptNum(void);
159
168char **HITLS_APP_GetRestOpt(void);
169
176char *HITLS_APP_OptGetValueStr(void);
177
185int32_t HITLS_APP_OptGetInt(const char *valueS, int32_t *valueI);
186
194int32_t HITLS_APP_OptGetUint32(const char *valueS, uint32_t *valueU);
195
204char *HITLS_APP_GetProgName(void);
205
215int32_t HITLS_APP_OptGetLong(const char *valueS, long *valueL);
216
227int32_t HITLS_APP_OptGetFormatType(const char *valueS, HITLS_ValueType type, BSL_ParseFormat *formatType);
228
239BSL_UIO* HITLS_APP_UioOpen(const char* filename, char mode, int32_t flag);
240
252int32_t HITLS_APP_OptToBase64(uint8_t *buf, uint32_t inBufLen, char *outBuf, uint32_t outBufLen);
253
269int32_t HITLS_APP_BytesToHex(const uint8_t *bytes, uint32_t bytesLen, char *hexStr, uint32_t hexStrSize);
270
282int32_t HITLS_APP_OptWriteUio(BSL_UIO *uio, uint8_t *buf, uint32_t bufLen, int32_t format);
283
295int32_t HITLS_APP_OptReadUio(BSL_UIO *uio, uint8_t **readBuf, uint64_t *readBufLen, uint64_t maxBufLen);
296
303const char *HITLS_APP_OptGetUnKownOptName();
304#ifdef __cplusplus
305}
306#endif
307#endif
struct UIO_ControlBlock BSL_UIO
UIO module control structure
定义 bsl_uio.h:37
定义 app_opt.h:100