diff options
author | eric <> | 2022-01-25 21:51:24 +0000 |
---|---|---|
committer | eric <> | 2022-01-25 21:51:24 +0000 |
commit | 5bc45eb57d3df492a992eb97f4f9efadef0b060c (patch) | |
tree | f7e1f8bcb82bc7a21b3720f212d7fbf3f1d02872 /src/lib/libtls/tls_internal.h | |
parent | c8578f33457bc1465ca08176ebca6e8aac53fcd3 (diff) | |
download | openbsd-5bc45eb57d3df492a992eb97f4f9efadef0b060c.tar.gz openbsd-5bc45eb57d3df492a992eb97f4f9efadef0b060c.tar.bz2 openbsd-5bc45eb57d3df492a992eb97f4f9efadef0b060c.zip |
Introduce a signer interface intented to make TLS privsep simpler
to implement.
Add a tls_config_set_sign_cb() function that allows to register
a callback for the signing operation on a tls_config. When used,
the context installs fake pivate keys internally, and the callback
receives the hash of the public key.
Add a tls_signer_*() set of functions to manage tls_signer objects.
A tls_signer is an opaque structure on which keys are added.
It is used to compute signatures with private keys identified by
their associated public key hash.
Discussed with and ok jsing@ tb@
Diffstat (limited to 'src/lib/libtls/tls_internal.h')
-rw-r--r-- | src/lib/libtls/tls_internal.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/libtls/tls_internal.h b/src/lib/libtls/tls_internal.h index 5487b123ec..bc5044518b 100644 --- a/src/lib/libtls/tls_internal.h +++ b/src/lib/libtls/tls_internal.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls_internal.h,v 1.78 2021/01/21 19:09:10 eric Exp $ */ | 1 | /* $OpenBSD: tls_internal.h,v 1.79 2022/01/25 21:51:24 eric Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Jeremie Courreges-Anglas <jca@openbsd.org> | 3 | * Copyright (c) 2014 Jeremie Courreges-Anglas <jca@openbsd.org> |
4 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 4 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
@@ -112,6 +112,8 @@ struct tls_config { | |||
112 | int verify_time; | 112 | int verify_time; |
113 | int skip_private_key_check; | 113 | int skip_private_key_check; |
114 | int use_fake_private_key; | 114 | int use_fake_private_key; |
115 | tls_sign_cb sign_cb; | ||
116 | void *sign_cb_arg; | ||
115 | }; | 117 | }; |
116 | 118 | ||
117 | struct tls_conninfo { | 119 | struct tls_conninfo { |
@@ -291,6 +293,9 @@ int tls_cert_pubkey_hash(X509 *_cert, char **_hash); | |||
291 | 293 | ||
292 | int tls_password_cb(char *_buf, int _size, int _rwflag, void *_u); | 294 | int tls_password_cb(char *_buf, int _size, int _rwflag, void *_u); |
293 | 295 | ||
296 | RSA_METHOD *tls_signer_rsa_method(void); | ||
297 | ECDSA_METHOD *tls_signer_ecdsa_method(void); | ||
298 | |||
294 | __END_HIDDEN_DECLS | 299 | __END_HIDDEN_DECLS |
295 | 300 | ||
296 | /* XXX this function is not fully hidden so relayd can use it */ | 301 | /* XXX this function is not fully hidden so relayd can use it */ |