2024-07-12 00:11:14 -07:00
|
|
|
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
|
|
/*
|
|
|
|
* SSL helper functions shared by sign-file and extract-cert.
|
|
|
|
*/
|
|
|
|
|
2024-07-12 00:11:15 -07:00
|
|
|
static void drain_openssl_errors(int l, int silent)
|
2024-07-12 00:11:14 -07:00
|
|
|
{
|
|
|
|
const char *file;
|
|
|
|
char buf[120];
|
|
|
|
int e, line;
|
|
|
|
|
|
|
|
if (ERR_peek_error() == 0)
|
|
|
|
return;
|
2024-07-12 00:11:15 -07:00
|
|
|
if (!silent)
|
|
|
|
fprintf(stderr, "At main.c:%d:\n", l);
|
2024-07-12 00:11:14 -07:00
|
|
|
|
2024-07-12 00:11:15 -07:00
|
|
|
while ((e = ERR_peek_error_line(&file, &line))) {
|
2024-07-12 00:11:14 -07:00
|
|
|
ERR_error_string(e, buf);
|
2024-07-12 00:11:15 -07:00
|
|
|
if (!silent)
|
|
|
|
fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
|
|
|
|
ERR_get_error();
|
2024-07-12 00:11:14 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#define ERR(cond, fmt, ...) \
|
|
|
|
do { \
|
|
|
|
bool __cond = (cond); \
|
2024-07-12 00:11:15 -07:00
|
|
|
drain_openssl_errors(__LINE__, 0); \
|
2024-07-12 00:11:14 -07:00
|
|
|
if (__cond) { \
|
|
|
|
errx(1, fmt, ## __VA_ARGS__); \
|
|
|
|
} \
|
|
|
|
} while (0)
|