scep_client.h
Go to the documentation of this file.
1 /**
2  * @file scep_client.h
3  * @brief SCEP client
4  *
5  * @section License
6  *
7  * SPDX-License-Identifier: GPL-2.0-or-later
8  *
9  * Copyright (C) 2010-2025 Oryx Embedded SARL. All rights reserved.
10  *
11  * This file is part of CycloneCRYPTO Open.
12  *
13  * This program is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License
15  * as published by the Free Software Foundation; either version 2
16  * of the License, or (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software Foundation,
25  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
26  *
27  * @author Oryx Embedded SARL (www.oryx-embedded.com)
28  * @version 2.5.2
29  **/
30 
31 #ifndef _SCEP_CLIENT_H
32 #define _SCEP_CLIENT_H
33 
34 //Dependencies
35 #include "core/net.h"
36 #include "http/http_client.h"
37 #include "scep/scep_common.h"
38 
39 //SCEP client support
40 #ifndef SCEP_CLIENT_SUPPORT
41  #define SCEP_CLIENT_SUPPORT DISABLED
42 #elif (SCEP_CLIENT_SUPPORT != ENABLED && SCEP_CLIENT_SUPPORT != DISABLED)
43  #error SCEP_CLIENT_SUPPORT parameter is not valid
44 #endif
45 
46 //SCEP over HTTPS
47 #ifndef SCEP_CLIENT_TLS_SUPPORT
48  #define SCEP_CLIENT_TLS_SUPPORT DISABLED
49 #elif (SCEP_CLIENT_TLS_SUPPORT != ENABLED && SCEP_CLIENT_TLS_SUPPORT != DISABLED)
50  #error SCEP_CLIENT_TLS_SUPPORT parameter is not valid
51 #endif
52 
53 //Triple DES encryption support (weak)
54 #ifndef SCEP_CLIENT_3DES_SUPPORT
55  #define SCEP_CLIENT_3DES_SUPPORT DISABLED
56 #elif (SCEP_CLIENT_3DES_SUPPORT != ENABLED && SCEP_CLIENT_3DES_SUPPORT != DISABLED)
57  #error SCEP_CLIENT_3DES_SUPPORT parameter is not valid
58 #endif
59 
60 //AES encryption support
61 #ifndef SCEP_CLIENT_AES_SUPPORT
62  #define SCEP_CLIENT_AES_SUPPORT ENABLED
63 #elif (SCEP_CLIENT_AES_SUPPORT != ENABLED && SCEP_CLIENT_AES_SUPPORT != DISABLED)
64  #error SCEP_CLIENT_AES_SUPPORT parameter is not valid
65 #endif
66 
67 //SHA-1 hash support (weak)
68 #ifndef SCEP_CLIENT_SHA1_SUPPORT
69  #define SCEP_CLIENT_SHA1_SUPPORT DISABLED
70 #elif (SCEP_CLIENT_SHA1_SUPPORT != ENABLED && SCEP_CLIENT_SHA1_SUPPORT != DISABLED)
71  #error SCEP_CLIENT_SHA1_SUPPORT parameter is not valid
72 #endif
73 
74 //SHA-256 hash support
75 #ifndef SCEP_CLIENT_SHA256_SUPPORT
76  #define SCEP_CLIENT_SHA256_SUPPORT ENABLED
77 #elif (SCEP_CLIENT_SHA256_SUPPORT != ENABLED && SCEP_CLIENT_SHA256_SUPPORT != DISABLED)
78  #error SCEP_CLIENT_SHA256_SUPPORT parameter is not valid
79 #endif
80 
81 //SHA-512 hash support
82 #ifndef SCEP_CLIENT_SHA512_SUPPORT
83  #define SCEP_CLIENT_SHA512_SUPPORT DISABLED
84 #elif (SCEP_CLIENT_SHA512_SUPPORT != ENABLED && SCEP_CLIENT_SHA512_SUPPORT != DISABLED)
85  #error SCEP_CLIENT_SHA512_SUPPORT parameter is not valid
86 #endif
87 
88 //RSA key support
89 #ifndef SCEP_CLIENT_RSA_SUPPORT
90  #define SCEP_CLIENT_RSA_SUPPORT ENABLED
91 #elif (SCEP_CLIENT_RSA_SUPPORT != ENABLED && SCEP_CLIENT_RSA_SUPPORT != DISABLED)
92  #error SCEP_CLIENT_RSA_SUPPORT parameter is not valid
93 #endif
94 
95 //Default timeout
96 #ifndef SCEP_CLIENT_DEFAULT_TIMEOUT
97  #define SCEP_CLIENT_DEFAULT_TIMEOUT 20000
98 #elif (SCEP_CLIENT_DEFAULT_TIMEOUT < 1000)
99  #error SCEP_CLIENT_DEFAULT_TIMEOUT parameter is not valid
100 #endif
101 
102 //Size of the buffer for input/output operations
103 #ifndef SCEP_CLIENT_BUFFER_SIZE
104  #define SCEP_CLIENT_BUFFER_SIZE 8192
105 #elif (SCEP_CLIENT_BUFFER_SIZE < 512)
106  #error SCEP_CLIENT_BUFFER_SIZE parameter is not valid
107 #endif
108 
109 //Maximum length of host names
110 #ifndef SCEP_CLIENT_MAX_HOST_LEN
111  #define SCEP_CLIENT_MAX_HOST_LEN 64
112 #elif (SCEP_CLIENT_MAX_HOST_LEN < 1)
113  #error SCEP_CLIENT_MAX_HOST_LEN parameter is not valid
114 #endif
115 
116 //Maximum length of URIs
117 #ifndef SCEP_CLIENT_MAX_URI_LEN
118  #define SCEP_CLIENT_MAX_URI_LEN 32
119 #elif (SCEP_CLIENT_MAX_URI_LEN < 1)
120  #error SCEP_CLIENT_MAX_URI_LEN parameter is not valid
121 #endif
122 
123 //Maximum length of media types
124 #ifndef SCEP_CLIENT_MAX_CONTENT_TYPE_LEN
125  #define SCEP_CLIENT_MAX_CONTENT_TYPE_LEN 40
126 #elif (SCEP_CLIENT_MAX_CONTENT_TYPE_LEN < 1)
127  #error SCEP_CLIENT_MAX_CONTENT_TYPE_LEN parameter is not valid
128 #endif
129 
130 //Maximum length of CSR
131 #ifndef SCEP_CLIENT_MAX_CSR_LEN
132  #define SCEP_CLIENT_MAX_CSR_LEN 1024
133 #elif (SCEP_CLIENT_MAX_CSR_LEN < 1)
134  #error SCEP_CLIENT_MAX_CSR_LEN parameter is not valid
135 #endif
136 
137 //Maximum length of certificate
138 #ifndef SCEP_CLIENT_MAX_CERT_LEN
139  #define SCEP_CLIENT_MAX_CERT_LEN 2048
140 #elif (SCEP_CLIENT_MAX_CERT_LEN < 1)
141  #error SCEP_CLIENT_MAX_CERT_LEN parameter is not valid
142 #endif
143 
144 //Maximum length of CA certificate chain
145 #ifndef SCEP_CLIENT_MAX_CA_CERT_LEN
146  #define SCEP_CLIENT_MAX_CA_CERT_LEN 4096
147 #elif (SCEP_CLIENT_MAX_CA_CERT_LEN < 1)
148  #error SCEP_CLIENT_MAX_CA_CERT_LEN parameter is not valid
149 #endif
150 
151 //Transaction identifier size
152 #ifndef SCEP_CLIENT_TRANSACTION_ID_SIZE
153  #define SCEP_CLIENT_TRANSACTION_ID_SIZE 16
154 #elif (SCEP_CLIENT_TRANSACTION_ID_SIZE < 1 || SCEP_CLIENT_TRANSACTION_ID_SIZE > 32)
155  #error SCEP_CLIENT_TRANSACTION_ID_SIZE parameter is not valid
156 #endif
157 
158 //Application specific context
159 #ifndef SCEP_CLIENT_PRIVATE_CONTEXT
160  #define SCEP_CLIENT_PRIVATE_CONTEXT
161 #endif
162 
163 //Forward declaration of ScepClientContext structure
164 struct _ScepClientContext;
165 #define ScepClientContext struct _ScepClientContext
166 
167 //C++ guard
168 #ifdef __cplusplus
169 extern "C" {
170 #endif
171 
172 
173 /**
174  * @brief SCEP client states
175  **/
176 
177 typedef enum
178 {
192 
193 
194 /**
195  * @brief HTTP request states
196  */
197 
198 typedef enum
199 {
211 
212 
213 //HTTPS supported?
214 #if (SCEP_CLIENT_TLS_SUPPORT == ENABLED)
215 
216 /**
217  * @brief TLS initialization callback function
218  **/
219 
221  TlsContext *tlsContext);
222 
223 #endif
224 
225 
226 /**
227  * @brief CA certificate verification callback function
228  **/
229 
231  const X509CertInfo *certInfo);
232 
233 
234 /**
235  * @brief CSR generation callback function
236  **/
237 
239  uint8_t *buffer, size_t size, size_t *length);
240 
241 
242 /**
243  * @brief Self-signed certificate generation callback function
244  **/
245 
247  uint8_t *buffer, size_t size, size_t *length);
248 
249 
250 /**
251  * @brief SCEP client context
252  **/
253 
255 {
256  ScepClientState state; ///<SCEP client state
257  ScepRequestState requestState; ///<HTTP request state
258  NetInterface *interface; ///<Underlying network interface
259  systime_t timeout; ///<Timeout value
260  const PrngAlgo *prngAlgo; ///<Pseudo-random number generator to be used
261  void *prngContext; ///<Pseudo-random number generator context
262  HttpClientContext httpClientContext; ///<HTTP client context
263 #if (SCEP_CLIENT_TLS_SUPPORT == ENABLED)
264  ScepClientTlsInitCallback tlsInitCallback; ///<TLS initialization callback function
265 #endif
266  ScepClientCaCertVerifyCallback caCertVerifyCallback; ///<CA certificate verification callback function
267  ScepClientCsrGenCallback csrGenCallback; ///<CSR generation callback function
268  ScepClientSelfSignedCertGenCallback selfSignedCertGenCallback; ///<Self-signed certificate generation callback function
269  char_t serverName[SCEP_CLIENT_MAX_HOST_LEN + 1]; ///<Host name of the SCEP server
270  uint16_t serverPort; ///<TCP port number
272  X509KeyType keyType; ///<Public key type
273 #if (SCEP_CLIENT_RSA_SUPPORT == ENABLED)
274  RsaPublicKey rsaPublicKey; ///<RSA public key
275  RsaPrivateKey rsaPrivateKey; ///<RSA private key
276 #endif
277  uint8_t csr[SCEP_CLIENT_MAX_CSR_LEN]; ///<CSR
278  size_t csrLen; ///<Length of the CSR, in bytes
279  uint8_t cert[SCEP_CLIENT_MAX_CERT_LEN]; ///<Client's certificate
280  size_t certLen; ///<Length of the client's certificate, in bytes
281  uint8_t caCert[SCEP_CLIENT_MAX_CA_CERT_LEN]; ///<CA certificate chain
282  size_t caCertLen; ///<Length of the CA certificate chain, in bytes
283  uint_t caCaps; ///<CA capabilities
284  char_t transactionId[SCEP_CLIENT_TRANSACTION_ID_SIZE * 2 + 1]; ///<Transaction identifier
285  uint8_t senderNonce[SCEP_NONCE_SIZE]; ///<Sender nonce
286  uint8_t buffer[SCEP_CLIENT_BUFFER_SIZE]; ///<Memory buffer for input/output operations
287  size_t bufferLen; ///<Length of the buffer, in bytes
288  size_t bufferPos; ///<Current position in the buffer
289  uint_t statusCode; ///<HTTP status code
290  char_t contentType[SCEP_CLIENT_MAX_CONTENT_TYPE_LEN + 1]; ///<Content type of the response
291  uint_t failInfo; ///<Failure reason
292  SCEP_CLIENT_PRIVATE_CONTEXT ///<Application specific context
293 };
294 
295 
296 //SCEP client related functions
298 
299 #if (SCEP_CLIENT_TLS_SUPPORT == ENABLED)
300 
302  ScepClientTlsInitCallback callback);
303 
304 #endif
305 
308 
310  ScepClientCsrGenCallback callback);
311 
314 
315 error_t scepClientSetPrng(ScepClientContext *context, const PrngAlgo *prngAlgo,
316  void *prngContext);
317 
319 
320 error_t scepClientSetHost(ScepClientContext *context, const char_t *host);
321 error_t scepClientSetUri(ScepClientContext *context, const char_t *uri);
322 
324  NetInterface *interface);
325 
327  const IpAddr *serverIpAddr, uint16_t serverPort);
328 
330  const char_t *publicKey, size_t publicKeyLen, const char_t *privateKey,
331  size_t privateKeyLen, const char_t *password);
332 
334 
336  char_t *input, size_t length);
337 
339  char_t *output, size_t *written);
340 
342  char_t *input, size_t length);
343 
345  char_t *output, size_t *written);
346 
352 
354 
357 
358 void scepClientDeinit(ScepClientContext *context);
359 
360 //C++ guard
361 #ifdef __cplusplus
362 }
363 #endif
364 
365 #endif
void scepClientDeinit(ScepClientContext *context)
Release SCEP client context.
Definition: scep_client.c:1331
ScepFailInfo scepClientGetFailInfo(ScepClientContext *context)
Get failure reason.
Definition: scep_client.c:1219
SCEP common definitions.
error_t scepClientPoll(ScepClientContext *context)
Certificate polling.
Definition: scep_client.c:1155
uint8_t buffer[SCEP_CLIENT_BUFFER_SIZE]
Memory buffer for input/output operations.
Definition: scep_client.h:286
#define ScepClientContext
Definition: scep_client.h:165
IP network address.
Definition: ip.h:90
error_t scepClientClose(ScepClientContext *context)
Close the connection with the SCEP server.
Definition: scep_client.c:1310
char_t uri[SCEP_CLIENT_MAX_URI_LEN+1]
URI.
Definition: scep_client.h:271
#define PrngAlgo
Definition: crypto.h:980
#define SCEP_CLIENT_MAX_HOST_LEN
Definition: scep_client.h:111
error_t scepClientSetUri(ScepClientContext *context, const char_t *uri)
Set request URI.
Definition: scep_client.c:265
@ SCEP_REQ_STATE_SEND_BODY
Definition: scep_client.h:204
void scepClientUnloadKeyPair(ScepClientContext *context)
Unload public/private key pair.
Definition: scep_client.c:488
RsaPrivateKey rsaPrivateKey
RSA private key.
Definition: scep_client.h:275
char_t transactionId[SCEP_CLIENT_TRANSACTION_ID_SIZE *2+1]
Transaction identifier.
Definition: scep_client.h:284
NetInterface * interface
Underlying network interface.
Definition: scep_client.h:258
error_t scepClientBindToInterface(ScepClientContext *context, NetInterface *interface)
Bind the SCEP client to a particular network interface.
Definition: scep_client.c:289
@ SCEP_CLIENT_STATE_CSR_GEN
Definition: scep_client.h:184
@ SCEP_CLIENT_STATE_PKCS_REQ
Definition: scep_client.h:187
error_t scepClientEnroll(ScepClientContext *context)
Certificate enrollment.
Definition: scep_client.c:869
size_t bufferPos
Current position in the buffer.
Definition: scep_client.h:288
#define SCEP_CLIENT_MAX_CONTENT_TYPE_LEN
Definition: scep_client.h:125
size_t certLen
Length of the client's certificate, in bytes.
Definition: scep_client.h:280
@ SCEP_REQ_STATE_RECEIVE_HEADER
Definition: scep_client.h:205
@ SCEP_REQ_STATE_INIT
Definition: scep_client.h:200
@ SCEP_CLIENT_STATE_TRANSACTION_ID_GEN
Definition: scep_client.h:186
@ SCEP_REQ_STATE_COMPLETE
Definition: scep_client.h:209
uint8_t caCert[SCEP_CLIENT_MAX_CA_CERT_LEN]
CA certificate chain.
Definition: scep_client.h:281
uint8_t senderNonce[SCEP_NONCE_SIZE]
Sender nonce.
Definition: scep_client.h:285
@ SCEP_CLIENT_STATE_GET_CA_CAPS
Definition: scep_client.h:182
error_t scepClientSetPrng(ScepClientContext *context, const PrngAlgo *prngAlgo, void *prngContext)
Set the pseudo-random number generator to be used.
Definition: scep_client.c:195
HttpClientContext httpClientContext
HTTP client context.
Definition: scep_client.h:262
@ SCEP_REQ_STATE_RECEIVE_BODY
Definition: scep_client.h:207
#define HttpClientContext
Definition: http_client.h:198
#define SCEP_CLIENT_BUFFER_SIZE
Definition: scep_client.h:104
X.509 certificate.
Definition: x509_common.h:1119
#define TlsContext
Definition: tls.h:36
error_t
Error codes.
Definition: error.h:43
ScepClientCsrGenCallback csrGenCallback
CSR generation callback function.
Definition: scep_client.h:267
@ SCEP_REQ_STATE_PARSE_HEADER
Definition: scep_client.h:206
ScepClientTlsInitCallback tlsInitCallback
TLS initialization callback function.
Definition: scep_client.h:264
@ SCEP_REQ_STATE_SEND_HEADER
Definition: scep_client.h:202
error_t scepClientGetCaCert(ScepClientContext *context)
Get CA certificate.
Definition: scep_client.c:809
uint16_t serverPort
TCP port number.
Definition: scep_client.h:270
uint_t statusCode
HTTP status code.
Definition: scep_client.h:289
RSA public key.
Definition: rsa.h:57
ScepRequestState requestState
HTTP request state.
Definition: scep_client.h:257
#define NetInterface
Definition: net.h:36
void * prngContext
Pseudo-random number generator context.
Definition: scep_client.h:261
SCEP client context.
Definition: scep_client.h:255
ScepClientState state
SCEP client state.
Definition: scep_client.h:256
error_t(* ScepClientCsrGenCallback)(ScepClientContext *context, uint8_t *buffer, size_t size, size_t *length)
CSR generation callback function.
Definition: scep_client.h:238
error_t scepClientStoreCert(ScepClientContext *context, char_t *output, size_t *written)
Store client's certificate.
Definition: scep_client.c:580
ScepClientCaCertVerifyCallback caCertVerifyCallback
CA certificate verification callback function.
Definition: scep_client.h:266
ScepFailInfo
Fail info.
Definition: scep_common.h:80
error_t scepClientSetHost(ScepClientContext *context, const char_t *host)
Set the domain name of the SCEP server.
Definition: scep_client.c:240
@ SCEP_REQ_STATE_FORMAT_BODY
Definition: scep_client.h:203
error_t scepClientConnect(ScepClientContext *context, const IpAddr *serverIpAddr, uint16_t serverPort)
Specify the address of the SCEP server.
Definition: scep_client.c:312
error_t scepClientRegisterCaCertVerifyCallback(ScepClientContext *context, ScepClientCaCertVerifyCallback callback)
Register CA certificate verification callback function.
Definition: scep_client.c:128
uint8_t length
Definition: tcp.h:375
error_t scepClientDisconnect(ScepClientContext *context)
Gracefully disconnect from the SCEP server.
Definition: scep_client.c:1244
size_t bufferLen
Length of the buffer, in bytes.
Definition: scep_client.h:287
X509KeyType keyType
Public key type.
Definition: scep_client.h:272
HTTP client (HyperText Transfer Protocol)
error_t scepClientRegisterTlsInitCallback(ScepClientContext *context, ScepClientTlsInitCallback callback)
Register TLS initialization callback function.
Definition: scep_client.c:104
uint8_t csr[SCEP_CLIENT_MAX_CSR_LEN]
CSR.
Definition: scep_client.h:277
error_t scepClientInit(ScepClientContext *context)
SCEP client initialization.
Definition: scep_client.c:62
#define SCEP_CLIENT_MAX_CA_CERT_LEN
Definition: scep_client.h:146
uint_t failInfo
Failure reason.
Definition: scep_client.h:291
#define SCEP_CLIENT_TRANSACTION_ID_SIZE
Definition: scep_client.h:153
uint32_t systime_t
System time.
#define SCEP_CLIENT_MAX_CSR_LEN
Definition: scep_client.h:132
char char_t
Definition: compiler_port.h:55
@ SCEP_CLIENT_STATE_GET_CA
Definition: scep_client.h:183
size_t caCertLen
Length of the CA certificate chain, in bytes.
Definition: scep_client.h:282
@ SCEP_CLIENT_STATE_CERT_POLL
Definition: scep_client.h:189
#define SCEP_CLIENT_MAX_URI_LEN
Definition: scep_client.h:118
RSA private key.
Definition: rsa.h:68
#define SCEP_CLIENT_MAX_CERT_LEN
Definition: scep_client.h:139
error_t scepClientLoadCert(ScepClientContext *context, char_t *input, size_t length)
Load client's certificate.
Definition: scep_client.c:519
#define SCEP_CLIENT_PRIVATE_CONTEXT
Definition: scep_client.h:160
char_t contentType[SCEP_CLIENT_MAX_CONTENT_TYPE_LEN+1]
Content type of the response.
Definition: scep_client.h:290
error_t(* ScepClientSelfSignedCertGenCallback)(ScepClientContext *context, uint8_t *buffer, size_t size, size_t *length)
Self-signed certificate generation callback function.
Definition: scep_client.h:246
error_t(* ScepClientTlsInitCallback)(HttpClientContext *context, TlsContext *tlsContext)
TLS initialization callback function.
Definition: scep_client.h:220
ScepClientState
SCEP client states.
Definition: scep_client.h:178
error_t scepClientSetTimeout(ScepClientContext *context, systime_t timeout)
Set communication timeout.
Definition: scep_client.c:219
@ SCEP_CLIENT_STATE_DISCONNECTED
Definition: scep_client.h:179
size_t csrLen
Length of the CSR, in bytes.
Definition: scep_client.h:278
#define SCEP_NONCE_SIZE
Definition: scep_common.h:39
const PrngAlgo * prngAlgo
Pseudo-random number generator to be used.
Definition: scep_client.h:260
@ SCEP_REQ_STATE_CLOSE_BODY
Definition: scep_client.h:208
@ SCEP_REQ_STATE_FORMAT_HEADER
Definition: scep_client.h:201
char_t serverName[SCEP_CLIENT_MAX_HOST_LEN+1]
Host name of the SCEP server.
Definition: scep_client.h:269
error_t scepClientLoadKeyPair(ScepClientContext *context, const char_t *publicKey, size_t publicKeyLen, const char_t *privateKey, size_t privateKeyLen, const char_t *password)
Load public/private key pair.
Definition: scep_client.c:420
error_t scepClientRegisterCsrGenCallback(ScepClientContext *context, ScepClientCsrGenCallback callback)
Register CSR generation callback function.
Definition: scep_client.c:150
error_t(* ScepClientCaCertVerifyCallback)(ScepClientContext *context, const X509CertInfo *certInfo)
CA certificate verification callback function.
Definition: scep_client.h:230
ScepRequestState
HTTP request states.
Definition: scep_client.h:199
error_t scepClientStoreCaCert(ScepClientContext *context, char_t *output, size_t *written)
Store CA certificate.
Definition: scep_client.c:676
systime_t timeout
Timeout value.
Definition: scep_client.h:259
uint_t caCaps
CA capabilities.
Definition: scep_client.h:283
error_t scepClientRegisterSelfSignedCertGenCallback(ScepClientContext *context, ScepClientSelfSignedCertGenCallback callback)
Register self-signed certificate generation callback function.
Definition: scep_client.c:172
@ SCEP_CLIENT_STATE_CONNECTED
Definition: scep_client.h:181
unsigned int uint_t
Definition: compiler_port.h:57
TCP/IP stack core.
@ SCEP_CLIENT_STATE_RENEWAL_REQ
Definition: scep_client.h:188
X509KeyType
Public Key types.
Definition: x509_common.h:633
ScepClientSelfSignedCertGenCallback selfSignedCertGenCallback
Self-signed certificate generation callback function.
Definition: scep_client.h:268
uint8_t cert[SCEP_CLIENT_MAX_CERT_LEN]
Client's certificate.
Definition: scep_client.h:279
@ SCEP_CLIENT_STATE_SELF_SIGNED_CERT_GEN
Definition: scep_client.h:185
error_t scepClientRenew(ScepClientContext *context)
Certificate renewal.
Definition: scep_client.c:1017
error_t scepClientGetCaCaps(ScepClientContext *context, uint_t *caCaps)
Request capabilities from a CA.
Definition: scep_client.c:746
@ SCEP_CLIENT_STATE_CONNECTING
Definition: scep_client.h:180
error_t scepClientLoadCaCert(ScepClientContext *context, char_t *input, size_t length)
Load out of band CA certificate.
Definition: scep_client.c:615
@ SCEP_CLIENT_STATE_DISCONNECTING
Definition: scep_client.h:190
RsaPublicKey rsaPublicKey
RSA public key.
Definition: scep_client.h:274