Skip to content

Commit 4ec4ea8

Browse files
committed
server: support reading CRL PEM for client auth.
This commit updates the `tests/server.c` example program to support reading one or more CRLs from a single PEM encoded CRL file, provided via `AUTH_CRL`. This option is only processed when the server is performing mandatory client authentication (e.g. `AUTH_CERT` was provided).
1 parent 794d38e commit 4ec4ea8

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

tests/server.c

+18-2
Original file line numberDiff line numberDiff line change
@@ -282,15 +282,31 @@ main(int argc, const char **argv)
282282
if(auth_cert) {
283283
char certbuf[10000];
284284
size_t certbuf_len;
285-
int result = read_file(argv[0], auth_cert, certbuf, sizeof(certbuf), &certbuf_len);
285+
unsigned result = read_file(argv[0], auth_cert, certbuf, sizeof(certbuf), &certbuf_len);
286286
if(result != DEMO_OK) {
287287
goto cleanup;
288288
}
289289

290290
client_cert_root_store = rustls_root_cert_store_new();
291291
rustls_root_cert_store_add_pem(client_cert_root_store, (uint8_t *)certbuf, certbuf_len, true);
292-
293292
client_cert_verifier_builder = rustls_client_cert_verifier_builder_new(client_cert_root_store);
293+
294+
char* auth_crl = getenv("AUTH_CRL");
295+
char crlbuf[10000];
296+
size_t crlbuf_len;
297+
if(auth_crl) {
298+
result =
299+
read_file(argv[0], auth_crl, crlbuf, sizeof(crlbuf), &crlbuf_len);
300+
if(result != DEMO_OK) {
301+
goto cleanup;
302+
}
303+
304+
result = rustls_client_cert_verifier_builder_add_crl(client_cert_verifier_builder, (uint8_t *)crlbuf, certbuf_len);
305+
if(result != RUSTLS_RESULT_OK) {
306+
goto cleanup;
307+
}
308+
}
309+
294310
client_cert_verifier = rustls_client_cert_verifier_new(client_cert_verifier_builder);
295311
rustls_server_config_builder_set_client_verifier(config_builder, client_cert_verifier);
296312
}

0 commit comments

Comments
 (0)