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
;
34 usign_argv
[usign_argc
++] = "-x";
35 usign_argv
[usign_argc
++] = sigfile
;
44 if (execv(usign_argv
[0], usign_argv
))
50 waitpid(pid
, &status
, 0);
51 return WEXITSTATUS(status
);
57 int usign_s(const char *msgfile
, const char *seckeyfile
, const char *sigfile
, bool quiet
) {
60 const char *usign_argv
[16] = {0};
61 unsigned int usign_argc
= 0;
63 usign_argv
[usign_argc
++] = "/usr/bin/usign";
64 usign_argv
[usign_argc
++] = "-S";
65 usign_argv
[usign_argc
++] = "-m";
66 usign_argv
[usign_argc
++] = msgfile
;
67 usign_argv
[usign_argc
++] = "-s";
68 usign_argv
[usign_argc
++] = seckeyfile
;
69 usign_argv
[usign_argc
++] = "-x";
70 usign_argv
[usign_argc
++] = sigfile
;
73 usign_argv
[usign_argc
++] = "-q";
81 if (execv(usign_argv
[0], usign_argv
))
87 waitpid(pid
, &status
, 0);
88 return WEXITSTATUS(status
);
94 static int usign_f(char *fingerprint
, const char *pubkeyfile
, const char *seckeyfile
, const char *sigfile
) {
98 const char *usign_argv
[16] = {0};
99 unsigned int usign_argc
= 0;
104 usign_argv
[usign_argc
++] = "/usr/bin/usign";
105 usign_argv
[usign_argc
++] = "-F";
108 usign_argv
[usign_argc
++] = "-p";
109 usign_argv
[usign_argc
++] = pubkeyfile
;
113 usign_argv
[usign_argc
++] = "-s";
114 usign_argv
[usign_argc
++] = seckeyfile
;
118 usign_argv
[usign_argc
++] = "-x";
119 usign_argv
[usign_argc
++] = sigfile
;
135 if (execv(usign_argv
[0], usign_argv
))
141 waitpid(pid
, &status
, 0);
142 if (fingerprint
&& !WEXITSTATUS(status
)) {
143 memset(fingerprint
, 0, 16);
144 read(fds
[0], fingerprint
, 16);
145 fingerprint
[16] = '\0';
149 return WEXITSTATUS(status
);
155 int usign_f_pubkey(char *fingerprint
, const char *pubkeyfile
) {
156 return usign_f(fingerprint
, pubkeyfile
, NULL
, NULL
);
159 int usign_f_seckey(char *fingerprint
, const char *seckeyfile
) {
160 return usign_f(fingerprint
, NULL
, seckeyfile
, NULL
);
163 int usign_f_sig(char *fingerprint
, const char *sigfile
) {
164 return usign_f(fingerprint
, NULL
, NULL
, sigfile
);