16#ifndef HITLS_APP_OPT_H
17#define HITLS_APP_OPT_H
27#define HILTS_APP_FORMAT_UNDEF 0
28#define HITLS_APP_FORMAT_PEM BSL_FORMAT_PEM
29#define HITLS_APP_FORMAT_ASN1 BSL_FORMAT_ASN1
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 \
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"} \
49#define HITLS_APP_PROV_CASES(optType, provider) \
51 case HITLS_APP_OPT_PROVIDER: \
52 (provider)->providerName = HITLS_APP_OptGetValueStr(); \
54 case HITLS_APP_OPT_PROVIDER_PATH: \
55 (provider)->providerPath = HITLS_APP_OptGetValueStr(); \
57 case HITLS_APP_OPT_PROVIDER_ATTR: \
58 (provider)->providerAttr = HITLS_APP_OptGetValueStr(); \
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,
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,
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,
117int32_t HITLS_APP_OptBegin(int32_t argc,
char **argv,
const HITLS_CmdOption *opts);
127int32_t HITLS_APP_OptNext(
void);
138void HITLS_APP_OptEnd(
void);
158int32_t HITLS_APP_GetRestOptNum(
void);
168char **HITLS_APP_GetRestOpt(
void);
176char *HITLS_APP_OptGetValueStr(
void);
185int32_t HITLS_APP_OptGetInt(
const char *valueS, int32_t *valueI);
194int32_t HITLS_APP_OptGetUint32(
const char *valueS, uint32_t *valueU);
204char *HITLS_APP_GetProgName(
void);
215int32_t HITLS_APP_OptGetLong(
const char *valueS,
long *valueL);
227int32_t HITLS_APP_OptGetFormatType(
const char *valueS, HITLS_ValueType type, BSL_ParseFormat *formatType);
239BSL_UIO* HITLS_APP_UioOpen(
const char* filename,
char mode, int32_t flag);
252int32_t HITLS_APP_OptToBase64(uint8_t *buf, uint32_t inBufLen,
char *outBuf, uint32_t outBufLen);
269int32_t HITLS_APP_BytesToHex(
const uint8_t *bytes, uint32_t bytesLen,
char *hexStr, uint32_t hexStrSize);
282int32_t HITLS_APP_OptWriteUio(
BSL_UIO *uio, uint8_t *buf, uint32_t bufLen, int32_t format);
295int32_t HITLS_APP_OptReadUio(
BSL_UIO *uio, uint8_t **readBuf, uint64_t *readBufLen, uint64_t maxBufLen);
303const char *HITLS_APP_OptGetUnKownOptName();
struct UIO_ControlBlock BSL_UIO
UIO module control structure
定义 bsl_uio.h:37