alo@kampi.hut.fi (Antti Louko) (03/10/89)
Submitted by: alo@kampi.hut.fi (Antti Louko) Posting-number: Volume 18, Issue 8 Archive-name: des-no-usa/Part02 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 2 (of 2)." # Contents: tables/Makefile lib/spe-table.h lib/eight.h lib/ip.h # lib/ksched.c lib/des.h lib/fp.h lib/des-private.h lib/des-data.c # lib/Makerules lib/des-expand.c lib/des-fun.c lib/des-perms.c # lib/ecb-encrypt.c lib/GNUmakefile lib/cbc-encrypt.c # lib/cbc-cksum.c lib/des-reverse.c lib/pcbc-encrypt.c # lib/string-to-key.c lib/des-hash.c lib/alo-getpass.c # lib/alo-getline.c lib/read-passwd.c lib/des-hex.c lib/Makefile # Wrapped by kre@munnari on Fri Mar 10 18:29:45 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'tables/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'tables/Makefile'\" else echo shar: Extracting \"'tables/Makefile'\" \(580 characters\) sed "s/^X//" >'tables/Makefile' <<'END_OF_FILE' X# X# kludged standard make Makefile - derived from GNU makefile .. kre X# XSOURCES= eight.make fp.make ip.make spe-table.make XHS= ../lib/eight.h ../lib/fp.h ../lib/ip.h ../lib/spe-table.h XPRINT= enscript XPRINTFILES= mk-ip $(SOURCES) X Xall: $(HS) X Xclean: X @echo "These files can be removed: $(HS)" X @echo $(HS) > REMOVABLE X X../lib/eight.h: eight.make X ./eight.make > ../lib/eight.h X X../lib/fp.h: fp.make X ./fp.make > ../lib/fp.h X X../lib/ip.h: ip.make X ./ip.make > ../lib/ip.h X X../lib/spe-table.h: spe-table.make X ./spe-table.make > ../lib/spe-table.h X Xprint: X $(PRINT) $(PRINTFILES) END_OF_FILE if test 580 -ne `wc -c <'tables/Makefile'`; then echo shar: \"'tables/Makefile'\" unpacked with wrong size! fi # end of 'tables/Makefile' fi if test -f 'lib/spe-table.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/spe-table.h'\" else echo shar: Extracting \"'lib/spe-table.h'\" \(12288 characters\) sed "s/^X//" >'lib/spe-table.h' <<'END_OF_FILE' X0x20022000, X0x20000000, X0x00000000, X0x20022000, X0x00000000, X0x20022000, X0x20000000, X0x00000000, X0x20022000, X0x20022000, X0x20000000, X0x00022000, X0x00022000, X0x00000000, X0x00000000, X0x20000000, X0x20000000, X0x00000000, X0x00022000, X0x20022000, X0x20022000, X0x20000000, X0x00022000, X0x00022000, X0x00000000, X0x00022000, X0x20022000, X0x20000000, X0x00022000, X0x00022000, X0x20000000, X0x00000000, X0x00000000, X0x20022000, X0x00022000, X0x20000000, X0x20022000, X0x20000000, X0x00022000, X0x00022000, X0x20000000, X0x00022000, X0x20022000, X0x00000000, X0x20022000, X0x00000000, X0x00000000, X0x20000000, X0x20022000, X0x20022000, X0x20000000, X0x00022000, X0x00000000, X0x00022000, X0x20000000, X0x00000000, X0x20000000, X0x00000000, X0x00022000, X0x20022000, X0x00000000, X0x20000000, X0x00022000, X0x20022000, X0x00000802, X0x00000002, X0x08000800, X0x08000802, X0x00000800, X0x08000002, X0x08000002, X0x08000800, X0x08000002, X0x00000802, X0x00000802, X0x08000000, X0x08000800, X0x00000800, X0x00000000, X0x08000002, X0x00000002, X0x08000000, X0x00000800, X0x00000002, X0x08000802, X0x00000802, X0x08000000, X0x00000800, X0x08000000, X0x00000000, X0x00000002, X0x08000802, X0x00000000, X0x08000800, X0x08000802, X0x00000000, X0x00000000, X0x08000802, X0x00000800, X0x08000002, X0x00000802, X0x00000002, X0x08000000, X0x00000800, X0x08000802, X0x00000000, X0x00000002, X0x08000800, X0x08000002, X0x08000000, X0x08000800, X0x00000802, X0x08000802, X0x00000002, X0x00000802, X0x08000800, X0x00000800, X0x08000000, X0x08000002, X0x00000000, X0x00000002, X0x00000800, X0x08000800, X0x00000802, X0x08000000, X0x08000802, X0x00000000, X0x08000002, X0x02200004, X0x00000000, X0x02200000, X0x00000000, X0x00000004, X0x02200004, X0x02200000, X0x02200000, X0x02200000, X0x00000004, X0x00000004, X0x02200000, X0x00000004, X0x02200000, X0x00000000, X0x00000004, X0x00000000, X0x02200004, X0x00000004, X0x02200000, X0x02200004, X0x00000000, X0x00000000, X0x00000004, X0x02200004, X0x02200004, X0x02200000, X0x00000004, X0x00000000, X0x00000000, X0x02200004, X0x02200004, X0x00000004, X0x02200000, X0x02200000, X0x02200004, X0x02200004, X0x00000004, X0x00000004, X0x00000000, X0x00000000, X0x02200004, X0x00000000, X0x00000004, X0x02200000, X0x00000000, X0x02200004, X0x02200004, X0x02200000, X0x02200000, X0x00000000, X0x00000004, X0x00000004, X0x02200004, X0x02200000, X0x00000000, X0x00000004, X0x00000000, X0x02200004, X0x02200000, X0x02200004, X0x00000004, X0x00000000, X0x02200000, X0x01100004, X0x00000000, X0x00000004, X0x01100004, X0x01100000, X0x00000000, X0x01100000, X0x00000004, X0x00000000, X0x01100004, X0x00000000, X0x01100000, X0x00000004, X0x01100004, X0x01100004, X0x00000000, X0x00000004, X0x01100000, X0x01100004, X0x00000000, X0x00000004, X0x01100000, X0x00000000, X0x00000004, X0x01100000, X0x00000004, X0x01100004, X0x01100000, X0x01100000, X0x00000004, X0x00000000, X0x01100004, X0x00000004, X0x01100004, X0x01100000, X0x00000004, X0x01100004, X0x00000004, X0x01100000, X0x00000000, X0x01100000, X0x00000000, X0x00000004, X0x01100004, X0x00000000, X0x01100000, X0x00000004, X0x01100000, X0x01100004, X0x00000000, X0x00000000, X0x01100000, X0x00000000, X0x01100004, X0x00000004, X0x01100004, X0x01100004, X0x00000004, X0x00000000, X0x01100000, X0x01100000, X0x00000000, X0x01100004, X0x00000004, X0x00000000, X0x10000400, X0x00000400, X0x00000400, X0x10000000, X0x00000000, X0x00000400, X0x10000400, X0x00000400, X0x10000000, X0x10000000, X0x00000000, X0x10000400, X0x00000400, X0x00000000, X0x10000000, X0x00000000, X0x10000000, X0x10000400, X0x00000400, X0x00000400, X0x10000400, X0x10000000, X0x00000000, X0x10000000, X0x00000400, X0x10000400, X0x10000000, X0x10000400, X0x00000000, X0x00000000, X0x10000400, X0x10000400, X0x00000400, X0x00000000, X0x10000000, X0x00000400, X0x10000000, X0x10000000, X0x00000400, X0x00000000, X0x10000400, X0x10000400, X0x10000000, X0x10000000, X0x00000000, X0x10000400, X0x00000000, X0x10000400, X0x00000000, X0x00000000, X0x10000400, X0x10000000, X0x00000400, X0x00000400, X0x10000400, X0x00000400, X0x00000000, X0x10000000, X0x00000400, X0x00000000, X0x10000400, X0x00000400, X0x10000000, X0x04011000, X0x00011001, X0x00000000, X0x04011000, X0x04000001, X0x00011000, X0x04011000, X0x00000001, X0x00011000, X0x00000001, X0x00011001, X0x04000000, X0x04011001, X0x04000000, X0x04000000, X0x04011001, X0x00000000, X0x04000001, X0x00011001, X0x00000000, X0x04000000, X0x04011001, X0x00000001, X0x04011000, X0x04011001, X0x00011000, X0x04000001, X0x00011001, X0x00000001, X0x00000000, X0x00011000, X0x04000001, X0x00011001, X0x00000000, X0x04000000, X0x00000001, X0x04000000, X0x04000001, X0x00011001, X0x04011000, X0x00000000, X0x00011001, X0x00000001, X0x04011001, X0x04000001, X0x00011000, X0x04011001, X0x04000000, X0x04000001, X0x04011000, X0x00011000, X0x04011001, X0x00000001, X0x00011000, X0x04011000, X0x00000001, X0x00011000, X0x00000000, X0x04011001, X0x04000000, X0x04011000, X0x04000001, X0x00000000, X0x00011001, X0x00040002, X0x00040000, X0x00000002, X0x00040002, X0x00000000, X0x00000000, X0x00040002, X0x00000002, X0x00040000, X0x00000002, X0x00000000, X0x00040002, X0x00000002, X0x00040002, X0x00000000, X0x00000000, X0x00000002, X0x00040000, X0x00040000, X0x00000002, X0x00040000, X0x00040002, X0x00000000, X0x00040000, X0x00040002, X0x00000000, X0x00000002, X0x00040000, X0x00040000, X0x00000002, X0x00040002, X0x00000000, X0x00000002, X0x00040002, X0x00000000, X0x00000002, X0x00040000, X0x00040000, X0x00000002, X0x00000000, X0x00040002, X0x00000000, X0x00040000, X0x00000002, X0x00000000, X0x00000002, X0x00040000, X0x00040000, X0x00000000, X0x00040002, X0x00040002, X0x00000000, X0x00040002, X0x00000002, X0x00040000, X0x00040002, X0x00000002, X0x00040000, X0x00000000, X0x00040002, X0x00040002, X0x00000000, X0x00000002, X0x00040000, X0x20000110, X0x00040000, X0x20000000, X0x20040110, X0x00000000, X0x00040110, X0x20040000, X0x20000110, X0x00040110, X0x20040000, X0x00040000, X0x20000000, X0x20040000, X0x20000110, X0x00000110, X0x00040000, X0x20040110, X0x00000110, X0x00000000, X0x20000000, X0x00000110, X0x20040000, X0x00040110, X0x00000000, X0x20000000, X0x00000000, X0x20000110, X0x00040110, X0x00040000, X0x20040110, X0x20040110, X0x00000110, X0x20040110, X0x20000000, X0x00000110, X0x20040000, X0x00000110, X0x00040000, X0x20000000, X0x00040110, X0x20040000, X0x00000000, X0x00000000, X0x20000110, X0x00000000, X0x20040110, X0x00040110, X0x00000000, X0x00040000, X0x20040110, X0x20000110, X0x00000110, X0x20040110, X0x20000000, X0x00040000, X0x20000110, X0x20000110, X0x00000110, X0x00040110, X0x20040000, X0x20000000, X0x00040000, X0x20040000, X0x00040110, X0x00000000, X0x04000000, X0x00011000, X0x04011008, X0x04000008, X0x00011000, X0x04011008, X0x04000000, X0x04000000, X0x00000008, X0x00000008, X0x04011000, X0x00011008, X0x04000008, X0x04011000, X0x00000000, X0x04011000, X0x00000000, X0x04000008, X0x00011008, X0x00011000, X0x04011008, X0x00000000, X0x00000008, X0x00000008, X0x00011008, X0x04011008, X0x04000008, X0x04000000, X0x00011000, X0x00011008, X0x04011000, X0x04011000, X0x00011008, X0x04000008, X0x04000000, X0x04000000, X0x00000008, X0x00000008, X0x00011000, X0x00000000, X0x04011000, X0x04011008, X0x00000000, X0x04011008, X0x00000000, X0x00011000, X0x04000008, X0x00011008, X0x00011000, X0x00000000, X0x04011008, X0x04000008, X0x04011000, X0x00011008, X0x04000000, X0x04011000, X0x04000008, X0x00011000, X0x00011008, X0x00000008, X0x04011008, X0x04000000, X0x00000008, X0x00022000, X0x00000000, X0x00000000, X0x00022000, X0x00022000, X0x00022000, X0x00000000, X0x00022000, X0x00000000, X0x00000000, X0x00022000, X0x00000000, X0x00022000, X0x00022000, X0x00022000, X0x00000000, X0x00000000, X0x00022000, X0x00000000, X0x00000000, X0x00022000, X0x00000000, X0x00000000, X0x00022000, X0x00000000, X0x00022000, X0x00022000, X0x00000000, X0x00022000, X0x00000000, X0x00000000, X0x00022000, X0x00022000, X0x00022000, X0x00000000, X0x00022000, X0x00000000, X0x00000000, X0x00022000, X0x00022000, X0x00022000, X0x00000000, X0x00022000, X0x00000000, X0x00000000, X0x00022000, X0x00000000, X0x00000000, X0x00022000, X0x00000000, X0x00000000, X0x00022000, X0x00022000, X0x00022000, X0x00000000, X0x00000000, X0x00000000, X0x00022000, X0x00022000, X0x00000000, X0x00000000, X0x00000000, X0x00022000, X0x00022000, X0x00000110, X0x00000110, X0x00000000, X0x00080000, X0x00000110, X0x00080000, X0x00080110, X0x00000000, X0x00080110, X0x00080110, X0x00080000, X0x00000000, X0x00080000, X0x00000110, X0x00000000, X0x00080110, X0x00000000, X0x00080110, X0x00000110, X0x00000000, X0x00080000, X0x00000110, X0x00080000, X0x00000110, X0x00080110, X0x00000000, X0x00000000, X0x00080110, X0x00000110, X0x00080000, X0x00080110, X0x00080000, X0x00080110, X0x00000000, X0x00080000, X0x00080110, X0x00080000, X0x00000110, X0x00000000, X0x00080000, X0x00000000, X0x00080000, X0x00000110, X0x00000000, X0x00000110, X0x00080110, X0x00080000, X0x00000110, X0x00080110, X0x00080000, X0x00000000, X0x00080110, X0x00000110, X0x00000000, X0x00080110, X0x00000000, X0x00080000, X0x00000110, X0x00080110, X0x00080000, X0x00000000, X0x00080110, X0x00000110, X0x00000110, X0x02200000, X0x00000008, X0x00000000, X0x02200008, X0x00000008, X0x00000000, X0x02200000, X0x00000008, X0x00000000, X0x02200008, X0x00000008, X0x02200000, X0x02200000, X0x02200000, X0x02200008, X0x00000008, X0x00000008, X0x02200000, X0x02200008, X0x00000000, X0x00000000, X0x00000000, X0x02200008, X0x02200008, X0x02200008, X0x02200008, X0x02200000, X0x00000000, X0x00000000, X0x00000008, X0x00000008, X0x02200000, X0x00000000, X0x02200000, X0x02200000, X0x00000008, X0x02200008, X0x00000008, X0x00000000, X0x02200000, X0x02200000, X0x00000000, X0x02200008, X0x00000008, X0x00000008, X0x02200008, X0x00000008, X0x00000000, X0x02200008, X0x00000008, X0x00000008, X0x02200000, X0x02200000, X0x02200008, X0x00000008, X0x00000000, X0x00000000, X0x02200000, X0x02200000, X0x02200008, X0x02200008, X0x00000000, X0x00000000, X0x02200008, X0x01100000, X0x00000800, X0x00000800, X0x00000001, X0x01100801, X0x01100001, X0x01100800, X0x00000000, X0x00000000, X0x00000801, X0x00000801, X0x01100000, X0x00000001, X0x01100800, X0x01100000, X0x00000801, X0x00000801, X0x01100000, X0x01100001, X0x01100801, X0x00000000, X0x00000800, X0x00000001, X0x01100800, X0x01100001, X0x01100801, X0x01100800, X0x00000001, X0x01100801, X0x01100001, X0x00000800, X0x00000000, X0x01100801, X0x01100000, X0x01100001, X0x00000801, X0x01100000, X0x00000800, X0x00000000, X0x01100001, X0x00000801, X0x01100801, X0x01100800, X0x00000000, X0x00000800, X0x00000001, X0x00000001, X0x00000800, X0x00000000, X0x00000801, X0x00000800, X0x01100800, X0x00000801, X0x01100000, X0x01100801, X0x00000000, X0x01100800, X0x00000001, X0x01100001, X0x01100801, X0x00000001, X0x01100800, X0x01100000, X0x01100001, X0x00000000, X0x00000000, X0x00000400, X0x10000400, X0x10000400, X0x10000000, X0x00000000, X0x00000000, X0x00000400, X0x10000400, X0x10000000, X0x00000400, X0x10000000, X0x00000400, X0x00000400, X0x10000000, X0x10000400, X0x00000000, X0x10000000, X0x10000400, X0x00000000, X0x00000400, X0x10000400, X0x00000000, X0x10000400, X0x10000000, X0x00000400, X0x10000000, X0x10000000, X0x10000400, X0x00000000, X0x00000400, X0x10000000, X0x00000400, X0x10000400, X0x10000000, X0x00000000, X0x00000000, X0x00000400, X0x10000400, X0x10000400, X0x10000000, X0x00000000, X0x00000000, X0x00000000, X0x10000400, X0x10000000, X0x00000400, X0x00000000, X0x10000400, X0x00000400, X0x00000000, X0x10000000, X0x00000000, X0x10000400, X0x00000400, X0x00000400, X0x10000000, X0x10000000, X0x10000400, X0x10000400, X0x00000400, X0x00000400, X0x10000000, X0x00000220, X0x08000000, X0x08000220, X0x00000000, X0x08000000, X0x00000220, X0x00000000, X0x08000220, X0x00000220, X0x00000000, X0x08000000, X0x08000220, X0x08000220, X0x08000220, X0x00000220, X0x00000000, X0x08000000, X0x08000220, X0x00000220, X0x08000000, X0x08000220, X0x00000220, X0x00000000, X0x08000000, X0x00000000, X0x00000000, X0x08000220, X0x00000220, X0x00000000, X0x08000000, X0x08000000, X0x00000220, X0x00000000, X0x08000000, X0x00000220, X0x08000220, X0x08000220, X0x00000000, X0x00000000, X0x08000000, X0x00000220, X0x08000220, X0x08000000, X0x00000220, X0x08000000, X0x00000220, X0x00000220, X0x08000000, X0x08000220, X0x00000000, X0x00000000, X0x00000220, X0x08000000, X0x08000220, X0x08000220, X0x00000000, X0x00000220, X0x08000000, X0x08000220, X0x00000000, X0x00000000, X0x00000220, X0x08000000, X0x08000220, X0x00080220, X0x00080220, X0x00000000, X0x00000000, X0x00080000, X0x00000220, X0x00080220, X0x00080220, X0x00000000, X0x00080000, X0x00000220, X0x00000000, X0x00000220, X0x00080000, X0x00080000, X0x00080220, X0x00000000, X0x00000220, X0x00000220, X0x00080000, X0x00080220, X0x00080000, X0x00000000, X0x00000220, X0x00080000, X0x00000220, X0x00080000, X0x00080220, X0x00000220, X0x00000000, X0x00080220, X0x00000000, X0x00000220, X0x00000000, X0x00080000, X0x00080220, X0x00000000, X0x00080000, X0x00000000, X0x00000220, X0x00080220, X0x00080000, X0x00080000, X0x00000220, X0x00080220, X0x00000000, X0x00000220, X0x00080000, X0x00080220, X0x00000220, X0x00080220, X0x00080000, X0x00000220, X0x00000000, X0x00080000, X0x00080220, X0x00000000, X0x00080220, X0x00000220, X0x00000000, X0x00080000, X0x00080220, X0x00000000, X0x00000220, END_OF_FILE if test 12288 -ne `wc -c <'lib/spe-table.h'`; then echo shar: \"'lib/spe-table.h'\" unpacked with wrong size! fi # end of 'lib/spe-table.h' fi if test -f 'lib/eight.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/eight.h'\" else echo shar: Extracting \"'lib/eight.h'\" \(1536 characters\) sed "s/^X//" >'lib/eight.h' <<'END_OF_FILE' X0000, X0200, X0100, X0300, X0040, X0240, X0140, X0340, X0020, X0220, X0120, X0320, X0060, X0260, X0160, X0360, X0010, X0210, X0110, X0310, X0050, X0250, X0150, X0350, X0030, X0230, X0130, X0330, X0070, X0270, X0170, X0370, X0004, X0204, X0104, X0304, X0044, X0244, X0144, X0344, X0024, X0224, X0124, X0324, X0064, X0264, X0164, X0364, X0014, X0214, X0114, X0314, X0054, X0254, X0154, X0354, X0034, X0234, X0134, X0334, X0074, X0274, X0174, X0374, X0002, X0202, X0102, X0302, X0042, X0242, X0142, X0342, X0022, X0222, X0122, X0322, X0062, X0262, X0162, X0362, X0012, X0212, X0112, X0312, X0052, X0252, X0152, X0352, X0032, X0232, X0132, X0332, X0072, X0272, X0172, X0372, X0006, X0206, X0106, X0306, X0046, X0246, X0146, X0346, X0026, X0226, X0126, X0326, X0066, X0266, X0166, X0366, X0016, X0216, X0116, X0316, X0056, X0256, X0156, X0356, X0036, X0236, X0136, X0336, X0076, X0276, X0176, X0376, X0001, X0201, X0101, X0301, X0041, X0241, X0141, X0341, X0021, X0221, X0121, X0321, X0061, X0261, X0161, X0361, X0011, X0211, X0111, X0311, X0051, X0251, X0151, X0351, X0031, X0231, X0131, X0331, X0071, X0271, X0171, X0371, X0005, X0205, X0105, X0305, X0045, X0245, X0145, X0345, X0025, X0225, X0125, X0325, X0065, X0265, X0165, X0365, X0015, X0215, X0115, X0315, X0055, X0255, X0155, X0355, X0035, X0235, X0135, X0335, X0075, X0275, X0175, X0375, X0003, X0203, X0103, X0303, X0043, X0243, X0143, X0343, X0023, X0223, X0123, X0323, X0063, X0263, X0163, X0363, X0013, X0213, X0113, X0313, X0053, X0253, X0153, X0353, X0033, X0233, X0133, X0333, X0073, X0273, X0173, X0373, X0007, X0207, X0107, X0307, X0047, X0247, X0147, X0347, X0027, X0227, X0127, X0327, X0067, X0267, X0167, X0367, X0017, X0217, X0117, X0317, X0057, X0257, X0157, X0357, X0037, X0237, X0137, X0337, X0077, X0277, X0177, X0377, END_OF_FILE if test 1536 -ne `wc -c <'lib/eight.h'`; then echo shar: \"'lib/eight.h'\" unpacked with wrong size! fi # end of 'lib/eight.h' fi if test -f 'lib/ip.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/ip.h'\" else echo shar: Extracting \"'lib/ip.h'\" \(2816 characters\) sed "s/^X//" >'lib/ip.h' <<'END_OF_FILE' Xif (R & 0x02000000) L_result |= 0x00000001; Xif (R & 0x00020000) L_result |= 0x00000002; Xif (R & 0x00000200) L_result |= 0x00000004; Xif (R & 0x00000002) L_result |= 0x00000008; Xif (L & 0x02000000) L_result |= 0x00000010; Xif (L & 0x00020000) L_result |= 0x00000020; Xif (L & 0x00000200) L_result |= 0x00000040; Xif (L & 0x00000002) L_result |= 0x00000080; Xif (R & 0x08000000) L_result |= 0x00000100; Xif (R & 0x00080000) L_result |= 0x00000200; Xif (R & 0x00000800) L_result |= 0x00000400; Xif (R & 0x00000008) L_result |= 0x00000800; Xif (L & 0x08000000) L_result |= 0x00001000; Xif (L & 0x00080000) L_result |= 0x00002000; Xif (L & 0x00000800) L_result |= 0x00004000; Xif (L & 0x00000008) L_result |= 0x00008000; Xif (R & 0x20000000) L_result |= 0x00010000; Xif (R & 0x00200000) L_result |= 0x00020000; Xif (R & 0x00002000) L_result |= 0x00040000; Xif (R & 0x00000020) L_result |= 0x00080000; Xif (L & 0x20000000) L_result |= 0x00100000; Xif (L & 0x00200000) L_result |= 0x00200000; Xif (L & 0x00002000) L_result |= 0x00400000; Xif (L & 0x00000020) L_result |= 0x00800000; Xif (R & 0x80000000) L_result |= 0x01000000; Xif (R & 0x00800000) L_result |= 0x02000000; Xif (R & 0x00008000) L_result |= 0x04000000; Xif (R & 0x00000080) L_result |= 0x08000000; Xif (L & 0x80000000) L_result |= 0x10000000; Xif (L & 0x00800000) L_result |= 0x20000000; Xif (L & 0x00008000) L_result |= 0x40000000; Xif (L & 0x00000080) L_result |= 0x80000000; Xif (R & 0x01000000) R_result |= 0x00000001; Xif (R & 0x00010000) R_result |= 0x00000002; Xif (R & 0x00000100) R_result |= 0x00000004; Xif (R & 0x00000001) R_result |= 0x00000008; Xif (L & 0x01000000) R_result |= 0x00000010; Xif (L & 0x00010000) R_result |= 0x00000020; Xif (L & 0x00000100) R_result |= 0x00000040; Xif (L & 0x00000001) R_result |= 0x00000080; Xif (R & 0x04000000) R_result |= 0x00000100; Xif (R & 0x00040000) R_result |= 0x00000200; Xif (R & 0x00000400) R_result |= 0x00000400; Xif (R & 0x00000004) R_result |= 0x00000800; Xif (L & 0x04000000) R_result |= 0x00001000; Xif (L & 0x00040000) R_result |= 0x00002000; Xif (L & 0x00000400) R_result |= 0x00004000; Xif (L & 0x00000004) R_result |= 0x00008000; Xif (R & 0x10000000) R_result |= 0x00010000; Xif (R & 0x00100000) R_result |= 0x00020000; Xif (R & 0x00001000) R_result |= 0x00040000; Xif (R & 0x00000010) R_result |= 0x00080000; Xif (L & 0x10000000) R_result |= 0x00100000; Xif (L & 0x00100000) R_result |= 0x00200000; Xif (L & 0x00001000) R_result |= 0x00400000; Xif (L & 0x00000010) R_result |= 0x00800000; Xif (R & 0x40000000) R_result |= 0x01000000; Xif (R & 0x00400000) R_result |= 0x02000000; Xif (R & 0x00004000) R_result |= 0x04000000; Xif (R & 0x00000040) R_result |= 0x08000000; Xif (L & 0x40000000) R_result |= 0x10000000; Xif (L & 0x00400000) R_result |= 0x20000000; Xif (L & 0x00004000) R_result |= 0x40000000; Xif (L & 0x00000040) R_result |= 0x80000000; END_OF_FILE if test 2816 -ne `wc -c <'lib/ip.h'`; then echo shar: \"'lib/ip.h'\" unpacked with wrong size! fi # end of 'lib/ip.h' fi if test -f 'lib/ksched.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/ksched.c'\" else echo shar: Extracting \"'lib/ksched.c'\" \(2314 characters\) sed "s/^X//" >'lib/ksched.c' <<'END_OF_FILE' X#include "des-private.h" X Xconst static char PC1[] = { X 56,48,40,32,24,16, 8, X 0,57,49,41,33,25,17, X 9, 1,58,50,42,34,26, X 18,10, 2,59,51,43,35, X 62,54,46,38,30,22,14, X 6,61,53,45,37,29,21, X 13, 5,60,52,44,36,28, X 20,12, 4,27,19,11, 3, X}; X Xconst static char PC2[] = { X 13,16,10,23, 0, 4, X 2,27,14, 5,20, 9, X 22,18,11, 3,25, 7, X 15, 6,26,19,12, 1, X 40,51,30,36,46,54, X 29,39,50,44,32,47, X 43,48,38,55,33,52, X 45,41,49,35,28,31, X }; X Xconst static char LS[] = {1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1}; X Xconst static int shift_arr[] = { X 0x1, 0x2, 0x4, 0x8, X 0x10, 0x20, 0x40, 0x80, X 0x100, 0x200, 0x400, 0x800, X 0x1000, 0x2000, 0x4000, 0x8000, X 0x10000, 0x20000, 0x40000, 0x80000, X 0x100000, 0x200000, 0x400000, 0x800000, X 0x1000000, 0x2000000, 0x4000000, 0x8000000, X 0x10000000, 0x20000000, 0x40000000, 0x80000000, X}; X X/* Key schedule calculation could be done with precomputed inline code X similarly to 64-bit permutation calculation, but it would take about X 18kbytes of code space */ X X/* The least significant bit of key->data[0] is bit # 1 in X DES-sepcification etc. */ X Xdes_set_key(key,schedule) X XC_Block *key; XKey_schedule *schedule; X X{ X des_u_long *kp; X des_u_long Result_0; X des_u_long Result_1; X des_u_long sa = 0; X des_u_long *Input; X int i; X int j; X int Tmp; X int result_bit; X int side; X int column; X int result_side; X#if BIG_ENDIAN X C_Block t; X#endif X X#if BIG_ENDIAN X des_reverse(key,&t); X Input = (des_u_long*)(t.data); X#else X Input = (des_u_long*)key->data; X#endif X kp = schedule->data; X for(i = 0; i < 16; i++) { X sa += LS[i]; X Result_0 = Result_1 = 0; X result_side = 0; X for(j = 0; j < 48; j++) { X Tmp = PC2[j]; X side = (Tmp >= 28); X column = (Tmp + sa) % 28; X column = PC1[column + side*28]; X if (column >= 32) { X side = 1; X column -= 32; X } else { X side = 0; X } X if (j >= 24) { X result_side = 1; X result_bit = j-24; X } else { X result_bit = j; X } X result_bit = (result_bit/6)*8 + (result_bit%6); X if (Input[side] & shift_arr[column]) { X if (result_side) { X Result_1 |= shift_arr[result_bit]; X } else { X Result_0 |= shift_arr[result_bit]; X } X } X } X *kp++ = Result_0; *kp++ = Result_1; X } X} END_OF_FILE if test 2314 -ne `wc -c <'lib/ksched.c'`; then echo shar: \"'lib/ksched.c'\" unpacked with wrong size! fi # end of 'lib/ksched.c' fi if test -f 'lib/des.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/des.h'\" else echo shar: Extracting \"'lib/des.h'\" \(713 characters\) sed "s/^X//" >'lib/des.h' <<'END_OF_FILE' X#ifndef DES_PUBLIC X#define DES_PUBLIC 1 Xtypedef unsigned char des_u_char; /* This should be a 8-bit unsigned type */ Xtypedef unsigned long des_u_long; /* This should be a 32-bit unsigned type */ X Xtypedef struct { X des_u_char data[8]; X} C_Block; X Xtypedef struct { X des_u_long data[32]; X} Key_schedule; X X#define DES_ENCRYPT 0x0000 X#define DES_DECRYPT 0x0001 X#define DES_NOIPERM 0x0100 X#define DES_NOFPERM 0x0200 X Xdes_u_long des_cbc_cksum(); X Xextern int des_hash_inited; Xextern Key_schedule des_hash_key1; Xextern Key_schedule des_hash_key2; Xextern const C_Block des_zero_block; X X#define DES_HASH_INIT() (des_hash_inited ? 0 : des_hash_init()) X Xextern char *alo_getpass(); Xextern char *alo_read_password(); X X#endif END_OF_FILE if test 713 -ne `wc -c <'lib/des.h'`; then echo shar: \"'lib/des.h'\" unpacked with wrong size! fi # end of 'lib/des.h' fi if test -f 'lib/fp.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/fp.h'\" else echo shar: Extracting \"'lib/fp.h'\" \(2816 characters\) sed "s/^X//" >'lib/fp.h' <<'END_OF_FILE' Xif (R & 0x00000080) L_result |= 0x00000001; Xif (L & 0x00000080) L_result |= 0x00000002; Xif (R & 0x00008000) L_result |= 0x00000004; Xif (L & 0x00008000) L_result |= 0x00000008; Xif (R & 0x00800000) L_result |= 0x00000010; Xif (L & 0x00800000) L_result |= 0x00000020; Xif (R & 0x80000000) L_result |= 0x00000040; Xif (L & 0x80000000) L_result |= 0x00000080; Xif (R & 0x00000040) L_result |= 0x00000100; Xif (L & 0x00000040) L_result |= 0x00000200; Xif (R & 0x00004000) L_result |= 0x00000400; Xif (L & 0x00004000) L_result |= 0x00000800; Xif (R & 0x00400000) L_result |= 0x00001000; Xif (L & 0x00400000) L_result |= 0x00002000; Xif (R & 0x40000000) L_result |= 0x00004000; Xif (L & 0x40000000) L_result |= 0x00008000; Xif (R & 0x00000020) L_result |= 0x00010000; Xif (L & 0x00000020) L_result |= 0x00020000; Xif (R & 0x00002000) L_result |= 0x00040000; Xif (L & 0x00002000) L_result |= 0x00080000; Xif (R & 0x00200000) L_result |= 0x00100000; Xif (L & 0x00200000) L_result |= 0x00200000; Xif (R & 0x20000000) L_result |= 0x00400000; Xif (L & 0x20000000) L_result |= 0x00800000; Xif (R & 0x00000010) L_result |= 0x01000000; Xif (L & 0x00000010) L_result |= 0x02000000; Xif (R & 0x00001000) L_result |= 0x04000000; Xif (L & 0x00001000) L_result |= 0x08000000; Xif (R & 0x00100000) L_result |= 0x10000000; Xif (L & 0x00100000) L_result |= 0x20000000; Xif (R & 0x10000000) L_result |= 0x40000000; Xif (L & 0x10000000) L_result |= 0x80000000; Xif (R & 0x00000008) R_result |= 0x00000001; Xif (L & 0x00000008) R_result |= 0x00000002; Xif (R & 0x00000800) R_result |= 0x00000004; Xif (L & 0x00000800) R_result |= 0x00000008; Xif (R & 0x00080000) R_result |= 0x00000010; Xif (L & 0x00080000) R_result |= 0x00000020; Xif (R & 0x08000000) R_result |= 0x00000040; Xif (L & 0x08000000) R_result |= 0x00000080; Xif (R & 0x00000004) R_result |= 0x00000100; Xif (L & 0x00000004) R_result |= 0x00000200; Xif (R & 0x00000400) R_result |= 0x00000400; Xif (L & 0x00000400) R_result |= 0x00000800; Xif (R & 0x00040000) R_result |= 0x00001000; Xif (L & 0x00040000) R_result |= 0x00002000; Xif (R & 0x04000000) R_result |= 0x00004000; Xif (L & 0x04000000) R_result |= 0x00008000; Xif (R & 0x00000002) R_result |= 0x00010000; Xif (L & 0x00000002) R_result |= 0x00020000; Xif (R & 0x00000200) R_result |= 0x00040000; Xif (L & 0x00000200) R_result |= 0x00080000; Xif (R & 0x00020000) R_result |= 0x00100000; Xif (L & 0x00020000) R_result |= 0x00200000; Xif (R & 0x02000000) R_result |= 0x00400000; Xif (L & 0x02000000) R_result |= 0x00800000; Xif (R & 0x00000001) R_result |= 0x01000000; Xif (L & 0x00000001) R_result |= 0x02000000; Xif (R & 0x00000100) R_result |= 0x04000000; Xif (L & 0x00000100) R_result |= 0x08000000; Xif (R & 0x00010000) R_result |= 0x10000000; Xif (L & 0x00010000) R_result |= 0x20000000; Xif (R & 0x01000000) R_result |= 0x40000000; Xif (L & 0x01000000) R_result |= 0x80000000; END_OF_FILE if test 2816 -ne `wc -c <'lib/fp.h'`; then echo shar: \"'lib/fp.h'\" unpacked with wrong size! fi # end of 'lib/fp.h' fi if test -f 'lib/des-private.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/des-private.h'\" else echo shar: Extracting \"'lib/des-private.h'\" \(619 characters\) sed "s/^X//" >'lib/des-private.h' <<'END_OF_FILE' X#include "des.h" X#ifndef DES_PRIVATE X#define DES_PRIVATE 1 X X#ifdef mc68000 X#define BIG_ENDIAN 1 X#endif X X#ifdef sparc X#define BIG_ENDIAN 1 X#endif X X#ifdef interdata X#define BIG_ENDIAN 1 X#endif X X/* turns out this is useless, its too late, and not seen everywhere .. kre */ X#if (!__STDC__) X#define const X#endif X Xextern const des_u_long des_spe_table[]; X X#define copy_N(from,to,type) (*((type*)&(to)) = *((type*)&(from))) X#define copy8(from,to) copy_N(from,to,C_Block) X#define copy4(from,to) copy_N(from,to,des_u_long) X#define lval_N(from,type) (*((type*)&(from))) X#define val4(variable) lval_N(variable,des_u_long) X X#endif END_OF_FILE if test 619 -ne `wc -c <'lib/des-private.h'`; then echo shar: \"'lib/des-private.h'\" unpacked with wrong size! fi # end of 'lib/des-private.h' fi if test -f 'lib/des-data.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/des-data.c'\" else echo shar: Extracting \"'lib/des-data.c'\" \(129 characters\) sed "s/^X//" >'lib/des-data.c' <<'END_OF_FILE' X#include "des-private.h" X Xconst C_Block des_zero_block = {{0}}; X Xconst des_u_long des_spe_table[] = { X#include "spe-table.h" X}; END_OF_FILE if test 129 -ne `wc -c <'lib/des-data.c'`; then echo shar: \"'lib/des-data.c'\" unpacked with wrong size! fi # end of 'lib/des-data.c' fi if test -f 'lib/Makerules' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/Makerules'\" else echo shar: Extracting \"'lib/Makerules'\" \(560 characters\) sed "s/^X//" >'lib/Makerules' <<'END_OF_FILE' XCC:= gcc XCFLAGS:= -O #SUN -msoft-float XPRINT:= enscript X XMAINTOPS:= all clean print s-files X.PHONY: $(MAINTOPS) X Xifdef PRINTFILES Xprint: X $(PRINT) $(PRINTFILES) Xendif X Xifdef LMAINTOPS X$(LMAINTOPS): %: %-local X X.PHONY: $(addsuffix -local,$(LMAINTOPS)) Xendif X Xifneq ($(origin SUBDIRS),file) XSUBDIRS:= Xendif X Xifdef SUBDIRS X$(MAINTOPS): X for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done Xelse X$(MAINTOPS): Xendif X Xifdef SUBDIRS X$(SUBDIRS): X $(MAKE) -C $@ Xendif X Xifneq ($(origin S_FILES),file) XS_FILES:= Xendif X Xs-files: $(S_FILES) X X%.s: %.c X $(CC) -S $(CFLAGS) $^ END_OF_FILE if test 560 -ne `wc -c <'lib/Makerules'`; then echo shar: \"'lib/Makerules'\" unpacked with wrong size! fi # end of 'lib/Makerules' fi if test -f 'lib/des-expand.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/des-expand.c'\" else echo shar: Extracting \"'lib/des-expand.c'\" \(1643 characters\) sed "s/^X//" >'lib/des-expand.c' <<'END_OF_FILE' X#include "des-private.h" X X/* Expand 32-bit input block according to E-permutation so that each X output-byte contains 6 bits of output data */ X Xint Xdes_expand(ibuf,obuf) X Xdes_u_char *ibuf,*obuf; X X{ X des_u_long L; X des_u_char *p; X int i; X X#if BIG_ENDIAN X copy4(ibuf[0],L); X p = obuf+3; X *p = L; X L >>= 3; *--p = L; X L >>= 4; *--p = L; X L >>= 4; *--p = L; X p = obuf+7; X L >>= 4; *p = L; X L >>= 4; *--p = L; X L >>= 4; *--p = L; X L >>= 4; *--p = L; X obuf[3] <<= 1; X *p |= obuf[3] << 4; X L >>= 4; obuf[3] |= L; X#else X copy4(ibuf[0],L); X p = obuf; X *p++ = L; X L >>= 3; *p++ = L; X L >>= 4; *p++ = L; X L >>= 4; *p++ = L; X L >>= 4; *p++ = L; X L >>= 4; *p++ = L; X L >>= 4; *p++ = L; X L >>= 4; *p = L; X obuf[0] <<= 1; X *p |= obuf[0] << 4; X L >>= 4; obuf[0] |= L; X#endif X val4(obuf[0]) &= 0x3f3f3f3f; X val4(obuf[4]) &= 0x3f3f3f3f; X} X X/* Unexpand 8 6-bit bytes into one 32-bit block */ X Xdes_u_long Xdes_unexpand(ibuf) X Xdes_u_char *ibuf; X X{ X des_u_long L; X des_u_char *p; X int i; X X#if BIG_ENDIAN X p = ibuf+4; X L = *p++; /* 27 .. */ X L = (L << 4) | *p++; /* 23 .. */ X L = (L << 4) | *p++; /* 19 .. */ X L = (L << 4) | *p; /* 15 .. */ X p = ibuf; X L = (L << 4) | *p++; /* 11 .. */ X L = (L << 4) | *p++; /* 7 .. */ X L = (L << 4) | *p++; /* 3 .. */ X L = (L << 3) | (*p >> 1); /* 0 .. */ X#else X p = ibuf+8; X L = *--p; /* 27 .. */ X L = (L << 4) | *--p; /* 23 .. */ X L = (L << 4) | *--p; /* 19 .. */ X L = (L << 4) | *--p; /* 15 .. */ X L = (L << 4) | *--p; /* 11 .. */ X L = (L << 4) | *--p; /* 7 .. */ X L = (L << 4) | *--p; /* 3 .. */ X L = (L << 3) | (*--p >> 1); /* 0 .. */ X#endif X return L; X} X END_OF_FILE if test 1643 -ne `wc -c <'lib/des-expand.c'`; then echo shar: \"'lib/des-expand.c'\" unpacked with wrong size! fi # end of 'lib/des-expand.c' fi if test -f 'lib/des-fun.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/des-fun.c'\" else echo shar: Extracting \"'lib/des-fun.c'\" \(1389 characters\) sed "s/^X//" >'lib/des-fun.c' <<'END_OF_FILE' X#include "des-private.h" X X#if BIG_ENDIAN X#define P_IND(x) (((x)&04) | (3-((x)&03))) X#else X#define P_IND(x) (x) X#endif X X/* This function performs f()-function in a slightly modified form. It X starts with data which has gone through E-permutation and produces X data which is already E-permuted for the next iteration. */ X Xdes_fun(R,schedule,ki) X Xdes_u_long *R; XKey_schedule *schedule; Xint ki; X X{ X des_u_long *keyptr = &schedule->data[ki*2]; X des_u_char s[8]; X des_u_char *p; X des_u_long F[2]; X des_u_long R0,R1; X int i; X X copy8(R[0],F[0]); X F[0] ^= keyptr[0]; X F[1] ^= keyptr[1]; X p = (des_u_char*)F; X R0 = R1 = 0; X i = 0; X R0 ^= des_spe_table[i++*64 + p[P_IND(0)]]; X R1 ^= des_spe_table[i++*64 + p[P_IND(0)]]; X R0 ^= des_spe_table[i++*64 + p[P_IND(1)]]; X R1 ^= des_spe_table[i++*64 + p[P_IND(1)]]; X R0 ^= des_spe_table[i++*64 + p[P_IND(2)]]; X R1 ^= des_spe_table[i++*64 + p[P_IND(2)]]; X R0 ^= des_spe_table[i++*64 + p[P_IND(3)]]; X R1 ^= des_spe_table[i++*64 + p[P_IND(3)]]; X R0 ^= des_spe_table[i++*64 + p[P_IND(4)]]; X R1 ^= des_spe_table[i++*64 + p[P_IND(4)]]; X R0 ^= des_spe_table[i++*64 + p[P_IND(5)]]; X R1 ^= des_spe_table[i++*64 + p[P_IND(5)]]; X R0 ^= des_spe_table[i++*64 + p[P_IND(6)]]; X R1 ^= des_spe_table[i++*64 + p[P_IND(6)]]; X R0 ^= des_spe_table[i++*64 + p[P_IND(7)]]; X R1 ^= des_spe_table[i++*64 + p[P_IND(7)]]; X R[0] = R0; X R[1] = R1; X} END_OF_FILE if test 1389 -ne `wc -c <'lib/des-fun.c'`; then echo shar: \"'lib/des-fun.c'\" unpacked with wrong size! fi # end of 'lib/des-fun.c' fi if test -f 'lib/des-perms.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/des-perms.c'\" else echo shar: Extracting \"'lib/des-perms.c'\" \(603 characters\) sed "s/^X//" >'lib/des-perms.c' <<'END_OF_FILE' X#include "des-private.h" X X/* des_do_iperm and des_do_fperm use precomputed inline code to make X 64-bit permutation. This is the fastest method that I know of to make X this on microVAX II */ X Xdes_do_iperm(ibuf,obuf) X Xdes_u_long *ibuf,*obuf; X X{ X des_u_long L,R,L_result,R_result; X L_result = R_result = 0; X L = ibuf[0]; R = ibuf[1]; X#include "ip.h" X obuf[0] = L_result; obuf[1] = R_result; X} X Xdes_do_fperm(ibuf,obuf) X Xdes_u_long *ibuf,*obuf; X X{ X des_u_long L,R,L_result,R_result; X L_result = R_result = 0; X L = ibuf[0]; R = ibuf[1]; X#include "fp.h" X obuf[0] = L_result; obuf[1] = R_result; X} X END_OF_FILE if test 603 -ne `wc -c <'lib/des-perms.c'`; then echo shar: \"'lib/des-perms.c'\" unpacked with wrong size! fi # end of 'lib/des-perms.c' fi if test -f 'lib/ecb-encrypt.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/ecb-encrypt.c'\" else echo shar: Extracting \"'lib/ecb-encrypt.c'\" \(1199 characters\) sed "s/^X//" >'lib/ecb-encrypt.c' <<'END_OF_FILE' X#include "des-private.h" X X/* input data is not modified. output is written after input has been X read */ X X/* The least significant bit of input->data[0] is bit # 1 in X DES-sepcification etc. */ X Xint Xdes_ecb_encrypt(input,output,schedule,mode) X XC_Block *input; XC_Block *output; XKey_schedule *schedule; Xint mode; X X{ X C_Block ibuf; X des_u_long L[2],R[2]; X des_u_long Lnext[2],Rnext[2]; X int i; X int encrypt; X X#if BIG_ENDIAN X des_reverse(input,&ibuf); X if (!(mode & DES_NOIPERM)) { X des_do_iperm(&ibuf,&ibuf); X } X#else X if (!(mode & DES_NOIPERM)) { X des_do_iperm(input,&ibuf); X } else { X copy8(*input,ibuf); X } X#endif X encrypt = !(mode & DES_DECRYPT); X des_expand(&ibuf.data[0],&L[0]); X des_expand(&ibuf.data[4],&R[0]); X for(i = 0; i < 16; i++) { X copy8(*R,*Lnext); X des_fun(R,schedule,encrypt ? i : 15 - i); X R[0] ^= L[0]; X R[1] ^= L[1]; X copy8(*Lnext,*L); X } X X val4(ibuf.data[0]) = des_unexpand(R); X val4(ibuf.data[4]) = des_unexpand(L); X#if BIG_ENDIAN X if (!(mode & DES_NOFPERM)) X des_do_fperm(&ibuf,&ibuf); X des_reverse(&ibuf,output); X#else X if (!(mode & DES_NOFPERM)) X des_do_fperm(&ibuf,output); X else X copy8(ibuf,*output); X#endif X} END_OF_FILE if test 1199 -ne `wc -c <'lib/ecb-encrypt.c'`; then echo shar: \"'lib/ecb-encrypt.c'\" unpacked with wrong size! fi # end of 'lib/ecb-encrypt.c' fi if test -f 'lib/GNUmakefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/GNUmakefile'\" else echo shar: Extracting \"'lib/GNUmakefile'\" \(474 characters\) sed "s/^X//" >'lib/GNUmakefile' <<'END_OF_FILE' XLMAINTOPS:= all clean XLIBNAME:= libdes.a XRPAR:=) XLPAR:=( XSOURCES:= $(wildcard *.c) XOBJS:= $(addsuffix .o,$(basename $(SOURCES))) XS_FILES:= $(addsuffix .s,$(basename $(SOURCES))) XARS:= $(addprefix $(LIBNAME)$(LPAR),$(addsuffix $(RPAR),$(OBJS))) XPRINTFILES:= des-private.h des.h $(SOURCES) X X.PHONY: all X Xall-local: $(LIBNAME)(__.SYMDEF) $(OBJS) X Xinclude Makerules X Xclean-local: X rm -f $(LIBNAME) $(OBJS) X X$(LIBNAME)(%.o): %.o X X$(LIBNAME)(__.SYMDEF): $(ARS) X ranlib $(LIBNAME) END_OF_FILE if test 474 -ne `wc -c <'lib/GNUmakefile'`; then echo shar: \"'lib/GNUmakefile'\" unpacked with wrong size! fi # end of 'lib/GNUmakefile' fi if test -f 'lib/cbc-encrypt.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/cbc-encrypt.c'\" else echo shar: Extracting \"'lib/cbc-encrypt.c'\" \(974 characters\) sed "s/^X//" >'lib/cbc-encrypt.c' <<'END_OF_FILE' X#include "des-private.h" X Xint Xdes_cbc_encrypt(input,output,length,schedule,ivec,mode) X XC_Block *input; XC_Block *output; Xint length; XKey_schedule *schedule; XC_Block *ivec; Xint mode; X X{ X C_Block vbuf; X C_Block ibuf; X C_Block V2; X int decrypt; X int i; X X decrypt = (mode & DES_DECRYPT); X if (ivec) { X vbuf = *ivec; X } else { X vbuf = des_zero_block; X } X for (; length > 0; length -= 8, input++,output++) { X if (length < 8) { X ibuf = *input; X for(i = length; i < 8; i++) X ibuf.data[i] = 0; X input = &ibuf; X } X if (decrypt) { X V2 = *input; X } else { X val4(input->data[0]) ^= val4(vbuf.data[0]); X val4(input->data[4]) ^= val4(vbuf.data[4]); X } X des_ecb_encrypt(input,output,schedule,mode); X if (decrypt) { X val4(output->data[0]) ^= val4(vbuf.data[0]); X val4(output->data[4]) ^= val4(vbuf.data[4]); X vbuf = V2; X } else { X vbuf = *output; X } X } X if (ivec) { X *ivec = vbuf; X } X} END_OF_FILE if test 974 -ne `wc -c <'lib/cbc-encrypt.c'`; then echo shar: \"'lib/cbc-encrypt.c'\" unpacked with wrong size! fi # end of 'lib/cbc-encrypt.c' fi if test -f 'lib/cbc-cksum.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/cbc-cksum.c'\" else echo shar: Extracting \"'lib/cbc-cksum.c'\" \(628 characters\) sed "s/^X//" >'lib/cbc-cksum.c' <<'END_OF_FILE' X#include "des-private.h" X X/* des_cbc_cksum computes a cryptographical checksum of input data */ X Xdes_u_long Xdes_cbc_cksum(input,output,length,schedule,ivec,mode) X XC_Block *input; XC_Block *output; Xint length; XKey_schedule *schedule; XC_Block *ivec; Xint mode; X X{ X C_Block vbuf; X C_Block ibuf; X C_Block V2; X int l; X X if (!ivec) { X vbuf = *ivec; X } else { X vbuf = des_zero_block; X val4(vbuf.data[0]) = val4(vbuf.data[4]) = 0; X } X for (; length > 0; length -= 8, input++) { X l = (length > 8) ? 8 : length; X des_cbc_encrypt(input,output,l,schedule,&vbuf,DES_ENCRYPT); X } X return val4(output->data[4]); X} END_OF_FILE if test 628 -ne `wc -c <'lib/cbc-cksum.c'`; then echo shar: \"'lib/cbc-cksum.c'\" unpacked with wrong size! fi # end of 'lib/cbc-cksum.c' fi if test -f 'lib/des-reverse.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/des-reverse.c'\" else echo shar: Extracting \"'lib/des-reverse.c'\" \(290 characters\) sed "s/^X//" >'lib/des-reverse.c' <<'END_OF_FILE' X#include "des-private.h" X X/* des_reverse reverses bytes of 64-bit block within 32-bit words. */ X Xdes_reverse(ib,ob) X Xdes_u_char *ib; Xdes_u_char *ob; X X{ X ob[3] = *ib++; X ob[2] = *ib++; X ob[1] = *ib++; X ob[0] = *ib++; X ob[7] = *ib++; X ob[6] = *ib++; X ob[5] = *ib++; X ob[4] = *ib++; X} END_OF_FILE if test 290 -ne `wc -c <'lib/des-reverse.c'`; then echo shar: \"'lib/des-reverse.c'\" unpacked with wrong size! fi # end of 'lib/des-reverse.c' fi if test -f 'lib/pcbc-encrypt.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/pcbc-encrypt.c'\" else echo shar: Extracting \"'lib/pcbc-encrypt.c'\" \(1306 characters\) sed "s/^X//" >'lib/pcbc-encrypt.c' <<'END_OF_FILE' X#include "des-private.h" X X/* This is modified cbc-algorithm as specified in kerberos manual page */ X Xint Xdes_pcbc_encrypt(input,output,length,schedule,ivec,mode) X XC_Block *input; XC_Block *output; Xint length; XKey_schedule *schedule; XC_Block *ivec; Xint mode; X X{ X C_Block vbuf; X C_Block ibuf; X C_Block V2; X int decrypt; X int i; X X decrypt = (mode & DES_DECRYPT); X if (ivec) { X vbuf = *ivec; X } else { X vbuf = des_zero_block; X } X for (; length > 0; length -= 8, input++,output++) { X if (length < 8) { X ibuf = *input; X for(i = length; i < 8; i++) X ibuf.data[i] = 0; X input = &ibuf; X } X if (decrypt) { X V2 = *input; X } else { X V2 = *input; X val4(input->data[0]) ^= val4(vbuf.data[0]); X val4(input->data[4]) ^= val4(vbuf.data[4]); X } X des_ecb_encrypt(input,output,schedule,mode); X if (decrypt) { X val4(output->data[0]) ^= val4(vbuf.data[0]); X val4(output->data[4]) ^= val4(vbuf.data[4]); X val4(vbuf.data[0]) = val4(V2.data[0]) ^ val4(output->data[0]); X val4(vbuf.data[4]) = val4(V2.data[4]) ^ val4(output->data[4]); X } else { X val4(vbuf.data[0]) = val4(V2.data[0]) ^ val4(output->data[0]); X val4(vbuf.data[4]) = val4(V2.data[4]) ^ val4(output->data[4]); X } X } X if (ivec) { X *ivec = vbuf; X } X} END_OF_FILE if test 1306 -ne `wc -c <'lib/pcbc-encrypt.c'`; then echo shar: \"'lib/pcbc-encrypt.c'\" unpacked with wrong size! fi # end of 'lib/pcbc-encrypt.c' fi if test -f 'lib/string-to-key.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/string-to-key.c'\" else echo shar: Extracting \"'lib/string-to-key.c'\" \(646 characters\) sed "s/^X//" >'lib/string-to-key.c' <<'END_OF_FILE' X#include "des-private.h" X X/* This is supposed to be a one-way string-to-key function. If someone X finds this to be easily reversible, please tell me, too */ X Xstring_to_key(asckey,key) X Xchar *asckey; XC_Block *key; X X{ X char *p; X int i; X C_Block k1,k2; X X DES_HASH_INIT(); X X for(i = 0; i < 8; i++) { X k1.data[i] = k2.data[i] = 0; X } X for(i = 0, p = asckey; *p; p++, i++) { X i %= 8; X k1.data[i] |= *p; X k2.data[i] |= *p; X des_ecb_encrypt(&k1,&k1,&des_hash_key1,DES_ENCRYPT); X des_ecb_encrypt(&k2,&k2,&des_hash_key2,DES_ENCRYPT); X } X for(i = 0; i < 8; i++) { X key->data[i] = k1.data[i] ^ k2.data[i]; X } X return 0; X} END_OF_FILE if test 646 -ne `wc -c <'lib/string-to-key.c'`; then echo shar: \"'lib/string-to-key.c'\" unpacked with wrong size! fi # end of 'lib/string-to-key.c' fi if test -f 'lib/des-hash.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/des-hash.c'\" else echo shar: Extracting \"'lib/des-hash.c'\" \(571 characters\) sed "s/^X//" >'lib/des-hash.c' <<'END_OF_FILE' X#include "des-private.h" X X/* des_hash_init prepares two key schedules to be used with X hash-function calculation by des algorithm */ X Xstatic unsigned char hash_key1[8] = X { 0x9a, 0xd3, 0xbc, 0x24, 0x10, 0xe2, 0x8f, 0x0e }; Xstatic unsigned char hash_key2[8] = X { 0xe2, 0x95, 0x14, 0x33, 0x59, 0xc3, 0xec, 0xa8 }; X XKey_schedule des_hash_key1; XKey_schedule des_hash_key2; X Xint des_hash_inited; X Xdes_hash_init() X X{ X if (des_hash_inited) X return 0; X des_set_key(hash_key1,&des_hash_key1); X des_set_key(hash_key2,&des_hash_key2); X des_hash_inited = 1; X return 0; X} END_OF_FILE if test 571 -ne `wc -c <'lib/des-hash.c'`; then echo shar: \"'lib/des-hash.c'\" unpacked with wrong size! fi # end of 'lib/des-hash.c' fi if test -f 'lib/alo-getpass.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/alo-getpass.c'\" else echo shar: Extracting \"'lib/alo-getpass.c'\" \(877 characters\) sed "s/^X//" >'lib/alo-getpass.c' <<'END_OF_FILE' X#include <sys/types.h> X#include <sys/file.h> X#ifdef BSD X#include <sgtty.h> X#endif X#include <stdio.h> X Xextern char *alo_getline(); X Xchar * Xalo_getpass(prompt) X Xchar *prompt; X X{ X struct sgttyb t_old; X FILE *tf; X int tf0; X FILE *of = stderr; X int ef; X char *r; X X if ((tf0 = open("/dev/tty",O_RDWR,0)) != -1) { X if (!(tf = fdopen(tf0,"r"))) { X close(tf0); X return 0; X } X } else { X tf = 0; X } X if (!tf) X tf = stdin; X fputs(prompt,of); X fflush(of); X#ifdef BSD X ioctl(fileno(tf),TIOCGETP,&t_old); X ef = t_old.sg_flags & ECHO; X t_old.sg_flags &= ~ECHO; X ioctl(fileno(tf),TIOCSETP,&t_old); X#endif X r = alo_getline(tf); X#ifdef BSD X if (r) X fputs("\n",of); X ioctl(fileno(tf),TIOCGETP,&t_old); X t_old.sg_flags &= ~ECHO; X t_old.sg_flags |= ef; X ioctl(fileno(tf),TIOCSETP,&t_old); X#endif X if (tf != stdin) X fclose(tf); X return r; X} END_OF_FILE if test 877 -ne `wc -c <'lib/alo-getpass.c'`; then echo shar: \"'lib/alo-getpass.c'\" unpacked with wrong size! fi # end of 'lib/alo-getpass.c' fi if test -f 'lib/alo-getline.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/alo-getline.c'\" else echo shar: Extracting \"'lib/alo-getline.c'\" \(705 characters\) sed "s/^X//" >'lib/alo-getline.c' <<'END_OF_FILE' X#include <stdio.h> X Xextern char *malloc(); Xextern char *realloc(); X X#define ISIZE 100 X Xchar * Xalo_getline(f) X XFILE *f; X X{ X int l = 0; X char *r = 0; X char *p = 0; X char *ep; X int c; X int e = 0; X X for(;;) { X c = getc(f); X if (c == EOF || c == '\n') { X if (c == EOF && !p) X return 0; X e = 1; X } else if (c == 0) { X c = '\n'; X } X if (r == 0) { X l = ISIZE; X if (!(r = malloc(l))) X return 0; X p = r; X ep = r+l-3; X } X if (p >= ep) { X int o; X l += ISIZE; X o = p - r; X if (!(r = realloc(r,l))) X return 0; X p = r + o; X ep = r+l-3; X } X if (e) { X *p++ = 0; X *p = c; X return r; X } X *p++ = c; X } X} END_OF_FILE if test 705 -ne `wc -c <'lib/alo-getline.c'`; then echo shar: \"'lib/alo-getline.c'\" unpacked with wrong size! fi # end of 'lib/alo-getline.c' fi if test -f 'lib/read-passwd.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/read-passwd.c'\" else echo shar: Extracting \"'lib/read-passwd.c'\" \(712 characters\) sed "s/^X//" >'lib/read-passwd.c' <<'END_OF_FILE' X#include <stdio.h> X Xextern char *alo_getpass(); X Xchar * Xalo_read_password(prompt,verify) X Xchar *prompt; Xint verify; X X{ X char *p1,*p2; X int again; X int n; X X p1 = 0; X p2 = 0; X again = 1; X n = 10; X while (again) { X if (p1) free(p1); X if (p2) free(p2); X if (!(p1 = alo_getpass(prompt))) X return 0; X if (verify) { X if (!(p2 = alo_getpass("Verify: "))) { X free(p1); X return 0; X } X if (strcmp(p1,p2)) { X n--; X if (n <= 0) { X fprintf(stderr,"Too many mismatches\n"); X if (p1) free(p1); X if (p2) free(p2); X return 0; X } else { X fprintf(stderr,"Mismatch\n"); X } X } else { X again = 0; X } X } else { X again = 0; X } X } X if (p2) free(p2); X return p1; X} END_OF_FILE if test 712 -ne `wc -c <'lib/read-passwd.c'`; then echo shar: \"'lib/read-passwd.c'\" unpacked with wrong size! fi # end of 'lib/read-passwd.c' fi if test -f 'lib/des-hex.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/des-hex.c'\" else echo shar: Extracting \"'lib/des-hex.c'\" \(555 characters\) sed "s/^X//" >'lib/des-hex.c' <<'END_OF_FILE' X#include "des.h" X Xdes_key_to_hex(k,h) X XC_Block *k; Xchar *h; X X{ X int i; X X for(i = 0; i < 8; i++) { X sprintf(&h[i*2],"%02x",k->data[i]); X } X} X Xdes_hex_to_key(h,k) X Xchar *h; XC_Block *k; X X{ X int i,j,a,c; X X for(i = 0; i < 8; i++) { X a = 0; X for(j = 0; j < 2; j++) { X c = *h++; X if (c >= '0' && c <= '9') { X c -= '0'; X } else if (c >= 'a' && c <= 'f') { X c -= ('a' - 10); X } else if (c >= 'A' && c <= 'F') { X c -= ('A' - 10); X } else { X return -1; X } X a = a * 16 + c; X } X k->data[i] = a; X } X return 0; X} END_OF_FILE if test 555 -ne `wc -c <'lib/des-hex.c'`; then echo shar: \"'lib/des-hex.c'\" unpacked with wrong size! fi # end of 'lib/des-hex.c' fi if test -f 'lib/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'lib/Makefile'\" else echo shar: Extracting \"'lib/Makefile'\" \(789 characters\) sed "s/^X//" >'lib/Makefile' <<'END_OF_FILE' X# X# kludged standard make Makefile - adapted from GNU make version .. kre X# XCFLAGS= -DBSD -O -Dconst= #SUN -msoft-float XPRINT= enscript XLIBNAME= libdes.a XSOURCES= alo-getline.c alo-getpass.c cbc-cksum.c cbc-encrypt.c \ X des-data.c des-expand.c des-fun.c des-hash.c des-hex.c \ X des-perms.c des-reverse.c ecb-encrypt.c ksched.c \ X pcbc-encrypt.c read-passwd.c string-to-key.c XOBJS= alo-getline.o alo-getpass.o cbc-cksum.o cbc-encrypt.o \ X des-data.o des-expand.o des-fun.o des-hash.o des-hex.o \ X des-perms.o des-reverse.o ecb-encrypt.o ksched.o \ X pcbc-encrypt.o read-passwd.o string-to-key.o XPRINTFILES= des-private.h des.h $(SOURCES) X Xall: $(LIBNAME) X X$(LIBNAME): $(OBJS) X ar ru $(LIBNAME) $? X ranlib $(LIBNAME) X Xclean: X rm -f $(LIBNAME) $(OBJS) X Xprint: X $(PRINT) $(PRINTFILES) END_OF_FILE if test 789 -ne `wc -c <'lib/Makefile'`; then echo shar: \"'lib/Makefile'\" unpacked with wrong size! fi # end of 'lib/Makefile' fi echo shar: End of archive 2 \(of 2\). cp /dev/null ark2isdone MISSING="" for I in 1 2 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked both archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0