aboutsummaryrefslogtreecommitdiffstats
path: root/security
diff options
context:
space:
mode:
Diffstat (limited to 'security')
-rw-r--r--security/pad/Makefile21
-rw-r--r--security/pad/distinfo2
-rw-r--r--security/pad/files/patch-pad.122
-rw-r--r--security/pad/files/patch-pad.c176
-rw-r--r--security/pad/pkg-descr18
-rw-r--r--security/pad/pkg-plist5
6 files changed, 224 insertions, 20 deletions
diff --git a/security/pad/Makefile b/security/pad/Makefile
index 2a135903627d..b49434f58d7b 100644
--- a/security/pad/Makefile
+++ b/security/pad/Makefile
@@ -6,20 +6,35 @@
#
PORTNAME= pad
+PORTVERSION= 1.0.4
PORTEPOCH= 1
-PORTVERSION= 0.7
CATEGORIES= security
-MASTER_SITES= http://www.lammah.com/pad/
+MASTER_SITES= http://www.lammah.com/pad/ \
+ ${MASTER_SITE_LOCAL}
+MASTER_SITE_SUBDIR=trevor
EXTRACT_SUFX= .tgz
-MAINTAINER= trevor@FreeBSD.org
+MAINTAINER= jharris@widomaker.com
DOC_FILES= COPYING README ChangeLog
GNU_CONFIGURE= yes
+MAN1= pad.1
+PLIST= ${WRKDIR}/pkg-plist
+USE_GMAKE= yes
USE_OPENSSL= yes
+pre-install:
+ ${ECHO_CMD} bin/pad > ${PLIST}
+.if !defined(NOPORTDOCS)
+.for i in ${DOC_FILES}
+ ${ECHO_CMD} share/doc/pad/$i >> ${PLIST}
+.endfor
+.endif
+ ${ECHO_CMD} "@dirrm share/doc/pad" >> ${PLIST}
+
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/pad ${PREFIX}/bin
+ ${INSTALL_MAN} ${WRKSRC}/pad.1 ${PREFIX}/man/man1
.if !defined(NOPORTDOCS)
${MKDIR} ${DOCSDIR}
.for i in ${DOC_FILES}
diff --git a/security/pad/distinfo b/security/pad/distinfo
index 70873f857d03..9ca5f9717df9 100644
--- a/security/pad/distinfo
+++ b/security/pad/distinfo
@@ -1 +1 @@
-MD5 (pad-0.7.tgz) = 6ca3c9e8b7a536a0adfe8e6efbdb9155
+MD5 (pad-1.0.4.tgz) = 9e819e9a48d0e18ff01b0f8b89730eb2
diff --git a/security/pad/files/patch-pad.1 b/security/pad/files/patch-pad.1
new file mode 100644
index 000000000000..070339cdaff7
--- /dev/null
+++ b/security/pad/files/patch-pad.1
@@ -0,0 +1,22 @@
+--- pad.1.orig Mon Oct 9 20:31:56 2000
++++ pad.1 Sun Feb 10 11:19:24 2002
+@@ -17,8 +17,8 @@
+ .TP 8
+ .B \-r \fI[num]\fP
+
+-Pad will XOR in [num] pads generated from random data. if this
+-is ommited, pad will use either 1 or 0 random pads, depending on
++Pad will XOR in [num] pads generated from random data. If this
++is omitted, pad will use either 1 or 0 random pads, depending on
+ if there is only one input file or more than one, respectively.
+
+ .TP 8
+@@ -33,7 +33,7 @@
+ .B \-o \fI[outfile]\fP
+
+ The result of all the XOR operations will be stored in this
+-file. If [output] is ommitted, pad will name the file according
++file. If [output] is omitted, pad will name the file according
+ to its MD5-sum, along with the rest of the random pads.
+
+ .TP 8
diff --git a/security/pad/files/patch-pad.c b/security/pad/files/patch-pad.c
new file mode 100644
index 000000000000..411805ef04f3
--- /dev/null
+++ b/security/pad/files/patch-pad.c
@@ -0,0 +1,176 @@
+--- pad.c.orig Sun Jul 23 09:14:10 2000
++++ pad.c Sun Feb 10 11:15:12 2002
+@@ -31,17 +31,17 @@
+ #include "pad.h"
+ #include "md5.h"
+
+-int main(argc, argv)
+- int argc;
+- char **argv;
+-{
+- char *ifname[256], *ofname[256]; /* Names of files */
+- FILE *ifp[256], *ofp[256]; /* file pointers themselves */
++int main (int argc, char *argv[]) {
++
++ char *ifname[256]; /* array of input file names */
++ char *ofname[256][FILENAME_MAX]; /* array of temp. output file names */
++ FILE *ifp[256];
++ int ofp[256];
+ struct md5_ctx context[256]; /* md5 contexts */
+ unsigned char digest[256][16]; /* md5 digests */
+ unsigned char currentbyte, readbyte; /* just a place to put new bytes */
+ char *outputname=NULL; /* output file name */
+- char buf[256]; /* temporary string space */
++ char buf[FILENAME_MAX]; /* temporary string space */
+ int defined_output=0, lastout, rands=-1, i, j; /* misc ints */
+ unsigned long bytecount=0, bytelimit=0; /* to limit/expand the filesize */
+
+@@ -151,42 +151,42 @@
+ {
+ if ((j != filesize(ifp[i])) && (i != 0))
+ {
+- fprintf(stderr, "Warning: Input files sizes differ. Output will match the size of the smallest input.\n");
++ fprintf(stderr, "Warning: sizes of input files differ. Unless -s option was given,\noutput will match the size of the smallest input.\n");
+ break;
+ }
+ j=filesize(ifp[i]);
+ }
+
+ /* And now to figure out the names of our output files... */
+- ofname[0] = NULL;
++ ofname[0][0] = (char)0;
+ for (i=0; i<rands; i++)
+ {
+- ofname[i] = tempnam("./", "pad"); /* if tmpnam doesn't like "./" and starts
+- giving us /tmp/, this could be a
+- problem later on when renaming */
+- ofname[i+1] = NULL;
+- }
+-
+- if (defined_output)
+- ofname[i] = outputname;
+- else
+- ofname[i] = tempnam("./", "pad");
+- lastout=i;
+- ofname[i+1] = NULL;
+-
+-
+- /* Open the output files for writing */
+- for (i=0; ofname[i] != NULL; i++)
+- {
+- if ((ofp[i]=fopen(ofname[i], "w"))==NULL)
+- {
++ (void) strlcpy ((char*)ofname[i], "pad.XXXXXX", sizeof(ofname[i]));
++ ofp[i] = mkstemp ((char*)ofname[i]);
++ if (ofp[i] == -1) { // couldn't create file, just bail...
+ fprintf(stderr,"Error opening %s: %s\n", ofname[i], strerror(errno));
+ exit(1);
+ }
+- ofp[i+1] = NULL;
++ ofname[i+1][0] = (char)0; /* clear next name */
++ ofp[i+1] = -1; /* clear next fd */
++ } // for i
++
++ // deal with the final file...
++ (void) strlcpy ((char*)ofname[i], "pad.XXXXXX", sizeof(ofname[i]));
++ ofp[i] = mkstemp ((char*)ofname[i]);
++ if (ofp[i] == -1) { // couldn't create file, just bail...
++ fprintf(stderr,"Error opening %s: %s\n", ofname[i], strerror(errno));
++ exit(1);
+ }
++ if (defined_output) {
++ (void) rename ((char*)ofname[i], outputname);
++ (void) strlcpy ((char*)ofname[i], outputname, sizeof(ofname[i]));
++ }
++ lastout = i;
++ ofname[i+1][0] = (char)0; /* clear next name */
++ ofp[i+1] = -1; /* clear next fd */
+
+- for (i=0; ofp[i] != NULL; i++)
++ for (i=0; ofp[i] != -1; i++)
+ MD5_start(&context[i]); /* start calculating md5 for each output file */
+
+ /* This while() is the heart of the program - the read/write loop */
+@@ -203,12 +203,12 @@
+ {
+ RAND_bytes(&readbyte, 1);
+ MD5_feed(&context[j], readbyte);
+- fputc(readbyte, ofp[j]);
++ (void) write (ofp[j], (void*) &readbyte, 1);
+ currentbyte=currentbyte^readbyte;
+ }
+ }
+ MD5_feed(&context[lastout], currentbyte);
+- fputc(currentbyte, ofp[lastout]);
++ (void) write (ofp[lastout], (void *) &currentbyte, 1);
+ bytecount++;
+ if ((bytelimit && (bytecount == bytelimit)))
+ { /* user's -s flag limited us to this size - we're done */
+@@ -227,16 +227,16 @@
+ {
+ RAND_bytes(&readbyte, 1);
+ MD5_feed(&context[j], readbyte);
+- fputc(readbyte, ofp[j]);
++ (void *) write (ofp[j], (void *) &readbyte, 1);
+ }
+ bytecount++;
+ }
+ }
+
+ /* Close all outputs, tell MD5 processor they're finished */
+- for (i=0; ofp[i] != NULL; i++)
++ for (i=0; ofp[i] != -1; i++)
+ {
+- fclose(ofp[i]);
++ (void) close(ofp[i]);
+ MD5_stop(&context[i], digest[i]);
+ }
+
+@@ -247,20 +247,24 @@
+ }
+
+ /* Rename output files to match their md5-sums */
+- for (i=0; ofname[i] != NULL; i++)
++ for (i=0; ofname[i][0] != (char)0; i++)
+ {
+- if ((defined_output) && (lastout == i))
++ if ((defined_output) && (lastout == i)) {
+ sprintf(buf, outputname);
+- else
++ } else {
+ sprintf(buf, "pad-md5-%s.dat", hexize(digest[i]));
+-
+- if (rename(ofname[i], buf)) /* note: no renaming across filesystems */
+- fprintf(stderr, "Error renaming: %s\n", strerror(errno));
+- else
++ }
++ if (rename((char *)ofname[i], buf)) { /* note: no renaming across filesystems */
++ fprintf (stderr,
++ "Error renaming file: %s (%s -> %s)\n",
++ strerror(errno), ofname[i], buf
++ );
++ } else {
+ fprintf(stderr, "Wrote %s\n", buf);
+- }
++ }
++ } // for i
+ exit(0);
+-}
++} // main()
+
+ /* Return size of fp passed */
+ long filesize(FILE *fp)
+@@ -282,11 +286,11 @@
+ options:
+
+ -r [num] - Pad will XOR in [num] pads generated from random data. if this
+- is ommited, pad will use either 1 or 0 random pads, depending on
++ is omitted, pad will use either 1 or 0 random pads, depending on
+ if there is only one input file or more than one, respectively.
+
+ -o [output] - The result of all the XOR operations will be stored in this
+- file. If [output] is ommitted, pad will name the file according
++ file. If [output] is omitted, pad will name the file according
+ to its MD5-sum, along with the rest of the random pads.
+
+ -s [size] - The output data will be [size] bytes. If this is less than the
diff --git a/security/pad/pkg-descr b/security/pad/pkg-descr
index 8ce64ae97053..8a1e2f310fce 100644
--- a/security/pad/pkg-descr
+++ b/security/pad/pkg-descr
@@ -1,14 +1,10 @@
-from the README:
-
-This is a small command-line utility to turn one file into two, each
-indistinguishable from noise, and put them back together into
-the original.
-
-from the maintainer:
-
-Note that the resulting files are the same size as the original.
+This is a small command-line utility for encryption and decryption
+using the principle of one-time pads (OTPs). One or more data files
+given to pad are XORd with each other and with RNG output, resulting
+in two or more output files. The output files are indistinguishable
+from random noise, except that when the pad utility is used to XOR
+them together again, the original data files may be recovered.
WWW: http://www.lammah.com/pad/
-Trevor Johnson
-trevor@jpj.net
+Jason Harris <jharris@widomaker.com>
diff --git a/security/pad/pkg-plist b/security/pad/pkg-plist
deleted file mode 100644
index 774f2684677c..000000000000
--- a/security/pad/pkg-plist
+++ /dev/null
@@ -1,5 +0,0 @@
-bin/pad
-share/doc/pad/COPYING
-share/doc/pad/README
-share/doc/pad/ChangeLog
-@dirrm share/doc/pad