8 int usign_v(const char *msgfile, const char *pubkeyfile,
9 const char *pubkeydir, const char *sigfile, bool quiet) {
12 const char *usign_argv[16] = {0};
13 unsigned int usign_argc = 0;
15 usign_argv[usign_argc++] = "/usr/bin/usign";
16 usign_argv[usign_argc++] = "-V";
17 usign_argv[usign_argc++] = "-m";
18 usign_argv[usign_argc++] = msgfile;
21 usign_argv[usign_argc++] = "-q";
24 usign_argv[usign_argc++] = "-p";
25 usign_argv[usign_argc++] = pubkeyfile;
29 usign_argv[usign_argc++] = "-P";
30 usign_argv[usign_argc++] = pubkeydir;
39 if (execv(usign_argv[0], usign_argv))
45 waitpid(pid, &status, 0);
46 return WEXITSTATUS(status);
52 int usign_s(const char *msgfile, const char *seckeyfile, const char *sigfile, bool quiet) {
55 const char *usign_argv[16] = {0};
56 unsigned int usign_argc = 0;
58 usign_argv[usign_argc++] = "/usr/bin/usign";
59 usign_argv[usign_argc++] = "-S";
60 usign_argv[usign_argc++] = "-m";
61 usign_argv[usign_argc++] = msgfile;
62 usign_argv[usign_argc++] = "-s";
63 usign_argv[usign_argc++] = seckeyfile;
64 usign_argv[usign_argc++] = "-x";
65 usign_argv[usign_argc++] = sigfile;
68 usign_argv[usign_argc++] = "-q";
76 if (execv(usign_argv[0], usign_argv))
82 waitpid(pid, &status, 0);
83 return WEXITSTATUS(status);
89 static int usign_f(char *fingerprint, const char *pubkeyfile, const char *seckeyfile, const char *sigfile) {
93 const char *usign_argv[16] = {0};
94 unsigned int usign_argc = 0;
99 usign_argv[usign_argc++] = "/usr/bin/usign";
100 usign_argv[usign_argc++] = "-F";
103 usign_argv[usign_argc++] = "-p";
104 usign_argv[usign_argc++] = pubkeyfile;
108 usign_argv[usign_argc++] = "-s";
109 usign_argv[usign_argc++] = seckeyfile;
113 usign_argv[usign_argc++] = "-x";
114 usign_argv[usign_argc++] = sigfile;
132 if (execv(usign_argv[0], usign_argv))
138 waitpid(pid, &status, 0);
139 if (fingerprint && !WEXITSTATUS(status)) {
140 memset(fingerprint, 0, 16);
141 read(fds[0], fingerprint, 16);
142 fingerprint[16] = '\0';
146 return WEXITSTATUS(status);
152 int usign_f_pubkey(char *fingerprint, const char *pubkeyfile) {
153 return usign_f(fingerprint, pubkeyfile, NULL, NULL);
156 int usign_f_seckey(char *fingerprint, const char *seckeyfile) {
157 return usign_f(fingerprint, NULL, seckeyfile, NULL);
160 int usign_f_sig(char *fingerprint, const char *sigfile) {
161 return usign_f(fingerprint, NULL, NULL, sigfile);