summaryrefslogtreecommitdiff
path: root/src/lib/libtls/tls_config.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/libtls/tls_config.c58
1 files changed, 57 insertions, 1 deletions
diff --git a/src/lib/libtls/tls_config.c b/src/lib/libtls/tls_config.c
index 0d52704aa8..c07621acaf 100644
--- a/src/lib/libtls/tls_config.c
+++ b/src/lib/libtls/tls_config.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls_config.c,v 1.27 2016/08/13 13:15:53 jsing Exp $ */ 1/* $OpenBSD: tls_config.c,v 1.28 2016/08/22 14:55:59 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -227,6 +227,18 @@ tls_config_free(struct tls_config *config)
227 free(config); 227 free(config);
228} 228}
229 229
230static void
231tls_config_keypair_add(struct tls_config *config, struct tls_keypair *keypair)
232{
233 struct tls_keypair *kp;
234
235 kp = config->keypair;
236 while (kp->next != NULL)
237 kp = kp->next;
238
239 kp->next = keypair;
240}
241
230const char * 242const char *
231tls_config_error(struct tls_config *config) 243tls_config_error(struct tls_config *config)
232{ 244{
@@ -370,6 +382,50 @@ tls_config_set_alpn(struct tls_config *config, const char *alpn)
370} 382}
371 383
372int 384int
385tls_config_add_keypair_file(struct tls_config *config,
386 const char *cert_file, const char *key_file)
387{
388 struct tls_keypair *keypair;
389
390 if ((keypair = tls_keypair_new()) == NULL)
391 return (-1);
392 if (tls_keypair_set_cert_file(keypair, &config->error, cert_file) != 0)
393 goto err;
394 if (tls_keypair_set_key_file(keypair, &config->error, key_file) != 0)
395 goto err;
396
397 tls_config_keypair_add(config, keypair);
398
399 return (0);
400
401 err:
402 tls_keypair_free(keypair);
403 return (-1);
404}
405
406int
407tls_config_add_keypair_mem(struct tls_config *config, const uint8_t *cert,
408 size_t cert_len, const uint8_t *key, size_t key_len)
409{
410 struct tls_keypair *keypair;
411
412 if ((keypair = tls_keypair_new()) == NULL)
413 return (-1);
414 if (tls_keypair_set_cert_mem(keypair, cert, cert_len) != 0)
415 goto err;
416 if (tls_keypair_set_key_mem(keypair, key, key_len) != 0)
417 goto err;
418
419 tls_config_keypair_add(config, keypair);
420
421 return (0);
422
423 err:
424 tls_keypair_free(keypair);
425 return (-1);
426}
427
428int
373tls_config_set_ca_file(struct tls_config *config, const char *ca_file) 429tls_config_set_ca_file(struct tls_config *config, const char *ca_file)
374{ 430{
375 return tls_config_load_file(&config->error, "CA", ca_file, 431 return tls_config_load_file(&config->error, "CA", ca_file,