Commits


add -Wpointer-sign to the mix It's not present in -W -Wall -Wextra on OpenBSD but it is enabled on other systems.


fixes for -Wpointer-sign


cast uint64_t to unsigned long long


work around different signature for ecdsae_compute_key


add a privsep crypto engine Incorporate the OpenSMTPD' privsep crypto engine. The idea behind it is to never load the certificate' private keys in a networked process, instead they are loaded in a separate process (the `crypto' one) which signs payloads on the behalf of the server processes. This way, we greatly reduce the risk of leaking the certificate' private key should the server process be compromised. This currently compiles only on LibreSSL (portable fix is in the way).


drop useless debug statement


move setproctitle/privsep_process earlier We don't always do privilege dropping (as we may start as unprivileged user), so set these two beforehand so when we skip privdrop we don't miss to set privsep_process and set the process' title.


rework load_file to use pread() avoids issues since the same file is sent to multiple processes after being dup()'ed. Since these files are meant to be regular files, I don't expect short reads.


adjust how locations are received


simplify ocsp sending using config_send_file while here add an explicit flush to avoid a fd rampage.


change config_send_file to take the process id as argument i.e. not hardcode PROC_SERVER


gencert: use secp384r1 prime256v1 should be perfectly fine for all I understand, but OpenBSD' acme-client uses secp384r1 and who am I to disagree :)


parse the config file only once Don't have all the processes read gmid.conf. The parent needs to do that, and the will send the config to the children (already happening.) The other processes were reading the config anyway to figure out the user and the chroot (if enabled); make the parent pass additional flag to propagate that info. We dissociate a bit from the "usual" proc.c but it's a change worth having.


move print_conf and make it take the config as argument


use fatal/fatalx instead of err/errx in daemon code