1# 2# The author of this code is Angelos D. Keromytis (angelos@dsl.cis.upenn.edu) 3# 4# This code was written by Angelos D. Keromytis in Philadelphia, PA, USA, 5# in April-May 1998 6# 7# Copyright (C) 1998, 1999 by Angelos D. Keromytis. 8# 9# Permission to use, copy, and modify this software without fee 10# is hereby granted, provided that this entire notice is included in 11# all copies of any software which is or includes a copy or 12# modification of this software. 13# 14# THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR 15# IMPLIED WARRANTY. IN PARTICULAR, THE AUTHORS MAKES NO 16# REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE 17# MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR 18# PURPOSE. 19 20VERSION = 2.3 21DISTFILE = keynote-${VERSION}.tar.gz 22KNSUBDIR = keynote-${VERSION} 23 24LEX = @LEX@ 25CC = @CC@ 26RANLIB = @RANLIB@ 27YACC = @YACC@ 28SSLEAY = @SSLEAY@ 29RM = @RM@ 30AR = @AR@ 31NROFF = @NROFF@ 32TAR = @TAR@ 33TRUE = @TRUE@ 34MKDIR = @MKDIR@ 35SED = @SED@ 36ECHO = @ECHO@ 37TR = @TR@ 38 39TARFLAGS = -cvzf ${DISTFILE} 40YACCFLAGS2 = -d -p kv -b z 41YACCFLAGS = -d -p kn -b k 42LEXFLAGS2 = -Pkv -s -i 43LEXFLAGS = -Cr -Pkn -s -i 44CFLAGS ?= -O2 -Wall # -g 45RMFLAGS2 = -rf 46RMFLAGS = -f 47NROFFFLAGS = -mandoc 48 49SSLCONF = testsuite/openssl.cnf 50SSLCERT = testsuite/test.cert.pem 51SSLKEY = testsuite/test.key.pem 52SIGN_ASSERT = testsuite/test-assertion1-signed 53 54# No-crypto compile/link flags and definitions 55NOCRYPTODEFS = @DEFS@ @CPPFLAGS@ 56 57# Final compile/link flags and definitions 58DEFS = -DCRYPTO ${NOCRYPTODEFS} 59INC = -I. 60LIBS = -L. -lkeynote @LIBS@ 61 62TARGET = libkeynote.a 63TARGET2 = keynote 64TARGET3 = sample-app 65 66OBJS = k.tab.o lex.kn.o environment.o parse_assertion.o \ 67 signature.o auxil.o base64.o 68OBJS2 = z.tab.o lex.kv.o keynote-verify.o keynote-sign.o \ 69 keynote-sigver.o keynote-keygen.o keynote-main.o @LIBOBJS@ 70OBJS3 = sample-app.o 71 72crypto: all 73 74nocrypto: 75 ${MAKE} DEFS="${NOCRYPTODEFS}" 76 77all: $(TARGET) $(TARGET2) 78 79library: $(TARGET) 80 81$(TARGET): $(OBJS) 82 $(AR) -cvr $(TARGET) $(OBJS) 83 $(RANLIB) $(TARGET) 84 85$(TARGET2): $(TARGET) $(OBJS2) 86 $(CC) $(CFLAGS) -o $(TARGET2) $(OBJS2) $(LIBS) 87 88k.tab.c: keynote.y header.h keynote.h assertion.h config.h 89 $(YACC) $(YACCFLAGS) keynote.y 90k.tab.h: | k.tab.c 91 92z.tab.c: keynote-ver.y keynote.h header.h config.h 93 $(YACC) $(YACCFLAGS2) keynote-ver.y 94z.tab.h: | z.tab.c 95 96lex.kn.c: keynote.l k.tab.h header.h keynote.h assertion.h config.h 97 $(LEX) $(LEXFLAGS) keynote.l 98 99lex.kv.c: keynote-ver.l z.tab.h keynote.h header.h config.h 100 $(LEX) $(LEXFLAGS2) keynote-ver.l 101 102.c.o: 103 $(CC) $(CFLAGS) $(DEFS) $(INC) -c $< 104 105auxil.c: header.h keynote.h assertion.h signature.h config.h 106parse_assertion.c: header.h keynote.h assertion.h signature.h config.h 107environment.c: header.h keynote.h assertion.h config.h 108keynote-verify.c: header.h keynote.h header.h config.h 109signature.c: header.h keynote.h assertion.h signature.h config.h 110keynote-keygen.c: keynote.h assertion.h signature.h header.h config.h 111keynote-sign.c: keynote.h header.h config.h 112keynote-sigver.c: keynote.h header.h config.h 113keynote-main.c: header.h config.h 114base64.c: header.h keynote.h config.h 115 116clean: 117 $(RM) $(RMFLAGS) $(OBJS) $(OBJS2) a.out *.core *~ */*~ 118 $(RM) $(RMFLAGS) $(SSLCERT) $(SSLCERT).1 $(SSLCERT).2 119 $(RM) $(RMFLAGS) $(SSLKEY) $(SIGN_ASSERT) 120 121cleandir: cleanall 122 123cleanall: clean 124 $(RM) $(RMFLAGS) *.o k.tab.c lex.kn.c k.tab.h z.tab.c z.tab.h 125 $(RM) $(RMFLAGS) lex.kv.c y.output z.output ${DISTFILE} 126 $(RM) $(RMFLAGS) $(TARGET) $(TARGET2) $(TARGET3) man/*.0 config.cache 127 $(RM) $(RMFLAGS) config.log config.status config.h Makefile 128 $(RM) $(RMFLAGS) man/*.cat? 129 130$(SSLCERT) $(SSLKEY): 131 $(SSLEAY) req -config $(SSLCONF) \ 132 -new -x509 -nodes -out $(SSLCERT) \ 133 -keyout $(SSLKEY) 134 135test-sample: all $(OBJS3) 136 $(CC) $(CFLAGS) -o $(TARGET3) $(OBJS3) $(LIBS) 137 138test-sig: all $(SSLCERT) $(SSLKEY) 139 $(SED) -e 's/--.*//' < $(SSLCERT) > $(SSLCERT).1 140 $(ECHO) -n 'authorizer: "x509-base64:' > $(SSLCERT).2 141 $(TR) -d '\n' < $(SSLCERT).1 >> $(SSLCERT).2 142 $(ECHO) '"' >> $(SSLCERT).2 143 $(SED) -e "/@@AUTH@@/r $(SSLCERT).2" -e "s/@@AUTH@@//" < $(SIGN_ASSERT).in > $(SIGN_ASSERT) 144 ./$(TARGET2) sign -v "sig-x509-sha1-base64:" $(SIGN_ASSERT) $(SSLKEY) | tee -a $(SIGN_ASSERT) 145 ./$(TARGET2) sigver $(SIGN_ASSERT) 146 147test: all 148 ./$(TARGET2) verify -e testsuite/test-env \ 149 -r false,maybe,probably,true \ 150 -k testsuite/auth1 -k testsuite/auth2 \ 151 -k testsuite/auth3 -k testsuite/auth4 \ 152 -l testsuite/test-assertion1 \ 153 -l testsuite/test-assertion2 \ 154 -l testsuite/test-assertion3 \ 155 -l testsuite/test-assertion4 \ 156 -l testsuite/test-assertion5 \ 157 -l testsuite/test-assertion6 \ 158 -l testsuite/test-assertion7 || ${TRUE} 159 160manpages: mansyntax mankeynote mansystem manutility mansyntax 161 162mansyntax: 163 ${NROFF} ${NROFFFLAGS} man/keynote.5 > man/keynote.cat5 164 165mankeynote: 166 ${NROFF} ${NROFFFLAGS} man/keynote.3 > man/keynote.cat3 167 168mansystem: 169 ${NROFF} ${NROFFFLAGS} man/keynote.4 > man/keynote.cat4 170 171manutility: 172 ${NROFF} ${NROFFFLAGS} man/keynote.1 > man/keynote.cat1 173 174distribution: test cleanall manpages 175 ${MKDIR} ${KNSUBDIR} 176 $(TAR) cf - . | (cd ${KNSUBDIR}; ${TAR} xf -) 177 ${RM} ${RMFLAGS2} ${KNSUBDIR}/CVS ${KNSUBDIR}/testsuite/CVS \ 178 ${KNSUBDIR}/Misc/CVS ${KNSUBDIR}/${KNSUBDIR} \ 179 ${KNSUBDIR}/.cvsignore ${KNSUBDIR}/man/CVS \ 180 ${KNSUBDIR}/man/.cvsignore ${KNSUBDIR}/doc/CVS \ 181 ${KNSUBDIR}/testsuite/.cvsignore 182 $(TAR) $(TARFLAGS) ${KNSUBDIR} 183 ${RM} ${RMFLAGS2} ${KNSUBDIR} man/*.0 man/*.cat? 184