Skip to content

Commit

Permalink
- implement "raw detchaed sign" for arch et al
Browse files Browse the repository at this point in the history
  • Loading branch information
mlschroe committed Aug 13, 2012
1 parent 0f22ef0 commit a1ed0aa
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion sign.c
Expand Up @@ -1055,6 +1055,7 @@ static unsigned char *hash_read(HASH_CONTEXT *c)
#define MODE_PUBKEY 5
#define MODE_KEYGEN 6
#define MODE_KEYEXTEND 7
#define MODE_RAWDETACHEDSIGN 8

static const char *const modes[] =
{"?", "rpm sign", "clear sign", "detached sign"};
Expand Down Expand Up @@ -1518,6 +1519,8 @@ sign(char *filename, int isfilter, int mode)
}
if (mode == MODE_DETACHEDSIGN)
sprintf(outfilename, "%s.asc", filename);
else if (mode == MODE_RAWDETACHEDSIGN)
sprintf(outfilename, "%s.sig", filename);
else
sprintf(outfilename, "%s.sIgN%d", filename, getpid());
}
Expand Down Expand Up @@ -2088,6 +2091,16 @@ sign(char *filename, int isfilter, int mode)
printr64(fout, hash, 3);
fprintf(fout, "-----END PGP SIGNATURE-----\n");
}
else if (mode == MODE_RAWDETACHEDSIGN)
{
if (fwrite(buf + 6, outl, 1, fout) != 1)
{
perror("fwrite");
if (!isfilter)
unlink(outfilename);
exit(1);
}
}
else if (mode == MODE_RPMSIGN)
{
if (rpminsertsig(rpmsig, &rpmsigsize, &rpmsigcnt, &rpmsigdlen, hashtag[hashalgo], buf + 6, outl))
Expand Down Expand Up @@ -2193,7 +2206,8 @@ sign(char *filename, int isfilter, int mode)
unlink(outfilename);
exit(1);
}
if (mode != MODE_DETACHEDSIGN && rename(outfilename, filename))
if (mode != MODE_DETACHEDSIGN && mode != MODE_RAWDETACHEDSIGN
&& rename(outfilename, filename))
{
perror("rename");
unlink(outfilename);
Expand Down Expand Up @@ -3010,6 +3024,12 @@ main(int argc, char **argv)
argc--;
argv++;
}
else if (argc > 1 && !strcmp(argv[1], "-D"))
{
mode = MODE_RAWDETACHEDSIGN;
argc--;
argv++;
}
else if (argc > 1 && !strcmp(argv[1], "-r"))
{
mode = MODE_RPMSIGN;
Expand Down

0 comments on commit a1ed0aa

Please sign in to comment.