#include "usign.h"
+#ifdef UCERT_HOST_BUILD
+#define USIGN_EXEC "usign"
+#else
+#define USIGN_EXEC "/usr/bin/usign"
+#endif
+
/*
* check for revoker deadlink in pubkeydir
* return true if a revoker exists, false otherwise
return false;
}
+#ifdef UCERT_FULL
/*
* call usign -S ...
* return WEXITSTATUS or -1 if fork or execv fails
const char *usign_argv[16] = {0};
unsigned int usign_argc = 0;
- usign_argv[usign_argc++] = "/usr/bin/usign";
+ usign_argv[usign_argc++] = USIGN_EXEC;
usign_argv[usign_argc++] = "-S";
usign_argv[usign_argc++] = "-m";
usign_argv[usign_argc++] = msgfile;
return -1;
case 0:
- if (execv(usign_argv[0], usign_argv))
+ if (
+#ifdef UCERT_HOST_BUILD
+ execvp(usign_argv[0], (char *const *)usign_argv)
+#else
+ execv(usign_argv[0], (char *const *)usign_argv)
+#endif
+ )
return -1;
break;
return -1;
}
+#else
+int usign_s(const char *msgfile, const char *seckeyfile, const char *sigfile, bool quiet) {
+ return -1;
+};
+#endif
/*
* call usign -F ... and set fingerprint returned
if (pipe(fds))
return -1;
- usign_argv[usign_argc++] = "/usr/bin/usign";
+ usign_argv[usign_argc++] = USIGN_EXEC;
usign_argv[usign_argc++] = "-F";
if (pubkeyfile) {
close(fds[0]);
close(fds[1]);
- if (execv(usign_argv[0], usign_argv))
+ if (
+#ifdef UCERT_HOST_BUILD
+ execvp(usign_argv[0], (char *const *)usign_argv)
+#else
+ execv(usign_argv[0], (char *const *)usign_argv)
+#endif
+ )
return -1;
break;
default:
waitpid(pid, &status, 0);
+ status = WEXITSTATUS(status);
if (fingerprint && !WEXITSTATUS(status)) {
- memset(fingerprint, 0, 16);
- read(fds[0], fingerprint, 16);
+ ssize_t r;
+ memset(fingerprint, 0, 17);
+ r = read(fds[0], fingerprint, 17);
+ if (r < 16)
+ status = -1;
+
fingerprint[16] = '\0';
+
}
close(fds[0]);
close(fds[1]);
- return WEXITSTATUS(status);
+ return status;
}
return -1;
unsigned int usign_argc = 0;
char fingerprint[17];
- if (usign_f_sig(fingerprint, sigfile))
+ if (usign_f_sig(fingerprint, sigfile)) {
+ if (!quiet)
+ fprintf(stdout, "cannot get signing key fingerprint\n");
return 1;
+ }
- if (pubkeydir && _usign_key_is_revoked(fingerprint, pubkeydir))
+ if (pubkeydir && _usign_key_is_revoked(fingerprint, pubkeydir)) {
+ if (!quiet)
+ fprintf(stdout, "key %s has been revoked!\n", fingerprint);
return 1;
-
- usign_argv[usign_argc++] = "/usr/bin/usign";
+ }
+ usign_argv[usign_argc++] = USIGN_EXEC;
usign_argv[usign_argc++] = "-V";
usign_argv[usign_argc++] = "-m";
usign_argv[usign_argc++] = msgfile;
return -1;
case 0:
- if (execv(usign_argv[0], usign_argv))
+ if (
+#ifdef UCERT_HOST_BUILD
+ execvp(usign_argv[0], (char *const *)usign_argv)
+#else
+ execv(usign_argv[0], (char *const *)usign_argv)
+#endif
+ )
return -1;
break;