xref: /linux-6.15/scripts/ssl-common.h (revision 467d60ed)
1300e6d41SJan Stancek /* SPDX-License-Identifier: LGPL-2.1+ */
2300e6d41SJan Stancek /*
3300e6d41SJan Stancek  * SSL helper functions shared by sign-file and extract-cert.
4300e6d41SJan Stancek  */
5300e6d41SJan Stancek 
drain_openssl_errors(int l,int silent)6*467d60edSJan Stancek static void drain_openssl_errors(int l, int silent)
7300e6d41SJan Stancek {
8300e6d41SJan Stancek 	const char *file;
9300e6d41SJan Stancek 	char buf[120];
10300e6d41SJan Stancek 	int e, line;
11300e6d41SJan Stancek 
12300e6d41SJan Stancek 	if (ERR_peek_error() == 0)
13300e6d41SJan Stancek 		return;
14*467d60edSJan Stancek 	if (!silent)
15300e6d41SJan Stancek 		fprintf(stderr, "At main.c:%d:\n", l);
16300e6d41SJan Stancek 
17*467d60edSJan Stancek 	while ((e = ERR_peek_error_line(&file, &line))) {
18300e6d41SJan Stancek 		ERR_error_string(e, buf);
19*467d60edSJan Stancek 		if (!silent)
20300e6d41SJan Stancek 			fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
21*467d60edSJan Stancek 		ERR_get_error();
22300e6d41SJan Stancek 	}
23300e6d41SJan Stancek }
24300e6d41SJan Stancek 
25300e6d41SJan Stancek #define ERR(cond, fmt, ...)				\
26300e6d41SJan Stancek 	do {						\
27300e6d41SJan Stancek 		bool __cond = (cond);			\
28*467d60edSJan Stancek 		drain_openssl_errors(__LINE__, 0);	\
29300e6d41SJan Stancek 		if (__cond) {				\
30300e6d41SJan Stancek 			errx(1, fmt, ## __VA_ARGS__);	\
31300e6d41SJan Stancek 		}					\
32300e6d41SJan Stancek 	} while (0)
33