diff --git a/man/details.pod b/man/details.pod index 745e432..3e5728c 100644 --- a/man/details.pod +++ b/man/details.pod @@ -112,7 +112,11 @@ be Z85 encoded. Example: - pcp1 -g -I message.txt -O message.asc -g --detach + pcp1 -g -I message.txt -O -g --sigfile message.sig + +Verification by recipient: + + pcp -c -f message.sig -I message.txt =back diff --git a/man/pcp1.1 b/man/pcp1.1 index 477df4b..dfb3c4a 100644 --- a/man/pcp1.1 +++ b/man/pcp1.1 @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "PCP1 1" -.TH PCP1 1 "2014-01-27" "PCP 0.2.0" "USER CONTRIBUTED DOCUMENTATION" +.TH PCP1 1 "2014-01-28" "PCP 0.2.0" "USER CONTRIBUTED DOCUMENTATION" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -231,11 +231,11 @@ Pretty Curved Privacy \- File encryption using eliptic curve cryptography. \& the file specified with \-I (or stdin). \& The public key required for this must \& exist in your vault file. -\& \-a \-\-detach Write a detached signature file, which doesn\*(Aqt +\& \-f \-\-sigfile Write a detached signature file, which doesn\*(Aqt \& contain the original content. Output will be \& z85 encoded always. To verify, you need to \& specify the original file to be verified -\& against using \-I as well (plus \-a). +\& against using \-I as well (plus \-f ). \& \& Encoding Options: \& \-z \-\-z85\-encode Encode something to Z85 encoding. Use @@ -436,7 +436,13 @@ be Z85 encoded. Example: .Sp .Vb 1 -\& pcp1 \-g \-I message.txt \-O message.asc \-g \-\-detach +\& pcp1 \-g \-I message.txt \-O \-g \-\-sigfile message.sig +.Ve +.Sp +Verification by recipient: +.Sp +.Vb 1 +\& pcp \-c \-f message.sig \-I message.txt .Ve .SH "SIGNED ENCRYPTION" .IX Header "SIGNED ENCRYPTION" diff --git a/man/pcp1.pod b/man/pcp1.pod index 107370d..6531c2a 100644 --- a/man/pcp1.pod +++ b/man/pcp1.pod @@ -103,11 +103,11 @@ Pretty Curved Privacy - File encryption using eliptic curve cryptography. the file specified with -I (or stdin). The public key required for this must exist in your vault file. - -a --detach Write a detached signature file, which doesn't + -f --sigfile Write a detached signature file, which doesn't contain the original content. Output will be z85 encoded always. To verify, you need to specify the original file to be verified - against using -I as well (plus -a). + against using -I as well (plus -f ). Encoding Options: -z --z85-encode Encode something to Z85 encoding. Use @@ -303,7 +303,11 @@ be Z85 encoded. Example: - pcp1 -g -I message.txt -O message.asc -g --detach + pcp1 -g -I message.txt -O -g --sigfile message.sig + +Verification by recipient: + + pcp -c -f message.sig -I message.txt =back diff --git a/src/pcp.c b/src/pcp.c index 7f533df..ae5638f 100644 --- a/src/pcp.c +++ b/src/pcp.c @@ -99,17 +99,17 @@ int main (int argc, char **argv) { // globals { "help", no_argument, NULL, 'h' }, - { "version", no_argument, NULL, 'f' }, + { "version", no_argument, NULL, 'v' }, { "debug", no_argument, NULL, 'D' }, // signing { "sign", no_argument, NULL, 'g' }, - { "check-signature", optional_argument, NULL, 'c' }, - { "detach", no_argument, NULL, 'a' }, + { "check-signature", no_argument, NULL, 'c' }, + { "sigfile", required_argument, NULL, 'f' }, { NULL, 0, NULL, 0 } }; - while ((opt = getopt_long(argc, argv, "klV:vdehsO:i:I:pSPRtEx:DzZr:gc::yma", + while ((opt = getopt_long(argc, argv, "klV:vdehsO:i:I:pSPRtEx:DzZr:gcymf:", longopts, NULL)) != -1) { switch (opt) { @@ -175,21 +175,19 @@ int main (int argc, char **argv) { case 'Z': armor = 1; break; - case 'a': - detach = 1; - break; case 'g': mode += PCP_MODE_SIGN; usevault = 1; break; case 'c': mode += PCP_MODE_VERIFY; - if(optarg) { - sigfile = ucmalloc(strlen(optarg)+1); - strncpy(sigfile, optarg, strlen(optarg)+1); - } usevault = 1; break; + case 'f': + sigfile = ucmalloc(strlen(optarg)+1); + strncpy(sigfile, optarg, strlen(optarg)+1); + detach = 1; + break; case 'y': mode += PCP_MODE_YAML; usevault = 1; @@ -393,7 +391,14 @@ int main (int argc, char **argv) { break; case PCP_MODE_SIGN: - pcpsign(infile, outfile, xpass, armor, detach); + if(detach) { + if(outfile != NULL && sigfile != NULL) + fatal("You can't both specify -O and -f, use -O for std signatures and -f for detached ones\n"); + else + pcpsign(infile, sigfile, xpass, armor, detach); + } + else + pcpsign(infile, outfile, xpass, armor, detach); break; case PCP_MODE_VERIFY: diff --git a/src/signature.c b/src/signature.c index 27b8fd1..ec47d66 100644 --- a/src/signature.c +++ b/src/signature.c @@ -115,7 +115,7 @@ int pcpverify(char *infile, char *sigfile, char *id, int detach) { if(detach) pub = pcp_ed_detachverify_buffered(in, sigfd, pub); else - pub = pcp_ed_verify_buffered(sigfd, pub); + pub = pcp_ed_verify_buffered(in, pub); if(pub != NULL) fprintf(stderr, "Signature verified (signed by %s <%s>).\n", pub->owner, pub->mail); diff --git a/src/usage.h b/src/usage.h index 62f45f2..d9a52f7 100644 --- a/src/usage.h +++ b/src/usage.h @@ -98,11 +98,11 @@ " the file specified with -I (or stdin).\n" \ " The public key required for this must\n" \ " exist in your vault file.\n" \ -"-a --detach Write a detached signature file, which doesn't\n" \ +"-f --sigfile Write a detached signature file, which doesn't\n" \ " contain the original content. Output will be\n" \ " z85 encoded always. To verify, you need to\n" \ " specify the original file to be verified\n" \ -" against using -I as well (plus -a).\n" \ +" against using -I as well (plus -f ).\n" \ "\n" \ "Encoding Options:\n" \ "-z --z85-encode Encode something to Z85 encoding. Use\n" \ diff --git a/src/usage.txt b/src/usage.txt index 5d9f977..97d3ab7 100644 --- a/src/usage.txt +++ b/src/usage.txt @@ -96,11 +96,11 @@ Signature Options: the file specified with -I (or stdin). The public key required for this must exist in your vault file. --a --detach Write a detached signature file, which doesn't +-f --sigfile Write a detached signature file, which doesn't contain the original content. Output will be z85 encoded always. To verify, you need to specify the original file to be verified - against using -I as well (plus -a). + against using -I as well (plus -f ). Encoding Options: -z --z85-encode Encode something to Z85 encoding. Use diff --git a/tests/unittests.cfg b/tests/unittests.cfg index e3c5842..1f520db 100644 --- a/tests/unittests.cfg +++ b/tests/unittests.cfg @@ -212,7 +212,7 @@ dxmorg@florida.cops.gov # # signature tests - cmd = $pcp -V va -g -I README -O testsig -x a -a + cmd = $pcp -V va -g -I README -f testsig -x a expect-file testsig @@ -225,7 +225,7 @@ dxmorg@florida.cops.gov expect-file testsig - cmd = $pcp -V vb -c testsig -i $idalicia -z + cmd = $pcp -V vb -c -I testsig -i $idalicia -z expect = /verified/ @@ -234,7 +234,7 @@ dxmorg@florida.cops.gov expect-file testsig - cmd = $pcp -V vb -c testsig -i $idalicia + cmd = $pcp -V vb -c -I testsig -i $idalicia expect = /verified/