Module Name: othersrc
Committed By: agc
Date: Fri Jul 15 05:37:33 UTC 2011
Modified Files:
othersrc/crypto/external/bsd/sharedkey/dist/src/libsharedkey:
libsharedkey.c
othersrc/crypto/external/bsd/sharedkey/sharedkey: Makefile
Log Message:
move from using a system(3) call to tar to package up the individual shares,
to using libmat(3). Removes the remaining "XXX" from this code.
the getopt2 lib is specified explicitly in the Makefiles for the benefit of
all of the sun2 port users out there.
also fix some lint
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 \
othersrc/crypto/external/bsd/sharedkey/dist/src/libsharedkey/libsharedkey.c
cvs rdiff -u -r1.1.1.1 -r1.2 \
othersrc/crypto/external/bsd/sharedkey/sharedkey/Makefile
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: othersrc/crypto/external/bsd/sharedkey/dist/src/libsharedkey/libsharedkey.c
diff -u othersrc/crypto/external/bsd/sharedkey/dist/src/libsharedkey/libsharedkey.c:1.1.1.1 othersrc/crypto/external/bsd/sharedkey/dist/src/libsharedkey/libsharedkey.c:1.2
--- othersrc/crypto/external/bsd/sharedkey/dist/src/libsharedkey/libsharedkey.c:1.1.1.1 Mon Mar 21 07:10:42 2011
+++ othersrc/crypto/external/bsd/sharedkey/dist/src/libsharedkey/libsharedkey.c Fri Jul 15 05:37:33 2011
@@ -39,8 +39,13 @@
#include <time.h>
#include <unistd.h>
+#include "mat.h"
#include "sharedkey.h"
+#ifndef __UNCONST
+#define __UNCONST(a) ((void *)(unsigned long)(const void *)(a))
+#endif
+
/* copy from one file to another */
static int
copy(const char *fromdir, const char *from, const char *todir, const char *to)
@@ -52,8 +57,8 @@
char *mem;
FILE *fpr;
FILE *fpw;
- int wc;
- int cc;
+ ssize_t wc;
+ ssize_t cc;
(void) snprintf(fromname, sizeof(fromname), "%s/%s", fromdir, from);
(void) snprintf(toname, sizeof(toname), "%s/%s", todir, to);
@@ -102,14 +107,14 @@
{
va_list args;
char name[MAXPATHLEN];
- int cc;
+ ssize_t cc;
va_start(args, fmt);
vsnprintf(name, sizeof(name), fmt, args);
va_end(args);
cc = readlink(name, contents, size);
contents[cc] = 0x0;
- return cc;
+ return (int)cc;
}
/* varargs stat function */
@@ -144,7 +149,7 @@
{
const char *last;
const char *s;
- int sufflen;
+ size_t sufflen;
if ((s = strrchr(name, '/')) == NULL) {
s = name;
@@ -240,17 +245,19 @@
{
threshold_t threshold;
struct stat st;
+ const char *mat = "mattar";
netpgp_t netpgp;
unsigned i;
size_t cc;
time_t t;
+ char archive[MAXPATHLEN];
char keyrings[MAXPATHLEN];
char secret[MAXPATHLEN];
char sharedir[MAXPATHLEN];
char scratch[MAXPATHLEN];
char d[MAXPATHLEN];
+ char sharenum[32];
char desc[1024];
- char cmd[8192];
char *share;
(void) memset(&netpgp, 0x0, sizeof(netpgp));
@@ -289,7 +296,7 @@
(void) snprintf(secret, sizeof(secret), "%s/secret.gpg", keyrings);
netpgp_encrypt_file(&netpgp, sharedkey->keyid, f, secret, 0);
/* share the private key */
- ssss_init(&threshold, "ssss", (uint8_t)sharedkey->threshold, (uint8_t)sharedkey->shares);
+ ssss_init(&threshold, "ssss", (unsigned)sharedkey->threshold, (unsigned)sharedkey->shares);
(void) snprintf(scratch, sizeof(scratch), "%s/secring.gpg", keyrings);
ssss_add_share(&threshold, THRESH_SPLIT_SOURCE, scratch, -1);
ssss_split(&threshold);
@@ -302,11 +309,10 @@
copy(keyrings, "pubring.gpg", sharedir, "pubring.gpg");
ssss_get_share(&threshold, i, (void **)(void *)&share, &cc);
writeshare(share, cc, "%s/secring.gpg.share", sharedir);
- (void) snprintf(cmd, sizeof(cmd),
- "tar -C %s -czf %s/share%.3d.tar.gz share%.3d",
- sharedkey->splitdir, sharedkey->splitdir, i, i);
- system(cmd); /* XXX */
- vsyscall(0600, "chmod", "%s/share%.3d.tar.gz", sharedkey->splitdir, i);
+ snprintf(archive, sizeof(archive), "%s/share%.3d.mat", sharedkey->splitdir, i);
+ snprintf(sharenum, sizeof(sharenum), "share%.3d", i);
+ mat_vtar(__UNCONST(mat), "-cvvf", archive, "-C", sharedkey->splitdir, sharenum, NULL);
+ vsyscall(0600, "chmod", "%s/share%.3d.mat", sharedkey->splitdir, i);
recursive_rm(sharedir);
}
ssss_end(&threshold);
@@ -321,16 +327,14 @@
{
threshold_t threshold;
struct stat st;
+ const char *mat = "mattar";
netpgp_t netpgp;
- //size_t size;
char *recoverdir;
- char cmd[8192];
char keyring[MAXPATHLEN];
char scratch[MAXPATHLEN];
char secring[MAXPATHLEN];
char both[MAXPATHLEN];
char d[MAXPATHLEN];
- //char *share;
int i;
(void) snprintf(d, sizeof(d), "/tmp/recover.XXXXXX");
@@ -342,9 +346,8 @@
return 0;
}
for (i = optind ; i < argc ; i++) {
- (void) snprintf(cmd, sizeof(cmd), "tar -C %s -xzf %s", recoverdir, argv[i]);
- system(cmd); /* XXX */
- (void) realbasename(argv[i], ".tar.gz", scratch, sizeof(scratch));
+ mat_vtar(__UNCONST(mat), "-xf", argv[i], "-C", recoverdir, NULL);
+ (void) realbasename(argv[i], ".mat", scratch, sizeof(scratch));
if (sharedkey->keyid[0] == 0x0) {
vreadlink(sharedkey->keyid, sizeof(sharedkey->keyid), "%s/%s/keyid", recoverdir, scratch);
}
@@ -360,7 +363,7 @@
copy(both, "pubring.gpg", keyring, "pubring.gpg");
}
(void) snprintf(scratch, sizeof(scratch), "%s/secring.gpg.share", both);
- ssss_add_share(&threshold, i - optind, scratch, -1);
+ ssss_add_share(&threshold, (unsigned)(i - optind), scratch, -1);
}
if (!ssss_combine(&threshold)) {
(void) fprintf(stderr, "sharedkey_recover: can't combine shares\n");
@@ -370,6 +373,7 @@
ssss_write_share(&threshold, THRESH_JOIN_DEST, secring);
(void) memset(&netpgp, 0x0, sizeof(netpgp));
netpgp_set_homedir(&netpgp, keyring, NULL, 1);
+ netpgp_setvar(&netpgp, "need seckey", sharedkey->keyid);
netpgp_setvar(&netpgp, "userid", sharedkey->keyid);
netpgp_init(&netpgp);
(void) snprintf(scratch, sizeof(scratch), "%s/secret.gpg", keyring);
Index: othersrc/crypto/external/bsd/sharedkey/sharedkey/Makefile
diff -u othersrc/crypto/external/bsd/sharedkey/sharedkey/Makefile:1.1.1.1 othersrc/crypto/external/bsd/sharedkey/sharedkey/Makefile:1.2
--- othersrc/crypto/external/bsd/sharedkey/sharedkey/Makefile:1.1.1.1 Mon Mar 21 07:10:44 2011
+++ othersrc/crypto/external/bsd/sharedkey/sharedkey/Makefile Fri Jul 15 05:37:33 2011
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.1.1.1 2011/03/21 07:10:44 agc Exp $
+# $NetBSD: Makefile,v 1.2 2011/07/15 05:37:33 agc Exp $
.include <bsd.own.mk>
@@ -8,6 +8,10 @@
LDADD+= -L${LIBTHRESHOLDDIR} -lthreshold
DPADD+= ${LIBTHRESHOLDDIR}/libthreshold.a
+LIBMATDIR!= cd ${.CURDIR}/../../../../../external/bsd/mat/libmat && ${PRINTOBJDIR}
+LDADD+= -L${LIBMATDIR} -lmat
+DPADD+= ${LIBMATDIR}/libmat.a
+
LIBSSSSDIR!= cd ${.CURDIR}/../../ssss/libssss && ${PRINTOBJDIR}
LDADD+= -L${LIBSSSSDIR} -lssss
DPADD+= ${LIBSSSSDIR}/libssss.a
@@ -21,7 +25,7 @@
BINDIR=/usr/bin
MAN=sharedkey.1
WARNS=0 # openssl idea warning
-LDADD+=-lsharedkey -lssss -lthreshold -lnetpgp -lcrypto -lz -lbz2
+LDADD+=-lsharedkey -lssss -lthreshold -lmat -lgetopt2 -lnetpgp -lcrypto -lz -lbz2
EXTSRC=${.CURDIR}/../dist
.PATH: ${EXTSRC}/src/sharedkey
@@ -30,14 +34,17 @@
split: ${PROG}
rm -rf /tmp/share.* /tmp/recover.*
- ./${PROG} -t 2/3 /etc/group
+ env LD_LIBRARY_PATH=${.CURDIR}/../libsharedkey ./${PROG} -t 2/3 /etc/group
join: ${PROG}
- ./${PROG} -o group.recover -r /tmp/share.*/share002.tar.gz /tmp/share.*/share000.tar.gz
+ env LD_LIBRARY_PATH=${.CURDIR}/../libsharedkey ./${PROG} -o group.recover -r /tmp/share.*/share002.mat /tmp/share.*/share000.mat
t: ${PROG}
${MAKE} split
- tar tvzf /tmp/share.*/share000.tar.gz
+ @echo ""
+ mat tvf /tmp/share.*/share000.mat
ls -laR /tmp/share.*
+ @echo ""
${MAKE} join
+ diff /etc/group group.recover